uview-pro 0.6.18 → 0.6.19

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 (278) hide show
  1. package/changelog.md +1778 -1768
  2. package/components/u-action-sheet/types.ts +52 -52
  3. package/components/u-action-sheet/u-action-sheet.vue +196 -196
  4. package/components/u-action-sheet-item/types.ts +35 -35
  5. package/components/u-action-sheet-item/u-action-sheet-item.vue +85 -85
  6. package/components/u-alert-tips/types.ts +49 -49
  7. package/components/u-alert-tips/u-alert-tips.vue +239 -239
  8. package/components/u-avatar/types.ts +44 -44
  9. package/components/u-avatar/u-avatar.vue +218 -218
  10. package/components/u-avatar-cropper/types.ts +23 -23
  11. package/components/u-avatar-cropper/u-avatar-cropper.vue +299 -299
  12. package/components/u-avatar-cropper/weCropper.d.ts +62 -62
  13. package/components/u-avatar-cropper/weCropper.js +1281 -1281
  14. package/components/u-avatar-cropper/weCropper.ts +1276 -1276
  15. package/components/u-back-top/types.ts +44 -44
  16. package/components/u-back-top/u-back-top.vue +141 -141
  17. package/components/u-badge/types.ts +46 -46
  18. package/components/u-badge/u-badge.vue +153 -153
  19. package/components/u-button/types.ts +76 -76
  20. package/components/u-button/u-button.vue +608 -608
  21. package/components/u-calendar/types.ts +126 -126
  22. package/components/u-calendar/u-calendar.vue +1243 -1243
  23. package/components/u-car-keyboard/types.ts +22 -22
  24. package/components/u-car-keyboard/u-car-keyboard.vue +263 -263
  25. package/components/u-card/types.ts +69 -69
  26. package/components/u-card/u-card.vue +210 -210
  27. package/components/u-cell-group/types.ts +27 -27
  28. package/components/u-cell-group/u-cell-group.vue +60 -60
  29. package/components/u-cell-item/types.ts +64 -64
  30. package/components/u-cell-item/u-cell-item.vue +221 -221
  31. package/components/u-checkbox/types.ts +45 -45
  32. package/components/u-checkbox/u-checkbox.vue +363 -363
  33. package/components/u-checkbox-group/types.ts +45 -45
  34. package/components/u-checkbox-group/u-checkbox-group.vue +172 -172
  35. package/components/u-circle-progress/types.ts +63 -63
  36. package/components/u-circle-progress/u-circle-progress.vue +299 -299
  37. package/components/u-city-select/types.ts +30 -30
  38. package/components/u-city-select/u-city-select.vue +281 -281
  39. package/components/u-col/types.ts +40 -40
  40. package/components/u-col/u-col.vue +142 -142
  41. package/components/u-collapse/types.ts +41 -41
  42. package/components/u-collapse/u-collapse.vue +190 -190
  43. package/components/u-collapse-item/types.ts +35 -35
  44. package/components/u-collapse-item/u-collapse-item.vue +291 -291
  45. package/components/u-column-notice/types.ts +58 -58
  46. package/components/u-column-notice/u-column-notice.vue +223 -223
  47. package/components/u-config-provider/types.ts +53 -53
  48. package/components/u-config-provider/u-config-provider.vue +185 -185
  49. package/components/u-count-down/types.ts +52 -52
  50. package/components/u-count-down/u-count-down.vue +288 -288
  51. package/components/u-count-to/types.ts +42 -42
  52. package/components/u-count-to/u-count-to.vue +266 -266
  53. package/components/u-divider/types.ts +41 -41
  54. package/components/u-divider/u-divider.vue +146 -146
  55. package/components/u-dropdown/types.ts +67 -67
  56. package/components/u-dropdown/u-dropdown.vue +436 -436
  57. package/components/u-dropdown-item/types.ts +40 -40
  58. package/components/u-dropdown-item/u-dropdown-item.vue +124 -124
  59. package/components/u-empty/types.ts +46 -46
  60. package/components/u-empty/u-empty.vue +109 -109
  61. package/components/u-fab/types.ts +83 -83
  62. package/components/u-fab/u-fab.vue +330 -330
  63. package/components/u-field/types.ts +81 -81
  64. package/components/u-field/u-field.vue +398 -398
  65. package/components/u-form/types.ts +39 -39
  66. package/components/u-form/u-form.vue +175 -135
  67. package/components/u-form-item/types.ts +95 -95
  68. package/components/u-form-item/u-form-item.vue +563 -563
  69. package/components/u-full-screen/types.ts +26 -26
  70. package/components/u-full-screen/u-full-screen.vue +100 -100
  71. package/components/u-gap/types.ts +28 -28
  72. package/components/u-gap/u-gap.vue +50 -50
  73. package/components/u-grid/types.ts +29 -29
  74. package/components/u-grid/u-grid.vue +91 -91
  75. package/components/u-grid-item/types.ts +24 -24
  76. package/components/u-grid-item/u-grid-item.vue +130 -130
  77. package/components/u-icon/types.ts +69 -69
  78. package/components/u-icon/u-icon.vue +301 -301
  79. package/components/u-image/types.ts +61 -61
  80. package/components/u-image/u-image.vue +245 -245
  81. package/components/u-index-anchor/types.ts +24 -24
  82. package/components/u-index-anchor/u-index-anchor.vue +120 -120
  83. package/components/u-index-list/types.ts +44 -44
  84. package/components/u-index-list/u-index-list.vue +346 -346
  85. package/components/u-input/types.ts +165 -165
  86. package/components/u-input/u-input.vue +453 -453
  87. package/components/u-keyboard/types.ts +40 -40
  88. package/components/u-keyboard/u-keyboard.vue +201 -201
  89. package/components/u-lazy-load/types.ts +37 -37
  90. package/components/u-lazy-load/u-lazy-load.vue +246 -246
  91. package/components/u-line/types.ts +44 -44
  92. package/components/u-line/u-line.vue +68 -68
  93. package/components/u-line-progress/types.ts +58 -58
  94. package/components/u-line-progress/u-line-progress.vue +131 -131
  95. package/components/u-link/types.ts +54 -54
  96. package/components/u-link/u-link.vue +100 -100
  97. package/components/u-loading/types.ts +45 -45
  98. package/components/u-loading/u-loading.vue +106 -106
  99. package/components/u-loading-popup/types.ts +26 -26
  100. package/components/u-loading-popup/u-loading-popup.vue +254 -254
  101. package/components/u-loadmore/types.ts +88 -88
  102. package/components/u-loadmore/u-loadmore.vue +170 -170
  103. package/components/u-mask/types.ts +48 -48
  104. package/components/u-mask/u-mask.vue +113 -113
  105. package/components/u-message-input/types.ts +90 -90
  106. package/components/u-message-input/u-message-input.vue +283 -283
  107. package/components/u-modal/service.ts +48 -48
  108. package/components/u-modal/types.ts +139 -139
  109. package/components/u-modal/u-modal.vue +465 -465
  110. package/components/u-navbar/types.ts +104 -104
  111. package/components/u-navbar/u-navbar.vue +268 -268
  112. package/components/u-no-network/image.ts +2 -2
  113. package/components/u-no-network/types.ts +29 -29
  114. package/components/u-no-network/u-no-network.vue +313 -313
  115. package/components/u-notice-bar/types.ts +111 -111
  116. package/components/u-notice-bar/u-notice-bar.vue +191 -191
  117. package/components/u-number-box/types.ts +42 -42
  118. package/components/u-number-box/u-number-box.vue +322 -322
  119. package/components/u-number-keyboard/types.ts +26 -26
  120. package/components/u-number-keyboard/u-number-keyboard.vue +189 -189
  121. package/components/u-pagination/types.ts +38 -38
  122. package/components/u-pagination/u-pagination.vue +102 -102
  123. package/components/u-picker/types.ts +140 -140
  124. package/components/u-picker/u-picker.vue +854 -854
  125. package/components/u-popup/types.ts +64 -64
  126. package/components/u-popup/u-popup.vue +427 -427
  127. package/components/u-radio/types.ts +39 -39
  128. package/components/u-radio/u-radio.vue +349 -349
  129. package/components/u-radio-group/types.ts +40 -40
  130. package/components/u-radio-group/u-radio-group.vue +96 -96
  131. package/components/u-rate/types.ts +50 -50
  132. package/components/u-rate/u-rate.vue +250 -250
  133. package/components/u-read-more/types.ts +46 -46
  134. package/components/u-read-more/u-read-more.vue +182 -182
  135. package/components/u-root-portal/u-root-portal.vue +55 -55
  136. package/components/u-row/types.ts +30 -30
  137. package/components/u-row/u-row.vue +105 -105
  138. package/components/u-row-notice/types.ts +49 -49
  139. package/components/u-row-notice/u-row-notice.vue +257 -257
  140. package/components/u-safe-bottom/types.ts +19 -19
  141. package/components/u-safe-bottom/u-safe-bottom.vue +55 -55
  142. package/components/u-search/u-search.vue +297 -297
  143. package/components/u-section/types.ts +42 -42
  144. package/components/u-section/u-section.vue +156 -156
  145. package/components/u-select/types.ts +56 -56
  146. package/components/u-select/u-select.vue +447 -447
  147. package/components/u-skeleton/types.ts +89 -89
  148. package/components/u-skeleton/u-skeleton.vue +253 -253
  149. package/components/u-slider/types.ts +55 -55
  150. package/components/u-slider/u-slider.vue +422 -422
  151. package/components/u-status-bar/types.ts +21 -21
  152. package/components/u-status-bar/u-status-bar.vue +64 -64
  153. package/components/u-step/types.ts +37 -37
  154. package/components/u-step/u-step.vue +292 -292
  155. package/components/u-steps/types.ts +39 -39
  156. package/components/u-steps/u-steps.vue +105 -105
  157. package/components/u-sticky/types.ts +33 -33
  158. package/components/u-sticky/u-sticky.vue +177 -177
  159. package/components/u-subsection/types.ts +46 -46
  160. package/components/u-subsection/u-subsection.vue +358 -358
  161. package/components/u-swipe-action/types.ts +60 -60
  162. package/components/u-swipe-action/u-swipe-action.vue +276 -276
  163. package/components/u-swiper/types.ts +57 -57
  164. package/components/u-swiper/u-swiper.vue +308 -308
  165. package/components/u-switch/types.ts +39 -39
  166. package/components/u-switch/u-switch.vue +212 -212
  167. package/components/u-tabbar/types.ts +57 -57
  168. package/components/u-tabbar/u-tabbar.vue +480 -480
  169. package/components/u-table/types.ts +35 -35
  170. package/components/u-table/u-table.vue +67 -67
  171. package/components/u-tabs/types.ts +64 -64
  172. package/components/u-tabs/u-tabs.vue +328 -328
  173. package/components/u-tabs-swiper/types.ts +64 -64
  174. package/components/u-tabs-swiper/u-tabs-swiper.vue +407 -407
  175. package/components/u-tag/types.ts +47 -47
  176. package/components/u-tag/u-tag.vue +276 -276
  177. package/components/u-td/types.ts +22 -22
  178. package/components/u-td/u-td.vue +65 -65
  179. package/components/u-text/types.ts +80 -80
  180. package/components/u-text/u-text.vue +355 -355
  181. package/components/u-textarea/types.ts +105 -105
  182. package/components/u-textarea/u-textarea.vue +450 -450
  183. package/components/u-th/types.ts +22 -22
  184. package/components/u-th/u-th.vue +63 -63
  185. package/components/u-time-line/u-time-line.vue +64 -64
  186. package/components/u-time-line-item/types.ts +24 -24
  187. package/components/u-time-line-item/u-time-line-item.vue +89 -89
  188. package/components/u-toast/service.ts +40 -40
  189. package/components/u-toast/types.ts +54 -54
  190. package/components/u-toast/u-toast.vue +385 -385
  191. package/components/u-top-tips/types.ts +25 -25
  192. package/components/u-top-tips/u-top-tips.vue +130 -130
  193. package/components/u-tr/types.ts +19 -19
  194. package/components/u-tr/u-tr.vue +39 -39
  195. package/components/u-transition/types.ts +43 -43
  196. package/components/u-transition/u-transition.vue +437 -437
  197. package/components/u-upload/types.ts +171 -171
  198. package/components/u-upload/u-upload.vue +1605 -1605
  199. package/components/u-verification-code/types.ts +32 -32
  200. package/components/u-verification-code/u-verification-code.vue +183 -183
  201. package/components/u-waterfall/types.ts +26 -26
  202. package/components/u-waterfall/u-waterfall.vue +188 -188
  203. package/iconfont.css +913 -913
  204. package/index.scss +26 -26
  205. package/libs/config/color.ts +9 -9
  206. package/libs/config/config.ts +59 -59
  207. package/libs/config/theme-tokens.ts +102 -102
  208. package/libs/config/zIndex.ts +32 -32
  209. package/libs/css/color.scss +155 -155
  210. package/libs/css/common.scss +183 -183
  211. package/libs/css/style.components.scss +16 -16
  212. package/libs/css/style.h5.scss +8 -8
  213. package/libs/css/style.mp.scss +68 -68
  214. package/libs/css/style.nvue.scss +15 -15
  215. package/libs/css/style.theme.scss +56 -56
  216. package/libs/css/style.vue.scss +188 -188
  217. package/libs/function/$parent.ts +24 -24
  218. package/libs/function/addUnit.ts +50 -50
  219. package/libs/function/clipboard.ts +73 -73
  220. package/libs/function/color.ts +28 -28
  221. package/libs/function/colorGradient.ts +139 -139
  222. package/libs/function/debounce.ts +28 -28
  223. package/libs/function/deepClone.ts +39 -39
  224. package/libs/function/deepMerge.ts +35 -35
  225. package/libs/function/getParent.ts +63 -63
  226. package/libs/function/getRect.ts +26 -26
  227. package/libs/function/guid.ts +42 -42
  228. package/libs/function/md5.ts +403 -403
  229. package/libs/function/parent.ts +21 -21
  230. package/libs/function/queryParams.ts +64 -64
  231. package/libs/function/random.ts +16 -16
  232. package/libs/function/randomArray.ts +11 -11
  233. package/libs/function/route.ts +118 -118
  234. package/libs/function/styleUtils.ts +83 -83
  235. package/libs/function/sys.ts +15 -15
  236. package/libs/function/test.ts +289 -289
  237. package/libs/function/throttle.ts +31 -31
  238. package/libs/function/timeFormat.ts +55 -55
  239. package/libs/function/timeFrom.ts +48 -48
  240. package/libs/function/toast.ts +14 -14
  241. package/libs/function/trim.ts +21 -21
  242. package/libs/function/type2icon.ts +38 -38
  243. package/libs/hooks/index.ts +10 -10
  244. package/libs/hooks/useColor.ts +61 -61
  245. package/libs/hooks/useCompRelation.ts +424 -424
  246. package/libs/hooks/useDebounce.ts +15 -15
  247. package/libs/hooks/useEmitter.ts +79 -79
  248. package/libs/hooks/useLocale.ts +34 -34
  249. package/libs/hooks/useModal.ts +131 -131
  250. package/libs/hooks/useRect.ts +40 -40
  251. package/libs/hooks/useRouter.ts +173 -173
  252. package/libs/hooks/useTheme.ts +173 -173
  253. package/libs/hooks/useThrottle.ts +16 -16
  254. package/libs/hooks/useToast.ts +115 -115
  255. package/libs/index.ts +349 -349
  256. package/libs/request/auto-http.ts +76 -76
  257. package/libs/request/index.ts +301 -301
  258. package/libs/store/index.ts +88 -88
  259. package/libs/util/async-validator.d.ts +75 -75
  260. package/libs/util/async-validator.js +1 -1
  261. package/libs/util/calendar.d.ts +57 -57
  262. package/libs/util/canvas-2d.ts +182 -182
  263. package/libs/util/config-provider.ts +804 -804
  264. package/libs/util/emitter.ts +112 -112
  265. package/libs/util/mitt.ts +118 -118
  266. package/libs/util/system-theme.ts +25 -25
  267. package/locale/index.ts +2 -2
  268. package/locale/lang/en-US.ts +136 -136
  269. package/locale/lang/zh-CN.ts +136 -136
  270. package/package.json +1 -1
  271. package/plugins/root/page.ts +77 -77
  272. package/plugins/root/root.ts +53 -53
  273. package/theme.scss +149 -149
  274. package/types/components.d.ts +105 -105
  275. package/types/global.d.ts +470 -470
  276. package/types/ignore-errors.d.ts +30 -30
  277. package/types/index.d.ts +15 -15
  278. package/types/uni-app.d.ts +63 -63
@@ -1,171 +1,171 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
2
- import type { ImgMode, UploadSizeType, UploadSourceType, UploadAcceptType, UploadFileItem } from '../../types/global';
3
-
4
- /**
5
- * UploadProps upload props 类型定义
6
- * @description 文件上传组件,支持多种自定义参数
7
- */
8
- export const UploadProps = {
9
- /** 自定义根节点样式 */
10
- customStyle: {
11
- type: [String, Object] as PropType<string | Record<string, any>>,
12
- default: () => ({})
13
- },
14
- /** 自定义根节点样式类 */
15
- customClass: {
16
- type: String as unknown as PropType<string>,
17
- default: ''
18
- },
19
- /** 选择器宽度,单位rpx */
20
- width: { type: [Number, String] as PropType<number | string>, default: 200 },
21
- /** 选择器高度,单位rpx */
22
- height: { type: [Number, String] as PropType<number | string>, default: 200 },
23
- /** 最大上传数量 */
24
- maxCount: { type: [Number, String] as PropType<number | string>, default: 52 },
25
- /** 是否可删除 */
26
- deletable: { type: Boolean, default: true },
27
- /**
28
- * 上传组件的展示模式
29
- * @description grid-网格模式(默认), list-列表模式
30
- * @default 'grid'
31
- */
32
- mode: { type: String as PropType<'grid' | 'list'>, default: 'grid' },
33
- /** 是否显示上传列表 */
34
- showUploadList: { type: Boolean, default: true },
35
- /** 是否显示上传进度 */
36
- showProgress: { type: Boolean, default: true },
37
- /** 删除按钮背景色 */
38
- delBgColor: { type: String, default: 'var(--u-type-error)' },
39
- /** 删除按钮图标 */
40
- delIcon: { type: String, default: 'close' },
41
- /** 删除按钮颜色 */
42
- delColor: { type: String, default: 'var(--u-white-color)' },
43
- /** 图片裁剪模式 */
44
- imageMode: { type: String as PropType<ImgMode>, default: 'aspectFill' },
45
- /** 是否自定义上传按钮 */
46
- customBtn: { type: Boolean, default: false },
47
- /** 上传按钮文字 */
48
- uploadText: { type: String, default: '' },
49
- /** 上传地址 */
50
- action: { type: String, default: '' },
51
- /** 是否禁用 */
52
- disabled: { type: Boolean, default: false },
53
- /** 索引值,在各个回调事件中的最后一个参数返回,用于区别是哪一个组件的事件 */
54
- index: { type: [String, Number] as PropType<string | number>, default: '' },
55
- /** 请求头对象 */
56
- header: { type: Object as PropType<Record<string, any>>, default: () => ({}) },
57
- /** formData对象 */
58
- formData: { type: Object as PropType<Record<string, any>>, default: () => ({}) },
59
- /** 文件字段名 */
60
- name: { type: String, default: 'file' },
61
- /** 压缩/原图,微信小程序有效 */
62
- sizeType: { type: Array as PropType<UploadSizeType[]>, default: () => ['original', 'compressed'] },
63
- /** 来源,相册/相机 */
64
- sourceType: { type: Array as PropType<UploadSourceType[]>, default: () => ['album', 'camera'] },
65
- /** 是否可预览大图 */
66
- previewFullImage: { type: Boolean, default: true },
67
- /** 是否可预览文件 */
68
- previewFile: { type: Boolean, default: true },
69
- /** 是否支持多选 */
70
- multiple: { type: Boolean, default: true },
71
- /** 单个文件最大大小,单位B(byte),默认不限制 */
72
- maxSize: { type: [Number, String] as PropType<number | string>, default: Number.MAX_VALUE },
73
- /**
74
- * 文件列表(v-model 双向绑定)
75
- * @description 推荐使用 v-model 替代 :file-list
76
- */
77
- modelValue: { type: Array as PropType<UploadFileItem[]>, default: () => [] },
78
- /**
79
- * 文件列表(初始值,向后兼容)
80
- * @deprecated 请使用 v-model
81
- */
82
- fileList: { type: Array as PropType<UploadFileItem[]>, default: () => [] },
83
- /** 限制文件类型 */
84
- /** 允许上传的文件后缀 */
85
- /** 支付宝小程序真机选择图片的后缀为"image" */
86
- /** https://opendocs.alipay.com/mini/api/media-image */
87
- limitType: { type: Array as PropType<string[]>, default: () => [] },
88
- /** 是否自动上传 */
89
- autoUpload: { type: Boolean, default: true },
90
- /** 是否显示提示 */
91
- showTips: { type: Boolean, default: true },
92
- /** 是否显示确认弹窗 */
93
- showConfirm: { type: Boolean, default: true },
94
- /** 上传前钩子,返回true或Promise */
95
- beforeUpload: {
96
- type: Function as unknown as PropType<
97
- ((index: number, files: UploadFileItem[]) => boolean | Promise<any>) | null
98
- >,
99
- default: null
100
- },
101
- /** 删除前钩子,返回true或Promise */
102
- beforeRemove: {
103
- type: Function as unknown as PropType<
104
- ((index: number, files: UploadFileItem[]) => boolean | Promise<any>) | null
105
- >,
106
- default: null
107
- },
108
- /** 如果上传后的返回值为json字符串,是否转为json格式 */
109
- toJson: { type: Boolean, default: true },
110
- /**
111
- * 接受上传的文件类型
112
- * @description image-图片(默认), video-视频, file-文件, media-媒体(图片+视频), all-所有文件
113
- * @default 'image'
114
- */
115
- accept: { type: String as PropType<UploadAcceptType>, default: 'image' },
116
- /**
117
- * 是否显示文件名
118
- * @default true
119
- */
120
- showFileName: { type: Boolean, default: true },
121
- /**
122
- * 是否显示文件大小
123
- * @default false
124
- */
125
- showFileSize: { type: Boolean, default: false },
126
- /**
127
- * 文件类型图标映射配置
128
- * @description 用于自定义不同文件类型的图标
129
- */
130
- fileIconMap: {
131
- type: Object as PropType<Record<string, { name: string; color?: string }>>,
132
- default: () => ({})
133
- },
134
- /**
135
- * 选择视频时是否压缩
136
- * @default true
137
- */
138
- compressed: { type: Boolean, default: true },
139
- /**
140
- * 选择视频时拍摄最长时长,单位秒
141
- * @default 60
142
- */
143
- maxDuration: { type: Number, default: 60 },
144
- /**
145
- * 选择视频时,是前置还是后置摄像头
146
- * @default 'back'
147
- */
148
- camera: { type: String as PropType<'front' | 'back'>, default: 'back' },
149
- /**
150
- * 选择文件时的扩展名过滤
151
- * @description 仅在 accept='file' 或 accept='all' 时有效
152
- */
153
- extension: { type: Array as PropType<string[]>, default: () => [] },
154
- /**
155
- * 图片/图标展示形状
156
- * @description 可选值:square-方形(默认), circle-圆形。在 grid 模式下作用于图片和添加按钮,在 list 模式下作用于图标
157
- * @default 'square'
158
- */
159
- imageShape: { type: String as PropType<'square' | 'circle'>, default: 'square' },
160
- /**
161
- * 是否使用自定义选择文件
162
- * @description 设置为 true 时,点击选择文件会触发 on-choose 事件,不会调用默认的文件选择 API,用户可自行处理文件选择逻辑,然后通过 addFiles 方法将文件添加到列表
163
- * @default false
164
- */
165
- customChoose: { type: Boolean, default: false }
166
- };
167
-
168
- export type UploadProps = ExtractPropTypes<typeof UploadProps>;
169
-
170
- // 重新导出全局类型,方便从组件入口导入
171
- export type { UploadAcceptType, UploadFileItem } from '../../types/global';
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+ import type { ImgMode, UploadSizeType, UploadSourceType, UploadAcceptType, UploadFileItem } from '../../types/global';
3
+
4
+ /**
5
+ * UploadProps upload props 类型定义
6
+ * @description 文件上传组件,支持多种自定义参数
7
+ */
8
+ export const UploadProps = {
9
+ /** 自定义根节点样式 */
10
+ customStyle: {
11
+ type: [String, Object] as PropType<string | Record<string, any>>,
12
+ default: () => ({})
13
+ },
14
+ /** 自定义根节点样式类 */
15
+ customClass: {
16
+ type: String as unknown as PropType<string>,
17
+ default: ''
18
+ },
19
+ /** 选择器宽度,单位rpx */
20
+ width: { type: [Number, String] as PropType<number | string>, default: 200 },
21
+ /** 选择器高度,单位rpx */
22
+ height: { type: [Number, String] as PropType<number | string>, default: 200 },
23
+ /** 最大上传数量 */
24
+ maxCount: { type: [Number, String] as PropType<number | string>, default: 52 },
25
+ /** 是否可删除 */
26
+ deletable: { type: Boolean, default: true },
27
+ /**
28
+ * 上传组件的展示模式
29
+ * @description grid-网格模式(默认), list-列表模式
30
+ * @default 'grid'
31
+ */
32
+ mode: { type: String as PropType<'grid' | 'list'>, default: 'grid' },
33
+ /** 是否显示上传列表 */
34
+ showUploadList: { type: Boolean, default: true },
35
+ /** 是否显示上传进度 */
36
+ showProgress: { type: Boolean, default: true },
37
+ /** 删除按钮背景色 */
38
+ delBgColor: { type: String, default: 'var(--u-type-error)' },
39
+ /** 删除按钮图标 */
40
+ delIcon: { type: String, default: 'close' },
41
+ /** 删除按钮颜色 */
42
+ delColor: { type: String, default: 'var(--u-white-color)' },
43
+ /** 图片裁剪模式 */
44
+ imageMode: { type: String as PropType<ImgMode>, default: 'aspectFill' },
45
+ /** 是否自定义上传按钮 */
46
+ customBtn: { type: Boolean, default: false },
47
+ /** 上传按钮文字 */
48
+ uploadText: { type: String, default: '' },
49
+ /** 上传地址 */
50
+ action: { type: String, default: '' },
51
+ /** 是否禁用 */
52
+ disabled: { type: Boolean, default: false },
53
+ /** 索引值,在各个回调事件中的最后一个参数返回,用于区别是哪一个组件的事件 */
54
+ index: { type: [String, Number] as PropType<string | number>, default: '' },
55
+ /** 请求头对象 */
56
+ header: { type: Object as PropType<Record<string, any>>, default: () => ({}) },
57
+ /** formData对象 */
58
+ formData: { type: Object as PropType<Record<string, any>>, default: () => ({}) },
59
+ /** 文件字段名 */
60
+ name: { type: String, default: 'file' },
61
+ /** 压缩/原图,微信小程序有效 */
62
+ sizeType: { type: Array as PropType<UploadSizeType[]>, default: () => ['original', 'compressed'] },
63
+ /** 来源,相册/相机 */
64
+ sourceType: { type: Array as PropType<UploadSourceType[]>, default: () => ['album', 'camera'] },
65
+ /** 是否可预览大图 */
66
+ previewFullImage: { type: Boolean, default: true },
67
+ /** 是否可预览文件 */
68
+ previewFile: { type: Boolean, default: true },
69
+ /** 是否支持多选 */
70
+ multiple: { type: Boolean, default: true },
71
+ /** 单个文件最大大小,单位B(byte),默认不限制 */
72
+ maxSize: { type: [Number, String] as PropType<number | string>, default: Number.MAX_VALUE },
73
+ /**
74
+ * 文件列表(v-model 双向绑定)
75
+ * @description 推荐使用 v-model 替代 :file-list
76
+ */
77
+ modelValue: { type: Array as PropType<UploadFileItem[]>, default: () => [] },
78
+ /**
79
+ * 文件列表(初始值,向后兼容)
80
+ * @deprecated 请使用 v-model
81
+ */
82
+ fileList: { type: Array as PropType<UploadFileItem[]>, default: () => [] },
83
+ /** 限制文件类型 */
84
+ /** 允许上传的文件后缀 */
85
+ /** 支付宝小程序真机选择图片的后缀为"image" */
86
+ /** https://opendocs.alipay.com/mini/api/media-image */
87
+ limitType: { type: Array as PropType<string[]>, default: () => [] },
88
+ /** 是否自动上传 */
89
+ autoUpload: { type: Boolean, default: true },
90
+ /** 是否显示提示 */
91
+ showTips: { type: Boolean, default: true },
92
+ /** 是否显示确认弹窗 */
93
+ showConfirm: { type: Boolean, default: true },
94
+ /** 上传前钩子,返回true或Promise */
95
+ beforeUpload: {
96
+ type: Function as unknown as PropType<
97
+ ((index: number, files: UploadFileItem[]) => boolean | Promise<any>) | null
98
+ >,
99
+ default: null
100
+ },
101
+ /** 删除前钩子,返回true或Promise */
102
+ beforeRemove: {
103
+ type: Function as unknown as PropType<
104
+ ((index: number, files: UploadFileItem[]) => boolean | Promise<any>) | null
105
+ >,
106
+ default: null
107
+ },
108
+ /** 如果上传后的返回值为json字符串,是否转为json格式 */
109
+ toJson: { type: Boolean, default: true },
110
+ /**
111
+ * 接受上传的文件类型
112
+ * @description image-图片(默认), video-视频, file-文件, media-媒体(图片+视频), all-所有文件
113
+ * @default 'image'
114
+ */
115
+ accept: { type: String as PropType<UploadAcceptType>, default: 'image' },
116
+ /**
117
+ * 是否显示文件名
118
+ * @default true
119
+ */
120
+ showFileName: { type: Boolean, default: true },
121
+ /**
122
+ * 是否显示文件大小
123
+ * @default false
124
+ */
125
+ showFileSize: { type: Boolean, default: false },
126
+ /**
127
+ * 文件类型图标映射配置
128
+ * @description 用于自定义不同文件类型的图标
129
+ */
130
+ fileIconMap: {
131
+ type: Object as PropType<Record<string, { name: string; color?: string }>>,
132
+ default: () => ({})
133
+ },
134
+ /**
135
+ * 选择视频时是否压缩
136
+ * @default true
137
+ */
138
+ compressed: { type: Boolean, default: true },
139
+ /**
140
+ * 选择视频时拍摄最长时长,单位秒
141
+ * @default 60
142
+ */
143
+ maxDuration: { type: Number, default: 60 },
144
+ /**
145
+ * 选择视频时,是前置还是后置摄像头
146
+ * @default 'back'
147
+ */
148
+ camera: { type: String as PropType<'front' | 'back'>, default: 'back' },
149
+ /**
150
+ * 选择文件时的扩展名过滤
151
+ * @description 仅在 accept='file' 或 accept='all' 时有效
152
+ */
153
+ extension: { type: Array as PropType<string[]>, default: () => [] },
154
+ /**
155
+ * 图片/图标展示形状
156
+ * @description 可选值:square-方形(默认), circle-圆形。在 grid 模式下作用于图片和添加按钮,在 list 模式下作用于图标
157
+ * @default 'square'
158
+ */
159
+ imageShape: { type: String as PropType<'square' | 'circle'>, default: 'square' },
160
+ /**
161
+ * 是否使用自定义选择文件
162
+ * @description 设置为 true 时,点击选择文件会触发 on-choose 事件,不会调用默认的文件选择 API,用户可自行处理文件选择逻辑,然后通过 addFiles 方法将文件添加到列表
163
+ * @default false
164
+ */
165
+ customChoose: { type: Boolean, default: false }
166
+ };
167
+
168
+ export type UploadProps = ExtractPropTypes<typeof UploadProps>;
169
+
170
+ // 重新导出全局类型,方便从组件入口导入
171
+ export type { UploadAcceptType, UploadFileItem } from '../../types/global';