@imengyu/vue3-context-menu 1.4.1 → 1.4.2

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.
@@ -7,6 +7,7 @@ export declare const MenuConstOptions: {
7
7
  defaultMinWidth: number;
8
8
  defaultMaxWidth: number;
9
9
  defaultZindex: number;
10
+ defaultZoom: number;
10
11
  defaultAdjustPadding: {
11
12
  x: number;
12
13
  y: number;
@@ -26,6 +27,125 @@ export interface ContextMenuInstance {
26
27
  * Check if the menu is currently closed.
27
28
  */
28
29
  isClosed(): boolean;
30
+ /**
31
+ * Get current Menu root instance.
32
+ * @returns Return ContextSubMenuInstance of root, return undefined if menu is not showing.
33
+ */
34
+ getMenuRef(): ContextSubMenuInstance | undefined;
35
+ /**
36
+ * Get root menu size.
37
+ * @returns Return root menu size in pixel, return all zero if menu is not showing.
38
+ */
39
+ getMenuDimensions(): {
40
+ width: number;
41
+ height: number;
42
+ };
43
+ }
44
+ /**
45
+ * Define that Submenu holder component exposed props
46
+ *
47
+ * Can get by `ContextMenuInstance.getMenuRef`.
48
+ */
49
+ export interface ContextSubMenuInstance {
50
+ /**
51
+ * Get Root element of this submenu
52
+ */
53
+ getSubmenuRoot: () => HTMLElement | undefined;
54
+ /**
55
+ * Get Inner container element of this submenu
56
+ */
57
+ getMenu: () => HTMLElement | undefined;
58
+ /**
59
+ * Get child menu item by array index, Only after the parent submenu is displayed can the child items be retrieved.
60
+ * @param index Array index
61
+ * @returns You can obtain control instance `MenuItemContext according to the index to control menu items.
62
+ */
63
+ getChildItem: (index: number) => MenuItemContext | undefined;
64
+ /**
65
+ * Get submenu root element size.
66
+ * @returns Return root menu size in pixel, return all zero if menu is not showing.
67
+ */
68
+ getMenuDimensions(): {
69
+ width: number;
70
+ height: number;
71
+ };
72
+ /**
73
+ * Get submenu current scroll value (same as element.scrollTop)
74
+ * @returns
75
+ */
76
+ getScrollValue: () => number;
77
+ /**
78
+ * Set submenu current scroll value (same as element.scrollTop)
79
+ * @returns
80
+ */
81
+ setScrollValue: (v: number) => void;
82
+ /**
83
+ * Get submenu max scroll height (same as element.scrollHeight)
84
+ * @returns
85
+ */
86
+ getScrollHeight: () => number;
87
+ /**
88
+ * Get max submenu height
89
+ * @returns
90
+ */
91
+ getMaxHeight: () => number;
92
+ /**
93
+ * Get submenu current position (Relative to the parent item)
94
+ * @returns
95
+ */
96
+ getPosition: () => {
97
+ x: number;
98
+ y: number;
99
+ };
100
+ /**
101
+ * Set submenu current position (Relative to the parent item)
102
+ * @returns
103
+ */
104
+ setPosition: (x: number, y: number) => void;
105
+ }
106
+ /**
107
+ * Ref define of ContextMenuGroup
108
+ */
109
+ export interface ContextMenuGroupRef {
110
+ /**
111
+ * Get ContextSubMenuInstance of this group
112
+ */
113
+ getSubMenuRef(): ContextSubMenuInstance;
114
+ /**
115
+ * Get MenuItemContext of this item.
116
+ */
117
+ getMenuItemRef(): ContextSubMenuInstance;
118
+ }
119
+ /**
120
+ * The internal info context for menu item
121
+ */
122
+ export interface MenuItemContext {
123
+ /**
124
+ * Get current showing submenu instance.
125
+ * @returns Return ContextSubMenuInstance of current submenu, return undefined if menu is not showing.
126
+ */
127
+ getSubMenuInstance: () => ContextSubMenuInstance | undefined;
128
+ /**
129
+ * Show submenu of this item.
130
+ * @returns
131
+ */
132
+ showSubMenu: () => boolean;
133
+ /**
134
+ * Force hide submenu of this item.
135
+ */
136
+ hideSubMenu: () => void;
137
+ /**
138
+ * Get html Element of this item.
139
+ */
140
+ getElement: () => HTMLElement | undefined;
141
+ /**
142
+ * Check is this item disabled or hidden.
143
+ * @returns
144
+ */
145
+ isDisabledOrHidden: () => boolean;
146
+ focus: () => void;
147
+ blur: () => void;
148
+ click: (e: MouseEvent | KeyboardEvent) => void;
29
149
  }
30
150
  export type MenuPopDirection = 'br' | 'b' | 'bl' | 'tr' | 't' | 'tl' | 'l' | 'r';
31
151
  export type MenuChildren = MenuItem[];
@@ -63,6 +183,10 @@ export interface MenuOptions {
63
183
  * The z-index of this menu.
64
184
  */
65
185
  zIndex?: number;
186
+ /**
187
+ * The zoom of this menu.
188
+ */
189
+ zoom?: number;
66
190
  /**
67
191
  * Custom menu class.
68
192
  */
@@ -105,7 +229,7 @@ export interface MenuOptions {
105
229
  --mx-menu-backgroud: #ececec;
106
230
  --mx-menu-hover-backgroud: #0165e1;
107
231
  }
108
-
232
+
109
233
  //Customize the style of the menu here
110
234
  padding: 8px 0;
111
235
  box-shadow: 0px 5px 7px 1px var(--mx-menu-shadow-color);
@@ -357,11 +481,11 @@ export interface MenuItem {
357
481
  /**
358
482
  * This event emit when submenu of this item is closing.
359
483
  */
360
- onSubMenuClose?: (() => void) | undefined;
484
+ onSubMenuClose?: ((itemInstance: MenuItemContext) => void) | undefined;
361
485
  /**
362
486
  * This event emit when submenu of this item is showing.
363
487
  */
364
- onSubMenuOpen?: (() => void) | undefined;
488
+ onSubMenuOpen?: ((itemInstance: MenuItemContext) => void) | undefined;
365
489
  /**
366
490
  * A custom render callback that allows you to customize the rendering
367
491
  * of the current item.
@@ -1,4 +1,4 @@
1
- import { type PropType, type SVGAttributes, type Ref } from 'vue';
1
+ import { type PropType, type SVGAttributes } from 'vue';
2
2
  import type { MenuItem } from './ContextMenuDefine';
3
3
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
4
4
  /**
@@ -126,8 +126,14 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
126
126
  default: undefined;
127
127
  };
128
128
  }, {
129
- showSubMenu: Ref<boolean>;
130
- keyBoardFocusMenu: Ref<boolean>;
129
+ getSubMenuInstance: () => import("./ContextMenuDefine").ContextSubMenuInstance | undefined;
130
+ showSubMenu: () => boolean;
131
+ hideSubMenu: () => void;
132
+ getElement: () => HTMLElement | undefined;
133
+ isDisabledOrHidden: () => boolean;
134
+ focus: () => void;
135
+ blur: () => void;
136
+ click: (e: MouseEvent | KeyboardEvent) => void;
131
137
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
132
138
  click: (...args: any[]) => void;
133
139
  subMenuOpen: (...args: any[]) => void;
@@ -1,15 +1,7 @@
1
1
  import { type PropType, type Ref } from 'vue';
2
- import type { MenuOptions, MenuItem, MenuPopDirection } from './ContextMenuDefine';
2
+ import type { MenuOptions, MenuItem, MenuPopDirection, MenuItemContext } from './ContextMenuDefine';
3
3
  import type { GlobalHasSlot, GlobalRenderSlot } from './ContextMenu.vue';
4
4
  import { solveNumberOrStringSize } from './ContextMenuUtils';
5
- export interface MenuItemContext {
6
- focus: () => void;
7
- blur: () => void;
8
- showSubMenu: () => boolean;
9
- getElement: () => HTMLElement | undefined;
10
- isDisabledOrHidden: () => boolean;
11
- click: (e: MouseEvent | KeyboardEvent) => void;
12
- }
13
5
  export interface SubMenuContext {
14
6
  isTopLevel: () => boolean;
15
7
  closeSelfAndActiveParent: () => boolean;
@@ -36,6 +28,7 @@ export interface SubMenuParentContext {
36
28
  getParentAbsX: () => number;
37
29
  getParentAbsY: () => number;
38
30
  getPositon: () => [number, number];
31
+ getZoom: () => number;
39
32
  addOpenedSubMenu: (closeFn: () => void) => void;
40
33
  closeOtherSubMenu: () => void;
41
34
  closeOtherSubMenuWithTimeOut: () => void;
@@ -91,6 +84,30 @@ declare const _default: import("vue").DefineComponent<{
91
84
  default: string;
92
85
  };
93
86
  }, {
87
+ globalHasSlot: GlobalHasSlot;
88
+ globalRenderSlot: GlobalRenderSlot;
89
+ onScroll: (down: boolean) => void;
90
+ onSubMenuBodyClick: () => void;
91
+ onMouseWhell: (e: WheelEvent) => void;
92
+ onMouseWhellMx: (e: WheelEvent) => void;
93
+ solveNumberOrStringSize: typeof solveNumberOrStringSize;
94
+ getSubmenuRoot: () => HTMLElement | undefined;
95
+ getMenu: () => HTMLElement | undefined;
96
+ getChildItem: (index: number) => MenuItemContext | undefined;
97
+ getMenuDimensions(): {
98
+ width: number;
99
+ height: number;
100
+ };
101
+ getScrollValue: () => number;
102
+ setScrollValue: (v: number) => void;
103
+ getScrollHeight: () => number;
104
+ getMaxHeight: () => number;
105
+ getPosition: () => {
106
+ x: number;
107
+ y: number;
108
+ };
109
+ setPosition: (x: number, y: number) => void;
110
+ submenuRoot: Ref<HTMLElement | undefined>;
94
111
  menu: Ref<HTMLElement | undefined>;
95
112
  scroll: Ref<HTMLElement | undefined>;
96
113
  options: Ref<MenuOptions>;
@@ -100,6 +117,7 @@ declare const _default: import("vue").DefineComponent<{
100
117
  defaultMinWidth: number;
101
118
  defaultMaxWidth: number;
102
119
  defaultZindex: number;
120
+ defaultZoom: number;
103
121
  defaultAdjustPadding: {
104
122
  x: number;
105
123
  y: number;
@@ -114,13 +132,6 @@ declare const _default: import("vue").DefineComponent<{
114
132
  }>;
115
133
  scrollHeight: Ref<number>;
116
134
  maxHeight: Ref<number>;
117
- globalHasSlot: GlobalHasSlot;
118
- globalRenderSlot: GlobalRenderSlot;
119
- onScroll: (down: boolean) => void;
120
- onSubMenuBodyClick: () => void;
121
- onMouseWhell: (e: WheelEvent) => void;
122
- onMouseWhellMx: (e: WheelEvent) => void;
123
- solveNumberOrStringSize: typeof solveNumberOrStringSize;
124
135
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
125
136
  /**
126
137
  * Items from options
@@ -1,12 +1,10 @@
1
1
  import { type PropType, type VNode, type Ref } from 'vue';
2
- import type { MenuItem, MenuOptions } from './ContextMenuDefine';
2
+ import type { ContextSubMenuInstance, MenuItem, MenuOptions } from './ContextMenuDefine';
3
3
  /**
4
4
  * Context menu component
5
5
  */
6
6
  export type GlobalHasSlot = (name: string) => boolean;
7
7
  export type GlobalRenderSlot = (name: string, params: Record<string, unknown>) => VNode;
8
- declare function closeMenu(fromItem?: MenuItem | undefined): void;
9
- declare function isClosed(): boolean;
10
8
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
11
9
  /**
12
10
  * Menu options
@@ -37,8 +35,13 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
37
35
  default: boolean;
38
36
  };
39
37
  }, {
40
- closeMenu: typeof closeMenu;
41
- isClosed: typeof isClosed;
38
+ closeMenu(fromItem?: MenuItem | undefined): void;
39
+ isClosed(): boolean;
40
+ getMenuRef(): ContextSubMenuInstance | undefined;
41
+ getMenuDimensions(): {
42
+ width: number;
43
+ height: number;
44
+ };
42
45
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
43
46
  close: (...args: any[]) => void;
44
47
  closeAnimFinished: (...args: any[]) => void;