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.
Files changed (88) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +1 -1
  3. package/components/action-sheet/README.md +15 -6
  4. package/components/action-sheet/action-sheet.d.ts +6 -10
  5. package/components/action-sheet/action-sheet.vue +16 -2
  6. package/components/action-sheet/common.d.ts +2 -1
  7. package/components/calendar-input/calendar-input.d.ts +5 -7
  8. package/components/calendar-input/calendar-input.vue +26 -3
  9. package/components/calendar-popout/README.md +15 -5
  10. package/components/calendar-popout/calendar-popout.d.ts +5 -7
  11. package/components/calendar-popout/calendar-popout.vue +19 -12
  12. package/components/calendar-popout/common.d.ts +3 -1
  13. package/components/cascader-input/cascader-input.d.ts +5 -10
  14. package/components/cascader-input/cascader-input.vue +26 -3
  15. package/components/cascader-popout/README.md +16 -6
  16. package/components/cascader-popout/cascader-popout.d.ts +5 -9
  17. package/components/cascader-popout/cascader-popout.vue +19 -12
  18. package/components/cascader-popout/common.d.ts +3 -1
  19. package/components/checkbox-input/checkbox-input.d.ts +5 -7
  20. package/components/checkbox-input/checkbox-input.vue +26 -3
  21. package/components/checkbox-popout/README.md +15 -5
  22. package/components/checkbox-popout/checkbox-popout.d.ts +5 -7
  23. package/components/checkbox-popout/checkbox-popout.vue +14 -6
  24. package/components/checkbox-popout/common.d.ts +3 -1
  25. package/components/crop-image/README.md +12 -3
  26. package/components/crop-image/common.d.ts +2 -1
  27. package/components/crop-image/crop-image.d.ts +5 -3
  28. package/components/crop-image/crop-image.vue +16 -2
  29. package/components/datetime-picker-input/datetime-picker-input.d.ts +5 -7
  30. package/components/datetime-picker-input/datetime-picker-input.vue +26 -3
  31. package/components/datetime-picker-popout/README.md +15 -5
  32. package/components/datetime-picker-popout/common.d.ts +3 -1
  33. package/components/datetime-picker-popout/datetime-picker-popout.d.ts +5 -7
  34. package/components/datetime-picker-popout/datetime-picker-popout.vue +21 -3
  35. package/components/datetime-range-picker-input/datetime-range-picker-input.d.ts +5 -7
  36. package/components/datetime-range-picker-input/datetime-range-picker-input.vue +26 -3
  37. package/components/datetime-range-picker-popout/README.md +15 -5
  38. package/components/datetime-range-picker-popout/common.d.ts +3 -1
  39. package/components/datetime-range-picker-popout/datetime-range-picker-popout.d.ts +5 -7
  40. package/components/datetime-range-picker-popout/datetime-range-picker-popout.vue +21 -3
  41. package/components/dialog/dialog.d.ts +1 -1
  42. package/components/dialog-agent/dialog-agent.d.ts +1 -1
  43. package/components/dnd/README.md +0 -6
  44. package/components/dnd/dnd.vue +1 -14
  45. package/components/dnd/index.scss +0 -4
  46. package/components/dnd-handle/index.scss +0 -1
  47. package/components/icon/common.d.ts +3 -0
  48. package/components/icon/icon.d.ts +5 -1
  49. package/components/icon/icon.vue +8 -3
  50. package/components/icon/index.d.ts +1 -1
  51. package/components/list/README.md +10 -10
  52. package/components/list-item/list-item.vue +1 -1
  53. package/components/picker-input/picker-input.d.ts +6 -8
  54. package/components/picker-input/picker-input.vue +26 -3
  55. package/components/picker-popout/README.md +15 -5
  56. package/components/picker-popout/common.d.ts +3 -1
  57. package/components/picker-popout/picker-popout.d.ts +6 -8
  58. package/components/picker-popout/picker-popout.vue +21 -3
  59. package/components/popout/popout.d.ts +1 -1
  60. package/components/radio-input/radio-input.d.ts +5 -7
  61. package/components/radio-input/radio-input.vue +26 -3
  62. package/components/radio-popout/README.md +15 -5
  63. package/components/radio-popout/common.d.ts +3 -1
  64. package/components/radio-popout/radio-popout.d.ts +5 -7
  65. package/components/radio-popout/radio-popout.vue +14 -6
  66. package/components/rate/rate.d.ts +1 -1
  67. package/components/share-sheet/README.md +15 -6
  68. package/components/share-sheet/common.d.ts +2 -1
  69. package/components/share-sheet/share-sheet.d.ts +6 -10
  70. package/components/share-sheet/share-sheet.vue +16 -2
  71. package/components/style/mixins.scss +0 -1
  72. package/components/style/variables.scss +0 -2
  73. package/components/tree/common.d.ts +0 -1
  74. package/components/tree/index.scss +0 -4
  75. package/components/tree/tree.vue +2 -16
  76. package/components/tree-node/index.scss +1 -0
  77. package/components/tree-node/tree-node.vue +0 -2
  78. package/components/upload/README.md +13 -4
  79. package/components/upload/common.d.ts +6 -0
  80. package/components/upload/upload.vue +37 -30
  81. package/components/waterfall/README.md +1 -1
  82. package/package.json +2 -2
  83. package/use/useFormPopout.d.ts +6 -2
  84. package/use/useFormPopout.js +9 -1
  85. package/use/usePopoutInput.d.ts +4 -1
  86. package/use/usePopoutInput.js +5 -0
  87. package/utils/dom.js +2 -0
  88. 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
- "update:model-value": (value: any) => any;
5
- change: (value: any) => any;
6
- "update:visible": (visible: boolean) => any;
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
- "onUpdate:model-value"?: ((value: any) => any) | undefined;
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 | 分享面板显隐时触发 | (visible: boolean) => void |
74
- | close | 点击遮罩时触发 | () => void |
75
- | cancel | 点击取消按钮时触发 | () => void |
76
- | select | 点击分享项时触发 | (item: ShareSheetItem) => void |
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, type ShareSheetItem } from './common';
2
- declare const _default: import("vue").DefineComponent<ShareSheetProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
3
- cancel: () => any;
4
- close: () => any;
5
- select: (item: ShareSheetItem) => any;
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
- onCancel?: (() => any) | undefined;
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;
@@ -7,4 +7,3 @@
7
7
  @forward './mixins/universal';
8
8
  @forward './mixins/bem';
9
9
  @forward './mixins/scroll-shadow';
10
- @forward './mixins/disable-scroll';
@@ -211,7 +211,5 @@ page,
211
211
  --sar-duration-slow: 500ms;
212
212
  --sar-duration: 300ms;
213
213
  --sar-duration-fast: 150ms;
214
-
215
- --sar-disable-scroll-z-index: 999999;
216
214
  }
217
215
  // #endvariables
@@ -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;
@@ -10,8 +10,4 @@
10
10
  @include e(input-wrapper) {
11
11
  padding: var(--sar-dialog-body-padding-y) var(--sar-dialog-body-padding-x);
12
12
  }
13
-
14
- /* #ifdef MP-ALIPAY */
15
- @include disable-scroll;
16
- /* #endif */
17
13
  }
@@ -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, get classNames() {
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
  });
@@ -94,6 +94,7 @@
94
94
  line-height: var(--sar-leading-none);
95
95
  color: var(--sar-tree-drag-color);
96
96
  cursor: pointer;
97
+ touch-action: none;
97
98
 
98
99
  &:active {
99
100
  opacity: var(--sar-tree-drag-active-opacity);
@@ -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.0+</sup>
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
- | select | 自定义选取内容 | - |
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
- <view :class="bem.e('wrapper')">
4
- <sar-upload-preview
5
- v-for="(item, index) in innerValue"
6
- :key="index"
7
- :file="item.file"
8
- :url="item.url"
9
- :is-image="item.isImage"
10
- :is-video="item.isVideo"
11
- :status="item.status"
12
- :name="item.name"
13
- :message="item.message"
14
- :removable="removable"
15
- :index="index"
16
- :disabled="isDisabled"
17
- :readonly="isReadonly"
18
- @remove="onRemove(index, item)"
19
- @image-click="onImageClick(index)"
20
- @click="onItemClick(index, item)"
21
- />
22
- <view
23
- v-if="innerValue.length < maxCount && !isReadonly"
24
- :class="bem.e('select')"
25
- @click="onSelect"
26
- >
27
- <slot name="select">
28
- <view :class="bem.e('select-icon')">
29
- <sar-icon family="sari" name="plus" />
30
- </view>
31
- </slot>
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
- </view>
40
+ </slot>
34
41
  </view>
35
42
  </template>
36
43
 
@@ -3,7 +3,7 @@ nav: 组件
3
3
  title: Waterfall
4
4
  subtitle: 瀑布流
5
5
  group: 布局
6
- version: 1.21.0+
6
+ version: 1.21+
7
7
  ---
8
8
 
9
9
  ## 介绍
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.0",
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.4",
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",
@@ -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
  };
@@ -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
  }
@@ -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
  };
@@ -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
- }