@maas/vue-equipment 1.0.0-beta.1 → 1.0.0-beta.10
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/README.md +2 -2
- package/dist/composables/index.d.ts +5 -5
- package/dist/composables/index.js +23 -13
- package/dist/composables/index.js.map +1 -1
- package/dist/nuxt/module.json +1 -1
- package/dist/nuxt/module.mjs +9 -2
- package/dist/plugins/.turbo/turbo-lint.log +1 -9
- package/dist/plugins/MagicAccordion/demo/data/footer.json +1 -1
- package/dist/plugins/MagicAccordion/src/components/MagicAccordionContent.vue.d.ts +33 -22
- package/dist/plugins/MagicAccordion/src/components/MagicAccordionProvider.vue +2 -2
- package/dist/plugins/MagicAccordion/src/components/MagicAccordionProvider.vue.d.ts +12 -21
- package/dist/plugins/MagicAccordion/src/components/MagicAccordionTrigger.vue +15 -13
- package/dist/plugins/MagicAccordion/src/components/MagicAccordionTrigger.vue.d.ts +23 -59
- package/dist/plugins/MagicAccordion/src/components/MagicAccordionView.vue +2 -1
- package/dist/plugins/MagicAccordion/src/components/MagicAccordionView.vue.d.ts +17 -22
- package/dist/plugins/MagicAccordion/src/composables/private/useAccordionTrigger.d.ts +1 -1
- package/dist/plugins/MagicAccordion/src/symbols/index.d.ts +2 -2
- package/dist/plugins/MagicCommand/src/components/MagicCommandContent.vue +11 -4
- package/dist/plugins/MagicCommand/src/components/MagicCommandContent.vue.d.ts +24 -13
- package/dist/plugins/MagicCommand/src/components/MagicCommandDrawer.vue.d.ts +12 -21
- package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue +0 -4
- package/dist/plugins/MagicCommand/src/components/MagicCommandItem.vue.d.ts +29 -28
- package/dist/plugins/MagicCommand/src/components/MagicCommandModal.vue.d.ts +12 -21
- package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue +5 -7
- package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue.d.ts +12 -58
- package/dist/plugins/MagicCommand/src/components/MagicCommandRenderer.vue +7 -7
- package/dist/plugins/MagicCommand/src/components/MagicCommandTrigger.vue +7 -6
- package/dist/plugins/MagicCommand/src/components/MagicCommandTrigger.vue.d.ts +25 -60
- package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue +2 -2
- package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue.d.ts +15 -22
- package/dist/plugins/MagicCommand/src/composables/private/useCommandScroll.d.ts +2 -2
- package/dist/plugins/MagicCommand/src/composables/private/useCommandState.mjs +1 -1
- package/dist/plugins/MagicCommand/src/composables/private/useCommandTrigger.d.ts +1 -1
- package/dist/plugins/MagicCommand/src/symbols/index.d.ts +4 -4
- package/dist/plugins/MagicCommand/src/types/index.d.ts +1 -1
- package/dist/plugins/MagicCookie/src/components/MagicCookieItem.vue.d.ts +13 -22
- package/dist/plugins/MagicCookie/src/components/MagicCookieProvider.vue.d.ts +9 -21
- package/dist/plugins/MagicCookie/src/components/MagicCookieView.vue.d.ts +21 -12
- package/dist/plugins/MagicCookie/src/symbols/index.d.ts +2 -2
- package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue +18 -24
- package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue.d.ts +94 -23
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.d.ts +2 -2
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.mjs +9 -5
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableScrollLock.mjs +34 -14
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.d.ts +6 -4
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.mjs +54 -19
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.mjs +4 -4
- package/dist/plugins/MagicDraggable/src/types/index.d.ts +1 -1
- package/dist/plugins/MagicDraggable/src/utils/defaultOptions.mjs +1 -1
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +33 -24
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue.d.ts +165 -24
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDOM.mjs +34 -14
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.d.ts +2 -2
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +3 -3
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerGuards.d.ts +1 -1
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerGuards.mjs +28 -10
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerProgress.d.ts +2 -2
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.d.ts +3 -3
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.mjs +16 -14
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerWheel.d.ts +1 -1
- package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue +15 -15
- package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue.d.ts +14 -25
- package/dist/plugins/MagicMarquee/src/composables/private/useMarqueeApi.d.ts +1 -1
- package/dist/plugins/MagicMarquee/src/composables/private/useMarqueeApi.mjs +8 -2
- package/dist/plugins/MagicMenu/src/components/MagicMenuChannel.vue +4 -5
- package/dist/plugins/MagicMenu/src/components/MagicMenuChannel.vue.d.ts +18 -21
- package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue +3 -6
- package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue.d.ts +41 -24
- package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue +5 -7
- package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue.d.ts +40 -25
- package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue +3 -14
- package/dist/plugins/MagicMenu/src/components/MagicMenuItem.vue.d.ts +31 -28
- package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue +19 -8
- package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue.d.ts +12 -58
- package/dist/plugins/MagicMenu/src/components/MagicMenuRemote.vue +28 -38
- package/dist/plugins/MagicMenu/src/components/MagicMenuRemote.vue.d.ts +19 -23
- package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue +29 -19
- package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue.d.ts +27 -60
- package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue +2 -2
- package/dist/plugins/MagicMenu/src/components/MagicMenuView.vue.d.ts +15 -22
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCallback.mjs +1 -1
- package/dist/plugins/MagicMenu/src/composables/private/useMenuChannel.mjs +15 -5
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCursor.d.ts +3 -3
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCursor.mjs +4 -4
- package/dist/plugins/MagicMenu/src/composables/private/useMenuDOM.mjs +35 -15
- package/dist/plugins/MagicMenu/src/composables/private/useMenuTrigger.d.ts +1 -1
- package/dist/plugins/MagicMenu/src/composables/private/useMenuView.mjs +18 -6
- package/dist/plugins/MagicMenu/src/symbols/index.d.ts +4 -4
- package/dist/plugins/MagicMenu/src/utils/modeDelayDefaults.d.ts +2 -2
- package/dist/plugins/MagicMenu/src/utils/modeDelayDefaults.mjs +2 -2
- package/dist/plugins/MagicModal/src/components/MagicModal.vue +9 -9
- package/dist/plugins/MagicModal/src/components/MagicModal.vue.d.ts +44 -22
- package/dist/plugins/MagicModal/src/composables/private/useModalDOM.mjs +34 -14
- package/dist/plugins/MagicNoise/src/components/MagicNoise.vue +14 -14
- package/dist/plugins/MagicNoise/src/components/MagicNoise.vue.d.ts +1 -10
- package/dist/plugins/MagicNoise/src/composables/private/useNoiseApi.d.ts +3 -3
- package/dist/plugins/MagicNoise/src/composables/private/useNoiseApi.mjs +2 -2
- package/dist/plugins/MagicPie/index.d.ts +7 -0
- package/dist/plugins/MagicPie/index.mjs +8 -0
- package/dist/plugins/MagicPie/nuxt.d.ts +2 -0
- package/dist/plugins/MagicPie/nuxt.mjs +23 -0
- package/dist/plugins/MagicPie/src/components/MagicPie.vue +202 -0
- package/dist/plugins/MagicPie/src/components/MagicPie.vue.d.ts +7 -0
- package/dist/plugins/MagicPie/src/composables/private/usePieState.d.ts +6 -0
- package/dist/plugins/MagicPie/src/composables/private/usePieState.mjs +33 -0
- package/dist/plugins/MagicPie/src/composables/useMagicPie.d.ts +13 -0
- package/dist/plugins/MagicPie/src/composables/useMagicPie.mjs +43 -0
- package/dist/plugins/MagicPie/src/types/index.d.ts +9 -0
- package/dist/plugins/MagicPie/src/types/index.mjs +0 -0
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudio.vue +14 -8
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue +32 -38
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue.d.ts +27 -26
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerDisplayTime.vue.d.ts +1 -10
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue +19 -8
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue.d.ts +1 -10
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue +2 -2
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerOverlay.vue.d.ts +29 -14
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerPoster.vue.d.ts +13 -11
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerProvider.vue +3 -4
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerProvider.vue.d.ts +23 -23
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideo.vue +3 -4
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue +24 -25
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue.d.ts +61 -33
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerAudioApi.d.ts +2 -2
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerAudioApi.mjs +3 -3
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.d.ts +10 -10
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.mjs +15 -9
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.d.ts +13 -13
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.mjs +18 -11
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.d.ts +3 -3
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.mjs +3 -3
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerVideoApi.d.ts +6 -6
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerVideoApi.mjs +4 -4
- package/dist/plugins/MagicPlayer/src/composables/useMagicPlayer.d.ts +20 -20
- package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue +17 -8
- package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue.d.ts +9 -23
- package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue +11 -11
- package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue.d.ts +9 -23
- package/dist/plugins/MagicScroll/src/components/MagicScrollProvider.vue.d.ts +45 -37
- package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue +18 -10
- package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue.d.ts +13 -24
- package/dist/plugins/MagicScroll/src/composables/private/useCollisionDetection.d.ts +2 -2
- package/dist/plugins/MagicScroll/src/composables/private/useCollisionDetection.mjs +3 -3
- package/dist/plugins/MagicScroll/src/composables/private/useScrollApi.mjs +14 -4
- package/dist/plugins/MagicScroll/src/symbols/index.d.ts +1 -1
- package/dist/plugins/MagicToast/src/components/MagicToastProvider.vue +23 -29
- package/dist/plugins/MagicToast/src/components/MagicToastProvider.vue.d.ts +1 -10
- package/dist/plugins/MagicToast/src/components/MagicToastView.vue +8 -11
- package/dist/plugins/MagicToast/src/components/MagicToastView.vue.d.ts +24 -23
- package/dist/plugins/MagicToast/src/composables/private/useToastCallback.d.ts +2 -2
- package/dist/plugins/MagicToast/src/composables/private/useToastCallback.mjs +5 -5
- package/dist/plugins/MagicToast/src/composables/private/useToastDrag.mjs +22 -22
- package/dist/plugins/MagicToast/src/composables/private/useToastScrollLock.mjs +33 -15
- package/dist/plugins/MagicToast/src/composables/useMagicToast.d.ts +1 -0
- package/dist/plugins/MagicToast/src/composables/useMagicToast.mjs +10 -2
- package/dist/plugins/MagicToast/src/types/index.d.ts +1 -1
- package/dist/plugins/MagicToast/src/utils/defaultOptions.mjs +1 -1
- package/dist/plugins/index.d.ts +1 -0
- package/dist/plugins/index.mjs +1 -0
- package/dist/utils/index.d.ts +9 -4
- package/dist/utils/index.js +39 -3
- package/dist/utils/index.js.map +1 -1
- package/package.json +16 -7
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
shallowRef,
|
|
3
3
|
computed,
|
|
4
4
|
toValue,
|
|
5
5
|
nextTick,
|
|
@@ -58,8 +58,8 @@ export function useDraggableDrag(args) {
|
|
|
58
58
|
let cancelPointerup = void 0;
|
|
59
59
|
let cancelPointermove = void 0;
|
|
60
60
|
let cancelTouchend = void 0;
|
|
61
|
-
const momentumThresholdReached =
|
|
62
|
-
const distanceThresholdReached =
|
|
61
|
+
const momentumThresholdReached = shallowRef(false);
|
|
62
|
+
const distanceThresholdReached = shallowRef(false);
|
|
63
63
|
const style = computed(
|
|
64
64
|
() => `transform: translate3d(${draggedX.value}px, ${draggedY.value}px, 0)`
|
|
65
65
|
);
|
|
@@ -89,8 +89,10 @@ export function useDraggableDrag(args) {
|
|
|
89
89
|
wrapperRect,
|
|
90
90
|
animation,
|
|
91
91
|
snapPoints,
|
|
92
|
+
draggedX,
|
|
92
93
|
draggedY,
|
|
93
|
-
|
|
94
|
+
lastDraggedX,
|
|
95
|
+
lastDraggedY
|
|
94
96
|
});
|
|
95
97
|
const emitter = useMagicEmitter();
|
|
96
98
|
const {
|
|
@@ -329,10 +331,10 @@ export function useDraggableDrag(args) {
|
|
|
329
331
|
function onPointerdown(e) {
|
|
330
332
|
const scrollLockValue = toValue(scrollLock);
|
|
331
333
|
if (scrollLockValue) {
|
|
332
|
-
lockScroll();
|
|
333
334
|
if (typeof scrollLockValue === "object" && scrollLockValue.padding) {
|
|
334
335
|
addScrollLockPadding();
|
|
335
336
|
}
|
|
337
|
+
lockScroll();
|
|
336
338
|
}
|
|
337
339
|
if (dragging.value) {
|
|
338
340
|
return;
|
|
@@ -398,6 +400,7 @@ export function useDraggableDrag(args) {
|
|
|
398
400
|
if (activeSnapPoint.value) {
|
|
399
401
|
await snapTo({ snapPoint: activeSnapPoint.value, interpolate: false });
|
|
400
402
|
snapPointsMap.trigger();
|
|
403
|
+
mappedSnapPoints.trigger();
|
|
401
404
|
}
|
|
402
405
|
}, 100)();
|
|
403
406
|
});
|
|
@@ -407,6 +410,7 @@ export function useDraggableDrag(args) {
|
|
|
407
410
|
if (activeSnapPoint.value) {
|
|
408
411
|
await snapTo({ snapPoint: activeSnapPoint.value, interpolate: false });
|
|
409
412
|
snapPointsMap.trigger();
|
|
413
|
+
mappedSnapPoints.trigger();
|
|
410
414
|
}
|
|
411
415
|
}, 100)();
|
|
412
416
|
});
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { ref } from "vue";
|
|
1
|
+
import { shallowRef, ref } from "vue";
|
|
2
2
|
import { useScrollLock } from "@vueuse/core";
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import {
|
|
4
|
+
matchClass,
|
|
5
|
+
scrollbarWidth,
|
|
6
|
+
scrollbarGutterSupport
|
|
7
|
+
} from "@maas/vue-equipment/utils";
|
|
8
|
+
const scrollLock = typeof window !== "undefined" ? useScrollLock(document?.documentElement) : shallowRef(false);
|
|
5
9
|
export function useDraggableScrollLock() {
|
|
6
10
|
const positionFixedElements = ref([]);
|
|
7
11
|
function lockScroll() {
|
|
@@ -13,24 +17,40 @@ export function useDraggableScrollLock() {
|
|
|
13
17
|
function addScrollLockPadding() {
|
|
14
18
|
if (typeof window === "undefined") return;
|
|
15
19
|
const exclude = new RegExp(/magic-draggable/);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
document.body.style.setProperty(
|
|
21
|
+
"--scrollbar-width",
|
|
22
|
+
`${scrollbarWidth()}px`
|
|
23
|
+
);
|
|
19
24
|
positionFixedElements.value = [
|
|
20
25
|
...document.body.getElementsByTagName("*")
|
|
21
26
|
].filter(
|
|
22
|
-
(x) => getComputedStyle(x, null).getPropertyValue("position") === "fixed" && !matchClass(x, exclude)
|
|
23
|
-
);
|
|
24
|
-
positionFixedElements.value.forEach(
|
|
25
|
-
(elem) => elem.style.paddingRight = "var(--scrollbar-width)"
|
|
27
|
+
(x) => getComputedStyle(x, null).getPropertyValue("position") === "fixed" && getComputedStyle(x, null).getPropertyValue("right") === "0px" && !matchClass(x, exclude)
|
|
26
28
|
);
|
|
29
|
+
switch (scrollbarGutterSupport()) {
|
|
30
|
+
case true:
|
|
31
|
+
document.documentElement.style.scrollbarGutter = "stable";
|
|
32
|
+
positionFixedElements.value.forEach((elem) => {
|
|
33
|
+
elem.style.scrollbarGutter = "stable";
|
|
34
|
+
elem.style.overflow = "auto";
|
|
35
|
+
});
|
|
36
|
+
break;
|
|
37
|
+
case false:
|
|
38
|
+
document.body.style.paddingRight = "var(--scrollbar-width)";
|
|
39
|
+
positionFixedElements.value.forEach(
|
|
40
|
+
(elem) => elem.style.paddingRight = "var(--scrollbar-width)"
|
|
41
|
+
);
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
27
44
|
}
|
|
28
45
|
function removeScrollLockPadding() {
|
|
29
|
-
document.
|
|
46
|
+
document.documentElement.style.scrollbarGutter = "";
|
|
30
47
|
document.body.style.removeProperty("--scrollbar-width");
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
48
|
+
document.body.style.paddingRight = "";
|
|
49
|
+
positionFixedElements.value.forEach((elem) => {
|
|
50
|
+
elem.style.paddingRight = "";
|
|
51
|
+
elem.style.scrollbarGutter = "";
|
|
52
|
+
elem.style.overflow = "";
|
|
53
|
+
});
|
|
34
54
|
}
|
|
35
55
|
return {
|
|
36
56
|
lockScroll,
|
|
@@ -4,8 +4,10 @@ type UseDraggableSnapArgs = {
|
|
|
4
4
|
id: MaybeRef<string>;
|
|
5
5
|
elRect: Ref<DOMRect | undefined>;
|
|
6
6
|
wrapperRect: Ref<DOMRect | undefined>;
|
|
7
|
-
draggedY: Ref<number>;
|
|
8
7
|
draggedX: Ref<number>;
|
|
8
|
+
draggedY: Ref<number>;
|
|
9
|
+
lastDraggedX: Ref<number>;
|
|
10
|
+
lastDraggedY: Ref<number>;
|
|
9
11
|
animation: MaybeRef<DraggableDefaultOptions['animation']>;
|
|
10
12
|
snapPoints: MaybeRef<DraggableDefaultOptions['snapPoints']>;
|
|
11
13
|
};
|
|
@@ -22,13 +24,13 @@ type SnapToArgs = {
|
|
|
22
24
|
};
|
|
23
25
|
export declare function useDraggableSnap(args: UseDraggableSnapArgs): {
|
|
24
26
|
mappedSnapPoints: import("@vueuse/core").ComputedRefWithControl<Coordinates[]>;
|
|
25
|
-
activeSnapPoint: Ref<("center" | "
|
|
27
|
+
activeSnapPoint: Ref<("center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | ["center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right", offset?: {
|
|
26
28
|
x?: number | undefined;
|
|
27
29
|
y?: number | undefined;
|
|
28
|
-
} | undefined] | undefined, "center" | "
|
|
30
|
+
} | undefined] | undefined, "center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | ["center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right", offset?: {
|
|
29
31
|
x?: number;
|
|
30
32
|
y?: number;
|
|
31
|
-
} | undefined] | ["center" | "
|
|
33
|
+
} | undefined] | ["center" | "right" | "left" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right", offset?: {
|
|
32
34
|
x?: number | undefined;
|
|
33
35
|
y?: number | undefined;
|
|
34
36
|
} | undefined] | undefined>;
|
|
@@ -4,7 +4,19 @@ import { interpolate } from "@maas/vue-equipment/utils";
|
|
|
4
4
|
import { useMagicEmitter } from "@maas/vue-equipment/plugins";
|
|
5
5
|
import { defu } from "defu";
|
|
6
6
|
export function useDraggableSnap(args) {
|
|
7
|
-
const {
|
|
7
|
+
const {
|
|
8
|
+
id,
|
|
9
|
+
draggedX,
|
|
10
|
+
draggedY,
|
|
11
|
+
lastDraggedX,
|
|
12
|
+
lastDraggedY,
|
|
13
|
+
elRect,
|
|
14
|
+
wrapperRect,
|
|
15
|
+
animation,
|
|
16
|
+
snapPoints
|
|
17
|
+
} = args;
|
|
18
|
+
const interpolationIdX = ref(void 0);
|
|
19
|
+
const interpolationIdY = ref(void 0);
|
|
8
20
|
const activeSnapPoint = ref(void 0);
|
|
9
21
|
const mappedSnapPoints = computedWithControl(
|
|
10
22
|
() => toValue(wrapperRect),
|
|
@@ -18,17 +30,14 @@ export function useDraggableSnap(args) {
|
|
|
18
30
|
const snapPointsMap = computedWithControl(
|
|
19
31
|
() => toValue(snapPoints),
|
|
20
32
|
() => {
|
|
21
|
-
const mapped = toValue(snapPoints).reduce(
|
|
22
|
-
(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
{}
|
|
31
|
-
);
|
|
33
|
+
const mapped = toValue(snapPoints).reduce((acc, current) => {
|
|
34
|
+
const key = mapSnapPoint(current);
|
|
35
|
+
if (key) {
|
|
36
|
+
const mappedKey = `x${key.x}y${key.y}`;
|
|
37
|
+
acc[mappedKey] = current;
|
|
38
|
+
}
|
|
39
|
+
return acc;
|
|
40
|
+
}, {});
|
|
32
41
|
return mapped;
|
|
33
42
|
}
|
|
34
43
|
);
|
|
@@ -51,7 +60,7 @@ export function useDraggableSnap(args) {
|
|
|
51
60
|
x: mappedOffset.x,
|
|
52
61
|
y: mappedOffset.y
|
|
53
62
|
};
|
|
54
|
-
case "top
|
|
63
|
+
case "top":
|
|
55
64
|
return {
|
|
56
65
|
x: wrapperRect.value.width / 2 + mappedOffset.x - elRect.value.width / 2,
|
|
57
66
|
y: mappedOffset.y
|
|
@@ -61,7 +70,7 @@ export function useDraggableSnap(args) {
|
|
|
61
70
|
x: wrapperRect.value.width - mappedOffset.x - elRect.value.width,
|
|
62
71
|
y: mappedOffset.y
|
|
63
72
|
};
|
|
64
|
-
case "
|
|
73
|
+
case "left":
|
|
65
74
|
return {
|
|
66
75
|
x: mappedOffset.x,
|
|
67
76
|
y: wrapperRect.value.height / 2 + mappedOffset.y - elRect.value.height / 2
|
|
@@ -71,7 +80,7 @@ export function useDraggableSnap(args) {
|
|
|
71
80
|
x: wrapperRect.value.width / 2 - elRect.value.width / 2 + mappedOffset.x,
|
|
72
81
|
y: wrapperRect.value.height / 2 - elRect.value.height / 2 + mappedOffset.y
|
|
73
82
|
};
|
|
74
|
-
case "
|
|
83
|
+
case "right":
|
|
75
84
|
return {
|
|
76
85
|
x: wrapperRect.value.width - mappedOffset.x - elRect.value.width,
|
|
77
86
|
y: wrapperRect.value.height / 2 + mappedOffset.y - elRect.value.height / 2
|
|
@@ -81,7 +90,7 @@ export function useDraggableSnap(args) {
|
|
|
81
90
|
x: mappedOffset.x,
|
|
82
91
|
y: wrapperRect.value.height + mappedOffset.y - elRect.value.height
|
|
83
92
|
};
|
|
84
|
-
case "bottom
|
|
93
|
+
case "bottom":
|
|
85
94
|
return {
|
|
86
95
|
x: wrapperRect.value.width / 2 + mappedOffset.x - elRect.value.width / 2,
|
|
87
96
|
y: wrapperRect.value.height - mappedOffset.y - elRect.value.height
|
|
@@ -93,6 +102,14 @@ export function useDraggableSnap(args) {
|
|
|
93
102
|
};
|
|
94
103
|
}
|
|
95
104
|
}
|
|
105
|
+
function cancelInterpolation() {
|
|
106
|
+
if (interpolationIdY.value) {
|
|
107
|
+
cancelAnimationFrame(interpolationIdY.value);
|
|
108
|
+
}
|
|
109
|
+
if (interpolationIdX.value) {
|
|
110
|
+
cancelAnimationFrame(interpolationIdX.value);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
96
113
|
function interpolateDragged(args2) {
|
|
97
114
|
const {
|
|
98
115
|
x,
|
|
@@ -102,19 +119,27 @@ export function useDraggableSnap(args) {
|
|
|
102
119
|
} = args2;
|
|
103
120
|
const snapPoint = snapPointsMap.value[`x${x}y${y}`];
|
|
104
121
|
emitter.emit("beforeSnap", { id: toValue(id), snapPoint });
|
|
105
|
-
|
|
122
|
+
cancelInterpolation();
|
|
123
|
+
interpolationIdY.value = interpolate({
|
|
106
124
|
from: draggedY.value,
|
|
107
125
|
to: y,
|
|
108
126
|
duration,
|
|
109
127
|
easing,
|
|
110
|
-
callback
|
|
128
|
+
callback(value) {
|
|
111
129
|
draggedY.value = value;
|
|
112
130
|
if (y > x && draggedY.value === y) {
|
|
113
131
|
emitter.emit("afterSnap", { id: toValue(id), snapPoint });
|
|
114
132
|
}
|
|
133
|
+
if (draggedY.value === y) {
|
|
134
|
+
lastDraggedX.value = draggedX.value;
|
|
135
|
+
lastDraggedY.value = draggedY.value;
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
interpolationIdCallback(id2) {
|
|
139
|
+
interpolationIdY.value = id2;
|
|
115
140
|
}
|
|
116
141
|
});
|
|
117
|
-
interpolate({
|
|
142
|
+
interpolationIdX.value = interpolate({
|
|
118
143
|
from: draggedX.value,
|
|
119
144
|
to: x,
|
|
120
145
|
duration,
|
|
@@ -124,6 +149,13 @@ export function useDraggableSnap(args) {
|
|
|
124
149
|
if (x >= y && draggedX.value === x) {
|
|
125
150
|
emitter.emit("afterSnap", { id: toValue(id), snapPoint });
|
|
126
151
|
}
|
|
152
|
+
if (draggedX.value === x) {
|
|
153
|
+
lastDraggedX.value = draggedX.value;
|
|
154
|
+
lastDraggedY.value = draggedY.value;
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
interpolationIdCallback(id2) {
|
|
158
|
+
interpolationIdX.value = id2;
|
|
127
159
|
}
|
|
128
160
|
});
|
|
129
161
|
}
|
|
@@ -139,8 +171,11 @@ export function useDraggableSnap(args) {
|
|
|
139
171
|
duration
|
|
140
172
|
});
|
|
141
173
|
} else {
|
|
174
|
+
cancelInterpolation();
|
|
142
175
|
draggedX.value = mappedSnapPoint.x;
|
|
143
176
|
draggedY.value = mappedSnapPoint.y;
|
|
177
|
+
lastDraggedX.value = draggedX.value;
|
|
178
|
+
lastDraggedY.value = draggedY.value;
|
|
144
179
|
}
|
|
145
180
|
}
|
|
146
181
|
activeSnapPoint.value = snapPoint;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref, reactive, toValue } from "vue";
|
|
2
|
-
const
|
|
2
|
+
const draggableStateStore = ref([]);
|
|
3
3
|
export function useDraggableState(id) {
|
|
4
4
|
function createState(id2) {
|
|
5
5
|
const state = {
|
|
@@ -22,18 +22,18 @@ export function useDraggableState(id) {
|
|
|
22
22
|
}
|
|
23
23
|
function addState(id2) {
|
|
24
24
|
const state = createState(id2);
|
|
25
|
-
|
|
25
|
+
draggableStateStore.value = [...draggableStateStore.value, state];
|
|
26
26
|
return state;
|
|
27
27
|
}
|
|
28
28
|
function initializeState() {
|
|
29
|
-
let state =
|
|
29
|
+
let state = draggableStateStore.value.find((entry) => {
|
|
30
30
|
return entry.id === id;
|
|
31
31
|
});
|
|
32
32
|
if (!state) state = addState(toValue(id));
|
|
33
33
|
return state;
|
|
34
34
|
}
|
|
35
35
|
function deleteState() {
|
|
36
|
-
|
|
36
|
+
draggableStateStore.value = draggableStateStore.value.filter(
|
|
37
37
|
(x) => x.id !== id
|
|
38
38
|
);
|
|
39
39
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RequireAll } from '@maas/vue-equipment/utils';
|
|
2
|
-
type Position = 'top-left' | 'top
|
|
2
|
+
type Position = 'top-left' | 'top' | 'top-right' | 'left' | 'center' | 'right' | 'bottom-left' | 'bottom' | 'bottom-right';
|
|
3
3
|
export type Coordinates = {
|
|
4
4
|
x: number;
|
|
5
5
|
y: number;
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { defineComponent as _defineComponent } from "vue";
|
|
3
3
|
import { unref as _unref, renderSlot as _renderSlot, vShow as _vShow, withModifiers as _withModifiers, createElementVNode as _createElementVNode, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, resolveDynamicComponent as _resolveDynamicComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, mergeProps as _mergeProps, Teleport as _Teleport } from "vue";
|
|
4
|
-
const _hoisted_1 = ["id", "data-dragging", "data-wheeling", "data-disabled", "data-position"];
|
|
5
|
-
const _hoisted_2 = {
|
|
6
|
-
|
|
4
|
+
const _hoisted_1 = ["data-id", "data-dragging", "data-wheeling", "data-disabled", "data-position"];
|
|
5
|
+
const _hoisted_2 = {
|
|
6
|
+
ref: "wrapper",
|
|
7
|
+
class: "magic-drawer__wrapper"
|
|
8
|
+
};
|
|
9
|
+
const _hoisted_3 = { class: "magic-drawer__content" };
|
|
10
|
+
const _hoisted_4 = {
|
|
7
11
|
key: 0,
|
|
8
12
|
class: "magic-drawer__overlay"
|
|
9
13
|
};
|
|
10
14
|
import {
|
|
11
|
-
|
|
15
|
+
useTemplateRef,
|
|
16
|
+
shallowRef,
|
|
12
17
|
watch,
|
|
13
18
|
computed,
|
|
14
19
|
nextTick,
|
|
@@ -56,9 +61,9 @@ export default /* @__PURE__ */ _defineComponent({
|
|
|
56
61
|
}
|
|
57
62
|
});
|
|
58
63
|
const mappedOptions = customDefu(__props.options, defaultOptions);
|
|
59
|
-
const elRef =
|
|
60
|
-
const drawerRef =
|
|
61
|
-
const wrapperRef =
|
|
64
|
+
const elRef = useTemplateRef("el");
|
|
65
|
+
const drawerRef = useTemplateRef("drawer");
|
|
66
|
+
const wrapperRef = useTemplateRef("wrapper");
|
|
62
67
|
const {
|
|
63
68
|
trapFocus,
|
|
64
69
|
releaseFocus,
|
|
@@ -71,7 +76,7 @@ export default /* @__PURE__ */ _defineComponent({
|
|
|
71
76
|
focusTrap: mappedOptions.focusTrap
|
|
72
77
|
});
|
|
73
78
|
const { isActive, open, close } = useMagicDrawer(__props.id);
|
|
74
|
-
const overshoot =
|
|
79
|
+
const overshoot = shallowRef(0);
|
|
75
80
|
const {
|
|
76
81
|
position,
|
|
77
82
|
snapPoints,
|
|
@@ -109,9 +114,9 @@ export default /* @__PURE__ */ _defineComponent({
|
|
|
109
114
|
const { initializeState, deleteState } = useDrawerState(__props.id);
|
|
110
115
|
const state = initializeState();
|
|
111
116
|
const { dragging, wheeling } = toRefs(state);
|
|
112
|
-
const innerActive =
|
|
113
|
-
const wrapperActive =
|
|
114
|
-
const wasActive =
|
|
117
|
+
const innerActive = shallowRef(false);
|
|
118
|
+
const wrapperActive = shallowRef(false);
|
|
119
|
+
const wasActive = shallowRef(false);
|
|
115
120
|
const {
|
|
116
121
|
onBeforeEnter,
|
|
117
122
|
onEnter,
|
|
@@ -250,10 +255,9 @@ export default /* @__PURE__ */ _defineComponent({
|
|
|
250
255
|
disabled: _unref(mappedOptions).teleport?.disabled
|
|
251
256
|
}, [
|
|
252
257
|
_createElementVNode("div", _mergeProps({
|
|
253
|
-
|
|
254
|
-
ref_key: "drawerRef",
|
|
255
|
-
ref: drawerRef,
|
|
258
|
+
ref: "drawer",
|
|
256
259
|
class: "magic-drawer",
|
|
260
|
+
"data-id": toValue(_ctx.id),
|
|
257
261
|
"data-dragging": _unref(dragging),
|
|
258
262
|
"data-wheeling": _unref(wheeling),
|
|
259
263
|
"data-disabled": disabled.value,
|
|
@@ -285,11 +289,7 @@ export default /* @__PURE__ */ _defineComponent({
|
|
|
285
289
|
}, 8, ["name"])) : _createCommentVNode("v-if", true),
|
|
286
290
|
_createElementVNode(
|
|
287
291
|
"div",
|
|
288
|
-
|
|
289
|
-
ref_key: "wrapperRef",
|
|
290
|
-
ref: wrapperRef,
|
|
291
|
-
class: "magic-drawer__wrapper"
|
|
292
|
-
},
|
|
292
|
+
_hoisted_2,
|
|
293
293
|
[
|
|
294
294
|
_createVNode(_Transition, {
|
|
295
295
|
name: contentTransition.value,
|
|
@@ -304,11 +304,10 @@ export default /* @__PURE__ */ _defineComponent({
|
|
|
304
304
|
default: _withCtx(() => [
|
|
305
305
|
_withDirectives(_createElementVNode(
|
|
306
306
|
"div",
|
|
307
|
-
|
|
307
|
+
_hoisted_3,
|
|
308
308
|
[
|
|
309
309
|
(_openBlock(), _createBlock(_resolveDynamicComponent(_unref(mappedOptions).tag), {
|
|
310
|
-
|
|
311
|
-
ref: elRef,
|
|
310
|
+
ref: "el",
|
|
312
311
|
class: "magic-drawer__drag",
|
|
313
312
|
style: _normalizeStyle(_unref(style)),
|
|
314
313
|
onPointerdown: guardedPointerdown,
|
|
@@ -316,7 +315,7 @@ export default /* @__PURE__ */ _defineComponent({
|
|
|
316
315
|
}, {
|
|
317
316
|
default: _withCtx(() => [
|
|
318
317
|
_renderSlot(_ctx.$slots, "default"),
|
|
319
|
-
_unref(hasDragged) ? (_openBlock(), _createElementBlock("div",
|
|
318
|
+
_unref(hasDragged) ? (_openBlock(), _createElementBlock("div", _hoisted_4)) : _createCommentVNode("v-if", true)
|
|
320
319
|
]),
|
|
321
320
|
_: 3
|
|
322
321
|
/* FORWARDED */
|
|
@@ -345,7 +344,9 @@ export default /* @__PURE__ */ _defineComponent({
|
|
|
345
344
|
<style>
|
|
346
345
|
:root {
|
|
347
346
|
--magic-drawer-height: 75svh;
|
|
347
|
+
--magic-drawer-max-height: none;
|
|
348
348
|
--magic-drawer-width: 100%;
|
|
349
|
+
--magic-drawer-max-width: none;
|
|
349
350
|
--magic-drawer-justify-content: center;
|
|
350
351
|
--magic-drawer-align-items: flex-end;
|
|
351
352
|
--magic-drawer-enter-animation: slide-btt-in 300ms ease;
|
|
@@ -433,18 +434,26 @@ export default /* @__PURE__ */ _defineComponent({
|
|
|
433
434
|
|
|
434
435
|
.magic-drawer__wrapper {
|
|
435
436
|
height: var(--magic-drawer-height);
|
|
437
|
+
max-height: calc(
|
|
438
|
+
var(--magic-drawer-max-height) + var(--magic-drawer-drag-overshoot-y)
|
|
439
|
+
);
|
|
436
440
|
width: var(--magic-drawer-width);
|
|
441
|
+
max-width: calc(
|
|
442
|
+
var(--magic-drawer-max-width) + var(--magic-drawer-drag-overshoot-x)
|
|
443
|
+
);
|
|
437
444
|
transform: translate(
|
|
438
445
|
var(--magic-drawer-drag-overshoot-x),
|
|
439
446
|
var(--magic-drawer-drag-overshoot-y)
|
|
440
447
|
);
|
|
441
448
|
pointer-events: none;
|
|
449
|
+
display: flex;
|
|
450
|
+
min-height: 0;
|
|
442
451
|
}
|
|
443
452
|
|
|
444
453
|
.magic-drawer__content {
|
|
445
454
|
width: 100%;
|
|
446
|
-
height: 100%;
|
|
447
455
|
max-height: 100%;
|
|
456
|
+
height: var(--magic-drawer-content-height, 100%);
|
|
448
457
|
position: relative;
|
|
449
458
|
}
|
|
450
459
|
|