vxe-pc-ui 1.8.13 → 1.9.0
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/es/alert/index.js +10 -0
- package/es/alert/src/alert.js +103 -0
- package/es/alert/style.css +129 -0
- package/es/alert/style.min.css +1 -0
- package/es/components.js +3 -0
- package/es/drawer/src/drawer.js +3 -1
- package/es/drawer/style.css +3 -2
- package/es/drawer/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/image/src/image.js +14 -3
- package/es/image/src/preview.js +217 -47
- package/es/image/src/util.js +1 -2
- package/es/image-preview/style.css +6 -4
- package/es/image-preview/style.min.css +1 -1
- package/es/modal/src/modal.js +3 -1
- package/es/modal/style.css +3 -1
- package/es/modal/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tag/style.css +6 -6
- package/es/tag/style.min.css +1 -1
- package/es/tips/style.css +10 -9
- package/es/tips/style.min.css +1 -1
- package/es/ui/index.js +14 -3
- package/es/vxe-alert/index.js +3 -0
- package/es/vxe-alert/style.css +129 -0
- package/es/vxe-alert/style.min.css +1 -0
- package/es/vxe-drawer/style.css +3 -2
- package/es/vxe-drawer/style.min.css +1 -1
- package/es/vxe-image-preview/style.css +6 -4
- package/es/vxe-image-preview/style.min.css +1 -1
- package/es/vxe-modal/style.css +3 -1
- package/es/vxe-modal/style.min.css +1 -1
- package/es/vxe-tag/style.css +6 -6
- package/es/vxe-tag/style.min.css +1 -1
- package/es/vxe-tips/style.css +10 -9
- package/es/vxe-tips/style.min.css +1 -1
- package/lib/alert/index.js +17 -0
- package/lib/alert/index.min.js +1 -0
- package/lib/alert/src/alert.js +101 -0
- package/lib/alert/src/alert.min.js +1 -0
- package/lib/alert/style/index.js +1 -0
- package/lib/alert/style/style.css +129 -0
- package/lib/alert/style/style.min.css +1 -0
- package/lib/components.js +13 -1
- package/lib/components.min.js +1 -1
- package/lib/drawer/src/drawer.js +6 -0
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/drawer/style/style.css +3 -2
- package/lib/drawer/style/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/image/src/image.js +16 -3
- package/lib/image/src/image.min.js +1 -1
- package/lib/image/src/preview.js +195 -28
- package/lib/image/src/preview.min.js +1 -1
- package/lib/image/src/util.js +0 -2
- package/lib/image/src/util.min.js +1 -1
- package/lib/image-preview/style/style.css +6 -4
- package/lib/image-preview/style/style.min.css +1 -1
- package/lib/index.umd.js +756 -399
- package/lib/index.umd.min.js +1 -1
- package/lib/modal/src/modal.js +6 -0
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/modal/style/style.css +3 -1
- package/lib/modal/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tag/style/style.css +6 -6
- package/lib/tag/style/style.min.css +1 -1
- package/lib/tips/style/style.css +10 -9
- package/lib/tips/style/style.min.css +1 -1
- package/lib/ui/index.js +14 -3
- package/lib/ui/index.min.js +1 -1
- package/lib/vxe-alert/index.js +22 -0
- package/lib/vxe-alert/index.min.js +1 -0
- package/lib/vxe-alert/style/index.js +1 -0
- package/lib/vxe-alert/style/style.css +129 -0
- package/lib/vxe-alert/style/style.min.css +1 -0
- package/lib/vxe-drawer/style/style.css +3 -2
- package/lib/vxe-drawer/style/style.min.css +1 -1
- package/lib/vxe-image-preview/style/style.css +6 -4
- package/lib/vxe-image-preview/style/style.min.css +1 -1
- package/lib/vxe-modal/style/style.css +3 -1
- package/lib/vxe-modal/style/style.min.css +1 -1
- package/lib/vxe-tag/style/style.css +6 -6
- package/lib/vxe-tag/style/style.min.css +1 -1
- package/lib/vxe-tips/style/style.css +10 -9
- package/lib/vxe-tips/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/alert/index.ts +14 -0
- package/packages/alert/src/alert.ts +123 -0
- package/packages/components.ts +3 -0
- package/packages/drawer/src/drawer.ts +3 -1
- package/packages/image/src/image.ts +15 -3
- package/packages/image/src/preview.ts +212 -46
- package/packages/image/src/util.ts +1 -2
- package/packages/modal/src/modal.ts +3 -1
- package/packages/tips/src/tips.ts +3 -2
- package/packages/ui/index.ts +14 -2
- package/styles/all.scss +1 -0
- package/styles/components/alert.scss +99 -0
- package/styles/components/drawer.scss +9 -7
- package/styles/components/image-preview.scss +7 -4
- package/styles/components/modal.scss +5 -1
- package/styles/components/tag.scss +6 -6
- package/styles/components/tips.scss +10 -9
- package/styles/theme/base.scss +0 -53
- package/styles/theme/dark.scss +46 -12
- package/styles/theme/light.scss +46 -12
- package/types/all.d.ts +3 -0
- package/types/components/alert.d.ts +85 -0
- package/types/components/drawer.d.ts +2 -0
- package/types/components/image-preview.d.ts +6 -1
- package/types/components/image.d.ts +0 -1
- package/types/components/modal.d.ts +2 -0
- package/types/ui/global-config.d.ts +5 -1
- package/types/ui/global-icon.d.ts +7 -0
- /package/es/icon/style/{iconfont.1717233455609.ttf → iconfont.1717313412020.ttf} +0 -0
- /package/es/icon/style/{iconfont.1717233455609.woff → iconfont.1717313412020.woff} +0 -0
- /package/es/icon/style/{iconfont.1717233455609.woff2 → iconfont.1717313412020.woff2} +0 -0
- /package/es/{iconfont.1717233455609.ttf → iconfont.1717313412020.ttf} +0 -0
- /package/es/{iconfont.1717233455609.woff → iconfont.1717313412020.woff} +0 -0
- /package/es/{iconfont.1717233455609.woff2 → iconfont.1717313412020.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1717233455609.ttf → iconfont.1717313412020.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1717233455609.woff → iconfont.1717313412020.woff} +0 -0
- /package/lib/icon/style/{iconfont.1717233455609.woff2 → iconfont.1717313412020.woff2} +0 -0
- /package/lib/{iconfont.1717233455609.ttf → iconfont.1717313412020.ttf} +0 -0
- /package/lib/{iconfont.1717233455609.woff → iconfont.1717313412020.woff} +0 -0
- /package/lib/{iconfont.1717233455609.woff2 → iconfont.1717313412020.woff2} +0 -0
package/lib/image/src/preview.js
CHANGED
|
@@ -7,13 +7,21 @@ exports.default = void 0;
|
|
|
7
7
|
var _vue = require("vue");
|
|
8
8
|
var _core = require("@vxe-ui/core");
|
|
9
9
|
var _xeUtils = _interopRequireDefault(require("xe-utils"));
|
|
10
|
+
var _dom = require("../..//ui/src/dom");
|
|
10
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
12
|
var _default = exports.default = (0, _vue.defineComponent)({
|
|
12
13
|
name: 'VxeImagePreview',
|
|
13
14
|
props: {
|
|
14
15
|
modelValue: Number,
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
urlList: Array,
|
|
17
|
+
urlField: {
|
|
18
|
+
type: String,
|
|
19
|
+
default: () => (0, _core.getConfig)().imagePreview.urlField
|
|
20
|
+
},
|
|
21
|
+
marginSize: {
|
|
22
|
+
type: String,
|
|
23
|
+
default: () => (0, _core.getConfig)().imagePreview.marginSize
|
|
24
|
+
}
|
|
17
25
|
},
|
|
18
26
|
emits: ['update:modelValue', 'change', 'close'],
|
|
19
27
|
setup(props, context) {
|
|
@@ -22,38 +30,83 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
22
30
|
} = context;
|
|
23
31
|
const xID = _xeUtils.default.uniqueId();
|
|
24
32
|
const reactData = (0, _vue.reactive)({
|
|
25
|
-
activeIndex: props.modelValue,
|
|
33
|
+
activeIndex: props.modelValue || 0,
|
|
34
|
+
targetHeight: 0,
|
|
35
|
+
targetWidth: 0,
|
|
26
36
|
offsetPct11: false,
|
|
27
37
|
offsetScale: 0,
|
|
28
38
|
offsetRotate: 0,
|
|
29
39
|
offsetLeft: 0,
|
|
30
40
|
offsetTop: 0
|
|
31
41
|
});
|
|
42
|
+
const computeUrlProp = (0, _vue.computed)(() => {
|
|
43
|
+
return props.urlField || 'url';
|
|
44
|
+
});
|
|
45
|
+
const computeMarginSize = (0, _vue.computed)(() => {
|
|
46
|
+
return _xeUtils.default.toNumber(props.marginSize || 0) || 16;
|
|
47
|
+
});
|
|
32
48
|
const computeImgList = (0, _vue.computed)(() => {
|
|
33
49
|
const {
|
|
34
|
-
url,
|
|
35
50
|
urlList
|
|
36
51
|
} = props;
|
|
37
|
-
|
|
52
|
+
const urlProp = computeUrlProp.value;
|
|
38
53
|
if (urlList && urlList.length) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
54
|
+
return urlList.map(item => {
|
|
55
|
+
if (_xeUtils.default.isString(item)) {
|
|
56
|
+
return item;
|
|
57
|
+
}
|
|
58
|
+
if (item[urlProp]) {
|
|
59
|
+
return item[urlProp];
|
|
60
|
+
}
|
|
61
|
+
return '';
|
|
62
|
+
});
|
|
42
63
|
}
|
|
43
|
-
return
|
|
64
|
+
return [];
|
|
44
65
|
});
|
|
45
66
|
const computeImgTransform = (0, _vue.computed)(() => {
|
|
46
|
-
|
|
67
|
+
let {
|
|
47
68
|
offsetScale,
|
|
48
|
-
offsetRotate
|
|
69
|
+
offsetRotate,
|
|
70
|
+
offsetLeft,
|
|
71
|
+
offsetTop
|
|
49
72
|
} = reactData;
|
|
50
73
|
const stys = [];
|
|
51
|
-
|
|
52
|
-
|
|
74
|
+
let targetScale = 1;
|
|
75
|
+
if (targetScale) {
|
|
76
|
+
targetScale = 1 + offsetScale;
|
|
77
|
+
stys.push(`scale(${targetScale})`);
|
|
53
78
|
}
|
|
54
79
|
if (offsetRotate) {
|
|
55
80
|
stys.push(`rotate(${offsetRotate}deg)`);
|
|
56
81
|
}
|
|
82
|
+
if (offsetLeft || offsetTop) {
|
|
83
|
+
// 缩放与位移
|
|
84
|
+
offsetLeft /= targetScale;
|
|
85
|
+
offsetTop /= targetScale;
|
|
86
|
+
let targetOffsetLeft = offsetLeft;
|
|
87
|
+
let targetOffsetTop = offsetTop;
|
|
88
|
+
if (offsetRotate) {
|
|
89
|
+
// 转向与位移
|
|
90
|
+
switch (offsetRotate % 360) {
|
|
91
|
+
case 90:
|
|
92
|
+
case -270:
|
|
93
|
+
targetOffsetLeft = offsetTop;
|
|
94
|
+
targetOffsetTop = -offsetLeft;
|
|
95
|
+
break;
|
|
96
|
+
case 180:
|
|
97
|
+
case -180:
|
|
98
|
+
targetOffsetLeft = -offsetLeft;
|
|
99
|
+
targetOffsetTop = -offsetTop;
|
|
100
|
+
break;
|
|
101
|
+
case 270:
|
|
102
|
+
case -90:
|
|
103
|
+
targetOffsetLeft = -offsetTop;
|
|
104
|
+
targetOffsetTop = offsetLeft;
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
stys.push(`translate(${targetOffsetLeft}px, ${targetOffsetTop}px)`);
|
|
109
|
+
}
|
|
57
110
|
return stys.length ? stys.join(' ') : '';
|
|
58
111
|
});
|
|
59
112
|
const computeMaps = {
|
|
@@ -82,20 +135,47 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
82
135
|
};
|
|
83
136
|
const imagePreviewPrivateMethods = {};
|
|
84
137
|
const resetStyle = () => {
|
|
85
|
-
reactData
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
138
|
+
Object.assign(reactData, {
|
|
139
|
+
targetHeight: 0,
|
|
140
|
+
targetWidth: 0,
|
|
141
|
+
offsetPct11: false,
|
|
142
|
+
offsetScale: 0,
|
|
143
|
+
offsetRotate: 0,
|
|
144
|
+
offsetLeft: 0,
|
|
145
|
+
offsetTop: 0
|
|
146
|
+
});
|
|
90
147
|
};
|
|
91
148
|
const handleZoom = isAdd => {
|
|
92
149
|
const {
|
|
93
150
|
offsetScale
|
|
94
151
|
} = reactData;
|
|
152
|
+
let stepNum = 0.02;
|
|
153
|
+
console.log(offsetScale);
|
|
154
|
+
if (offsetScale >= -0.6) {
|
|
155
|
+
stepNum = 0.04;
|
|
156
|
+
if (offsetScale >= -0.4) {
|
|
157
|
+
stepNum = 0.07;
|
|
158
|
+
if (offsetScale >= 0) {
|
|
159
|
+
stepNum = 0.1;
|
|
160
|
+
if (offsetScale >= 3) {
|
|
161
|
+
stepNum = 0.2;
|
|
162
|
+
if (offsetScale >= 8) {
|
|
163
|
+
stepNum = 0.3;
|
|
164
|
+
if (offsetScale >= 18) {
|
|
165
|
+
stepNum = 0.4;
|
|
166
|
+
if (offsetScale >= 38) {
|
|
167
|
+
stepNum = 0.5;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
95
175
|
if (isAdd) {
|
|
96
|
-
reactData.offsetScale = Number(Math.min(
|
|
176
|
+
reactData.offsetScale = Number(Math.min(50, offsetScale + stepNum).toFixed(2));
|
|
97
177
|
} else {
|
|
98
|
-
reactData.offsetScale = Number(Math.max(-0.
|
|
178
|
+
reactData.offsetScale = Number(Math.max(-0.9, offsetScale - stepNum).toFixed(2));
|
|
99
179
|
}
|
|
100
180
|
};
|
|
101
181
|
const handleChange = isNext => {
|
|
@@ -114,6 +194,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
114
194
|
activeIndex--;
|
|
115
195
|
}
|
|
116
196
|
}
|
|
197
|
+
resetStyle();
|
|
117
198
|
reactData.activeIndex = activeIndex;
|
|
118
199
|
emitModel(activeIndex);
|
|
119
200
|
};
|
|
@@ -127,6 +208,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
127
208
|
reactData.offsetRotate = offsetRotate;
|
|
128
209
|
};
|
|
129
210
|
const handlePct11 = () => {
|
|
211
|
+
resetStyle();
|
|
130
212
|
reactData.offsetPct11 = true;
|
|
131
213
|
};
|
|
132
214
|
const handlePrintImg = () => {
|
|
@@ -174,13 +256,94 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
174
256
|
}
|
|
175
257
|
}
|
|
176
258
|
};
|
|
259
|
+
const wheelEvent = evnt => {
|
|
260
|
+
const delta = evnt.deltaY;
|
|
261
|
+
if (delta > 0) {
|
|
262
|
+
handleZoom(false);
|
|
263
|
+
} else if (delta < 0) {
|
|
264
|
+
handleZoom(true);
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
const moveEvent = evnt => {
|
|
268
|
+
const {
|
|
269
|
+
offsetTop,
|
|
270
|
+
offsetLeft
|
|
271
|
+
} = reactData;
|
|
272
|
+
evnt.preventDefault();
|
|
273
|
+
const domMousemove = document.onmousemove;
|
|
274
|
+
const domMouseup = document.onmouseup;
|
|
275
|
+
const startX = evnt.pageX;
|
|
276
|
+
const startY = evnt.pageY;
|
|
277
|
+
const marginSize = computeMarginSize.value;
|
|
278
|
+
document.onmousemove = et => {
|
|
279
|
+
const {
|
|
280
|
+
pageX,
|
|
281
|
+
pageY
|
|
282
|
+
} = et;
|
|
283
|
+
const {
|
|
284
|
+
visibleHeight,
|
|
285
|
+
visibleWidth
|
|
286
|
+
} = (0, _dom.getDomNode)();
|
|
287
|
+
et.preventDefault();
|
|
288
|
+
console.log(et.pageX);
|
|
289
|
+
// 限制边界值
|
|
290
|
+
if (pageX > marginSize && pageY > marginSize && pageX < visibleWidth - marginSize && pageY < visibleHeight - marginSize) {
|
|
291
|
+
reactData.offsetLeft = offsetLeft + pageX - startX;
|
|
292
|
+
reactData.offsetTop = offsetTop + pageY - startY;
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
document.onmouseup = () => {
|
|
296
|
+
document.onmousemove = domMousemove;
|
|
297
|
+
document.onmouseup = domMouseup;
|
|
298
|
+
};
|
|
299
|
+
};
|
|
177
300
|
const handleGlobalKeydownEvent = evnt => {
|
|
301
|
+
const hasCtrlKey = evnt.ctrlKey;
|
|
302
|
+
const hasShiftKey = evnt.shiftKey;
|
|
303
|
+
const isUpArrow = _core.globalEvents.hasKey(evnt, _core.GLOBAL_EVENT_KEYS.ARROW_UP);
|
|
304
|
+
const isDownArrow = _core.globalEvents.hasKey(evnt, _core.GLOBAL_EVENT_KEYS.ARROW_DOWN);
|
|
178
305
|
const isLeftArrow = _core.globalEvents.hasKey(evnt, _core.GLOBAL_EVENT_KEYS.ARROW_LEFT);
|
|
179
306
|
const isRightArrow = _core.globalEvents.hasKey(evnt, _core.GLOBAL_EVENT_KEYS.ARROW_RIGHT);
|
|
180
|
-
|
|
181
|
-
|
|
307
|
+
const isR = _core.globalEvents.hasKey(evnt, _core.GLOBAL_EVENT_KEYS.R);
|
|
308
|
+
const isP = _core.globalEvents.hasKey(evnt, _core.GLOBAL_EVENT_KEYS.P);
|
|
309
|
+
if (isUpArrow) {
|
|
310
|
+
evnt.preventDefault();
|
|
311
|
+
if (hasShiftKey) {
|
|
312
|
+
reactData.offsetTop -= 1;
|
|
313
|
+
} else {
|
|
314
|
+
handleZoom(true);
|
|
315
|
+
}
|
|
316
|
+
} else if (isDownArrow) {
|
|
317
|
+
evnt.preventDefault();
|
|
318
|
+
if (hasShiftKey) {
|
|
319
|
+
reactData.offsetTop += 1;
|
|
320
|
+
} else {
|
|
321
|
+
handleZoom(false);
|
|
322
|
+
}
|
|
323
|
+
} else if (isLeftArrow) {
|
|
324
|
+
evnt.preventDefault();
|
|
325
|
+
if (hasShiftKey) {
|
|
326
|
+
reactData.offsetLeft -= 1;
|
|
327
|
+
} else {
|
|
328
|
+
handleChange(false);
|
|
329
|
+
}
|
|
182
330
|
} else if (isRightArrow) {
|
|
183
|
-
|
|
331
|
+
evnt.preventDefault();
|
|
332
|
+
if (hasShiftKey) {
|
|
333
|
+
reactData.offsetLeft += 1;
|
|
334
|
+
} else {
|
|
335
|
+
handleChange(true);
|
|
336
|
+
}
|
|
337
|
+
} else if (isR && hasCtrlKey) {
|
|
338
|
+
evnt.preventDefault();
|
|
339
|
+
if (hasShiftKey) {
|
|
340
|
+
handleRotateImg(false);
|
|
341
|
+
} else {
|
|
342
|
+
handleRotateImg(true);
|
|
343
|
+
}
|
|
344
|
+
} else if (isP && hasCtrlKey) {
|
|
345
|
+
evnt.preventDefault();
|
|
346
|
+
handlePrintImg();
|
|
184
347
|
}
|
|
185
348
|
};
|
|
186
349
|
Object.assign($xeImagePreview, imagePreviewMethods, imagePreviewPrivateMethods);
|
|
@@ -201,7 +364,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
201
364
|
src: url,
|
|
202
365
|
style: isActive ? {
|
|
203
366
|
transform: imgTransform
|
|
204
|
-
} : null
|
|
367
|
+
} : null,
|
|
368
|
+
onMousedown(evnt) {
|
|
369
|
+
moveEvent(evnt);
|
|
370
|
+
}
|
|
205
371
|
});
|
|
206
372
|
}));
|
|
207
373
|
};
|
|
@@ -231,21 +397,21 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
231
397
|
class: (0, _core.getIcon)().IMAGE_PREVIEW_CLOSE
|
|
232
398
|
})]), (0, _vue.h)('div', {
|
|
233
399
|
class: 'vxe-image-preview--close-bg'
|
|
234
|
-
})]), (0, _vue.h)('div', {
|
|
400
|
+
})]), imgList.length > 1 ? (0, _vue.h)('div', {
|
|
235
401
|
class: 'vxe-image-preview--previous-btn',
|
|
236
402
|
onClick() {
|
|
237
403
|
handleChange(false);
|
|
238
404
|
}
|
|
239
405
|
}, [(0, _vue.h)('i', {
|
|
240
406
|
class: (0, _core.getIcon)().IMAGE_PREVIEW_PREVIOUS
|
|
241
|
-
})]), (0, _vue.h)('div', {
|
|
407
|
+
})]) : (0, _vue.createCommentVNode)(), imgList.length > 1 ? (0, _vue.h)('div', {
|
|
242
408
|
class: 'vxe-image-preview--next-btn',
|
|
243
409
|
onClick() {
|
|
244
410
|
handleChange(true);
|
|
245
411
|
}
|
|
246
412
|
}, [(0, _vue.h)('i', {
|
|
247
413
|
class: (0, _core.getIcon)().IMAGE_PREVIEW_NEXT
|
|
248
|
-
})]), (0, _vue.h)('div', {
|
|
414
|
+
})]) : (0, _vue.createCommentVNode)(), (0, _vue.h)('div', {
|
|
249
415
|
class: 'vxe-image-preview--operation-wrapper'
|
|
250
416
|
}, [(0, _vue.h)('div', {
|
|
251
417
|
class: 'vxe-image-preview--operation-active-count'
|
|
@@ -258,7 +424,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
258
424
|
return (0, _vue.h)('div', {
|
|
259
425
|
class: ['vxe-image-preview', {
|
|
260
426
|
'is--pct11': offsetPct11
|
|
261
|
-
}]
|
|
427
|
+
}],
|
|
428
|
+
onWheel: wheelEvent
|
|
262
429
|
}, [renderImgWrapper(), renderBtnWrapper()]);
|
|
263
430
|
};
|
|
264
431
|
$xeImagePreview.renderVN = renderVN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_core=require("@vxe-ui/core"),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeImagePreview",props:{modelValue:Number,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_core=require("@vxe-ui/core"),_xeUtils=_interopRequireDefault(require("xe-utils")),_dom=require("../..//ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeImagePreview",props:{modelValue:Number,urlList:Array,urlField:{type:String,default:()=>(0,_core.getConfig)().imagePreview.urlField},marginSize:{type:String,default:()=>(0,_core.getConfig)().imagePreview.marginSize}},emits:["update:modelValue","change","close"],setup(o,e){const a=e["emit"];var t=_xeUtils.default.uniqueId();const u=(0,_vue.reactive)({activeIndex:o.modelValue||0,targetHeight:0,targetWidth:0,offsetPct11:!1,offsetScale:0,offsetRotate:0,offsetLeft:0,offsetTop:0}),r=(0,_vue.computed)(()=>o.urlField||"url"),v=(0,_vue.computed)(()=>_xeUtils.default.toNumber(o.marginSize||0)||16),s=(0,_vue.computed)(()=>{var e=o["urlList"];const t=r.value;return e&&e.length?e.map(e=>_xeUtils.default.isString(e)?e:e[t]||""):[]}),i=(0,_vue.computed)(()=>{var{offsetScale:e,offsetRotate:o,offsetLeft:a,offsetTop:r}=u,s=[];let i=1;if(i&&(i=1+e,s.push(`scale(${i})`)),o&&s.push(`rotate(${o}deg)`),a||r){let e=a/=i,t=r/=i;if(o)switch(o%360){case 90:case-270:e=r,t=-a;break;case 180:case-180:e=-a,t=-r;break;case 270:case-90:e=-r,t=a}s.push(`translate(${e}px, ${t}px)`)}return s.length?s.join(" "):""}),c={computeImgList:s},l={xID:t,props:o,context:e,reactData:u,getComputeMaps:()=>c},n={dispatchEvent(e,t,o){a(e,(0,_core.createEvent)(o,{$imagePreview:l},t))}},_=e=>{u.activeIndex=e,a("update:modelValue",e)},f=e=>{n.dispatchEvent("close",{},e)};const p=()=>{Object.assign(u,{targetHeight:0,targetWidth:0,offsetPct11:!1,offsetScale:0,offsetRotate:0,offsetLeft:0,offsetTop:0})},m=e=>{var t=u["offsetScale"];let o=.02;console.log(t),-.6<=t&&(o=.04,-.4<=t)&&(o=.07,0<=t)&&(o=.1,3<=t)&&(o=.2,8<=t)&&(o=.3,18<=t)&&(o=.4,38<=t)&&(o=.5),u.offsetScale=e?Number(Math.min(50,t+o).toFixed(2)):Number(Math.max(-.9,t-o).toFixed(2))},d=e=>{let t=u.activeIndex||0;var o=s.value;e?t>=o.length-1?t=0:t++:t<=0?t=o.length-1:t--,p(),u.activeIndex=t,_(t)},g=e=>{let t=u.offsetRotate;e?t+=90:t-=90,u.offsetRotate=t},E=()=>{var e=u["activeIndex"],e=s.value[e||0];_core.VxeUI.print&&_core.VxeUI.print({customStyle:"@page {size: auto;margin: 0mm;}html,body{height:100%;}body{display: flex;flex-direction: row;align-items: center;justify-content: center;}",content:`<img src="${e}" style="display: block;max-width:90%;max-height:90%;">`})},h=e=>{var t=u["activeIndex"];if(s.value[t||0])switch(e){case"zoomOut":m(!1);break;case"zoomIn":m(!0);break;case"pctFull":p();break;case"pct11":p(),u.offsetPct11=!0;break;case"rotateLeft":g(!1);break;case"rotateRight":g(!0);break;case"print":E()}},I=e=>{e=e.deltaY;0<e?m(!1):e<0&&m(!0)},x=e=>{const{offsetTop:s,offsetLeft:i}=u,t=(e.preventDefault(),document.onmousemove),o=document.onmouseup,c=e.pageX,l=e.pageY,n=v.value;document.onmousemove=e=>{var{pageX:t,pageY:o}=e,{visibleHeight:a,visibleWidth:r}=(0,_dom.getDomNode)();e.preventDefault(),console.log(e.pageX),t>n&&o>n&&t<r-n&&o<a-n&&(u.offsetLeft=i+t-c,u.offsetTop=s+o-l)},document.onmouseup=()=>{document.onmousemove=t,document.onmouseup=o}},b=e=>{var t=e.ctrlKey,o=e.shiftKey,a=_core.globalEvents.hasKey(e,_core.GLOBAL_EVENT_KEYS.ARROW_UP),r=_core.globalEvents.hasKey(e,_core.GLOBAL_EVENT_KEYS.ARROW_DOWN),s=_core.globalEvents.hasKey(e,_core.GLOBAL_EVENT_KEYS.ARROW_LEFT),i=_core.globalEvents.hasKey(e,_core.GLOBAL_EVENT_KEYS.ARROW_RIGHT),c=_core.globalEvents.hasKey(e,_core.GLOBAL_EVENT_KEYS.R),l=_core.globalEvents.hasKey(e,_core.GLOBAL_EVENT_KEYS.P);a?(e.preventDefault(),o?--u.offsetTop:m(!0)):r?(e.preventDefault(),o?u.offsetTop+=1:m(!1)):s?(e.preventDefault(),o?--u.offsetLeft:d(!1)):i?(e.preventDefault(),o?u.offsetLeft+=1:d(!0)):c&&t?(e.preventDefault(),o?g(!1):g(!0)):l&&t&&(e.preventDefault(),E())},R=(Object.assign(l,n,{}),(e,t)=>(0,_vue.h)("div",{class:"vxe-image-preview--operation-btn",onClick(){h(e)}},[(0,_vue.h)("i",{class:(0,_core.getIcon)()[t]})]));t=()=>{var e,t=u["offsetPct11"];return(0,_vue.h)("div",{class:["vxe-image-preview",{"is--pct11":t}],onWheel:I},[(()=>{const o=u["activeIndex"];var e=s.value;const a=i.value;return(0,_vue.h)("div",{class:"vxe-image-preview--img-list"},e.map((e,t)=>{t=o===t;return(0,_vue.h)("img",{class:["vxe-image-preview--img-item",{"is--active":t}],src:e,style:t?{transform:a}:null,onMousedown(e){x(e)}})}))})(),(t=u.activeIndex,e=s.value,(0,_vue.h)("div",{class:"vxe-image-preview--btn-wrapper"},[(0,_vue.h)("div",{class:"vxe-image-preview--close-wrapper"},[(0,_vue.h)("div",{class:"vxe-image-preview--close-btn",onClick:f},[(0,_vue.h)("i",{class:(0,_core.getIcon)().IMAGE_PREVIEW_CLOSE})]),(0,_vue.h)("div",{class:"vxe-image-preview--close-bg"})]),1<e.length?(0,_vue.h)("div",{class:"vxe-image-preview--previous-btn",onClick(){d(!1)}},[(0,_vue.h)("i",{class:(0,_core.getIcon)().IMAGE_PREVIEW_PREVIOUS})]):(0,_vue.createCommentVNode)(),1<e.length?(0,_vue.h)("div",{class:"vxe-image-preview--next-btn",onClick(){d(!0)}},[(0,_vue.h)("i",{class:(0,_core.getIcon)().IMAGE_PREVIEW_NEXT})]):(0,_vue.createCommentVNode)(),(0,_vue.h)("div",{class:"vxe-image-preview--operation-wrapper"},[(0,_vue.h)("div",{class:"vxe-image-preview--operation-active-count"},(t||0)+1+"/"+e.length),R("zoomOut","IMAGE_PREVIEW_ZOOM_OUT"),R("zoomIn","IMAGE_PREVIEW_ZOOM_IN"),R("pctFull","IMAGE_PREVIEW_PCT_FULL"),R("pct11","IMAGE_PREVIEW_PCT_1_1"),R("rotateLeft","IMAGE_PREVIEW_ROTATE_LEFT"),R("rotateRight","IMAGE_PREVIEW_ROTATE_RIGHT"),R("print","IMAGE_PREVIEW_PRINT")])]))])};return l.renderVN=t,(0,_vue.watch)(()=>o.modelValue,e=>{u.activeIndex=e,p()}),(0,_vue.onMounted)(()=>{_core.globalEvents.on(l,"keydown",b)}),(0,_vue.onUnmounted)(()=>{_core.globalEvents.off(l,"keydown")}),(0,_vue.provide)("$xeImagePreview",l),t}});
|
package/lib/image/src/util.js
CHANGED
|
@@ -13,7 +13,6 @@ const openPreviewImage = options => {
|
|
|
13
13
|
if (_core.VxeUI.modal) {
|
|
14
14
|
const opts = Object.assign({}, options);
|
|
15
15
|
const {
|
|
16
|
-
url,
|
|
17
16
|
urlList,
|
|
18
17
|
activeIndex
|
|
19
18
|
} = opts;
|
|
@@ -32,7 +31,6 @@ const openPreviewImage = options => {
|
|
|
32
31
|
return (0, _vue.h)(_preview.default, {
|
|
33
32
|
modelValue: activeIndex,
|
|
34
33
|
urlList,
|
|
35
|
-
url,
|
|
36
34
|
onClose() {
|
|
37
35
|
_core.VxeUI.modal.close(modalId);
|
|
38
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.openPreviewImage=void 0;var _vue=require("vue"),_core=require("@vxe-ui/core"),_preview=_interopRequireDefault(require("./preview")),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const openPreviewImage=e=>{if(_core.VxeUI.modal){const{
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.openPreviewImage=void 0;var _vue=require("vue"),_core=require("@vxe-ui/core"),_preview=_interopRequireDefault(require("./preview")),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const openPreviewImage=e=>{if(_core.VxeUI.modal){const{urlList:r,activeIndex:i}=Object.assign({},e),o=_xeUtils.default.uniqueId("image-preview");_core.VxeUI.modal.open({id:o,title:"预览",width:"100%",height:"100%",showHeader:!1,showFooter:!1,escClosable:!0,className:"vxe-image-preview-popup-wrapper",slots:{default(){return(0,_vue.h)(_preview.default,{modelValue:i,urlList:r,onClose(){_core.VxeUI.modal.close(o)}})}}})}return Promise.resolve()};exports.openPreviewImage=openPreviewImage;
|
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
.vxe-image-preview--img-item {
|
|
22
22
|
display: none;
|
|
23
23
|
cursor: grabbing;
|
|
24
|
-
transition: transform 0.3s ease-in-out;
|
|
25
24
|
}
|
|
26
25
|
.vxe-image-preview--img-item.is--active {
|
|
27
26
|
display: block;
|
|
@@ -80,7 +79,7 @@
|
|
|
80
79
|
justify-content: center;
|
|
81
80
|
top: 50%;
|
|
82
81
|
border-radius: 50%;
|
|
83
|
-
font-size:
|
|
82
|
+
font-size: 1.6em;
|
|
84
83
|
padding: 0.5em;
|
|
85
84
|
transform: translateY(-50%);
|
|
86
85
|
background-color: rgba(0, 0, 0, 0.8);
|
|
@@ -120,12 +119,13 @@
|
|
|
120
119
|
display: flex;
|
|
121
120
|
flex-direction: row;
|
|
122
121
|
align-items: center;
|
|
122
|
+
justify-content: center;
|
|
123
123
|
font-size: 1.2em;
|
|
124
|
-
|
|
124
|
+
min-width: 2.5em;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
.vxe-image-preview--operation-btn {
|
|
128
|
-
font-size:
|
|
128
|
+
font-size: 1.6em;
|
|
129
129
|
padding: 0.5em;
|
|
130
130
|
cursor: pointer;
|
|
131
131
|
transition: all 0.1s ease-in-out;
|
|
@@ -144,7 +144,9 @@
|
|
|
144
144
|
user-select: none;
|
|
145
145
|
}
|
|
146
146
|
.vxe-image-preview-popup-wrapper.vxe-modal--wrapper.type--modal .vxe-modal--box {
|
|
147
|
+
border: 0;
|
|
147
148
|
background-color: rgba(0, 0, 0, 0.1);
|
|
149
|
+
box-shadow: none;
|
|
148
150
|
}
|
|
149
151
|
.vxe-image-preview-popup-wrapper.vxe-modal--wrapper.type--modal .vxe-modal--content {
|
|
150
152
|
padding: 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vxe-image-preview{position:relative;width:100%;height:100%;overflow:hidden}.vxe-image-preview:not(.is--pct11) .vxe-image-preview--img-item{max-width:100%;max-height:100%}.vxe-image-preview--img-list{display:flex;width:100%;height:100%;flex-direction:row;align-items:center;justify-content:center}.vxe-image-preview--img-item{display:none;cursor:grabbing
|
|
1
|
+
.vxe-image-preview{position:relative;width:100%;height:100%;overflow:hidden}.vxe-image-preview:not(.is--pct11) .vxe-image-preview--img-item{max-width:100%;max-height:100%}.vxe-image-preview--img-list{display:flex;width:100%;height:100%;flex-direction:row;align-items:center;justify-content:center}.vxe-image-preview--img-item{display:none;cursor:grabbing}.vxe-image-preview--img-item.is--active{display:block}.vxe-image-preview--close-btn{top:0;right:0;z-index:99;padding:1em;font-size:1.5em;transform:scale(1);border-radius:50%;cursor:pointer;transition:all .2s ease-in-out}.vxe-image-preview--close-bg{position:absolute;top:-7em;right:-12em;z-index:99;width:30em;height:10em;background-color:rgba(0,0,0,.8);color:var(--vxe-ui-status-error-color);transform:rotate(45deg);cursor:pointer;z-index:88;transition:all .2s ease-in-out}.vxe-image-preview--close-wrapper:hover .vxe-image-preview--close-btn{top:.2em;right:.2em;transform:scale(1.2);color:var(--vxe-ui-status-error-color)}.vxe-image-preview--close-wrapper:hover .vxe-image-preview--close-bg{top:-5em}.vxe-image-preview--close-btn,.vxe-image-preview--next-btn,.vxe-image-preview--operation-wrapper,.vxe-image-preview--previous-btn{position:absolute;z-index:99}.vxe-image-preview--next-btn,.vxe-image-preview--previous-btn{display:flex;flex-direction:row;align-items:center;justify-content:center;top:50%;border-radius:50%;font-size:1.6em;padding:.5em;transform:translateY(-50%);background-color:rgba(0,0,0,.8);cursor:pointer;transition:all .1s ease-in-out}.vxe-image-preview--next-btn:hover,.vxe-image-preview--previous-btn:hover{color:var(--vxe-ui-font-primary-color);transform:translateY(-50%) scale(1.2)}.vxe-image-preview--next-btn:active,.vxe-image-preview--previous-btn:active{transform:translateY(-50%) scale(1.1)}.vxe-image-preview--previous-btn{left:1vw}.vxe-image-preview--next-btn{right:1vw}.vxe-image-preview--operation-wrapper{display:flex;flex-direction:row;bottom:3vh;left:50%;transform:translateX(-50%);padding:0 1.5em;border-radius:3em;background-color:rgba(0,0,0,.8)}.vxe-image-preview--operation-active-count{display:flex;flex-direction:row;align-items:center;justify-content:center;font-size:1.2em;min-width:2.5em}.vxe-image-preview--operation-btn{font-size:1.6em;padding:.5em;cursor:pointer;transition:all .1s ease-in-out}.vxe-image-preview--operation-btn:hover{color:var(--vxe-ui-font-primary-color);transform:scale(1.2)}.vxe-image-preview--operation-btn:active{transform:scale(1.1)}.vxe-image-preview-popup-wrapper{-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-image-preview-popup-wrapper.vxe-modal--wrapper.type--modal .vxe-modal--box{border:0;background-color:rgba(0,0,0,.1);box-shadow:none}.vxe-image-preview-popup-wrapper.vxe-modal--wrapper.type--modal .vxe-modal--content{padding:0}
|