@tdesign/uniapp 0.7.3 → 0.8.1

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 (258) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +44 -35
  3. package/dist/action-sheet/README.md +9 -4
  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/README.md +3 -1
  8. package/dist/avatar/avatar.vue +89 -87
  9. package/dist/avatar-group/avatar-group.vue +69 -67
  10. package/dist/back-top/README.md +3 -1
  11. package/dist/back-top/back-top.vue +60 -58
  12. package/dist/badge/README.md +3 -1
  13. package/dist/badge/badge.vue +69 -59
  14. package/dist/button/README.md +3 -1
  15. package/dist/button/button.vue +121 -116
  16. package/dist/button/props.ts +2 -2
  17. package/dist/button/type.ts +1 -1
  18. package/dist/calendar/README.md +3 -1
  19. package/dist/calendar/calendar-header.vue +4 -4
  20. package/dist/calendar/calendar.vue +308 -297
  21. package/dist/calendar/template.vue +1 -1
  22. package/dist/cascader/README.en-US.md +2 -1
  23. package/dist/cascader/README.md +5 -2
  24. package/dist/cascader/cascader.vue +340 -328
  25. package/dist/cascader/props.ts +6 -1
  26. package/dist/cascader/type.ts +6 -0
  27. package/dist/cell/README.md +3 -1
  28. package/dist/cell/cell.vue +127 -121
  29. package/dist/cell-group/cell-group.vue +32 -30
  30. package/dist/check-tag/check-tag.vue +73 -71
  31. package/dist/checkbox/README.md +3 -1
  32. package/dist/checkbox/checkbox.vue +127 -127
  33. package/dist/checkbox/props.ts +6 -6
  34. package/dist/checkbox/type.ts +3 -3
  35. package/dist/checkbox-group/checkbox-group.vue +175 -173
  36. package/dist/checkbox-group/props.ts +6 -6
  37. package/dist/checkbox-group/type.ts +4 -4
  38. package/dist/col/README.md +3 -1
  39. package/dist/col/col.vue +26 -24
  40. package/dist/collapse/README.md +3 -1
  41. package/dist/collapse/collapse.vue +83 -81
  42. package/dist/collapse-panel/collapse-panel.vue +121 -119
  43. package/dist/collapse-panel/props.ts +4 -4
  44. package/dist/collapse-panel/type.ts +2 -2
  45. package/dist/color-picker/README.md +4 -2
  46. package/dist/color-picker/color-picker.vue +324 -322
  47. package/dist/color-picker/props.ts +2 -2
  48. package/dist/color-picker/template.vue +14 -10
  49. package/dist/common/common.ts +122 -5
  50. package/dist/common/src/index.js +0 -1
  51. package/dist/common/style/theme/index.css +5 -5
  52. package/dist/common/utils.js +7 -2
  53. package/dist/common/validator.ts +496 -0
  54. package/dist/config-provider/README.en-US.md +184 -0
  55. package/dist/config-provider/README.md +236 -0
  56. package/dist/config-provider/config-provider.vue +105 -0
  57. package/dist/config-provider/config-store.js +70 -0
  58. package/dist/config-provider/props.ts +16 -0
  59. package/dist/config-provider/reactive-state.js +39 -0
  60. package/dist/config-provider/type.ts +401 -0
  61. package/dist/config-provider/use-config.js +29 -0
  62. package/dist/config-provider/utils.js +29 -0
  63. package/dist/count-down/README.md +3 -1
  64. package/dist/count-down/count-down.vue +98 -97
  65. package/dist/date-time-picker/README.md +3 -1
  66. package/dist/date-time-picker/date-time-picker.vue +410 -395
  67. package/dist/demo/demo.vue +1 -0
  68. package/dist/dialog/README.md +3 -1
  69. package/dist/dialog/dialog.vue +175 -173
  70. package/dist/divider/README.md +3 -1
  71. package/dist/divider/divider.vue +38 -36
  72. package/dist/draggable/draggable.vue +60 -58
  73. package/dist/drawer/README.md +4 -2
  74. package/dist/drawer/drawer.vue +48 -46
  75. package/dist/dropdown-item/dropdown-item.vue +209 -207
  76. package/dist/dropdown-item/props.ts +4 -4
  77. package/dist/dropdown-item/type.ts +3 -3
  78. package/dist/dropdown-menu/README.md +2 -2
  79. package/dist/dropdown-menu/dropdown-menu.vue +93 -99
  80. package/dist/empty/README.md +3 -1
  81. package/dist/empty/empty.vue +43 -42
  82. package/dist/fab/README.md +3 -1
  83. package/dist/fab/fab.vue +88 -86
  84. package/dist/footer/README.md +3 -1
  85. package/dist/footer/footer.vue +36 -34
  86. package/dist/form/README.en-US.md +17 -24
  87. package/dist/form/README.md +21 -26
  88. package/dist/form/form.css +1 -166
  89. package/dist/form/form.vue +251 -236
  90. package/dist/form/props.ts +2 -21
  91. package/dist/form/type.ts +6 -69
  92. package/dist/form-item/README.en-US.md +4 -5
  93. package/dist/form-item/README.md +4 -5
  94. package/dist/form-item/form-item.css +72 -95
  95. package/dist/form-item/form-item.vue +315 -337
  96. package/dist/form-item/form-model.ts +125 -173
  97. package/dist/form-item/props.ts +4 -17
  98. package/dist/form-item/type.ts +43 -1
  99. package/dist/grid/README.md +3 -1
  100. package/dist/grid/grid.vue +53 -51
  101. package/dist/grid-item/grid-item.vue +121 -119
  102. package/dist/guide/README.md +4 -2
  103. package/dist/guide/guide.vue +281 -277
  104. package/dist/icon/README.md +12 -11
  105. package/dist/icon/icon.css +1633 -1624
  106. package/dist/icon/icon.vue +78 -76
  107. package/dist/image/README.md +4 -2
  108. package/dist/image/image.vue +103 -101
  109. package/dist/image-viewer/README.md +3 -1
  110. package/dist/image-viewer/image-viewer.vue +160 -158
  111. package/dist/image-viewer/props.ts +2 -2
  112. package/dist/image-viewer/type.ts +1 -1
  113. package/dist/index.js +16 -0
  114. package/dist/indexes/README.md +3 -1
  115. package/dist/indexes/indexes.vue +264 -267
  116. package/dist/indexes-anchor/indexes-anchor.vue +41 -41
  117. package/dist/input/README.md +3 -1
  118. package/dist/input/input.vue +172 -198
  119. package/dist/input/props.ts +6 -6
  120. package/dist/input/type.ts +3 -3
  121. package/dist/link/README.md +3 -1
  122. package/dist/link/link.vue +73 -71
  123. package/dist/loading/README.md +3 -1
  124. package/dist/loading/loading.vue +59 -59
  125. package/dist/locale/ar_KW.ts +157 -0
  126. package/dist/locale/en_US.ts +146 -0
  127. package/dist/locale/it_IT.ts +145 -0
  128. package/dist/locale/ja_JP.ts +132 -0
  129. package/dist/locale/ko_KR.ts +132 -0
  130. package/dist/locale/ru_RU.ts +157 -0
  131. package/dist/locale/zh_CN.ts +133 -0
  132. package/dist/locale/zh_TW.ts +132 -0
  133. package/dist/message/README.md +8 -3
  134. package/dist/message/message.vue +181 -173
  135. package/dist/message/props.ts +2 -2
  136. package/dist/message/type.ts +1 -1
  137. package/dist/message-item/message-item.vue +192 -184
  138. package/dist/mixins/page-scroll.d.ts +19 -0
  139. package/dist/mixins/skyline.js +1 -1
  140. package/dist/mixins/using-config.js +39 -0
  141. package/dist/navbar/README.md +3 -1
  142. package/dist/navbar/navbar.vue +201 -199
  143. package/dist/notice-bar/README.md +3 -1
  144. package/dist/notice-bar/notice-bar.vue +175 -171
  145. package/dist/notice-bar/props.ts +2 -2
  146. package/dist/notice-bar/type.ts +1 -1
  147. package/dist/npm/dayjs/esm/locale/ar.js +81 -0
  148. package/dist/npm/dayjs/esm/locale/it.js +39 -0
  149. package/dist/overlay/README.md +3 -1
  150. package/dist/overlay/overlay.vue +50 -48
  151. package/dist/picker/README.md +3 -1
  152. package/dist/picker/picker.vue +168 -161
  153. package/dist/picker-item/picker-item.vue +269 -269
  154. package/dist/popover/README.md +4 -2
  155. package/dist/popover/popover.vue +262 -261
  156. package/dist/popover/props.ts +4 -4
  157. package/dist/popover/type.ts +2 -2
  158. package/dist/popup/README.md +3 -1
  159. package/dist/popup/popup.vue +46 -45
  160. package/dist/progress/README.md +3 -3
  161. package/dist/progress/progress.vue +76 -76
  162. package/dist/pull-down-refresh/README.md +3 -1
  163. package/dist/pull-down-refresh/props.ts +2 -2
  164. package/dist/pull-down-refresh/pull-down-refresh.vue +240 -234
  165. package/dist/pull-down-refresh/type.ts +1 -1
  166. package/dist/qrcode/README.md +4 -2
  167. package/dist/qrcode/components/qrcode-canvas/qrcode-canvas.vue +340 -338
  168. package/dist/qrcode/components/qrcode-status/qrcode-status.vue +6 -6
  169. package/dist/qrcode/qrcode.vue +93 -87
  170. package/dist/radio/README.md +3 -1
  171. package/dist/radio/props.ts +6 -6
  172. package/dist/radio/radio.vue +118 -120
  173. package/dist/radio/type.ts +3 -3
  174. package/dist/radio-group/props.ts +4 -4
  175. package/dist/radio-group/radio-group.vue +136 -134
  176. package/dist/radio-group/type.ts +4 -4
  177. package/dist/rate/README.md +3 -1
  178. package/dist/rate/computed.js +2 -2
  179. package/dist/rate/props.ts +4 -4
  180. package/dist/rate/rate.css +1 -0
  181. package/dist/rate/rate.vue +155 -154
  182. package/dist/rate/type.ts +2 -2
  183. package/dist/result/README.md +3 -1
  184. package/dist/result/result.vue +41 -39
  185. package/dist/row/row.vue +38 -36
  186. package/dist/script/postinstall.js +49 -24
  187. package/dist/scroll-view/scroll-view.vue +24 -22
  188. package/dist/search/README.md +3 -1
  189. package/dist/search/props.ts +2 -2
  190. package/dist/search/search.vue +127 -125
  191. package/dist/search/type.ts +1 -1
  192. package/dist/side-bar/README.md +3 -1
  193. package/dist/side-bar/side-bar.vue +57 -55
  194. package/dist/side-bar-item/side-bar-item.vue +86 -86
  195. package/dist/skeleton/README.md +3 -1
  196. package/dist/skeleton/skeleton.vue +126 -124
  197. package/dist/slider/README.md +4 -2
  198. package/dist/slider/props.ts +2 -2
  199. package/dist/slider/slider.vue +457 -457
  200. package/dist/slider/type.ts +1 -1
  201. package/dist/step-item/step-item.vue +77 -75
  202. package/dist/stepper/README.md +3 -1
  203. package/dist/stepper/props.ts +2 -2
  204. package/dist/stepper/stepper.vue +168 -149
  205. package/dist/stepper/type.ts +1 -1
  206. package/dist/steps/README.md +3 -1
  207. package/dist/steps/props.ts +2 -2
  208. package/dist/steps/steps.vue +83 -81
  209. package/dist/steps/type.ts +1 -1
  210. package/dist/sticky/README.md +3 -1
  211. package/dist/sticky/sticky.vue +104 -102
  212. package/dist/swipe-cell/README.md +3 -1
  213. package/dist/swipe-cell/swipe-cell.vue +91 -89
  214. package/dist/swiper/README.md +4 -2
  215. package/dist/swiper/swiper.vue +91 -89
  216. package/dist/swiper-nav/swiper-nav.vue +38 -36
  217. package/dist/switch/README.md +3 -1
  218. package/dist/switch/props.ts +2 -2
  219. package/dist/switch/switch.vue +62 -62
  220. package/dist/switch/type.ts +1 -1
  221. package/dist/tab-bar/README.md +3 -1
  222. package/dist/tab-bar/tab-bar.vue +88 -86
  223. package/dist/tab-bar-item/tab-bar-item.vue +85 -82
  224. package/dist/tab-panel/tab-panel.vue +66 -64
  225. package/dist/tabs/README.md +3 -1
  226. package/dist/tabs/tabs.vue +294 -287
  227. package/dist/tag/README.md +3 -1
  228. package/dist/tag/tag.vue +79 -77
  229. package/dist/textarea/README.md +3 -1
  230. package/dist/textarea/props.ts +6 -6
  231. package/dist/textarea/textarea.vue +128 -151
  232. package/dist/textarea/type.ts +3 -3
  233. package/dist/theme.css +467 -0
  234. package/dist/theme.css.d.ts +2 -0
  235. package/dist/theme.less +1 -0
  236. package/dist/theme.less.d.ts +2 -0
  237. package/dist/toast/README.md +3 -1
  238. package/dist/toast/toast.vue +107 -106
  239. package/dist/transition/README.md +4 -6
  240. package/dist/transition/transition.vue +30 -28
  241. package/dist/tree-select/README.md +3 -1
  242. package/dist/tree-select/tree-select.vue +151 -151
  243. package/dist/types/config-provider.d.ts +7 -0
  244. package/dist/types/index.d.ts +17 -0
  245. package/dist/types/popover.d.ts +7 -0
  246. package/dist/upload/README.en-US.md +13 -14
  247. package/dist/upload/README.md +14 -13
  248. package/dist/upload/props.ts +2 -4
  249. package/dist/upload/type.ts +12 -11
  250. package/dist/upload/upload.css +1 -1
  251. package/dist/upload/upload.vue +672 -512
  252. package/dist/watermark/README.md +3 -1
  253. package/dist/watermark/watermark.vue +151 -149
  254. package/global.d.ts +2 -0
  255. package/package.json +51 -5
  256. package/dist/common/src/superComponent.js +0 -5
  257. package/dist/common/validator.js +0 -38
  258. package/dist/form/form-item-props.ts +0 -56
package/CHANGELOG.md CHANGED
@@ -5,6 +5,40 @@ toc: false
5
5
  docClass: timeline
6
6
  ---
7
7
 
8
+ ## 🌈 0.8.1 `2026-04-09`
9
+
10
+ ### 🚀 Features
11
+
12
+ - `Icon`: 新增 `divider-1`, `voice-wave` 和 `keyboard-1` 图标 @uyarn ([#4395](https://github.com/Tencent/tdesign-miniprogram/pull/4395))
13
+
14
+ ### 🐞 Bug Fixes
15
+
16
+ - `Form`: 修复 `FormItem` 右侧箭头深色模式颜色错误 @anlyyao ([#4384](https://github.com/Tencent/tdesign-miniprogram/pull/4384))
17
+ - `Rate`: 修复提示框层级不够被覆盖的问题 @liweijie0812 ([#4386](https://github.com/Tencent/tdesign-miniprogram/pull/4386))
18
+
19
+ ## 🌈 0.8.0 `2026-03-23`
20
+
21
+ ### 🚨 Breaking Changes
22
+
23
+ - `DateTimePicker`: 废弃 `custom-locale` 属性,请用 `ConfigProvider` 替换该功能 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
24
+
25
+ ### 🚀 Features
26
+
27
+ - `Cascader`: 新增 `PopupProps` 属性,透传至 `Popup` @novlan1 ([#4320](https://github.com/Tencent/tdesign-miniprogram/pull/4320))
28
+ - `ConfigProvider`: 新增 `ConfigProvider` 全局特性配置组件 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
29
+ - `Picker`: 支持 `v-model:value` 语法糖 @novlan1 ([#4320](https://github.com/Tencent/tdesign-miniprogram/pull/4320))
30
+
31
+ ### 🐞 Bug Fixes
32
+
33
+ - `ColorPicker`: 修复弹窗模式下预设颜色(swatch-colors)无法横向滚动 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
34
+ - `DateTimePicker`: 修复 `format` 含非日期 `token`(如 `ddd`)时,格式化后的值回传导致 `Invalid Date` 的问题 @novlan1 ([#4320](https://github.com/Tencent/tdesign-miniprogram/pull/4320))
35
+ - `Form`: 修复 `required-mark` 无效问题 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
36
+ - `Tabs`: 修复开启 `animation` 和 `lazy` 时,跳跃切换选项卡内容区域显示异常的问题 @novlan1 ([#4350](https://github.com/Tencent/tdesign-miniprogram/pull/4350))
37
+ - `Toast`: 修复 `setup` 语法下,函数式调用时找不到实例的问题 @novlan1 ([#4312](https://github.com/Tencent/tdesign-miniprogram/pull/4312))
38
+ - `Upload`:
39
+ - 修复 `@upload-disabled-mask` 变量默认值错误 @anlyyao ([#4303](https://github.com/Tencent/tdesign-miniprogram/pull/4303))
40
+ - 修复 H5 环境下回调中 URL 错误问题 @novlan1 ([#4320](https://github.com/Tencent/tdesign-miniprogram/pull/4320))
41
+
8
42
  ## 🌈 0.7.3 `2026-03-04`
9
43
 
10
44
  ### 🐞 Bug Fixes
package/README.md CHANGED
@@ -51,47 +51,37 @@ npm i @tdesign/uniapp
51
51
 
52
52
  ## 使用
53
53
 
54
- 1. 在 `main.ts` 中引入样式文件
54
+ ### 步骤一:引入样式文件
55
55
 
56
- ```js
57
- // CLI 模式
58
- import '@tdesign/uniapp/common/style/theme/index.css';
59
-
60
- // HBuilderX 模式
61
- // import './uni_modules/tdesign-uniapp/components/common/style/theme/index.css';
62
- ```
56
+ 在 `main.ts` 中引入组件库样式:
63
57
 
64
- 也可以引入 `rpx` 单位的 `less` 文件,该文件与 `tdesign-miniprogram` 完全一致。
58
+ #### CLI 模式
65
59
 
66
60
  ```js
67
- // CLI 模式
68
- import '@tdesign/uniapp/common/style/theme/index.less';
61
+ // Less(推荐,rpx 单位,与 tdesign-miniprogram 完全一致)
62
+ import '@tdesign/uniapp/theme.less';
69
63
 
70
- // HBuilderX 模式
71
- // import './uni_modules/tdesign-uniapp/components/common/style/theme/index.less';
64
+ // 或者引入编译后的 CSS 文件
65
+ import '@tdesign/uniapp/theme.css';
72
66
  ```
73
67
 
74
- 2. 在文件中使用
68
+ #### HBuilderX 模式
75
69
 
76
- ```html
77
- <template>
78
- <t-loading />
79
- </template>
70
+ ```js
71
+ // Less(推荐,rpx 单位,与 tdesign-miniprogram 完全一致)
72
+ import './uni_modules/tdesign-uniapp/components/theme.less';
80
73
 
81
- <script lang="ts" setup>
82
- import TLoading from '@tdesign/uniapp/loading/loading.vue';
83
- </script>
74
+ // 或者引入编译后的 CSS 文件
75
+ import './uni_modules/tdesign-uniapp/components/theme.css';
84
76
  ```
85
77
 
86
- 只提供按需导入方式,不支持全量导入(全量导入在小程序下有兼容性问题)。
78
+ ### 步骤二:注册组件
87
79
 
88
- ## 自动导入
80
+ #### 自动导入(推荐)
89
81
 
90
- 在 `pages.json` 配置 [easycom](https://uniapp.dcloud.net.cn/collocation/pages.html#easycom),可实现自动导入。
82
+ 配置 [easycom](https://uniapp.dcloud.net.cn/collocation/pages.html#easycom) 后,无需手动引入组件即可直接在模板中使用,在 `pages.json` 中添加以下配置:
91
83
 
92
- ### CLI 模式
93
-
94
- 使用 CLI 模式,即使用 `node_modules` 下的 `@tdesign/uniapp` 时,配置如下。
84
+ **CLI 模式**:使用 `node_modules` 下的 `@tdesign/uniapp` 时,配置如下。
95
85
 
96
86
  ```json
97
87
  {
@@ -103,9 +93,7 @@ import TLoading from '@tdesign/uniapp/loading/loading.vue';
103
93
  }
104
94
  ```
105
95
 
106
- ### UNI_MODULES 模式
107
-
108
- 使用 `uni_modules` 下的 `tdesign-uniapp` 时,配置如下。
96
+ **HBuilderX 模式**:使用 `uni_modules` 下的 `tdesign-uniapp` 时,配置如下。
109
97
 
110
98
  ```json
111
99
  {
@@ -117,11 +105,33 @@ import TLoading from '@tdesign/uniapp/loading/loading.vue';
117
105
  }
118
106
  ```
119
107
 
120
- ## 编辑器提示
108
+ 配置完成后,可以直接在模板中使用组件:
121
109
 
122
- 安装注册 TDesign 之后,在开发项目时,可以配合插件在VSCode等主流编辑器中达到提示组件名及API的效果。
110
+ ```html
111
+ <template>
112
+ <t-loading />
113
+ </template>
114
+ ```
115
+
116
+ #### 手动导入
117
+
118
+ 如果不使用 easycom,也可以在 `<script>` 中手动导入组件:
119
+
120
+ ```html
121
+ <template>
122
+ <t-loading />
123
+ </template>
123
124
 
124
- 推荐安装 [Vue (Official)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) 插件,并在项目的 `tsconfig.json` 的 `compilerOptions.types` 属性中增加 `@tdesign/uniapp/global`,即可实现提示效果。
125
+ <script lang="ts" setup>
126
+ import TLoading from '@tdesign/uniapp/loading/loading.vue';
127
+ </script>
128
+ ```
129
+
130
+ > 只提供按需导入方式,不支持全量导入(全量导入在小程序下有兼容性问题)。
131
+
132
+ ### 步骤三:配置编辑器提示(可选)
133
+
134
+ 推荐安装 [Vue (Official)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) 插件,并在项目的 `tsconfig.json` 的 `compilerOptions.types` 属性中增加 `@tdesign/uniapp/global`,即可在 VSCode 等主流编辑器中获得组件名及 API 的智能提示。
125
135
 
126
136
  ```json
127
137
  {
@@ -145,7 +155,7 @@ import TLoading from '@tdesign/uniapp/loading/loading.vue';
145
155
 
146
156
  ## 浏览器兼容性
147
157
 
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|
158
+ | [<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
159
  | --------- | --------- | --------- | --------- | --------- |--------- |
150
160
  | Firefox >=104| Chrome >=105| iOS Safari >=12.2| Samsung >=10.2 | Opera >=64 | Android Browser >=105 |
151
161
 
@@ -162,7 +172,6 @@ import TLoading from '@tdesign/uniapp/loading/loading.vue';
162
172
  | [TDesign UniApp Starter Vue3 HX](https://github.com/TDesignOteam/tdesign-uniapp-starter-vue3-hx/) | Vue3 + HBuilderX 模式模板 | <img src="https://cdn.uwayfly.com/tdesign-uniapp/image/tdesign-uniapp-starter-vue3-hx-h5.png" height="100" /> |
163
173
  | [TDesign UniApp Starter Vue2 CLI](https://github.com/TDesignOteam/tdesign-uniapp-starter-vue2-cli/) | Vue2 + CLI 模式模板 | <img src="https://cdn.uwayfly.com/tdesign-uniapp/image/tdesign-uniapp-starter-vue2-cli-h5.png" height="100" /> |
164
174
  | [TDesign UniApp Starter Vue2 HX](https://github.com/TDesignOteam/tdesign-uniapp-starter-vue2-hx/) | Vue2 + HBuilderX 模式模板 |<img src="https://cdn.uwayfly.com/tdesign-uniapp/image/tdesign-uniapp-starter-vue2-hx-h5.png" height="100" /> |
165
-
166
175
  ## 反馈
167
176
 
168
177
  有任何问题,建议通过 [Github issues](https://github.com/Tencent/tdesign-miniprogram/issues) 反馈或扫码加入用户微信群。
@@ -1,14 +1,16 @@
1
1
  ---
2
2
  title: ActionSheet 动作面板
3
3
  description: 由用户操作后触发的一种特定的模态弹出框 ,呈现一组与当前情境相关的两个或多个选项。
4
- spline: data
4
+ spline: message
5
5
  isComponent: true
6
6
  ---
7
7
 
8
8
 
9
9
  ## 引入
10
10
 
11
- 可在 `main.ts` 或在需要使用的页面或组件中引入。
11
+ 推荐使用 easycom 模式引入组件,配置后无需手动 import 即可直接在模板中使用 `<t-action-sheet />`。详细配置请参考 [快速开始](../getting-started)。
12
+
13
+ 如需手动引入:
12
14
 
13
15
  ```js
14
16
  import TActionSheet from '@tdesign/uniapp/action-sheet/action-sheet.vue';
@@ -40,7 +42,10 @@ import TActionSheet from '@tdesign/uniapp/action-sheet/action-sheet.vue';
40
42
  ### 支持指令调用
41
43
 
42
44
  ```javascript
43
- import ActionSheet, { ActionSheetTheme } from '@tdesign/uniapp/action-sheet/index';
45
+ // ActionSheetPlugin ActionSheet 均可使用
46
+ import { ActionSheetPlugin, ActionSheetTheme } from '@tdesign/uniapp';
47
+ // 或
48
+ // import { ActionSheet, ActionSheetTheme } from '@tdesign/uniapp';
44
49
 
45
50
  // 指令调用不同于组件引用不需要传入visible
46
51
  const basicListOption: ActionSheetShowOption = {
@@ -61,7 +66,7 @@ const basicListOption: ActionSheetShowOption = {
61
66
  ],
62
67
  };
63
68
 
64
- const handler = ActionSheet.show(basicListOption);
69
+ const handler = ActionSheetPlugin.show(basicListOption);
65
70
  ```
66
71
 
67
72
  指令调用的关闭如下
@@ -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
@@ -8,7 +8,9 @@ isComponent: true
8
8
 
9
9
  ## 引入
10
10
 
11
- 可在 `main.ts` 或在需要使用的页面或组件中引入。
11
+ 推荐使用 easycom 模式引入组件,配置后无需手动 import 即可直接在模板中使用 `<t-avatar />`。详细配置请参考 [快速开始](../getting-started)。
12
+
13
+ 如需手动引入:
12
14
 
13
15
  ```js
14
16
  import TAvatar from '@tdesign/uniapp/avatar/avatar.vue';