@maas/vue-equipment 1.0.1 → 1.2.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.
Files changed (41) hide show
  1. package/dist/nuxt/module.json +1 -1
  2. package/dist/nuxt/module.mjs +2 -2
  3. package/dist/plugins/MagicCarousel/src/utils/defaultOptions.mjs +1 -1
  4. package/dist/plugins/MagicDraggable/src/utils/defaultOptions.mjs +1 -1
  5. package/dist/plugins/MagicDrawer/index.d.ts +2 -2
  6. package/dist/plugins/MagicDrawer/src/components/MagicDrawerContent.vue +4 -0
  7. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +128 -170
  8. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerProgress.mjs +57 -77
  9. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.d.ts +16 -11
  10. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.mjs +175 -175
  11. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerState.mjs +2 -1
  12. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerUtils.d.ts +3 -0
  13. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerUtils.mjs +11 -1
  14. package/dist/plugins/MagicDrawer/src/composables/useMagicDrawer.d.ts +1 -0
  15. package/dist/plugins/MagicDrawer/src/composables/useMagicDrawer.mjs +2 -1
  16. package/dist/plugins/MagicDrawer/src/types/index.d.ts +8 -1
  17. package/dist/plugins/MagicDrawer/src/utils/defaultOptions.mjs +1 -1
  18. package/dist/plugins/MagicTray/index.d.ts +4 -3
  19. package/dist/plugins/MagicTray/index.mjs +3 -0
  20. package/dist/plugins/MagicTray/src/components/MagicTrayContent.d.vue.ts +2 -2
  21. package/dist/plugins/MagicTray/src/components/MagicTrayContent.vue +17 -16
  22. package/dist/plugins/MagicTray/src/components/MagicTrayContent.vue.d.ts +2 -2
  23. package/dist/plugins/MagicTray/src/components/MagicTrayTrigger.d.vue.ts +25 -0
  24. package/dist/plugins/MagicTray/src/components/MagicTrayTrigger.vue +90 -0
  25. package/dist/plugins/MagicTray/src/components/MagicTrayTrigger.vue.d.ts +25 -0
  26. package/dist/plugins/MagicTray/src/composables/private/useTrayDrag.d.ts +0 -4
  27. package/dist/plugins/MagicTray/src/composables/private/useTrayDrag.mjs +27 -385
  28. package/dist/plugins/MagicTray/src/composables/private/useTrayGesture.d.ts +16 -0
  29. package/dist/plugins/MagicTray/src/composables/private/useTrayGesture.mjs +426 -0
  30. package/dist/plugins/MagicTray/src/composables/private/useTrayMagnetism.mjs +11 -37
  31. package/dist/plugins/MagicTray/src/composables/private/useTrayProgress.mjs +1 -1
  32. package/dist/plugins/MagicTray/src/composables/private/useTraySnap.d.ts +12 -7
  33. package/dist/plugins/MagicTray/src/composables/private/useTraySnap.mjs +88 -40
  34. package/dist/plugins/MagicTray/src/composables/private/useTrayUtils.d.ts +10 -1
  35. package/dist/plugins/MagicTray/src/composables/private/useTrayUtils.mjs +17 -1
  36. package/dist/plugins/MagicTray/src/types/index.d.ts +7 -1
  37. package/dist/plugins/MagicTray/src/utils/defaultOptions.mjs +1 -1
  38. package/dist/utils/index.d.ts +46 -1
  39. package/dist/utils/index.js +75 -0
  40. package/dist/utils/index.js.map +1 -1
  41. package/package.json +2 -2
@@ -40,7 +40,6 @@
40
40
  :style="handleStyle(side)"
41
41
  @pointerdown="guardedPointerdown(side, $event)"
42
42
  @touchstart="guardedTouchstart(side, $event)"
43
- @click.capture="onHandleClick"
44
43
  >
45
44
  <template
46
45
  v-if="slots[`handle-${side}`] || slots.handle"
@@ -62,6 +61,7 @@ import { computed, inject, useSlots, useTemplateRef } from "vue";
62
61
  import { useMagicError } from "@maas/vue-equipment/plugins/MagicError";
63
62
  import { useTrayState } from "../composables/private/useTrayState";
64
63
  import { useTrayDrag } from "../composables/private/useTrayDrag";
64
+ import { useTrayGesture } from "../composables/private/useTrayGesture";
65
65
  import { useTrayMagnetism } from "../composables/private/useTrayMagnetism";
66
66
  import { useTrayProgress } from "../composables/private/useTrayProgress";
67
67
  import MagicTrayHandle from "./MagicTrayHandle.vue";
@@ -94,18 +94,15 @@ const handleRefs = {
94
94
  const disabled = computed(() => state.options.disabled);
95
95
  const inset = computed(() => state.options.inset);
96
96
  const slots = useSlots();
97
- const {
98
- draggableSides,
99
- clipPath,
100
- handleStyle,
101
- hasDragged,
102
- onHandlePointerdown,
103
- onHandleTouchstart,
104
- onHandleClick
105
- } = useTrayDrag({
97
+ const { draggableSides, clipPath, handleStyle } = useTrayDrag({
106
98
  id: instanceId,
107
99
  elRef
108
100
  });
101
+ const { hasDragged, onPointerdown, onTouchstart } = useTrayGesture({
102
+ id: instanceId,
103
+ state,
104
+ preventEdgeNavigation: () => state.options.preventEdgeNavigation
105
+ });
109
106
  useTrayMagnetism({ id: instanceId, elRef, handleRefs, state });
110
107
  useTrayProgress({ id: instanceId, state });
111
108
  const visibleHandles = computed(() => {
@@ -120,12 +117,12 @@ const visibleHandles = computed(() => {
120
117
  });
121
118
  function guardedPointerdown(side, event) {
122
119
  if (!disabled.value) {
123
- onHandlePointerdown(side, event);
120
+ onPointerdown(side, event);
124
121
  }
125
122
  }
126
123
  function guardedTouchstart(side, event) {
127
124
  if (!disabled.value) {
128
- onHandleTouchstart(side, event);
125
+ onTouchstart(side, event);
129
126
  }
130
127
  }
131
128
  </script>
@@ -200,10 +197,6 @@ function guardedTouchstart(side, event) {
200
197
  pointer-events: var(--magic-tray-content-pointer-events, auto);
201
198
  }
202
199
 
203
- .magic-tray-content[data-inset='true'] .magic-tray-content__slot {
204
- padding: var(--magic-tray-drag-overshoot-outer);
205
- }
206
-
207
200
  .magic-tray-content__inner[data-drag-top='true'] {
208
201
  padding-top: var(--magic-tray-drag-overshoot-outer);
209
202
  }
@@ -242,4 +235,12 @@ dialog.magic-tray-content__inner {
242
235
  .magic-tray-content[data-dragging='true'] .magic-tray-handle {
243
236
  cursor: var(--magic-tray-handle-cursor-dragging, grabbing);
244
237
  }
238
+
239
+ .magic-tray-content[data-dragging='true'] .magic-tray-handle * {
240
+ -webkit-user-drag: none;
241
+ }
242
+
243
+ .magic-tray-content[data-dragged='true'] .magic-tray-handle * {
244
+ pointer-events: none;
245
+ }
245
246
  </style>
@@ -1,9 +1,9 @@
1
1
  import type { MagicTraySide } from '../types/index.js';
2
- declare var __VLS_9: {}, __VLS_11: {}, __VLS_25: "handle-top" | "handle-right" | "handle-bottom" | "handle-left" | "handle", __VLS_26: {
2
+ declare var __VLS_9: {}, __VLS_11: {}, __VLS_24: "handle-top" | "handle-right" | "handle-bottom" | "handle-left" | "handle", __VLS_25: {
3
3
  side: MagicTraySide;
4
4
  };
5
5
  type __VLS_Slots = {} & {
6
- [K in NonNullable<typeof __VLS_25>]?: (props: typeof __VLS_26) => any;
6
+ [K in NonNullable<typeof __VLS_24>]?: (props: typeof __VLS_25) => any;
7
7
  } & {
8
8
  background?: (props: typeof __VLS_9) => any;
9
9
  } & {
@@ -0,0 +1,25 @@
1
+ import type { MaybeRef } from 'vue';
2
+ import type { MagicTraySide } from '../types/index.js';
3
+ interface MagicTrayTriggerProps {
4
+ id?: MaybeRef<string>;
5
+ side: MagicTraySide;
6
+ disabled?: boolean;
7
+ preventEdgeNavigation?: boolean;
8
+ asChild?: boolean;
9
+ }
10
+ declare var __VLS_11: {
11
+ dragging: boolean;
12
+ disabled: any;
13
+ };
14
+ type __VLS_Slots = {} & {
15
+ default?: (props: typeof __VLS_11) => any;
16
+ };
17
+ declare const __VLS_base: import("vue").DefineComponent<MagicTrayTriggerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicTrayTriggerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
21
+ type __VLS_WithSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
@@ -0,0 +1,90 @@
1
+ <template>
2
+ <vue-primitive
3
+ class="magic-tray-trigger"
4
+ :as-child="asChild"
5
+ :data-id="`${mappedId}-trigger`"
6
+ :data-side="side"
7
+ :data-dragging="active"
8
+ :data-dragged="hasDragged"
9
+ :data-disabled="mappedDisabled"
10
+ @pointerdown="guardedPointerdown"
11
+ @touchstart="guardedTouchstart"
12
+ >
13
+ <slot :dragging="active" :disabled="mappedDisabled" />
14
+ </vue-primitive>
15
+ </template>
16
+
17
+ <script setup>
18
+ import { computed, inject, toValue } from "vue";
19
+ import { VuePrimitive } from "@maas/vue-primitive";
20
+ import { useMagicError } from "@maas/vue-equipment/plugins/MagicError";
21
+ import { useTrayState } from "../composables/private/useTrayState";
22
+ import { useTrayGesture } from "../composables/private/useTrayGesture";
23
+ import { MagicTrayInstanceId } from "../symbols";
24
+ const { id, side, disabled, preventEdgeNavigation, asChild } = defineProps({
25
+ id: { type: null, required: false },
26
+ side: { type: String, required: true },
27
+ disabled: { type: Boolean, required: false },
28
+ preventEdgeNavigation: { type: Boolean, required: false },
29
+ asChild: { type: Boolean, required: false }
30
+ });
31
+ const injectedInstanceId = inject(MagicTrayInstanceId, void 0);
32
+ const mappedInstanceId = computed(() => id ?? injectedInstanceId);
33
+ const magicError = useMagicError({
34
+ prefix: "MagicTray",
35
+ source: "MagicTrayTrigger"
36
+ });
37
+ magicError.assert(mappedInstanceId.value, {
38
+ message: "MagicTrayTrigger must be nested inside MagicTrayProvider or an id must be provided",
39
+ errorCode: "missing_instance_id"
40
+ });
41
+ const mappedId = computed(() => toValue(mappedInstanceId.value ?? ""));
42
+ const { initializeState } = useTrayState(mappedId);
43
+ const state = initializeState();
44
+ const { active, hasDragged, onPointerdown, onTouchstart } = useTrayGesture({
45
+ id: mappedId,
46
+ state,
47
+ selectionLock: "drag",
48
+ preventEdgeNavigation: () => preventEdgeNavigation ?? state.options.preventEdgeNavigation
49
+ });
50
+ const mappedDisabled = computed(() => disabled || state.options.disabled);
51
+ function isEditable(target) {
52
+ if (!(target instanceof Element)) {
53
+ return false;
54
+ }
55
+ return target.closest("input, textarea, select") !== null || target instanceof HTMLElement && target.isContentEditable;
56
+ }
57
+ function canDrag(event) {
58
+ return !mappedDisabled.value && !isEditable(event.target);
59
+ }
60
+ function guardedPointerdown(event) {
61
+ if (canDrag(event)) {
62
+ onPointerdown(side, event);
63
+ }
64
+ }
65
+ function guardedTouchstart(event) {
66
+ if (canDrag(event)) {
67
+ onTouchstart(side, event);
68
+ }
69
+ }
70
+ </script>
71
+
72
+ <style>
73
+ .magic-tray-trigger[data-disabled='false'][data-side='left'],
74
+ .magic-tray-trigger[data-disabled='false'][data-side='right'] {
75
+ touch-action: var(--magic-tray-trigger-touch-action, pan-y);
76
+ }
77
+
78
+ .magic-tray-trigger[data-disabled='false'][data-side='top'],
79
+ .magic-tray-trigger[data-disabled='false'][data-side='bottom'] {
80
+ touch-action: var(--magic-tray-trigger-touch-action, pan-x);
81
+ }
82
+
83
+ .magic-tray-trigger[data-dragging='true'] * {
84
+ -webkit-user-drag: none;
85
+ }
86
+
87
+ .magic-tray-trigger[data-dragged='true'] * {
88
+ pointer-events: none;
89
+ }
90
+ </style>
@@ -0,0 +1,25 @@
1
+ import type { MaybeRef } from 'vue';
2
+ import type { MagicTraySide } from '../types/index.js';
3
+ interface MagicTrayTriggerProps {
4
+ id?: MaybeRef<string>;
5
+ side: MagicTraySide;
6
+ disabled?: boolean;
7
+ preventEdgeNavigation?: boolean;
8
+ asChild?: boolean;
9
+ }
10
+ declare var __VLS_11: {
11
+ dragging: boolean;
12
+ disabled: any;
13
+ };
14
+ type __VLS_Slots = {} & {
15
+ default?: (props: typeof __VLS_11) => any;
16
+ };
17
+ declare const __VLS_base: import("vue").DefineComponent<MagicTrayTriggerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicTrayTriggerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
21
+ type __VLS_WithSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
@@ -32,10 +32,6 @@ export declare function useTrayDrag(args: UseTrayDragArgs): {
32
32
  '--magic-tray-handle-magnetic': string;
33
33
  left?: undefined;
34
34
  };
35
- hasDragged: import("vue").ComputedRef<boolean>;
36
35
  dimension: (side: MagicTraySide) => number;
37
- onHandlePointerdown: (side: MagicTraySide, e: PointerEvent) => void;
38
- onHandleTouchstart: (side: MagicTraySide, e: TouchEvent) => void;
39
- onHandleClick: (e: MouseEvent) => void;
40
36
  };
41
37
  export {};