@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
package/CHANGELOG.md CHANGED
@@ -5,6 +5,29 @@ toc: false
5
5
  docClass: timeline
6
6
  ---
7
7
 
8
+ ## 🌈 0.8.0 `2026-03-23`
9
+
10
+ ### 🚨 Breaking Changes
11
+
12
+ - `DateTimePicker`: 废弃 `custom-locale` 属性,请用 `ConfigProvider` 替换该功能 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
13
+
14
+ ### 🚀 Features
15
+
16
+ - `Cascader`: 新增 `PopupProps` 属性,透传至 `Popup` @novlan1 ([#4320](https://github.com/Tencent/tdesign-miniprogram/pull/4320))
17
+ - `ConfigProvider`: 新增 `ConfigProvider` 全局特性配置组件 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
18
+ - `Picker`: 支持 `v-model:value` 语法糖 @novlan1 ([#4320](https://github.com/Tencent/tdesign-miniprogram/pull/4320))
19
+
20
+ ### 🐞 Bug Fixes
21
+
22
+ - `ColorPicker`: 修复弹窗模式下预设颜色(swatch-colors)无法横向滚动 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
23
+ - `DateTimePicker`: 修复 `format` 含非日期 `token`(如 `ddd`)时,格式化后的值回传导致 `Invalid Date` 的问题 @novlan1 ([#4320](https://github.com/Tencent/tdesign-miniprogram/pull/4320))
24
+ - `Form`: 修复 `required-mark` 无效问题 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
25
+ - `Tabs`: 修复开启 `animation` 和 `lazy` 时,跳跃切换选项卡内容区域显示异常的问题 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
26
+ - `Toast`: 修复 `setup` 语法下,函数式调用时找不到实例的问题 @novlan1 ([#4312](https://github.com/Tencent/tdesign-miniprogram/pull/4312))
27
+ - `Upload`:
28
+ - 修复 `@upload-disabled-mask` 变量默认值错误 @anlyyao ([#4303](https://github.com/Tencent/tdesign-miniprogram/pull/4303))
29
+ - 修复 H5 环境下回调中 URL 错误问题 @novlan1 ([#4320](https://github.com/Tencent/tdesign-miniprogram/pull/4320))
30
+
8
31
  ## 🌈 0.7.3 `2026-03-04`
9
32
 
10
33
  ### 🐞 Bug Fixes
package/README.md CHANGED
@@ -145,7 +145,7 @@ import TLoading from '@tdesign/uniapp/loading/loading.vue';
145
145
 
146
146
  ## 浏览器兼容性
147
147
 
148
- | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari-ios/safari-ios_48x48.png" alt="iOS Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/> iOS Safari| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/samsung-internet/samsung-internet_48x48.png" alt="Samsung" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/>Samsung | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png" alt="Opera" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/>Opera |[<img src="https://user-images.githubusercontent.com/51158141/189169679-71e045f6-9b9b-4baf-8b9f-e045a40216f5.png" alt="Android Browser" width="24px" height="24px" />]()<br/>Android Browser|
148
+ | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari-ios/safari-ios_48x48.png" alt="iOS Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/> iOS Safari| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/samsung-internet/samsung-internet_48x48.png" alt="Samsung" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/>Samsung | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png" alt="Opera" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)<br/>Opera |<img src="https://user-images.githubusercontent.com/51158141/189169679-71e045f6-9b9b-4baf-8b9f-e045a40216f5.png" alt="Android Browser" width="24px" height="24px" /><br/>Android Browser|
149
149
  | --------- | --------- | --------- | --------- | --------- |--------- |
150
150
  | Firefox >=104| Chrome >=105| iOS Safari >=12.2| Samsung >=10.2 | Opera >=64 | Android Browser >=105 |
151
151
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  title: ActionSheet 动作面板
3
3
  description: 由用户操作后触发的一种特定的模态弹出框 ,呈现一组与当前情境相关的两个或多个选项。
4
- spline: data
4
+ spline: message
5
5
  isComponent: true
6
6
  ---
7
7
 
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <view
3
3
  :id="classPrefix"
4
- :style="tools._style([rootCustomStyle])"
5
- :class="tools.cls(classPrefix, [dataAlign, dataTheme, ['no-description', !description]]) + ' ' + tClass"
4
+ :style="'' + tools._style([rootCustomStyle])"
5
+ :class="'' + tools.cls(classPrefix, [dataAlign, dataTheme, ['no-description', !description]]) + ' ' + tClass"
6
6
  >
7
7
  <t-popup
8
8
  :visible="dataVisible"
@@ -44,7 +44,7 @@
44
44
  :description="item.description || ''"
45
45
  :image="item.image || ''"
46
46
  :style="'--td-grid-item-text-color: ' + item.color"
47
- @click="onSelect($event, { index })"
47
+ @click="(e) => onSelect(e, { index })"
48
48
  />
49
49
  </t-grid>
50
50
  </block>
@@ -78,7 +78,7 @@
78
78
  :description="item.description || ''"
79
79
  :image="item.image || ''"
80
80
  :style="'--td-grid-item-text-color: ' + item.color"
81
- @click="onSelect($event, { index })"
81
+ @click="(e) => onSelect(e, { index })"
82
82
  />
83
83
  </t-grid>
84
84
  </swiper-item>
@@ -107,7 +107,7 @@
107
107
  <view
108
108
  :data-index="index"
109
109
  :style="item.color ? 'color: ' + item.color : ''"
110
- :class="tools.cls(classPrefix + '__list-item', [['disabled', item.disabled]])"
110
+ :class="'' + tools.cls(classPrefix + '__list-item', [['disabled', item.disabled]])"
111
111
  :aria-role="ariaRole || 'button'"
112
112
  :aria-label="item.label || item"
113
113
  tabindex="0"
@@ -166,7 +166,7 @@
166
166
  aria-role="button"
167
167
  @click="onCancel"
168
168
  >
169
- {{ dataCancelText || '取消' }}
169
+ {{ dataCancelText || globalConfig.cancel }}
170
170
  </view>
171
171
  </view>
172
172
  </t-popup>
@@ -185,181 +185,189 @@ import props from './props';
185
185
  import useCustomNavbar from '../mixins/using-custom-navbar';
186
186
  import tools from '../common/utils.wxs';
187
187
  import { getFunctionalMixin } from '../common/functional/mixin';
188
+ import usingConfig from '../mixins/using-config';
188
189
  import { getIconData } from './computed';
189
190
 
190
- const name = `${prefix}-action-sheet`;
191
+ const componentName = 'action-sheet';
192
+ const name = `${prefix}-${componentName}`;
191
193
 
192
194
 
193
- export default uniComponent({
194
- name,
195
- options: {
196
- styleIsolation: 'shared',
197
- },
198
- controlledProps: [{
199
- key: 'visible',
200
- event: 'visible-change',
201
- }],
202
- externalClasses: [
203
- `${prefix}-class`,
204
- `${prefix}-class-content`,
205
- `${prefix}-class-cancel`,
206
- ],
207
- mixins: [getFunctionalMixin(props), useCustomNavbar],
195
+ export default {
208
196
  components: {
209
197
  TIcon,
210
198
  TPopup,
211
199
  TGrid,
212
200
  TGridItem,
213
201
  },
214
- props: {
215
- ...props,
216
- },
217
- emits: [
218
- 'visible-change',
219
- 'update:visible',
220
- ],
221
- data() {
222
- return {
223
- prefix,
224
- classPrefix: name,
225
- gridThemeItems: [],
226
- currentSwiperIndex: 0,
227
- defaultOverlayProps: {},
228
- defaultPopUpzIndex: 11500,
229
- tools,
230
-
231
- heightStyle: 'height: 456rpx;',
232
- };
233
- },
234
- computed: {
235
- rootCustomStyle() {
236
- return tools._style([
237
- this.customStyle,
238
- this.dataTheme === 'grid' ? 'padding-bottom: 16rpx' : '',
239
- ]);
240
- },
241
- iconCustomStyle() {
242
- return 'margin-right: 8px;';
202
+ ...uniComponent({
203
+ name,
204
+ options: {
205
+ styleIsolation: 'shared',
243
206
  },
244
- suffixIconCustomStyle() {
245
- return 'margin-right: 8px;margin-left: auto;';
207
+ controlledProps: [{
208
+ key: 'visible',
209
+ event: 'visible-change',
210
+ }],
211
+ externalClasses: [
212
+ `${prefix}-class`,
213
+ `${prefix}-class-content`,
214
+ `${prefix}-class-cancel`,
215
+ ],
216
+ mixins: [
217
+ getFunctionalMixin(props),
218
+ useCustomNavbar,
219
+ usingConfig({ componentName }),
220
+ ],
221
+ props: {
222
+ ...props,
246
223
  },
247
- gridStyle() {
248
- return `${this.heightStyle}padding-bottom: 48rpx;`;
224
+ emits: [
225
+ 'visible-change',
226
+ 'update:visible',
227
+ ],
228
+ data() {
229
+ return {
230
+ prefix,
231
+ classPrefix: name,
232
+ gridThemeItems: [],
233
+ currentSwiperIndex: 0,
234
+ defaultOverlayProps: {},
235
+ defaultPopUpzIndex: 11500,
236
+ tools,
237
+
238
+ heightStyle: 'height: 456rpx;',
239
+ };
249
240
  },
250
- },
251
- watch: {
252
- dataVisible: {
253
- handler(e) {
254
- if (e) {
255
- this.init();
256
- }
241
+ computed: {
242
+ rootCustomStyle() {
243
+ return tools._style([
244
+ this.customStyle,
245
+ this.dataTheme === 'grid' ? 'padding-bottom: 16rpx' : '',
246
+ ]);
257
247
  },
258
- immediate: true,
259
- },
260
- dataItems: {
261
- handler() {
262
- if (this.dataVisible) {
263
- this.init();
264
- }
248
+ iconCustomStyle() {
249
+ return 'margin-right: 8px;';
250
+ },
251
+ suffixIconCustomStyle() {
252
+ return 'margin-right: 8px;margin-left: auto;';
253
+ },
254
+ gridStyle() {
255
+ return `${this.heightStyle}padding-bottom: 48rpx;`;
265
256
  },
266
- immediate: true,
267
257
  },
268
- },
269
- methods: {
270
- init() {
271
- this.memoInitialData();
272
- this.splitGridThemeActions();
258
+ watch: {
259
+ dataVisible: {
260
+ handler(e) {
261
+ if (e) {
262
+ this.init();
263
+ }
264
+ },
265
+ immediate: true,
266
+ },
267
+ dataItems: {
268
+ handler() {
269
+ if (this.dataVisible) {
270
+ this.init();
271
+ }
272
+ },
273
+ immediate: true,
274
+ },
273
275
  },
276
+ methods: {
277
+ init() {
278
+ this.memoInitialData();
279
+ this.splitGridThemeActions();
280
+ },
274
281
 
275
- getIconData,
282
+ getIconData,
276
283
 
277
- memoInitialData() {
278
- this.initialData = {
279
- };
280
- },
281
-
282
- splitGridThemeActions() {
283
- if (this.dataTheme !== actionSheetTheme.Grid) return;
284
- this.gridThemeItems = chunk(this.dataItems, this.dataCount);
285
- },
284
+ memoInitialData() {
285
+ this.initialData = {
286
+ };
287
+ },
286
288
 
287
- /** 指令调用显示 */
288
- show(options) {
289
- const defaultOptions = [
290
- 'align',
291
- 'cancelText',
292
- 'count',
293
- 'description',
294
- 'items',
295
- 'popupProps',
296
- 'showCancel',
297
- 'showOverlay',
298
- 'theme',
299
- 'usingCustomNavbar',
300
- ].reduce((acc, key) => ({
301
- ...acc,
302
- [key]: props[key].default,
303
- }));
289
+ splitGridThemeActions() {
290
+ if (this.dataTheme !== actionSheetTheme.Grid) return;
291
+ this.gridThemeItems = chunk(this.dataItems, this.dataCount);
292
+ },
304
293
 
305
- this.setData({
306
- ...defaultOptions,
307
- ...options,
308
- visible: true,
309
- });
310
- this.splitGridThemeActions();
311
- this.autoClose = true;
312
- this._trigger('visible-change', { visible: true });
313
- },
294
+ /** 指令调用显示 */
295
+ show(options) {
296
+ const defaultOptions = [
297
+ 'align',
298
+ 'cancelText',
299
+ 'count',
300
+ 'description',
301
+ 'items',
302
+ 'popupProps',
303
+ 'showCancel',
304
+ 'showOverlay',
305
+ 'theme',
306
+ 'usingCustomNavbar',
307
+ ].reduce((acc, key) => ({
308
+ ...acc,
309
+ [key]: props[key].default,
310
+ }));
314
311
 
315
- /** 指令调用隐藏 */
316
- close() {
317
- this.$emit('close', { trigger: 'command' });
318
- this._trigger('visible-change', { visible: false });
319
- },
312
+ this.setData({
313
+ ...defaultOptions,
314
+ ...options,
315
+ visible: true,
316
+ });
317
+ this.splitGridThemeActions();
318
+ this.autoClose = true;
319
+ this._trigger('visible-change', { visible: true });
320
+ },
320
321
 
321
- /** 默认点击遮罩关闭 */
322
- onPopupVisibleChange(detail) {
323
- if (!detail.visible) {
324
- this.$emit('close', { trigger: 'overlay' });
322
+ /** 指令调用隐藏 */
323
+ close() {
324
+ this.$emit('close', { trigger: 'command' });
325
325
  this._trigger('visible-change', { visible: false });
326
- }
327
- if (this.autoClose) {
328
- this.dataVisible = false;
329
- this.autoClose = false;
330
- }
331
- },
326
+ },
332
327
 
333
- onSwiperChange(e) {
334
- const { current } = e.detail;
335
- this.currentSwiperIndex = current;
336
- },
328
+ /** 默认点击遮罩关闭 */
329
+ onPopupVisibleChange(detail) {
330
+ if (!detail.visible) {
331
+ this.$emit('close', { trigger: 'overlay' });
332
+ this._trigger('visible-change', { visible: false });
333
+ }
334
+ if (this.autoClose) {
335
+ this.dataVisible = false;
336
+ this.autoClose = false;
337
+ }
338
+ },
337
339
 
338
- onSelect(event, { index }) {
339
- const { currentSwiperIndex, dataItems, gridThemeItems, dataCount, dataTheme } = this;
340
- const isSwiperMode = dataTheme === actionSheetTheme.Grid;
341
- const item = isSwiperMode ? gridThemeItems[currentSwiperIndex][index] : dataItems[index];
342
- const realIndex = isSwiperMode ? index + currentSwiperIndex * dataCount : index;
340
+ onSwiperChange(e) {
341
+ const { current } = e.detail;
342
+ this.currentSwiperIndex = current;
343
+ },
343
344
 
344
- if (item) {
345
- this.$emit('selected', { selected: item, index: realIndex });
345
+ onSelect(event, { index }) {
346
+ const { currentSwiperIndex, dataItems, gridThemeItems, dataCount, dataTheme } = this;
347
+ const isSwiperMode = dataTheme === actionSheetTheme.Grid;
348
+ const item = isSwiperMode ? gridThemeItems[currentSwiperIndex][index] : dataItems[index];
349
+ const realIndex = isSwiperMode ? index + currentSwiperIndex * dataCount : index;
346
350
 
347
- if (!item.disabled) {
348
- this.$emit('close', { trigger: 'select' });
349
- this._trigger('visible-change', { visible: false });
351
+ if (item) {
352
+ this.$emit('selected', { selected: item, index: realIndex });
353
+
354
+ if (!item.disabled) {
355
+ this.$emit('close', { trigger: 'select' });
356
+ this._trigger('visible-change', { visible: false });
357
+ }
350
358
  }
351
- }
352
- },
359
+ },
353
360
 
354
- onCancel() {
355
- this.$emit('cancel');
356
- if (this.autoClose) {
357
- this.dataVisible = false;
358
- this.autoClose = false;
359
- }
361
+ onCancel() {
362
+ this.$emit('cancel');
363
+ if (this.autoClose) {
364
+ this.dataVisible = false;
365
+ this.autoClose = false;
366
+ }
367
+ },
360
368
  },
361
- },
362
- });
369
+ }),
370
+ };
363
371
  </script>
364
372
 
365
373
  <style scoped src="./action-sheet.css"></style>
@@ -63,8 +63,8 @@ export default {
63
63
  usingCustomNavbar: Boolean,
64
64
  /** 显示与隐藏 */
65
65
  visible: {
66
- type: Boolean,
67
- default: undefined,
66
+ type: [Boolean, null],
67
+ default: null as TdActionSheetProps['visible'],
68
68
  },
69
69
  /** 显示与隐藏,非受控属性 */
70
70
  defaultVisible: Boolean,
@@ -61,7 +61,7 @@ export interface TdActionSheetProps {
61
61
  * 显示与隐藏
62
62
  * @default false
63
63
  */
64
- visible?: boolean;
64
+ visible?: boolean | null;
65
65
  /**
66
66
  * 显示与隐藏,非受控属性
67
67
  * @default false
@@ -4,7 +4,7 @@
4
4
  classPrefix + '__wrapper',
5
5
  tClass
6
6
  ]"
7
- :style="tools._style([utils.getStyles(isShow), customStyle, innerStyle])"
7
+ :style="'' + tools._style([utils.getStyles(isShow), customStyle, innerStyle])"
8
8
  >
9
9
  <t-badge
10
10
  v-if="badgeProps"
@@ -26,7 +26,7 @@
26
26
  utils.getClass(classPrefix, dataSize || 'medium', dataShape, dataBordered),
27
27
  tClassImage
28
28
  ]"
29
- :style="utils.getSize(dataSize, windowWidth)"
29
+ :style="'' + utils.getSize(dataSize, windowWidth)"
30
30
  :aria-label="ariaLabel || alt || '头像'"
31
31
  :aria-role="ariaRole || 'img'"
32
32
  :aria-hidden="ariaHidden"
@@ -92,109 +92,111 @@ import { ChildrenMixin, RELATION_MAP } from '../common/relation';
92
92
  const name = `${prefix}-avatar`;
93
93
 
94
94
 
95
- export default uniComponent({
96
- name,
97
- options: {
98
- styleIsolation: 'shared',
99
- },
100
- externalClasses: [
101
- `${prefix}-class`,
102
- `${prefix}-class-image`,
103
- `${prefix}-class-icon`,
104
- `${prefix}-class-alt`,
105
- `${prefix}-class-content`,
106
- ],
107
- mixins: [ChildrenMixin(RELATION_MAP.Avatar)],
95
+ export default {
108
96
  components: {
109
97
  TIcon,
110
98
  TBadge,
111
99
  TImage,
112
100
  },
113
- props: {
114
- ...avatarProps,
115
- },
116
- data() {
117
- return {
118
- prefix,
119
- classPrefix: name,
120
- isShow: true,
121
- zIndex: 0,
122
- windowWidth: systemInfo.windowWidth,
123
- utils,
124
- tools,
101
+ ...uniComponent({
102
+ name,
103
+ options: {
104
+ styleIsolation: 'shared',
105
+ },
106
+ externalClasses: [
107
+ `${prefix}-class`,
108
+ `${prefix}-class-image`,
109
+ `${prefix}-class-icon`,
110
+ `${prefix}-class-alt`,
111
+ `${prefix}-class-content`,
112
+ ],
113
+ mixins: [ChildrenMixin(RELATION_MAP.Avatar)],
114
+ props: {
115
+ ...avatarProps,
116
+ },
117
+ data() {
118
+ return {
119
+ prefix,
120
+ classPrefix: name,
121
+ isShow: true,
122
+ zIndex: 0,
123
+ windowWidth: systemInfo.windowWidth,
124
+ utils,
125
+ tools,
125
126
 
126
- iconName: '',
127
- iconData: {},
127
+ iconName: '',
128
+ iconData: {},
128
129
 
129
- dataShape: this.shape,
130
- dataSize: this.size,
131
- dataBordered: this.bordered,
132
- innerStyle: '',
133
- };
134
- },
135
- computed: {
136
- iconCustomStyle() {
137
- const fontSize = {
138
- small: 'var(--td-avatar-icon-small-font-size, 20px)',
139
- medium: 'var(--td-avatar-icon-medium-font-size, 24px)',
140
- large: 'var(--td-avatar-icon-large-font-size, 32px)',
130
+ dataShape: this.shape,
131
+ dataSize: this.size,
132
+ dataBordered: this.bordered,
133
+ innerStyle: '',
141
134
  };
142
-
143
- return tools._style([
144
- {
145
- fontSize: this.iconData.size
146
- ? addUnit(this.iconData.size)
147
- : fontSize[this.dataSize],
148
- },
149
- this.iconData.style || '',
150
- ]);
151
- },
152
- imageCustomStyle() {
153
- return tools._style([
154
- {
155
- width: '100%',
156
- height: '100%',
157
- },
158
- this.imageProps?.style || '',
159
- ]);
160
135
  },
161
- },
162
- watch: {
163
- icon: {
164
- handler(t) {
165
- const obj = setIcon('icon', t, '');
136
+ computed: {
137
+ iconCustomStyle() {
138
+ const fontSize = {
139
+ small: 'var(--td-avatar-icon-small-font-size, 20px)',
140
+ medium: 'var(--td-avatar-icon-medium-font-size, 24px)',
141
+ large: 'var(--td-avatar-icon-large-font-size, 32px)',
142
+ };
166
143
 
167
- Object.keys(obj).forEach((key) => {
168
- this[key] = obj[key];
169
- });
144
+ return tools._style([
145
+ {
146
+ fontSize: this.iconData.size
147
+ ? addUnit(this.iconData.size)
148
+ : fontSize[this.dataSize],
149
+ },
150
+ this.iconData.style || '',
151
+ ]);
152
+ },
153
+ imageCustomStyle() {
154
+ return tools._style([
155
+ {
156
+ width: '100%',
157
+ height: '100%',
158
+ },
159
+ this.imageProps?.style || '',
160
+ ]);
170
161
  },
171
- immediate: true,
172
162
  },
163
+ watch: {
164
+ icon: {
165
+ handler(t) {
166
+ const obj = setIcon('icon', t, '');
173
167
 
174
- },
175
- mounted() {
168
+ Object.keys(obj).forEach((key) => {
169
+ this[key] = obj[key];
170
+ });
171
+ },
172
+ immediate: true,
173
+ },
176
174
 
177
- },
178
- methods: {
179
- innerAfterLinked() {
180
- this.dataShape = this.shape || this[RELATION_MAP.Avatar]?.shape || 'circle';
181
- this.dataSize = this.size || this[RELATION_MAP.Avatar]?.size;
182
- this.dataBordered = true;
183
175
  },
184
- hide() {
185
- this.isShow = false;
176
+ mounted() {
177
+
186
178
  },
187
- onLoadError(e) {
188
- if (this.hideOnLoadFailed) {
179
+ methods: {
180
+ innerAfterLinked() {
181
+ this.dataShape = this.shape || this[RELATION_MAP.Avatar]?.shape || 'circle';
182
+ this.dataSize = this.size || this[RELATION_MAP.Avatar]?.size;
183
+ this.dataBordered = true;
184
+ },
185
+ hide() {
189
186
  this.isShow = false;
190
- }
191
- this.$emit('error', e && e.e);
192
- },
193
- setStyle(val = '') {
194
- this.innerStyle = val;
187
+ },
188
+ onLoadError(e) {
189
+ if (this.hideOnLoadFailed) {
190
+ this.isShow = false;
191
+ }
192
+ this.$emit('error', e && e.e);
193
+ },
194
+ setStyle(val = '') {
195
+ this.innerStyle = val;
196
+ },
195
197
  },
196
- },
197
- });
198
+ }),
199
+ };
198
200
 
199
201
  </script>
200
202
  <style scoped src="./avatar.css"></style>