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.
- package/changelog.md +1778 -1768
- package/components/u-action-sheet/types.ts +52 -52
- package/components/u-action-sheet/u-action-sheet.vue +196 -196
- package/components/u-action-sheet-item/types.ts +35 -35
- package/components/u-action-sheet-item/u-action-sheet-item.vue +85 -85
- package/components/u-alert-tips/types.ts +49 -49
- package/components/u-alert-tips/u-alert-tips.vue +239 -239
- package/components/u-avatar/types.ts +44 -44
- package/components/u-avatar/u-avatar.vue +218 -218
- package/components/u-avatar-cropper/types.ts +23 -23
- package/components/u-avatar-cropper/u-avatar-cropper.vue +299 -299
- package/components/u-avatar-cropper/weCropper.d.ts +62 -62
- package/components/u-avatar-cropper/weCropper.js +1281 -1281
- package/components/u-avatar-cropper/weCropper.ts +1276 -1276
- package/components/u-back-top/types.ts +44 -44
- package/components/u-back-top/u-back-top.vue +141 -141
- package/components/u-badge/types.ts +46 -46
- package/components/u-badge/u-badge.vue +153 -153
- package/components/u-button/types.ts +76 -76
- package/components/u-button/u-button.vue +608 -608
- package/components/u-calendar/types.ts +126 -126
- package/components/u-calendar/u-calendar.vue +1243 -1243
- package/components/u-car-keyboard/types.ts +22 -22
- package/components/u-car-keyboard/u-car-keyboard.vue +263 -263
- package/components/u-card/types.ts +69 -69
- package/components/u-card/u-card.vue +210 -210
- package/components/u-cell-group/types.ts +27 -27
- package/components/u-cell-group/u-cell-group.vue +60 -60
- package/components/u-cell-item/types.ts +64 -64
- package/components/u-cell-item/u-cell-item.vue +221 -221
- package/components/u-checkbox/types.ts +45 -45
- package/components/u-checkbox/u-checkbox.vue +363 -363
- package/components/u-checkbox-group/types.ts +45 -45
- package/components/u-checkbox-group/u-checkbox-group.vue +172 -172
- package/components/u-circle-progress/types.ts +63 -63
- package/components/u-circle-progress/u-circle-progress.vue +299 -299
- package/components/u-city-select/types.ts +30 -30
- package/components/u-city-select/u-city-select.vue +281 -281
- package/components/u-col/types.ts +40 -40
- package/components/u-col/u-col.vue +142 -142
- package/components/u-collapse/types.ts +41 -41
- package/components/u-collapse/u-collapse.vue +190 -190
- package/components/u-collapse-item/types.ts +35 -35
- package/components/u-collapse-item/u-collapse-item.vue +291 -291
- package/components/u-column-notice/types.ts +58 -58
- package/components/u-column-notice/u-column-notice.vue +223 -223
- package/components/u-config-provider/types.ts +53 -53
- package/components/u-config-provider/u-config-provider.vue +185 -185
- package/components/u-count-down/types.ts +52 -52
- package/components/u-count-down/u-count-down.vue +288 -288
- package/components/u-count-to/types.ts +42 -42
- package/components/u-count-to/u-count-to.vue +266 -266
- package/components/u-divider/types.ts +41 -41
- package/components/u-divider/u-divider.vue +146 -146
- package/components/u-dropdown/types.ts +67 -67
- package/components/u-dropdown/u-dropdown.vue +436 -436
- package/components/u-dropdown-item/types.ts +40 -40
- package/components/u-dropdown-item/u-dropdown-item.vue +124 -124
- package/components/u-empty/types.ts +46 -46
- package/components/u-empty/u-empty.vue +109 -109
- package/components/u-fab/types.ts +83 -83
- package/components/u-fab/u-fab.vue +330 -330
- package/components/u-field/types.ts +81 -81
- package/components/u-field/u-field.vue +398 -398
- package/components/u-form/types.ts +39 -39
- package/components/u-form/u-form.vue +175 -135
- package/components/u-form-item/types.ts +95 -95
- package/components/u-form-item/u-form-item.vue +563 -563
- package/components/u-full-screen/types.ts +26 -26
- package/components/u-full-screen/u-full-screen.vue +100 -100
- package/components/u-gap/types.ts +28 -28
- package/components/u-gap/u-gap.vue +50 -50
- package/components/u-grid/types.ts +29 -29
- package/components/u-grid/u-grid.vue +91 -91
- package/components/u-grid-item/types.ts +24 -24
- package/components/u-grid-item/u-grid-item.vue +130 -130
- package/components/u-icon/types.ts +69 -69
- package/components/u-icon/u-icon.vue +301 -301
- package/components/u-image/types.ts +61 -61
- package/components/u-image/u-image.vue +245 -245
- package/components/u-index-anchor/types.ts +24 -24
- package/components/u-index-anchor/u-index-anchor.vue +120 -120
- package/components/u-index-list/types.ts +44 -44
- package/components/u-index-list/u-index-list.vue +346 -346
- package/components/u-input/types.ts +165 -165
- package/components/u-input/u-input.vue +453 -453
- package/components/u-keyboard/types.ts +40 -40
- package/components/u-keyboard/u-keyboard.vue +201 -201
- package/components/u-lazy-load/types.ts +37 -37
- package/components/u-lazy-load/u-lazy-load.vue +246 -246
- package/components/u-line/types.ts +44 -44
- package/components/u-line/u-line.vue +68 -68
- package/components/u-line-progress/types.ts +58 -58
- package/components/u-line-progress/u-line-progress.vue +131 -131
- package/components/u-link/types.ts +54 -54
- package/components/u-link/u-link.vue +100 -100
- package/components/u-loading/types.ts +45 -45
- package/components/u-loading/u-loading.vue +106 -106
- package/components/u-loading-popup/types.ts +26 -26
- package/components/u-loading-popup/u-loading-popup.vue +254 -254
- package/components/u-loadmore/types.ts +88 -88
- package/components/u-loadmore/u-loadmore.vue +170 -170
- package/components/u-mask/types.ts +48 -48
- package/components/u-mask/u-mask.vue +113 -113
- package/components/u-message-input/types.ts +90 -90
- package/components/u-message-input/u-message-input.vue +283 -283
- package/components/u-modal/service.ts +48 -48
- package/components/u-modal/types.ts +139 -139
- package/components/u-modal/u-modal.vue +465 -465
- package/components/u-navbar/types.ts +104 -104
- package/components/u-navbar/u-navbar.vue +268 -268
- package/components/u-no-network/image.ts +2 -2
- package/components/u-no-network/types.ts +29 -29
- package/components/u-no-network/u-no-network.vue +313 -313
- package/components/u-notice-bar/types.ts +111 -111
- package/components/u-notice-bar/u-notice-bar.vue +191 -191
- package/components/u-number-box/types.ts +42 -42
- package/components/u-number-box/u-number-box.vue +322 -322
- package/components/u-number-keyboard/types.ts +26 -26
- package/components/u-number-keyboard/u-number-keyboard.vue +189 -189
- package/components/u-pagination/types.ts +38 -38
- package/components/u-pagination/u-pagination.vue +102 -102
- package/components/u-picker/types.ts +140 -140
- package/components/u-picker/u-picker.vue +854 -854
- package/components/u-popup/types.ts +64 -64
- package/components/u-popup/u-popup.vue +427 -427
- package/components/u-radio/types.ts +39 -39
- package/components/u-radio/u-radio.vue +349 -349
- package/components/u-radio-group/types.ts +40 -40
- package/components/u-radio-group/u-radio-group.vue +96 -96
- package/components/u-rate/types.ts +50 -50
- package/components/u-rate/u-rate.vue +250 -250
- package/components/u-read-more/types.ts +46 -46
- package/components/u-read-more/u-read-more.vue +182 -182
- package/components/u-root-portal/u-root-portal.vue +55 -55
- package/components/u-row/types.ts +30 -30
- package/components/u-row/u-row.vue +105 -105
- package/components/u-row-notice/types.ts +49 -49
- package/components/u-row-notice/u-row-notice.vue +257 -257
- package/components/u-safe-bottom/types.ts +19 -19
- package/components/u-safe-bottom/u-safe-bottom.vue +55 -55
- package/components/u-search/u-search.vue +297 -297
- package/components/u-section/types.ts +42 -42
- package/components/u-section/u-section.vue +156 -156
- package/components/u-select/types.ts +56 -56
- package/components/u-select/u-select.vue +447 -447
- package/components/u-skeleton/types.ts +89 -89
- package/components/u-skeleton/u-skeleton.vue +253 -253
- package/components/u-slider/types.ts +55 -55
- package/components/u-slider/u-slider.vue +422 -422
- package/components/u-status-bar/types.ts +21 -21
- package/components/u-status-bar/u-status-bar.vue +64 -64
- package/components/u-step/types.ts +37 -37
- package/components/u-step/u-step.vue +292 -292
- package/components/u-steps/types.ts +39 -39
- package/components/u-steps/u-steps.vue +105 -105
- package/components/u-sticky/types.ts +33 -33
- package/components/u-sticky/u-sticky.vue +177 -177
- package/components/u-subsection/types.ts +46 -46
- package/components/u-subsection/u-subsection.vue +358 -358
- package/components/u-swipe-action/types.ts +60 -60
- package/components/u-swipe-action/u-swipe-action.vue +276 -276
- package/components/u-swiper/types.ts +57 -57
- package/components/u-swiper/u-swiper.vue +308 -308
- package/components/u-switch/types.ts +39 -39
- package/components/u-switch/u-switch.vue +212 -212
- package/components/u-tabbar/types.ts +57 -57
- package/components/u-tabbar/u-tabbar.vue +480 -480
- package/components/u-table/types.ts +35 -35
- package/components/u-table/u-table.vue +67 -67
- package/components/u-tabs/types.ts +64 -64
- package/components/u-tabs/u-tabs.vue +328 -328
- package/components/u-tabs-swiper/types.ts +64 -64
- package/components/u-tabs-swiper/u-tabs-swiper.vue +407 -407
- package/components/u-tag/types.ts +47 -47
- package/components/u-tag/u-tag.vue +276 -276
- package/components/u-td/types.ts +22 -22
- package/components/u-td/u-td.vue +65 -65
- package/components/u-text/types.ts +80 -80
- package/components/u-text/u-text.vue +355 -355
- package/components/u-textarea/types.ts +105 -105
- package/components/u-textarea/u-textarea.vue +450 -450
- package/components/u-th/types.ts +22 -22
- package/components/u-th/u-th.vue +63 -63
- package/components/u-time-line/u-time-line.vue +64 -64
- package/components/u-time-line-item/types.ts +24 -24
- package/components/u-time-line-item/u-time-line-item.vue +89 -89
- package/components/u-toast/service.ts +40 -40
- package/components/u-toast/types.ts +54 -54
- package/components/u-toast/u-toast.vue +385 -385
- package/components/u-top-tips/types.ts +25 -25
- package/components/u-top-tips/u-top-tips.vue +130 -130
- package/components/u-tr/types.ts +19 -19
- package/components/u-tr/u-tr.vue +39 -39
- package/components/u-transition/types.ts +43 -43
- package/components/u-transition/u-transition.vue +437 -437
- package/components/u-upload/types.ts +171 -171
- package/components/u-upload/u-upload.vue +1605 -1605
- package/components/u-verification-code/types.ts +32 -32
- package/components/u-verification-code/u-verification-code.vue +183 -183
- package/components/u-waterfall/types.ts +26 -26
- package/components/u-waterfall/u-waterfall.vue +188 -188
- package/iconfont.css +913 -913
- package/index.scss +26 -26
- package/libs/config/color.ts +9 -9
- package/libs/config/config.ts +59 -59
- package/libs/config/theme-tokens.ts +102 -102
- package/libs/config/zIndex.ts +32 -32
- package/libs/css/color.scss +155 -155
- package/libs/css/common.scss +183 -183
- package/libs/css/style.components.scss +16 -16
- package/libs/css/style.h5.scss +8 -8
- package/libs/css/style.mp.scss +68 -68
- package/libs/css/style.nvue.scss +15 -15
- package/libs/css/style.theme.scss +56 -56
- package/libs/css/style.vue.scss +188 -188
- package/libs/function/$parent.ts +24 -24
- package/libs/function/addUnit.ts +50 -50
- package/libs/function/clipboard.ts +73 -73
- package/libs/function/color.ts +28 -28
- package/libs/function/colorGradient.ts +139 -139
- package/libs/function/debounce.ts +28 -28
- package/libs/function/deepClone.ts +39 -39
- package/libs/function/deepMerge.ts +35 -35
- package/libs/function/getParent.ts +63 -63
- package/libs/function/getRect.ts +26 -26
- package/libs/function/guid.ts +42 -42
- package/libs/function/md5.ts +403 -403
- package/libs/function/parent.ts +21 -21
- package/libs/function/queryParams.ts +64 -64
- package/libs/function/random.ts +16 -16
- package/libs/function/randomArray.ts +11 -11
- package/libs/function/route.ts +118 -118
- package/libs/function/styleUtils.ts +83 -83
- package/libs/function/sys.ts +15 -15
- package/libs/function/test.ts +289 -289
- package/libs/function/throttle.ts +31 -31
- package/libs/function/timeFormat.ts +55 -55
- package/libs/function/timeFrom.ts +48 -48
- package/libs/function/toast.ts +14 -14
- package/libs/function/trim.ts +21 -21
- package/libs/function/type2icon.ts +38 -38
- package/libs/hooks/index.ts +10 -10
- package/libs/hooks/useColor.ts +61 -61
- package/libs/hooks/useCompRelation.ts +424 -424
- package/libs/hooks/useDebounce.ts +15 -15
- package/libs/hooks/useEmitter.ts +79 -79
- package/libs/hooks/useLocale.ts +34 -34
- package/libs/hooks/useModal.ts +131 -131
- package/libs/hooks/useRect.ts +40 -40
- package/libs/hooks/useRouter.ts +173 -173
- package/libs/hooks/useTheme.ts +173 -173
- package/libs/hooks/useThrottle.ts +16 -16
- package/libs/hooks/useToast.ts +115 -115
- package/libs/index.ts +349 -349
- package/libs/request/auto-http.ts +76 -76
- package/libs/request/index.ts +301 -301
- package/libs/store/index.ts +88 -88
- package/libs/util/async-validator.d.ts +75 -75
- package/libs/util/async-validator.js +1 -1
- package/libs/util/calendar.d.ts +57 -57
- package/libs/util/canvas-2d.ts +182 -182
- package/libs/util/config-provider.ts +804 -804
- package/libs/util/emitter.ts +112 -112
- package/libs/util/mitt.ts +118 -118
- package/libs/util/system-theme.ts +25 -25
- package/locale/index.ts +2 -2
- package/locale/lang/en-US.ts +136 -136
- package/locale/lang/zh-CN.ts +136 -136
- package/package.json +1 -1
- package/plugins/root/page.ts +77 -77
- package/plugins/root/root.ts +53 -53
- package/theme.scss +149 -149
- package/types/components.d.ts +105 -105
- package/types/global.d.ts +470 -470
- package/types/ignore-errors.d.ts +30 -30
- package/types/index.d.ts +15 -15
- 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';
|