123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- import { createNamespace } from '../utils';
- import { BORDER } from '../utils/constant';
- import { ChildrenMixin } from '../mixins/relation';
- import Icon from '../icon';
- var _createNamespace = createNamespace('step'),
- createComponent = _createNamespace[0],
- bem = _createNamespace[1];
- export default createComponent({
- mixins: [ChildrenMixin('vanSteps')],
- computed: {
- status: function status() {
- if (this.index < this.parent.active) {
- return 'finish';
- }
- if (this.index === +this.parent.active) {
- return 'process';
- }
- },
- active: function active() {
- return this.status === 'process';
- },
- lineStyle: function lineStyle() {
- var _this$parent = this.parent,
- activeColor = _this$parent.activeColor,
- inactiveColor = _this$parent.inactiveColor,
- center = _this$parent.center,
- direction = _this$parent.direction;
- var style = {
- background: this.status === 'finish' ? activeColor : inactiveColor
- };
- if (center && direction === 'vertical') {
- style.top = '50%';
- }
- return style;
- },
- circleContainerStyle: function circleContainerStyle() {
- if (this.parent.center && this.parent.direction === 'vertical') {
- return {
- top: '50%'
- };
- }
- },
- titleStyle: function titleStyle() {
- if (this.active) {
- return {
- color: this.parent.activeColor
- };
- }
- if (!this.status) {
- return {
- color: this.parent.inactiveColor
- };
- }
- }
- },
- methods: {
- genCircle: function genCircle() {
- var h = this.$createElement;
- var _this$parent2 = this.parent,
- activeIcon = _this$parent2.activeIcon,
- iconPrefix = _this$parent2.iconPrefix,
- activeColor = _this$parent2.activeColor,
- finishIcon = _this$parent2.finishIcon,
- inactiveIcon = _this$parent2.inactiveIcon;
- if (this.active) {
- return this.slots('active-icon') || h(Icon, {
- "class": bem('icon', 'active'),
- "attrs": {
- "name": activeIcon,
- "color": activeColor,
- "classPrefix": iconPrefix
- }
- });
- }
- var finishIconSlot = this.slots('finish-icon');
- if (this.status === 'finish' && (finishIcon || finishIconSlot)) {
- return finishIconSlot || h(Icon, {
- "class": bem('icon', 'finish'),
- "attrs": {
- "name": finishIcon,
- "color": activeColor,
- "classPrefix": iconPrefix
- }
- });
- }
- var inactiveIconSlot = this.slots('inactive-icon');
- if (inactiveIcon || inactiveIconSlot) {
- return inactiveIconSlot || h(Icon, {
- "class": bem('icon'),
- "attrs": {
- "name": inactiveIcon,
- "classPrefix": iconPrefix
- }
- });
- }
- return h("i", {
- "class": bem('circle'),
- "style": this.lineStyle
- });
- },
- onClickStep: function onClickStep() {
- this.parent.$emit('click-step', this.index);
- }
- },
- render: function render() {
- var _ref;
- var h = arguments[0];
- var status = this.status,
- active = this.active;
- var direction = this.parent.direction;
- return h("div", {
- "class": [BORDER, bem([direction, (_ref = {}, _ref[status] = status, _ref)])]
- }, [h("div", {
- "class": bem('title', {
- active: active
- }),
- "style": this.titleStyle,
- "on": {
- "click": this.onClickStep
- }
- }, [this.slots()]), h("div", {
- "class": bem('circle-container'),
- "on": {
- "click": this.onClickStep
- },
- "style": this.circleContainerStyle
- }, [this.genCircle()]), h("div", {
- "class": bem('line'),
- "style": this.lineStyle
- })]);
- }
- });
|