@maas/vue-equipment 1.0.0-beta.42 → 1.0.0-beta.44
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/composables/useScrollLockPadding/index.d.ts +9 -0
- package/dist/composables/useScrollLockPadding/index.js +57 -0
- package/dist/composables/useScrollLockPadding/index.js.map +1 -0
- package/dist/nuxt/module.json +1 -1
- package/dist/nuxt/module.mjs +7 -0
- package/dist/plugins/MagicAccordion/src/components/MagicAccordionProvider.vue +2 -5
- package/dist/plugins/MagicAccordion/src/composables/private/useAccordionState.d.ts +2 -3
- package/dist/plugins/MagicAccordion/src/composables/private/useAccordionState.mjs +38 -11
- package/dist/plugins/MagicAccordion/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicCommand/src/components/MagicCommandProvider.vue +2 -5
- package/dist/plugins/MagicCommand/src/components/MagicCommandRenderer.vue +1 -0
- package/dist/plugins/MagicCommand/src/components/MagicCommandView.vue +1 -1
- package/dist/plugins/MagicCommand/src/composables/private/useCommandState.d.ts +2 -3
- package/dist/plugins/MagicCommand/src/composables/private/useCommandState.mjs +36 -11
- package/dist/plugins/MagicCommand/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicCookie/src/composables/private/useCookieState.d.ts +2 -3
- package/dist/plugins/MagicCookie/src/composables/private/useCookieState.mjs +35 -12
- package/dist/plugins/MagicCookie/src/composables/useMagicCookie.mjs +6 -1
- package/dist/plugins/MagicCookie/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.mjs +33 -25
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableScrollLock.d.ts +2 -4
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableScrollLock.mjs +11 -51
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.mjs +11 -1
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.d.ts +1 -1
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.mjs +41 -11
- package/dist/plugins/MagicDraggable/src/composables/useMagicDraggable.mjs +2 -1
- package/dist/plugins/MagicDraggable/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.d.vue.ts +2 -2
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +15 -19
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue.d.ts +2 -2
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerCallback.d.ts +0 -4
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerCallback.mjs +8 -12
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDOM.d.ts +2 -4
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDOM.mjs +15 -58
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.d.ts +2 -0
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +184 -29
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerState.d.ts +2 -3
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerState.mjs +35 -10
- package/dist/plugins/MagicDrawer/src/composables/useMagicDrawer.mjs +2 -1
- package/dist/plugins/MagicDrawer/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicEmitter/src/composables/useMagicEmitter.mjs +10 -5
- package/dist/plugins/MagicMarquee/src/components/MagicMarquee.vue +2 -5
- package/dist/plugins/MagicMarquee/src/composables/private/useMarqueeState.d.ts +2 -3
- package/dist/plugins/MagicMarquee/src/composables/private/useMarqueeState.mjs +36 -11
- package/dist/plugins/MagicMarquee/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue +4 -12
- package/dist/plugins/MagicMenu/src/components/MagicMenuProvider.vue +2 -6
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCallback.d.ts +1 -4
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCallback.mjs +7 -21
- package/dist/plugins/MagicMenu/src/composables/private/useMenuCursor.mjs +13 -1
- package/dist/plugins/MagicMenu/src/composables/private/useMenuDOM.d.ts +2 -4
- package/dist/plugins/MagicMenu/src/composables/private/useMenuDOM.mjs +13 -51
- package/dist/plugins/MagicMenu/src/composables/private/useMenuState.d.ts +2 -3
- package/dist/plugins/MagicMenu/src/composables/private/useMenuState.mjs +32 -12
- package/dist/plugins/MagicMenu/src/composables/private/useMenuTrigger.mjs +1 -1
- package/dist/plugins/MagicMenu/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicModal/src/components/MagicModal.vue +4 -16
- package/dist/plugins/MagicModal/src/composables/private/useModalCallback.d.ts +0 -4
- package/dist/plugins/MagicModal/src/composables/private/useModalCallback.mjs +9 -19
- package/dist/plugins/MagicModal/src/composables/private/useModalDOM.d.ts +2 -4
- package/dist/plugins/MagicModal/src/composables/private/useModalDOM.mjs +15 -58
- package/dist/plugins/MagicModal/src/composables/private/useModalState.d.ts +6 -0
- package/dist/plugins/MagicModal/src/composables/private/useModalState.mjs +58 -0
- package/dist/plugins/MagicModal/src/composables/private/useModalStore.d.ts +1 -5
- package/dist/plugins/MagicModal/src/composables/private/useModalStore.mjs +1 -15
- package/dist/plugins/MagicModal/src/composables/useMagicModal.mjs +7 -6
- package/dist/plugins/MagicModal/src/types/index.d.ts +5 -0
- package/dist/plugins/MagicNoise/src/components/MagicNoise.vue +14 -2
- package/dist/plugins/MagicPie/src/components/MagicPie.vue +12 -6
- package/dist/plugins/MagicPie/src/composables/private/usePieState.d.ts +1 -1
- package/dist/plugins/MagicPie/src/composables/private/usePieState.mjs +33 -12
- package/dist/plugins/MagicPie/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudio.vue +9 -6
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerAudioControls.vue +4 -8
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerMuxPopover.vue +8 -1
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerProvider.vue +2 -11
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideo.vue +10 -6
- package/dist/plugins/MagicPlayer/src/components/MagicPlayerVideoControls.vue +4 -8
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.d.ts +0 -1
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerControlsApi.mjs +20 -9
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerEmitter.mjs +124 -75
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.mjs +100 -32
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.d.ts +0 -1
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerRuntime.mjs +33 -13
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerState.d.ts +2 -3
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerState.mjs +35 -10
- package/dist/plugins/MagicPlayer/src/composables/useMagicPlayer.d.ts +0 -2
- package/dist/plugins/MagicPlayer/src/types/index.d.ts +1 -0
- package/dist/plugins/MagicScroll/src/components/MagicScrollCollision.vue +2 -2
- package/dist/plugins/MagicScroll/src/components/MagicScrollMotion.vue +13 -1
- package/dist/plugins/MagicScroll/src/components/MagicScrollScene.vue +9 -5
- package/dist/plugins/MagicScroll/src/composables/private/useCollisionDetection.mjs +2 -1
- package/dist/plugins/MagicToast/src/components/MagicToastProvider.vue +2 -11
- package/dist/plugins/MagicToast/src/components/MagicToastView.vue +1 -0
- package/dist/plugins/MagicToast/src/composables/private/useToastDrag.mjs +18 -15
- package/dist/plugins/MagicToast/src/composables/private/useToastScrollLock.d.ts +2 -4
- package/dist/plugins/MagicToast/src/composables/private/useToastScrollLock.mjs +11 -49
- package/dist/plugins/MagicToast/src/composables/private/useToastState.d.ts +2 -3
- package/dist/plugins/MagicToast/src/composables/private/useToastState.mjs +35 -12
- package/dist/plugins/MagicToast/src/types/index.d.ts +1 -0
- package/dist/utils/index.d.ts +8 -1
- package/dist/utils/index.js +56497 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/plugins/MagicError/src/MagicError.d.ts +0 -0
- package/dist/plugins/MagicError/src/MagicError.mjs +0 -0
|
@@ -1,63 +1,23 @@
|
|
|
1
|
-
import { shallowRef
|
|
1
|
+
import { shallowRef } from "vue";
|
|
2
2
|
import { useScrollLock } from "@vueuse/core";
|
|
3
|
-
import {
|
|
4
|
-
matchClass,
|
|
5
|
-
scrollbarWidth,
|
|
6
|
-
scrollbarGutterSupport
|
|
7
|
-
} from "@maas/vue-equipment/utils";
|
|
3
|
+
import { useScrollLockPadding } from "@maas/vue-equipment/composables/useScrollLockPadding";
|
|
8
4
|
const scrollLock = typeof window !== "undefined" ? useScrollLock(document?.documentElement) : shallowRef(false);
|
|
5
|
+
const { add, remove } = useScrollLockPadding({ exclude: /magic-draggable/ });
|
|
9
6
|
export function useDraggableScrollLock() {
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
function lockScroll(padding) {
|
|
8
|
+
if (padding) {
|
|
9
|
+
add();
|
|
10
|
+
}
|
|
12
11
|
scrollLock.value = true;
|
|
13
12
|
}
|
|
14
|
-
function unlockScroll() {
|
|
13
|
+
function unlockScroll(padding) {
|
|
15
14
|
scrollLock.value = false;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (typeof window === "undefined") {
|
|
19
|
-
return;
|
|
15
|
+
if (padding) {
|
|
16
|
+
remove();
|
|
20
17
|
}
|
|
21
|
-
const exclude = new RegExp(/magic-draggable/);
|
|
22
|
-
document.body.style.setProperty(
|
|
23
|
-
"--scrollbar-width",
|
|
24
|
-
`${scrollbarWidth()}px`
|
|
25
|
-
);
|
|
26
|
-
positionFixedElements.value = [
|
|
27
|
-
...document.body.getElementsByTagName("*")
|
|
28
|
-
].filter(
|
|
29
|
-
(x) => getComputedStyle(x, null).getPropertyValue("position") === "fixed" && getComputedStyle(x, null).getPropertyValue("right") === "0px" && !matchClass(x, exclude)
|
|
30
|
-
);
|
|
31
|
-
switch (scrollbarGutterSupport()) {
|
|
32
|
-
case true:
|
|
33
|
-
document.documentElement.style.scrollbarGutter = "stable";
|
|
34
|
-
positionFixedElements.value.forEach((elem) => {
|
|
35
|
-
elem.style.scrollbarGutter = "stable";
|
|
36
|
-
elem.style.overflow = "auto";
|
|
37
|
-
});
|
|
38
|
-
break;
|
|
39
|
-
case false:
|
|
40
|
-
document.body.style.paddingRight = "var(--scrollbar-width)";
|
|
41
|
-
positionFixedElements.value.forEach(
|
|
42
|
-
(elem) => elem.style.paddingRight = "var(--scrollbar-width)"
|
|
43
|
-
);
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function removeScrollLockPadding() {
|
|
48
|
-
document.documentElement.style.scrollbarGutter = "";
|
|
49
|
-
document.body.style.removeProperty("--scrollbar-width");
|
|
50
|
-
document.body.style.paddingRight = "";
|
|
51
|
-
positionFixedElements.value.forEach((elem) => {
|
|
52
|
-
elem.style.paddingRight = "";
|
|
53
|
-
elem.style.scrollbarGutter = "";
|
|
54
|
-
elem.style.overflow = "";
|
|
55
|
-
});
|
|
56
18
|
}
|
|
57
19
|
return {
|
|
58
20
|
lockScroll,
|
|
59
|
-
unlockScroll
|
|
60
|
-
addScrollLockPadding,
|
|
61
|
-
removeScrollLockPadding
|
|
21
|
+
unlockScroll
|
|
62
22
|
};
|
|
63
23
|
}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
ref,
|
|
3
|
+
toRefs,
|
|
4
|
+
computed,
|
|
5
|
+
toValue,
|
|
6
|
+
nextTick,
|
|
7
|
+
onScopeDispose
|
|
8
|
+
} from "vue";
|
|
2
9
|
import { computedWithControl } from "@vueuse/core";
|
|
3
10
|
import { interpolate } from "@maas/vue-equipment/utils";
|
|
4
11
|
import { useMagicEmitter } from "@maas/vue-equipment/plugins/MagicEmitter";
|
|
@@ -203,6 +210,9 @@ export function useDraggableSnap(args) {
|
|
|
203
210
|
}
|
|
204
211
|
activeSnapPoint.value = snapPoint;
|
|
205
212
|
}
|
|
213
|
+
onScopeDispose(() => {
|
|
214
|
+
cancelInterpolation();
|
|
215
|
+
});
|
|
206
216
|
return {
|
|
207
217
|
mappedActiveSnapPoint,
|
|
208
218
|
mappedSnapPoints,
|
|
@@ -2,5 +2,5 @@ import { type MaybeRef } from 'vue';
|
|
|
2
2
|
import type { DraggableState } from '../../types/index.js';
|
|
3
3
|
export declare function useDraggableState(id: MaybeRef<string>): {
|
|
4
4
|
initializeState: () => DraggableState;
|
|
5
|
-
|
|
5
|
+
draggableStateStore: import("vue").Ref<DraggableState[], DraggableState[]>;
|
|
6
6
|
};
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { reactive, toValue, onScopeDispose } from "vue";
|
|
2
|
+
import { createStateStore } from "@maas/vue-equipment/utils";
|
|
3
|
+
const getDraggableStateStore = createStateStore(
|
|
4
|
+
"MagicDraggable",
|
|
5
|
+
() => []
|
|
6
|
+
);
|
|
3
7
|
export function useDraggableState(id) {
|
|
8
|
+
const draggableStateStore = getDraggableStateStore();
|
|
9
|
+
let scopeCounted = false;
|
|
4
10
|
function createState(id2) {
|
|
5
11
|
const state = {
|
|
6
12
|
id: id2,
|
|
13
|
+
refCount: 0,
|
|
7
14
|
dragStart: void 0,
|
|
8
15
|
dragging: false,
|
|
9
16
|
interpolateTo: void 0,
|
|
@@ -26,20 +33,43 @@ export function useDraggableState(id) {
|
|
|
26
33
|
draggableStateStore.value = [...draggableStateStore.value, state];
|
|
27
34
|
return state;
|
|
28
35
|
}
|
|
29
|
-
function initializeState() {
|
|
30
|
-
let state = draggableStateStore.value.find((entry) => {
|
|
31
|
-
return entry.id === id;
|
|
32
|
-
});
|
|
33
|
-
if (!state) state = addState(toValue(id));
|
|
34
|
-
return state;
|
|
35
|
-
}
|
|
36
36
|
function deleteState() {
|
|
37
|
+
const currentId = toValue(id);
|
|
37
38
|
draggableStateStore.value = draggableStateStore.value.filter(
|
|
38
|
-
(x) => x.id !==
|
|
39
|
+
(x) => x.id !== currentId
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
function initializeState() {
|
|
43
|
+
const currentId = toValue(id);
|
|
44
|
+
let state = draggableStateStore.value.find(
|
|
45
|
+
(entry) => entry.id === currentId
|
|
39
46
|
);
|
|
47
|
+
if (!state) {
|
|
48
|
+
state = addState(currentId);
|
|
49
|
+
}
|
|
50
|
+
if (!scopeCounted) {
|
|
51
|
+
state.refCount++;
|
|
52
|
+
scopeCounted = true;
|
|
53
|
+
}
|
|
54
|
+
return state;
|
|
40
55
|
}
|
|
56
|
+
onScopeDispose(() => {
|
|
57
|
+
if (!scopeCounted) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const currentId = toValue(id);
|
|
61
|
+
const state = draggableStateStore.value.find(
|
|
62
|
+
(entry) => entry.id === currentId
|
|
63
|
+
);
|
|
64
|
+
if (state) {
|
|
65
|
+
state.refCount--;
|
|
66
|
+
if (state.refCount <= 0) {
|
|
67
|
+
deleteState();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
});
|
|
41
71
|
return {
|
|
42
72
|
initializeState,
|
|
43
|
-
|
|
73
|
+
draggableStateStore
|
|
44
74
|
};
|
|
45
75
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { toValue } from "vue";
|
|
2
2
|
import { useMagicEmitter } from "@maas/vue-equipment/plugins/MagicEmitter";
|
|
3
3
|
export function useMagicDraggable(id) {
|
|
4
|
+
const emitter = useMagicEmitter();
|
|
4
5
|
function snapTo(snapPoint, duration) {
|
|
5
|
-
|
|
6
|
+
emitter.emit("snapTo", {
|
|
6
7
|
id: toValue(id),
|
|
7
8
|
snapPoint,
|
|
8
9
|
duration
|
|
@@ -14,11 +14,11 @@ interface MagicDrawerProps {
|
|
|
14
14
|
id: MaybeRef<string>;
|
|
15
15
|
options?: MagicDrawerOptions;
|
|
16
16
|
}
|
|
17
|
-
declare var __VLS_11: {},
|
|
17
|
+
declare var __VLS_11: {}, __VLS_38: {};
|
|
18
18
|
type __VLS_Slots = {} & {
|
|
19
19
|
backdrop?: (props: typeof __VLS_11) => any;
|
|
20
20
|
} & {
|
|
21
|
-
default?: (props: typeof
|
|
21
|
+
default?: (props: typeof __VLS_38) => any;
|
|
22
22
|
};
|
|
23
23
|
declare const __VLS_base: import("vue").DefineComponent<MagicDrawerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicDrawerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
24
24
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
class="magic-drawer"
|
|
10
10
|
:data-id="mappedId"
|
|
11
11
|
:data-dragging="dragging"
|
|
12
|
+
:data-dragged="hasDragged"
|
|
12
13
|
:data-wheeling="wheeling"
|
|
13
14
|
:data-disabled="disabled"
|
|
14
15
|
:data-position="mappedOptions.position"
|
|
@@ -45,6 +46,7 @@
|
|
|
45
46
|
class="magic-drawer__drag"
|
|
46
47
|
:style="style"
|
|
47
48
|
@pointerdown="guardedPointerdown"
|
|
49
|
+
@touchstart="guardedTouchstart"
|
|
48
50
|
@click="guardedClick"
|
|
49
51
|
>
|
|
50
52
|
<slot />
|
|
@@ -110,14 +112,7 @@ const mappedId = toValue(id);
|
|
|
110
112
|
const elRef = useTemplateRef("el");
|
|
111
113
|
const drawerRef = useTemplateRef("drawer");
|
|
112
114
|
const wrapperRef = useTemplateRef("wrapper");
|
|
113
|
-
const {
|
|
114
|
-
trapFocus,
|
|
115
|
-
releaseFocus,
|
|
116
|
-
lockScroll,
|
|
117
|
-
unlockScroll,
|
|
118
|
-
addScrollLockPadding,
|
|
119
|
-
removeScrollLockPadding
|
|
120
|
-
} = useDrawerDOM({
|
|
115
|
+
const { trapFocus, releaseFocus, unlockScroll } = useDrawerDOM({
|
|
121
116
|
focusTarget: drawerRef,
|
|
122
117
|
focusTrap: mappedOptions.focusTrap
|
|
123
118
|
});
|
|
@@ -142,7 +137,7 @@ const disabled = computed(() => {
|
|
|
142
137
|
return options.disabled;
|
|
143
138
|
}
|
|
144
139
|
});
|
|
145
|
-
const { onPointerdown, onClick, style, hasDragged } = useDrawerDrag({
|
|
140
|
+
const { onPointerdown, onTouchstart, onClick, style, hasDragged } = useDrawerDrag({
|
|
146
141
|
id,
|
|
147
142
|
elRef,
|
|
148
143
|
wrapperRef,
|
|
@@ -161,7 +156,7 @@ const { initializeWheelListener, destroyWheelListener } = useDrawerWheel({
|
|
|
161
156
|
position,
|
|
162
157
|
disabled
|
|
163
158
|
});
|
|
164
|
-
const { initializeState
|
|
159
|
+
const { initializeState } = useDrawerState(id);
|
|
165
160
|
const state = initializeState();
|
|
166
161
|
const { dragging, wheeling } = toRefs(state);
|
|
167
162
|
const innerActive = shallowRef(false);
|
|
@@ -177,10 +172,6 @@ const {
|
|
|
177
172
|
} = useDrawerCallback({
|
|
178
173
|
id,
|
|
179
174
|
mappedOptions,
|
|
180
|
-
addScrollLockPadding,
|
|
181
|
-
removeScrollLockPadding,
|
|
182
|
-
lockScroll,
|
|
183
|
-
unlockScroll,
|
|
184
175
|
trapFocus,
|
|
185
176
|
releaseFocus,
|
|
186
177
|
wrapperActive,
|
|
@@ -237,6 +228,11 @@ function guardedPointerdown(event) {
|
|
|
237
228
|
onPointerdown(event);
|
|
238
229
|
}
|
|
239
230
|
}
|
|
231
|
+
function guardedTouchstart(event) {
|
|
232
|
+
if (!disabled.value) {
|
|
233
|
+
onTouchstart(event);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
240
236
|
function guardedClick(event) {
|
|
241
237
|
if (!disabled.value) {
|
|
242
238
|
onClick(event);
|
|
@@ -283,10 +279,9 @@ onBeforeUnmount(() => {
|
|
|
283
279
|
});
|
|
284
280
|
onUnmounted(() => {
|
|
285
281
|
if (mappedOptions.scrollLock) {
|
|
286
|
-
unlockScroll(
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
}
|
|
282
|
+
unlockScroll(
|
|
283
|
+
typeof mappedOptions.scrollLock === "object" && mappedOptions.scrollLock.padding
|
|
284
|
+
);
|
|
290
285
|
}
|
|
291
286
|
if (mappedOptions.focusTrap) {
|
|
292
287
|
releaseFocus();
|
|
@@ -294,7 +289,6 @@ onUnmounted(() => {
|
|
|
294
289
|
if (!mappedOptions.preventZoom) {
|
|
295
290
|
resetMetaViewport();
|
|
296
291
|
}
|
|
297
|
-
deleteState();
|
|
298
292
|
});
|
|
299
293
|
</script>
|
|
300
294
|
|
|
@@ -458,6 +452,8 @@ dialog.magic-drawer__drag::backdrop {
|
|
|
458
452
|
|
|
459
453
|
.magic-drawer__drag > * {
|
|
460
454
|
padding: var(--magic-drawer-padding);
|
|
455
|
+
-webkit-overflow-scrolling: touch;
|
|
456
|
+
scroll-behavior: smooth;
|
|
461
457
|
}
|
|
462
458
|
|
|
463
459
|
.magic-drawer__overlay {
|
|
@@ -14,11 +14,11 @@ interface MagicDrawerProps {
|
|
|
14
14
|
id: MaybeRef<string>;
|
|
15
15
|
options?: MagicDrawerOptions;
|
|
16
16
|
}
|
|
17
|
-
declare var __VLS_11: {},
|
|
17
|
+
declare var __VLS_11: {}, __VLS_38: {};
|
|
18
18
|
type __VLS_Slots = {} & {
|
|
19
19
|
backdrop?: (props: typeof __VLS_11) => any;
|
|
20
20
|
} & {
|
|
21
|
-
default?: (props: typeof
|
|
21
|
+
default?: (props: typeof __VLS_38) => any;
|
|
22
22
|
};
|
|
23
23
|
declare const __VLS_base: import("vue").DefineComponent<MagicDrawerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MagicDrawerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
24
24
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -3,10 +3,6 @@ import type { MagicDrawerOptions } from '../../types/index.js';
|
|
|
3
3
|
type UseDrawerCallbackArgs = {
|
|
4
4
|
id: MaybeRef<string>;
|
|
5
5
|
mappedOptions: MagicDrawerOptions;
|
|
6
|
-
addScrollLockPadding: () => void;
|
|
7
|
-
removeScrollLockPadding: () => void;
|
|
8
|
-
lockScroll: () => void;
|
|
9
|
-
unlockScroll: () => void;
|
|
10
6
|
trapFocus: () => void;
|
|
11
7
|
releaseFocus: () => void;
|
|
12
8
|
wrapperActive: Ref<boolean>;
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
import { toValue, nextTick } from "vue";
|
|
2
2
|
import { useMetaViewport } from "@maas/vue-equipment/composables/useMetaViewport";
|
|
3
3
|
import { useMagicEmitter } from "@maas/vue-equipment/plugins/MagicEmitter";
|
|
4
|
+
import { useDrawerDOM } from "./useDrawerDOM.mjs";
|
|
4
5
|
export function useDrawerCallback(args) {
|
|
5
6
|
const {
|
|
6
7
|
id,
|
|
7
8
|
mappedOptions,
|
|
8
|
-
addScrollLockPadding,
|
|
9
|
-
removeScrollLockPadding,
|
|
10
|
-
lockScroll,
|
|
11
|
-
unlockScroll,
|
|
12
9
|
trapFocus,
|
|
13
10
|
releaseFocus,
|
|
14
11
|
wrapperActive,
|
|
15
12
|
wasActive
|
|
16
13
|
} = args;
|
|
14
|
+
const { lockScroll, unlockScroll } = useDrawerDOM();
|
|
17
15
|
const { setMetaViewport, resetMetaViewport } = useMetaViewport();
|
|
18
16
|
const emitter = useMagicEmitter();
|
|
19
17
|
function onBeforeEnter() {
|
|
20
18
|
emitter.emit("beforeEnter", toValue(id));
|
|
21
19
|
if (mappedOptions.scrollLock) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
lockScroll();
|
|
20
|
+
lockScroll(
|
|
21
|
+
typeof mappedOptions.scrollLock === "object" && mappedOptions.scrollLock.padding
|
|
22
|
+
);
|
|
26
23
|
}
|
|
27
24
|
if (mappedOptions.preventZoom) {
|
|
28
25
|
setMetaViewport();
|
|
@@ -48,10 +45,9 @@ export function useDrawerCallback(args) {
|
|
|
48
45
|
function onAfterLeave() {
|
|
49
46
|
emitter.emit("afterLeave", toValue(id));
|
|
50
47
|
if (mappedOptions.scrollLock) {
|
|
51
|
-
unlockScroll(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
48
|
+
unlockScroll(
|
|
49
|
+
typeof mappedOptions.scrollLock === "object" && mappedOptions.scrollLock.padding
|
|
50
|
+
);
|
|
55
51
|
}
|
|
56
52
|
if (mappedOptions.focusTrap) {
|
|
57
53
|
releaseFocus();
|
|
@@ -6,8 +6,6 @@ export type UseDrawerDOMArgs = Pick<MagicDrawerOptions, 'scrollLock' | 'focusTra
|
|
|
6
6
|
export declare function useDrawerDOM(args?: UseDrawerDOMArgs): {
|
|
7
7
|
trapFocus: () => void;
|
|
8
8
|
releaseFocus: () => void;
|
|
9
|
-
lockScroll: () => void;
|
|
10
|
-
unlockScroll: () => void;
|
|
11
|
-
addScrollLockPadding: () => void;
|
|
12
|
-
removeScrollLockPadding: () => void;
|
|
9
|
+
lockScroll: (padding?: boolean) => void;
|
|
10
|
+
unlockScroll: (padding?: boolean) => void;
|
|
13
11
|
};
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { shallowRef } from "vue";
|
|
2
2
|
import { defu } from "defu";
|
|
3
3
|
import { useScrollLock } from "@vueuse/core";
|
|
4
4
|
import { useFocusTrap } from "@vueuse/integrations/useFocusTrap";
|
|
5
|
-
import {
|
|
6
|
-
matchClass,
|
|
7
|
-
scrollbarGutterSupport,
|
|
8
|
-
scrollbarWidth
|
|
9
|
-
} from "@maas/vue-equipment/utils";
|
|
5
|
+
import { useScrollLockPadding } from "@maas/vue-equipment/composables/useScrollLockPadding";
|
|
10
6
|
const defaultOptions = {
|
|
11
7
|
focusTrap: false,
|
|
12
|
-
focusTarget: void 0
|
|
13
|
-
scrollLock: true
|
|
8
|
+
focusTarget: void 0
|
|
14
9
|
};
|
|
15
10
|
const scrollLock = typeof window !== "undefined" ? useScrollLock(document?.documentElement) : shallowRef(false);
|
|
11
|
+
const { add, remove } = useScrollLockPadding({
|
|
12
|
+
exclude: /magic-drawer(__backdrop)?/
|
|
13
|
+
});
|
|
16
14
|
export function useDrawerDOM(args) {
|
|
17
|
-
const positionFixedElements = ref([]);
|
|
18
15
|
const mappedOptions = defu(args, defaultOptions);
|
|
19
16
|
const focusTrap = mappedOptions.focusTarget ? typeof mappedOptions.focusTrap === "boolean" ? useFocusTrap(mappedOptions.focusTarget) : useFocusTrap(mappedOptions.focusTarget, mappedOptions.focusTrap) : void 0;
|
|
20
17
|
function trapFocus() {
|
|
@@ -27,62 +24,22 @@ export function useDrawerDOM(args) {
|
|
|
27
24
|
focusTrap.deactivate();
|
|
28
25
|
}
|
|
29
26
|
}
|
|
30
|
-
function lockScroll() {
|
|
31
|
-
if (
|
|
32
|
-
|
|
27
|
+
function lockScroll(padding) {
|
|
28
|
+
if (padding) {
|
|
29
|
+
add();
|
|
33
30
|
}
|
|
31
|
+
scrollLock.value = true;
|
|
34
32
|
}
|
|
35
|
-
function unlockScroll() {
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
function unlockScroll(padding) {
|
|
34
|
+
scrollLock.value = false;
|
|
35
|
+
if (padding) {
|
|
36
|
+
remove();
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
|
-
function addScrollLockPadding() {
|
|
41
|
-
if (typeof window === "undefined") {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
const exclude = new RegExp(/magic-drawer(__backdrop)?/);
|
|
45
|
-
document.body.style.setProperty(
|
|
46
|
-
"--scrollbar-width",
|
|
47
|
-
`${scrollbarWidth()}px`
|
|
48
|
-
);
|
|
49
|
-
positionFixedElements.value = [
|
|
50
|
-
...document.body.getElementsByTagName("*")
|
|
51
|
-
].filter(
|
|
52
|
-
(x) => getComputedStyle(x, null).getPropertyValue("position") === "fixed" && getComputedStyle(x, null).getPropertyValue("right") === "0px" && !matchClass(x, exclude)
|
|
53
|
-
);
|
|
54
|
-
switch (scrollbarGutterSupport()) {
|
|
55
|
-
case true:
|
|
56
|
-
document.documentElement.style.scrollbarGutter = "stable";
|
|
57
|
-
positionFixedElements.value.forEach((elem) => {
|
|
58
|
-
elem.style.scrollbarGutter = "stable";
|
|
59
|
-
elem.style.overflow = "auto";
|
|
60
|
-
});
|
|
61
|
-
break;
|
|
62
|
-
case false:
|
|
63
|
-
document.body.style.paddingRight = "var(--scrollbar-width)";
|
|
64
|
-
positionFixedElements.value.forEach(
|
|
65
|
-
(elem) => elem.style.paddingRight = "var(--scrollbar-width)"
|
|
66
|
-
);
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
function removeScrollLockPadding() {
|
|
71
|
-
document.documentElement.style.scrollbarGutter = "";
|
|
72
|
-
document.body.style.removeProperty("--scrollbar-width");
|
|
73
|
-
document.body.style.paddingRight = "";
|
|
74
|
-
positionFixedElements.value.forEach((elem) => {
|
|
75
|
-
elem.style.paddingRight = "";
|
|
76
|
-
elem.style.scrollbarGutter = "";
|
|
77
|
-
elem.style.overflow = "";
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
39
|
return {
|
|
81
40
|
trapFocus,
|
|
82
41
|
releaseFocus,
|
|
83
42
|
lockScroll,
|
|
84
|
-
unlockScroll
|
|
85
|
-
addScrollLockPadding,
|
|
86
|
-
removeScrollLockPadding
|
|
43
|
+
unlockScroll
|
|
87
44
|
};
|
|
88
45
|
}
|
|
@@ -15,6 +15,8 @@ type UseDrawerDragArgs = {
|
|
|
15
15
|
};
|
|
16
16
|
export declare function useDrawerDrag(args: UseDrawerDragArgs): {
|
|
17
17
|
onPointerdown: (e: PointerEvent) => void;
|
|
18
|
+
onTouchstart: (e: TouchEvent) => void;
|
|
19
|
+
onTouchmove: (e: TouchEvent) => void;
|
|
18
20
|
onClick: (e: MouseEvent) => void;
|
|
19
21
|
style: import("vue").ComputedRef<string>;
|
|
20
22
|
hasDragged: import("vue").ComputedRef<boolean>;
|