vant 4.6.4-beta.2 → 4.6.5

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 (56) hide show
  1. package/README.md +4 -1
  2. package/es/dropdown-menu/DropdownMenu.d.ts +3 -0
  3. package/es/dropdown-menu/DropdownMenu.mjs +7 -3
  4. package/es/dropdown-menu/index.css +1 -1
  5. package/es/dropdown-menu/index.d.ts +2 -0
  6. package/es/floating-bubble/FloatingBubble.mjs +6 -4
  7. package/es/floating-panel/FloatingPanel.d.ts +4 -0
  8. package/es/floating-panel/FloatingPanel.mjs +14 -8
  9. package/es/floating-panel/index.d.ts +3 -0
  10. package/es/image-preview/ImagePreview.d.ts +13 -0
  11. package/es/image-preview/ImagePreview.mjs +2 -0
  12. package/es/image-preview/ImagePreviewItem.d.ts +3 -0
  13. package/es/image-preview/ImagePreviewItem.mjs +8 -3
  14. package/es/image-preview/function-call.mjs +1 -0
  15. package/es/image-preview/index.d.ts +9 -0
  16. package/es/image-preview/types.d.ts +1 -0
  17. package/es/index.d.ts +1 -1
  18. package/es/index.mjs +1 -1
  19. package/es/list/List.d.ts +7 -4
  20. package/es/list/List.mjs +5 -3
  21. package/es/list/index.d.ts +2 -0
  22. package/es/locale/lang/sr-RS.d.ts +63 -0
  23. package/es/locale/lang/sr-RS.mjs +73 -0
  24. package/es/text-ellipsis/TextEllipsis.mjs +7 -7
  25. package/es/toast/index.d.ts +1 -1
  26. package/lib/dropdown-menu/DropdownMenu.d.ts +3 -0
  27. package/lib/dropdown-menu/DropdownMenu.js +7 -3
  28. package/lib/dropdown-menu/index.css +1 -1
  29. package/lib/dropdown-menu/index.d.ts +2 -0
  30. package/lib/floating-bubble/FloatingBubble.js +5 -3
  31. package/lib/floating-panel/FloatingPanel.d.ts +4 -0
  32. package/lib/floating-panel/FloatingPanel.js +12 -6
  33. package/lib/floating-panel/index.d.ts +3 -0
  34. package/lib/image-preview/ImagePreview.d.ts +13 -0
  35. package/lib/image-preview/ImagePreview.js +2 -0
  36. package/lib/image-preview/ImagePreviewItem.d.ts +3 -0
  37. package/lib/image-preview/ImagePreviewItem.js +8 -3
  38. package/lib/image-preview/function-call.js +1 -0
  39. package/lib/image-preview/index.d.ts +9 -0
  40. package/lib/image-preview/types.d.ts +1 -0
  41. package/lib/index.css +1 -1
  42. package/lib/index.d.ts +1 -1
  43. package/lib/index.js +1 -1
  44. package/lib/list/List.d.ts +7 -4
  45. package/lib/list/List.js +4 -2
  46. package/lib/list/index.d.ts +2 -0
  47. package/lib/locale/lang/sr-RS.d.ts +63 -0
  48. package/lib/locale/lang/sr-RS.js +92 -0
  49. package/lib/text-ellipsis/TextEllipsis.js +7 -7
  50. package/lib/toast/index.d.ts +1 -1
  51. package/lib/vant.cjs.js +47 -25
  52. package/lib/vant.es.js +47 -25
  53. package/lib/vant.js +47 -25
  54. package/lib/vant.min.js +1 -1
  55. package/lib/web-types.json +1 -1
  56. package/package.json +3 -3
@@ -0,0 +1,73 @@
1
+ var stdin_default = {
2
+ name: "Ime i prezime",
3
+ tel: "Broj telefona",
4
+ save: "Sa\u010Duvaj",
5
+ clear: "Prazno",
6
+ cancel: "Otka\u017Ei",
7
+ confirm: "Potvrdi",
8
+ delete: "Brisanje",
9
+ loading: "U\u010Ditavanje...",
10
+ noCoupon: "Jo\u0161 nema kupona",
11
+ nameEmpty: "Molimo unesite ime",
12
+ addContact: "Dodaj kontakte",
13
+ telInvalid: "Molimo unesite broj telefona",
14
+ vanCalendar: {
15
+ end: "Zavr\u0161etak",
16
+ start: "Po\u010Detak",
17
+ title: "Izaberite Datum",
18
+ weekdays: [
19
+ "Nedelja",
20
+ "Ponedeljak",
21
+ "Utorak",
22
+ "Sreda",
23
+ "\u010Cetvrtak",
24
+ "Petak",
25
+ "Subota"
26
+ ],
27
+ monthTitle: (year, month) => `${year}/${month}`,
28
+ rangePrompt: (maxRange) => `Izaberite do ${maxRange} dana`
29
+ },
30
+ vanCascader: {
31
+ select: "Molimo izaberite "
32
+ },
33
+ vanPagination: {
34
+ prev: "Prethodna strana",
35
+ next: "Sledec\u0301a strana"
36
+ },
37
+ vanPullRefresh: {
38
+ pulling: "Prevucite nadole da osve\u017Eite...",
39
+ loosing: "Otpustite da osve\u017Eite..."
40
+ },
41
+ vanSubmitBar: {
42
+ label: "Ukupno:"
43
+ },
44
+ vanCoupon: {
45
+ unlimited: "No threshold",
46
+ discount: (discount) => `${discount} puta`,
47
+ condition: (condition) => `Dostupno za preko ${condition} juana`
48
+ },
49
+ vanCouponCell: {
50
+ title: "Kupon",
51
+ count: (count) => `Dostupan ${count}`
52
+ },
53
+ vanCouponList: {
54
+ exchange: "Razmeni",
55
+ close: "Ne koristi",
56
+ enable: "Iskoristi",
57
+ disabled: "Nedostupno",
58
+ placeholder: "Unesite promo kod"
59
+ },
60
+ vanAddressEdit: {
61
+ area: "Region",
62
+ areaEmpty: "Molimo odaberite region",
63
+ addressEmpty: "Molimo upi\u0161ite adresu",
64
+ addressDetail: "Adresa",
65
+ defaultAddress: "Postavi kao podrazumevanu adresu za isporuku"
66
+ },
67
+ vanAddressList: {
68
+ add: "Dodaj adresu"
69
+ }
70
+ };
71
+ export {
72
+ stdin_default as default
73
+ };
@@ -22,7 +22,7 @@ var stdin_default = defineComponent({
22
22
  const expanded = ref(false);
23
23
  const hasAction = ref(false);
24
24
  const root = ref();
25
- const actionText = computed(() => expanded.value ? props.expandText : props.collapseText);
25
+ const actionText = computed(() => expanded.value ? props.collapseText : props.expandText);
26
26
  const pxToNum = (value) => {
27
27
  if (!value)
28
28
  return 0;
@@ -64,7 +64,7 @@ var stdin_default = defineComponent({
64
64
  }
65
65
  return dots + content.slice(right, end);
66
66
  }
67
- const middle2 = Math.round(left + right >> 1);
67
+ const middle2 = Math.round((left + right) / 2);
68
68
  if (position === "end") {
69
69
  container2.innerText = content.slice(0, middle2) + dots + actionText.value;
70
70
  } else {
@@ -85,11 +85,11 @@ var stdin_default = defineComponent({
85
85
  };
86
86
  const middleTail = (leftPart, rightPart) => {
87
87
  if (leftPart[1] - leftPart[0] <= 1 && rightPart[1] - rightPart[0] <= 1) {
88
- return content.slice(0, leftPart[1]) + dots + content.slice(rightPart[1], end);
88
+ return content.slice(0, leftPart[0]) + dots + content.slice(rightPart[1], end);
89
89
  }
90
- const leftMiddle = Math.floor(leftPart[0] + leftPart[1] >> 1);
91
- const rightMiddle = Math.ceil(rightPart[0] + rightPart[1] >> 1);
92
- container2.innerText = props.content.slice(0, leftMiddle) + props.dots + actionText.value + props.dots + props.content.slice(rightMiddle, end);
90
+ const leftMiddle = Math.floor((leftPart[0] + leftPart[1]) / 2);
91
+ const rightMiddle = Math.ceil((rightPart[0] + rightPart[1]) / 2);
92
+ container2.innerText = props.content.slice(0, leftMiddle) + props.dots + props.content.slice(rightMiddle, end) + props.expandText;
93
93
  if (container2.offsetHeight >= maxHeight2) {
94
94
  return middleTail([leftPart[0], leftMiddle], [rightMiddle, rightPart[1]]);
95
95
  }
@@ -124,7 +124,7 @@ var stdin_default = defineComponent({
124
124
  const renderAction = () => _createVNode("span", {
125
125
  "class": bem("action"),
126
126
  "onClick": onClickAction
127
- }, [expanded.value ? props.collapseText : props.expandText]);
127
+ }, [actionText.value]);
128
128
  onMounted(calcEllipsised);
129
129
  watch(() => [props.content, props.rows, props.position], calcEllipsised);
130
130
  useEventListener("resize", calcEllipsised);
@@ -79,7 +79,7 @@ export default Toast;
79
79
  export { toastProps } from './Toast';
80
80
  export { showToast, closeToast, showFailToast, showLoadingToast, showSuccessToast, allowMultipleToast, setToastDefaultOptions, resetToastDefaultOptions, } from './function-call';
81
81
  export type { ToastProps } from './Toast';
82
- export type { ToastType, ToastOptions, ToastPosition, ToastThemeVars, ToastWordBreak, } from './types';
82
+ export type { ToastType, ToastOptions, ToastPosition, ToastThemeVars, ToastWordBreak, ToastWrapperInstance, } from './types';
83
83
  declare module 'vue' {
84
84
  interface GlobalComponents {
85
85
  VanToast: typeof Toast;
@@ -23,6 +23,7 @@ export declare const dropdownMenuProps: {
23
23
  type: BooleanConstructor;
24
24
  default: true;
25
25
  };
26
+ swipeThreshold: (NumberConstructor | StringConstructor)[];
26
27
  };
27
28
  export type DropdownMenuProps = ExtractPropTypes<typeof dropdownMenuProps>;
28
29
  export declare const DROPDOWN_KEY: InjectionKey<DropdownMenuProvide>;
@@ -49,6 +50,7 @@ declare const _default: import("vue").DefineComponent<{
49
50
  type: BooleanConstructor;
50
51
  default: true;
51
52
  };
53
+ swipeThreshold: (NumberConstructor | StringConstructor)[];
52
54
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
53
55
  overlay: {
54
56
  type: BooleanConstructor;
@@ -72,6 +74,7 @@ declare const _default: import("vue").DefineComponent<{
72
74
  type: BooleanConstructor;
73
75
  default: true;
74
76
  };
77
+ swipeThreshold: (NumberConstructor | StringConstructor)[];
75
78
  }>>, {
76
79
  overlay: boolean;
77
80
  duration: string | number;
@@ -36,7 +36,8 @@ const dropdownMenuProps = {
36
36
  direction: (0, import_utils.makeStringProp)("down"),
37
37
  activeColor: String,
38
38
  closeOnClickOutside: import_utils.truthProp,
39
- closeOnClickOverlay: import_utils.truthProp
39
+ closeOnClickOverlay: import_utils.truthProp,
40
+ swipeThreshold: import_utils.numericProp
40
41
  };
41
42
  const DROPDOWN_KEY = Symbol(name);
42
43
  var stdin_default = (0, import_vue2.defineComponent)({
@@ -55,6 +56,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
55
56
  } = (0, import_use.useChildren)(DROPDOWN_KEY);
56
57
  const scrollParent = (0, import_use.useScrollParent)(root);
57
58
  const opened = (0, import_vue2.computed)(() => children.some((item) => item.state.showWrapper));
59
+ const scrollable = (0, import_vue2.computed)(() => props.swipeThreshold && children.length > +props.swipeThreshold);
58
60
  const barStyle = (0, import_vue2.computed)(() => {
59
61
  if (opened.value && (0, import_utils.isDef)(props.zIndex)) {
60
62
  return {
@@ -111,7 +113,8 @@ var stdin_default = (0, import_vue2.defineComponent)({
111
113
  "role": "button",
112
114
  "tabindex": disabled ? void 0 : 0,
113
115
  "class": [bem("item", {
114
- disabled
116
+ disabled,
117
+ grow: scrollable.value
115
118
  }), {
116
119
  [import_utils.HAPTICS_FEEDBACK]: !disabled
117
120
  }],
@@ -155,7 +158,8 @@ var stdin_default = (0, import_vue2.defineComponent)({
155
158
  "ref": barRef,
156
159
  "style": barStyle.value,
157
160
  "class": bem("bar", {
158
- opened: opened.value
161
+ opened: opened.value,
162
+ scrollable: scrollable.value
159
163
  })
160
164
  }, [children.map(renderTitle)]), (_a = slots.default) == null ? void 0 : _a.call(slots)]);
161
165
  };
@@ -1 +1 @@
1
- :root{--van-dropdown-menu-height: 48px;--van-dropdown-menu-background: var(--van-background-2);--van-dropdown-menu-shadow: 0 2px 12px rgba(100, 101, 102, .12);--van-dropdown-menu-title-font-size: 15px;--van-dropdown-menu-title-text-color: var(--van-text-color);--van-dropdown-menu-title-active-text-color: var(--van-primary-color);--van-dropdown-menu-title-disabled-text-color: var(--van-text-color-2);--van-dropdown-menu-title-padding: 0 var(--van-padding-xs);--van-dropdown-menu-title-line-height: var(--van-line-height-lg);--van-dropdown-menu-option-active-color: var(--van-primary-color);--van-dropdown-menu-content-max-height: 80%}.van-dropdown-menu{-webkit-user-select:none;user-select:none}.van-dropdown-menu__bar{position:relative;display:flex;height:var(--van-dropdown-menu-height);background:var(--van-dropdown-menu-background);box-shadow:var(--van-dropdown-menu-shadow)}.van-dropdown-menu__bar--opened{z-index:calc(var(--van-dropdown-item-z-index) + 1)}.van-dropdown-menu__item{display:flex;flex:1;align-items:center;justify-content:center;min-width:0}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:var(--van-dropdown-menu-title-disabled-text-color)}.van-dropdown-menu__title{position:relative;box-sizing:border-box;max-width:100%;padding:var(--van-dropdown-menu-title-padding);color:var(--van-dropdown-menu-title-text-color);font-size:var(--van-dropdown-menu-title-font-size);line-height:var(--van-dropdown-menu-title-line-height)}.van-dropdown-menu__title:after{position:absolute;top:50%;right:-4px;margin-top:-5px;border:3px solid;border-color:transparent transparent var(--van-gray-4) var(--van-gray-4);transform:rotate(-45deg);opacity:.8;content:""}.van-dropdown-menu__title--active{color:var(--van-dropdown-menu-title-active-text-color)}.van-dropdown-menu__title--active:after{border-color:transparent transparent currentColor currentColor}.van-dropdown-menu__title--down:after{margin-top:-1px;transform:rotate(135deg)}
1
+ :root{--van-dropdown-menu-height: 48px;--van-dropdown-menu-background: var(--van-background-2);--van-dropdown-menu-shadow: 0 2px 12px rgba(100, 101, 102, .12);--van-dropdown-menu-title-font-size: 15px;--van-dropdown-menu-title-text-color: var(--van-text-color);--van-dropdown-menu-title-active-text-color: var(--van-primary-color);--van-dropdown-menu-title-disabled-text-color: var(--van-text-color-2);--van-dropdown-menu-title-padding: 0 var(--van-padding-xs);--van-dropdown-menu-title-line-height: var(--van-line-height-lg);--van-dropdown-menu-option-active-color: var(--van-primary-color);--van-dropdown-menu-content-max-height: 80%}.van-dropdown-menu{-webkit-user-select:none;user-select:none}.van-dropdown-menu__bar{position:relative;display:flex;height:var(--van-dropdown-menu-height);background:var(--van-dropdown-menu-background);box-shadow:var(--van-dropdown-menu-shadow)}.van-dropdown-menu__bar--opened{z-index:calc(var(--van-dropdown-item-z-index) + 1)}.van-dropdown-menu__bar--scrollable{padding-left:var(--van-padding-base);padding-right:var(--van-padding-xs);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.van-dropdown-menu__bar--scrollable::-webkit-scrollbar{display:none}.van-dropdown-menu__item{display:flex;flex:1;align-items:center;justify-content:center;min-width:0}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:var(--van-dropdown-menu-title-disabled-text-color)}.van-dropdown-menu__item--grow{flex:1 0 auto;padding-left:var(--van-padding-base);padding-right:var(--van-padding-sm)}.van-dropdown-menu__title{position:relative;box-sizing:border-box;max-width:100%;padding:var(--van-dropdown-menu-title-padding);color:var(--van-dropdown-menu-title-text-color);font-size:var(--van-dropdown-menu-title-font-size);line-height:var(--van-dropdown-menu-title-line-height)}.van-dropdown-menu__title:after{position:absolute;top:50%;right:-4px;margin-top:-5px;border:3px solid;border-color:transparent transparent var(--van-gray-4) var(--van-gray-4);transform:rotate(-45deg);opacity:.8;content:""}.van-dropdown-menu__title--active{color:var(--van-dropdown-menu-title-active-text-color)}.van-dropdown-menu__title--active:after{border-color:transparent transparent currentColor currentColor}.van-dropdown-menu__title--down:after{margin-top:-1px;transform:rotate(135deg)}
@@ -22,6 +22,7 @@ export declare const DropdownMenu: import("../utils").WithInstall<import("vue").
22
22
  type: BooleanConstructor;
23
23
  default: true;
24
24
  };
25
+ swipeThreshold: (NumberConstructor | StringConstructor)[];
25
26
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
26
27
  overlay: {
27
28
  type: BooleanConstructor;
@@ -45,6 +46,7 @@ export declare const DropdownMenu: import("../utils").WithInstall<import("vue").
45
46
  type: BooleanConstructor;
46
47
  default: true;
47
48
  };
49
+ swipeThreshold: (NumberConstructor | StringConstructor)[];
48
50
  }>>, {
49
51
  overlay: boolean;
50
52
  duration: string | number;
@@ -57,11 +57,13 @@ const floatingBubbleProps = {
57
57
  const [name, bem] = (0, import_utils.createNamespace)("floating-bubble");
58
58
  var stdin_default = (0, import_vue2.defineComponent)({
59
59
  name,
60
+ inheritAttrs: false,
60
61
  props: floatingBubbleProps,
61
62
  emits: ["click", "update:offset", "offsetChange"],
62
63
  setup(props, {
63
64
  slots,
64
- emit
65
+ emit,
66
+ attrs
65
67
  }) {
66
68
  const rootRef = (0, import_vue2.ref)();
67
69
  const state = (0, import_vue2.ref)({
@@ -182,7 +184,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
182
184
  }
183
185
  });
184
186
  return () => {
185
- const Content = (0, import_vue.withDirectives)((0, import_vue.createVNode)("div", {
187
+ const Content = (0, import_vue.withDirectives)((0, import_vue.createVNode)("div", (0, import_vue.mergeProps)({
186
188
  "class": bem(),
187
189
  "ref": rootRef,
188
190
  "onTouchstartPassive": onTouchStart,
@@ -190,7 +192,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
190
192
  "onTouchcancel": onTouchEnd,
191
193
  "onClick": onClick,
192
194
  "style": rootStyle.value
193
- }, [slots.default ? slots.default() : (0, import_vue.createVNode)(import_icon.default, {
195
+ }, attrs), [slots.default ? slots.default() : (0, import_vue.createVNode)(import_icon.default, {
194
196
  "name": props.icon,
195
197
  "class": bem("icon")
196
198
  }, null)]), [[import_vue.vShow, show.value]]);
@@ -16,6 +16,7 @@ export declare const floatingPanelProps: {
16
16
  type: BooleanConstructor;
17
17
  default: true;
18
18
  };
19
+ lockScroll: BooleanConstructor;
19
20
  safeAreaInsetBottom: {
20
21
  type: BooleanConstructor;
21
22
  default: true;
@@ -39,6 +40,7 @@ declare const _default: import("vue").DefineComponent<{
39
40
  type: BooleanConstructor;
40
41
  default: true;
41
42
  };
43
+ lockScroll: BooleanConstructor;
42
44
  safeAreaInsetBottom: {
43
45
  type: BooleanConstructor;
44
46
  default: true;
@@ -60,6 +62,7 @@ declare const _default: import("vue").DefineComponent<{
60
62
  type: BooleanConstructor;
61
63
  default: true;
62
64
  };
65
+ lockScroll: BooleanConstructor;
63
66
  safeAreaInsetBottom: {
64
67
  type: BooleanConstructor;
65
68
  default: true;
@@ -71,6 +74,7 @@ declare const _default: import("vue").DefineComponent<{
71
74
  height: string | number;
72
75
  safeAreaInsetBottom: boolean;
73
76
  duration: string | number;
77
+ lockScroll: boolean;
74
78
  anchors: number[];
75
79
  contentDraggable: boolean;
76
80
  }, {}>;
@@ -33,10 +33,10 @@ const floatingPanelProps = {
33
33
  anchors: (0, import_utils.makeArrayProp)(),
34
34
  duration: (0, import_utils.makeNumericProp)(0.2),
35
35
  contentDraggable: import_utils.truthProp,
36
+ lockScroll: Boolean,
36
37
  safeAreaInsetBottom: import_utils.truthProp
37
38
  };
38
39
  const [name, bem] = (0, import_utils.createNamespace)("floating-panel");
39
- const DAMP = 0.2;
40
40
  var stdin_default = (0, import_vue2.defineComponent)({
41
41
  name,
42
42
  props: floatingPanelProps,
@@ -45,6 +45,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
45
45
  emit,
46
46
  slots
47
47
  }) {
48
+ const DAMP = 0.2;
48
49
  const rootRef = (0, import_vue2.ref)();
49
50
  const contentRef = (0, import_vue2.ref)();
50
51
  const height = (0, import_use_sync_prop_ref.useSyncPropRef)(() => +props.height, (value) => emit("update:height", value));
@@ -77,24 +78,28 @@ var stdin_default = (0, import_vue2.defineComponent)({
77
78
  return moveY;
78
79
  };
79
80
  let startY;
81
+ let maxScroll = -1;
80
82
  const touch = (0, import_use_touch.useTouch)();
81
83
  const onTouchstart = (e) => {
82
84
  touch.start(e);
83
85
  dragging.value = true;
84
86
  startY = -height.value;
87
+ maxScroll = -1;
85
88
  };
86
89
  const onTouchmove = (e) => {
87
90
  var _a;
88
91
  touch.move(e);
89
92
  const target = e.target;
90
93
  if (contentRef.value === target || ((_a = contentRef.value) == null ? void 0 : _a.contains(target))) {
94
+ const {
95
+ scrollTop
96
+ } = contentRef.value;
97
+ maxScroll = Math.max(maxScroll, scrollTop);
91
98
  if (!props.contentDraggable)
92
99
  return;
93
100
  if (-startY < boundary.value.max) {
94
- if (e.cancelable)
95
- e.preventDefault();
96
- e.stopPropagation();
97
- } else if (!(contentRef.value.scrollTop <= 0 && touch.deltaY.value > 0)) {
101
+ (0, import_utils.preventDefault)(e, true);
102
+ } else if (!(scrollTop <= 0 && touch.deltaY.value > 0) || maxScroll > 0) {
98
103
  return;
99
104
  }
100
105
  }
@@ -102,6 +107,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
102
107
  height.value = -ease(moveY);
103
108
  };
104
109
  const onTouchend = () => {
110
+ maxScroll = -1;
105
111
  dragging.value = false;
106
112
  height.value = (0, import_utils.closest)(anchors.value, height.value);
107
113
  if (height.value !== -startY) {
@@ -115,7 +121,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
115
121
  }, {
116
122
  immediate: true
117
123
  });
118
- (0, import_use_lock_scroll.useLockScroll)(rootRef, () => true);
124
+ (0, import_use_lock_scroll.useLockScroll)(rootRef, () => props.lockScroll);
119
125
  (0, import_use.useEventListener)("touchmove", onTouchmove, {
120
126
  target: rootRef
121
127
  });
@@ -15,6 +15,7 @@ export declare const FloatingPanel: import("../utils").WithInstall<import("vue")
15
15
  type: BooleanConstructor;
16
16
  default: true;
17
17
  };
18
+ lockScroll: BooleanConstructor;
18
19
  safeAreaInsetBottom: {
19
20
  type: BooleanConstructor;
20
21
  default: true;
@@ -36,6 +37,7 @@ export declare const FloatingPanel: import("../utils").WithInstall<import("vue")
36
37
  type: BooleanConstructor;
37
38
  default: true;
38
39
  };
40
+ lockScroll: BooleanConstructor;
39
41
  safeAreaInsetBottom: {
40
42
  type: BooleanConstructor;
41
43
  default: true;
@@ -47,6 +49,7 @@ export declare const FloatingPanel: import("../utils").WithInstall<import("vue")
47
49
  height: string | number;
48
50
  safeAreaInsetBottom: boolean;
49
51
  duration: string | number;
52
+ lockScroll: boolean;
50
53
  anchors: number[];
51
54
  contentDraggable: boolean;
52
55
  }, {}>>;
@@ -50,6 +50,10 @@ export declare const imagePreviewProps: {
50
50
  type: BooleanConstructor;
51
51
  default: true;
52
52
  };
53
+ closeOnClickOverlay: {
54
+ type: BooleanConstructor;
55
+ default: true;
56
+ };
53
57
  closeIconPosition: {
54
58
  type: PropType<PopupCloseIconPosition>;
55
59
  default: PopupCloseIconPosition;
@@ -106,6 +110,10 @@ declare const _default: import("vue").DefineComponent<{
106
110
  type: BooleanConstructor;
107
111
  default: true;
108
112
  };
113
+ closeOnClickOverlay: {
114
+ type: BooleanConstructor;
115
+ default: true;
116
+ };
109
117
  closeIconPosition: {
110
118
  type: PropType<PopupCloseIconPosition>;
111
119
  default: PopupCloseIconPosition;
@@ -160,6 +168,10 @@ declare const _default: import("vue").DefineComponent<{
160
168
  type: BooleanConstructor;
161
169
  default: true;
162
170
  };
171
+ closeOnClickOverlay: {
172
+ type: BooleanConstructor;
173
+ default: true;
174
+ };
163
175
  closeIconPosition: {
164
176
  type: PropType<PopupCloseIconPosition>;
165
177
  default: PopupCloseIconPosition;
@@ -176,6 +188,7 @@ declare const _default: import("vue").DefineComponent<{
176
188
  loop: boolean;
177
189
  overlay: boolean;
178
190
  show: boolean;
191
+ closeOnClickOverlay: boolean;
179
192
  closeIcon: string;
180
193
  closeable: boolean;
181
194
  closeOnPopstate: boolean;
@@ -61,6 +61,7 @@ const imagePreviewProps = {
61
61
  startPosition: (0, import_utils.makeNumericProp)(0),
62
62
  showIndicators: Boolean,
63
63
  closeOnPopstate: import_utils.truthProp,
64
+ closeOnClickOverlay: import_utils.truthProp,
64
65
  closeIconPosition: (0, import_utils.makeStringProp)("top-right"),
65
66
  teleport: [String, Object]
66
67
  };
@@ -145,6 +146,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
145
146
  "rootWidth": state.rootWidth,
146
147
  "rootHeight": state.rootHeight,
147
148
  "disableZoom": state.disableZoom,
149
+ "closeOnClickOverlay": props.closeOnClickOverlay,
148
150
  "onScale": emitScale,
149
151
  "onClose": emitClose,
150
152
  "onLongPress": () => emit("longPress", {
@@ -19,6 +19,7 @@ declare const _default: import("vue").DefineComponent<{
19
19
  required: true;
20
20
  };
21
21
  disableZoom: BooleanConstructor;
22
+ closeOnClickOverlay: BooleanConstructor;
22
23
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("close" | "scale" | "longPress")[], "close" | "scale" | "longPress", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
23
24
  src: StringConstructor;
24
25
  show: BooleanConstructor;
@@ -40,12 +41,14 @@ declare const _default: import("vue").DefineComponent<{
40
41
  required: true;
41
42
  };
42
43
  disableZoom: BooleanConstructor;
44
+ closeOnClickOverlay: BooleanConstructor;
43
45
  }>> & {
44
46
  onClose?: ((...args: any[]) => any) | undefined;
45
47
  onScale?: ((...args: any[]) => any) | undefined;
46
48
  onLongPress?: ((...args: any[]) => any) | undefined;
47
49
  }, {
48
50
  show: boolean;
51
+ closeOnClickOverlay: boolean;
49
52
  disableZoom: boolean;
50
53
  }, {}>;
51
54
  export default _default;
@@ -44,7 +44,8 @@ var stdin_default = (0, import_vue2.defineComponent)({
44
44
  maxZoom: (0, import_utils.makeRequiredProp)(import_utils.numericProp),
45
45
  rootWidth: (0, import_utils.makeRequiredProp)(Number),
46
46
  rootHeight: (0, import_utils.makeRequiredProp)(Number),
47
- disableZoom: Boolean
47
+ disableZoom: Boolean,
48
+ closeOnClickOverlay: Boolean
48
49
  },
49
50
  emits: ["scale", "close", "longPress"],
50
51
  setup(props, {
@@ -204,7 +205,8 @@ var stdin_default = (0, import_vue2.defineComponent)({
204
205
  }
205
206
  }
206
207
  };
207
- const checkTap = () => {
208
+ const checkTap = (event) => {
209
+ var _a;
208
210
  if (fingerNum > 1) {
209
211
  return;
210
212
  }
@@ -221,6 +223,9 @@ var stdin_default = (0, import_vue2.defineComponent)({
221
223
  doubleTapTimer = null;
222
224
  toggleScale();
223
225
  } else {
226
+ if (!props.closeOnClickOverlay && event.target === ((_a = swipeItem.value) == null ? void 0 : _a.$el)) {
227
+ return;
228
+ }
224
229
  doubleTapTimer = setTimeout(() => {
225
230
  emit("close");
226
231
  doubleTapTimer = null;
@@ -258,7 +263,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
258
263
  }
259
264
  }
260
265
  (0, import_utils.preventDefault)(event, stopPropagation);
261
- checkTap();
266
+ checkTap(event);
262
267
  touch.reset();
263
268
  };
264
269
  const resize = () => {
@@ -56,6 +56,7 @@ const defaultConfig = {
56
56
  swipeDuration: 300,
57
57
  showIndicators: false,
58
58
  closeOnPopstate: true,
59
+ closeOnClickOverlay: true,
59
60
  closeIconPosition: "top-right"
60
61
  };
61
62
  function initInstance() {
@@ -48,6 +48,10 @@ export declare const ImagePreview: import("../utils").WithInstall<import("vue").
48
48
  type: BooleanConstructor;
49
49
  default: true;
50
50
  };
51
+ closeOnClickOverlay: {
52
+ type: BooleanConstructor;
53
+ default: true;
54
+ };
51
55
  closeIconPosition: {
52
56
  type: import("vue").PropType<import("..").PopupCloseIconPosition>;
53
57
  default: import("..").PopupCloseIconPosition;
@@ -102,6 +106,10 @@ export declare const ImagePreview: import("../utils").WithInstall<import("vue").
102
106
  type: BooleanConstructor;
103
107
  default: true;
104
108
  };
109
+ closeOnClickOverlay: {
110
+ type: BooleanConstructor;
111
+ default: true;
112
+ };
105
113
  closeIconPosition: {
106
114
  type: import("vue").PropType<import("..").PopupCloseIconPosition>;
107
115
  default: import("..").PopupCloseIconPosition;
@@ -118,6 +126,7 @@ export declare const ImagePreview: import("../utils").WithInstall<import("vue").
118
126
  loop: boolean;
119
127
  overlay: boolean;
120
128
  show: boolean;
129
+ closeOnClickOverlay: boolean;
121
130
  closeIcon: string;
122
131
  closeable: boolean;
123
132
  closeOnPopstate: boolean;
@@ -22,6 +22,7 @@ export type ImagePreviewOptions = {
22
22
  showIndicators?: boolean;
23
23
  closeOnPopstate?: boolean;
24
24
  closeIconPosition?: PopupCloseIconPosition;
25
+ closeOnClickOverlay?: boolean;
25
26
  onClose?(): void;
26
27
  onScale?(args: {
27
28
  scale: number;