forked from youzan/vant
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
59 lines (49 loc) · 1.5 KB
/
index.js
File metadata and controls
59 lines (49 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import { createNamespace } from '../utils';
import { BORDER } from '../utils/constant';
import { ChildrenMixin } from '../mixins/relation';
import Icon from '../icon';
const [createComponent, bem] = createNamespace('step');
export default createComponent({
mixins: [ChildrenMixin('vanSteps')],
computed: {
status() {
if (this.index < this.parent.active) {
return 'finish';
}
if (this.index === this.parent.active) {
return 'process';
}
}
},
methods: {
genCircle() {
const { activeIcon, activeColor, inactiveIcon } = this.parent;
if (this.status === 'process') {
return (
this.slots('active-icon') || (
<Icon class={bem('icon')} name={activeIcon} color={activeColor} />
)
);
}
const inactiveIconSlot = this.slots('inactive-icon');
if (inactiveIcon || inactiveIconSlot) {
return inactiveIconSlot || <Icon class={bem('icon')} name={inactiveIcon} />;
}
return <i class={bem('circle')} />;
}
},
render() {
const { status } = this;
const { activeColor, direction } = this.parent;
const titleStyle = status === 'process' && { color: activeColor };
return (
<div class={[BORDER, bem([direction, { [status]: status }])]}>
<div class={bem('title')} style={titleStyle}>
{this.slots()}
</div>
<div class={bem('circle-container')}>{this.genCircle()}</div>
<div class={bem('line')} />
</div>
);
}
});