@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.
- package/dist/nuxt/module.json +1 -1
- package/dist/nuxt/module.mjs +2 -2
- package/dist/plugins/MagicCarousel/src/utils/defaultOptions.mjs +1 -1
- package/dist/plugins/MagicDraggable/src/utils/defaultOptions.mjs +1 -1
- package/dist/plugins/MagicDrawer/index.d.ts +2 -2
- package/dist/plugins/MagicDrawer/src/components/MagicDrawerContent.vue +4 -0
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +128 -170
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerProgress.mjs +57 -77
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.d.ts +16 -11
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.mjs +175 -175
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerState.mjs +2 -1
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerUtils.d.ts +3 -0
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerUtils.mjs +11 -1
- package/dist/plugins/MagicDrawer/src/composables/useMagicDrawer.d.ts +1 -0
- package/dist/plugins/MagicDrawer/src/composables/useMagicDrawer.mjs +2 -1
- package/dist/plugins/MagicDrawer/src/types/index.d.ts +8 -1
- package/dist/plugins/MagicDrawer/src/utils/defaultOptions.mjs +1 -1
- package/dist/plugins/MagicTray/index.d.ts +4 -3
- package/dist/plugins/MagicTray/index.mjs +3 -0
- package/dist/plugins/MagicTray/src/components/MagicTrayContent.d.vue.ts +2 -2
- package/dist/plugins/MagicTray/src/components/MagicTrayContent.vue +17 -16
- package/dist/plugins/MagicTray/src/components/MagicTrayContent.vue.d.ts +2 -2
- package/dist/plugins/MagicTray/src/components/MagicTrayTrigger.d.vue.ts +25 -0
- package/dist/plugins/MagicTray/src/components/MagicTrayTrigger.vue +90 -0
- package/dist/plugins/MagicTray/src/components/MagicTrayTrigger.vue.d.ts +25 -0
- package/dist/plugins/MagicTray/src/composables/private/useTrayDrag.d.ts +0 -4
- package/dist/plugins/MagicTray/src/composables/private/useTrayDrag.mjs +27 -385
- package/dist/plugins/MagicTray/src/composables/private/useTrayGesture.d.ts +16 -0
- package/dist/plugins/MagicTray/src/composables/private/useTrayGesture.mjs +426 -0
- package/dist/plugins/MagicTray/src/composables/private/useTrayMagnetism.mjs +11 -37
- package/dist/plugins/MagicTray/src/composables/private/useTrayProgress.mjs +1 -1
- package/dist/plugins/MagicTray/src/composables/private/useTraySnap.d.ts +12 -7
- package/dist/plugins/MagicTray/src/composables/private/useTraySnap.mjs +88 -40
- package/dist/plugins/MagicTray/src/composables/private/useTrayUtils.d.ts +10 -1
- package/dist/plugins/MagicTray/src/composables/private/useTrayUtils.mjs +17 -1
- package/dist/plugins/MagicTray/src/types/index.d.ts +7 -1
- package/dist/plugins/MagicTray/src/utils/defaultOptions.mjs +1 -1
- package/dist/utils/index.d.ts +46 -1
- package/dist/utils/index.js +75 -0
- package/dist/utils/index.js.map +1 -1
- 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
|
-
|
|
120
|
+
onPointerdown(side, event);
|
|
124
121
|
}
|
|
125
122
|
}
|
|
126
123
|
function guardedTouchstart(side, event) {
|
|
127
124
|
if (!disabled.value) {
|
|
128
|
-
|
|
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: {},
|
|
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
|
|
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 {};
|