@maas/vue-equipment 0.26.5 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/composables/index.d.mts +19 -18
  2. package/dist/composables/index.d.ts +19 -18
  3. package/dist/composables/index.js +20 -18
  4. package/dist/composables/index.js.map +1 -1
  5. package/dist/composables/index.mjs +38 -19
  6. package/dist/composables/index.mjs.map +1 -1
  7. package/dist/nuxt/module.json +1 -1
  8. package/dist/nuxt/module.mjs +9 -2
  9. package/dist/plugins/MagicCommand/nuxt.d.ts +2 -0
  10. package/dist/plugins/MagicCommand/src/components/MagicCommandBody.vue +4 -4
  11. package/dist/plugins/MagicCommand/src/components/MagicCommandBody.vue.d.ts +1 -0
  12. package/dist/plugins/MagicCookie/nuxt.d.ts +2 -0
  13. package/dist/plugins/MagicDraggable/index.d.ts +5 -0
  14. package/dist/plugins/MagicDraggable/index.mjs +8 -0
  15. package/dist/plugins/MagicDraggable/nuxt.d.ts +2 -0
  16. package/dist/plugins/MagicDraggable/nuxt.mjs +23 -0
  17. package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue +108 -0
  18. package/dist/plugins/MagicDraggable/src/components/MagicDraggable.vue.d.ts +41 -0
  19. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.d.ts +18 -0
  20. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableDrag.mjs +307 -0
  21. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.d.ts +34 -0
  22. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableSnap.mjs +143 -0
  23. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.d.ts +108 -0
  24. package/dist/plugins/MagicDraggable/src/composables/private/useDraggableState.mjs +46 -0
  25. package/dist/plugins/MagicDraggable/src/composables/useDraggableApi.d.ts +1 -0
  26. package/dist/plugins/MagicDraggable/src/composables/useDraggableApi.mjs +2 -0
  27. package/dist/plugins/MagicDraggable/src/types/index.d.ts +48 -0
  28. package/dist/plugins/MagicDraggable/src/types/index.mjs +0 -0
  29. package/dist/plugins/MagicDraggable/src/utils/defaultOptions.d.ts +5 -0
  30. package/dist/plugins/MagicDraggable/src/utils/defaultOptions.mjs +21 -0
  31. package/dist/plugins/MagicDrawer/nuxt.d.ts +2 -0
  32. package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +30 -19
  33. package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue.d.ts +1 -1
  34. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.d.ts +4 -2
  35. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +15 -14
  36. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.d.ts +4 -2
  37. package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.mjs +13 -11
  38. package/dist/plugins/MagicDrawer/src/types/index.d.ts +21 -15
  39. package/dist/plugins/MagicDrawer/src/utils/defaultOptions.d.ts +4 -1
  40. package/dist/plugins/MagicDrawer/src/utils/defaultOptions.mjs +17 -14
  41. package/dist/plugins/MagicMarquee/nuxt.d.ts +2 -0
  42. package/dist/plugins/MagicModal/nuxt.d.ts +2 -0
  43. package/dist/plugins/MagicModal/src/components/MagicModal.vue +8 -5
  44. package/dist/plugins/MagicModal/src/types/index.d.ts +8 -5
  45. package/dist/plugins/MagicModal/src/utils/defaultOptions.mjs +6 -5
  46. package/dist/plugins/MagicNoise/nuxt.d.ts +2 -0
  47. package/dist/plugins/MagicPlayer/nuxt.d.ts +2 -0
  48. package/dist/plugins/MagicScroll/nuxt.d.ts +2 -0
  49. package/dist/plugins/MagicToast/nuxt.d.ts +2 -0
  50. package/dist/plugins/index.d.ts +1 -0
  51. package/dist/plugins/index.mjs +1 -0
  52. package/dist/utils/index.d.mts +16 -1
  53. package/dist/utils/index.d.ts +16 -1
  54. package/dist/utils/index.js +72 -0
  55. package/dist/utils/index.js.map +1 -1
  56. package/dist/utils/index.mjs +58 -0
  57. package/dist/utils/index.mjs.map +1 -1
  58. package/package.json +16 -4
  59. package/dist/plugins/MagicCommand/demo/DefaultView.vue +0 -84
  60. package/dist/plugins/MagicCommand/demo/DefaultView.vue.d.ts +0 -16
  61. package/dist/plugins/MagicCommand/demo/DemoItem.vue +0 -18
  62. package/dist/plugins/MagicCommand/demo/DemoItem.vue.d.ts +0 -21
  63. package/dist/plugins/MagicCommand/demo/ProjectView.vue +0 -63
  64. package/dist/plugins/MagicCommand/demo/ProjectView.vue.d.ts +0 -14
  65. package/dist/plugins/MagicToast/demo/DemoToast.vue +0 -22
  66. 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,2 @@
1
+ export function useDraggableApi() {
2
+ }
@@ -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 {};
@@ -0,0 +1,5 @@
1
+ import type { DraggableOptions } from '../types.js';
2
+ import type { RequireAll } from '@maas/vue-equipment/utils';
3
+ type DefaultOptions = RequireAll<DraggableOptions>;
4
+ declare const defaultOptions: DefaultOptions;
5
+ export { defaultOptions, type DefaultOptions };
@@ -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 };
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@nuxt/schema").NuxtModule<import("@nuxt/schema").ModuleOptions>;
2
+ export default _default;
@@ -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 './../types/index'
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 === 'keys' || key === 'points') {
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 { position, threshold, snap, canClose } = mappedOptions
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
- snap,
177
- canClose,
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.beforeMount.open &&
225
- !mappedOptions.beforeMount.animate &&
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.transitions?.backdrop
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.mousewheel) {
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.mousewheel) {
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 (canClose && !disabled.value) {
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.keys && canClose) {
314
- for (const key of mappedOptions.keys) {
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.beforeMount.open) {
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 (mappedOptions.scrollLockPadding) {
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 './../types/index';
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
- snap: MaybeRef<DefaultOptions['snap']>;
11
- canClose: MaybeRef<DefaultOptions['canClose']>;
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
- snap,
32
- canClose,
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
- snap,
90
- canClose,
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 || duration.value
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(snap)?.initial;
392
- snapTo({ snapPoint, interpolate: false });
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
- snap: MaybeRef<DefaultOptions['snap']>;
11
- canClose: MaybeRef<DefaultOptions['canClose']>;
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
- snap,
8
+ snapPoints,
9
+ animation,
9
10
  position,
10
11
  wrapperRect,
11
12
  overshoot,
12
13
  draggedY,
13
14
  draggedX,
14
- canClose
15
+ preventDragClose
15
16
  } = args;
16
17
  const mappedSnapPoints = computedWithControl(
17
18
  () => toValue(wrapperRect),
18
19
  () => {
19
- const snapPoints = toValue(snap)?.points;
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 snapPoints = toValue(snap)?.points;
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 { to, duration = toValue(snap).duration } = args2;
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
- scrollLockPadding?: boolean;
9
- preventZoom?: boolean;
8
+ scrollLock?: boolean | {
9
+ padding: boolean;
10
+ };
11
+ snapPoints: SnapPoint[];
10
12
  teleport?: {
11
13
  target?: string;
12
14
  disabled?: boolean;
13
15
  };
14
- transitions?: {
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
- tag?: 'dialog' | 'div';
24
- keys?: string[] | false;
25
- beforeMount?: {
26
- open: boolean;
27
- animate: boolean;
25
+ animation?: {
26
+ snap?: {
27
+ duration?: number;
28
+ easing?: (t: number) => number;
29
+ };
28
30
  };
29
- snap?: {
30
- points: SnapPoint[];
31
- duration?: number;
32
- initial?: SnapPoint;
31
+ initial?: {
32
+ open?: boolean;
33
+ transition?: boolean;
34
+ snapPoint?: SnapPoint;
35
+ };
36
+ keyListener?: {
37
+ close?: string[] | false;
33
38
  };
34
- mousewheel?: boolean;
35
- canClose?: boolean;
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
- snap: RequireAll<DrawerOptions['snap']>;
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 };