sard-uniapp 1.22.0 → 1.22.2
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 +26 -0
- package/README.md +1 -1
- package/components/action-sheet/README.md +15 -6
- package/components/action-sheet/action-sheet.d.ts +6 -10
- package/components/action-sheet/action-sheet.vue +16 -2
- package/components/action-sheet/common.d.ts +2 -1
- package/components/calendar-input/calendar-input.d.ts +5 -7
- package/components/calendar-input/calendar-input.vue +26 -3
- package/components/calendar-popout/README.md +15 -5
- package/components/calendar-popout/calendar-popout.d.ts +5 -7
- package/components/calendar-popout/calendar-popout.vue +19 -12
- package/components/calendar-popout/common.d.ts +3 -1
- package/components/cascader-input/cascader-input.d.ts +5 -10
- package/components/cascader-input/cascader-input.vue +26 -3
- package/components/cascader-popout/README.md +16 -6
- package/components/cascader-popout/cascader-popout.d.ts +5 -9
- package/components/cascader-popout/cascader-popout.vue +19 -12
- package/components/cascader-popout/common.d.ts +3 -1
- package/components/checkbox-input/checkbox-input.d.ts +5 -7
- package/components/checkbox-input/checkbox-input.vue +26 -3
- package/components/checkbox-popout/README.md +15 -5
- package/components/checkbox-popout/checkbox-popout.d.ts +5 -7
- package/components/checkbox-popout/checkbox-popout.vue +14 -6
- package/components/checkbox-popout/common.d.ts +3 -1
- package/components/crop-image/README.md +12 -3
- package/components/crop-image/common.d.ts +2 -1
- package/components/crop-image/crop-image.d.ts +5 -3
- package/components/crop-image/crop-image.vue +16 -2
- package/components/datetime-picker-input/datetime-picker-input.d.ts +5 -7
- package/components/datetime-picker-input/datetime-picker-input.vue +26 -3
- package/components/datetime-picker-popout/README.md +15 -5
- package/components/datetime-picker-popout/common.d.ts +3 -1
- package/components/datetime-picker-popout/datetime-picker-popout.d.ts +5 -7
- package/components/datetime-picker-popout/datetime-picker-popout.vue +21 -3
- package/components/datetime-range-picker-input/datetime-range-picker-input.d.ts +5 -7
- package/components/datetime-range-picker-input/datetime-range-picker-input.vue +26 -3
- package/components/datetime-range-picker-popout/README.md +15 -5
- package/components/datetime-range-picker-popout/common.d.ts +3 -1
- package/components/datetime-range-picker-popout/datetime-range-picker-popout.d.ts +5 -7
- package/components/datetime-range-picker-popout/datetime-range-picker-popout.vue +21 -3
- package/components/dialog/dialog.d.ts +1 -1
- package/components/dialog-agent/dialog-agent.d.ts +1 -1
- package/components/dnd/README.md +0 -6
- package/components/dnd/dnd.vue +1 -14
- package/components/dnd/index.scss +0 -4
- package/components/dnd-handle/index.scss +0 -1
- package/components/icon/common.d.ts +3 -0
- package/components/icon/icon.d.ts +5 -1
- package/components/icon/icon.vue +8 -3
- package/components/icon/index.d.ts +1 -1
- package/components/list/README.md +10 -10
- package/components/list-item/list-item.vue +1 -1
- package/components/picker-input/picker-input.d.ts +6 -8
- package/components/picker-input/picker-input.vue +26 -3
- package/components/picker-popout/README.md +15 -5
- package/components/picker-popout/common.d.ts +3 -1
- package/components/picker-popout/picker-popout.d.ts +6 -8
- package/components/picker-popout/picker-popout.vue +21 -3
- package/components/popout/popout.d.ts +1 -1
- package/components/radio-input/radio-input.d.ts +5 -7
- package/components/radio-input/radio-input.vue +26 -3
- package/components/radio-popout/README.md +15 -5
- package/components/radio-popout/common.d.ts +3 -1
- package/components/radio-popout/radio-popout.d.ts +5 -7
- package/components/radio-popout/radio-popout.vue +14 -6
- package/components/rate/rate.d.ts +1 -1
- package/components/share-sheet/README.md +15 -6
- package/components/share-sheet/common.d.ts +2 -1
- package/components/share-sheet/share-sheet.d.ts +6 -10
- package/components/share-sheet/share-sheet.vue +16 -2
- package/components/style/mixins.scss +0 -1
- package/components/style/variables.scss +0 -2
- package/components/tree/common.d.ts +0 -1
- package/components/tree/index.scss +0 -4
- package/components/tree/tree.vue +2 -16
- package/components/tree-node/index.scss +1 -0
- package/components/tree-node/tree-node.vue +0 -2
- package/components/upload/README.md +13 -4
- package/components/upload/common.d.ts +6 -0
- package/components/upload/upload.vue +37 -30
- package/components/waterfall/README.md +1 -1
- package/package.json +2 -2
- package/use/useFormPopout.d.ts +6 -2
- package/use/useFormPopout.js +9 -1
- package/use/usePopoutInput.d.ts +4 -1
- package/use/usePopoutInput.js +5 -0
- package/utils/dom.js +2 -0
- package/components/style/mixins/disable-scroll.scss +0 -14
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { type RadioPopoutProps, type RadioPopoutSlots } from './common';
|
|
2
2
|
declare function __VLS_template(): Readonly<RadioPopoutSlots> & RadioPopoutSlots;
|
|
3
|
-
declare const __VLS_component: import("vue").DefineComponent<RadioPopoutProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
declare const __VLS_component: import("vue").DefineComponent<RadioPopoutProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
} & {
|
|
6
|
+
[x: string]: any;
|
|
7
7
|
}, string, import("vue").PublicProps, Readonly<RadioPopoutProps> & Readonly<{
|
|
8
|
-
|
|
9
|
-
onChange?: ((value: any) => any) | undefined;
|
|
10
|
-
"onUpdate:visible"?: ((visible: boolean) => any) | undefined;
|
|
8
|
+
[x: `on${Capitalize<any>}`]: ((...args: any) => any) | undefined;
|
|
11
9
|
}>, {
|
|
12
10
|
options: import("../radio/common").RadioGroupOption[];
|
|
13
11
|
type: import("../radio/common").IconType;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
:root-class="popoutClass"
|
|
6
6
|
:root-style="popoutStyle"
|
|
7
7
|
@confirm="onConfirm"
|
|
8
|
+
@visible-hook="onVisibleHook"
|
|
8
9
|
>
|
|
9
10
|
<template #visible="{ already }">
|
|
10
11
|
<view v-if="already">
|
|
@@ -104,6 +105,16 @@ import { useScrollSide, useFormPopout } from "../../use";
|
|
|
104
105
|
* @property {string} filterPlaceholder 搜索输入框占位符内容,默认值:-。
|
|
105
106
|
* @event {(visible: boolean) => void} update 弹出框显隐时触发
|
|
106
107
|
* @event {(value: any | undefined) => void} change 单选输入组件值改变时触发
|
|
108
|
+
* @event {() => void} confirm 点击确定按钮时触发
|
|
109
|
+
* @event {(name: TransitionHookName) => void} visible-hook 入场/退场动画状态改变时触发
|
|
110
|
+
* @event {() => void} before-enter 入场动画开始前触发
|
|
111
|
+
* @event {() => void} enter 入场动画开始时触发
|
|
112
|
+
* @event {() => void} after-enter 入场动画结束时触发
|
|
113
|
+
* @event {() => void} enter-cancelled 入场动画取消时触发
|
|
114
|
+
* @event {() => void} before-leave 退场动画开始前触发
|
|
115
|
+
* @event {() => void} leave 退场动画开始时触发
|
|
116
|
+
* @event {() => void} after-leave 退场动画结束时触发
|
|
117
|
+
* @event {() => void} leave-cancelled 退场动画取消时触发
|
|
107
118
|
*/
|
|
108
119
|
export default _defineComponent({
|
|
109
120
|
components: {
|
|
@@ -142,16 +153,13 @@ export default _defineComponent({
|
|
|
142
153
|
options: { type: Array, required: false },
|
|
143
154
|
optionKeys: { type: Object, required: false }
|
|
144
155
|
}, defaultRadioPopoutProps()),
|
|
145
|
-
emits: ["update:visible", "update:model-value", "change"],
|
|
156
|
+
emits: ["update:visible", "update:model-value", "change", "confirm", "before-enter", "enter", "after-enter", "enter-cancelled", "before-leave", "leave", "after-leave", "leave-cancelled", "visible-hook"],
|
|
146
157
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
147
158
|
__expose();
|
|
148
159
|
const props = __props;
|
|
149
160
|
const emit = __emit;
|
|
150
161
|
const bem = createBem("radio-popout");
|
|
151
|
-
const { innerVisible, popoutValue, onChange, onConfirm } = useFormPopout(
|
|
152
|
-
props,
|
|
153
|
-
emit
|
|
154
|
-
);
|
|
162
|
+
const { innerVisible, popoutValue, onChange, onConfirm, onVisibleHook } = useFormPopout(props, emit);
|
|
155
163
|
const fieldKeys = computed(() => {
|
|
156
164
|
return Object.assign({}, defaultOptionKeys, props.optionKeys);
|
|
157
165
|
});
|
|
@@ -190,7 +198,7 @@ export default _defineComponent({
|
|
|
190
198
|
bem.em("scroll", "searchable", props.searchable)
|
|
191
199
|
);
|
|
192
200
|
});
|
|
193
|
-
const __returned__ = { props, emit, bem, innerVisible, popoutValue, onChange, onConfirm, fieldKeys, objectOptions, select, searchValue, filteredOptions, scrollSide, onScroll, onScrolltoupper, onScrolltolower, containerClass, scrollClass, SarPopout, SarRadioGroup, SarRadio, SarList, SarListItem, SarIcon, SarInput };
|
|
201
|
+
const __returned__ = { props, emit, bem, innerVisible, popoutValue, onChange, onConfirm, onVisibleHook, fieldKeys, objectOptions, select, searchValue, filteredOptions, scrollSide, onScroll, onScrolltoupper, onScrolltolower, containerClass, scrollClass, SarPopout, SarRadioGroup, SarRadio, SarList, SarListItem, SarIcon, SarInput };
|
|
194
202
|
return __returned__;
|
|
195
203
|
}
|
|
196
204
|
});
|
|
@@ -6,8 +6,8 @@ declare const _default: import("vue").DefineComponent<RateProps, {}, {}, {}, {},
|
|
|
6
6
|
"onUpdate:model-value"?: ((value: number) => any) | undefined;
|
|
7
7
|
onChange?: ((value: number) => any) | undefined;
|
|
8
8
|
}>, {
|
|
9
|
-
validateEvent: boolean;
|
|
10
9
|
count: number;
|
|
10
|
+
validateEvent: boolean;
|
|
11
11
|
icon: string;
|
|
12
12
|
voidIcon: string;
|
|
13
13
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -68,12 +68,21 @@ import ShareSheet from 'sard-uniapp/components/share-sheet/share-sheet.vue'
|
|
|
68
68
|
|
|
69
69
|
### ShareSheetEmits
|
|
70
70
|
|
|
71
|
-
| 事件
|
|
72
|
-
|
|
|
73
|
-
| update:visible
|
|
74
|
-
| close
|
|
75
|
-
| cancel
|
|
76
|
-
| select
|
|
71
|
+
| 事件 | 描述 | 类型 |
|
|
72
|
+
| ---------------------------------- | --------------------------- | ---------------------------------- |
|
|
73
|
+
| update:visible | 分享面板显隐时触发 | (visible: boolean) => void |
|
|
74
|
+
| close | 点击遮罩时触发 | () => void |
|
|
75
|
+
| cancel | 点击取消按钮时触发 | () => void |
|
|
76
|
+
| select | 点击分享项时触发 | (item: ShareSheetItem) => void |
|
|
77
|
+
| visible-hook <sup>1.22.1+</sup> | 入场/退场动画状态改变时触发 | (name: TransitionHookName) => void |
|
|
78
|
+
| before-enter <sup>1.22.1+</sup> | 入场动画开始前触发 | () => void |
|
|
79
|
+
| enter <sup>1.22.1+</sup> | 入场动画开始时触发 | () => void |
|
|
80
|
+
| after-enter <sup>1.22.1+</sup> | 入场动画结束时触发 | () => void |
|
|
81
|
+
| enter-cancelled <sup>1.22.1+</sup> | 入场动画取消时触发 | () => void |
|
|
82
|
+
| before-leave <sup>1.22.1+</sup> | 退场动画开始前触发 | () => void |
|
|
83
|
+
| leave <sup>1.22.1+</sup> | 退场动画开始时触发 | () => void |
|
|
84
|
+
| after-leave <sup>1.22.1+</sup> | 退场动画结束时触发 | () => void |
|
|
85
|
+
| leave-cancelled <sup>1.22.1+</sup> | 退场动画取消时触发 | () => void |
|
|
77
86
|
|
|
78
87
|
### ShareSheetItem
|
|
79
88
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type StyleValue } from 'vue';
|
|
2
|
+
import { type TransitionHookEmits } from '../popup/common';
|
|
2
3
|
export interface ShareSheetProps {
|
|
3
4
|
rootStyle?: StyleValue;
|
|
4
5
|
rootClass?: string;
|
|
@@ -15,7 +16,7 @@ export declare const defaultShareSheetProps: {
|
|
|
15
16
|
overlayClosable: boolean;
|
|
16
17
|
duration: number;
|
|
17
18
|
};
|
|
18
|
-
export interface ShareSheetEmits {
|
|
19
|
+
export interface ShareSheetEmits extends TransitionHookEmits {
|
|
19
20
|
(e: 'update:visible', visible: boolean): void;
|
|
20
21
|
(e: 'close'): void;
|
|
21
22
|
(e: 'cancel'): void;
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import { type ShareSheetProps
|
|
2
|
-
declare const _default: import("vue").DefineComponent<ShareSheetProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"update:visible": (visible: boolean) => any;
|
|
1
|
+
import { type ShareSheetProps } from './common';
|
|
2
|
+
declare const _default: import("vue").DefineComponent<ShareSheetProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
3
|
+
[x: string]: any;
|
|
4
|
+
} & {
|
|
5
|
+
[x: string]: any;
|
|
7
6
|
}, string, import("vue").PublicProps, Readonly<ShareSheetProps> & Readonly<{
|
|
8
|
-
|
|
9
|
-
onClose?: (() => any) | undefined;
|
|
10
|
-
onSelect?: ((item: ShareSheetItem) => any) | undefined;
|
|
11
|
-
"onUpdate:visible"?: ((visible: boolean) => any) | undefined;
|
|
7
|
+
[x: `on${Capitalize<any>}`]: ((...args: any) => any) | undefined;
|
|
12
8
|
}>, {
|
|
13
9
|
duration: number;
|
|
14
10
|
overlayClosable: boolean;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
:visible="innerVisible"
|
|
5
5
|
:duration="duration"
|
|
6
6
|
@overlay-click="onOverlayClick"
|
|
7
|
+
@visible-hook="onVisibleHook"
|
|
7
8
|
>
|
|
8
9
|
<view :class="shareSheetClass" :style="shareSheetStyle">
|
|
9
10
|
<view v-if="title || description" :class="bem.e('header')">
|
|
@@ -105,6 +106,15 @@ import {
|
|
|
105
106
|
* @event {() => void} close 点击遮罩时触发
|
|
106
107
|
* @event {() => void} cancel 点击取消按钮时触发
|
|
107
108
|
* @event {(item: ShareSheetItem) => void} select 点击分享项时触发
|
|
109
|
+
* @event {(name: TransitionHookName) => void} visible-hook 入场/退场动画状态改变时触发
|
|
110
|
+
* @event {() => void} before-enter 入场动画开始前触发
|
|
111
|
+
* @event {() => void} enter 入场动画开始时触发
|
|
112
|
+
* @event {() => void} after-enter 入场动画结束时触发
|
|
113
|
+
* @event {() => void} enter-cancelled 入场动画取消时触发
|
|
114
|
+
* @event {() => void} before-leave 退场动画开始前触发
|
|
115
|
+
* @event {() => void} leave 退场动画开始时触发
|
|
116
|
+
* @event {() => void} after-leave 退场动画结束时触发
|
|
117
|
+
* @event {() => void} leave-cancelled 退场动画取消时触发
|
|
108
118
|
*/
|
|
109
119
|
export default _defineComponent({
|
|
110
120
|
components: {
|
|
@@ -130,7 +140,7 @@ export default _defineComponent({
|
|
|
130
140
|
beforeClose: { type: Function, required: false },
|
|
131
141
|
duration: { type: Number, required: false }
|
|
132
142
|
}, defaultShareSheetProps),
|
|
133
|
-
emits: ["update:visible", "close", "cancel", "select"],
|
|
143
|
+
emits: ["update:visible", "close", "cancel", "select", "before-enter", "enter", "after-enter", "enter-cancelled", "before-leave", "leave", "after-leave", "leave-cancelled", "visible-hook"],
|
|
134
144
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
135
145
|
__expose();
|
|
136
146
|
const props = __props;
|
|
@@ -184,6 +194,10 @@ export default _defineComponent({
|
|
|
184
194
|
emit("cancel");
|
|
185
195
|
perhapsClose("cancel");
|
|
186
196
|
};
|
|
197
|
+
const onVisibleHook = (name) => {
|
|
198
|
+
emit("visible-hook", name);
|
|
199
|
+
emit(name);
|
|
200
|
+
};
|
|
187
201
|
const isImg = (url) => {
|
|
188
202
|
return typeof url === "string" && isFileUrl(url);
|
|
189
203
|
};
|
|
@@ -193,7 +207,7 @@ export default _defineComponent({
|
|
|
193
207
|
const shareSheetStyle = computed(() => {
|
|
194
208
|
return stringifyStyle(props.rootStyle);
|
|
195
209
|
});
|
|
196
|
-
const __returned__ = { props, emit, bem, finalItemList, innerVisible, perhapsClose, onOverlayClick, onSelect, onCancel, isImg, shareSheetClass, shareSheetStyle, get classNames() {
|
|
210
|
+
const __returned__ = { props, emit, bem, finalItemList, innerVisible, perhapsClose, onOverlayClick, onSelect, onCancel, onVisibleHook, isImg, shareSheetClass, shareSheetStyle, get classNames() {
|
|
197
211
|
return classNames;
|
|
198
212
|
}, get stringifyStyle() {
|
|
199
213
|
return stringifyStyle;
|
|
@@ -100,6 +100,5 @@ export interface TreeContext {
|
|
|
100
100
|
drop: (dropOriginNode: TreeStateNode, dropTargetNode: TreeStateNode, position: number) => void;
|
|
101
101
|
currentKey: string | number | undefined;
|
|
102
102
|
singleSelect: (node: TreeStateNode) => void;
|
|
103
|
-
dragging: boolean;
|
|
104
103
|
}
|
|
105
104
|
export declare const treeContextSymbol: unique symbol;
|
package/components/tree/tree.vue
CHANGED
|
@@ -31,17 +31,6 @@
|
|
|
31
31
|
</sar-dialog>
|
|
32
32
|
|
|
33
33
|
<sar-toast v-model:visible="toastVisible" :title="t('please')" />
|
|
34
|
-
|
|
35
|
-
<!-- #ifdef MP-ALIPAY -->
|
|
36
|
-
<view
|
|
37
|
-
:class="
|
|
38
|
-
classNames(
|
|
39
|
-
bem.e('disable-scroll'),
|
|
40
|
-
bem.em('disable-scroll', 'dragging', context.dragging),
|
|
41
|
-
)
|
|
42
|
-
"
|
|
43
|
-
></view>
|
|
44
|
-
<!-- #endif -->
|
|
45
34
|
</template>
|
|
46
35
|
|
|
47
36
|
<script>
|
|
@@ -572,8 +561,7 @@ export default _defineComponent({
|
|
|
572
561
|
drop,
|
|
573
562
|
edit,
|
|
574
563
|
currentKey,
|
|
575
|
-
singleSelect
|
|
576
|
-
dragging: false
|
|
564
|
+
singleSelect
|
|
577
565
|
});
|
|
578
566
|
provide(treeContextSymbol, context);
|
|
579
567
|
__expose({
|
|
@@ -608,9 +596,7 @@ export default _defineComponent({
|
|
|
608
596
|
return currentEditNode;
|
|
609
597
|
}, set currentEditNode(v) {
|
|
610
598
|
currentEditNode = v;
|
|
611
|
-
}, currentEditType, currentEditValue, mapEditTypeTitle, currentEditTitle, dialogVisible, toastVisible, onPopoverSelect, beforeClose, edit, focused, onVisibleHook, defaultFilterMethod, filter, currentKey, singleSelect, context, treeClass, treeStyle,
|
|
612
|
-
return classNames;
|
|
613
|
-
}, SarTreeNode, SarPopover, SarInput, SarDialog, SarToast };
|
|
599
|
+
}, currentEditType, currentEditValue, mapEditTypeTitle, currentEditTitle, dialogVisible, toastVisible, onPopoverSelect, beforeClose, edit, focused, onVisibleHook, defaultFilterMethod, filter, currentKey, singleSelect, context, treeClass, treeStyle, SarTreeNode, SarPopover, SarInput, SarDialog, SarToast };
|
|
614
600
|
return __returned__;
|
|
615
601
|
}
|
|
616
602
|
});
|
|
@@ -207,7 +207,6 @@ export default _defineComponent({
|
|
|
207
207
|
onDragSimulatedPressTouchEnd
|
|
208
208
|
] = useSimulatedPress({
|
|
209
209
|
start: () => {
|
|
210
|
-
treeContext.dragging = true;
|
|
211
210
|
dragging.value = true;
|
|
212
211
|
treeContext.setExpandedByNode(props.node, false);
|
|
213
212
|
onDragStart();
|
|
@@ -218,7 +217,6 @@ export default _defineComponent({
|
|
|
218
217
|
}
|
|
219
218
|
},
|
|
220
219
|
end: () => {
|
|
221
|
-
treeContext.dragging = false;
|
|
222
220
|
dragging.value = false;
|
|
223
221
|
onDragEnd();
|
|
224
222
|
},
|
|
@@ -83,6 +83,14 @@ import Upload from 'sard-uniapp/components/upload/upload.vue'
|
|
|
83
83
|
|
|
84
84
|
@code('${DEMO_PATH}/upload/demo/CustomSelect.vue')
|
|
85
85
|
|
|
86
|
+
### 自定义渲染 <sup>1.22.2+</sup>
|
|
87
|
+
|
|
88
|
+
使用默认插槽自定义渲染内容。
|
|
89
|
+
|
|
90
|
+
`list` 参数用于渲染文件列表;`onSelect` 用于选择文件;`onRemove` 用于删除文件;`onImageClick` 用于预览图片。
|
|
91
|
+
|
|
92
|
+
@code('${DEMO_PATH}/upload/demo/Custom.vue')
|
|
93
|
+
|
|
86
94
|
## API
|
|
87
95
|
|
|
88
96
|
### UploadProps
|
|
@@ -110,7 +118,7 @@ import Upload from 'sard-uniapp/components/upload/upload.vue'
|
|
|
110
118
|
| before-remove | 文件删除前的回调,返回 false 可终止文件删除,支持返回 Promise | (index: number, fileItem: UploadFileItem) => boolean \| Promise\<any> | - |
|
|
111
119
|
| validate-event | 是否触发表单验证 | boolean | true |
|
|
112
120
|
|
|
113
|
-
### UploadSelectOptions <sup>1.21
|
|
121
|
+
### UploadSelectOptions <sup>1.21+</sup>
|
|
114
122
|
|
|
115
123
|
```ts
|
|
116
124
|
interface UploadSelectOptions {
|
|
@@ -120,9 +128,10 @@ interface UploadSelectOptions {
|
|
|
120
128
|
|
|
121
129
|
### UploadSlots
|
|
122
130
|
|
|
123
|
-
| 插槽
|
|
124
|
-
|
|
|
125
|
-
|
|
|
131
|
+
| 插槽 | 描述 | 属性 |
|
|
132
|
+
| -------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
133
|
+
| default <sup>1.22.2+</sup> | 自定义渲染 | { list: UploadFileItem[]; onSelect: () => void; onRemove: (index: number, item: UploadFileItem) => void; onImageClick: (index: number) => void} |
|
|
134
|
+
| select | 自定义选取内容 | - |
|
|
126
135
|
|
|
127
136
|
### UploadEmits
|
|
128
137
|
|
|
@@ -47,6 +47,12 @@ export interface UploadProps {
|
|
|
47
47
|
}
|
|
48
48
|
export declare const defaultUploadProps: Omit<typeof defaultConfig.upload, "sourceType" | "sizeType">;
|
|
49
49
|
export interface UploadSlots {
|
|
50
|
+
default?(props: {
|
|
51
|
+
list: UploadFileItem[];
|
|
52
|
+
onSelect: () => void;
|
|
53
|
+
onRemove: (index: number, item: UploadFileItem) => void;
|
|
54
|
+
onImageClick: (index: number) => void;
|
|
55
|
+
}): any;
|
|
50
56
|
select?(props: Record<string, never>): any;
|
|
51
57
|
}
|
|
52
58
|
export interface UploadEmits {
|
|
@@ -1,36 +1,43 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view :class="uploadClass" :style="uploadStyle">
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
3
|
+
<slot
|
|
4
|
+
:list="innerValue"
|
|
5
|
+
:on-select="onSelect"
|
|
6
|
+
:on-remove="onRemove"
|
|
7
|
+
:on-image-click="onImageClick"
|
|
8
|
+
>
|
|
9
|
+
<view :class="bem.e('wrapper')">
|
|
10
|
+
<sar-upload-preview
|
|
11
|
+
v-for="(item, index) in innerValue"
|
|
12
|
+
:key="index"
|
|
13
|
+
:file="item.file"
|
|
14
|
+
:url="item.url"
|
|
15
|
+
:is-image="item.isImage"
|
|
16
|
+
:is-video="item.isVideo"
|
|
17
|
+
:status="item.status"
|
|
18
|
+
:name="item.name"
|
|
19
|
+
:message="item.message"
|
|
20
|
+
:removable="removable"
|
|
21
|
+
:index="index"
|
|
22
|
+
:disabled="isDisabled"
|
|
23
|
+
:readonly="isReadonly"
|
|
24
|
+
@remove="onRemove(index, item)"
|
|
25
|
+
@image-click="onImageClick(index)"
|
|
26
|
+
@click="onItemClick(index, item)"
|
|
27
|
+
/>
|
|
28
|
+
<view
|
|
29
|
+
v-if="innerValue.length < maxCount && !isReadonly"
|
|
30
|
+
:class="bem.e('select')"
|
|
31
|
+
@click="onSelect"
|
|
32
|
+
>
|
|
33
|
+
<slot name="select">
|
|
34
|
+
<view :class="bem.e('select-icon')">
|
|
35
|
+
<sar-icon family="sari" name="plus" />
|
|
36
|
+
</view>
|
|
37
|
+
</slot>
|
|
38
|
+
</view>
|
|
32
39
|
</view>
|
|
33
|
-
</
|
|
40
|
+
</slot>
|
|
34
41
|
</view>
|
|
35
42
|
</template>
|
|
36
43
|
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "sard-uniapp",
|
|
3
3
|
"name": "sard-uniapp",
|
|
4
4
|
"displayName": "sard-uniapp",
|
|
5
|
-
"version": "1.22.
|
|
5
|
+
"version": "1.22.2",
|
|
6
6
|
"description": "sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库",
|
|
7
7
|
"main": "index.js",
|
|
8
8
|
"scripts": {
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
"lodash-es": "^4.17.21",
|
|
124
124
|
"prettier": "^3.5.3",
|
|
125
125
|
"region-data": "^1.2.3",
|
|
126
|
-
"sard-cli": "^1.3.
|
|
126
|
+
"sard-cli": "^1.3.6",
|
|
127
127
|
"sass": "^1.69.7",
|
|
128
128
|
"tailwindcss": "^3.4.17",
|
|
129
129
|
"tel-area-code": "^1.1.0",
|
package/use/useFormPopout.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { type TransitionHookName } from './useTransition';
|
|
2
|
+
import { type TransitionHookEmits } from '../components/popup/common';
|
|
1
3
|
export interface UseFormPopoutProps {
|
|
2
4
|
visible?: boolean;
|
|
3
5
|
modelValue?: any;
|
|
4
6
|
validateEvent?: boolean;
|
|
5
7
|
}
|
|
6
|
-
export interface UseFormPopoutEmits {
|
|
8
|
+
export interface UseFormPopoutEmits extends TransitionHookEmits {
|
|
7
9
|
(e: 'update:visible', visible: boolean): void;
|
|
8
10
|
(e: 'update:model-value', ...args: any[]): void;
|
|
9
11
|
(e: 'change', ...args: any[]): void;
|
|
12
|
+
(e: 'confirm'): void;
|
|
10
13
|
}
|
|
11
14
|
export declare function useFormPopout(props: UseFormPopoutProps, emit: UseFormPopoutEmits, options?: {
|
|
12
15
|
onChange?: (...args: any[]) => void;
|
|
@@ -16,5 +19,6 @@ export declare function useFormPopout(props: UseFormPopoutProps, emit: UseFormPo
|
|
|
16
19
|
innerValue: import("vue").Ref<any, any>;
|
|
17
20
|
popoutValue: import("vue").Ref<any, any>;
|
|
18
21
|
onChange: (value: any, ...args: any[]) => void;
|
|
19
|
-
onConfirm: () => void;
|
|
22
|
+
onConfirm: (showConfirm?: boolean) => void;
|
|
23
|
+
onVisibleHook: (name: TransitionHookName) => void;
|
|
20
24
|
};
|
package/use/useFormPopout.js
CHANGED
|
@@ -23,7 +23,10 @@ export function useFormPopout(props, emit, options = {}) {
|
|
|
23
23
|
restArgs = args;
|
|
24
24
|
options.onChange?.(value, ...args);
|
|
25
25
|
};
|
|
26
|
-
const onConfirm = () => {
|
|
26
|
+
const onConfirm = (showConfirm = true) => {
|
|
27
|
+
if (showConfirm) {
|
|
28
|
+
emit('confirm');
|
|
29
|
+
}
|
|
27
30
|
const extraArgs = options.onConfirmBefore?.();
|
|
28
31
|
if (extraArgs) {
|
|
29
32
|
restArgs = extraArgs;
|
|
@@ -35,11 +38,16 @@ export function useFormPopout(props, emit, options = {}) {
|
|
|
35
38
|
emit('change', ...args);
|
|
36
39
|
}
|
|
37
40
|
};
|
|
41
|
+
const onVisibleHook = (name) => {
|
|
42
|
+
emit('visible-hook', name);
|
|
43
|
+
emit(name);
|
|
44
|
+
};
|
|
38
45
|
return {
|
|
39
46
|
innerVisible: visible,
|
|
40
47
|
innerValue,
|
|
41
48
|
popoutValue,
|
|
42
49
|
onChange,
|
|
43
50
|
onConfirm,
|
|
51
|
+
onVisibleHook,
|
|
44
52
|
};
|
|
45
53
|
}
|
package/use/usePopoutInput.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { type TransitionHookName } from './useTransition';
|
|
2
|
+
import { type TransitionHookEmits } from '../components/popup/common';
|
|
1
3
|
export interface UsePopoutInputProps {
|
|
2
4
|
visible?: boolean;
|
|
3
5
|
modelValue?: any;
|
|
4
6
|
valueOnClear?: () => any;
|
|
5
7
|
}
|
|
6
|
-
export interface UsePopoutInputEmits {
|
|
8
|
+
export interface UsePopoutInputEmits extends TransitionHookEmits {
|
|
7
9
|
(e: 'update:visible', visible: boolean): void;
|
|
8
10
|
(e: 'update:model-value', ...args: any[]): void;
|
|
9
11
|
(e: 'change', ...args: any[]): void;
|
|
@@ -17,4 +19,5 @@ export declare function usePopoutInput(props: UsePopoutInputProps, emit: UsePopo
|
|
|
17
19
|
show: () => void;
|
|
18
20
|
onChange: (...args: any[]) => void;
|
|
19
21
|
onClear: () => void;
|
|
22
|
+
onVisibleHook: (name: TransitionHookName) => void;
|
|
20
23
|
};
|
package/use/usePopoutInput.js
CHANGED
|
@@ -8,6 +8,10 @@ export function usePopoutInput(props, emit, options = {}) {
|
|
|
8
8
|
const show = () => {
|
|
9
9
|
visible.value = true;
|
|
10
10
|
};
|
|
11
|
+
const onVisibleHook = (name) => {
|
|
12
|
+
emit('visible-hook', name);
|
|
13
|
+
emit(name);
|
|
14
|
+
};
|
|
11
15
|
// value
|
|
12
16
|
const innerValue = ref(props.modelValue);
|
|
13
17
|
const getValueOnClear = () => (props.valueOnClear || defaultConfig.valueOnClear || defaultValueOnClear)();
|
|
@@ -38,5 +42,6 @@ export function usePopoutInput(props, emit, options = {}) {
|
|
|
38
42
|
show,
|
|
39
43
|
onChange,
|
|
40
44
|
onClear,
|
|
45
|
+
onVisibleHook,
|
|
41
46
|
};
|
|
42
47
|
}
|
package/utils/dom.js
CHANGED
|
@@ -8,7 +8,9 @@ export function getBoundingClientRect(selector, instance) {
|
|
|
8
8
|
return new Promise((resolve) => {
|
|
9
9
|
uni
|
|
10
10
|
.createSelectorQuery()
|
|
11
|
+
// #ifndef MP-ALIPAY
|
|
11
12
|
.in(instance?.proxy)
|
|
13
|
+
// #endif
|
|
12
14
|
.select(selector)
|
|
13
15
|
.boundingClientRect((data) => {
|
|
14
16
|
resolve(data);
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
@use './bem' as *;
|
|
2
|
-
|
|
3
|
-
@mixin disable-scroll {
|
|
4
|
-
position: fixed;
|
|
5
|
-
inset: 0;
|
|
6
|
-
z-index: var(--sar-disable-scroll-z-index);
|
|
7
|
-
display: none;
|
|
8
|
-
background-color: transparent;
|
|
9
|
-
touch-action: none;
|
|
10
|
-
|
|
11
|
-
@include m(dragging) {
|
|
12
|
-
display: block;
|
|
13
|
-
}
|
|
14
|
-
}
|