@varlet/ui 2.11.1 → 2.11.2-alpha.1684942134064

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.
@@ -5,6 +5,7 @@ import VarPopup from '../popup/index.mjs';
5
5
  import { defineComponent, ref, computed, watch } from 'vue';
6
6
  import { props } from './props.mjs';
7
7
  import { toNumber } from '@varlet/shared';
8
+ import { useEventListener } from '@varlet/use';
8
9
  import { call, createNamespace } from '../utils/components.mjs';
9
10
  var {
10
11
  n,
@@ -14,11 +15,13 @@ var DISTANCE_OFFSET = 12;
14
15
  var EVENT_DELAY = 200;
15
16
  var TAP_DELAY = 350;
16
17
  var ANIMATION_DURATION = 200;
18
+ var LONG_PRESS_DELAY = 500;
17
19
  import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, mergeProps as _mergeProps, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue";
18
20
 
19
21
  var _withScopeId = n => (_pushScopeId(""), n = n(), _popScopeId(), n);
20
22
 
21
- var _hoisted_1 = ["src", "alt"];
23
+ var _hoisted_1 = ["onTouchstart"];
24
+ var _hoisted_2 = ["src", "alt"];
22
25
 
23
26
  function __render__(_ctx, _cache) {
24
27
  var _component_var_swipe_item = _resolveComponent("var-swipe-item");
@@ -53,7 +56,7 @@ function __render__(_ctx, _cache) {
53
56
  loop: _ctx.loop,
54
57
  onChange: _ctx.onChange
55
58
  }, _ctx.$attrs), {
56
- default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.images, image => {
59
+ default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.images, (image, idx) => {
57
60
  return _openBlock(), _createBlock(_component_var_swipe_item, {
58
61
  class: _normalizeClass(_ctx.n('swipe-item')),
59
62
  "var-image-preview-cover": "",
@@ -66,24 +69,25 @@ function __render__(_ctx, _cache) {
66
69
  transitionTimingFunction: _ctx.transitionTimingFunction,
67
70
  transitionDuration: _ctx.transitionDuration
68
71
  }),
69
- onTouchstart: _cache[0] || (_cache[0] = function () {
70
- return _ctx.handleTouchstart && _ctx.handleTouchstart(...arguments);
71
- }),
72
- onTouchmove: _cache[1] || (_cache[1] = function () {
72
+ onTouchstart: $event => _ctx.handleTouchstart($event, idx),
73
+ onTouchmove: _cache[0] || (_cache[0] = function () {
73
74
  return _ctx.handleTouchmove && _ctx.handleTouchmove(...arguments);
74
75
  }),
75
- onTouchend: _cache[2] || (_cache[2] = function () {
76
+ onTouchend: _cache[1] || (_cache[1] = function () {
76
77
  return _ctx.handleTouchend && _ctx.handleTouchend(...arguments);
78
+ }),
79
+ onTouchcancel: _cache[2] || (_cache[2] = function () {
80
+ return _ctx.handleTouchcancel && _ctx.handleTouchcancel(...arguments);
77
81
  })
78
82
  }, [_createElementVNode("img", {
79
- class: _normalizeClass(_ctx.n('image')),
83
+ class: _normalizeClass(_ctx.classes(_ctx.n('image'), [_ctx.isPreventDefault, _ctx.n('--prevent')])),
80
84
  src: image,
81
85
  alt: image
82
86
  }, null, 10
83
87
  /* CLASS, PROPS */
84
- , _hoisted_1)], 38
85
- /* CLASS, STYLE, HYDRATE_EVENTS */
86
- )]),
88
+ , _hoisted_2)], 46
89
+ /* CLASS, STYLE, PROPS, HYDRATE_EVENTS */
90
+ , _hoisted_1)]),
87
91
  _: 2
88
92
  /* DYNAMIC */
89
93
 
@@ -164,6 +168,15 @@ var __sfc__ = defineComponent({
164
168
  var startTouch = null;
165
169
  var prevTouch = null;
166
170
  var closeRunner = null;
171
+ var longPressRunner = null;
172
+ var isLongPress = false;
173
+ var isPreventDefault = computed(() => {
174
+ var {
175
+ imagePreventDefault,
176
+ show
177
+ } = props;
178
+ return show && imagePreventDefault;
179
+ });
167
180
 
168
181
  var getDistance = (touch, target) => {
169
182
  var {
@@ -220,7 +233,20 @@ var __sfc__ = defineComponent({
220
233
  return getDistance(startTouch, prevTouch) <= DISTANCE_OFFSET && performance.now() - prevTouch.timestamp < TAP_DELAY && (target === startTouch.target || target.parentNode === startTouch.target);
221
234
  };
222
235
 
236
+ var handleTouchcancel = () => {
237
+ window.clearTimeout(longPressRunner);
238
+ isLongPress = false;
239
+ startTouch = null;
240
+ };
241
+
223
242
  var handleTouchend = event => {
243
+ window.clearTimeout(longPressRunner); // avoid triggering tap event sometimes
244
+
245
+ if (isLongPress) {
246
+ isLongPress = false;
247
+ return;
248
+ }
249
+
224
250
  var isTap = isTapTouch(event.target);
225
251
  closeRunner = window.setTimeout(() => {
226
252
  isTap && close();
@@ -228,10 +254,18 @@ var __sfc__ = defineComponent({
228
254
  }, EVENT_DELAY);
229
255
  };
230
256
 
231
- var handleTouchstart = event => {
232
- closeRunner && window.clearTimeout(closeRunner);
257
+ var handleTouchstart = (event, idx) => {
258
+ window.clearTimeout(closeRunner);
259
+ window.clearTimeout(longPressRunner);
233
260
  var currentTouch = createVarTouch(event.touches[0], event.currentTarget);
234
261
  startTouch = currentTouch;
262
+ longPressRunner = window.setTimeout(() => {
263
+ var {
264
+ onLongPress
265
+ } = props;
266
+ isLongPress = true;
267
+ call(onLongPress, idx);
268
+ }, LONG_PRESS_DELAY);
235
269
 
236
270
  if (isDoubleTouch(currentTouch)) {
237
271
  scale.value > 1 ? zoomOut() : zoomIn();
@@ -313,6 +347,10 @@ var __sfc__ = defineComponent({
313
347
  var target = event.currentTarget;
314
348
  var currentTouch = createVarTouch(event.touches[0], target);
315
349
 
350
+ if (getDistance(currentTouch, prevTouch) > DISTANCE_OFFSET) {
351
+ window.clearTimeout(longPressRunner);
352
+ }
353
+
316
354
  if (scale.value > 1) {
317
355
  var moveX = currentTouch.clientX - prevTouch.clientX;
318
356
  var moveY = currentTouch.clientY - prevTouch.clientY;
@@ -335,14 +373,20 @@ var __sfc__ = defineComponent({
335
373
  call(props['onUpdate:show'], false);
336
374
  };
337
375
 
338
- watch(() => props.show, newValue => {
339
- popupShow.value = newValue;
376
+ var preventImageDefault = event => {
377
+ props.imagePreventDefault && props.show && event.preventDefault();
378
+ };
379
+
380
+ useEventListener(() => document, 'contextmenu', preventImageDefault);
381
+ watch(() => props.show, newShow => {
382
+ popupShow.value = newShow;
340
383
  }, {
341
384
  immediate: true
342
385
  });
343
386
  return {
344
387
  n,
345
388
  classes,
389
+ isPreventDefault,
346
390
  initialIndex,
347
391
  popupShow,
348
392
  scale,
@@ -354,6 +398,7 @@ var __sfc__ = defineComponent({
354
398
  handleTouchstart,
355
399
  handleTouchmove,
356
400
  handleTouchend,
401
+ handleTouchcancel,
357
402
  close
358
403
  };
359
404
  }
@@ -1 +1 @@
1
- :root { --image-preview-swipe-indicators-text-color: #ddd; --image-preview-swipe-indicators-padding: 16px 0; --image-preview-zoom-container-background: #000; --image-preview-close-icon-top: 14px; --image-preview-close-icon-right: 14px; --image-preview-extra-top: 14px; --image-preview-extra-left: 14px; --image-preview-close-icon-size: 22px; --image-preview-close-icon-color: #fff;}.var-image-preview__popup[var-image-preview-cover] { height: 100%; background: var(--image-preview-zoom-container-background);}.var-image-preview__swipe[var-image-preview-cover] { width: 100vw; height: 100%;}.var-image-preview__swipe-item[var-image-preview-cover] { overflow: hidden;}.var-image-preview__close-icon[var-image-preview-cover] { position: absolute; top: var(--image-preview-close-icon-top); right: var(--image-preview-close-icon-right); color: var(--image-preview-close-icon-color); font-size: var(--image-preview-close-icon-size);}.var-image-preview__extra { position: absolute; top: var(--image-preview-extra-top); left: var(--image-preview-extra-left);}.var-image-preview__indicators { position: absolute; top: 0; width: 100%; padding: var(--image-preview-swipe-indicators-padding); color: var(--image-preview-swipe-indicators-text-color); text-align: center;}.var-image-preview__image { width: 100%; height: 100%; object-fit: contain; -webkit-user-drag: none;}.var-image-preview__zoom-container { display: flex; justify-content: center; align-items: center; width: 100vw; height: 100%; transition: transform 0.2s;}
1
+ :root { --image-preview-swipe-indicators-text-color: #ddd; --image-preview-swipe-indicators-padding: 16px 0; --image-preview-zoom-container-background: #000; --image-preview-close-icon-top: 14px; --image-preview-close-icon-right: 14px; --image-preview-extra-top: 14px; --image-preview-extra-left: 14px; --image-preview-close-icon-size: 22px; --image-preview-close-icon-color: #fff;}.var-image-preview__popup[var-image-preview-cover] { height: 100%; background: var(--image-preview-zoom-container-background);}.var-image-preview__swipe[var-image-preview-cover] { width: 100vw; height: 100%;}.var-image-preview__swipe-item[var-image-preview-cover] { overflow: hidden;}.var-image-preview__close-icon[var-image-preview-cover] { position: absolute; top: var(--image-preview-close-icon-top); right: var(--image-preview-close-icon-right); color: var(--image-preview-close-icon-color); font-size: var(--image-preview-close-icon-size);}.var-image-preview__extra { position: absolute; top: var(--image-preview-extra-top); left: var(--image-preview-extra-left);}.var-image-preview__indicators { position: absolute; top: 0; width: 100%; padding: var(--image-preview-swipe-indicators-padding); color: var(--image-preview-swipe-indicators-text-color); text-align: center;}.var-image-preview__image { width: 100%; height: 100%; object-fit: contain; -webkit-user-drag: none;}.var-image-preview--prevent { -webkit-touch-callout: none; pointer-events: none;}.var-image-preview__zoom-container { display: flex; justify-content: center; align-items: center; width: 100vw; height: 100%; transition: transform 0.2s;}
@@ -8,6 +8,10 @@ export var props = _extends({
8
8
  type: Boolean,
9
9
  default: false
10
10
  },
11
+ imagePreventDefault: {
12
+ type: Boolean,
13
+ default: false
14
+ },
11
15
  images: {
12
16
  type: Array,
13
17
  default: () => []
@@ -23,6 +27,7 @@ export var props = _extends({
23
27
  type: Boolean,
24
28
  default: false
25
29
  },
26
- 'onUpdate:show': defineListenerProp()
30
+ 'onUpdate:show': defineListenerProp(),
31
+ onLongPress: defineListenerProp()
27
32
  }, pickProps(swipeProps, ['loop', 'indicator', 'onChange']), pickProps(popupProps, ['lockScroll', 'teleport', 'onOpen', 'onClose', 'onOpened', 'onClosed', // internal for function call closes the dialog
28
33
  'onRouteChange']));
@@ -241,7 +241,7 @@ import './time-picker/style/index.mjs'
241
241
  import './tooltip/style/index.mjs'
242
242
  import './uploader/style/index.mjs'
243
243
 
244
- const version = '2.11.1'
244
+ const version = '2.11.2-alpha.1684942134064'
245
245
 
246
246
  function install(app) {
247
247
  ActionSheet.install && app.use(ActionSheet)
package/es/index.mjs CHANGED
@@ -160,7 +160,7 @@ export * from './time-picker/index.mjs'
160
160
  export * from './tooltip/index.mjs'
161
161
  export * from './uploader/index.mjs'
162
162
 
163
- const version = '2.11.1'
163
+ const version = '2.11.2-alpha.1684942134064'
164
164
 
165
165
  function install(app) {
166
166
  ActionSheet.install && app.use(ActionSheet)
@@ -7,6 +7,7 @@ var {
7
7
  n,
8
8
  classes
9
9
  } = createNamespace('progress');
10
+ var ONE_HUNDRED = 100;
10
11
  import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue";
11
12
 
12
13
  var _withScopeId = n => (_pushScopeId(""), n = n(), _popScopeId(), n);
@@ -116,8 +117,8 @@ var __sfc__ = defineComponent({
116
117
  setup(props) {
117
118
  var linearProps = computed(() => {
118
119
  var value = toNumber(props.value);
119
- var width = value > 100 ? 100 : value;
120
- var roundValue = value > 100 ? 100 : Math.round(value);
120
+ var width = value > ONE_HUNDRED ? ONE_HUNDRED : value;
121
+ var roundValue = value > ONE_HUNDRED ? ONE_HUNDRED : Math.round(value);
121
122
  return {
122
123
  width: width + "%",
123
124
  roundValue: roundValue + "%"
@@ -130,10 +131,10 @@ var __sfc__ = defineComponent({
130
131
  value
131
132
  } = props;
132
133
  var viewBox = "0 0 " + toPxNum(size) + " " + toPxNum(size);
133
- var roundValue = toNumber(value) > 100 ? 100 : Math.round(toNumber(value));
134
+ var roundValue = toNumber(value) > ONE_HUNDRED ? ONE_HUNDRED : Math.round(toNumber(value));
134
135
  var radius = (toPxNum(size) - toPxNum(lineWidth)) / 2;
135
136
  var perimeter = 2 * Math.PI * radius;
136
- var strokeDasharray = roundValue / 100 * perimeter + ", " + perimeter;
137
+ var strokeDasharray = roundValue / ONE_HUNDRED * perimeter + ", " + perimeter;
137
138
  return {
138
139
  viewBox,
139
140
  radius,
@@ -1,8 +1,8 @@
1
1
  import '../../styles/common.css'
2
- import '../SnackbarSfc.css'
3
2
  import '../../styles/elevation.css'
4
3
  import '../../loading/loading.css'
5
4
  import '../../button/button.css'
6
5
  import '../../icon/icon.css'
7
6
  import '../snackbar.css'
8
7
  import '../coreSfc.css'
8
+ import '../SnackbarSfc.css'