@varlet/ui 2.13.2 → 2.13.3

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.13.2",
4
+ "version": "2.13.3",
5
5
  "name": "VARLET",
6
6
  "contributions": {
7
7
  "html": {
@@ -2533,6 +2533,15 @@
2533
2533
  "kind": "expression"
2534
2534
  }
2535
2535
  },
2536
+ {
2537
+ "name": "drag",
2538
+ "description": "Whether to enable drag",
2539
+ "default": "false",
2540
+ "value": {
2541
+ "type": "boolean",
2542
+ "kind": "expression"
2543
+ }
2544
+ },
2536
2545
  {
2537
2546
  "name": "type",
2538
2547
  "description": "type, optional values are `default` `primary` `info` `success` `warning` `danger`",
@@ -2625,7 +2634,7 @@
2625
2634
  },
2626
2635
  {
2627
2636
  "name": "fixed",
2628
- "description": "Whether to use fixed positioning, set to `false` to enable absolute positioning",
2637
+ "description": "Whether to use fixed positioning, set to `false` to enable absolute positioning (absolute positioning prohibited from dragging)",
2629
2638
  "default": "true",
2630
2639
  "value": {
2631
2640
  "type": "boolean",
@@ -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.13.2",
4
+ "version": "2.13.3",
5
5
  "name": "VARLET",
6
6
  "contributions": {
7
7
  "html": {
@@ -2692,6 +2692,15 @@
2692
2692
  "kind": "expression"
2693
2693
  }
2694
2694
  },
2695
+ {
2696
+ "name": "drag",
2697
+ "description": "是否开启拖拽",
2698
+ "default": "false",
2699
+ "value": {
2700
+ "type": "boolean",
2701
+ "kind": "expression"
2702
+ }
2703
+ },
2695
2704
  {
2696
2705
  "name": "type",
2697
2706
  "description": "类型,可选值为 `default` `primary` `info` `success` `warning` `danger`",
@@ -2784,7 +2793,7 @@
2784
2793
  },
2785
2794
  {
2786
2795
  "name": "fixed",
2787
- "description": "是否使用固定定位,设置为 `false` 可开启绝对定位",
2796
+ "description": "是否使用固定定位,设置为 `false` 可开启绝对定位(绝对定位无法使用拖拽)",
2788
2797
  "default": "true",
2789
2798
  "value": {
2790
2799
  "type": "boolean",
package/lib/varlet.cjs.js CHANGED
@@ -347,7 +347,7 @@ var multiplySizeUnit = function(value, quantity) {
347
347
  return void 0;
348
348
  }
349
349
  var legalSize = toSizeUnit(value);
350
- var unit = legalSize.match(/(vh|%|rem|px|vw|vmin|vmax)$/)[0];
350
+ var unit = legalSize.match(/(vh|%|r?em|px|vw|vmin|vmax)$/)[0];
351
351
  return "" + parseFloat(legalSize) * quantity + unit;
352
352
  };
353
353
  function requestAnimationFrame(fn2) {
@@ -11377,13 +11377,16 @@ var __sfc__$N = vue.defineComponent({
11377
11377
  });
11378
11378
  var dragged = vue.ref(false);
11379
11379
  var enableTransition = vue.ref(false);
11380
+ var dragging = vue.ref(false);
11380
11381
  var touching = false;
11381
11382
  var prevX = 0;
11382
11383
  var prevY = 0;
11384
+ var draggingRunner = null;
11383
11385
  var handleTouchstart = (event) => {
11384
11386
  if (props2.disabled) {
11385
11387
  return;
11386
11388
  }
11389
+ draggingRunner && window.clearTimeout(draggingRunner);
11387
11390
  var {
11388
11391
  clientX,
11389
11392
  clientY
@@ -11392,6 +11395,7 @@ var __sfc__$N = vue.defineComponent({
11392
11395
  prevX = clientX;
11393
11396
  prevY = clientY;
11394
11397
  touching = true;
11398
+ dragging.value = false;
11395
11399
  };
11396
11400
  var handleTouchmove = /* @__PURE__ */ function() {
11397
11401
  var _ref2 = _asyncToGenerator$a(function* (event) {
@@ -11401,6 +11405,7 @@ var __sfc__$N = vue.defineComponent({
11401
11405
  event.preventDefault();
11402
11406
  enableTransition.value = false;
11403
11407
  dragged.value = true;
11408
+ dragging.value = true;
11404
11409
  var {
11405
11410
  clientX,
11406
11411
  clientY
@@ -11428,6 +11433,9 @@ var __sfc__$N = vue.defineComponent({
11428
11433
  touching = false;
11429
11434
  enableTransition.value = true;
11430
11435
  attract();
11436
+ draggingRunner = window.setTimeout(() => {
11437
+ dragging.value = false;
11438
+ });
11431
11439
  };
11432
11440
  var saveXY = () => {
11433
11441
  var {
@@ -11556,8 +11564,12 @@ var __sfc__$N = vue.defineComponent({
11556
11564
  var reset = () => {
11557
11565
  enableTransition.value = false;
11558
11566
  dragged.value = false;
11567
+ dragging.value = false;
11559
11568
  x.value = 0;
11560
11569
  y.value = 0;
11570
+ touching = false;
11571
+ prevX = 0;
11572
+ prevY = 0;
11561
11573
  };
11562
11574
  vue.watch(() => props2.boundary, toPxBoundary);
11563
11575
  onWindowResize(resize);
@@ -11570,6 +11582,7 @@ var __sfc__$N = vue.defineComponent({
11570
11582
  x,
11571
11583
  y,
11572
11584
  enableTransition,
11585
+ dragging,
11573
11586
  n: n$M,
11574
11587
  classes: classes$E,
11575
11588
  getAttrs,
@@ -13533,6 +13546,10 @@ var props$G = {
13533
13546
  type: Boolean,
13534
13547
  default: true
13535
13548
  },
13549
+ drag: {
13550
+ type: Boolean,
13551
+ default: false
13552
+ },
13536
13553
  type: {
13537
13554
  type: String,
13538
13555
  default: "primary",
@@ -13603,7 +13620,7 @@ var props$G = {
13603
13620
  default: false
13604
13621
  },
13605
13622
  teleport: {
13606
- type: String
13623
+ type: [String, Object]
13607
13624
  },
13608
13625
  onClick: defineListenerProp(),
13609
13626
  onOpen: defineListenerProp(),
@@ -13630,10 +13647,9 @@ const Fab = vue.defineComponent({
13630
13647
  } = _ref;
13631
13648
  var isActive = useVModel(props2, "active");
13632
13649
  var host = vue.ref(null);
13633
- var {
13634
- disabled
13635
- } = useTeleport();
13650
+ var dragRef = vue.ref(null);
13636
13651
  var handleClick = (e, value, childrenLength) => {
13652
+ var _dragRef$value;
13637
13653
  e.stopPropagation();
13638
13654
  if (props2.trigger !== "click" || props2.disabled) {
13639
13655
  return;
@@ -13642,6 +13658,9 @@ const Fab = vue.defineComponent({
13642
13658
  call(props2.onClick, isActive.value, e);
13643
13659
  return;
13644
13660
  }
13661
+ if ((_dragRef$value = dragRef.value) != null && _dragRef$value.dragging) {
13662
+ return;
13663
+ }
13645
13664
  isActive.value = value;
13646
13665
  call(props2.onClick, isActive.value, e);
13647
13666
  call(isActive.value ? props2.onOpen : props2.onClose);
@@ -13674,8 +13693,8 @@ const Fab = vue.defineComponent({
13674
13693
  "type": props2.type,
13675
13694
  "color": props2.color,
13676
13695
  "disabled": props2.disabled,
13677
- "round": true,
13678
- "elevation": props2.elevation
13696
+ "elevation": props2.elevation,
13697
+ "round": true
13679
13698
  }, {
13680
13699
  default: () => [vue.createVNode(Icon, {
13681
13700
  "var-fab-cover": true,
@@ -13687,61 +13706,57 @@ const Fab = vue.defineComponent({
13687
13706
  }, null)]
13688
13707
  }), [[vue.vShow, props2.show]]);
13689
13708
  };
13690
- var renderFab = () => {
13709
+ vue.watch(() => props2.trigger, () => {
13710
+ isActive.value = false;
13711
+ });
13712
+ vue.watch(() => props2.disabled, () => {
13713
+ isActive.value = false;
13714
+ });
13715
+ vue.watch(() => [props2.position, props2.fixed, props2.top, props2.bottom, props2.left, props2.right], () => {
13716
+ var _dragRef$value2;
13717
+ (_dragRef$value2 = dragRef.value) == null ? void 0 : _dragRef$value2.reset();
13718
+ });
13719
+ useClickOutside(host, "click", handleClickOutside);
13720
+ return () => {
13691
13721
  var _slot;
13692
13722
  var _call;
13693
13723
  var children = flatFragment((_call = call(slots.default)) != null ? _call : []);
13694
- return vue.createVNode("div", vue.mergeProps({
13695
- "class": classes$B(n$J(), n$J("--position-" + props2.position), n$J("--direction-" + props2.direction), [props2.fixed, n$J("--fixed"), n$J("--absolute")], [props2.safeArea, n$J("--safe-area")]),
13724
+ return vue.createVNode(Drag, vue.mergeProps({
13725
+ "ref": dragRef,
13726
+ "class": classes$B(n$J("--position-" + props2.position), [!props2.fixed, n$J("--absolute")]),
13696
13727
  "style": {
13697
- zIndex: toNumber(props2.zIndex),
13698
13728
  top: toSizeUnit(props2.top),
13699
13729
  bottom: toSizeUnit(props2.bottom),
13700
13730
  left: toSizeUnit(props2.left),
13701
13731
  right: toSizeUnit(props2.right)
13702
13732
  },
13703
- "ref": host,
13704
- "onClick": (e) => handleClick(e, !isActive.value, children.length),
13705
- "onMouseleave": () => handleMouse(false, children.length),
13706
- "onMouseenter": () => handleMouse(true, children.length)
13707
- }, attrs), [vue.createVNode(vue.Transition, {
13708
- "name": n$J("--active-transition")
13709
- }, _isSlot$2(_slot = renderTrigger()) ? _slot : {
13710
- default: () => [_slot]
13711
- }), vue.createVNode(vue.Transition, {
13712
- "name": n$J("--actions-transition-" + props2.direction),
13713
- "onAfterEnter": props2.onOpened,
13714
- "onAfterLeave": props2.onClosed
13715
- }, {
13716
- default: () => [vue.withDirectives(vue.createVNode("div", {
13717
- "class": n$J("actions"),
13718
- "onClick": (e) => e.stopPropagation()
13719
- }, [children.map((child) => vue.createVNode("div", {
13720
- "class": n$J("action")
13721
- }, [child]))]), [[vue.vShow, props2.show && isActive.value && children.length]])]
13722
- })]);
13723
- };
13724
- vue.watch(() => props2.trigger, () => {
13725
- isActive.value = false;
13726
- });
13727
- vue.watch(() => props2.disabled, () => {
13728
- isActive.value = false;
13729
- });
13730
- useClickOutside(host, "click", handleClickOutside);
13731
- return () => {
13732
- var {
13733
- teleport
13734
- } = props2;
13735
- if (teleport) {
13736
- var _slot2;
13737
- return vue.createVNode(vue.Teleport, {
13738
- "to": teleport,
13739
- "disabled": disabled.value
13740
- }, _isSlot$2(_slot2 = renderFab()) ? _slot2 : {
13741
- default: () => [_slot2]
13742
- });
13743
- }
13744
- return renderFab();
13733
+ "zIndex": props2.zIndex,
13734
+ "teleport": props2.teleport,
13735
+ "disabled": props2.disabled || !props2.drag || !props2.fixed
13736
+ }, attrs), {
13737
+ default: () => [vue.createVNode("div", {
13738
+ "class": classes$B(n$J(), n$J("--direction-" + props2.direction), [props2.safeArea, n$J("--safe-area")]),
13739
+ "ref": host,
13740
+ "onClick": (e) => handleClick(e, !isActive.value, children.length),
13741
+ "onMouseleave": () => handleMouse(false, children.length),
13742
+ "onMouseenter": () => handleMouse(true, children.length)
13743
+ }, [vue.createVNode(vue.Transition, {
13744
+ "name": n$J("--active-transition")
13745
+ }, _isSlot$2(_slot = renderTrigger()) ? _slot : {
13746
+ default: () => [_slot]
13747
+ }), vue.createVNode(vue.Transition, {
13748
+ "name": n$J("--actions-transition-" + props2.direction),
13749
+ "onAfterEnter": props2.onOpened,
13750
+ "onAfterLeave": props2.onClosed
13751
+ }, {
13752
+ default: () => [vue.withDirectives(vue.createVNode("div", {
13753
+ "class": n$J("actions"),
13754
+ "onClick": (e) => e.stopPropagation()
13755
+ }, [children.map((child) => vue.createVNode("div", {
13756
+ "class": n$J("action")
13757
+ }, [child]))]), [[vue.vShow, props2.show && isActive.value && children.length]])]
13758
+ })])]
13759
+ });
13745
13760
  };
13746
13761
  }
13747
13762
  });
@@ -25116,7 +25131,7 @@ const TimePickerSfc = "";
25116
25131
  const TooltipSfc = "";
25117
25132
  const uploader = "";
25118
25133
  const UploaderSfc = "";
25119
- const version = "2.13.2";
25134
+ const version = "2.13.3";
25120
25135
  function install(app) {
25121
25136
  ActionSheet.install && app.use(ActionSheet);
25122
25137
  AppBar.install && app.use(AppBar);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varlet/ui",
3
- "version": "2.13.2",
3
+ "version": "2.13.3",
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.13.2",
50
- "@varlet/use": "2.13.2",
51
- "@varlet/shared": "2.13.2"
49
+ "@varlet/icons": "2.13.3",
50
+ "@varlet/shared": "2.13.3",
51
+ "@varlet/use": "2.13.3"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@vue/runtime-core": "3.3.4",
@@ -63,8 +63,8 @@
63
63
  "typescript": "^5.1.5",
64
64
  "vue": "3.3.4",
65
65
  "vue-router": "4.2.0",
66
- "@varlet/cli": "2.13.2",
67
- "@varlet/touch-emulator": "2.13.2"
66
+ "@varlet/cli": "2.13.3",
67
+ "@varlet/touch-emulator": "2.13.3"
68
68
  },
69
69
  "browserslist": [
70
70
  "Chrome >= 54",
package/types/fab.d.ts CHANGED
@@ -18,6 +18,7 @@ export interface FabTriggerData {
18
18
  export interface FabProps extends BasicAttributes {
19
19
  active?: boolean
20
20
  show?: boolean
21
+ drag?: boolean
21
22
  type?: FabType
22
23
  fixed?: boolean
23
24
  position?: FabPosition