zartui 3.1.71 → 3.1.73

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 (43) hide show
  1. package/es/image-preview/ImagePreview.d.ts +14 -1
  2. package/es/image-preview/ImagePreview.mjs +94 -5
  3. package/es/image-preview/index.css +1 -1
  4. package/es/image-preview/index.d.ts +7 -1
  5. package/es/image-preview/style/index.mjs +1 -0
  6. package/es/image-preview/svg/Download.d.ts +2 -0
  7. package/es/image-preview/svg/Download.mjs +13 -0
  8. package/es/image-preview/types.d.ts +1 -0
  9. package/es/index.d.ts +1 -1
  10. package/es/index.mjs +1 -1
  11. package/es/media-picker/MediaPicker.d.ts +4 -0
  12. package/es/media-picker/MediaPicker.mjs +2 -0
  13. package/es/media-picker/index.d.ts +3 -0
  14. package/es/picker/Picker.d.ts +3 -0
  15. package/es/picker/Picker.mjs +5 -2
  16. package/es/picker/index.d.ts +2 -0
  17. package/es/uploader/style/index.mjs +1 -0
  18. package/lib/image-preview/ImagePreview.d.ts +14 -1
  19. package/lib/image-preview/ImagePreview.js +94 -5
  20. package/lib/image-preview/index.css +1 -1
  21. package/lib/image-preview/index.d.ts +7 -1
  22. package/lib/image-preview/style/index.js +1 -0
  23. package/lib/image-preview/svg/Download.d.ts +2 -0
  24. package/lib/image-preview/svg/Download.js +32 -0
  25. package/lib/image-preview/types.d.ts +1 -0
  26. package/lib/{index-8bc782d2.mjs → index-096e2873.mjs} +4220 -2916
  27. package/lib/{index-d66aaef4.js → index-bb5638a0.js} +4219 -2916
  28. package/lib/index.css +1 -1
  29. package/lib/index.d.ts +1 -1
  30. package/lib/index.js +1 -1
  31. package/lib/media-picker/MediaPicker.d.ts +4 -0
  32. package/lib/media-picker/MediaPicker.js +2 -0
  33. package/lib/media-picker/index.d.ts +3 -0
  34. package/lib/picker/Picker.d.ts +3 -0
  35. package/lib/picker/Picker.js +5 -2
  36. package/lib/picker/index.d.ts +2 -0
  37. package/lib/uploader/style/index.js +1 -0
  38. package/lib/web-types.json +1 -1
  39. package/lib/zartui.cjs.js +110 -9
  40. package/lib/zartui.es.js +110 -9
  41. package/lib/zartui.js +4302 -2895
  42. package/lib/zartui.min.js +2 -2
  43. package/package.json +8 -8
@@ -2,6 +2,11 @@ import type { PropType, CSSProperties, ExtractPropTypes } from 'vue';
2
2
  import { Interceptor } from '../utils';
3
3
  import { PopupCloseIconPosition } from '../popup';
4
4
  import { ImageItem } from './types';
5
+ export type DownloadActionParams = {
6
+ index: number;
7
+ url?: string;
8
+ title?: string;
9
+ };
5
10
  export declare const imagePreviewProps: {
6
11
  show: BooleanConstructor;
7
12
  loop: {
@@ -29,6 +34,8 @@ export declare const imagePreviewProps: {
29
34
  type: BooleanConstructor;
30
35
  default: true;
31
36
  };
37
+ showDownload: BooleanConstructor;
38
+ downloadAction: PropType<(params: DownloadActionParams) => boolean | void>;
32
39
  className: PropType<unknown>;
33
40
  closeIcon: {
34
41
  type: PropType<string>;
@@ -89,6 +96,8 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
89
96
  type: BooleanConstructor;
90
97
  default: true;
91
98
  };
99
+ showDownload: BooleanConstructor;
100
+ downloadAction: PropType<(params: DownloadActionParams) => boolean | void>;
92
101
  className: PropType<unknown>;
93
102
  closeIcon: {
94
103
  type: PropType<string>;
@@ -120,7 +129,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
120
129
  default: PopupCloseIconPosition;
121
130
  };
122
131
  teleport: PropType<string | import("vue").RendererElement | null | undefined>;
123
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "close" | "closed" | "update:show" | "scale" | "longPress")[], "change" | "close" | "closed" | "update:show" | "scale" | "longPress", import("vue").PublicProps, Readonly<ExtractPropTypes<{
132
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("download" | "change" | "close" | "closed" | "update:show" | "scale" | "longPress")[], "download" | "change" | "close" | "closed" | "update:show" | "scale" | "longPress", import("vue").PublicProps, Readonly<ExtractPropTypes<{
124
133
  show: BooleanConstructor;
125
134
  loop: {
126
135
  type: BooleanConstructor;
@@ -147,6 +156,8 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
147
156
  type: BooleanConstructor;
148
157
  default: true;
149
158
  };
159
+ showDownload: BooleanConstructor;
160
+ downloadAction: PropType<(params: DownloadActionParams) => boolean | void>;
150
161
  className: PropType<unknown>;
151
162
  closeIcon: {
152
163
  type: PropType<string>;
@@ -185,6 +196,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
185
196
  "onUpdate:show"?: ((...args: any[]) => any) | undefined;
186
197
  onScale?: ((...args: any[]) => any) | undefined;
187
198
  onLongPress?: ((...args: any[]) => any) | undefined;
199
+ onDownload?: ((...args: any[]) => any) | undefined;
188
200
  }>, {
189
201
  loop: boolean;
190
202
  overlay: boolean;
@@ -200,6 +212,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
200
212
  maxZoom: string | number;
201
213
  images: ImageItem[];
202
214
  showIndex: boolean;
215
+ showDownload: boolean;
203
216
  startPosition: string | number;
204
217
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
205
218
  export default _default;
@@ -1,3 +1,23 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
1
21
  import { ref, watch, nextTick, reactive, onMounted, defineComponent, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
22
  import { pick, truthProp, unknownProp, windowWidth, windowHeight, makeArrayProp, makeStringProp, makeNumericProp, callInterceptor, createNamespace, HAPTICS_FEEDBACK } from "../utils/index.mjs";
3
23
  import { useRect } from "@zartui/use";
@@ -6,6 +26,8 @@ import { Icon } from "../icon/index.mjs";
6
26
  import { Swipe } from "../swipe/index.mjs";
7
27
  import { Popup } from "../popup/index.mjs";
8
28
  import ImagePreviewItem from "./ImagePreviewItem.mjs";
29
+ import { Download } from "./svg/Download.mjs";
30
+ import { closeToast, showFailToast, showLoadingToast, showSuccessToast } from "../toast/index.mjs";
9
31
  const [name, bem] = createNamespace("image-preview");
10
32
  const popupProps = ["show", "transition", "overlayStyle", "closeOnPopstate", "teleport"];
11
33
  const imagePreviewProps = {
@@ -17,6 +39,8 @@ const imagePreviewProps = {
17
39
  overlay: truthProp,
18
40
  closeable: Boolean,
19
41
  showIndex: truthProp,
42
+ showDownload: Boolean,
43
+ downloadAction: Function,
20
44
  className: unknownProp,
21
45
  closeIcon: makeStringProp("clear"),
22
46
  transition: String,
@@ -34,12 +58,13 @@ const imagePreviewProps = {
34
58
  var stdin_default = defineComponent({
35
59
  name,
36
60
  props: imagePreviewProps,
37
- emits: ["scale", "close", "closed", "change", "longPress", "update:show"],
61
+ emits: ["scale", "close", "closed", "change", "longPress", "update:show", "download"],
38
62
  setup(props, {
39
63
  emit,
40
64
  slots
41
65
  }) {
42
66
  const swipeRef = ref();
67
+ const hasDownloadSupport = ref(false);
43
68
  const state = reactive({
44
69
  active: 0,
45
70
  rootWidth: 0,
@@ -79,9 +104,54 @@ var stdin_default = defineComponent({
79
104
  }, [props.images[state.active].title]);
80
105
  }
81
106
  };
107
+ const onDownload = () => __async(this, null, function* () {
108
+ var _a, _b, _c;
109
+ const downloadParams = {
110
+ index: state.active,
111
+ url: (_a = props.images[state.active]) == null ? void 0 : _a.url,
112
+ title: (_b = props.images[state.active]) == null ? void 0 : _b.title
113
+ };
114
+ if (props.downloadAction) {
115
+ const result = props.downloadAction(downloadParams);
116
+ if (result) {
117
+ return;
118
+ }
119
+ }
120
+ try {
121
+ let universalJsSdk = yield import("@egova/universal-js-sdk");
122
+ if (universalJsSdk && universalJsSdk.getJSI && downloadParams.url) {
123
+ let fileJsi = (_c = universalJsSdk.getJSI()) == null ? void 0 : _c.file;
124
+ if (fileJsi && fileJsi.download) {
125
+ showLoadingToast({
126
+ message: "\u4E0B\u8F7D\u4E2D...",
127
+ forbidClick: true,
128
+ duration: 0
129
+ });
130
+ fileJsi.download({
131
+ url: downloadParams.url
132
+ }).then(({
133
+ tempFilePath
134
+ }) => {
135
+ closeToast();
136
+ showSuccessToast("\u4E0B\u8F7D\u6210\u529F");
137
+ }).catch(() => {
138
+ closeToast();
139
+ showFailToast("\u4E0B\u8F7D\u5931\u8D25");
140
+ });
141
+ return;
142
+ } else {
143
+ showFailToast("\u5F53\u524D\u73AF\u5883\u6682\u4E0D\u652F\u6301\u4E0B\u8F7D");
144
+ }
145
+ }
146
+ } catch (e) {
147
+ console.log(e.message);
148
+ }
149
+ });
82
150
  const renderIndex = () => {
83
- if (props.showIndex) {
84
- if (slots.index) {
151
+ const image = props.images[state.active];
152
+ const showDownload = props.showDownload && hasDownloadSupport.value && !image.url.startsWith("data:");
153
+ if (props.showIndex || showDownload) {
154
+ if (props.showIndex && slots.index) {
85
155
  return _createVNode("div", {
86
156
  "class": bem("index")
87
157
  }, [slots.index({
@@ -90,9 +160,15 @@ var stdin_default = defineComponent({
90
160
  }
91
161
  return _createVNode("div", {
92
162
  "class": bem("index")
93
- }, [renderIndexText(), renderImageTitle()]);
163
+ }, [props.showIndex && renderIndexText(), props.showIndex && renderImageTitle(), showDownload && renderDownloadIcon()]);
94
164
  }
95
165
  };
166
+ const renderDownloadIcon = () => {
167
+ return _createVNode("div", {
168
+ "class": bem("download-icon"),
169
+ "onClick": onDownload
170
+ }, [Download(bem)]);
171
+ };
96
172
  const renderCover = () => {
97
173
  if (slots.cover) {
98
174
  return _createVNode("div", {
@@ -156,7 +232,20 @@ var stdin_default = defineComponent({
156
232
  useExpose({
157
233
  swipeTo
158
234
  });
159
- onMounted(resize);
235
+ onMounted(() => __async(this, null, function* () {
236
+ var _a;
237
+ resize();
238
+ try {
239
+ const universalJsSdk = yield import("@egova/universal-js-sdk");
240
+ if (universalJsSdk && universalJsSdk.getJSI) {
241
+ const fileJsi = (_a = universalJsSdk.getJSI()) == null ? void 0 : _a.file;
242
+ hasDownloadSupport.value = !!(fileJsi && fileJsi.download);
243
+ }
244
+ } catch (e) {
245
+ console.warn("Failed to check download support:", e);
246
+ hasDownloadSupport.value = false;
247
+ }
248
+ }));
160
249
  watch([windowWidth, windowHeight], resize);
161
250
  watch(() => props.startPosition, (value) => setActive(+value));
162
251
  watch(() => props.show, (value) => {
@@ -1 +1 @@
1
- :root{--zt-image-preview-index-height: 48px;--zt-image-preview-index-background: var(--zt-gray-a4);--zt-image-preview-index-text-color: var(--zt-white);--zt-image-preview-overlay-background: rgba(0, 0, 0, .9);--zt-image-preview-close-icon-color: var(--zt-gray-5);--zt-image-preview-close-icon-margin: var(--zt-padding-md);--zt-image-preview-close-icon-z-index: 1;--zt-image-preview-error-font-size: 36px}:root[zt-theme-size=large]{--zt-image-preview-error-font-size: 42px}.zt-image-preview{position:fixed;top:0;left:0;width:100%;height:100%;max-width:none;background-color:transparent;transform:none}.zt-image-preview__swipe{height:100%}.zt-image-preview__swipe-item{display:flex;align-items:center;justify-content:center;overflow:hidden}.zt-image-preview__cover{position:absolute;top:0;left:0}.zt-image-preview__image,.zt-image-preview__image-wrap{width:100%;transition-property:transform}.zt-image-preview__image--vertical,.zt-image-preview__image-wrap--vertical{width:auto;height:100%}.zt-image-preview__image img,.zt-image-preview__image-wrap img,.zt-image-preview__image video,.zt-image-preview__image-wrap video{-webkit-user-drag:none}.zt-image-preview__image .zt-image__error,.zt-image-preview__image-wrap .zt-image__error{top:30%;height:40%}.zt-image-preview__image .zt-image__error-icon,.zt-image-preview__image-wrap .zt-image__error-icon{font-size:var(--zt-image-preview-error-font-size)}.zt-image-preview__image .zt-image__loading,.zt-image-preview__image-wrap .zt-image__loading{background-color:transparent}.zt-image-preview__index{box-sizing:border-box;display:flex;align-items:center;position:absolute;bottom:0;left:0;width:100%;height:var(--zt-image-preview-index-height);padding:0 16px;background-color:var(--zt-image-preview-index-background);color:var(--zt-image-preview-index-text-color);overflow:hidden}.zt-image-preview__index-number{height:var(--zt-line-height-xl);background:rgba(45,75,115,.8);border-radius:2px;font-size:var(--zt-font-size-sm);text-align:center;line-height:var(--zt-line-height-xl);padding:0 8px}.zt-image-preview__title{flex-shrink:0;margin-left:8px;font-size:var(--zt-font-size-md);line-height:var(--zt-line-height-md)}.zt-image-preview__overlay{background:var(--zt-image-preview-overlay-background)}.zt-image-preview__close-icon{position:absolute;z-index:var(--zt-image-preview-close-icon-z-index);color:var(--zt-image-preview-close-icon-color);font-size:var(--zt-font-size-xxxl)}.zt-image-preview__close-icon--top-left{top:var(--zt-image-preview-close-icon-margin);left:var(--zt-image-preview-close-icon-margin)}.zt-image-preview__close-icon--top-right{top:var(--zt-image-preview-close-icon-margin);right:var(--zt-image-preview-close-icon-margin)}.zt-image-preview__close-icon--bottom-left{bottom:var(--zt-image-preview-close-icon-margin);left:var(--zt-image-preview-close-icon-margin)}.zt-image-preview__close-icon--bottom-right{right:var(--zt-image-preview-close-icon-margin);bottom:var(--zt-image-preview-close-icon-margin)}
1
+ :root{--zt-image-preview-index-height: 48px;--zt-image-preview-index-background: var(--zt-gray-a4);--zt-image-preview-index-text-color: var(--zt-white);--zt-image-preview-overlay-background: rgba(0, 0, 0, .9);--zt-image-preview-close-icon-color: var(--zt-gray-5);--zt-image-preview-close-icon-margin: var(--zt-padding-md);--zt-image-preview-close-icon-z-index: 1;--zt-image-preview-error-font-size: 36px}:root[zt-theme-size=large]{--zt-image-preview-error-font-size: 42px}.zt-image-preview{position:fixed;top:0;left:0;width:100%;height:100%;max-width:none;background-color:transparent;transform:none}.zt-image-preview__swipe{height:100%}.zt-image-preview__swipe-item{display:flex;align-items:center;justify-content:center;overflow:hidden}.zt-image-preview__cover{position:absolute;top:0;left:0}.zt-image-preview__image,.zt-image-preview__image-wrap{width:100%;transition-property:transform}.zt-image-preview__image--vertical,.zt-image-preview__image-wrap--vertical{width:auto;height:100%}.zt-image-preview__image img,.zt-image-preview__image-wrap img,.zt-image-preview__image video,.zt-image-preview__image-wrap video{-webkit-user-drag:none}.zt-image-preview__image .zt-image__error,.zt-image-preview__image-wrap .zt-image__error{top:30%;height:40%}.zt-image-preview__image .zt-image__error-icon,.zt-image-preview__image-wrap .zt-image__error-icon{font-size:var(--zt-image-preview-error-font-size)}.zt-image-preview__image .zt-image__loading,.zt-image-preview__image-wrap .zt-image__loading{background-color:transparent}.zt-image-preview__index{box-sizing:border-box;display:flex;align-items:center;position:absolute;bottom:0;left:0;width:100%;height:var(--zt-image-preview-index-height);padding:0 16px;background-color:var(--zt-image-preview-index-background);color:var(--zt-image-preview-index-text-color);overflow:hidden}.zt-image-preview__index-number{height:var(--zt-line-height-xl);background:rgba(45,75,115,.8);border-radius:2px;font-size:var(--zt-font-size-sm);text-align:center;line-height:var(--zt-line-height-xl);padding:0 8px}.zt-image-preview__title{flex-shrink:0;margin-left:8px;margin-right:8px;font-size:var(--zt-font-size-md);line-height:var(--zt-line-height-md)}.zt-image-preview__download-icon{display:flex;align-items:center;justify-content:center;margin-left:auto;cursor:pointer;padding:4px}.zt-image-preview__download-icon svg{width:20px;height:20px}.zt-image-preview__overlay{background:var(--zt-image-preview-overlay-background)}.zt-image-preview__close-icon{position:absolute;z-index:var(--zt-image-preview-close-icon-z-index);color:var(--zt-image-preview-close-icon-color);font-size:var(--zt-font-size-xxxl)}.zt-image-preview__close-icon--top-left{top:var(--zt-image-preview-close-icon-margin);left:var(--zt-image-preview-close-icon-margin)}.zt-image-preview__close-icon--top-right{top:var(--zt-image-preview-close-icon-margin);right:var(--zt-image-preview-close-icon-margin)}.zt-image-preview__close-icon--bottom-left{bottom:var(--zt-image-preview-close-icon-margin);left:var(--zt-image-preview-close-icon-margin)}.zt-image-preview__close-icon--bottom-right{right:var(--zt-image-preview-close-icon-margin);bottom:var(--zt-image-preview-close-icon-margin)}
@@ -26,6 +26,8 @@ export declare const ImagePreview: import("../utils").WithInstall<import("vue").
26
26
  type: BooleanConstructor;
27
27
  default: true;
28
28
  };
29
+ showDownload: BooleanConstructor;
30
+ downloadAction: import("vue").PropType<(params: import("./ImagePreview").DownloadActionParams) => boolean | void>;
29
31
  className: import("vue").PropType<unknown>;
30
32
  closeIcon: {
31
33
  type: import("vue").PropType<string>;
@@ -57,7 +59,7 @@ export declare const ImagePreview: import("../utils").WithInstall<import("vue").
57
59
  default: import("..").PopupCloseIconPosition;
58
60
  };
59
61
  teleport: import("vue").PropType<string | import("vue").RendererElement | null | undefined>;
60
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "close" | "closed" | "update:show" | "scale" | "longPress")[], "change" | "close" | "closed" | "update:show" | "scale" | "longPress", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
62
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("download" | "change" | "close" | "closed" | "update:show" | "scale" | "longPress")[], "download" | "change" | "close" | "closed" | "update:show" | "scale" | "longPress", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
61
63
  show: BooleanConstructor;
62
64
  loop: {
63
65
  type: BooleanConstructor;
@@ -84,6 +86,8 @@ export declare const ImagePreview: import("../utils").WithInstall<import("vue").
84
86
  type: BooleanConstructor;
85
87
  default: true;
86
88
  };
89
+ showDownload: BooleanConstructor;
90
+ downloadAction: import("vue").PropType<(params: import("./ImagePreview").DownloadActionParams) => boolean | void>;
87
91
  className: import("vue").PropType<unknown>;
88
92
  closeIcon: {
89
93
  type: import("vue").PropType<string>;
@@ -122,6 +126,7 @@ export declare const ImagePreview: import("../utils").WithInstall<import("vue").
122
126
  "onUpdate:show"?: ((...args: any[]) => any) | undefined;
123
127
  onScale?: ((...args: any[]) => any) | undefined;
124
128
  onLongPress?: ((...args: any[]) => any) | undefined;
129
+ onDownload?: ((...args: any[]) => any) | undefined;
125
130
  }>, {
126
131
  loop: boolean;
127
132
  overlay: boolean;
@@ -137,6 +142,7 @@ export declare const ImagePreview: import("../utils").WithInstall<import("vue").
137
142
  maxZoom: string | number;
138
143
  images: import("./types").ImageItem[];
139
144
  showIndex: boolean;
145
+ showDownload: boolean;
140
146
  startPosition: string | number;
141
147
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>>;
142
148
  export default ImagePreview;
@@ -5,6 +5,7 @@ import "../../image/index.css";
5
5
  import "../../overlay/index.css";
6
6
  import "../../popup/index.css";
7
7
  import "../../loading/index.css";
8
+ import "../../toast/index.css";
8
9
  import "../../swipe/index.css";
9
10
  import "../../swipe-item/index.css";
10
11
  import "../index.css";
@@ -0,0 +1,2 @@
1
+ import { BEM } from "../../utils";
2
+ export declare const Download: (bem: BEM) => import("vue/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { createVNode as _createVNode } from "vue";
2
+ const Download = (bem) => _createVNode("svg", {
3
+ "class": bem("svg-download-icon"),
4
+ "xmlns": "http://www.w3.org/2000/svg",
5
+ "viewBox": "0 0 20 20"
6
+ }, [_createVNode("path", {
7
+ "d": "M3.75,17.5 C3.28976271,17.5 2.91666667,17.126904 2.91666667,16.6666667 L2.91666667,12.5 C2.91666667,12.0397627 3.28976271,11.6666667 3.75,11.6666667 C4.21023729,11.6666667 4.58333333,12.0397627 4.58333333,12.5 L4.58266667,15.833 L15.4166667,15.833 L15.4166667,12.5 C15.4166667,12.0397627 15.7897627,11.6666667 16.25,11.6666667 C16.7102373,11.6666667 17.0833333,12.0397627 17.0833333,12.5 L17.0833333,16.6666667 C17.0833333,17.0915011 16.765429,17.442085 16.3545316,17.4935072 L16.25,17.5 L3.75,17.5 Z M10,2.5 C10.4602373,2.5 10.8333333,2.87309604 10.8333333,3.33333333 L10.834,10.904 L12.327411,9.41074435 L12.3804172,9.36206404 C12.7078286,9.08620893 13.1976137,9.1024357 13.5059223,9.41074435 C13.8313592,9.73618126 13.8313592,10.2638187 13.5059223,10.5892557 L10.5892557,13.5059223 L10.5659501,13.5283458 C10.5602582,13.5336148 10.5544926,13.5388053 10.548655,13.5439156 L10.5362495,13.5546026 L10.5121742,13.5740743 C10.4949132,13.5875412 10.4771081,13.6003432 10.4586783,13.6126074 C10.4455853,13.6212563 10.4323019,13.6294968 10.4192578,13.6370097 C10.4029078,13.6465464 10.3862038,13.6555423 10.3690405,13.664083 C10.3522054,13.6723976 10.3351478,13.6801087 10.3177097,13.6872958 C10.3045293,13.6927357 10.2911788,13.6978473 10.2777746,13.7025471 C10.2584813,13.7093513 10.2389875,13.7154237 10.2194971,13.7207897 C10.2011918,13.7257748 10.1826357,13.7301514 10.1634324,13.7339067 L10.1207556,13.7413147 C10.0813306,13.7470375 10.0410112,13.75 10,13.75 L10.0566667,13.747 L10.0399512,13.7490477 L9.96132783,13.7491078 C9.94161389,13.7481976 9.92192612,13.746591 9.89546844,13.7435072 C9.79274407,13.7306516 9.69583178,13.6990985 9.6082458,13.6523619 L9.59484365,13.6451239 C9.58442452,13.639322 9.57410342,13.6332795 9.56375825,13.6268308 C9.54437371,13.6148978 9.52551484,13.6021934 9.50686916,13.5885746 L9.48480346,13.5717051 L9.41074435,13.5059223 L6.49407768,10.5892557 L6.44539737,10.5362495 C6.16954226,10.2088381 6.18576903,9.719053 6.49407768,9.41074435 L6.54708384,9.36206404 C6.87449527,9.08620893 7.36428033,9.1024357 7.67258898,9.41074435 L9.167,10.905 L9.16666667,3.33333333 C9.16666667,2.87309604 9.53976271,2.5 10,2.5 Z",
8
+ "fill": "#FFF",
9
+ "fill-rule": "nonzero"
10
+ }, null)]);
11
+ export {
12
+ Download
13
+ };
@@ -16,6 +16,7 @@ export type ImagePreviewOptions = {
16
16
  className?: unknown;
17
17
  showIndex?: boolean;
18
18
  closeable?: boolean;
19
+ showDownload?: boolean;
19
20
  closeIcon?: string;
20
21
  transition?: string;
21
22
  beforeClose?: Interceptor;
package/es/index.d.ts CHANGED
@@ -84,4 +84,4 @@ declare namespace _default {
84
84
  }
85
85
  export default _default;
86
86
  export function install(app: any): void;
87
- export const version: "3.1.71";
87
+ export const version: "3.1.73";
package/es/index.mjs CHANGED
@@ -77,7 +77,7 @@ import { Timeline } from "./timeline/index.mjs";
77
77
  import { Toast } from "./toast/index.mjs";
78
78
  import { Uploader } from "./uploader/index.mjs";
79
79
  import { Video } from "./video/index.mjs";
80
- const version = "3.1.71";
80
+ const version = "3.1.73";
81
81
  function install(app) {
82
82
  const components = [
83
83
  ActionSheet,
@@ -8,6 +8,7 @@ declare const mediaPickerProps: {
8
8
  };
9
9
  disabled: BooleanConstructor;
10
10
  showTitle: BooleanConstructor;
11
+ showDownload: BooleanConstructor;
11
12
  useFileNameAsLabel: BooleanConstructor;
12
13
  title: {
13
14
  type: PropType<string>;
@@ -95,6 +96,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
95
96
  };
96
97
  disabled: BooleanConstructor;
97
98
  showTitle: BooleanConstructor;
99
+ showDownload: BooleanConstructor;
98
100
  useFileNameAsLabel: BooleanConstructor;
99
101
  title: {
100
102
  type: PropType<string>;
@@ -177,6 +179,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
177
179
  };
178
180
  disabled: BooleanConstructor;
179
181
  showTitle: BooleanConstructor;
182
+ showDownload: BooleanConstructor;
180
183
  useFileNameAsLabel: BooleanConstructor;
181
184
  title: {
182
185
  type: PropType<string>;
@@ -260,6 +263,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
260
263
  title: string;
261
264
  disabled: boolean;
262
265
  showTitle: boolean;
266
+ showDownload: boolean;
263
267
  sortable: boolean;
264
268
  useFileNameAsLabel: boolean;
265
269
  mediaList: Media[];
@@ -54,6 +54,7 @@ const mediaPickerProps = {
54
54
  },
55
55
  disabled: Boolean,
56
56
  showTitle: Boolean,
57
+ showDownload: Boolean,
57
58
  useFileNameAsLabel: Boolean,
58
59
  title: makeStringProp("\u6DFB\u52A0\u9644\u4EF6"),
59
60
  mediaList: makeArrayProp(),
@@ -744,6 +745,7 @@ var stdin_default = defineComponent({
744
745
  images: imageList.value.map((image) => ({
745
746
  url: image.url || image.showSrc || ""
746
747
  })),
748
+ showDownload: props.showDownload,
747
749
  startPosition: imageIndex,
748
750
  closeable: true
749
751
  });
@@ -5,6 +5,7 @@ export declare const MediaPicker: import("../utils").WithInstall<import("vue").D
5
5
  };
6
6
  disabled: BooleanConstructor;
7
7
  showTitle: BooleanConstructor;
8
+ showDownload: BooleanConstructor;
8
9
  useFileNameAsLabel: BooleanConstructor;
9
10
  title: {
10
11
  type: import("vue").PropType<string>;
@@ -77,6 +78,7 @@ export declare const MediaPicker: import("../utils").WithInstall<import("vue").D
77
78
  };
78
79
  disabled: BooleanConstructor;
79
80
  showTitle: BooleanConstructor;
81
+ showDownload: BooleanConstructor;
80
82
  useFileNameAsLabel: BooleanConstructor;
81
83
  title: {
82
84
  type: import("vue").PropType<string>;
@@ -150,6 +152,7 @@ export declare const MediaPicker: import("../utils").WithInstall<import("vue").D
150
152
  title: string;
151
153
  disabled: boolean;
152
154
  showTitle: boolean;
155
+ showDownload: boolean;
153
156
  sortable: boolean;
154
157
  useFileNameAsLabel: boolean;
155
158
  mediaList: import("./type").Media[];
@@ -87,6 +87,7 @@ export declare const pickerProps: {
87
87
  type: BooleanConstructor;
88
88
  default: true;
89
89
  };
90
+ teleport: PropType<string | import("vue").RendererElement | null | undefined>;
90
91
  showType: {
91
92
  type: PropType<PickerShowType>;
92
93
  default: PickerShowType;
@@ -151,6 +152,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
151
152
  type: BooleanConstructor;
152
153
  default: true;
153
154
  };
155
+ teleport: PropType<string | import("vue").RendererElement | null | undefined>;
154
156
  showType: {
155
157
  type: PropType<PickerShowType>;
156
158
  default: PickerShowType;
@@ -213,6 +215,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
213
215
  type: BooleanConstructor;
214
216
  default: true;
215
217
  };
218
+ teleport: PropType<string | import("vue").RendererElement | null | undefined>;
216
219
  showType: {
217
220
  type: PropType<PickerShowType>;
218
221
  default: PickerShowType;
@@ -28,6 +28,7 @@ const pickerProps = extend({}, pickerSharedProps, {
28
28
  columnsFieldNames: Object,
29
29
  showPicker: Boolean,
30
30
  popup: truthProp,
31
+ teleport: [String, Object],
31
32
  showType: makeStringProp("default"),
32
33
  columnCounts: makeNumberProp(3)
33
34
  });
@@ -270,7 +271,8 @@ var stdin_default = defineComponent({
270
271
  "show": showPicker.value,
271
272
  "onUpdate:show": [($event) => showPicker.value = $event, updateShow],
272
273
  "round": true,
273
- "position": "bottom"
274
+ "position": "bottom",
275
+ "teleport": props.teleport
274
276
  }, {
275
277
  default: renderTiledPicker
276
278
  });
@@ -282,7 +284,8 @@ var stdin_default = defineComponent({
282
284
  "show": showPicker.value,
283
285
  "onUpdate:show": [($event) => showPicker.value = $event, updateShow],
284
286
  "round": true,
285
- "position": "bottom"
287
+ "position": "bottom",
288
+ "teleport": props.teleport
286
289
  }, {
287
290
  default: renderPicker
288
291
  });
@@ -53,6 +53,7 @@ export declare const Picker: import("../utils").WithInstall<import("vue").Define
53
53
  type: BooleanConstructor;
54
54
  default: true;
55
55
  };
56
+ teleport: import("vue").PropType<string | import("vue").RendererElement | null | undefined>;
56
57
  showType: {
57
58
  type: import("vue").PropType<import("./types").PickerShowType>;
58
59
  default: import("./types").PickerShowType;
@@ -115,6 +116,7 @@ export declare const Picker: import("../utils").WithInstall<import("vue").Define
115
116
  type: BooleanConstructor;
116
117
  default: true;
117
118
  };
119
+ teleport: import("vue").PropType<string | import("vue").RendererElement | null | undefined>;
118
120
  showType: {
119
121
  type: import("vue").PropType<import("./types").PickerShowType>;
120
122
  default: import("./types").PickerShowType;
@@ -5,6 +5,7 @@ import "../../image/index.css";
5
5
  import "../../overlay/index.css";
6
6
  import "../../popup/index.css";
7
7
  import "../../loading/index.css";
8
+ import "../../toast/index.css";
8
9
  import "../../swipe/index.css";
9
10
  import "../../swipe-item/index.css";
10
11
  import "../../image-preview/index.css";
@@ -2,6 +2,11 @@ import type { PropType, CSSProperties, ExtractPropTypes } from 'vue';
2
2
  import { Interceptor } from '../utils';
3
3
  import { PopupCloseIconPosition } from '../popup';
4
4
  import { ImageItem } from './types';
5
+ export type DownloadActionParams = {
6
+ index: number;
7
+ url?: string;
8
+ title?: string;
9
+ };
5
10
  export declare const imagePreviewProps: {
6
11
  show: BooleanConstructor;
7
12
  loop: {
@@ -29,6 +34,8 @@ export declare const imagePreviewProps: {
29
34
  type: BooleanConstructor;
30
35
  default: true;
31
36
  };
37
+ showDownload: BooleanConstructor;
38
+ downloadAction: PropType<(params: DownloadActionParams) => boolean | void>;
32
39
  className: PropType<unknown>;
33
40
  closeIcon: {
34
41
  type: PropType<string>;
@@ -89,6 +96,8 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
89
96
  type: BooleanConstructor;
90
97
  default: true;
91
98
  };
99
+ showDownload: BooleanConstructor;
100
+ downloadAction: PropType<(params: DownloadActionParams) => boolean | void>;
92
101
  className: PropType<unknown>;
93
102
  closeIcon: {
94
103
  type: PropType<string>;
@@ -120,7 +129,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
120
129
  default: PopupCloseIconPosition;
121
130
  };
122
131
  teleport: PropType<string | import("vue").RendererElement | null | undefined>;
123
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("change" | "close" | "closed" | "update:show" | "scale" | "longPress")[], "change" | "close" | "closed" | "update:show" | "scale" | "longPress", import("vue").PublicProps, Readonly<ExtractPropTypes<{
132
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("download" | "change" | "close" | "closed" | "update:show" | "scale" | "longPress")[], "download" | "change" | "close" | "closed" | "update:show" | "scale" | "longPress", import("vue").PublicProps, Readonly<ExtractPropTypes<{
124
133
  show: BooleanConstructor;
125
134
  loop: {
126
135
  type: BooleanConstructor;
@@ -147,6 +156,8 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
147
156
  type: BooleanConstructor;
148
157
  default: true;
149
158
  };
159
+ showDownload: BooleanConstructor;
160
+ downloadAction: PropType<(params: DownloadActionParams) => boolean | void>;
150
161
  className: PropType<unknown>;
151
162
  closeIcon: {
152
163
  type: PropType<string>;
@@ -185,6 +196,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
185
196
  "onUpdate:show"?: ((...args: any[]) => any) | undefined;
186
197
  onScale?: ((...args: any[]) => any) | undefined;
187
198
  onLongPress?: ((...args: any[]) => any) | undefined;
199
+ onDownload?: ((...args: any[]) => any) | undefined;
188
200
  }>, {
189
201
  loop: boolean;
190
202
  overlay: boolean;
@@ -200,6 +212,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
200
212
  maxZoom: string | number;
201
213
  images: ImageItem[];
202
214
  showIndex: boolean;
215
+ showDownload: boolean;
203
216
  startPosition: string | number;
204
217
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
205
218
  export default _default;