sard 1.0.11 → 1.0.13
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/README.md +6 -7
- package/components/action-sheet/action-sheet.vue.d.ts +1 -0
- package/components/action-sheet/action-sheet.vue.js +11 -1
- package/components/action-sheet/common.d.ts +1 -0
- package/components/action-sheet/common.js +4 -1
- package/components/crop-image/common.d.ts +1 -0
- package/components/crop-image/common.js +2 -1
- package/components/crop-image/crop-image.vue.d.ts +1 -0
- package/components/crop-image/crop-image.vue.js +10 -1
- package/components/dialog/common.d.ts +1 -0
- package/components/dialog/common.js +2 -1
- package/components/dialog/dialog.vue.d.ts +1 -0
- package/components/dialog/dialog.vue.js +14 -1
- package/components/index.js +2 -1
- package/components/popout/common.d.ts +1 -0
- package/components/popout/common.js +2 -1
- package/components/popout/popout.vue.d.ts +1 -0
- package/components/popout/popout.vue.js +11 -1
- package/components/popup/common.d.ts +2 -0
- package/components/popup/index.d.ts +1 -0
- package/components/popup/index.js +2 -1
- package/components/popup/popup-manager.d.ts +15 -0
- package/components/popup/popup-manager.js +25 -0
- package/components/popup/popup.vue.d.ts +3 -0
- package/components/popup/popup.vue.js +16 -1
- package/components/preview-image/common.d.ts +1 -0
- package/components/preview-image/common.js +2 -1
- package/components/preview-image/preview-image.vue.d.ts +1 -0
- package/components/preview-image/preview-image.vue.js +14 -1
- package/components/pull-down-refresh/pull-down-refresh.vue.js +1 -1
- package/components/share-sheet/common.d.ts +1 -0
- package/components/share-sheet/common.js +4 -1
- package/components/share-sheet/share-sheet.vue.d.ts +1 -0
- package/components/share-sheet/share-sheet.vue.js +14 -2
- package/components/sidebar/common.d.ts +4 -4
- package/components/sidebar/index.css +1 -1
- package/components/sidebar/sidebar-item.vue.js +6 -6
- package/components/sidebar/sidebar.vue.js +11 -11
- package/components/tabbar/common.d.ts +7 -7
- package/components/tabbar/index.css +1 -1
- package/components/tabbar/tabbar-item.vue.js +8 -8
- package/components/tabbar/tabbar.vue.d.ts +5 -5
- package/components/tabbar/tabbar.vue.js +12 -10
- package/index.css +1 -1
- package/index.js +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -123,13 +123,12 @@ npm run publish
|
|
|
123
123
|
4. 暂存 `git add .`
|
|
124
124
|
5. 提交 `git commit -m 'fix: '`
|
|
125
125
|
6. 给提交打标签 `npm run tag`
|
|
126
|
-
7. 生成 changelog `npm run changelog`
|
|
127
|
-
8.
|
|
128
|
-
9.
|
|
129
|
-
10.
|
|
130
|
-
11.
|
|
131
|
-
12.
|
|
132
|
-
13. 部署文档 `npm run deploy`
|
|
126
|
+
7. 生成 changelog 并暂存、提交 `npm run changelog && git commit -a -m 'chore: changelog'`
|
|
127
|
+
8. 打包组件库 `npm run build:sard`
|
|
128
|
+
9. 发布到 npm `npm run publish:sard`
|
|
129
|
+
10. 推送代码和标签 `npm run push`
|
|
130
|
+
11. 打包文档 `npm run build:site`
|
|
131
|
+
12. 部署文档 `npm run deploy`
|
|
133
132
|
|
|
134
133
|
## 新增组件流程
|
|
135
134
|
|
|
@@ -33,6 +33,7 @@ declare const __VLS_base: import("vue").DefineComponent<ActionSheetProps, {}, {}
|
|
|
33
33
|
cancel: string;
|
|
34
34
|
visible: boolean;
|
|
35
35
|
overlayClosable: boolean;
|
|
36
|
+
closeOnBackPress: boolean;
|
|
36
37
|
description: string;
|
|
37
38
|
itemList: ActionSheetItemProps[];
|
|
38
39
|
showCancel: boolean;
|
|
@@ -42,6 +42,10 @@ var action_sheet_default = /*@__PURE__*/ defineComponent({
|
|
|
42
42
|
internalContext: {
|
|
43
43
|
type: Object,
|
|
44
44
|
required: false
|
|
45
|
+
},
|
|
46
|
+
closeOnBackPress: {
|
|
47
|
+
type: Boolean,
|
|
48
|
+
required: false
|
|
45
49
|
}
|
|
46
50
|
}, defaultActionSheetProps),
|
|
47
51
|
emits: [
|
|
@@ -112,6 +116,10 @@ var action_sheet_default = /*@__PURE__*/ defineComponent({
|
|
|
112
116
|
perhapsClose("close");
|
|
113
117
|
}
|
|
114
118
|
};
|
|
119
|
+
const onBackPress = () => {
|
|
120
|
+
emit("close");
|
|
121
|
+
perhapsClose("close");
|
|
122
|
+
};
|
|
115
123
|
const onSelect = (item, index) => {
|
|
116
124
|
if (!item.disabled && !item.loading) {
|
|
117
125
|
item = { ...item };
|
|
@@ -135,7 +143,9 @@ var action_sheet_default = /*@__PURE__*/ defineComponent({
|
|
|
135
143
|
return openBlock(), createBlock(popup_default, {
|
|
136
144
|
effect: "slide-bottom",
|
|
137
145
|
visible: innerVisible.value,
|
|
146
|
+
"close-on-back-press": __props.closeOnBackPress,
|
|
138
147
|
onOverlayClick,
|
|
148
|
+
onBackPress,
|
|
139
149
|
onVisibleHook
|
|
140
150
|
}, {
|
|
141
151
|
default: withCtx(() => [createElementVNode("div", { class: normalizeClass(actionSheetClass.value) }, [
|
|
@@ -152,7 +162,7 @@ var action_sheet_default = /*@__PURE__*/ defineComponent({
|
|
|
152
162
|
}, [renderSlot(_ctx.$slots, "cancel", {}, () => [createTextVNode(toDisplayString(__props.cancel || unref(t)("cancel")), 1)])], 2)], 64)) : createCommentVNode("v-if", true)
|
|
153
163
|
], 2)]),
|
|
154
164
|
_: 3
|
|
155
|
-
}, 8, ["visible"]);
|
|
165
|
+
}, 8, ["visible", "close-on-back-press"]);
|
|
156
166
|
};
|
|
157
167
|
}
|
|
158
168
|
});
|
|
@@ -22,6 +22,7 @@ export interface ActionSheetProps {
|
|
|
22
22
|
overlayClosable?: boolean;
|
|
23
23
|
beforeClose?: ActionSheetBeforeClose;
|
|
24
24
|
internalContext?: UseActionSheetReturn;
|
|
25
|
+
closeOnBackPress?: boolean;
|
|
25
26
|
}
|
|
26
27
|
export declare const defaultActionSheetProps: DefaultProps<ActionSheetProps>;
|
|
27
28
|
export interface ActionSheetEmits extends MotionEmits {
|
|
@@ -16,6 +16,7 @@ export interface CropImageProps {
|
|
|
16
16
|
beforeCrop?: (width: number, height: number) => number;
|
|
17
17
|
cancelText?: string;
|
|
18
18
|
confirmText?: string;
|
|
19
|
+
closeOnBackPress?: boolean;
|
|
19
20
|
}
|
|
20
21
|
export declare const defaultCropImageProps: DefaultProps<CropImageProps>;
|
|
21
22
|
export interface CropImageSlots {
|
|
@@ -68,6 +68,10 @@ var crop_image_default = /*@__PURE__*/ defineComponent({
|
|
|
68
68
|
confirmText: {
|
|
69
69
|
type: String,
|
|
70
70
|
required: false
|
|
71
|
+
},
|
|
72
|
+
closeOnBackPress: {
|
|
73
|
+
type: Boolean,
|
|
74
|
+
required: false
|
|
71
75
|
}
|
|
72
76
|
}, defaultCropImageProps),
|
|
73
77
|
emits: [
|
|
@@ -95,6 +99,9 @@ var crop_image_default = /*@__PURE__*/ defineComponent({
|
|
|
95
99
|
innerVisible.value = false;
|
|
96
100
|
emit("update:visible", false);
|
|
97
101
|
};
|
|
102
|
+
const onBackPress = () => {
|
|
103
|
+
close();
|
|
104
|
+
};
|
|
98
105
|
const onVisibleHook = (name, el) => {
|
|
99
106
|
emit("visible-hook", name, el);
|
|
100
107
|
emit(name, el);
|
|
@@ -454,6 +461,8 @@ var crop_image_default = /*@__PURE__*/ defineComponent({
|
|
|
454
461
|
effect: "full-fade",
|
|
455
462
|
visible: __props.visible,
|
|
456
463
|
overlay: false,
|
|
464
|
+
"close-on-back-press": __props.closeOnBackPress,
|
|
465
|
+
onBackPress,
|
|
457
466
|
onVisibleHook
|
|
458
467
|
}, {
|
|
459
468
|
default: withCtx(() => [createElementVNode("div", { class: normalizeClass(cropImageClass.value) }, [
|
|
@@ -527,7 +536,7 @@ var crop_image_default = /*@__PURE__*/ defineComponent({
|
|
|
527
536
|
class: normalizeClass(unref(bem).e("loading"))
|
|
528
537
|
}, [createVNode(loading_default)], 2)) : createCommentVNode("v-if", true)]),
|
|
529
538
|
_: 1
|
|
530
|
-
}, 8, ["visible"]);
|
|
539
|
+
}, 8, ["visible", "close-on-back-press"]);
|
|
531
540
|
};
|
|
532
541
|
}
|
|
533
542
|
});
|
|
@@ -20,6 +20,7 @@ export interface DialogProps {
|
|
|
20
20
|
beforeClose?: DialogBeforeClose;
|
|
21
21
|
cancelProps?: ButtonProps;
|
|
22
22
|
confirmProps?: ButtonProps;
|
|
23
|
+
closeOnBackPress?: boolean;
|
|
23
24
|
}
|
|
24
25
|
export declare const defaultDialogProps: DefaultProps<DialogProps>;
|
|
25
26
|
export interface DialogSlots {
|
|
@@ -34,6 +34,7 @@ declare const __VLS_base: import("vue").DefineComponent<DialogProps, {}, {}, {},
|
|
|
34
34
|
title: string;
|
|
35
35
|
visible: boolean;
|
|
36
36
|
overlayClosable: boolean;
|
|
37
|
+
closeOnBackPress: boolean;
|
|
37
38
|
message: string;
|
|
38
39
|
showCancel: boolean;
|
|
39
40
|
beforeClose: import("./common").DialogBeforeClose;
|
|
@@ -62,6 +62,10 @@ var dialog_default = /*@__PURE__*/ defineComponent({
|
|
|
62
62
|
confirmProps: {
|
|
63
63
|
type: Object,
|
|
64
64
|
required: false
|
|
65
|
+
},
|
|
66
|
+
closeOnBackPress: {
|
|
67
|
+
type: Boolean,
|
|
68
|
+
required: false
|
|
65
69
|
}
|
|
66
70
|
}, defaultDialogProps),
|
|
67
71
|
emits: [
|
|
@@ -132,6 +136,9 @@ var dialog_default = /*@__PURE__*/ defineComponent({
|
|
|
132
136
|
const onOverlayClick = () => {
|
|
133
137
|
if (props.overlayClosable) perhapsClose("close");
|
|
134
138
|
};
|
|
139
|
+
const onBackPress = () => {
|
|
140
|
+
perhapsClose("close");
|
|
141
|
+
};
|
|
135
142
|
const onClose = () => {
|
|
136
143
|
perhapsClose("close");
|
|
137
144
|
};
|
|
@@ -186,7 +193,9 @@ var dialog_default = /*@__PURE__*/ defineComponent({
|
|
|
186
193
|
effect: "zoom",
|
|
187
194
|
visible: __props.visible,
|
|
188
195
|
class: normalizeClass(unref(bem).e("popup")),
|
|
196
|
+
"close-on-back-press": __props.closeOnBackPress,
|
|
189
197
|
onOverlayClick,
|
|
198
|
+
onBackPress,
|
|
190
199
|
onVisibleHook
|
|
191
200
|
}, {
|
|
192
201
|
default: withCtx(() => [createElementVNode("div", { class: normalizeClass(dialogClass.value) }, [
|
|
@@ -265,7 +274,11 @@ var dialog_default = /*@__PURE__*/ defineComponent({
|
|
|
265
274
|
], 2)
|
|
266
275
|
], 2)]),
|
|
267
276
|
_: 3
|
|
268
|
-
}, 8, [
|
|
277
|
+
}, 8, [
|
|
278
|
+
"visible",
|
|
279
|
+
"class",
|
|
280
|
+
"close-on-back-press"
|
|
281
|
+
]);
|
|
269
282
|
};
|
|
270
283
|
}
|
|
271
284
|
});
|
package/components/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useInPopup, usePopupEnter, usePopupVisibleHookProvide } from "./popup/common.js";
|
|
2
2
|
import { Accordion, AccordionItem } from "./accordion/index.js";
|
|
3
|
+
import { popupManager } from "./popup/popup-manager.js";
|
|
3
4
|
import { actionSheet, createActionSheet } from "./action-sheet/imperative.js";
|
|
4
5
|
import { ActionSheet, ActionSheetItem } from "./action-sheet/index.js";
|
|
5
6
|
import { Alert } from "./alert/index.js";
|
|
@@ -139,4 +140,4 @@ import { Tree, TreeBranch, TreeNode } from "./tree/index.js";
|
|
|
139
140
|
import { Upload, UploadPreview } from "./upload/index.js";
|
|
140
141
|
import { Waterfall, WaterfallItem, WaterfallLoad } from "./waterfall/index.js";
|
|
141
142
|
import { Watermark } from "./watermark/index.js";
|
|
142
|
-
export { ADD_SWIPER_CONTEXT_KEY, Accordion, AccordionItem, ActionSheet, ActionSheetItem, Alert, Avatar, AvatarGroup, BackTop, Badge, Barcode, Button, Calendar, CalendarInput, CalendarPopout, Card, Cascader, CascaderInput, CascaderPopout, Checkbox, CheckboxGroup, CheckboxInput, CheckboxPopout, Col, Collapse, ColorPicker, ColorPickerInput, ColorPickerPopout, Compact, CoolIcon, CountDown, CountTo, CropImage, DateStrip, DatetimePicker, DatetimePickerInput, DatetimePickerPopout, DatetimeRangePicker, DatetimeRangePickerInput, DatetimeRangePickerPopout, Descriptions, DescriptionsItem, Dialog, Divider, Dnd, DndHandle, DndItem, Dropdown, DropdownItem, Ellipsis, Empty, Fab, FabItem, FloatingBubble, FloatingPanel, Form, FormItem, FormItemPlain, FormPlain, Grid, GridItem, Image, Indexes, IndexesAnchor, IndexesNav, InfiniteList, Input, Keyboard, KeyboardPopout, List, ListItem, LoadMore, Loading, Marquee, Menu, MenuItem, Motion, Navbar, NavbarItem, NavbarPit, NoticeBar, Notify, Overlay, Pagination, PasswordInput, Picker, PickerInput, PickerPopout, PickerView, PickerViewColumn, Popout, PopoutInput, Popover, Popup, PreviewImage, ProgressBar, ProgressCircle, PullDownRefresh, PuzzleVerify, Qrcode, REMOVE_SWIPER_CONTEXT_KEY, Radio, RadioGroup, RadioInput, RadioPopout, Rate, ReadMore, Result, RotateVerify, Row, SWIPER_AUTO_HEIGHT_KEY, ScrollList, ScrollSpy, ScrollSpyAnchor, Search, Segmented, SegmentedItem, Select, SelectInput, SelectOption, SelectOptionGroup, SelectPopout, ShareSheet, ShareSheetIcon, ShareSheetItem, ShareSheetRow, Sidebar, SidebarItem, Signature, Skeleton, SkeletonAvatar, SkeletonBlock, SkeletonParagraph, SkeletonTitle, SlideVerify, Slider, Space, StatusBar, Step, Stepper, Steps, Sticky, StickyBox, SwipeAction, Swiper, SwiperItem, Switch, Tab, Tabbar, TabbarItem, TabbarPit, Table, Tabs, Tag, Text, Timeline, TimelineItem, Toast, Tree, TreeBranch, TreeNode, Upload, UploadPreview, Waterfall, WaterfallItem, WaterfallLoad, Watermark, actionSheet, createActionSheet, createCropImage, createDialog, createNotify, createPreviewImage, createToast, cropImage, dialog, formatTime, getCurrentTime, notify, omitFormPopoutProps, partitionPopoutInputProps, plateEnglishLetterKeys, plateProvinceKeys, plateSuffixKeys, previewImage, safeAreaInsets, spaceSizes, toast, useCountDown, useElementBackTop, useFormContext, useFormItem, useFormItemContext, useFormPopout, useInPopup, useLoadMore, useMotioning, usePageBackTop, usePopoutInput, usePopupEnter, usePopupVisibleHookProvide, windowInfo };
|
|
143
|
+
export { ADD_SWIPER_CONTEXT_KEY, Accordion, AccordionItem, ActionSheet, ActionSheetItem, Alert, Avatar, AvatarGroup, BackTop, Badge, Barcode, Button, Calendar, CalendarInput, CalendarPopout, Card, Cascader, CascaderInput, CascaderPopout, Checkbox, CheckboxGroup, CheckboxInput, CheckboxPopout, Col, Collapse, ColorPicker, ColorPickerInput, ColorPickerPopout, Compact, CoolIcon, CountDown, CountTo, CropImage, DateStrip, DatetimePicker, DatetimePickerInput, DatetimePickerPopout, DatetimeRangePicker, DatetimeRangePickerInput, DatetimeRangePickerPopout, Descriptions, DescriptionsItem, Dialog, Divider, Dnd, DndHandle, DndItem, Dropdown, DropdownItem, Ellipsis, Empty, Fab, FabItem, FloatingBubble, FloatingPanel, Form, FormItem, FormItemPlain, FormPlain, Grid, GridItem, Image, Indexes, IndexesAnchor, IndexesNav, InfiniteList, Input, Keyboard, KeyboardPopout, List, ListItem, LoadMore, Loading, Marquee, Menu, MenuItem, Motion, Navbar, NavbarItem, NavbarPit, NoticeBar, Notify, Overlay, Pagination, PasswordInput, Picker, PickerInput, PickerPopout, PickerView, PickerViewColumn, Popout, PopoutInput, Popover, Popup, PreviewImage, ProgressBar, ProgressCircle, PullDownRefresh, PuzzleVerify, Qrcode, REMOVE_SWIPER_CONTEXT_KEY, Radio, RadioGroup, RadioInput, RadioPopout, Rate, ReadMore, Result, RotateVerify, Row, SWIPER_AUTO_HEIGHT_KEY, ScrollList, ScrollSpy, ScrollSpyAnchor, Search, Segmented, SegmentedItem, Select, SelectInput, SelectOption, SelectOptionGroup, SelectPopout, ShareSheet, ShareSheetIcon, ShareSheetItem, ShareSheetRow, Sidebar, SidebarItem, Signature, Skeleton, SkeletonAvatar, SkeletonBlock, SkeletonParagraph, SkeletonTitle, SlideVerify, Slider, Space, StatusBar, Step, Stepper, Steps, Sticky, StickyBox, SwipeAction, Swiper, SwiperItem, Switch, Tab, Tabbar, TabbarItem, TabbarPit, Table, Tabs, Tag, Text, Timeline, TimelineItem, Toast, Tree, TreeBranch, TreeNode, Upload, UploadPreview, Waterfall, WaterfallItem, WaterfallLoad, Watermark, actionSheet, createActionSheet, createCropImage, createDialog, createNotify, createPreviewImage, createToast, cropImage, dialog, formatTime, getCurrentTime, notify, omitFormPopoutProps, partitionPopoutInputProps, plateEnglishLetterKeys, plateProvinceKeys, plateSuffixKeys, popupManager, previewImage, safeAreaInsets, spaceSizes, toast, useCountDown, useElementBackTop, useFormContext, useFormItem, useFormItemContext, useFormPopout, useInPopup, useLoadMore, useMotioning, usePageBackTop, usePopoutInput, usePopupEnter, usePopupVisibleHookProvide, windowInfo };
|
|
@@ -41,6 +41,7 @@ declare const __VLS_base: import("vue").DefineComponent<PopoutProps, {}, {}, {},
|
|
|
41
41
|
overlayClosable: boolean;
|
|
42
42
|
destroyOnClose: boolean;
|
|
43
43
|
lazy: boolean;
|
|
44
|
+
closeOnBackPress: boolean;
|
|
44
45
|
showCancel: boolean;
|
|
45
46
|
beforeClose: import("./common").PopoutBeforeClose;
|
|
46
47
|
cancelText: string;
|
|
@@ -91,6 +91,10 @@ var popout_default = /*@__PURE__*/ defineComponent({
|
|
|
91
91
|
lazy: {
|
|
92
92
|
type: Boolean,
|
|
93
93
|
required: false
|
|
94
|
+
},
|
|
95
|
+
closeOnBackPress: {
|
|
96
|
+
type: Boolean,
|
|
97
|
+
required: false
|
|
94
98
|
}
|
|
95
99
|
}, defaultPopoutProps),
|
|
96
100
|
emits: [
|
|
@@ -163,6 +167,9 @@ var popout_default = /*@__PURE__*/ defineComponent({
|
|
|
163
167
|
const onOverlayClick = () => {
|
|
164
168
|
if (props.overlayClosable) perhapsClose("close");
|
|
165
169
|
};
|
|
170
|
+
const onBackPress = () => {
|
|
171
|
+
perhapsClose("close");
|
|
172
|
+
};
|
|
166
173
|
const onCloseClick = () => {
|
|
167
174
|
perhapsClose("close");
|
|
168
175
|
};
|
|
@@ -192,7 +199,9 @@ var popout_default = /*@__PURE__*/ defineComponent({
|
|
|
192
199
|
transparent: __props.transparent,
|
|
193
200
|
"destroy-on-close": __props.destroyOnClose,
|
|
194
201
|
lazy: __props.lazy,
|
|
202
|
+
"close-on-back-press": __props.closeOnBackPress,
|
|
195
203
|
onOverlayClick,
|
|
204
|
+
onBackPress,
|
|
196
205
|
onVisibleHook
|
|
197
206
|
}, {
|
|
198
207
|
default: withCtx(() => [createElementVNode("div", {
|
|
@@ -299,7 +308,8 @@ var popout_default = /*@__PURE__*/ defineComponent({
|
|
|
299
308
|
"background",
|
|
300
309
|
"transparent",
|
|
301
310
|
"destroy-on-close",
|
|
302
|
-
"lazy"
|
|
311
|
+
"lazy",
|
|
312
|
+
"close-on-back-press"
|
|
303
313
|
]);
|
|
304
314
|
};
|
|
305
315
|
}
|
|
@@ -14,6 +14,7 @@ export interface PopupProps {
|
|
|
14
14
|
lockScroll?: boolean;
|
|
15
15
|
destroyOnClose?: boolean;
|
|
16
16
|
lazy?: boolean;
|
|
17
|
+
closeOnBackPress?: boolean;
|
|
17
18
|
}
|
|
18
19
|
export declare const mapEffectMotion: Record<PopupEffect, MotionName>;
|
|
19
20
|
export declare const defaultPopupProps: DefaultProps<PopupProps>;
|
|
@@ -33,6 +34,7 @@ export interface TransitionHookCallbacks {
|
|
|
33
34
|
}
|
|
34
35
|
export interface PopupEmits extends MotionEmits {
|
|
35
36
|
(e: 'overlay-click', event: any): void;
|
|
37
|
+
(e: 'back-press'): void;
|
|
36
38
|
(e: 'update:visible', visible: boolean): void;
|
|
37
39
|
}
|
|
38
40
|
export interface PopupExpose {
|
|
@@ -3,3 +3,4 @@ import _Popup from './popup.vue';
|
|
|
3
3
|
export declare const Popup: EnhancedComponent<typeof _Popup>;
|
|
4
4
|
export default Popup;
|
|
5
5
|
export { type PopupProps, type PopupSlots, type PopupEmits, type PopupExpose, type PopupContext, usePopupVisibleHookProvide, usePopupEnter, useInPopup, } from './common';
|
|
6
|
+
export { type PopupItem, popupManager } from './popup-manager';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { enhanceComponent } from "../../utils/component.js";
|
|
2
2
|
import { useInPopup, usePopupEnter, usePopupVisibleHookProvide } from "./common.js";
|
|
3
|
+
import { popupManager } from "./popup-manager.js";
|
|
3
4
|
import popup_default from "./popup.vue.js";
|
|
4
5
|
//#region packages/sard/components/popup/index.ts
|
|
5
6
|
const Popup = enhanceComponent(popup_default);
|
|
6
7
|
//#endregion
|
|
7
|
-
export { Popup, Popup as default, useInPopup, usePopupEnter, usePopupVisibleHookProvide };
|
|
8
|
+
export { Popup, Popup as default, popupManager, useInPopup, usePopupEnter, usePopupVisibleHookProvide };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface PopupItem {
|
|
2
|
+
close: () => void;
|
|
3
|
+
}
|
|
4
|
+
export declare function createPopupManager(): {
|
|
5
|
+
stack: import("vue").Reactive<PopupItem[]>;
|
|
6
|
+
push: (item: PopupItem) => void;
|
|
7
|
+
pop: () => void;
|
|
8
|
+
remove: (item: PopupItem) => void;
|
|
9
|
+
};
|
|
10
|
+
export declare const popupManager: {
|
|
11
|
+
stack: import("vue").Reactive<PopupItem[]>;
|
|
12
|
+
push: (item: PopupItem) => void;
|
|
13
|
+
pop: () => void;
|
|
14
|
+
remove: (item: PopupItem) => void;
|
|
15
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { reactive } from "vue";
|
|
2
|
+
//#region packages/sard/components/popup/popup-manager.ts
|
|
3
|
+
function createPopupManager() {
|
|
4
|
+
const stack = reactive([]);
|
|
5
|
+
const push = (item) => {
|
|
6
|
+
if (!stack.includes(item)) stack.push(item);
|
|
7
|
+
};
|
|
8
|
+
const pop = () => {
|
|
9
|
+
const item = stack.pop();
|
|
10
|
+
if (item) item.close();
|
|
11
|
+
};
|
|
12
|
+
const remove = (item) => {
|
|
13
|
+
const index = stack.indexOf(item);
|
|
14
|
+
if (index !== -1) stack.splice(index, 1);
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
stack,
|
|
18
|
+
push,
|
|
19
|
+
pop,
|
|
20
|
+
remove
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const popupManager = createPopupManager();
|
|
24
|
+
//#endregion
|
|
25
|
+
export { createPopupManager, popupManager };
|
|
@@ -12,6 +12,7 @@ declare const __VLS_base: import("vue").DefineComponent<PopupProps, {}, {}, {},
|
|
|
12
12
|
"leave-cancelled": (el: Element) => any;
|
|
13
13
|
"visible-hook": (name: MotionHookName, el: Element) => any;
|
|
14
14
|
"overlay-click": (event: any) => any;
|
|
15
|
+
"back-press": () => any;
|
|
15
16
|
"update:visible": (visible: boolean) => any;
|
|
16
17
|
}, string, import("vue").PublicProps, Readonly<PopupProps> & Readonly<{
|
|
17
18
|
"onBefore-enter"?: ((el: Element) => any) | undefined;
|
|
@@ -24,6 +25,7 @@ declare const __VLS_base: import("vue").DefineComponent<PopupProps, {}, {}, {},
|
|
|
24
25
|
"onLeave-cancelled"?: ((el: Element) => any) | undefined;
|
|
25
26
|
"onVisible-hook"?: ((name: MotionHookName, el: Element) => any) | undefined;
|
|
26
27
|
"onOverlay-click"?: ((event: any) => any) | undefined;
|
|
28
|
+
"onBack-press"?: (() => any) | undefined;
|
|
27
29
|
"onUpdate:visible"?: ((visible: boolean) => any) | undefined;
|
|
28
30
|
}>, {
|
|
29
31
|
background: string;
|
|
@@ -37,6 +39,7 @@ declare const __VLS_base: import("vue").DefineComponent<PopupProps, {}, {}, {},
|
|
|
37
39
|
lockScroll: boolean;
|
|
38
40
|
destroyOnClose: boolean;
|
|
39
41
|
lazy: boolean;
|
|
42
|
+
closeOnBackPress: boolean;
|
|
40
43
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
41
44
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
42
45
|
declare const _default: typeof __VLS_export;
|
|
@@ -4,7 +4,8 @@ import { defaultPopupProps, mapEffectMotion, usePopupVisibleHookProvide } from "
|
|
|
4
4
|
import { useLockScroll } from "../../use/useLockScroll.js";
|
|
5
5
|
import motion_default from "../motion/motion.vue.js";
|
|
6
6
|
import overlay_default from "../overlay/overlay.vue.js";
|
|
7
|
-
import {
|
|
7
|
+
import { popupManager } from "./popup-manager.js";
|
|
8
|
+
import { Teleport, computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, mergeDefaults, mergeProps, normalizeClass, normalizeStyle, onUnmounted, openBlock, ref, renderSlot, unref, vShow, withCtx, withDirectives } from "vue";
|
|
8
9
|
//#region packages/sard/components/popup/popup.vue
|
|
9
10
|
var popup_default = /*@__PURE__*/ defineComponent({
|
|
10
11
|
inheritAttrs: false,
|
|
@@ -67,10 +68,15 @@ var popup_default = /*@__PURE__*/ defineComponent({
|
|
|
67
68
|
lazy: {
|
|
68
69
|
type: Boolean,
|
|
69
70
|
required: false
|
|
71
|
+
},
|
|
72
|
+
closeOnBackPress: {
|
|
73
|
+
type: Boolean,
|
|
74
|
+
required: false
|
|
70
75
|
}
|
|
71
76
|
}, defaultPopupProps),
|
|
72
77
|
emits: [
|
|
73
78
|
"overlay-click",
|
|
79
|
+
"back-press",
|
|
74
80
|
"update:visible",
|
|
75
81
|
"before-enter",
|
|
76
82
|
"enter",
|
|
@@ -96,8 +102,10 @@ var popup_default = /*@__PURE__*/ defineComponent({
|
|
|
96
102
|
if (name === "before-enter") {
|
|
97
103
|
increaseZIndex();
|
|
98
104
|
rendered.value = true;
|
|
105
|
+
if (props.closeOnBackPress) popupManager.push(popupItem);
|
|
99
106
|
} else if (name === "after-leave") {
|
|
100
107
|
if (props.destroyOnClose) rendered.value = false;
|
|
108
|
+
popupManager.remove(popupItem);
|
|
101
109
|
}
|
|
102
110
|
callVisibleHook(name);
|
|
103
111
|
emit("visible-hook", name, el);
|
|
@@ -108,6 +116,13 @@ var popup_default = /*@__PURE__*/ defineComponent({
|
|
|
108
116
|
if (props.overlayClosable) emit("update:visible", false);
|
|
109
117
|
};
|
|
110
118
|
useLockScroll(() => props.visible, props.lockScroll);
|
|
119
|
+
const popupItem = { close: () => {
|
|
120
|
+
emit("back-press");
|
|
121
|
+
emit("update:visible", false);
|
|
122
|
+
} };
|
|
123
|
+
onUnmounted(() => {
|
|
124
|
+
popupManager.remove(popupItem);
|
|
125
|
+
});
|
|
111
126
|
const popupClass = computed(() => {
|
|
112
127
|
return [bem.b(), bem.m(props.effect)];
|
|
113
128
|
});
|
|
@@ -27,6 +27,7 @@ declare const __VLS_base: import("vue").DefineComponent<PreviewImageProps, Previ
|
|
|
27
27
|
"onUpdate:current"?: ((current: number) => any) | undefined;
|
|
28
28
|
}>, {
|
|
29
29
|
visible: boolean;
|
|
30
|
+
closeOnBackPress: boolean;
|
|
30
31
|
current: number;
|
|
31
32
|
urls: string[];
|
|
32
33
|
showIndicator: boolean;
|
|
@@ -34,6 +34,10 @@ var preview_image_default = /*@__PURE__*/ defineComponent({
|
|
|
34
34
|
loop: {
|
|
35
35
|
type: Boolean,
|
|
36
36
|
required: false
|
|
37
|
+
},
|
|
38
|
+
closeOnBackPress: {
|
|
39
|
+
type: Boolean,
|
|
40
|
+
required: false
|
|
37
41
|
}
|
|
38
42
|
}, defaultPreviewImageProps),
|
|
39
43
|
emits: [
|
|
@@ -62,6 +66,9 @@ var preview_image_default = /*@__PURE__*/ defineComponent({
|
|
|
62
66
|
visibleSwitching.value = false;
|
|
63
67
|
}, 150);
|
|
64
68
|
});
|
|
69
|
+
const onBackPress = () => {
|
|
70
|
+
close();
|
|
71
|
+
};
|
|
65
72
|
const onVisibleHook = (name, el) => {
|
|
66
73
|
if (name === "before-enter") resetSlideDown();
|
|
67
74
|
emit("visible-hook", name, el);
|
|
@@ -141,6 +148,8 @@ var preview_image_default = /*@__PURE__*/ defineComponent({
|
|
|
141
148
|
unref(bem).is("immersive", isImmersive.value)
|
|
142
149
|
],
|
|
143
150
|
visible: unref(innerVisible),
|
|
151
|
+
"close-on-back-press": __props.closeOnBackPress,
|
|
152
|
+
onBackPress,
|
|
144
153
|
onVisibleHook
|
|
145
154
|
}, {
|
|
146
155
|
default: withCtx(() => [createElementVNode("div", {
|
|
@@ -176,7 +185,11 @@ var preview_image_default = /*@__PURE__*/ defineComponent({
|
|
|
176
185
|
class: normalizeClass(unref(bem).e("indicator"))
|
|
177
186
|
}, toDisplayString(unref(current) + 1) + " / " + toDisplayString(__props.urls.length), 3)) : createCommentVNode("v-if", true)], 2)]),
|
|
178
187
|
_: 1
|
|
179
|
-
}, 8, [
|
|
188
|
+
}, 8, [
|
|
189
|
+
"overlay-class",
|
|
190
|
+
"visible",
|
|
191
|
+
"close-on-back-press"
|
|
192
|
+
]);
|
|
180
193
|
};
|
|
181
194
|
}
|
|
182
195
|
});
|
|
@@ -52,7 +52,7 @@ var pull_down_refresh_default = /*@__PURE__*/ defineComponent({
|
|
|
52
52
|
recoveringTimer.clear();
|
|
53
53
|
initialTimer.clear();
|
|
54
54
|
status.value = "loading";
|
|
55
|
-
translateY.value = props.headerHeight;
|
|
55
|
+
if (!props.disabled) translateY.value = props.headerHeight;
|
|
56
56
|
};
|
|
57
57
|
const toRecovering = () => {
|
|
58
58
|
status.value = "recovering";
|
|
@@ -11,6 +11,7 @@ export interface ShareSheetProps {
|
|
|
11
11
|
visible?: boolean;
|
|
12
12
|
overlayClosable?: boolean;
|
|
13
13
|
beforeClose?: ShareSheetbeforeClose;
|
|
14
|
+
closeOnBackPress?: boolean;
|
|
14
15
|
}
|
|
15
16
|
export declare const defaultShareSheetProps: DefaultProps<ShareSheetProps>;
|
|
16
17
|
export interface ShareSheetEmits extends MotionEmits {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
//#region packages/sard/components/share-sheet/common.ts
|
|
2
|
-
const defaultShareSheetProps = {
|
|
2
|
+
const defaultShareSheetProps = {
|
|
3
|
+
overlayClosable: true,
|
|
4
|
+
closeOnBackPress: true
|
|
5
|
+
};
|
|
3
6
|
const defaultShareSheetRowProps = {};
|
|
4
7
|
//#endregion
|
|
5
8
|
export { defaultShareSheetProps, defaultShareSheetRowProps };
|
|
@@ -34,6 +34,7 @@ declare const __VLS_base: import("vue").DefineComponent<ShareSheetProps, {}, {},
|
|
|
34
34
|
cancel: string;
|
|
35
35
|
visible: boolean;
|
|
36
36
|
overlayClosable: boolean;
|
|
37
|
+
closeOnBackPress: boolean;
|
|
37
38
|
description: string;
|
|
38
39
|
showCancel: boolean;
|
|
39
40
|
beforeClose: import("./common").ShareSheetbeforeClose;
|
|
@@ -37,6 +37,10 @@ var share_sheet_default = /*@__PURE__*/ defineComponent({
|
|
|
37
37
|
beforeClose: {
|
|
38
38
|
type: Function,
|
|
39
39
|
required: false
|
|
40
|
+
},
|
|
41
|
+
closeOnBackPress: {
|
|
42
|
+
type: Boolean,
|
|
43
|
+
required: false
|
|
40
44
|
}
|
|
41
45
|
}, defaultShareSheetProps),
|
|
42
46
|
emits: [
|
|
@@ -86,8 +90,14 @@ var share_sheet_default = /*@__PURE__*/ defineComponent({
|
|
|
86
90
|
emit("update:visible", false);
|
|
87
91
|
};
|
|
88
92
|
const onOverlayClick = () => {
|
|
93
|
+
if (props.overlayClosable) {
|
|
94
|
+
emit("close");
|
|
95
|
+
perhapsClose("close");
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const onBackPress = () => {
|
|
89
99
|
emit("close");
|
|
90
|
-
|
|
100
|
+
perhapsClose("close");
|
|
91
101
|
};
|
|
92
102
|
const onSelect = (item) => {
|
|
93
103
|
emit("select", { ...item });
|
|
@@ -109,7 +119,9 @@ var share_sheet_default = /*@__PURE__*/ defineComponent({
|
|
|
109
119
|
return openBlock(), createBlock(popup_default, {
|
|
110
120
|
effect: "slide-bottom",
|
|
111
121
|
visible: innerVisible.value,
|
|
122
|
+
"close-on-back-press": __props.closeOnBackPress,
|
|
112
123
|
onOverlayClick,
|
|
124
|
+
onBackPress,
|
|
113
125
|
onVisibleHook
|
|
114
126
|
}, {
|
|
115
127
|
default: withCtx(() => [createElementVNode("div", { class: normalizeClass(shareSheetClass.value) }, [
|
|
@@ -130,7 +142,7 @@ var share_sheet_default = /*@__PURE__*/ defineComponent({
|
|
|
130
142
|
}, [renderSlot(_ctx.$slots, "cancel", {}, () => [createTextVNode(toDisplayString(__props.cancel || unref(t)("cancel")), 1)])], 2)], 64)) : createCommentVNode("v-if", true)
|
|
131
143
|
], 2)]),
|
|
132
144
|
_: 3
|
|
133
|
-
}, 8, ["visible"]);
|
|
145
|
+
}, 8, ["visible", "close-on-back-press"]);
|
|
134
146
|
};
|
|
135
147
|
}
|
|
136
148
|
});
|
|
@@ -17,10 +17,10 @@ export interface SidebarExpose {
|
|
|
17
17
|
}
|
|
18
18
|
export interface SidebarMember {
|
|
19
19
|
el: HTMLElement | null;
|
|
20
|
-
|
|
20
|
+
value: string | number;
|
|
21
21
|
}
|
|
22
22
|
export interface SidebarContext {
|
|
23
|
-
|
|
23
|
+
value: any;
|
|
24
24
|
select: (member: SidebarMember) => void;
|
|
25
25
|
addMember: (member: SidebarMember) => void;
|
|
26
26
|
removeMember: (member: SidebarMember) => void;
|
|
@@ -29,8 +29,8 @@ export interface SidebarContext {
|
|
|
29
29
|
}
|
|
30
30
|
export declare const sidebarContextKey: InjectionKey<SidebarContext>;
|
|
31
31
|
export interface SidebarItemProps {
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
label?: string;
|
|
33
|
+
value: string | number;
|
|
34
34
|
disabled?: boolean;
|
|
35
35
|
}
|
|
36
36
|
export interface SidebarItemSlots {
|