@tdesign/uniapp 0.7.2 → 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.
- package/CHANGELOG.md +31 -0
- package/README.md +32 -2
- package/dist/action-sheet/README.md +1 -1
- package/dist/action-sheet/action-sheet.vue +158 -150
- package/dist/action-sheet/props.ts +2 -2
- package/dist/action-sheet/type.ts +1 -1
- package/dist/avatar/avatar.vue +89 -87
- package/dist/avatar-group/avatar-group.vue +69 -67
- package/dist/back-top/back-top.vue +60 -58
- package/dist/badge/badge.vue +69 -59
- package/dist/button/button.vue +121 -116
- package/dist/button/props.ts +2 -2
- package/dist/button/type.ts +1 -1
- package/dist/calendar/calendar-header.vue +4 -4
- package/dist/calendar/calendar.vue +308 -297
- package/dist/calendar/template.vue +1 -1
- package/dist/cascader/README.en-US.md +2 -1
- package/dist/cascader/README.md +2 -1
- package/dist/cascader/cascader.vue +340 -328
- package/dist/cascader/props.ts +6 -1
- package/dist/cascader/type.ts +6 -0
- package/dist/cell/cell.vue +127 -121
- package/dist/cell-group/cell-group.vue +32 -30
- package/dist/check-tag/check-tag.vue +73 -71
- package/dist/checkbox/README.en-US.md +6 -6
- package/dist/checkbox/README.md +5 -5
- package/dist/checkbox/checkbox.vue +127 -127
- package/dist/checkbox/props.ts +6 -6
- package/dist/checkbox/type.ts +6 -4
- package/dist/checkbox-group/checkbox-group.vue +175 -173
- package/dist/checkbox-group/props.ts +6 -6
- package/dist/checkbox-group/type.ts +6 -4
- package/dist/col/col.vue +26 -24
- package/dist/collapse/collapse.vue +83 -81
- package/dist/collapse-panel/collapse-panel.vue +121 -119
- package/dist/collapse-panel/props.ts +4 -4
- package/dist/collapse-panel/type.ts +2 -2
- package/dist/color-picker/README.md +1 -1
- package/dist/color-picker/color-picker.vue +324 -322
- package/dist/color-picker/props.ts +2 -2
- package/dist/color-picker/template.vue +14 -10
- package/dist/common/common.ts +1 -0
- package/dist/common/style/theme/index.css +57 -61
- package/dist/common/utils.js +7 -2
- package/dist/common/validator.js +172 -0
- package/dist/config-provider/README.en-US.md +184 -0
- package/dist/config-provider/README.md +234 -0
- package/dist/config-provider/config-provider.vue +105 -0
- package/dist/config-provider/config-store.js +70 -0
- package/dist/config-provider/props.ts +16 -0
- package/dist/config-provider/reactive-state.js +39 -0
- package/dist/config-provider/type.ts +401 -0
- package/dist/config-provider/use-config.js +29 -0
- package/dist/config-provider/utils.js +29 -0
- package/dist/count-down/count-down.vue +98 -97
- package/dist/date-time-picker/date-time-picker.vue +410 -395
- package/dist/demo/demo.vue +1 -0
- package/dist/dialog/dialog.vue +176 -173
- package/dist/divider/divider.vue +38 -36
- package/dist/draggable/draggable.vue +60 -58
- package/dist/drawer/README.md +1 -1
- package/dist/drawer/drawer.vue +48 -46
- package/dist/dropdown-item/dropdown-item.vue +209 -207
- package/dist/dropdown-item/props.ts +4 -4
- package/dist/dropdown-item/type.ts +3 -3
- package/dist/dropdown-menu/dropdown-menu.vue +93 -99
- package/dist/empty/empty.vue +43 -42
- package/dist/fab/fab.vue +88 -86
- package/dist/footer/footer.vue +36 -34
- package/dist/form/README.en-US.md +17 -24
- package/dist/form/README.md +18 -25
- package/dist/form/form.css +1 -166
- package/dist/form/form.vue +251 -236
- package/dist/form/props.ts +2 -21
- package/dist/form/type.ts +7 -70
- package/dist/form-item/README.en-US.md +4 -5
- package/dist/form-item/README.md +4 -5
- package/dist/form-item/form-item.css +69 -96
- package/dist/form-item/form-item.vue +315 -336
- package/dist/form-item/form-model.ts +125 -173
- package/dist/form-item/props.ts +4 -17
- package/dist/form-item/type.ts +43 -1
- package/dist/grid/grid.vue +53 -51
- package/dist/grid-item/grid-item.vue +121 -119
- package/dist/guide/README.md +1 -1
- package/dist/guide/guide.vue +281 -277
- package/dist/icon/README.md +2 -4
- package/dist/icon/icon.vue +78 -76
- package/dist/image/README.md +1 -1
- package/dist/image/image.vue +103 -101
- package/dist/image-viewer/image-viewer.vue +160 -158
- package/dist/image-viewer/props.ts +2 -2
- package/dist/image-viewer/type.ts +1 -1
- package/dist/index.js +3 -0
- package/dist/indexes/indexes.vue +264 -267
- package/dist/indexes-anchor/indexes-anchor.vue +41 -41
- package/dist/input/input.vue +192 -192
- package/dist/input/props.ts +6 -6
- package/dist/input/type.ts +3 -3
- package/dist/link/link.vue +73 -71
- package/dist/loading/loading.vue +59 -59
- package/dist/locale/ar_KW.ts +157 -0
- package/dist/locale/en_US.ts +146 -0
- package/dist/locale/it_IT.ts +145 -0
- package/dist/locale/ja_JP.ts +132 -0
- package/dist/locale/ko_KR.ts +132 -0
- package/dist/locale/ru_RU.ts +157 -0
- package/dist/locale/zh_CN.ts +133 -0
- package/dist/locale/zh_TW.ts +132 -0
- package/dist/message/message.vue +181 -173
- package/dist/message/props.ts +2 -2
- package/dist/message/type.ts +1 -1
- package/dist/message-item/message-item.vue +192 -184
- package/dist/mixins/using-config.js +39 -0
- package/dist/navbar/navbar.vue +201 -199
- package/dist/notice-bar/notice-bar.vue +175 -171
- package/dist/notice-bar/props.ts +2 -2
- package/dist/notice-bar/type.ts +1 -1
- package/dist/npm/dayjs/esm/locale/ar.js +81 -0
- package/dist/npm/dayjs/esm/locale/it.js +39 -0
- package/dist/overlay/overlay.vue +50 -48
- package/dist/picker/picker.vue +168 -161
- package/dist/picker-item/picker-item.vue +269 -269
- package/dist/popover/README.md +1 -1
- package/dist/popover/popover.vue +262 -261
- package/dist/popover/props.ts +4 -4
- package/dist/popover/type.ts +2 -2
- package/dist/popup/popup.vue +46 -45
- package/dist/progress/README.md +1 -1
- package/dist/progress/progress.vue +76 -76
- package/dist/pull-down-refresh/props.ts +2 -2
- package/dist/pull-down-refresh/pull-down-refresh.vue +240 -234
- package/dist/pull-down-refresh/type.ts +1 -1
- package/dist/qrcode/README.md +1 -1
- package/dist/qrcode/components/qrcode-canvas/qrcode-canvas.vue +340 -338
- package/dist/qrcode/components/qrcode-status/qrcode-status.vue +6 -6
- package/dist/qrcode/qrcode.vue +93 -87
- package/dist/radio/props.ts +6 -6
- package/dist/radio/radio.vue +118 -120
- package/dist/radio/type.ts +3 -3
- package/dist/radio-group/props.ts +4 -4
- package/dist/radio-group/radio-group.vue +136 -134
- package/dist/radio-group/type.ts +4 -4
- package/dist/rate/computed.js +2 -2
- package/dist/rate/props.ts +4 -4
- package/dist/rate/rate.vue +155 -154
- package/dist/rate/type.ts +2 -2
- package/dist/result/result.vue +41 -39
- package/dist/row/row.vue +38 -36
- package/dist/scroll-view/scroll-view.vue +24 -22
- package/dist/search/props.ts +2 -2
- package/dist/search/search.vue +127 -125
- package/dist/search/type.ts +1 -1
- package/dist/side-bar/side-bar.vue +57 -55
- package/dist/side-bar-item/side-bar-item.vue +86 -86
- package/dist/skeleton/skeleton.vue +126 -124
- package/dist/slider/README.md +1 -1
- package/dist/slider/props.ts +2 -2
- package/dist/slider/slider.vue +457 -457
- package/dist/slider/type.ts +1 -1
- package/dist/step-item/step-item.vue +77 -75
- package/dist/stepper/props.ts +2 -2
- package/dist/stepper/stepper.vue +168 -149
- package/dist/stepper/type.ts +1 -1
- package/dist/steps/props.ts +2 -2
- package/dist/steps/steps.vue +83 -81
- package/dist/steps/type.ts +1 -1
- package/dist/sticky/sticky.vue +104 -102
- package/dist/swipe-cell/swipe-cell.vue +91 -89
- package/dist/swiper/README.md +1 -1
- package/dist/swiper/swiper.vue +91 -89
- package/dist/swiper-nav/swiper-nav.vue +38 -36
- package/dist/switch/props.ts +2 -2
- package/dist/switch/switch.vue +62 -62
- package/dist/switch/type.ts +1 -1
- package/dist/tab-bar/tab-bar.vue +88 -86
- package/dist/tab-bar-item/tab-bar-item.vue +85 -82
- package/dist/tab-panel/tab-panel.vue +66 -64
- package/dist/tabs/tabs.vue +294 -287
- package/dist/tag/tag.vue +79 -77
- package/dist/textarea/props.ts +6 -6
- package/dist/textarea/textarea.vue +127 -126
- package/dist/textarea/type.ts +3 -3
- package/dist/toast/toast.vue +107 -106
- package/dist/transition/transition.vue +30 -28
- package/dist/tree-select/tree-select.vue +151 -151
- package/dist/types/config-provider.d.ts +7 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/popover.d.ts +7 -0
- package/dist/upload/README.en-US.md +13 -14
- package/dist/upload/README.md +11 -12
- package/dist/upload/props.ts +2 -4
- package/dist/upload/type.ts +12 -11
- package/dist/upload/upload.css +1 -1
- package/dist/upload/upload.vue +672 -512
- package/dist/watermark/watermark.vue +151 -149
- package/global.d.ts +2 -0
- package/package.json +16 -2
- package/dist/form/form-item-props.ts +0 -56
|
@@ -31,8 +31,8 @@ export default {
|
|
|
31
31
|
},
|
|
32
32
|
/** 系统预设的颜色样例,值为 `null` 或 `[]` 则不显示系统色,值为 `undefined` 会显示组件内置的系统默认色 */
|
|
33
33
|
swatchColors: {
|
|
34
|
-
type: Array,
|
|
35
|
-
default:
|
|
34
|
+
type: [Array, null],
|
|
35
|
+
default: null as TdColorPickerProps['swatchColors'],
|
|
36
36
|
},
|
|
37
37
|
/** 颜色选择器类型。(base 表示仅展示系统预设内容; multiple 表示展示色板和系统预设内容 */
|
|
38
38
|
type: {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
v-if="isMultiple"
|
|
17
17
|
:class="classPrefix + '__saturation'"
|
|
18
18
|
data-type="saturation"
|
|
19
|
-
:style="'background: hsl(
|
|
19
|
+
:style="'' + `background: hsl(${sliderInfo.value}, 100%, 50%)`"
|
|
20
20
|
@touchstart.stop.prevent="onTouchStart"
|
|
21
21
|
@touchmove.stop.prevent="onTouchMove"
|
|
22
22
|
@touchend.stop.prevent="onTouchEnd"
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
<view
|
|
25
25
|
:class="classPrefix + '__thumb'"
|
|
26
26
|
:tab-index="0"
|
|
27
|
-
:style="utils._style(saturationThumbStyle)"
|
|
27
|
+
:style="'' + utils._style(saturationThumbStyle)"
|
|
28
28
|
/>
|
|
29
29
|
</view>
|
|
30
30
|
<!-- #ifdef MP-ALIPAY -->
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
<view :class="classPrefix + '__rail'" />
|
|
54
54
|
<view
|
|
55
55
|
:class="classPrefix + '__thumb'"
|
|
56
|
-
:style="utils._style(hueSliderStyle)"
|
|
56
|
+
:style="'' + utils._style(hueSliderStyle)"
|
|
57
57
|
/>
|
|
58
58
|
</view>
|
|
59
59
|
</view>
|
|
@@ -64,9 +64,7 @@
|
|
|
64
64
|
>
|
|
65
65
|
<view
|
|
66
66
|
:class="classPrefix + '__slider-padding'"
|
|
67
|
-
:style="
|
|
68
|
-
'background: linear-gradient(90deg, rgba(0,0,0,.0) 0%, rgba(0,0,0,.0) 93%, ' + alphaSliderStyle.color + ' 93%, ' + alphaSliderStyle.color + ' 100%)'
|
|
69
|
-
"
|
|
67
|
+
:style="'' + `background: linear-gradient(90deg, rgba(0,0,0,.0) 0%, rgba(0,0,0,.0) 93%, ${alphaSliderStyle.color} 93%, ${alphaSliderStyle.color} 100%)`"
|
|
70
68
|
:disable-scroll="false"
|
|
71
69
|
/>
|
|
72
70
|
<view
|
|
@@ -78,11 +76,11 @@
|
|
|
78
76
|
>
|
|
79
77
|
<view
|
|
80
78
|
:class="classPrefix + '__rail'"
|
|
81
|
-
:style="'background: linear-gradient(to right, rgba(0, 0, 0, 0),
|
|
79
|
+
:style="'' + `background: linear-gradient(to right, rgba(0, 0, 0, 0), ${alphaSliderStyle.color})`"
|
|
82
80
|
/>
|
|
83
81
|
<view
|
|
84
82
|
:class="classPrefix + '__thumb'"
|
|
85
|
-
:style="utils._style(alphaSliderStyle)"
|
|
83
|
+
:style="'' + utils._style(alphaSliderStyle)"
|
|
86
84
|
/>
|
|
87
85
|
</view>
|
|
88
86
|
</view>
|
|
@@ -129,7 +127,13 @@
|
|
|
129
127
|
>
|
|
130
128
|
系统预设色彩
|
|
131
129
|
</view>
|
|
132
|
-
<view
|
|
130
|
+
<scroll-view
|
|
131
|
+
:class="classPrefix + '__swatches-items'"
|
|
132
|
+
scroll-x
|
|
133
|
+
enable-flex
|
|
134
|
+
scroll-anchoring
|
|
135
|
+
type="list"
|
|
136
|
+
>
|
|
133
137
|
<view
|
|
134
138
|
v-for="(swatch, index) in innerSwatchList"
|
|
135
139
|
:key="index"
|
|
@@ -142,7 +146,7 @@
|
|
|
142
146
|
:style="'background-color: ' + swatch + ';'"
|
|
143
147
|
/>
|
|
144
148
|
</view>
|
|
145
|
-
</view>
|
|
149
|
+
</scroll-view>
|
|
146
150
|
</view>
|
|
147
151
|
</view>
|
|
148
152
|
</view>
|
package/dist/common/common.ts
CHANGED
|
@@ -144,9 +144,10 @@
|
|
|
144
144
|
--td-component-border: var(--td-gray-color-4);
|
|
145
145
|
|
|
146
146
|
--td-shadow-1: 0 1px 10px rgba(0, 0, 0, 5%), 0 4px 5px rgba(0, 0, 0, 8%), 0 2px 4px -1px rgba(0, 0, 0, 12%);
|
|
147
|
-
--td-shadow-2:
|
|
148
|
-
|
|
149
|
-
|
|
147
|
+
--td-shadow-2:
|
|
148
|
+
0 3px 14px 2px rgba(0, 0, 0, 5%), 0 8px 10px 1px rgba(0, 0, 0, 6%), 0 5px 5px -3px rgba(0, 0, 0, 10%);
|
|
149
|
+
--td-shadow-3:
|
|
150
|
+
0 6px 30px 5px rgba(0, 0, 0, 5%), 0 16px 24px 2px rgba(0, 0, 0, 4%), 0 8px 10px -5px rgba(0, 0, 0, 8%);
|
|
150
151
|
--td-shadow-4: 0 2px 8px 0 rgba(0, 0, 0, 0.06);
|
|
151
152
|
|
|
152
153
|
--td-shadow-inset-top: inset 0 0.5px 0 #dcdcdc;
|
|
@@ -162,7 +163,6 @@
|
|
|
162
163
|
}
|
|
163
164
|
}
|
|
164
165
|
|
|
165
|
-
|
|
166
166
|
/* ./raw/_dark.less */
|
|
167
167
|
@media (prefers-color-scheme: dark) {
|
|
168
168
|
/* #ifdef H5 */
|
|
@@ -324,66 +324,64 @@
|
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
|
|
327
|
-
|
|
328
327
|
/* ./raw/_radius.less */
|
|
329
328
|
page,
|
|
330
329
|
.page {
|
|
331
|
-
--td-radius-small:
|
|
332
|
-
--td-radius-default:
|
|
333
|
-
--td-radius-large:
|
|
334
|
-
--td-radius-extraLarge:
|
|
330
|
+
--td-radius-small: 3px;
|
|
331
|
+
--td-radius-default: 6px;
|
|
332
|
+
--td-radius-large: 9px;
|
|
333
|
+
--td-radius-extraLarge: 12px;
|
|
335
334
|
--td-radius-round: 999px;
|
|
336
335
|
--td-radius-circle: 50%;
|
|
337
336
|
}
|
|
338
337
|
|
|
339
|
-
|
|
340
338
|
/* ./raw/_font.less */
|
|
341
339
|
page,
|
|
342
340
|
.page {
|
|
343
341
|
--td-font-family: PingFang SC, Microsoft YaHei, Arial Regular;
|
|
344
342
|
--td-font-family-medium: PingFang SC, Microsoft YaHei, Arial Medium;
|
|
345
343
|
|
|
346
|
-
--td-font-size-link-small:
|
|
347
|
-
--td-font-size-link-medium:
|
|
348
|
-
--td-font-size-link-large:
|
|
349
|
-
--td-font-size-mark-extraSmall:
|
|
350
|
-
--td-font-size-mark-small:
|
|
351
|
-
--td-font-size-mark-medium:
|
|
352
|
-
--td-font-size-mark-large:
|
|
353
|
-
--td-font-size-body-extraSmall:
|
|
354
|
-
--td-font-size-body-small:
|
|
355
|
-
--td-font-size-body-medium:
|
|
356
|
-
--td-font-size-body-large:
|
|
357
|
-
--td-font-size-title-small:
|
|
358
|
-
--td-font-size-title-medium:
|
|
359
|
-
--td-font-size-title-large:
|
|
360
|
-
--td-font-size-title-extraLarge:
|
|
361
|
-
--td-font-size-headline-small:
|
|
362
|
-
--td-font-size-headline-medium:
|
|
363
|
-
--td-font-size-headline-large:
|
|
364
|
-
--td-font-size-display-medium:
|
|
365
|
-
--td-font-size-display-large:
|
|
366
|
-
|
|
367
|
-
--td-line-height-link-small:
|
|
368
|
-
--td-line-height-link-medium:
|
|
369
|
-
--td-line-height-link-large:
|
|
370
|
-
--td-line-height-mark-extraSmall:
|
|
371
|
-
--td-line-height-mark-small:
|
|
372
|
-
--td-line-height-mark-medium:
|
|
373
|
-
--td-line-height-mark-large:
|
|
374
|
-
--td-line-height-body-extraSmall:
|
|
375
|
-
--td-line-height-body-small:
|
|
376
|
-
--td-line-height-body-medium:
|
|
377
|
-
--td-line-height-body-large:
|
|
378
|
-
--td-line-height-title-small:
|
|
379
|
-
--td-line-height-title-medium:
|
|
380
|
-
--td-line-height-title-large:
|
|
381
|
-
--td-line-height-title-extraLarge:
|
|
382
|
-
--td-line-height-headline-small:
|
|
383
|
-
--td-line-height-headline-medium:
|
|
384
|
-
--td-line-height-headline-large:
|
|
385
|
-
--td-line-height-display-medium:
|
|
386
|
-
--td-line-height-display-large:
|
|
344
|
+
--td-font-size-link-small: 12px;
|
|
345
|
+
--td-font-size-link-medium: 14px;
|
|
346
|
+
--td-font-size-link-large: 16px;
|
|
347
|
+
--td-font-size-mark-extraSmall: 10px;
|
|
348
|
+
--td-font-size-mark-small: 12px;
|
|
349
|
+
--td-font-size-mark-medium: 14px;
|
|
350
|
+
--td-font-size-mark-large: 16px;
|
|
351
|
+
--td-font-size-body-extraSmall: 10px;
|
|
352
|
+
--td-font-size-body-small: 12px;
|
|
353
|
+
--td-font-size-body-medium: 14px;
|
|
354
|
+
--td-font-size-body-large: 16px;
|
|
355
|
+
--td-font-size-title-small: 14px;
|
|
356
|
+
--td-font-size-title-medium: 16px;
|
|
357
|
+
--td-font-size-title-large: 18px;
|
|
358
|
+
--td-font-size-title-extraLarge: 20px;
|
|
359
|
+
--td-font-size-headline-small: 24px;
|
|
360
|
+
--td-font-size-headline-medium: 28px;
|
|
361
|
+
--td-font-size-headline-large: 36px;
|
|
362
|
+
--td-font-size-display-medium: 48px;
|
|
363
|
+
--td-font-size-display-large: 64px;
|
|
364
|
+
|
|
365
|
+
--td-line-height-link-small: 20px;
|
|
366
|
+
--td-line-height-link-medium: 22px;
|
|
367
|
+
--td-line-height-link-large: 24px;
|
|
368
|
+
--td-line-height-mark-extraSmall: 16px;
|
|
369
|
+
--td-line-height-mark-small: 20px;
|
|
370
|
+
--td-line-height-mark-medium: 22px;
|
|
371
|
+
--td-line-height-mark-large: 24px;
|
|
372
|
+
--td-line-height-body-extraSmall: 16px;
|
|
373
|
+
--td-line-height-body-small: 20px;
|
|
374
|
+
--td-line-height-body-medium: 22px;
|
|
375
|
+
--td-line-height-body-large: 24px;
|
|
376
|
+
--td-line-height-title-small: 22px;
|
|
377
|
+
--td-line-height-title-medium: 24px;
|
|
378
|
+
--td-line-height-title-large: 26px;
|
|
379
|
+
--td-line-height-title-extraLarge: 28px;
|
|
380
|
+
--td-line-height-headline-small: 32px;
|
|
381
|
+
--td-line-height-headline-medium: 36px;
|
|
382
|
+
--td-line-height-headline-large: 44px;
|
|
383
|
+
--td-line-height-display-medium: 56px;
|
|
384
|
+
--td-line-height-display-large: 72px;
|
|
387
385
|
|
|
388
386
|
--td-font-link-small: var(--td-font-size-link-small) / var(--td-line-height-link-small) var(--td-font-family);
|
|
389
387
|
--td-font-link-medium: var(--td-font-size-link-medium) / var(--td-line-height-link-medium) var(--td-font-family);
|
|
@@ -415,7 +413,7 @@ page,
|
|
|
415
413
|
--td-font-display-large: 600 var(--td-font-size-display-large) / var(--td-line-height-display-large)
|
|
416
414
|
var(--td-font-family);
|
|
417
415
|
|
|
418
|
-
--td-font-size:
|
|
416
|
+
--td-font-size: 10px;
|
|
419
417
|
--td-font-size-xs: var(--td-font-size-body-extraSmall);
|
|
420
418
|
--td-font-size-s: var(--td-font-size-body-small);
|
|
421
419
|
--td-font-size-base: var(--td-font-size-title-small);
|
|
@@ -425,20 +423,18 @@ page,
|
|
|
425
423
|
--td-font-size-xxl: var(--td-font-size-headline-large);
|
|
426
424
|
}
|
|
427
425
|
|
|
428
|
-
|
|
429
426
|
/* ./raw/_spacer.less */
|
|
430
427
|
page,
|
|
431
428
|
.page {
|
|
432
|
-
--td-spacer:
|
|
433
|
-
--td-spacer-1:
|
|
434
|
-
--td-spacer-2:
|
|
435
|
-
--td-spacer-3:
|
|
436
|
-
--td-spacer-4:
|
|
437
|
-
--td-spacer-5:
|
|
438
|
-
--td-spacer-6:
|
|
429
|
+
--td-spacer: 8px;
|
|
430
|
+
--td-spacer-1: 12px;
|
|
431
|
+
--td-spacer-2: 16px;
|
|
432
|
+
--td-spacer-3: 24px;
|
|
433
|
+
--td-spacer-4: 32px;
|
|
434
|
+
--td-spacer-5: 48px;
|
|
435
|
+
--td-spacer-6: 80px;
|
|
439
436
|
}
|
|
440
437
|
|
|
441
|
-
|
|
442
438
|
/* ./raw/_components.less */
|
|
443
439
|
@media (prefers-color-scheme: light) {
|
|
444
440
|
page,
|
package/dist/common/utils.js
CHANGED
|
@@ -236,7 +236,7 @@ export const chunk = (arr, size) => Array.from({ length: Math.ceil(arr.length /
|
|
|
236
236
|
const getPageContext = () => {
|
|
237
237
|
const pages = getCurrentPages();
|
|
238
238
|
const page = pages[pages.length - 1];
|
|
239
|
-
return
|
|
239
|
+
return page?.$vm || page;
|
|
240
240
|
};
|
|
241
241
|
|
|
242
242
|
|
|
@@ -244,9 +244,14 @@ const findInstance = (context, pageContext, pureSelector) => {
|
|
|
244
244
|
if (context && context.$refs[pureSelector]) {
|
|
245
245
|
return context.$refs[pureSelector];
|
|
246
246
|
}
|
|
247
|
-
|
|
247
|
+
|
|
248
|
+
if (pageContext
|
|
249
|
+
&& pageContext.$refs
|
|
250
|
+
&& pageContext.$refs[pureSelector]
|
|
251
|
+
) {
|
|
248
252
|
return pageContext.$refs[pureSelector];
|
|
249
253
|
}
|
|
254
|
+
|
|
250
255
|
return null;
|
|
251
256
|
};
|
|
252
257
|
|
package/dist/common/validator.js
CHANGED
|
@@ -36,3 +36,175 @@ export function isObject(x) {
|
|
|
36
36
|
export function isPlainObject(val) {
|
|
37
37
|
return val !== null && typeof val === 'object' && Object.prototype.toString.call(val) === '[object Object]';
|
|
38
38
|
}
|
|
39
|
+
|
|
40
|
+
export function isEmpty(val) {
|
|
41
|
+
if (val === null || val === undefined) return true;
|
|
42
|
+
if (typeof val === 'string' || Array.isArray(val)) return val.length === 0;
|
|
43
|
+
if (val instanceof Map || val instanceof Set) return val.size === 0;
|
|
44
|
+
if (typeof val === 'object') return Object.keys(val).length === 0;
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 验证是否为有效日期
|
|
50
|
+
* 支持字符串格式(YYYY/MM/DD、YYYY-MM-DD 等)和 Date 对象
|
|
51
|
+
*/
|
|
52
|
+
export function isDate(input, options) {
|
|
53
|
+
const defaultOptions = {
|
|
54
|
+
format: 'YYYY/MM/DD',
|
|
55
|
+
delimiters: ['/', '-'],
|
|
56
|
+
strictMode: false,
|
|
57
|
+
};
|
|
58
|
+
const opts = { ...defaultOptions, ...options };
|
|
59
|
+
|
|
60
|
+
if (typeof input === 'string') {
|
|
61
|
+
const delimiter = opts.delimiters.find((d) => opts.format.includes(d));
|
|
62
|
+
if (!delimiter) return false;
|
|
63
|
+
|
|
64
|
+
const formatParts = opts.format.split(delimiter);
|
|
65
|
+
const dateParts = input.split(delimiter);
|
|
66
|
+
if (formatParts.length !== dateParts.length) return false;
|
|
67
|
+
|
|
68
|
+
let year = '';
|
|
69
|
+
let month = '';
|
|
70
|
+
let day = '';
|
|
71
|
+
for (let i = 0; i < formatParts.length; i += 1) {
|
|
72
|
+
const fmt = formatParts[i].toUpperCase();
|
|
73
|
+
const val = dateParts[i];
|
|
74
|
+
if (fmt.includes('Y')) year = val;
|
|
75
|
+
else if (fmt.includes('M')) month = val;
|
|
76
|
+
else if (fmt.includes('D')) day = val;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (month.length === 1) month = `0${month}`;
|
|
80
|
+
if (day.length === 1) day = `0${day}`;
|
|
81
|
+
|
|
82
|
+
if (year.length === 2) {
|
|
83
|
+
const currentYearSuffix = new Date().getFullYear() % 100;
|
|
84
|
+
year = Number(year) <= currentYearSuffix ? `20${year}` : `19${year}`;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const date = new Date(`${year}-${month}-${day}T00:00:00.000Z`);
|
|
88
|
+
return (
|
|
89
|
+
date.getUTCFullYear() === Number(year)
|
|
90
|
+
&& date.getUTCMonth() + 1 === Number(month)
|
|
91
|
+
&& date.getUTCDate() === Number(day)
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (!opts.strictMode) {
|
|
96
|
+
if (Object.prototype.toString.call(input) === '[object Date]' && Number.isFinite(input.getTime())) {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* 验证是否为有效邮箱地址
|
|
106
|
+
*/
|
|
107
|
+
export function isEmail(str) {
|
|
108
|
+
if (typeof str !== 'string') return false;
|
|
109
|
+
if (str.length > 254) return false;
|
|
110
|
+
|
|
111
|
+
const parts = str.split('@');
|
|
112
|
+
if (parts.length !== 2) return false;
|
|
113
|
+
|
|
114
|
+
const [user, domain] = parts;
|
|
115
|
+
if (!user || user.length > 64) return false;
|
|
116
|
+
if (!domain) return false;
|
|
117
|
+
|
|
118
|
+
if (/^[-.]/.test(domain) || /[-.]$/.test(domain)) return false;
|
|
119
|
+
if (!/^[a-zA-Z0-9.-]+$/.test(domain)) return false;
|
|
120
|
+
if (!domain.includes('.')) return false;
|
|
121
|
+
|
|
122
|
+
const tld = domain.split('.').pop();
|
|
123
|
+
if (!tld || tld.length < 2) return false;
|
|
124
|
+
|
|
125
|
+
const emailUserReg = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+$/;
|
|
126
|
+
return emailUserReg.test(user);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* 验证是否为有效 URL
|
|
131
|
+
*/
|
|
132
|
+
export function isURL(str, options) {
|
|
133
|
+
if (typeof str !== 'string') return false;
|
|
134
|
+
if (str.length === 0 || /\s/.test(str)) return false;
|
|
135
|
+
if (str.length > 2084) return false;
|
|
136
|
+
|
|
137
|
+
const defaultOpts = {
|
|
138
|
+
protocols: ['http', 'https', 'ftp'],
|
|
139
|
+
require_tld: true,
|
|
140
|
+
require_protocol: false,
|
|
141
|
+
require_host: true,
|
|
142
|
+
allow_protocol_relative_urls: false,
|
|
143
|
+
};
|
|
144
|
+
const opts = { ...defaultOpts, ...options };
|
|
145
|
+
|
|
146
|
+
let url = str;
|
|
147
|
+
|
|
148
|
+
const protocolRegex = /^([a-z][a-z0-9+\-.]*):\/\//i;
|
|
149
|
+
const protocolMatch = url.match(protocolRegex);
|
|
150
|
+
if (protocolMatch) {
|
|
151
|
+
const protocol = protocolMatch[1].toLowerCase();
|
|
152
|
+
if (!opts.protocols.includes(protocol)) return false;
|
|
153
|
+
url = url.slice(protocolMatch[0].length);
|
|
154
|
+
} else if (opts.require_protocol) {
|
|
155
|
+
if (opts.allow_protocol_relative_urls && str.startsWith('//')) {
|
|
156
|
+
url = url.slice(2);
|
|
157
|
+
} else {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
} else if (str.startsWith('//')) {
|
|
161
|
+
if (!opts.allow_protocol_relative_urls) return false;
|
|
162
|
+
url = url.slice(2);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (!url && opts.require_host) return false;
|
|
166
|
+
|
|
167
|
+
const [hostPart] = url.split(/[/?#]/);
|
|
168
|
+
if (!hostPart && opts.require_host) return false;
|
|
169
|
+
|
|
170
|
+
let host = hostPart;
|
|
171
|
+
if (host.includes('@')) {
|
|
172
|
+
host = host.split('@').pop() || '';
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
let hostname = host;
|
|
176
|
+
const portMatch = host.match(/:(\d+)$/);
|
|
177
|
+
if (portMatch) {
|
|
178
|
+
const port = Number(portMatch[1]);
|
|
179
|
+
if (port < 0 || port > 65535) return false;
|
|
180
|
+
hostname = host.slice(0, host.lastIndexOf(':'));
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (!hostname) return false;
|
|
184
|
+
|
|
185
|
+
const ipv4Regex = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
|
|
186
|
+
const ipv4Match = hostname.match(ipv4Regex);
|
|
187
|
+
if (ipv4Match) {
|
|
188
|
+
return ipv4Match.slice(1).every((part) => Number(part) >= 0 && Number(part) <= 255);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (hostname.startsWith('[') && hostname.endsWith(']')) {
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const domainParts = hostname.split('.');
|
|
196
|
+
if (opts.require_tld && domainParts.length < 2) return false;
|
|
197
|
+
const hasInvalidPart = domainParts.some((part) => {
|
|
198
|
+
if (!part || part.length > 63) return true;
|
|
199
|
+
if (!/^[a-zA-Z0-9-]+$/.test(part)) return true;
|
|
200
|
+
if (part.startsWith('-') || part.endsWith('-')) return true;
|
|
201
|
+
return false;
|
|
202
|
+
});
|
|
203
|
+
if (hasInvalidPart) return false;
|
|
204
|
+
if (opts.require_tld) {
|
|
205
|
+
const tld = domainParts[domainParts.length - 1];
|
|
206
|
+
if (/^\d+$/.test(tld)) return false;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
:: BASE_DOC ::
|
|
2
|
+
|
|
3
|
+
## API
|
|
4
|
+
|
|
5
|
+
### ConfigProvider Props
|
|
6
|
+
|
|
7
|
+
name | type | default | description | required
|
|
8
|
+
-- | -- | -- | -- | --
|
|
9
|
+
custom-style | Object | - | CSS(Cascading Style Sheets) | N
|
|
10
|
+
global-config | Object | - | global config。Typescript: `GlobalConfigProvider` | N
|
|
11
|
+
theme-vars | Object | - | theme Variables | N
|
|
12
|
+
|
|
13
|
+
### GlobalConfigProvider
|
|
14
|
+
|
|
15
|
+
name | type | default | description | required
|
|
16
|
+
-- | -- | -- | -- | --
|
|
17
|
+
action-sheet | Object | - | ActionSheet global configs。Typescript: `ActionSheetConfig` | N
|
|
18
|
+
calendar | Object | - | Calendar global configs。Typescript: `CalendarConfig` | N
|
|
19
|
+
cascader | Object | - | Cascader global configs。Typescript: `CascaderConfig` | N
|
|
20
|
+
class-prefix | String | t | \- | N
|
|
21
|
+
date-time-picker | Object | - | DateTimePicker global configs。Typescript: `DateTimePickerConfig` | N
|
|
22
|
+
dropdown-menu | Object | - | DropdownMenu global configs。Typescript: `DropdownMenuConfig` | N
|
|
23
|
+
guide | Object | - | Guide global configs。Typescript: `GuideConfig` | N
|
|
24
|
+
picker | Object | - | Picker global configs。Typescript: `PickerConfig` | N
|
|
25
|
+
pull-down-refresh | Object | - | PullDownRefresh global configs。Typescript: `PullDownRefreshConfig` | N
|
|
26
|
+
qrcode | Object | - | QRCode global configs。Typescript: `QRCodeConfig` | N
|
|
27
|
+
rate | Object | - | Rate global configs。Typescript: `RateConfig` | N
|
|
28
|
+
tab-bar | Object | - | TabBar global configs。Typescript: `TabBarConfig` | N
|
|
29
|
+
upload | Object | - | Upload global configs。Typescript: `UploadConfig` | N
|
|
30
|
+
|
|
31
|
+
### ActionSheetConfig
|
|
32
|
+
|
|
33
|
+
name | type | default | description | required
|
|
34
|
+
-- | -- | -- | -- | --
|
|
35
|
+
cancel | String | - | cancel text | N
|
|
36
|
+
|
|
37
|
+
### AttachmentsConfig
|
|
38
|
+
|
|
39
|
+
name | type | default | description | required
|
|
40
|
+
-- | -- | -- | -- | --
|
|
41
|
+
status | Object | - | Typescript: `{ pending: string; fail: string; }` | N
|
|
42
|
+
|
|
43
|
+
### CalendarConfig
|
|
44
|
+
|
|
45
|
+
name | type | default | description | required
|
|
46
|
+
-- | -- | -- | -- | --
|
|
47
|
+
confirm | String | - | confirm text | N
|
|
48
|
+
month-title | String | - | \- | N
|
|
49
|
+
months | Array | - | Typescript: `string[]` | N
|
|
50
|
+
title | String | - | \- | N
|
|
51
|
+
weekdays | Array | - | Typescript: `string[]` | N
|
|
52
|
+
|
|
53
|
+
### CascaderConfig
|
|
54
|
+
|
|
55
|
+
name | type | default | description | required
|
|
56
|
+
-- | -- | -- | -- | --
|
|
57
|
+
placeholder | String | - | \- | N
|
|
58
|
+
title | String | - | \- | N
|
|
59
|
+
|
|
60
|
+
### ChatActionbarConfig
|
|
61
|
+
|
|
62
|
+
name | type | default | description | required
|
|
63
|
+
-- | -- | -- | -- | --
|
|
64
|
+
action-bar | Object | - | Typescript: `{ replay: string; copy: string; good: string; bad: string; share: string; quote: string; }` | N
|
|
65
|
+
|
|
66
|
+
### ChatSenderConfig
|
|
67
|
+
|
|
68
|
+
name | type | default | description | required
|
|
69
|
+
-- | -- | -- | -- | --
|
|
70
|
+
placeholder | String | - | \- | N
|
|
71
|
+
send-text | String | - | \- | N
|
|
72
|
+
stop-text | String | - | \- | N
|
|
73
|
+
|
|
74
|
+
### ChatThinkingConfig
|
|
75
|
+
|
|
76
|
+
name | type | default | description | required
|
|
77
|
+
-- | -- | -- | -- | --
|
|
78
|
+
status | Object | - | Typescript: `{ pending: string; complete: string; stop: string; }` | N
|
|
79
|
+
|
|
80
|
+
### DateTimePickerConfig
|
|
81
|
+
|
|
82
|
+
name | type | default | description | required
|
|
83
|
+
-- | -- | -- | -- | --
|
|
84
|
+
cancel | String | - | \- | N
|
|
85
|
+
confirm | String | - | \- | N
|
|
86
|
+
date-label | String | - | \- | N
|
|
87
|
+
format | String | 'YYYY-MM-DD HH:mm:ss' | \- | N
|
|
88
|
+
hour-label | String | - | \- | N
|
|
89
|
+
minute-label | String | - | \- | N
|
|
90
|
+
month-label | String | - | \- | N
|
|
91
|
+
second-label | String | - | \- | N
|
|
92
|
+
title | String | - | \- | N
|
|
93
|
+
year-label | String | - | \- | N
|
|
94
|
+
|
|
95
|
+
### DropdownMenuConfig
|
|
96
|
+
|
|
97
|
+
name | type | default | description | required
|
|
98
|
+
-- | -- | -- | -- | --
|
|
99
|
+
confirm | String | - | confirm text | N
|
|
100
|
+
reset | String | - | reset text | N
|
|
101
|
+
|
|
102
|
+
### FormConfig
|
|
103
|
+
|
|
104
|
+
name | type | default | description | required
|
|
105
|
+
-- | -- | -- | -- | --
|
|
106
|
+
colon-text | String | - | colon on the right of label ":" | N
|
|
107
|
+
error-message | Object | - | Typescript: `FormErrorMessage`,[Form API Documents](./form?tab=api)。[see more ts definition](https://github.com/tencent/tdesign-miniprogram/blob/develop/packages/uniapp-components/config-provider/type.ts) | N
|
|
108
|
+
required-mark | Boolean | true | \- | N
|
|
109
|
+
required-mark-position | String | left | Display position of required symbols。options: left/right | N
|
|
110
|
+
|
|
111
|
+
### GuideConfig
|
|
112
|
+
|
|
113
|
+
name | type | default | description | required
|
|
114
|
+
-- | -- | -- | -- | --
|
|
115
|
+
back | String | - | \- | N
|
|
116
|
+
finish | String | - | \- | N
|
|
117
|
+
next | String | - | \- | N
|
|
118
|
+
skip | String | - | \- | N
|
|
119
|
+
|
|
120
|
+
### ImageConfig
|
|
121
|
+
|
|
122
|
+
name | type | default | description | required
|
|
123
|
+
-- | -- | -- | -- | --
|
|
124
|
+
error-text | String | - | loading text, default value is "Error" | N
|
|
125
|
+
loading-text | String | - | loading text, default value is "loading" | N
|
|
126
|
+
replace-image-src | Function | - | replace all `src` attribute of images。Typescript: `(params: ImageProps) => string`,[Image API Documents](./image?tab=api)。[see more ts definition](https://github.com/tencent/tdesign-miniprogram/blob/develop/packages/uniapp-components/config-provider/type.ts) | N
|
|
127
|
+
|
|
128
|
+
### InputConfig
|
|
129
|
+
|
|
130
|
+
name | type | default | description | required
|
|
131
|
+
-- | -- | -- | -- | --
|
|
132
|
+
placeholder | String | - | \- | N
|
|
133
|
+
|
|
134
|
+
### PickerConfig
|
|
135
|
+
|
|
136
|
+
name | type | default | description | required
|
|
137
|
+
-- | -- | -- | -- | --
|
|
138
|
+
cancel | String | - | cancel text | N
|
|
139
|
+
confirm | String | - | confirm text | N
|
|
140
|
+
|
|
141
|
+
### PullDownRefreshConfig
|
|
142
|
+
|
|
143
|
+
name | type | default | description | required
|
|
144
|
+
-- | -- | -- | -- | --
|
|
145
|
+
loading-texts | Array | - | Typescript: `string[]` | N
|
|
146
|
+
|
|
147
|
+
### QRCodeConfig
|
|
148
|
+
|
|
149
|
+
name | type | default | description | required
|
|
150
|
+
-- | -- | -- | -- | --
|
|
151
|
+
expired-text | String | - | Language configuration, "QR code expired" description text | N
|
|
152
|
+
refresh-text | String | - | Language configuration, "QR code refresh" description text | N
|
|
153
|
+
scanned-text | String | - | Language configuration, "QR code scanned" description text | N
|
|
154
|
+
|
|
155
|
+
### RateConfig
|
|
156
|
+
|
|
157
|
+
name | type | default | description | required
|
|
158
|
+
-- | -- | -- | -- | --
|
|
159
|
+
no-value-text | String | - | \- | N
|
|
160
|
+
value-text | String | - | \- | N
|
|
161
|
+
|
|
162
|
+
### TabBarConfig
|
|
163
|
+
|
|
164
|
+
name | type | default | description | required
|
|
165
|
+
-- | -- | -- | -- | --
|
|
166
|
+
have-more-news-aria-label | String | - | \- | N
|
|
167
|
+
have-news-aria-label | String | - | \- | N
|
|
168
|
+
more-news-aria-label | String | - | \- | N
|
|
169
|
+
news-aria-label | String | - | \- | N
|
|
170
|
+
|
|
171
|
+
### UploadConfig
|
|
172
|
+
|
|
173
|
+
name | type | default | description | required
|
|
174
|
+
-- | -- | -- | -- | --
|
|
175
|
+
progress | Object | - | Typescript: `UploadConfigProgress` | N
|
|
176
|
+
|
|
177
|
+
### UploadConfigProgress
|
|
178
|
+
|
|
179
|
+
name | type | default | description | required
|
|
180
|
+
-- | -- | -- | -- | --
|
|
181
|
+
fail-text | String | - | \- | N
|
|
182
|
+
success-text | String | - | \- | N
|
|
183
|
+
uploading-text | String | - | \- | N
|
|
184
|
+
waiting-text | String | - | \- | N
|