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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
| import { createNamespace } from '../utils';
| import { BORDER_TOP_BOTTOM } from '../utils/constant';
| import { callInterceptor } from '../utils/interceptor';
| import { ParentMixin } from '../mixins/relation';
|
| var _createNamespace = createNamespace('tabbar'),
| createComponent = _createNamespace[0],
| bem = _createNamespace[1];
|
| export default createComponent({
| mixins: [ParentMixin('vanTabbar')],
| props: {
| route: Boolean,
| zIndex: [Number, String],
| placeholder: Boolean,
| activeColor: String,
| beforeChange: Function,
| inactiveColor: String,
| value: {
| type: [Number, String],
| default: 0
| },
| border: {
| type: Boolean,
| default: true
| },
| fixed: {
| type: Boolean,
| default: true
| },
| safeAreaInsetBottom: {
| type: Boolean,
| default: null
| }
| },
| data: function data() {
| return {
| height: null
| };
| },
| computed: {
| fit: function fit() {
| if (this.safeAreaInsetBottom !== null) {
| return this.safeAreaInsetBottom;
| } // enable safe-area-inset-bottom by default when fixed
|
|
| return this.fixed;
| }
| },
| watch: {
| value: 'setActiveItem',
| children: 'setActiveItem'
| },
| mounted: function mounted() {
| var _this = this;
|
| if (this.placeholder && this.fixed) {
| var setHeight = function setHeight() {
| _this.height = _this.$refs.tabbar.getBoundingClientRect().height;
| };
|
| setHeight(); // https://github.com/vant-ui/vant/issues/10131
|
| setTimeout(setHeight, 100);
| }
| },
| methods: {
| setActiveItem: function setActiveItem() {
| var _this2 = this;
|
| this.children.forEach(function (item, index) {
| item.nameMatched = item.name === _this2.value || index === _this2.value;
| });
| },
| triggerChange: function triggerChange(active, afterChange) {
| var _this3 = this;
|
| callInterceptor({
| interceptor: this.beforeChange,
| args: [active],
| done: function done() {
| _this3.$emit('input', active);
|
| _this3.$emit('change', active);
|
| afterChange();
| }
| });
| },
| genTabbar: function genTabbar() {
| var _ref;
|
| var h = this.$createElement;
| return h("div", {
| "ref": "tabbar",
| "style": {
| zIndex: this.zIndex
| },
| "class": [(_ref = {}, _ref[BORDER_TOP_BOTTOM] = this.border, _ref), bem({
| unfit: !this.fit,
| fixed: this.fixed
| })]
| }, [this.slots()]);
| }
| },
| render: function render() {
| var h = arguments[0];
|
| if (this.placeholder && this.fixed) {
| return h("div", {
| "class": bem('placeholder'),
| "style": {
| height: this.height + "px"
| }
| }, [this.genTabbar()]);
| }
|
| return this.genTabbar();
| }
| });
|
|