@tdesign/uniapp 0.7.3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +1 -1
  3. package/dist/action-sheet/README.md +1 -1
  4. package/dist/action-sheet/action-sheet.vue +158 -150
  5. package/dist/action-sheet/props.ts +2 -2
  6. package/dist/action-sheet/type.ts +1 -1
  7. package/dist/avatar/avatar.vue +89 -87
  8. package/dist/avatar-group/avatar-group.vue +69 -67
  9. package/dist/back-top/back-top.vue +60 -58
  10. package/dist/badge/badge.vue +69 -59
  11. package/dist/button/button.vue +121 -116
  12. package/dist/button/props.ts +2 -2
  13. package/dist/button/type.ts +1 -1
  14. package/dist/calendar/calendar-header.vue +4 -4
  15. package/dist/calendar/calendar.vue +308 -297
  16. package/dist/calendar/template.vue +1 -1
  17. package/dist/cascader/README.en-US.md +2 -1
  18. package/dist/cascader/README.md +2 -1
  19. package/dist/cascader/cascader.vue +340 -328
  20. package/dist/cascader/props.ts +6 -1
  21. package/dist/cascader/type.ts +6 -0
  22. package/dist/cell/cell.vue +127 -121
  23. package/dist/cell-group/cell-group.vue +32 -30
  24. package/dist/check-tag/check-tag.vue +73 -71
  25. package/dist/checkbox/checkbox.vue +127 -127
  26. package/dist/checkbox/props.ts +6 -6
  27. package/dist/checkbox/type.ts +3 -3
  28. package/dist/checkbox-group/checkbox-group.vue +175 -173
  29. package/dist/checkbox-group/props.ts +6 -6
  30. package/dist/checkbox-group/type.ts +4 -4
  31. package/dist/col/col.vue +26 -24
  32. package/dist/collapse/collapse.vue +83 -81
  33. package/dist/collapse-panel/collapse-panel.vue +121 -119
  34. package/dist/collapse-panel/props.ts +4 -4
  35. package/dist/collapse-panel/type.ts +2 -2
  36. package/dist/color-picker/README.md +1 -1
  37. package/dist/color-picker/color-picker.vue +324 -322
  38. package/dist/color-picker/props.ts +2 -2
  39. package/dist/color-picker/template.vue +14 -10
  40. package/dist/common/common.ts +1 -0
  41. package/dist/common/style/theme/index.css +5 -5
  42. package/dist/common/utils.js +7 -2
  43. package/dist/common/validator.js +172 -0
  44. package/dist/config-provider/README.en-US.md +184 -0
  45. package/dist/config-provider/README.md +234 -0
  46. package/dist/config-provider/config-provider.vue +105 -0
  47. package/dist/config-provider/config-store.js +70 -0
  48. package/dist/config-provider/props.ts +16 -0
  49. package/dist/config-provider/reactive-state.js +39 -0
  50. package/dist/config-provider/type.ts +401 -0
  51. package/dist/config-provider/use-config.js +29 -0
  52. package/dist/config-provider/utils.js +29 -0
  53. package/dist/count-down/count-down.vue +98 -97
  54. package/dist/date-time-picker/date-time-picker.vue +410 -395
  55. package/dist/demo/demo.vue +1 -0
  56. package/dist/dialog/dialog.vue +175 -173
  57. package/dist/divider/divider.vue +38 -36
  58. package/dist/draggable/draggable.vue +60 -58
  59. package/dist/drawer/README.md +1 -1
  60. package/dist/drawer/drawer.vue +48 -46
  61. package/dist/dropdown-item/dropdown-item.vue +209 -207
  62. package/dist/dropdown-item/props.ts +4 -4
  63. package/dist/dropdown-item/type.ts +3 -3
  64. package/dist/dropdown-menu/dropdown-menu.vue +93 -99
  65. package/dist/empty/empty.vue +43 -42
  66. package/dist/fab/fab.vue +88 -86
  67. package/dist/footer/footer.vue +36 -34
  68. package/dist/form/README.en-US.md +17 -24
  69. package/dist/form/README.md +18 -25
  70. package/dist/form/form.css +1 -166
  71. package/dist/form/form.vue +251 -236
  72. package/dist/form/props.ts +2 -21
  73. package/dist/form/type.ts +7 -70
  74. package/dist/form-item/README.en-US.md +4 -5
  75. package/dist/form-item/README.md +4 -5
  76. package/dist/form-item/form-item.css +69 -96
  77. package/dist/form-item/form-item.vue +315 -336
  78. package/dist/form-item/form-model.ts +125 -173
  79. package/dist/form-item/props.ts +4 -17
  80. package/dist/form-item/type.ts +43 -1
  81. package/dist/grid/grid.vue +53 -51
  82. package/dist/grid-item/grid-item.vue +121 -119
  83. package/dist/guide/README.md +1 -1
  84. package/dist/guide/guide.vue +281 -277
  85. package/dist/icon/README.md +2 -4
  86. package/dist/icon/icon.vue +78 -76
  87. package/dist/image/README.md +1 -1
  88. package/dist/image/image.vue +103 -101
  89. package/dist/image-viewer/image-viewer.vue +160 -158
  90. package/dist/image-viewer/props.ts +2 -2
  91. package/dist/image-viewer/type.ts +1 -1
  92. package/dist/index.js +3 -0
  93. package/dist/indexes/indexes.vue +264 -267
  94. package/dist/indexes-anchor/indexes-anchor.vue +41 -41
  95. package/dist/input/input.vue +192 -192
  96. package/dist/input/props.ts +6 -6
  97. package/dist/input/type.ts +3 -3
  98. package/dist/link/link.vue +73 -71
  99. package/dist/loading/loading.vue +59 -59
  100. package/dist/locale/ar_KW.ts +157 -0
  101. package/dist/locale/en_US.ts +146 -0
  102. package/dist/locale/it_IT.ts +145 -0
  103. package/dist/locale/ja_JP.ts +132 -0
  104. package/dist/locale/ko_KR.ts +132 -0
  105. package/dist/locale/ru_RU.ts +157 -0
  106. package/dist/locale/zh_CN.ts +133 -0
  107. package/dist/locale/zh_TW.ts +132 -0
  108. package/dist/message/message.vue +181 -173
  109. package/dist/message/props.ts +2 -2
  110. package/dist/message/type.ts +1 -1
  111. package/dist/message-item/message-item.vue +192 -184
  112. package/dist/mixins/using-config.js +39 -0
  113. package/dist/navbar/navbar.vue +201 -199
  114. package/dist/notice-bar/notice-bar.vue +175 -171
  115. package/dist/notice-bar/props.ts +2 -2
  116. package/dist/notice-bar/type.ts +1 -1
  117. package/dist/npm/dayjs/esm/locale/ar.js +81 -0
  118. package/dist/npm/dayjs/esm/locale/it.js +39 -0
  119. package/dist/overlay/overlay.vue +50 -48
  120. package/dist/picker/picker.vue +168 -161
  121. package/dist/picker-item/picker-item.vue +269 -269
  122. package/dist/popover/README.md +1 -1
  123. package/dist/popover/popover.vue +262 -261
  124. package/dist/popover/props.ts +4 -4
  125. package/dist/popover/type.ts +2 -2
  126. package/dist/popup/popup.vue +46 -45
  127. package/dist/progress/README.md +1 -1
  128. package/dist/progress/progress.vue +76 -76
  129. package/dist/pull-down-refresh/props.ts +2 -2
  130. package/dist/pull-down-refresh/pull-down-refresh.vue +240 -234
  131. package/dist/pull-down-refresh/type.ts +1 -1
  132. package/dist/qrcode/README.md +1 -1
  133. package/dist/qrcode/components/qrcode-canvas/qrcode-canvas.vue +340 -338
  134. package/dist/qrcode/components/qrcode-status/qrcode-status.vue +6 -6
  135. package/dist/qrcode/qrcode.vue +93 -87
  136. package/dist/radio/props.ts +6 -6
  137. package/dist/radio/radio.vue +118 -120
  138. package/dist/radio/type.ts +3 -3
  139. package/dist/radio-group/props.ts +4 -4
  140. package/dist/radio-group/radio-group.vue +136 -134
  141. package/dist/radio-group/type.ts +4 -4
  142. package/dist/rate/computed.js +2 -2
  143. package/dist/rate/props.ts +4 -4
  144. package/dist/rate/rate.vue +155 -154
  145. package/dist/rate/type.ts +2 -2
  146. package/dist/result/result.vue +41 -39
  147. package/dist/row/row.vue +38 -36
  148. package/dist/scroll-view/scroll-view.vue +24 -22
  149. package/dist/search/props.ts +2 -2
  150. package/dist/search/search.vue +127 -125
  151. package/dist/search/type.ts +1 -1
  152. package/dist/side-bar/side-bar.vue +57 -55
  153. package/dist/side-bar-item/side-bar-item.vue +86 -86
  154. package/dist/skeleton/skeleton.vue +126 -124
  155. package/dist/slider/README.md +1 -1
  156. package/dist/slider/props.ts +2 -2
  157. package/dist/slider/slider.vue +457 -457
  158. package/dist/slider/type.ts +1 -1
  159. package/dist/step-item/step-item.vue +77 -75
  160. package/dist/stepper/props.ts +2 -2
  161. package/dist/stepper/stepper.vue +168 -149
  162. package/dist/stepper/type.ts +1 -1
  163. package/dist/steps/props.ts +2 -2
  164. package/dist/steps/steps.vue +83 -81
  165. package/dist/steps/type.ts +1 -1
  166. package/dist/sticky/sticky.vue +104 -102
  167. package/dist/swipe-cell/swipe-cell.vue +91 -89
  168. package/dist/swiper/README.md +1 -1
  169. package/dist/swiper/swiper.vue +91 -89
  170. package/dist/swiper-nav/swiper-nav.vue +38 -36
  171. package/dist/switch/props.ts +2 -2
  172. package/dist/switch/switch.vue +62 -62
  173. package/dist/switch/type.ts +1 -1
  174. package/dist/tab-bar/tab-bar.vue +88 -86
  175. package/dist/tab-bar-item/tab-bar-item.vue +85 -82
  176. package/dist/tab-panel/tab-panel.vue +66 -64
  177. package/dist/tabs/tabs.vue +294 -287
  178. package/dist/tag/tag.vue +79 -77
  179. package/dist/textarea/props.ts +6 -6
  180. package/dist/textarea/textarea.vue +127 -126
  181. package/dist/textarea/type.ts +3 -3
  182. package/dist/toast/toast.vue +107 -106
  183. package/dist/transition/transition.vue +30 -28
  184. package/dist/tree-select/tree-select.vue +151 -151
  185. package/dist/types/config-provider.d.ts +7 -0
  186. package/dist/types/index.d.ts +2 -0
  187. package/dist/types/popover.d.ts +7 -0
  188. package/dist/upload/README.en-US.md +13 -14
  189. package/dist/upload/README.md +11 -12
  190. package/dist/upload/props.ts +2 -4
  191. package/dist/upload/type.ts +12 -11
  192. package/dist/upload/upload.css +1 -1
  193. package/dist/upload/upload.vue +672 -512
  194. package/dist/watermark/watermark.vue +151 -149
  195. package/global.d.ts +2 -0
  196. package/package.json +15 -3
  197. package/dist/form/form-item-props.ts +0 -56
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <view
3
3
  :class="classPrefix + ' ' + tClass"
4
- :style="tools._style([customStyle])"
4
+ :style="'' + tools._style([customStyle])"
5
5
  >
6
6
  <swiper
7
7
  :class="classPrefix + '-host'"
@@ -24,7 +24,7 @@
24
24
  v-for="(item, index) in list"
25
25
  :key="index"
26
26
  :class="
27
- tools.cls(classPrefix + '__item', [
27
+ '' + tools.cls(classPrefix + '__item', [
28
28
  ['preview', isPrev(navCurrent, index, list)],
29
29
  ['next', isNext(navCurrent, index, list)]
30
30
  ])
@@ -33,7 +33,7 @@
33
33
  :aria-hidden="navCurrent !== index"
34
34
  aria-role="image"
35
35
  :aria-label="tools.isObject(item) ? item.ariaLabel : ''"
36
- @click="onTap($event, { index })"
36
+ @click="(e) => onTap(e, { index })"
37
37
  >
38
38
  <t-image
39
39
  :t-class="getImageClass(prefix, navCurrent, index, list, tClassImage, tClassPrevImage, tClassNextImage)"
@@ -46,7 +46,7 @@
46
46
  :mode="imageProps.mode || 'aspectFill'"
47
47
  :webp="imageProps.webp || false"
48
48
  :show-menu-by-longpress="imageProps.showMenuByLongpress || false"
49
- @load="onImageLoad($event, { custom: index || null })"
49
+ @load="(e) => onImageLoad(e, { custom: index || null })"
50
50
  />
51
51
  </swiper-item>
52
52
  </swiper>
@@ -78,114 +78,116 @@ import { ParentMixin, RELATION_MAP } from '../common/relation';
78
78
 
79
79
  const name = `${prefix}-swiper`;
80
80
 
81
- export default uniComponent({
82
- name,
83
- options: {
84
- multipleSlots: true,
85
- styleIsolation: 'shared',
86
- },
87
- externalClasses: [`${prefix}-class`, `${prefix}-class-nav`, `${prefix}-class-image`, `${prefix}-class-prev-image`, `${prefix}-class-next-image`],
88
- mixins: [ParentMixin(RELATION_MAP.SwiperNav)],
81
+ export default {
89
82
  components: {
90
83
  TSwiperNav,
91
84
  TImage,
92
85
  },
93
- props: {
94
- ...props,
95
- },
96
- emits: [
97
- 'click',
98
- 'change',
99
- 'animationfinish',
100
- 'image-load',
101
- ],
102
- data() {
103
- return {
104
- prefix,
105
- classPrefix: name,
106
- tools,
107
- navCurrent: 0,
108
- };
109
- },
110
- watch: {
111
- navCurrent(t) {
112
- this.updateNav(t);
86
+ ...uniComponent({
87
+ name,
88
+ options: {
89
+ multipleSlots: true,
90
+ styleIsolation: 'shared',
113
91
  },
114
- },
115
-
116
- mounted() {
117
- this.navCurrent = this.current;
118
- },
119
-
120
- methods: {
121
- isPrev,
122
- isNext,
123
- getImageClass,
124
-
125
- updateNav(currentValue) {
126
- if (this.navigation) return;
127
- const $nav = this.getRelationNodes('./swiper-nav')?.[0];
128
- if (!$nav) return;
129
- const { direction, paginationPosition, list } = this;
130
-
131
- this.current = currentValue;
132
- this.total = list.length;
133
- this.direction = direction;
134
- this.paginationPosition = paginationPosition;
92
+ externalClasses: [`${prefix}-class`, `${prefix}-class-nav`, `${prefix}-class-image`, `${prefix}-class-prev-image`, `${prefix}-class-next-image`],
93
+ mixins: [ParentMixin(RELATION_MAP.SwiperNav)],
94
+ props: {
95
+ ...props,
96
+ },
97
+ emits: [
98
+ 'click',
99
+ 'change',
100
+ 'animationfinish',
101
+ 'image-load',
102
+ ],
103
+ data() {
104
+ return {
105
+ prefix,
106
+ classPrefix: name,
107
+ tools,
108
+ navCurrent: 0,
109
+ };
110
+ },
111
+ watch: {
112
+ navCurrent(t) {
113
+ this.updateNav(t);
114
+ },
135
115
  },
136
116
 
137
- onTap(e, dataset) {
138
- const { index } = dataset;
139
- this.$emit('click', { index });
117
+ mounted() {
118
+ this.navCurrent = this.current;
140
119
  },
141
120
 
142
- onChange(e) {
143
- const { current, source } = e.detail;
121
+ methods: {
122
+ isPrev,
123
+ isNext,
124
+ getImageClass,
144
125
 
145
- if (!source) return;
126
+ updateNav(currentValue) {
127
+ if (this.navigation) return;
128
+ const $nav = this.getRelationNodes('./swiper-nav')?.[0];
129
+ if (!$nav) return;
130
+ const { direction, paginationPosition, list } = this;
146
131
 
147
- this.navCurrent = current;
148
- this.triggerSource = source;
132
+ this.current = currentValue;
133
+ this.total = list.length;
134
+ this.direction = direction;
135
+ this.paginationPosition = paginationPosition;
136
+ },
149
137
 
150
- this.$emit('change', { current, source });
151
- },
138
+ onTap(e, dataset) {
139
+ const { index } = dataset;
140
+ this.$emit('click', { index });
141
+ },
152
142
 
153
- onAnimationFinish(e) {
154
- const { current, source } = e.detail;
143
+ onChange(e) {
144
+ const { current, source } = e.detail;
155
145
 
156
- this.$emit('animationfinish', { current, source: source || this.triggerSource });
157
- },
146
+ if (!source) return;
158
147
 
159
- onNavBtnChange(e) {
160
- const { dir, source } = e;
148
+ this.navCurrent = current;
149
+ this.triggerSource = source;
161
150
 
162
- this.doNavBtnChange(dir, source);
163
- },
151
+ this.$emit('change', { current, source });
152
+ },
164
153
 
165
- doNavBtnChange(dir, source) {
166
- const { current, list, loop, navCurrent } = this;
167
- const count = list.length;
168
- let nextPos = dir === 'next' ? current + 1 : current - 1;
154
+ onAnimationFinish(e) {
155
+ const { current, source } = e.detail;
169
156
 
170
- if (loop) {
171
- nextPos = dir === 'next' ? (current + 1) % count : (current - 1 + count) % count;
172
- } else {
173
- nextPos = nextPos < 0 || nextPos >= count ? current : nextPos;
174
- }
157
+ this.$emit('animationfinish', { current, source: source || this.triggerSource });
158
+ },
175
159
 
176
- if (nextPos === navCurrent) return;
160
+ onNavBtnChange(e) {
161
+ const { dir, source } = e;
177
162
 
178
- this.navCurrent = nextPos;
179
- this.triggerSource = source;
163
+ this.doNavBtnChange(dir, source);
164
+ },
180
165
 
181
- this.$emit('change', { current: nextPos, source });
182
- },
166
+ doNavBtnChange(dir, source) {
167
+ const { current, list, loop, navCurrent } = this;
168
+ const count = list.length;
169
+ let nextPos = dir === 'next' ? current + 1 : current - 1;
170
+
171
+ if (loop) {
172
+ nextPos = dir === 'next' ? (current + 1) % count : (current - 1 + count) % count;
173
+ } else {
174
+ nextPos = nextPos < 0 || nextPos >= count ? current : nextPos;
175
+ }
183
176
 
184
- onImageLoad(e, dataset) {
185
- this.$emit('image-load', { index: dataset.custom });
177
+ if (nextPos === navCurrent) return;
178
+
179
+ this.navCurrent = nextPos;
180
+ this.triggerSource = source;
181
+
182
+ this.$emit('change', { current: nextPos, source });
183
+ },
184
+
185
+ onImageLoad(e, dataset) {
186
+ this.$emit('image-load', { index: dataset.custom });
187
+ },
186
188
  },
187
- },
188
- });
189
+ }),
190
+ };
189
191
 
190
192
  </script>
191
193
  <style scoped src="./swiper.css"></style>
@@ -3,26 +3,26 @@
3
3
  <view
4
4
  v-if="showControls"
5
5
  :class="classPrefix + '__btn ' + ' ' + tClass"
6
- :style="tools._style([customStyle])"
6
+ :style="'' + tools._style([customStyle])"
7
7
  >
8
8
  <view
9
9
  :class="classPrefix + '__btn--prev'"
10
10
  data-dir="prev"
11
11
  aria-role="button"
12
12
  aria-label="上一张"
13
- @click="nav($event, { dir: 'prev'})"
13
+ @click="(e) => nav(e, { dir: 'prev'})"
14
14
  />
15
15
  <view
16
16
  :class="classPrefix + '__btn--next'"
17
17
  data-dir="next"
18
18
  aria-role="button"
19
19
  aria-label="下一张"
20
- @click="nav($event, { dir: 'next'})"
20
+ @click="(e) => nav(e, { dir: 'next'})"
21
21
  />
22
22
  </view>
23
23
  <view
24
24
  v-if="total >= minShowNum"
25
- :style="tools._style([customStyle])"
25
+ :style="'' + tools._style([customStyle])"
26
26
  :class="
27
27
  tClass +
28
28
  ' ' + classPrefix +
@@ -35,7 +35,7 @@
35
35
  <view
36
36
  v-for="(item, idx) in total"
37
37
  :key="idx"
38
- :class="tools.cls(classPrefix + '__' + type + '-item', [['active', current === idx], direction])"
38
+ :class="[classPrefix + '__' + type + '-item', current === idx ? classPrefix + '__' + type + '-item' + '--active' : '', direction ? classPrefix + '__' + type + '-item' + '--' + direction : '']"
39
39
  />
40
40
  </block>
41
41
  <block v-if="type === 'fraction'">
@@ -53,39 +53,41 @@ import { ChildrenMixin, RELATION_MAP } from '../common/relation';
53
53
 
54
54
  const name = `${prefix}-swiper-nav`;
55
55
 
56
- export default uniComponent({
57
- name,
58
- options: {
59
- styleIsolation: 'shared',
60
- },
61
- externalClasses: [`${prefix}-class`],
62
- mixins: [ChildrenMixin(RELATION_MAP.SwiperNav)],
56
+ export default {
63
57
  components: { },
64
- props: {
65
- ...props,
66
- },
67
- emits: [
68
- 'nav-btn-change',
69
- ],
70
- data() {
71
- return {
72
- prefix,
73
- classPrefix: name,
74
- tools,
75
- };
76
- },
58
+ ...uniComponent({
59
+ name,
60
+ options: {
61
+ styleIsolation: 'shared',
62
+ },
63
+ externalClasses: [`${prefix}-class`],
64
+ mixins: [ChildrenMixin(RELATION_MAP.SwiperNav)],
65
+ props: {
66
+ ...props,
67
+ },
68
+ emits: [
69
+ 'nav-btn-change',
70
+ ],
71
+ data() {
72
+ return {
73
+ prefix,
74
+ classPrefix: name,
75
+ tools,
76
+ };
77
+ },
77
78
 
78
- methods: {
79
- nav(e, dataset) {
80
- const { dir } = dataset;
81
- const source = 'nav';
82
- this.$emit('nav-btn-change', { dir, source });
83
- const parent = this[RELATION_MAP.SwiperNav];
84
- if (parent) {
85
- parent.doNavBtnChange(dir, source);
86
- }
79
+ methods: {
80
+ nav(e, dataset) {
81
+ const { dir } = dataset;
82
+ const source = 'nav';
83
+ this.$emit('nav-btn-change', { dir, source });
84
+ const parent = this[RELATION_MAP.SwiperNav];
85
+ if (parent) {
86
+ parent.doNavBtnChange(dir, source);
87
+ }
88
+ },
87
89
  },
88
- },
89
- });
90
+ }),
91
+ };
90
92
  </script>
91
93
  <style scoped src="./swiper-nav.css"></style>
@@ -13,8 +13,8 @@ export default {
13
13
  },
14
14
  /** 是否禁用组件。优先级:Switch.disabled > Form.disabled */
15
15
  disabled: {
16
- type: Boolean,
17
- default: undefined,
16
+ type: [Boolean, null],
17
+ default: null as TdSwitchProps['disabled'],
18
18
  },
19
19
  /** 开关的图标;[打开时的图标,关闭时的图标] */
20
20
  icon: {
@@ -1,24 +1,22 @@
1
1
  <template>
2
2
  <view
3
- :style="tools._style([customStyle])"
3
+ :style="'' + tools._style([customStyle])"
4
4
  :class="tClass + ' ' + classPrefix"
5
5
  :aria-checked="checked"
6
6
  :aria-disabled="disabled"
7
7
  aria-role="switch"
8
8
  @click="handleSwitch"
9
9
  >
10
- <view :class="tools.cls(classPrefix + '__body', [['checked', checked], ['disabled', disabled || loading], size]) + ' ' + tClassBody">
10
+ <view :class="'' + tools.cls(classPrefix + '__body', [['checked', checked], ['disabled', disabled || loading], size]) + ' ' + tClassBody">
11
11
  <view
12
- :class="
13
- tools.cls(classPrefix + '__dot', [['checked', checked], ['disabled', disabled], ['plain', label.length != 2 && icon.length != 2 && !loading], size]) +
14
- ' ' +
15
- tClassDot
16
- "
12
+ :class="'' + tools.cls(classPrefix + '__dot', [['checked', checked], ['disabled', disabled], ['plain', label.length != 2 && icon.length != 2 && !loading], size]) +
13
+ ' ' +
14
+ tClassDot"
17
15
  :aria-hidden="true"
18
16
  >
19
17
  <view
20
18
  v-if="label"
21
- :class="tools.cls(classPrefix + '__label', [['checked', checked], ['disabled', disabled], size]) + ' ' + tClassLabel"
19
+ :class="'' + tools.cls(classPrefix + '__label', [['checked', checked], ['disabled', disabled], size]) + ' ' + tClassLabel"
22
20
  >
23
21
  <t-loading
24
22
  v-if="loading"
@@ -50,71 +48,73 @@ import tools from '../common/utils.wxs';
50
48
 
51
49
  const name = `${prefix}-switch`;
52
50
 
53
- export default uniComponent({
54
- name,
55
- options: {
56
- styleIsolation: 'shared',
57
- },
58
- controlledProps: [
59
- {
60
- key: 'value',
61
- event: 'change',
62
- },
63
- ],
64
- externalClasses: [
65
- `${prefix}-class`,
66
- `${prefix}-class-label`,
67
- `${prefix}-class-body`,
68
- `${prefix}-class-dot`,
69
- ],
51
+ export default {
70
52
  components: {
71
53
  TIcon,
72
54
  TLoading,
73
55
  },
74
- props: {
75
- ...props,
76
- },
77
- emits: ['change'],
78
- data() {
79
- return {
80
- prefix,
81
- classPrefix: name,
82
- checked: false,
83
- tools,
84
-
85
- dataValue: coalesce(this.value, this.defaultValue),
86
- };
87
- },
88
- watch: {
89
- value: {
90
- handler(v) {
91
- this.dataValue = v;
56
+ ...uniComponent({
57
+ name,
58
+ options: {
59
+ styleIsolation: 'shared',
60
+ },
61
+ controlledProps: [
62
+ {
63
+ key: 'value',
64
+ event: 'change',
92
65
  },
93
- immediate: true,
66
+ ],
67
+ externalClasses: [
68
+ `${prefix}-class`,
69
+ `${prefix}-class-label`,
70
+ `${prefix}-class-body`,
71
+ `${prefix}-class-dot`,
72
+ ],
73
+ props: {
74
+ ...props,
75
+ },
76
+ emits: ['change'],
77
+ data() {
78
+ return {
79
+ prefix,
80
+ classPrefix: name,
81
+ checked: false,
82
+ tools,
83
+
84
+ dataValue: coalesce(this.value, this.defaultValue),
85
+ };
94
86
  },
95
- dataValue: {
96
- handler(val) {
97
- const [activeValue] = this.customValue;
87
+ watch: {
88
+ value: {
89
+ handler(v) {
90
+ this.dataValue = v;
91
+ },
92
+ immediate: true,
93
+ },
94
+ dataValue: {
95
+ handler(val) {
96
+ const [activeValue] = this.customValue;
98
97
 
99
- this.checked = val === activeValue;
98
+ this.checked = val === activeValue;
99
+ },
100
+ immediate: true,
100
101
  },
101
- immediate: true,
102
102
  },
103
- },
104
- mounted() {
103
+ mounted() {
105
104
 
106
- },
107
- methods: {
108
- handleSwitch() {
109
- const { loading, disabled, dataValue, customValue } = this;
110
- const [activeValue, inactiveValue] = customValue;
111
- if (loading || disabled) return;
105
+ },
106
+ methods: {
107
+ handleSwitch() {
108
+ const { loading, disabled, dataValue, customValue } = this;
109
+ const [activeValue, inactiveValue] = customValue;
110
+ if (loading || disabled) return;
112
111
 
113
- this._trigger('change', {
114
- value: dataValue === activeValue ? inactiveValue : activeValue,
115
- });
112
+ this._trigger('change', {
113
+ value: dataValue === activeValue ? inactiveValue : activeValue,
114
+ });
115
+ },
116
116
  },
117
- },
118
- });
117
+ }),
118
+ };
119
119
  </script>
120
120
  <style scoped src="./switch.css"></style>
@@ -13,7 +13,7 @@ export interface TdSwitchProps<T = SwitchValue> {
13
13
  /**
14
14
  * 是否禁用组件。优先级:Switch.disabled > Form.disabled
15
15
  */
16
- disabled?: boolean;
16
+ disabled?: boolean | null;
17
17
  /**
18
18
  * 开关的图标;[打开时的图标,关闭时的图标]
19
19
  * @default []