@maas/vue-equipment 0.25.2 → 0.25.4
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/nuxt/module.json +1 -1
- package/dist/plugins/MagicCommand/src/components/MagicCommandDrawer.vue +3 -2
- package/dist/plugins/MagicCommand/src/components/MagicCommandModal.vue +3 -2
- package/dist/plugins/MagicDrawer/src/components/MagicDrawer.vue +60 -63
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerDrag.mjs +15 -7
- package/dist/plugins/MagicDrawer/src/composables/private/useDrawerSnap.mjs +2 -6
- package/dist/plugins/MagicModal/src/components/MagicModal.vue +48 -50
- package/dist/plugins/MagicPlayer/src/components/MagicPlayer.vue +1 -0
- package/dist/plugins/MagicPlayer/src/composables/private/usePlayerMediaApi.mjs +9 -1
- package/package.json +1 -1
package/dist/nuxt/module.json
CHANGED
|
@@ -31,12 +31,13 @@ function afterLeaveCallback() {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
const { close, isActive } = useCommandApi(commandId)
|
|
34
|
+
const drawerApi = useDrawerApi(commandId)
|
|
34
35
|
|
|
35
36
|
watch(isActive, (value) => {
|
|
36
37
|
if (value) {
|
|
37
|
-
|
|
38
|
+
drawerApi.open()
|
|
38
39
|
} else {
|
|
39
|
-
|
|
40
|
+
drawerApi.close()
|
|
40
41
|
}
|
|
41
42
|
})
|
|
42
43
|
|
|
@@ -31,12 +31,13 @@ function afterLeaveCallback() {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
const { close, isActive } = useCommandApi(commandId)
|
|
34
|
+
const modalApi = useModalApi(commandId)
|
|
34
35
|
|
|
35
36
|
watch(isActive, (value) => {
|
|
36
37
|
if (value) {
|
|
37
|
-
|
|
38
|
+
modalApi.open()
|
|
38
39
|
} else {
|
|
39
|
-
|
|
40
|
+
modalApi.close()
|
|
40
41
|
}
|
|
41
42
|
})
|
|
42
43
|
|
|
@@ -1,78 +1,75 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
<teleport
|
|
3
|
+
v-if="wrapperActive"
|
|
4
|
+
:to="mappedOptions.teleport?.target"
|
|
5
|
+
:disabled="mappedOptions.teleport?.disabled"
|
|
6
|
+
>
|
|
7
|
+
<div
|
|
8
|
+
ref="drawerRef"
|
|
9
|
+
class="magic-drawer"
|
|
10
|
+
:id="toValue(id)"
|
|
11
|
+
:class="[
|
|
12
|
+
toValue(props.class),
|
|
13
|
+
`-${mappedOptions.position}`,
|
|
14
|
+
{
|
|
15
|
+
'-dragging': dragging,
|
|
16
|
+
'-wheeling': wheeling,
|
|
17
|
+
'-disabled': disabled,
|
|
18
|
+
},
|
|
19
|
+
]"
|
|
20
|
+
aria-modal="true"
|
|
7
21
|
>
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
:id="toValue(id)"
|
|
12
|
-
:class="[
|
|
13
|
-
toValue(props.class),
|
|
14
|
-
`-${mappedOptions.position}`,
|
|
15
|
-
{
|
|
16
|
-
'-dragging': dragging,
|
|
17
|
-
'-wheeling': wheeling,
|
|
18
|
-
'-disabled': disabled,
|
|
19
|
-
},
|
|
20
|
-
]"
|
|
21
|
-
aria-modal="true"
|
|
22
|
+
<transition
|
|
23
|
+
v-if="mappedOptions.backdrop || !!$slots.backdrop"
|
|
24
|
+
:name="backdropTransition"
|
|
22
25
|
>
|
|
26
|
+
<div
|
|
27
|
+
v-show="innerActive"
|
|
28
|
+
class="magic-drawer__backdrop"
|
|
29
|
+
@click.self="guardedClose"
|
|
30
|
+
>
|
|
31
|
+
<slot name="backdrop" />
|
|
32
|
+
</div>
|
|
33
|
+
</transition>
|
|
34
|
+
|
|
35
|
+
<div class="magic-drawer__wrapper" ref="wrapperRef">
|
|
23
36
|
<transition
|
|
24
|
-
|
|
25
|
-
|
|
37
|
+
:name="contentTransition"
|
|
38
|
+
@before-leave="onBeforeLeave"
|
|
39
|
+
@leave="onLeave"
|
|
40
|
+
@after-leave="onAfterLeave"
|
|
41
|
+
@before-enter="onBeforeEnter"
|
|
42
|
+
@enter="onEnter"
|
|
43
|
+
@after-enter="onAfterEnter"
|
|
26
44
|
>
|
|
27
|
-
<div
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
45
|
+
<div v-show="innerActive" class="magic-drawer__content">
|
|
46
|
+
<component
|
|
47
|
+
:is="mappedOptions.tag"
|
|
48
|
+
ref="elRef"
|
|
49
|
+
class="magic-drawer__drag"
|
|
50
|
+
:style="style"
|
|
51
|
+
@pointerdown="guardedPointerdown"
|
|
52
|
+
@click="guardedClick"
|
|
53
|
+
>
|
|
54
|
+
<component
|
|
55
|
+
v-if="component"
|
|
56
|
+
v-bind="props"
|
|
57
|
+
:is="component"
|
|
58
|
+
@close="guardedClose"
|
|
59
|
+
/>
|
|
60
|
+
<slot v-else />
|
|
61
|
+
<div v-if="hasDragged" class="magic-drawer__overlay" />
|
|
62
|
+
</component>
|
|
33
63
|
</div>
|
|
34
64
|
</transition>
|
|
35
|
-
|
|
36
|
-
<div class="magic-drawer__wrapper" ref="wrapperRef">
|
|
37
|
-
<transition
|
|
38
|
-
:name="contentTransition"
|
|
39
|
-
@before-leave="onBeforeLeave"
|
|
40
|
-
@leave="onLeave"
|
|
41
|
-
@after-leave="onAfterLeave"
|
|
42
|
-
@before-enter="onBeforeEnter"
|
|
43
|
-
@enter="onEnter"
|
|
44
|
-
@after-enter="onAfterEnter"
|
|
45
|
-
>
|
|
46
|
-
<div v-show="innerActive" class="magic-drawer__content">
|
|
47
|
-
<component
|
|
48
|
-
:is="mappedOptions.tag"
|
|
49
|
-
ref="elRef"
|
|
50
|
-
class="magic-drawer__drag"
|
|
51
|
-
:style="style"
|
|
52
|
-
@pointerdown="guardedPointerdown"
|
|
53
|
-
@click="guardedClick"
|
|
54
|
-
>
|
|
55
|
-
<component
|
|
56
|
-
v-if="component"
|
|
57
|
-
v-bind="props"
|
|
58
|
-
:is="component"
|
|
59
|
-
@close="guardedClose"
|
|
60
|
-
/>
|
|
61
|
-
<slot v-else />
|
|
62
|
-
<div v-if="hasDragged" class="magic-drawer__overlay" />
|
|
63
|
-
</component>
|
|
64
|
-
</div>
|
|
65
|
-
</transition>
|
|
66
|
-
</div>
|
|
67
65
|
</div>
|
|
68
|
-
</
|
|
69
|
-
</
|
|
66
|
+
</div>
|
|
67
|
+
</teleport>
|
|
70
68
|
</template>
|
|
71
69
|
|
|
72
70
|
<script setup lang="ts">
|
|
73
71
|
import {
|
|
74
72
|
ref,
|
|
75
|
-
toRefs,
|
|
76
73
|
watch,
|
|
77
74
|
computed,
|
|
78
75
|
nextTick,
|
|
@@ -309,8 +306,8 @@ function saveOvershoot() {
|
|
|
309
306
|
if (mappedOptions.keys && canClose) {
|
|
310
307
|
for (const key of mappedOptions.keys) {
|
|
311
308
|
onKeyStroke(key, (e) => {
|
|
312
|
-
e.preventDefault()
|
|
313
309
|
close()
|
|
310
|
+
e.preventDefault()
|
|
314
311
|
})
|
|
315
312
|
}
|
|
316
313
|
}
|
|
@@ -152,30 +152,30 @@ export function useDrawerDrag(args) {
|
|
|
152
152
|
case "bottom":
|
|
153
153
|
case "top":
|
|
154
154
|
if (velocityY > toValue(threshold).momentum) {
|
|
155
|
-
const
|
|
155
|
+
const snapPointY = findClosestSnapPoint({
|
|
156
156
|
draggedX: 0,
|
|
157
157
|
draggedY,
|
|
158
158
|
direction: relDirectionY.value
|
|
159
159
|
});
|
|
160
|
-
if (
|
|
160
|
+
if (snapPointY === drawerHeight.value) {
|
|
161
161
|
shouldClose.value = true;
|
|
162
162
|
} else {
|
|
163
|
-
interpolateTo.value =
|
|
163
|
+
interpolateTo.value = snapPointY;
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
break;
|
|
167
167
|
case "right":
|
|
168
168
|
case "left":
|
|
169
169
|
if (velocityX > toValue(threshold).momentum) {
|
|
170
|
-
const
|
|
170
|
+
const snapPointX = findClosestSnapPoint({
|
|
171
171
|
draggedX,
|
|
172
172
|
draggedY,
|
|
173
173
|
direction: relDirectionX.value
|
|
174
174
|
});
|
|
175
|
-
if (
|
|
175
|
+
if (snapPointX === drawerWidth.value) {
|
|
176
176
|
shouldClose.value = true;
|
|
177
177
|
} else {
|
|
178
|
-
interpolateTo.value =
|
|
178
|
+
interpolateTo.value = snapPointX;
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
break;
|
|
@@ -185,21 +185,29 @@ export function useDrawerDrag(args) {
|
|
|
185
185
|
switch (position) {
|
|
186
186
|
case "bottom":
|
|
187
187
|
const newDraggedB = clamp(y - originY.value, 0, toValue(overshoot) * -1);
|
|
188
|
+
if (newDraggedB === draggedY.value)
|
|
189
|
+
break;
|
|
188
190
|
relDirectionY.value = newDraggedB < draggedY.value ? "below" : "above";
|
|
189
191
|
draggedY.value = newDraggedB;
|
|
190
192
|
break;
|
|
191
193
|
case "top":
|
|
192
194
|
const newDraggedT = clamp(y - originY.value, 0, toValue(overshoot));
|
|
195
|
+
if (newDraggedT === draggedY.value)
|
|
196
|
+
break;
|
|
193
197
|
relDirectionY.value = newDraggedT < draggedY.value ? "below" : "above";
|
|
194
198
|
draggedY.value = newDraggedT;
|
|
195
199
|
break;
|
|
196
200
|
case "right":
|
|
197
201
|
const newDraggedR = clamp(x - originX.value, 0, toValue(overshoot) * -1);
|
|
202
|
+
if (newDraggedR === draggedX.value)
|
|
203
|
+
break;
|
|
198
204
|
relDirectionX.value = newDraggedR < draggedX.value ? "below" : "above";
|
|
199
205
|
draggedX.value = newDraggedR;
|
|
200
206
|
break;
|
|
201
207
|
case "left":
|
|
202
208
|
const newDraggedL = clamp(x - originX.value, 0, toValue(overshoot));
|
|
209
|
+
if (newDraggedL === draggedX.value)
|
|
210
|
+
break;
|
|
203
211
|
relDirectionX.value = newDraggedL < draggedX.value ? "below" : "above";
|
|
204
212
|
draggedX.value = newDraggedL;
|
|
205
213
|
break;
|
|
@@ -291,7 +299,7 @@ export function useDrawerDrag(args) {
|
|
|
291
299
|
snappedX.value = interpolateTo.value;
|
|
292
300
|
break;
|
|
293
301
|
}
|
|
294
|
-
} else
|
|
302
|
+
} else {
|
|
295
303
|
switch (position) {
|
|
296
304
|
case "bottom":
|
|
297
305
|
case "top":
|
|
@@ -238,9 +238,7 @@ export function useDrawerSnap(args) {
|
|
|
238
238
|
switch (position) {
|
|
239
239
|
case "bottom":
|
|
240
240
|
case "top":
|
|
241
|
-
if (
|
|
242
|
-
break;
|
|
243
|
-
} else {
|
|
241
|
+
if (!!toValue(draggedY2) || toValue(draggedY2) === 0) {
|
|
244
242
|
closest = findClosestNumber({
|
|
245
243
|
number: toValue(draggedY2),
|
|
246
244
|
numbers: mappedSnapPoints.value,
|
|
@@ -250,9 +248,7 @@ export function useDrawerSnap(args) {
|
|
|
250
248
|
}
|
|
251
249
|
case "right":
|
|
252
250
|
case "left":
|
|
253
|
-
if (
|
|
254
|
-
break;
|
|
255
|
-
} else {
|
|
251
|
+
if (!!toValue(draggedX2) || toValue(draggedX2) === 0) {
|
|
256
252
|
closest = findClosestNumber({
|
|
257
253
|
number: toValue(draggedX2),
|
|
258
254
|
numbers: mappedSnapPoints.value,
|
|
@@ -1,58 +1,56 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
<teleport
|
|
3
|
+
v-if="wrapperActive"
|
|
4
|
+
:to="mappedOptions.teleport?.target"
|
|
5
|
+
:disabled="mappedOptions.teleport?.disabled"
|
|
6
|
+
>
|
|
7
|
+
<div
|
|
8
|
+
:is="mappedOptions.tag"
|
|
9
|
+
ref="modalRef"
|
|
10
|
+
class="magic-modal"
|
|
11
|
+
:id="toValue(id)"
|
|
12
|
+
:class="toValue(props.class)"
|
|
13
|
+
@click.self="close"
|
|
14
|
+
aria-modal="true"
|
|
7
15
|
>
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class="magic-modal"
|
|
12
|
-
:id="toValue(id)"
|
|
13
|
-
:class="toValue(props.class)"
|
|
14
|
-
@click.self="close"
|
|
15
|
-
aria-modal="true"
|
|
16
|
+
<transition
|
|
17
|
+
v-if="mappedOptions.backdrop || !!$slots.backdrop"
|
|
18
|
+
:name="mappedOptions.transitions?.backdrop"
|
|
16
19
|
>
|
|
17
|
-
<
|
|
18
|
-
v-
|
|
19
|
-
|
|
20
|
+
<div
|
|
21
|
+
v-show="innerActive"
|
|
22
|
+
class="magic-modal__backdrop"
|
|
23
|
+
@click.self="close"
|
|
20
24
|
>
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
<slot name="backdrop" />
|
|
26
|
+
</div>
|
|
27
|
+
</transition>
|
|
28
|
+
<transition
|
|
29
|
+
:name="mappedOptions.transitions?.content"
|
|
30
|
+
@before-leave="onBeforeLeave"
|
|
31
|
+
@leave="onLeave"
|
|
32
|
+
@after-leave="onAfterLeave"
|
|
33
|
+
@before-enter="onBeforeEnter"
|
|
34
|
+
@enter="onEnter"
|
|
35
|
+
@after-enter="onAfterEnter"
|
|
36
|
+
>
|
|
37
|
+
<component
|
|
38
|
+
:is="mappedOptions.tag"
|
|
39
|
+
v-show="innerActive"
|
|
40
|
+
class="magic-modal__content"
|
|
41
|
+
@click.self="close"
|
|
37
42
|
>
|
|
38
43
|
<component
|
|
39
|
-
|
|
40
|
-
v-
|
|
41
|
-
|
|
42
|
-
@
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
/>
|
|
50
|
-
<slot v-else />
|
|
51
|
-
</component>
|
|
52
|
-
</transition>
|
|
53
|
-
</div>
|
|
54
|
-
</teleport>
|
|
55
|
-
</transition>
|
|
44
|
+
v-if="component"
|
|
45
|
+
v-bind="props"
|
|
46
|
+
:is="component"
|
|
47
|
+
@close="close"
|
|
48
|
+
/>
|
|
49
|
+
<slot v-else />
|
|
50
|
+
</component>
|
|
51
|
+
</transition>
|
|
52
|
+
</div>
|
|
53
|
+
</teleport>
|
|
56
54
|
</template>
|
|
57
55
|
|
|
58
56
|
<script setup lang="ts">
|
|
@@ -151,8 +149,8 @@ function onClose() {
|
|
|
151
149
|
if (mappedOptions.keys) {
|
|
152
150
|
for (const key of mappedOptions.keys) {
|
|
153
151
|
onKeyStroke(key, (e) => {
|
|
154
|
-
e.preventDefault()
|
|
155
152
|
close()
|
|
153
|
+
e.preventDefault()
|
|
156
154
|
})
|
|
157
155
|
}
|
|
158
156
|
}
|
|
@@ -64,7 +64,15 @@ export function usePlayerMediaApi(args) {
|
|
|
64
64
|
const el = toValue(mediaRef);
|
|
65
65
|
if (!el)
|
|
66
66
|
return;
|
|
67
|
-
|
|
67
|
+
if (isPlaying) {
|
|
68
|
+
const playPromise = el.play();
|
|
69
|
+
if (playPromise !== void 0)
|
|
70
|
+
playPromise.catch((error) => {
|
|
71
|
+
console.warn("Playback error:", error);
|
|
72
|
+
});
|
|
73
|
+
} else {
|
|
74
|
+
el.pause();
|
|
75
|
+
}
|
|
68
76
|
}
|
|
69
77
|
);
|
|
70
78
|
useEventListener(mediaRef, "timeupdate", () => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maas/vue-equipment",
|
|
3
3
|
"description": "A magic collection of Vue composables, plugins, components and directives",
|
|
4
|
-
"version": "0.25.
|
|
4
|
+
"version": "0.25.4",
|
|
5
5
|
"author": "Robin Scholz <https://github.com/robinscholz>, Christoph Jeworutzki <https://github.com/ChristophJeworutzki>",
|
|
6
6
|
"devDependencies": {
|
|
7
7
|
"@antfu/ni": "^0.21.12",
|