@varlet/ui 2.11.0 → 2.11.1

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "framework": "vue",
4
- "version": "2.11.0",
4
+ "version": "2.11.1",
5
5
  "name": "VARLET",
6
6
  "contributions": {
7
7
  "html": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "framework": "vue",
4
- "version": "2.11.0",
4
+ "version": "2.11.1",
5
5
  "name": "VARLET",
6
6
  "contributions": {
7
7
  "html": {
package/lib/varlet.cjs.js CHANGED
@@ -220,7 +220,7 @@ function inViewport(element) {
220
220
  var yInViewport = top2 <= height && bottom2 >= 0;
221
221
  return xInViewport && yInViewport;
222
222
  }
223
- function getTranslate(el) {
223
+ function getTranslateY(el) {
224
224
  var {
225
225
  transform
226
226
  } = getStyle$1(el);
@@ -282,6 +282,7 @@ function getViewportSize() {
282
282
  };
283
283
  }
284
284
  var isRem = (value) => isString(value) && value.endsWith("rem");
285
+ var isEm = (value) => isString(value) && value.endsWith("em") && !value.endsWith("rem");
285
286
  var isPx = (value) => isString(value) && value.endsWith("px") || isNumber(value);
286
287
  var isPercent = (value) => isString(value) && value.endsWith("%");
287
288
  var isVw = (value) => isString(value) && value.endsWith("vw");
@@ -297,6 +298,9 @@ var toPxNum = (value) => {
297
298
  if (isPx(value)) {
298
299
  return +value.replace("px", "");
299
300
  }
301
+ if (!inBrowser()) {
302
+ return 0;
303
+ }
300
304
  var {
301
305
  width,
302
306
  height
@@ -327,7 +331,7 @@ var toSizeUnit = (value) => {
327
331
  if (value == null) {
328
332
  return void 0;
329
333
  }
330
- if (isPercent(value) || isVw(value) || isVh(value) || isRem(value) || isCalc(value) || isVar(value) || isVMin(value) || isVMax(value)) {
334
+ if (isPercent(value) || isVw(value) || isVh(value) || isEm(value) || isRem(value) || isCalc(value) || isVar(value) || isVMin(value) || isVMax(value)) {
331
335
  return value;
332
336
  }
333
337
  return toPxNum(value) + "px";
@@ -748,8 +752,9 @@ function createNamespace(name) {
748
752
  var namespace = "var";
749
753
  var componentName = namespace + "-" + name;
750
754
  var createBEM = (suffix) => {
751
- if (!suffix)
755
+ if (!suffix) {
752
756
  return componentName;
757
+ }
753
758
  if (suffix[0] === "$") {
754
759
  return suffix.replace("$", namespace);
755
760
  }
@@ -14787,7 +14792,7 @@ var __sfc__$G = vue.defineComponent({
14787
14792
  var canSwipe = vue.ref(true);
14788
14793
  var startTouch = null;
14789
14794
  var prevTouch = null;
14790
- var checker = null;
14795
+ var closeRunner = null;
14791
14796
  var getDistance = (touch, target) => {
14792
14797
  var {
14793
14798
  clientX: touchX,
@@ -14802,7 +14807,7 @@ var __sfc__$G = vue.defineComponent({
14802
14807
  var createVarTouch = (touches, target) => ({
14803
14808
  clientX: touches.clientX,
14804
14809
  clientY: touches.clientY,
14805
- timestamp: Date.now(),
14810
+ timestamp: performance.now(),
14806
14811
  target
14807
14812
  });
14808
14813
  var zoomIn = () => {
@@ -14833,20 +14838,18 @@ var __sfc__$G = vue.defineComponent({
14833
14838
  if (!target || !startTouch || !prevTouch) {
14834
14839
  return false;
14835
14840
  }
14836
- return getDistance(startTouch, prevTouch) <= DISTANCE_OFFSET && Date.now() - prevTouch.timestamp < TAP_DELAY && (target === startTouch.target || target.parentNode === startTouch.target);
14841
+ return getDistance(startTouch, prevTouch) <= DISTANCE_OFFSET && performance.now() - prevTouch.timestamp < TAP_DELAY && (target === startTouch.target || target.parentNode === startTouch.target);
14837
14842
  };
14838
14843
  var handleTouchend = (event) => {
14839
- checker = window.setTimeout(() => {
14840
- isTapTouch(event.target) && close();
14844
+ var isTap = isTapTouch(event.target);
14845
+ closeRunner = window.setTimeout(() => {
14846
+ isTap && close();
14841
14847
  startTouch = null;
14842
14848
  }, EVENT_DELAY);
14843
14849
  };
14844
14850
  var handleTouchstart = (event) => {
14845
- checker && window.clearTimeout(checker);
14846
- var {
14847
- touches
14848
- } = event;
14849
- var currentTouch = createVarTouch(touches[0], event.currentTarget);
14851
+ closeRunner && window.clearTimeout(closeRunner);
14852
+ var currentTouch = createVarTouch(event.touches[0], event.currentTarget);
14850
14853
  startTouch = currentTouch;
14851
14854
  if (isDoubleTouch(currentTouch)) {
14852
14855
  scale.value > 1 ? zoomOut() : zoomIn();
@@ -14913,10 +14916,7 @@ var __sfc__$G = vue.defineComponent({
14913
14916
  return;
14914
14917
  }
14915
14918
  var target = event.currentTarget;
14916
- var {
14917
- touches
14918
- } = event;
14919
- var currentTouch = createVarTouch(touches[0], target);
14919
+ var currentTouch = createVarTouch(event.touches[0], target);
14920
14920
  if (scale.value > 1) {
14921
14921
  var moveX = currentTouch.clientX - prevTouch.clientX;
14922
14922
  var moveY = currentTouch.clientY - prevTouch.clientY;
@@ -16069,7 +16069,7 @@ var {
16069
16069
  } = createNamespace("input");
16070
16070
  var _hoisted_1$e = ["placeholder", "enterkeyhint"];
16071
16071
  var _hoisted_2$9 = ["id", "disabled", "type", "value", "placeholder", "maxlength", "rows", "enterkeyhint", "inputmode"];
16072
- var _hoisted_3$7 = ["id", "disabled", "type", "value", "placeholder", "maxlength", "enterkeyhint", "inputmode"];
16072
+ var _hoisted_3$8 = ["id", "disabled", "type", "value", "placeholder", "maxlength", "enterkeyhint", "inputmode"];
16073
16073
  function __render__$A(_ctx, _cache) {
16074
16074
  var _component_var_field_decorator = vue.resolveComponent("var-field-decorator");
16075
16075
  var _component_var_form_details = vue.resolveComponent("var-form-details");
@@ -16213,7 +16213,7 @@ function __render__$A(_ctx, _cache) {
16213
16213
  },
16214
16214
  null,
16215
16215
  46,
16216
- _hoisted_3$7
16216
+ _hoisted_3$8
16217
16217
  ))]),
16218
16218
  _: 3
16219
16219
  /* FORWARDED */
@@ -18036,9 +18036,12 @@ var {
18036
18036
  } = createNamespace("picker");
18037
18037
  var MOMENTUM_RECORD_TIME = 300;
18038
18038
  var MOMENTUM_ALLOW_DISTANCE = 15;
18039
+ var TRANSITION_DURATION = 200;
18040
+ var MOMENTUM_TRANSITION_DURATION = 1e3;
18039
18041
  var sid$1 = 0;
18040
- var _hoisted_1$c = ["onTouchstart", "onTouchmove", "onTouchend"];
18042
+ var _hoisted_1$c = ["onTouchstartPassive", "onTouchmove", "onTouchend"];
18041
18043
  var _hoisted_2$8 = ["onTransitionend"];
18044
+ var _hoisted_3$7 = ["onClick"];
18042
18045
  function __render__$t(_ctx, _cache) {
18043
18046
  var _component_var_button = vue.resolveComponent("var-button");
18044
18047
  return vue.openBlock(), vue.createBlock(
@@ -18140,7 +18143,7 @@ function __render__$t(_ctx, _cache) {
18140
18143
  {
18141
18144
  class: vue.normalizeClass(_ctx.n("column")),
18142
18145
  key: c.id,
18143
- onTouchstart: ($event) => _ctx.handleTouchstart($event, c),
18146
+ onTouchstartPassive: ($event) => _ctx.handleTouchstart(c),
18144
18147
  onTouchmove: vue.withModifiers(($event) => _ctx.handleTouchmove($event, c), ["prevent"]),
18145
18148
  onTouchend: ($event) => _ctx.handleTouchend($event, c)
18146
18149
  },
@@ -18149,7 +18152,7 @@ function __render__$t(_ctx, _cache) {
18149
18152
  {
18150
18153
  class: vue.normalizeClass(_ctx.n("scroller")),
18151
18154
  ref_for: true,
18152
- ref: (el) => _ctx.getScrollEl(el, c),
18155
+ ref: (el) => _ctx.setScrollEl(el, c),
18153
18156
  style: vue.normalizeStyle({
18154
18157
  transform: "translateY(" + c.translate + "px)",
18155
18158
  transitionDuration: c.duration + "ms",
@@ -18160,7 +18163,7 @@ function __render__$t(_ctx, _cache) {
18160
18163
  [(vue.openBlock(true), vue.createElementBlock(
18161
18164
  vue.Fragment,
18162
18165
  null,
18163
- vue.renderList(c.column.texts, (t) => {
18166
+ vue.renderList(c.column.texts, (t, i) => {
18164
18167
  return vue.openBlock(), vue.createElementBlock(
18165
18168
  "div",
18166
18169
  {
@@ -18168,7 +18171,8 @@ function __render__$t(_ctx, _cache) {
18168
18171
  style: vue.normalizeStyle({
18169
18172
  height: _ctx.optionHeight + "px"
18170
18173
  }),
18171
- key: t
18174
+ key: t,
18175
+ onClick: ($event) => _ctx.handleClick(c, i)
18172
18176
  },
18173
18177
  [vue.createElementVNode(
18174
18178
  "div",
@@ -18179,8 +18183,8 @@ function __render__$t(_ctx, _cache) {
18179
18183
  3
18180
18184
  /* TEXT, CLASS */
18181
18185
  )],
18182
- 6
18183
- /* CLASS, STYLE */
18186
+ 14,
18187
+ _hoisted_3$7
18184
18188
  );
18185
18189
  }),
18186
18190
  128
@@ -18247,20 +18251,21 @@ var __sfc__$u = vue.defineComponent({
18247
18251
  var center = vue.computed(() => optionCount.value * optionHeight.value / 2 - optionHeight.value / 2);
18248
18252
  var columnHeight = vue.computed(() => optionCount.value * optionHeight.value);
18249
18253
  var prevIndexes = [];
18250
- var getScrollEl = (el, scrollColumn) => {
18254
+ var dragging = false;
18255
+ var setScrollEl = (el, scrollColumn) => {
18251
18256
  scrollColumn.scrollEl = el;
18252
18257
  };
18253
18258
  var handlePopupUpdateShow = (value) => {
18254
18259
  call(props2["onUpdate:show"], value);
18255
18260
  };
18256
- var limitTranslate = (scrollColumn) => {
18257
- var START_LIMIT = optionHeight.value + center.value;
18258
- var END_LIMIT = center.value - scrollColumn.column.texts.length * optionHeight.value;
18259
- if (scrollColumn.translate >= START_LIMIT) {
18260
- scrollColumn.translate = START_LIMIT;
18261
+ var boundaryTranslate = (scrollColumn) => {
18262
+ var startTranslate = optionHeight.value + center.value;
18263
+ var endTranslate = center.value - scrollColumn.column.texts.length * optionHeight.value;
18264
+ if (scrollColumn.translate >= startTranslate) {
18265
+ scrollColumn.translate = startTranslate;
18261
18266
  }
18262
- if (scrollColumn.translate <= END_LIMIT) {
18263
- scrollColumn.translate = END_LIMIT;
18267
+ if (scrollColumn.translate <= endTranslate) {
18268
+ scrollColumn.translate = endTranslate;
18264
18269
  }
18265
18270
  };
18266
18271
  var boundaryIndex = (scrollColumn, index) => {
@@ -18271,10 +18276,14 @@ var __sfc__$u = vue.defineComponent({
18271
18276
  index = index <= 0 ? 0 : index;
18272
18277
  return index;
18273
18278
  };
18274
- var getIndex = (scrollColumn) => {
18275
- var index = Math.round((center.value - scrollColumn.translate) / optionHeight.value);
18279
+ var getTargetIndex = (scrollColumn, viewTranslate) => {
18280
+ var index = Math.round((center.value - viewTranslate) / optionHeight.value);
18276
18281
  return boundaryIndex(scrollColumn, index);
18277
18282
  };
18283
+ var updateTranslate = (scrollColumn) => {
18284
+ scrollColumn.translate = center.value - scrollColumn.index * optionHeight.value;
18285
+ return scrollColumn.translate;
18286
+ };
18278
18287
  var getPicked = () => {
18279
18288
  var texts = scrollColumns.value.map((scrollColumn) => scrollColumn.column.texts[scrollColumn.index]);
18280
18289
  var indexes = scrollColumns.value.map((scrollColumn) => scrollColumn.index);
@@ -18283,38 +18292,42 @@ var __sfc__$u = vue.defineComponent({
18283
18292
  indexes
18284
18293
  };
18285
18294
  };
18286
- var scrollTo2 = function(scrollColumn, index, duration, noEmit) {
18287
- if (noEmit === void 0) {
18288
- noEmit = false;
18289
- }
18290
- var translate = center.value - boundaryIndex(scrollColumn, index) * optionHeight.value;
18291
- if (translate === scrollColumn.translate) {
18292
- scrollColumn.scrolling = false;
18293
- !noEmit && change(scrollColumn);
18295
+ var scrollTo2 = function(scrollColumn, duration) {
18296
+ if (duration === void 0) {
18297
+ duration = 0;
18294
18298
  }
18295
- scrollColumn.translate = translate;
18299
+ updateTranslate(scrollColumn);
18296
18300
  scrollColumn.duration = duration;
18297
18301
  };
18298
18302
  var momentum = (scrollColumn, distance, duration) => {
18299
18303
  scrollColumn.translate += Math.abs(distance / duration) / 3e-3 * (distance < 0 ? -1 : 1);
18300
18304
  };
18301
- var handleTouchstart = (event, scrollColumn) => {
18305
+ var handleClick = (scrollColumn, index) => {
18306
+ if (dragging) {
18307
+ return;
18308
+ }
18309
+ scrollColumn.index = index;
18310
+ scrollColumn.scrolling = true;
18311
+ scrollTo2(scrollColumn, TRANSITION_DURATION);
18312
+ };
18313
+ var handleTouchstart = (scrollColumn) => {
18302
18314
  scrollColumn.touching = true;
18303
- scrollColumn.scrolling = false;
18304
- scrollColumn.duration = 0;
18305
- scrollColumn.translate = getTranslate(scrollColumn.scrollEl);
18315
+ scrollColumn.translate = getTranslateY(scrollColumn.scrollEl);
18306
18316
  };
18307
18317
  var handleTouchmove = (event, scrollColumn) => {
18308
18318
  if (!scrollColumn.touching) {
18309
18319
  return;
18310
18320
  }
18321
+ dragging = true;
18322
+ scrollColumn.scrolling = false;
18323
+ scrollColumn.duration = 0;
18311
18324
  var {
18312
18325
  clientY
18313
18326
  } = event.touches[0];
18314
- var moveY = scrollColumn.prevY !== void 0 ? clientY - scrollColumn.prevY : 0;
18327
+ var deltaY = scrollColumn.prevY !== void 0 ? clientY - scrollColumn.prevY : 0;
18315
18328
  scrollColumn.prevY = clientY;
18316
- scrollColumn.translate += moveY;
18317
- limitTranslate(scrollColumn);
18329
+ scrollColumn.translate += deltaY;
18330
+ boundaryTranslate(scrollColumn);
18318
18331
  var now = performance.now();
18319
18332
  if (now - scrollColumn.momentumTime > MOMENTUM_RECORD_TIME) {
18320
18333
  scrollColumn.momentumTime = now;
@@ -18323,14 +18336,24 @@ var __sfc__$u = vue.defineComponent({
18323
18336
  };
18324
18337
  var handleTouchend = (event, scrollColumn) => {
18325
18338
  scrollColumn.touching = false;
18326
- scrollColumn.scrolling = true;
18327
18339
  scrollColumn.prevY = void 0;
18328
18340
  var distance = scrollColumn.translate - scrollColumn.momentumPrevY;
18329
18341
  var duration = performance.now() - scrollColumn.momentumTime;
18330
18342
  var shouldMomentum = Math.abs(distance) >= MOMENTUM_ALLOW_DISTANCE && duration <= MOMENTUM_RECORD_TIME;
18331
- shouldMomentum && momentum(scrollColumn, distance, duration);
18332
- scrollColumn.index = getIndex(scrollColumn);
18333
- scrollTo2(scrollColumn, scrollColumn.index, shouldMomentum ? 1e3 : 200);
18343
+ if (shouldMomentum) {
18344
+ momentum(scrollColumn, distance, duration);
18345
+ }
18346
+ scrollColumn.index = getTargetIndex(scrollColumn, scrollColumn.translate);
18347
+ var oldTranslate = scrollColumn.translate;
18348
+ var newTranslate = updateTranslate(scrollColumn);
18349
+ scrollColumn.scrolling = newTranslate !== oldTranslate;
18350
+ scrollTo2(scrollColumn, shouldMomentum ? MOMENTUM_TRANSITION_DURATION : TRANSITION_DURATION);
18351
+ if (!scrollColumn.scrolling) {
18352
+ change(scrollColumn);
18353
+ }
18354
+ requestAnimationFrame(() => {
18355
+ dragging = false;
18356
+ });
18334
18357
  };
18335
18358
  var handleTransitionend = (scrollColumn) => {
18336
18359
  scrollColumn.scrolling = false;
@@ -18356,7 +18379,7 @@ var __sfc__$u = vue.defineComponent({
18356
18379
  scrollEl: null,
18357
18380
  scrolling: false
18358
18381
  };
18359
- scrollTo2(scrollColumn, scrollColumn.index, 0, true);
18382
+ scrollTo2(scrollColumn);
18360
18383
  return scrollColumn;
18361
18384
  });
18362
18385
  };
@@ -18390,7 +18413,7 @@ var __sfc__$u = vue.defineComponent({
18390
18413
  scrolling: false
18391
18414
  };
18392
18415
  scrollColumns2.push(scrollColumn);
18393
- scrollTo2(scrollColumn, scrollColumn.index, 0, true);
18416
+ scrollTo2(scrollColumn);
18394
18417
  createChildren(scrollColumns2, scrollColumn.columns[scrollColumn.index].children, columnIndex + 1, initial);
18395
18418
  }
18396
18419
  };
@@ -18398,12 +18421,23 @@ var __sfc__$u = vue.defineComponent({
18398
18421
  scrollColumns.value.splice(scrollColumns.value.indexOf(scrollColumn) + 1);
18399
18422
  createChildren(scrollColumns.value, scrollColumn.columns[scrollColumn.index].children, scrollColumn.columnIndex + 1);
18400
18423
  };
18424
+ var isSamePicked = () => {
18425
+ var {
18426
+ indexes
18427
+ } = getPicked();
18428
+ return indexes.every((index, idx) => index === prevIndexes[idx]);
18429
+ };
18401
18430
  var change = (scrollColumn) => {
18402
18431
  var {
18403
18432
  cascade,
18404
18433
  onChange
18405
18434
  } = props2;
18406
- cascade && rebuildChildren(scrollColumn);
18435
+ if (isSamePicked()) {
18436
+ return;
18437
+ }
18438
+ if (cascade) {
18439
+ rebuildChildren(scrollColumn);
18440
+ }
18407
18441
  var hasScrolling = scrollColumns.value.some((scrollColumn2) => scrollColumn2.scrolling);
18408
18442
  if (hasScrolling) {
18409
18443
  return;
@@ -18412,10 +18446,6 @@ var __sfc__$u = vue.defineComponent({
18412
18446
  texts,
18413
18447
  indexes
18414
18448
  } = getPicked();
18415
- var samePicked = indexes.every((index, idx) => index === prevIndexes[idx]);
18416
- if (samePicked) {
18417
- return;
18418
- }
18419
18449
  prevIndexes = [...indexes];
18420
18450
  call(onChange, texts, indexes);
18421
18451
  };
@@ -18423,17 +18453,15 @@ var __sfc__$u = vue.defineComponent({
18423
18453
  if (props2.cascade) {
18424
18454
  var currentScrollColumn = scrollColumns.value.find((scrollColumn) => scrollColumn.scrolling);
18425
18455
  if (currentScrollColumn) {
18426
- currentScrollColumn.translate = getTranslate(currentScrollColumn.scrollEl);
18427
- currentScrollColumn.index = getIndex(currentScrollColumn);
18428
- scrollTo2(currentScrollColumn, currentScrollColumn.index, 0, true);
18456
+ currentScrollColumn.index = getTargetIndex(currentScrollColumn, getTranslateY(currentScrollColumn.scrollEl));
18429
18457
  currentScrollColumn.scrolling = false;
18458
+ scrollTo2(currentScrollColumn);
18430
18459
  rebuildChildren(currentScrollColumn);
18431
18460
  }
18432
18461
  } else {
18433
18462
  scrollColumns.value.forEach((scrollColumn) => {
18434
- scrollColumn.translate = getTranslate(scrollColumn.scrollEl);
18435
- scrollColumn.index = getIndex(scrollColumn);
18436
- scrollTo2(scrollColumn, scrollColumn.index, 0);
18463
+ scrollColumn.index = getTargetIndex(scrollColumn, getTranslateY(scrollColumn.scrollEl));
18464
+ scrollTo2(scrollColumn);
18437
18465
  });
18438
18466
  }
18439
18467
  };
@@ -18475,7 +18503,7 @@ var __sfc__$u = vue.defineComponent({
18475
18503
  columnHeight,
18476
18504
  center,
18477
18505
  Transition: vue.Transition,
18478
- getScrollEl,
18506
+ setScrollEl,
18479
18507
  handlePopupUpdateShow,
18480
18508
  handleTouchstart,
18481
18509
  handleTouchmove,
@@ -18483,7 +18511,8 @@ var __sfc__$u = vue.defineComponent({
18483
18511
  handleTransitionend,
18484
18512
  confirm,
18485
18513
  cancel,
18486
- dt
18514
+ dt,
18515
+ handleClick
18487
18516
  };
18488
18517
  }
18489
18518
  });
@@ -25468,7 +25497,7 @@ const TimePickerSfc = "";
25468
25497
  const TooltipSfc = "";
25469
25498
  const uploader = "";
25470
25499
  const UploaderSfc = "";
25471
- const version = "2.11.0";
25500
+ const version = "2.11.1";
25472
25501
  function install(app) {
25473
25502
  ActionSheet.install && app.use(ActionSheet);
25474
25503
  AppBar.install && app.use(AppBar);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varlet/ui",
3
- "version": "2.11.0",
3
+ "version": "2.11.1",
4
4
  "description": "A material like components library",
5
5
  "main": "lib/varlet.cjs.js",
6
6
  "module": "es/index.mjs",
@@ -46,9 +46,9 @@
46
46
  "@popperjs/core": "^2.11.6",
47
47
  "dayjs": "^1.10.4",
48
48
  "decimal.js": "^10.2.1",
49
- "@varlet/icons": "2.11.0",
50
- "@varlet/shared": "2.11.0",
51
- "@varlet/use": "2.11.0"
49
+ "@varlet/icons": "2.11.1",
50
+ "@varlet/shared": "2.11.1",
51
+ "@varlet/use": "2.11.1"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@vue/runtime-core": "3.3.1",
@@ -63,8 +63,8 @@
63
63
  "typescript": "^4.4.4",
64
64
  "vue": "3.3.2",
65
65
  "vue-router": "4.2.0",
66
- "@varlet/cli": "2.11.0",
67
- "@varlet/touch-emulator": "2.11.0"
66
+ "@varlet/cli": "2.11.1",
67
+ "@varlet/touch-emulator": "2.11.1"
68
68
  },
69
69
  "browserslist": [
70
70
  "Chrome >= 54",