@maas/vue-equipment 0.29.5 → 0.29.6
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/MagicMenu/src/components/MagicMenuContent.vue +16 -2
- package/dist/plugins/MagicMenu/src/components/MagicMenuContent.vue.d.ts +2 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue +21 -4
- package/dist/plugins/MagicMenu/src/components/MagicMenuFloat.vue.d.ts +2 -0
- package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue +3 -3
- package/dist/plugins/MagicMenu/src/components/MagicMenuTrigger.vue.d.ts +2 -2
- package/dist/plugins/MagicMenu/src/composables/private/useMenuTrigger.d.ts +2 -2
- package/dist/plugins/MagicMenu/src/composables/private/useMenuTrigger.mjs +11 -6
- package/dist/plugins/MagicMenu/src/types/index.d.ts +1 -1
- package/package.json +1 -1
package/dist/nuxt/module.json
CHANGED
|
@@ -15,7 +15,11 @@
|
|
|
15
15
|
v-bind="$attrs"
|
|
16
16
|
v-if="innerActive"
|
|
17
17
|
>
|
|
18
|
-
<magic-menu-float
|
|
18
|
+
<magic-menu-float
|
|
19
|
+
:placement="placement"
|
|
20
|
+
:arrow="arrow"
|
|
21
|
+
:reference-el="referenceEl"
|
|
22
|
+
>
|
|
19
23
|
<template #arrow v-if="$slots.arrow && arrow">
|
|
20
24
|
<slot name="arrow" />
|
|
21
25
|
</template>
|
|
@@ -31,7 +35,16 @@
|
|
|
31
35
|
</template>
|
|
32
36
|
|
|
33
37
|
<script lang="ts" setup>
|
|
34
|
-
import {
|
|
38
|
+
import {
|
|
39
|
+
ref,
|
|
40
|
+
inject,
|
|
41
|
+
provide,
|
|
42
|
+
nextTick,
|
|
43
|
+
watch,
|
|
44
|
+
computed,
|
|
45
|
+
type MaybeRef,
|
|
46
|
+
type ComponentPublicInstance,
|
|
47
|
+
} from 'vue'
|
|
35
48
|
import type { Placement } from '@floating-ui/vue'
|
|
36
49
|
import { useMenuView } from '../composables/private/useMenuView'
|
|
37
50
|
import {
|
|
@@ -53,6 +66,7 @@ defineOptions({
|
|
|
53
66
|
interface MagicMenuContentProps {
|
|
54
67
|
placement?: Placement
|
|
55
68
|
arrow?: boolean
|
|
69
|
+
referenceEl?: MaybeRef<HTMLElement | ComponentPublicInstance>
|
|
56
70
|
}
|
|
57
71
|
|
|
58
72
|
defineProps<MagicMenuContentProps>()
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { type MaybeRef, type ComponentPublicInstance } from 'vue';
|
|
1
2
|
import type { Placement } from '@floating-ui/vue';
|
|
2
3
|
import '@maas/vue-equipment/utils/css/animations/fade-in.css';
|
|
3
4
|
import '@maas/vue-equipment/utils/css/animations/fade-out.css';
|
|
4
5
|
interface MagicMenuContentProps {
|
|
5
6
|
placement?: Placement;
|
|
6
7
|
arrow?: boolean;
|
|
8
|
+
referenceEl?: MaybeRef<HTMLElement | ComponentPublicInstance>;
|
|
7
9
|
}
|
|
8
10
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToOption<MagicMenuContentProps>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<MagicMenuContentProps>>>, {}, {}>, {
|
|
9
11
|
arrow?(_: {}): any;
|
|
@@ -22,7 +22,14 @@
|
|
|
22
22
|
</template>
|
|
23
23
|
|
|
24
24
|
<script lang="ts" setup>
|
|
25
|
-
import {
|
|
25
|
+
import {
|
|
26
|
+
ref,
|
|
27
|
+
computed,
|
|
28
|
+
inject,
|
|
29
|
+
toValue,
|
|
30
|
+
type MaybeRef,
|
|
31
|
+
type ComponentPublicInstance,
|
|
32
|
+
} from 'vue'
|
|
26
33
|
import {
|
|
27
34
|
useFloating,
|
|
28
35
|
autoUpdate,
|
|
@@ -39,6 +46,7 @@ import { useMenuState } from '../composables/private/useMenuState'
|
|
|
39
46
|
interface MagicMenuFloatProps {
|
|
40
47
|
placement?: Placement
|
|
41
48
|
arrow?: boolean
|
|
49
|
+
referenceEl?: MaybeRef<HTMLElement | ComponentPublicInstance>
|
|
42
50
|
}
|
|
43
51
|
|
|
44
52
|
const props = defineProps<MagicMenuFloatProps>()
|
|
@@ -113,6 +121,13 @@ const mappedMiddleware = computed(() => {
|
|
|
113
121
|
limiter: limitShift(),
|
|
114
122
|
})
|
|
115
123
|
)
|
|
124
|
+
if (hasArrow.value) {
|
|
125
|
+
middleware.push(
|
|
126
|
+
arrow({
|
|
127
|
+
element: arrowRef.value,
|
|
128
|
+
})
|
|
129
|
+
)
|
|
130
|
+
}
|
|
116
131
|
break
|
|
117
132
|
case 'context':
|
|
118
133
|
middleware.push(
|
|
@@ -127,8 +142,10 @@ const mappedMiddleware = computed(() => {
|
|
|
127
142
|
return middleware
|
|
128
143
|
})
|
|
129
144
|
|
|
130
|
-
const
|
|
131
|
-
if (
|
|
145
|
+
const mappedReferenceEl = computed(() => {
|
|
146
|
+
if (props.referenceEl) {
|
|
147
|
+
return toValue(props.referenceEl)
|
|
148
|
+
} else if (view?.click) {
|
|
132
149
|
return {
|
|
133
150
|
getBoundingClientRect() {
|
|
134
151
|
return {
|
|
@@ -149,7 +166,7 @@ const referenceEl = computed(() => {
|
|
|
149
166
|
})
|
|
150
167
|
|
|
151
168
|
const { floatingStyles, placement, middlewareData } = useFloating(
|
|
152
|
-
|
|
169
|
+
mappedReferenceEl,
|
|
153
170
|
elRef,
|
|
154
171
|
{
|
|
155
172
|
placement: mappedPlacement,
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type MaybeRef, type ComponentPublicInstance } from 'vue';
|
|
1
2
|
import { type Placement } from '@floating-ui/vue';
|
|
2
3
|
interface MagicMenuFloatProps {
|
|
3
4
|
placement?: Placement;
|
|
4
5
|
arrow?: boolean;
|
|
6
|
+
referenceEl?: MaybeRef<HTMLElement | ComponentPublicInstance>;
|
|
5
7
|
}
|
|
6
8
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToOption<MagicMenuFloatProps>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<MagicMenuFloatProps>>>, {}, {}>, {
|
|
7
9
|
arrow?(_: {}): any;
|
|
@@ -26,11 +26,11 @@ import {
|
|
|
26
26
|
MagicMenuItemId,
|
|
27
27
|
} from '../symbols'
|
|
28
28
|
|
|
29
|
-
import type {
|
|
29
|
+
import type { Interaction } from '../types'
|
|
30
30
|
|
|
31
31
|
interface MagicMenuTriggerProps {
|
|
32
32
|
disabled?: boolean
|
|
33
|
-
trigger?:
|
|
33
|
+
trigger?: Interaction[]
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
const props = defineProps<MagicMenuTriggerProps>()
|
|
@@ -60,7 +60,7 @@ const item = getItem(itemId ?? '')
|
|
|
60
60
|
|
|
61
61
|
const mappedDisabled = computed(() => props.disabled ?? item?.disabled)
|
|
62
62
|
|
|
63
|
-
const mappedTrigger = computed<
|
|
63
|
+
const mappedTrigger = computed<Interaction[]>(() => {
|
|
64
64
|
if (props.trigger?.length) {
|
|
65
65
|
return props.trigger
|
|
66
66
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Interaction } from '../types';
|
|
2
2
|
interface MagicMenuTriggerProps {
|
|
3
3
|
disabled?: boolean;
|
|
4
|
-
trigger?:
|
|
4
|
+
trigger?: Interaction[];
|
|
5
5
|
}
|
|
6
6
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToOption<MagicMenuTriggerProps>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<MagicMenuTriggerProps>>>, {}, {}>, {
|
|
7
7
|
default?(_: {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type ComputedRef, type MaybeRef, type Ref } from 'vue';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Interaction } from '../../types/index.js';
|
|
3
3
|
type UseMenuTriggerArgs = {
|
|
4
4
|
instanceId: MaybeRef<string>;
|
|
5
5
|
viewId: string;
|
|
6
6
|
itemId?: string;
|
|
7
7
|
mappedDisabled: ComputedRef<boolean>;
|
|
8
|
-
mappedTrigger: ComputedRef<
|
|
8
|
+
mappedTrigger: ComputedRef<Interaction[]>;
|
|
9
9
|
elRef: Ref<HTMLElement | undefined>;
|
|
10
10
|
};
|
|
11
11
|
export declare function useMenuTrigger(args: UseMenuTriggerArgs): {
|
|
@@ -164,13 +164,18 @@ export function useMenuTrigger(args) {
|
|
|
164
164
|
function onMouseenter() {
|
|
165
165
|
cancelPointermove?.();
|
|
166
166
|
resetState();
|
|
167
|
-
if (mappedTrigger.value.includes("mouseenter") &&
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
state.input.view = viewId;
|
|
167
|
+
if (mappedTrigger.value.includes("mouseenter") && !mappedDisabled.value && viewId && view) {
|
|
168
|
+
if (!mappedTrigger.value[0].includes("mouseenter")) {
|
|
169
|
+
state.active = true;
|
|
171
170
|
}
|
|
172
|
-
if (
|
|
173
|
-
|
|
171
|
+
if (state.active) {
|
|
172
|
+
selectView(viewId);
|
|
173
|
+
if (!itemId) {
|
|
174
|
+
state.input.view = viewId;
|
|
175
|
+
}
|
|
176
|
+
if (itemId) {
|
|
177
|
+
disableCursor();
|
|
178
|
+
}
|
|
174
179
|
}
|
|
175
180
|
}
|
|
176
181
|
}
|
|
@@ -8,7 +8,7 @@ export interface MagicMenuOptions {
|
|
|
8
8
|
nested?: string;
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
export type
|
|
11
|
+
export type Interaction = 'click' | 'mouseenter' | 'mouseleave' | 'right-click';
|
|
12
12
|
export type Coordinates = {
|
|
13
13
|
x: number;
|
|
14
14
|
y: number;
|
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.29.
|
|
4
|
+
"version": "0.29.6",
|
|
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",
|