@maas/vue-equipment 1.0.0-beta.68 → 1.0.0-beta.69

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@maas/vue-equipment/nuxt",
3
3
  "configKey": "vueEquipment",
4
- "version": "1.0.0-beta.67",
4
+ "version": "1.0.0-beta.68",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "unknown"
@@ -109,10 +109,9 @@ const functions$1 = [
109
109
  {
110
110
  name: "MagicTray",
111
111
  "package": "plugins",
112
- lastUpdated: 0,
112
+ lastUpdated: 1781787163000,
113
113
  docs: "https://maas.egineering/vue-equipment/plugins/MagicTray/",
114
- description: "MagicTray is a flexible",
115
- soon: true
114
+ description: "MagicTray is a flexible"
116
115
  },
117
116
  {
118
117
  name: "useCountdown",
@@ -127,6 +127,7 @@ const { onPointerdown, onTouchstart, onClick, style, hasDragged } = useDrawerDra
127
127
  wrapperRef,
128
128
  position: state.options.position,
129
129
  snapPoints: state.options.snapPoints,
130
+ snap: state.options.snap,
130
131
  threshold: state.options.threshold,
131
132
  overshoot,
132
133
  animation: state.options.animation,
@@ -6,6 +6,7 @@ type UseDrawerDragArgs = {
6
6
  wrapperRef: Ref<HTMLDivElement | null>;
7
7
  position: MaybeRef<RequiredMagicDrawerOptions['position']>;
8
8
  snapPoints: MaybeRef<RequiredMagicDrawerOptions['snapPoints']>;
9
+ snap: MaybeRef<RequiredMagicDrawerOptions['snap']>;
9
10
  threshold: MaybeRef<RequiredMagicDrawerOptions['threshold']>;
10
11
  initial: MaybeRef<RequiredMagicDrawerOptions['initial']>;
11
12
  animation: MaybeRef<RequiredMagicDrawerOptions['animation']>;
@@ -38,6 +38,7 @@ export function useDrawerDrag(args) {
38
38
  wrapperRef,
39
39
  position,
40
40
  snapPoints,
41
+ snap,
41
42
  overshoot,
42
43
  threshold,
43
44
  initial,
@@ -96,6 +97,13 @@ export function useDrawerDrag(args) {
96
97
  const style = computed(
97
98
  () => `transform: translate(${draggedX.value}px, ${draggedY.value}px)`
98
99
  );
100
+ const snapMode = computed(() => toValue(snap).mode);
101
+ const draggedRefX = computed(
102
+ () => snapMode.value === "step" ? lastDraggedX.value : draggedX.value
103
+ );
104
+ const draggedRefY = computed(
105
+ () => snapMode.value === "step" ? lastDraggedY.value : draggedY.value
106
+ );
99
107
  const {
100
108
  snappedY,
101
109
  snappedX,
@@ -142,7 +150,7 @@ export function useDrawerDrag(args) {
142
150
  if (distanceY > toValue(threshold).distance) {
143
151
  const snapPointY = findClosestSnapPoint({
144
152
  draggedX: 0,
145
- draggedY,
153
+ draggedY: draggedRefY.value,
146
154
  direction: relDirectionY.value
147
155
  });
148
156
  if (Math.abs(snapPointY ?? 0) === drawerHeight.value) {
@@ -157,7 +165,7 @@ export function useDrawerDrag(args) {
157
165
  case "left": {
158
166
  if (distanceX > toValue(threshold).distance) {
159
167
  const snapPointX = findClosestSnapPoint({
160
- draggedX,
168
+ draggedX: draggedRefX.value,
161
169
  draggedY: 0,
162
170
  direction: relDirectionX.value
163
171
  });
@@ -183,7 +191,7 @@ export function useDrawerDrag(args) {
183
191
  if (velocityY > toValue(threshold).momentum) {
184
192
  const snapPointY = findClosestSnapPoint({
185
193
  draggedX: 0,
186
- draggedY,
194
+ draggedY: draggedRefY.value,
187
195
  direction: relDirectionY.value
188
196
  });
189
197
  if (Math.abs(snapPointY ?? 0) === drawerHeight.value) {
@@ -198,7 +206,7 @@ export function useDrawerDrag(args) {
198
206
  case "left": {
199
207
  if (velocityX > toValue(threshold).momentum) {
200
208
  const snapPointX = findClosestSnapPoint({
201
- draggedX,
209
+ draggedX: draggedRefX.value,
202
210
  draggedY,
203
211
  direction: relDirectionX.value
204
212
  });
@@ -1,6 +1,7 @@
1
1
  import { type Options as FocusTrapOptions } from 'focus-trap';
2
2
  import type { RequireAllNested } from '@maas/vue-equipment/utils';
3
3
  export type DrawerSnapPoint = number | `${number}px`;
4
+ export type DrawerSnapMode = 'closest' | 'step';
4
5
  export interface MagicDrawerOptions {
5
6
  position?: 'top' | 'right' | 'bottom' | 'left';
6
7
  tag?: 'dialog' | 'div';
@@ -9,6 +10,9 @@ export interface MagicDrawerOptions {
9
10
  padding: boolean;
10
11
  };
11
12
  snapPoints?: DrawerSnapPoint[];
13
+ snap?: {
14
+ mode?: DrawerSnapMode;
15
+ };
12
16
  teleport?: {
13
17
  target?: string;
14
18
  disabled?: boolean;
@@ -42,6 +46,7 @@ export interface MagicDrawerOptions {
42
46
  disabled?: boolean;
43
47
  }
44
48
  export type RequiredMagicDrawerOptions = Required<MagicDrawerOptions> & {
49
+ snap: Required<MagicDrawerOptions['snap']>;
45
50
  scrollLock: Required<MagicDrawerOptions['scrollLock']>;
46
51
  threshold: Required<MagicDrawerOptions['threshold']>;
47
52
  animation: RequireAllNested<NonNullable<MagicDrawerOptions['animation']>>;
@@ -9,6 +9,9 @@ const defaultOptions = {
9
9
  },
10
10
  scrollLock: { padding: true },
11
11
  snapPoints: [1],
12
+ snap: {
13
+ mode: "closest"
14
+ },
12
15
  teleport: {
13
16
  target: "body",
14
17
  disabled: false