@maas/vue-equipment 0.26.5 → 0.27.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.
- package/dist/composables/index.d.mts +19 -18
- package/dist/composables/index.d.ts +19 -18
- package/dist/composables/index.js +20 -18
- package/dist/composables/index.js.map +1 -1
- package/dist/composables/index.mjs +38 -19
- package/dist/composables/index.mjs.map +1 -1
- package/dist/nuxt/module.json +1 -1
- package/dist/nuxt/module.mjs +9 -2
- package/dist/plugins/MagicCommand/nuxt.d.ts +2 -0
- package/dist/plugins/MagicCommand/src/components/MagicCommandBody.vue +4 -4
- package/dist/plugins/MagicCommand/src/components/MagicCommandBody.vue.d.ts +1 -0
- package/dist/plugins/MagicCookie/nuxt.d.ts +2 -0
- package/dist/plugins/MagicDraggable/index.d.ts +7 -0
- package/dist/plugins/MagicDraggable/index.mjs +8 -0
- package/dist/plugins/MagicDraggable/nuxt.d.ts +2 -0
- package/dist/plugins/MagicDraggable/nuxt.mjs +23 -0
- package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue +108 -0
- package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue.d.ts +41 -0
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.d.ts +18 -0
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.mjs +316 -0
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.d.ts +34 -0
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.mjs +143 -0
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.d.ts +108 -0
- package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.mjs +46 -0
- package/dist/plugins/MagicDraggable/src/composables/useDraggableApi.d.ts +1 -0
- package/dist/plugins/MagicDraggable/src/composables/useDraggableApi.mjs +2 -0
- package/dist/plugins/MagicDraggable/src/types/index.d.ts +48 -0
- package/dist/plugins/MagicDraggable/src/types/index.mjs +0 -0
- package/dist/plugins/MagicDraggable/src/utils/defaultOptions.d.ts +5 -0
- package/dist/plugins/MagicDraggable/src/utils/defaultOptions.mjs +21 -0
- package/dist/plugins/MagicDrawer/nuxt.d.ts +2 -0
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +30 -19
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue.d.ts +1 -1
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.d.ts +4 -2
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +15 -14
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.d.ts +4 -2
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.mjs +13 -11
- package/dist/plugins/MagicDrawer/src/types/index.d.ts +21 -15
- package/dist/plugins/MagicDrawer/src/utils/defaultOptions.d.ts +4 -1
- package/dist/plugins/MagicDrawer/src/utils/defaultOptions.mjs +17 -14
- package/dist/plugins/MagicMarquee/nuxt.d.ts +2 -0
- package/dist/plugins/MagicModal/nuxt.d.ts +2 -0
- package/dist/plugins/MagicModal/src/components/MagicModal.vue +8 -5
- package/dist/plugins/MagicModal/src/types/index.d.ts +8 -5
- package/dist/plugins/MagicModal/src/utils/defaultOptions.mjs +6 -5
- package/dist/plugins/MagicNoise/nuxt.d.ts +2 -0
- package/dist/plugins/MagicPlayer/nuxt.d.ts +2 -0
- package/dist/plugins/MagicScroll/nuxt.d.ts +2 -0
- package/dist/plugins/MagicToast/nuxt.d.ts +2 -0
- package/dist/plugins/index.d.ts +1 -0
- package/dist/plugins/index.mjs +1 -0
- package/dist/utils/index.d.mts +16 -1
- package/dist/utils/index.d.ts +16 -1
- package/dist/utils/index.js +72 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +58 -0
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +16 -4
- package/dist/plugins/MagicCommand/demo/DefaultView.vue +0 -84
- package/dist/plugins/MagicCommand/demo/DefaultView.vue.d.ts +0 -16
- package/dist/plugins/MagicCommand/demo/DemoItem.vue +0 -18
- package/dist/plugins/MagicCommand/demo/DemoItem.vue.d.ts +0 -21
- package/dist/plugins/MagicCommand/demo/ProjectView.vue +0 -63
- package/dist/plugins/MagicCommand/demo/ProjectView.vue.d.ts +0 -14
- package/dist/plugins/MagicToast/demo/DemoToast.vue +0 -22
- package/dist/plugins/MagicToast/demo/DemoToast.vue.d.ts +0 -18
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type MaybeRef } from 'vue';
|
|
2
|
+
import type { DraggableState } from '../../types/index.js';
|
|
3
|
+
export declare function useDraggableState(id: MaybeRef<string>): {
|
|
4
|
+
addState: (id: string) => {
|
|
5
|
+
id: string;
|
|
6
|
+
dragStart: {
|
|
7
|
+
toString: () => string;
|
|
8
|
+
toDateString: () => string;
|
|
9
|
+
toTimeString: () => string;
|
|
10
|
+
toLocaleString: {
|
|
11
|
+
(): string;
|
|
12
|
+
(locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string;
|
|
13
|
+
(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string;
|
|
14
|
+
};
|
|
15
|
+
toLocaleDateString: {
|
|
16
|
+
(): string;
|
|
17
|
+
(locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string;
|
|
18
|
+
(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string;
|
|
19
|
+
};
|
|
20
|
+
toLocaleTimeString: {
|
|
21
|
+
(): string;
|
|
22
|
+
(locales?: string | string[] | undefined, options?: Intl.DateTimeFormatOptions | undefined): string;
|
|
23
|
+
(locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions | undefined): string;
|
|
24
|
+
};
|
|
25
|
+
valueOf: () => number;
|
|
26
|
+
getTime: () => number;
|
|
27
|
+
getFullYear: () => number;
|
|
28
|
+
getUTCFullYear: () => number;
|
|
29
|
+
getMonth: () => number;
|
|
30
|
+
getUTCMonth: () => number;
|
|
31
|
+
getDate: () => number;
|
|
32
|
+
getUTCDate: () => number;
|
|
33
|
+
getDay: () => number;
|
|
34
|
+
getUTCDay: () => number;
|
|
35
|
+
getHours: () => number;
|
|
36
|
+
getUTCHours: () => number;
|
|
37
|
+
getMinutes: () => number;
|
|
38
|
+
getUTCMinutes: () => number;
|
|
39
|
+
getSeconds: () => number;
|
|
40
|
+
getUTCSeconds: () => number;
|
|
41
|
+
getMilliseconds: () => number;
|
|
42
|
+
getUTCMilliseconds: () => number;
|
|
43
|
+
getTimezoneOffset: () => number;
|
|
44
|
+
setTime: (time: number) => number;
|
|
45
|
+
setMilliseconds: (ms: number) => number;
|
|
46
|
+
setUTCMilliseconds: (ms: number) => number;
|
|
47
|
+
setSeconds: (sec: number, ms?: number | undefined) => number;
|
|
48
|
+
setUTCSeconds: (sec: number, ms?: number | undefined) => number;
|
|
49
|
+
setMinutes: (min: number, sec?: number | undefined, ms?: number | undefined) => number;
|
|
50
|
+
setUTCMinutes: (min: number, sec?: number | undefined, ms?: number | undefined) => number;
|
|
51
|
+
setHours: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number;
|
|
52
|
+
setUTCHours: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number;
|
|
53
|
+
setDate: (date: number) => number;
|
|
54
|
+
setUTCDate: (date: number) => number;
|
|
55
|
+
setMonth: (month: number, date?: number | undefined) => number;
|
|
56
|
+
setUTCMonth: (month: number, date?: number | undefined) => number;
|
|
57
|
+
setFullYear: (year: number, month?: number | undefined, date?: number | undefined) => number;
|
|
58
|
+
setUTCFullYear: (year: number, month?: number | undefined, date?: number | undefined) => number;
|
|
59
|
+
toUTCString: () => string;
|
|
60
|
+
toISOString: () => string;
|
|
61
|
+
toJSON: (key?: any) => string;
|
|
62
|
+
getVarDate: () => VarDate;
|
|
63
|
+
[Symbol.toPrimitive]: {
|
|
64
|
+
(hint: "default"): string;
|
|
65
|
+
(hint: "string"): string;
|
|
66
|
+
(hint: "number"): number;
|
|
67
|
+
(hint: string): string | number;
|
|
68
|
+
};
|
|
69
|
+
} | undefined;
|
|
70
|
+
dragging: boolean;
|
|
71
|
+
interpolateTo: {
|
|
72
|
+
x: number;
|
|
73
|
+
y: number;
|
|
74
|
+
} | undefined;
|
|
75
|
+
originX: number;
|
|
76
|
+
originY: number;
|
|
77
|
+
lastDraggedX: number;
|
|
78
|
+
lastDraggedY: number;
|
|
79
|
+
intermediateDraggedX: number;
|
|
80
|
+
intermediateDraggedY: number;
|
|
81
|
+
draggedX: number;
|
|
82
|
+
draggedY: number;
|
|
83
|
+
elRect: {
|
|
84
|
+
height: number;
|
|
85
|
+
width: number;
|
|
86
|
+
x: number;
|
|
87
|
+
y: number;
|
|
88
|
+
readonly bottom: number;
|
|
89
|
+
readonly left: number;
|
|
90
|
+
readonly right: number;
|
|
91
|
+
readonly top: number;
|
|
92
|
+
toJSON: () => any;
|
|
93
|
+
} | undefined;
|
|
94
|
+
wrapperRect: {
|
|
95
|
+
height: number;
|
|
96
|
+
width: number;
|
|
97
|
+
x: number;
|
|
98
|
+
y: number;
|
|
99
|
+
readonly bottom: number;
|
|
100
|
+
readonly left: number;
|
|
101
|
+
readonly right: number;
|
|
102
|
+
readonly top: number;
|
|
103
|
+
toJSON: () => any;
|
|
104
|
+
} | undefined;
|
|
105
|
+
};
|
|
106
|
+
findState: () => import("vue").ToRefs<DraggableState>;
|
|
107
|
+
deleteState: () => void;
|
|
108
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ref, reactive, toRefs, toValue } from "vue";
|
|
2
|
+
const drawerStateStore = ref([]);
|
|
3
|
+
export function useDraggableState(id) {
|
|
4
|
+
function createState(id2) {
|
|
5
|
+
const state = {
|
|
6
|
+
id: id2,
|
|
7
|
+
dragStart: void 0,
|
|
8
|
+
dragging: false,
|
|
9
|
+
interpolateTo: void 0,
|
|
10
|
+
originX: 0,
|
|
11
|
+
originY: 0,
|
|
12
|
+
lastDraggedX: 0,
|
|
13
|
+
lastDraggedY: 0,
|
|
14
|
+
intermediateDraggedX: 0,
|
|
15
|
+
intermediateDraggedY: 0,
|
|
16
|
+
draggedX: 0,
|
|
17
|
+
draggedY: 0,
|
|
18
|
+
elRect: void 0,
|
|
19
|
+
wrapperRect: void 0
|
|
20
|
+
};
|
|
21
|
+
return reactive(state);
|
|
22
|
+
}
|
|
23
|
+
function addState(id2) {
|
|
24
|
+
const instance = createState(id2);
|
|
25
|
+
drawerStateStore.value = [...drawerStateStore.value, instance];
|
|
26
|
+
return instance;
|
|
27
|
+
}
|
|
28
|
+
function findState() {
|
|
29
|
+
let instance = drawerStateStore.value.find((instance2) => {
|
|
30
|
+
return instance2.id === id;
|
|
31
|
+
});
|
|
32
|
+
if (!instance)
|
|
33
|
+
instance = addState(toValue(id));
|
|
34
|
+
return toRefs(instance);
|
|
35
|
+
}
|
|
36
|
+
function deleteState() {
|
|
37
|
+
drawerStateStore.value = drawerStateStore.value.filter(
|
|
38
|
+
(x) => x.id !== id
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
addState,
|
|
43
|
+
findState,
|
|
44
|
+
deleteState
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useDraggableApi(): void;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
type Position = 'top-left' | 'top-center' | 'top-right' | 'center-left' | 'center' | 'center-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
2
|
+
export type Coordinates = {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
};
|
|
6
|
+
export type SnapPoint = [
|
|
7
|
+
Position,
|
|
8
|
+
offset?: {
|
|
9
|
+
x?: number;
|
|
10
|
+
y?: number;
|
|
11
|
+
}
|
|
12
|
+
] | Position;
|
|
13
|
+
export interface DraggableOptions {
|
|
14
|
+
tag?: 'dialog' | 'div';
|
|
15
|
+
threshold?: {
|
|
16
|
+
distance?: number;
|
|
17
|
+
momentum?: number;
|
|
18
|
+
idle?: number;
|
|
19
|
+
};
|
|
20
|
+
animation?: {
|
|
21
|
+
snap?: {
|
|
22
|
+
duration?: number;
|
|
23
|
+
easing?: (t: number) => number;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
initial?: {
|
|
27
|
+
snapPoint?: SnapPoint;
|
|
28
|
+
};
|
|
29
|
+
snapPoints: SnapPoint[];
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface DraggableState {
|
|
33
|
+
id: string;
|
|
34
|
+
dragStart: Date | undefined;
|
|
35
|
+
dragging: boolean;
|
|
36
|
+
interpolateTo: Coordinates | undefined;
|
|
37
|
+
originX: number;
|
|
38
|
+
originY: number;
|
|
39
|
+
lastDraggedX: number;
|
|
40
|
+
lastDraggedY: number;
|
|
41
|
+
intermediateDraggedX: number;
|
|
42
|
+
intermediateDraggedY: number;
|
|
43
|
+
draggedX: number;
|
|
44
|
+
draggedY: number;
|
|
45
|
+
elRect: DOMRect | undefined;
|
|
46
|
+
wrapperRect: DOMRect | undefined;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { easeOutBack } from "@maas/vue-equipment/utils";
|
|
2
|
+
const defaultOptions = {
|
|
3
|
+
tag: "div",
|
|
4
|
+
threshold: {
|
|
5
|
+
distance: 128,
|
|
6
|
+
momentum: 1.5,
|
|
7
|
+
idle: 250
|
|
8
|
+
},
|
|
9
|
+
animation: {
|
|
10
|
+
snap: {
|
|
11
|
+
duration: 500,
|
|
12
|
+
easing: easeOutBack
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
initial: {
|
|
16
|
+
snapPoint: "center"
|
|
17
|
+
},
|
|
18
|
+
snapPoints: [],
|
|
19
|
+
disabled: false
|
|
20
|
+
};
|
|
21
|
+
export { defaultOptions };
|
|
@@ -92,7 +92,7 @@ import { useDrawerDrag } from '../composables/private/useDrawerDrag'
|
|
|
92
92
|
import { useDrawerWheel } from '../composables/private/useDrawerWheel'
|
|
93
93
|
import { useDrawerState } from '../composables/private/useDrawerState'
|
|
94
94
|
|
|
95
|
-
import type { DrawerOptions } from '
|
|
95
|
+
import type { DrawerOptions } from '../types/index'
|
|
96
96
|
|
|
97
97
|
import '@maas/vue-equipment/utils/css/animations/fade-in.css'
|
|
98
98
|
import '@maas/vue-equipment/utils/css/animations/fade-out.css'
|
|
@@ -106,8 +106,9 @@ import '@maas/vue-equipment/utils/css/animations/slide-ttb-out.css'
|
|
|
106
106
|
import '@maas/vue-equipment/utils/css/animations/slide-btt-out.css'
|
|
107
107
|
|
|
108
108
|
// Prevent deep merge of certain options
|
|
109
|
+
// In this case, don’t merge the `close` and `points` options
|
|
109
110
|
const customDefu = createDefu((obj, key, value) => {
|
|
110
|
-
if (key === '
|
|
111
|
+
if (key === 'close' || key === 'points') {
|
|
111
112
|
obj[key] = value
|
|
112
113
|
return true
|
|
113
114
|
}
|
|
@@ -140,7 +141,14 @@ const drawerApi = useDrawerApi(props.id, {
|
|
|
140
141
|
})
|
|
141
142
|
|
|
142
143
|
const overshoot = ref(0)
|
|
143
|
-
const {
|
|
144
|
+
const {
|
|
145
|
+
position,
|
|
146
|
+
snapPoints,
|
|
147
|
+
threshold,
|
|
148
|
+
animation,
|
|
149
|
+
preventDragClose,
|
|
150
|
+
initial,
|
|
151
|
+
} = mappedOptions
|
|
144
152
|
|
|
145
153
|
const {
|
|
146
154
|
isActive,
|
|
@@ -171,10 +179,12 @@ const { onPointerdown, onClick, style, hasDragged } = useDrawerDrag({
|
|
|
171
179
|
elRef,
|
|
172
180
|
wrapperRef,
|
|
173
181
|
position,
|
|
182
|
+
snapPoints,
|
|
174
183
|
threshold,
|
|
175
184
|
overshoot,
|
|
176
|
-
|
|
177
|
-
|
|
185
|
+
animation,
|
|
186
|
+
initial,
|
|
187
|
+
preventDragClose,
|
|
178
188
|
close,
|
|
179
189
|
})
|
|
180
190
|
|
|
@@ -221,8 +231,8 @@ const { resetMetaViewport } = useMetaViewport()
|
|
|
221
231
|
// To achieve this, the transition names are set to undefined
|
|
222
232
|
const preventTransition = computed(() => {
|
|
223
233
|
return (
|
|
224
|
-
mappedOptions.
|
|
225
|
-
!mappedOptions.
|
|
234
|
+
mappedOptions.initial.open &&
|
|
235
|
+
!mappedOptions.initial.transition &&
|
|
226
236
|
!wasActive.value
|
|
227
237
|
)
|
|
228
238
|
})
|
|
@@ -230,13 +240,11 @@ const preventTransition = computed(() => {
|
|
|
230
240
|
const backdropTransition = computed(() => {
|
|
231
241
|
return preventTransition.value
|
|
232
242
|
? undefined
|
|
233
|
-
: mappedOptions.
|
|
243
|
+
: mappedOptions.transition?.backdrop
|
|
234
244
|
})
|
|
235
245
|
|
|
236
246
|
const contentTransition = computed(() => {
|
|
237
|
-
return preventTransition.value
|
|
238
|
-
? undefined
|
|
239
|
-
: mappedOptions.transitions?.content
|
|
247
|
+
return preventTransition.value ? undefined : mappedOptions.transition?.content
|
|
240
248
|
})
|
|
241
249
|
|
|
242
250
|
// Private functions
|
|
@@ -270,14 +278,14 @@ async function onOpen() {
|
|
|
270
278
|
await nextTick()
|
|
271
279
|
innerActive.value = true
|
|
272
280
|
await nextTick()
|
|
273
|
-
if (mappedOptions.
|
|
281
|
+
if (mappedOptions.enableMousewheel) {
|
|
274
282
|
initializeWheelListener()
|
|
275
283
|
}
|
|
276
284
|
}
|
|
277
285
|
|
|
278
286
|
function onClose() {
|
|
279
287
|
innerActive.value = false
|
|
280
|
-
if (mappedOptions.
|
|
288
|
+
if (mappedOptions.enableMousewheel) {
|
|
281
289
|
destroyWheelListener()
|
|
282
290
|
}
|
|
283
291
|
}
|
|
@@ -296,7 +304,7 @@ function guardedClick(event: PointerEvent) {
|
|
|
296
304
|
}
|
|
297
305
|
|
|
298
306
|
function guardedClose() {
|
|
299
|
-
if (
|
|
307
|
+
if (!disabled.value) {
|
|
300
308
|
close()
|
|
301
309
|
}
|
|
302
310
|
}
|
|
@@ -310,8 +318,8 @@ function saveOvershoot() {
|
|
|
310
318
|
}
|
|
311
319
|
|
|
312
320
|
// Lifecycle hooks and listeners
|
|
313
|
-
if (mappedOptions.
|
|
314
|
-
for (const key of mappedOptions.
|
|
321
|
+
if (mappedOptions.keyListener.close) {
|
|
322
|
+
for (const key of mappedOptions.keyListener.close) {
|
|
315
323
|
onKeyStroke(key, (e) => {
|
|
316
324
|
close()
|
|
317
325
|
e.preventDefault()
|
|
@@ -334,7 +342,7 @@ watch(innerActive, () => {
|
|
|
334
342
|
|
|
335
343
|
onBeforeMount(async () => {
|
|
336
344
|
// Force open
|
|
337
|
-
if (mappedOptions.
|
|
345
|
+
if (mappedOptions.initial.open) {
|
|
338
346
|
open()
|
|
339
347
|
}
|
|
340
348
|
})
|
|
@@ -351,7 +359,10 @@ onBeforeUnmount(() => {
|
|
|
351
359
|
onUnmounted(() => {
|
|
352
360
|
if (mappedOptions.scrollLock) {
|
|
353
361
|
unlockScroll()
|
|
354
|
-
if (
|
|
362
|
+
if (
|
|
363
|
+
typeof mappedOptions.scrollLock === 'object' &&
|
|
364
|
+
mappedOptions.scrollLock.padding
|
|
365
|
+
) {
|
|
355
366
|
removeScrollLockPadding()
|
|
356
367
|
}
|
|
357
368
|
}
|
|
@@ -360,7 +371,7 @@ onUnmounted(() => {
|
|
|
360
371
|
releaseFocus()
|
|
361
372
|
}
|
|
362
373
|
|
|
363
|
-
if (mappedOptions.preventZoom) {
|
|
374
|
+
if (!mappedOptions.preventZoom) {
|
|
364
375
|
resetMetaViewport()
|
|
365
376
|
}
|
|
366
377
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Component, type MaybeRef } from 'vue';
|
|
2
|
-
import type { DrawerOptions } from '
|
|
2
|
+
import type { DrawerOptions } from '../types/index';
|
|
3
3
|
import '@maas/vue-equipment/utils/css/animations/fade-in.css';
|
|
4
4
|
import '@maas/vue-equipment/utils/css/animations/fade-out.css';
|
|
5
5
|
import '@maas/vue-equipment/utils/css/animations/slide-ltr-in.css';
|
|
@@ -6,9 +6,11 @@ type UseDrawerDragArgs = {
|
|
|
6
6
|
elRef: Ref<HTMLElement | undefined>;
|
|
7
7
|
wrapperRef: Ref<HTMLDivElement | undefined>;
|
|
8
8
|
position: MaybeRef<DefaultOptions['position']>;
|
|
9
|
+
snapPoints: MaybeRef<DefaultOptions['snapPoints']>;
|
|
9
10
|
threshold: MaybeRef<DefaultOptions['threshold']>;
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
initial: MaybeRef<DefaultOptions['initial']>;
|
|
12
|
+
animation: MaybeRef<DefaultOptions['animation']>;
|
|
13
|
+
preventDragClose: MaybeRef<DefaultOptions['preventDragClose']>;
|
|
12
14
|
overshoot: MaybeRef<number>;
|
|
13
15
|
close: () => void;
|
|
14
16
|
};
|
|
@@ -26,10 +26,12 @@ export function useDrawerDrag(args) {
|
|
|
26
26
|
elRef,
|
|
27
27
|
wrapperRef,
|
|
28
28
|
position,
|
|
29
|
+
snapPoints,
|
|
29
30
|
overshoot,
|
|
30
31
|
threshold,
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
initial,
|
|
33
|
+
animation,
|
|
34
|
+
preventDragClose,
|
|
33
35
|
close
|
|
34
36
|
} = args;
|
|
35
37
|
const { findState } = useDrawerState(toValue(id));
|
|
@@ -56,7 +58,6 @@ export function useDrawerDrag(args) {
|
|
|
56
58
|
let cancelPointermove = void 0;
|
|
57
59
|
let cancelTouchend = void 0;
|
|
58
60
|
let scrollLock = void 0;
|
|
59
|
-
const duration = computed(() => toValue(snap)?.duration);
|
|
60
61
|
const hasDragged = computed(() => {
|
|
61
62
|
const hasDraggedX = !isWithinRange({
|
|
62
63
|
input: draggedX.value,
|
|
@@ -86,8 +87,9 @@ export function useDrawerDrag(args) {
|
|
|
86
87
|
} = useDrawerSnap({
|
|
87
88
|
id,
|
|
88
89
|
wrapperRect,
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
animation,
|
|
91
|
+
snapPoints,
|
|
92
|
+
preventDragClose,
|
|
91
93
|
position,
|
|
92
94
|
overshoot,
|
|
93
95
|
draggedY,
|
|
@@ -273,7 +275,7 @@ export function useDrawerDrag(args) {
|
|
|
273
275
|
snapTo({
|
|
274
276
|
snapPoint: payload.snapPoint,
|
|
275
277
|
interpolate: true,
|
|
276
|
-
duration: payload.duration
|
|
278
|
+
duration: payload.duration
|
|
277
279
|
});
|
|
278
280
|
}
|
|
279
281
|
}
|
|
@@ -284,8 +286,7 @@ export function useDrawerDrag(args) {
|
|
|
284
286
|
} else if (interpolateTo.value || interpolateTo.value === 0) {
|
|
285
287
|
if (scrollLock && scrollLock.value || canInterpolate(e.target)) {
|
|
286
288
|
interpolateDragged({
|
|
287
|
-
to: interpolateTo.value
|
|
288
|
-
duration: duration.value
|
|
289
|
+
to: interpolateTo.value
|
|
289
290
|
});
|
|
290
291
|
}
|
|
291
292
|
activeSnapPoint.value = snapPointsMap.value[interpolateTo.value];
|
|
@@ -304,15 +305,13 @@ export function useDrawerDrag(args) {
|
|
|
304
305
|
case "bottom":
|
|
305
306
|
case "top":
|
|
306
307
|
interpolateDragged({
|
|
307
|
-
to: snappedY.value
|
|
308
|
-
duration: duration.value
|
|
308
|
+
to: snappedY.value
|
|
309
309
|
});
|
|
310
310
|
break;
|
|
311
311
|
case "right":
|
|
312
312
|
case "left":
|
|
313
313
|
interpolateDragged({
|
|
314
|
-
to: snappedX.value
|
|
315
|
-
duration: duration.value
|
|
314
|
+
to: snappedX.value
|
|
316
315
|
});
|
|
317
316
|
break;
|
|
318
317
|
}
|
|
@@ -388,8 +387,10 @@ export function useDrawerDrag(args) {
|
|
|
388
387
|
() => [unrefElement(elRef), unrefElement(wrapperRef)],
|
|
389
388
|
async () => {
|
|
390
389
|
await getSizes();
|
|
391
|
-
const snapPoint = toValue(
|
|
392
|
-
|
|
390
|
+
const snapPoint = toValue(initial)?.snapPoint;
|
|
391
|
+
if (snapPoint) {
|
|
392
|
+
snapTo({ snapPoint, interpolate: false });
|
|
393
|
+
}
|
|
393
394
|
}
|
|
394
395
|
);
|
|
395
396
|
watch([snappedX, snappedY], ([x, y]) => {
|
|
@@ -7,8 +7,9 @@ type UseDrawerSnapArgs = {
|
|
|
7
7
|
draggedY: Ref<number>;
|
|
8
8
|
draggedX: Ref<number>;
|
|
9
9
|
position: MaybeRef<DefaultOptions['position']>;
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
animation: MaybeRef<DefaultOptions['animation']>;
|
|
11
|
+
snapPoints: MaybeRef<DefaultOptions['snapPoints']>;
|
|
12
|
+
preventDragClose: MaybeRef<DefaultOptions['preventDragClose']>;
|
|
12
13
|
overshoot: MaybeRef<number>;
|
|
13
14
|
};
|
|
14
15
|
type FindClosestSnapPointArgs = {
|
|
@@ -24,6 +25,7 @@ type SnapToArgs = {
|
|
|
24
25
|
type InterpolateDraggedArgs = {
|
|
25
26
|
to: number;
|
|
26
27
|
duration?: number;
|
|
28
|
+
easing?: (t: number) => number;
|
|
27
29
|
};
|
|
28
30
|
export declare function useDrawerSnap(args: UseDrawerSnapArgs): {
|
|
29
31
|
snappedY: Ref<number>;
|
|
@@ -5,19 +5,19 @@ import { useDrawerEmitter } from "../useDrawerEmitter.mjs";
|
|
|
5
5
|
export function useDrawerSnap(args) {
|
|
6
6
|
const {
|
|
7
7
|
id,
|
|
8
|
-
|
|
8
|
+
snapPoints,
|
|
9
|
+
animation,
|
|
9
10
|
position,
|
|
10
11
|
wrapperRect,
|
|
11
12
|
overshoot,
|
|
12
13
|
draggedY,
|
|
13
14
|
draggedX,
|
|
14
|
-
|
|
15
|
+
preventDragClose
|
|
15
16
|
} = args;
|
|
16
17
|
const mappedSnapPoints = computedWithControl(
|
|
17
18
|
() => toValue(wrapperRect),
|
|
18
19
|
() => {
|
|
19
|
-
const
|
|
20
|
-
const extended = toValue(canClose) ? [...snapPoints, 0] : snapPoints;
|
|
20
|
+
const extended = toValue(preventDragClose) ? toValue(snapPoints) : [...toValue(snapPoints), 0];
|
|
21
21
|
const mapped = extended.map((snapPoint) => {
|
|
22
22
|
return mapSnapPoint(snapPoint);
|
|
23
23
|
});
|
|
@@ -28,13 +28,9 @@ export function useDrawerSnap(args) {
|
|
|
28
28
|
}
|
|
29
29
|
);
|
|
30
30
|
const snapPointsMap = computedWithControl(
|
|
31
|
+
() => toValue(snapPoints),
|
|
31
32
|
() => {
|
|
32
|
-
const
|
|
33
|
-
return { ...snapPoints };
|
|
34
|
-
},
|
|
35
|
-
() => {
|
|
36
|
-
const snapPoints = toValue(snap)?.points;
|
|
37
|
-
const extended = toValue(canClose) ? [...snapPoints, 0] : snapPoints;
|
|
33
|
+
const extended = toValue(preventDragClose) ? toValue(snapPoints) : [...toValue(snapPoints), 0];
|
|
38
34
|
const mapped = extended.reduce((acc, current) => {
|
|
39
35
|
const key = mapSnapPoint(current);
|
|
40
36
|
if (key || key === 0) {
|
|
@@ -192,7 +188,11 @@ export function useDrawerSnap(args) {
|
|
|
192
188
|
}
|
|
193
189
|
}
|
|
194
190
|
function interpolateDragged(args2) {
|
|
195
|
-
const {
|
|
191
|
+
const {
|
|
192
|
+
to,
|
|
193
|
+
duration = toValue(animation)?.snap?.duration || 300,
|
|
194
|
+
easing
|
|
195
|
+
} = args2;
|
|
196
196
|
const snapPoint = snapPointsMap.value[to];
|
|
197
197
|
useDrawerEmitter().emit("beforeSnap", { id: toValue(id), snapPoint });
|
|
198
198
|
switch (position) {
|
|
@@ -202,6 +202,7 @@ export function useDrawerSnap(args) {
|
|
|
202
202
|
from: draggedY.value,
|
|
203
203
|
to,
|
|
204
204
|
duration,
|
|
205
|
+
easing,
|
|
205
206
|
callback: (value) => {
|
|
206
207
|
draggedY.value = value;
|
|
207
208
|
if (draggedY.value === to) {
|
|
@@ -219,6 +220,7 @@ export function useDrawerSnap(args) {
|
|
|
219
220
|
from: draggedX.value,
|
|
220
221
|
to,
|
|
221
222
|
duration,
|
|
223
|
+
easing,
|
|
222
224
|
callback: (value) => {
|
|
223
225
|
draggedX.value = value;
|
|
224
226
|
if (draggedX.value === to) {
|
|
@@ -3,15 +3,17 @@ export type SnapPoint = number | `${string}px`;
|
|
|
3
3
|
export interface DrawerOptions {
|
|
4
4
|
position?: 'top' | 'right' | 'bottom' | 'left';
|
|
5
5
|
backdrop?: boolean;
|
|
6
|
+
tag?: 'dialog' | 'div';
|
|
6
7
|
focusTrap?: boolean | Options;
|
|
7
|
-
scrollLock?: boolean
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
scrollLock?: boolean | {
|
|
9
|
+
padding: boolean;
|
|
10
|
+
};
|
|
11
|
+
snapPoints: SnapPoint[];
|
|
10
12
|
teleport?: {
|
|
11
13
|
target?: string;
|
|
12
14
|
disabled?: boolean;
|
|
13
15
|
};
|
|
14
|
-
|
|
16
|
+
transition?: {
|
|
15
17
|
content?: string;
|
|
16
18
|
backdrop?: string;
|
|
17
19
|
};
|
|
@@ -20,19 +22,23 @@ export interface DrawerOptions {
|
|
|
20
22
|
distance?: number;
|
|
21
23
|
momentum?: number;
|
|
22
24
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
animation?: {
|
|
26
|
+
snap?: {
|
|
27
|
+
duration?: number;
|
|
28
|
+
easing?: (t: number) => number;
|
|
29
|
+
};
|
|
28
30
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
initial?: {
|
|
32
|
+
open?: boolean;
|
|
33
|
+
transition?: boolean;
|
|
34
|
+
snapPoint?: SnapPoint;
|
|
35
|
+
};
|
|
36
|
+
keyListener?: {
|
|
37
|
+
close?: string[] | false;
|
|
33
38
|
};
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
enableMousewheel?: boolean;
|
|
40
|
+
preventZoom?: boolean;
|
|
41
|
+
preventDragClose?: boolean;
|
|
36
42
|
disabled?: boolean;
|
|
37
43
|
}
|
|
38
44
|
export interface DrawerState {
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { DrawerOptions } from '../types.js';
|
|
2
2
|
import type { RequireAll } from '@maas/vue-equipment/utils';
|
|
3
3
|
type DefaultOptions = RequireAll<DrawerOptions> & {
|
|
4
|
+
scrollLock: RequireAll<DrawerOptions['scrollLock']>;
|
|
4
5
|
threshold: RequireAll<DrawerOptions['threshold']>;
|
|
5
|
-
|
|
6
|
+
animation: RequireAll<DrawerOptions['animation']>;
|
|
7
|
+
initial: RequireAll<DrawerOptions['initial']>;
|
|
8
|
+
keyListener: RequireAll<DrawerOptions['keyListener']>;
|
|
6
9
|
};
|
|
7
10
|
declare const defaultOptions: DefaultOptions;
|
|
8
11
|
export { defaultOptions, type DefaultOptions };
|