@maas/vue-equipment 0.15.0 → 0.15.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,5 +1,5 @@
1
1
  {
2
2
  "name": "@maas/vue-equipment/nuxt",
3
3
  "configKey": "vueEquipment",
4
- "version": "0.14.4"
4
+ "version": "0.15.0"
5
5
  }
@@ -23,8 +23,10 @@ export function useDrawerDrag(args) {
23
23
  canClose,
24
24
  close
25
25
  } = args;
26
+ const elRect = ref(void 0);
27
+ const wrapperRect = ref(void 0);
26
28
  const { findClosestSnapPoint, mapSnapPoint, drawerHeight, drawerWidth } = useDrawerSnap({
27
- wrapperRef,
29
+ wrapperRect,
28
30
  snapPoints,
29
31
  canClose,
30
32
  position,
@@ -34,7 +36,6 @@ export function useDrawerDrag(args) {
34
36
  const dragging = ref(false);
35
37
  const shouldClose = ref(false);
36
38
  const interpolateTo = ref(void 0);
37
- const elRect = ref(void 0);
38
39
  let cancelPointerup = void 0;
39
40
  let cancelPointermove = void 0;
40
41
  const originX = ref(0);
@@ -49,8 +50,10 @@ export function useDrawerDrag(args) {
49
50
  const style = computed(
50
51
  () => `transform: translate(${draggedX.value}px, ${draggedY.value}px)`
51
52
  );
52
- function getSizes() {
53
+ async function getSizes() {
53
54
  elRect.value = unrefElement(elRef)?.getBoundingClientRect();
55
+ wrapperRect.value = unrefElement(wrapperRef)?.getBoundingClientRect();
56
+ await nextTick();
54
57
  }
55
58
  async function checkPosition() {
56
59
  switch (position) {
@@ -223,15 +226,23 @@ export function useDrawerDrag(args) {
223
226
  switch (position) {
224
227
  case "top":
225
228
  case "bottom":
229
+ const mappedSnapPointY = mapSnapPoint(toValue(snapPoint));
230
+ console.log("toValue(snapPoint):", toValue(snapPoint));
231
+ console.log("mappedSnapPointY:", mappedSnapPointY);
232
+ if (!mappedSnapPointY)
233
+ return;
226
234
  draggedY.value = await findClosestSnapPoint({
227
235
  draggedX,
228
- draggedY: mapSnapPoint(toValue(snapPoint)) || 0
236
+ draggedY: mappedSnapPointY
229
237
  }) || 0;
230
238
  break;
231
239
  case "left":
232
240
  case "right":
241
+ const mappedSnapPointX = mapSnapPoint(toValue(snapPoint));
242
+ if (!mappedSnapPointX)
243
+ return;
233
244
  draggedX.value = await findClosestSnapPoint({
234
- draggedX: mapSnapPoint(toValue(snapPoint)) || 0,
245
+ draggedX: mappedSnapPointX,
235
246
  draggedY
236
247
  }) || 0;
237
248
  break;
@@ -329,14 +340,14 @@ export function useDrawerDrag(args) {
329
340
  onPointermove(e);
330
341
  e.preventDefault();
331
342
  }
332
- onMounted(() => {
333
- getSizes();
343
+ onMounted(async () => {
344
+ await getSizes();
334
345
  useDrawerEmitter().on("*", emitterCallback);
335
346
  });
336
347
  watch(
337
348
  () => [unrefElement(elRef), unrefElement(wrapperRef)],
338
- () => {
339
- getSizes();
349
+ async () => {
350
+ await getSizes();
340
351
  setInitial();
341
352
  }
342
353
  );
@@ -2,7 +2,7 @@ import { type MaybeRef } from 'vue';
2
2
  import { type DefaultOptions } from '../../utils/defaultOptions.js';
3
3
  import { type SnapPoint } from '../../types.js';
4
4
  type UseDrawerSnapArgs = {
5
- wrapperRef: MaybeRef<HTMLDivElement | undefined>;
5
+ wrapperRect: MaybeRef<DOMRect | undefined>;
6
6
  position: MaybeRef<DefaultOptions['position']>;
7
7
  snapPoints: MaybeRef<DefaultOptions['snapPoints']>;
8
8
  canClose: MaybeRef<DefaultOptions['canClose']>;
@@ -1,27 +1,31 @@
1
- import { ref, computed, toValue, nextTick } from "vue";
2
- import { unrefElement } from "@vueuse/core";
1
+ import { computed, toValue } from "vue";
3
2
  import { mapValue } from "@maas/vue-equipment/utils";
4
3
  export function useDrawerSnap(args) {
5
- const { snapPoints, position, wrapperRef, overshoot, canClose } = args;
6
- const wrapperRect = ref(void 0);
4
+ const { snapPoints, position, wrapperRect, overshoot, canClose } = args;
7
5
  const mappedSnapPoints = computed(() => {
8
6
  const extended = toValue(canClose) ? [...toValue(snapPoints), 0] : toValue(snapPoints);
9
7
  const mapped = extended.map((snapPoint) => {
10
8
  return mapSnapPoint(snapPoint);
11
9
  });
12
- const filtered = mapped.filter((snapPoint) => !!snapPoint).sort((a, b) => a - b);
10
+ const filtered = mapped.filter(
11
+ (snapPoint) => !!snapPoint || snapPoint === 0
12
+ ).sort((a, b) => a - b);
13
13
  return filtered;
14
14
  });
15
- const drawerHeight = computed(
16
- () => wrapperRect.value?.height - toValue(overshoot)
17
- );
18
- const drawerWidth = computed(
19
- () => wrapperRect.value?.width - toValue(overshoot)
20
- );
21
- async function getSizes() {
22
- wrapperRect.value = unrefElement(wrapperRef)?.getBoundingClientRect();
23
- await nextTick();
24
- }
15
+ const drawerHeight = computed(() => {
16
+ if (toValue(wrapperRect) === void 0) {
17
+ return 0;
18
+ } else {
19
+ return toValue(wrapperRect)?.height - toValue(overshoot);
20
+ }
21
+ });
22
+ const drawerWidth = computed(() => {
23
+ if (toValue(wrapperRect) === void 0) {
24
+ return 0;
25
+ } else {
26
+ return toValue(wrapperRect)?.width - toValue(overshoot);
27
+ }
28
+ });
25
29
  function findClosestNumber(args2) {
26
30
  const { number, numbers, direction } = args2;
27
31
  let filtered = numbers;
@@ -53,7 +57,7 @@ export function useDrawerSnap(args) {
53
57
  const reversedSnapPoint = mapValue(snapPoint, 0, 1, 1, 0);
54
58
  const vh = window.innerHeight;
55
59
  const vw = window.innerWidth;
56
- if (wrapperRect.value === void 0) {
60
+ if (toValue(wrapperRect) === void 0) {
57
61
  return void 0;
58
62
  }
59
63
  switch (position) {
@@ -63,34 +67,34 @@ export function useDrawerSnap(args) {
63
67
  else if (reversedSnapPoint === 0)
64
68
  return 0;
65
69
  else
66
- return vh * reversedSnapPoint - wrapperRect.value?.top;
70
+ return vh * reversedSnapPoint - toValue(wrapperRect)?.top;
67
71
  case "top":
68
72
  if (reversedSnapPoint === 1)
69
73
  return drawerHeight.value * -1;
70
74
  else if (reversedSnapPoint === 0)
71
75
  return 0;
72
76
  else
73
- return vh * reversedSnapPoint - wrapperRect.value?.bottom;
77
+ return vh * reversedSnapPoint - toValue(wrapperRect)?.bottom;
74
78
  case "right":
75
79
  if (reversedSnapPoint === 1)
76
80
  return drawerWidth.value;
77
81
  else if (reversedSnapPoint === 0)
78
82
  return 0;
79
83
  else
80
- return vw * reversedSnapPoint - wrapperRect.value?.left;
84
+ return vw * reversedSnapPoint - toValue(wrapperRect)?.left;
81
85
  case "left":
82
86
  if (reversedSnapPoint === 1)
83
87
  return drawerWidth.value * -1;
84
88
  else if (reversedSnapPoint === 0)
85
89
  return 0;
86
90
  else
87
- return vw * reversedSnapPoint - wrapperRect.value?.right;
91
+ return vw * reversedSnapPoint - toValue(wrapperRect)?.right;
88
92
  default:
89
93
  return 0;
90
94
  }
91
95
  } else {
92
96
  const parsedSnapPoint = parseFloat(snapPoint);
93
- if (drawerHeight.value === void 0 || drawerWidth.value === void 0) {
97
+ if (!drawerHeight.value || !drawerWidth.value) {
94
98
  return void 0;
95
99
  }
96
100
  switch (position) {
@@ -109,7 +113,6 @@ export function useDrawerSnap(args) {
109
113
  }
110
114
  async function findClosestSnapPoint(args2) {
111
115
  const { draggedY, draggedX, direction = "absolute" } = args2;
112
- await getSizes();
113
116
  let closest = 0;
114
117
  switch (position) {
115
118
  case "bottom":
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@maas/vue-equipment",
3
3
  "description": "A magic collection of Vue composables, plugins, components and directives",
4
- "version": "0.15.0",
4
+ "version": "0.15.1",
5
5
  "author": "Robin Scholz <https://github.com/robinscholz>, Christoph Jeworutzki <https://github.com/ChristophJeworutzki>",
6
6
  "devDependencies": {
7
7
  "@antfu/ni": "^0.21.12",