@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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@maas/vue-equipment/nuxt",
3
3
  "configKey": "vueEquipment",
4
- "version": "0.29.4",
4
+ "version": "0.29.5",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "0.8.0",
7
7
  "unbuild": "unknown"
@@ -15,7 +15,11 @@
15
15
  v-bind="$attrs"
16
16
  v-if="innerActive"
17
17
  >
18
- <magic-menu-float :placement="placement" :arrow="arrow">
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 { ref, inject, provide, nextTick, watch, computed } from 'vue'
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 { ref, computed, inject } from 'vue'
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 referenceEl = computed(() => {
131
- if (view?.click) {
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
- referenceEl,
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 { MenuTrigger } from '../types'
29
+ import type { Interaction } from '../types'
30
30
 
31
31
  interface MagicMenuTriggerProps {
32
32
  disabled?: boolean
33
- trigger?: MenuTrigger[]
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<MenuTrigger[]>(() => {
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 { MenuTrigger } from '../types';
1
+ import type { Interaction } from '../types';
2
2
  interface MagicMenuTriggerProps {
3
3
  disabled?: boolean;
4
- trigger?: MenuTrigger[];
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 { MenuTrigger } from '../../types/index.js';
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<MenuTrigger[]>;
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") && view && viewId && state.active && !mappedDisabled.value) {
168
- selectView(viewId);
169
- if (!itemId) {
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 (itemId) {
173
- disableCursor();
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 MenuTrigger = 'click' | 'mouseenter' | 'mouseleave' | 'right-click';
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.5",
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",