@v-c/menu 0.0.3 → 0.0.5

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/Icon.cjs CHANGED
@@ -5,15 +5,18 @@ let __v_c_util_dist_props_util = require("@v-c/util/dist/props-util");
5
5
  var Icon = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots }) => {
6
6
  return () => {
7
7
  const { icon, props: iconProps } = props;
8
+ const children = slots.default?.();
8
9
  let iconNode;
9
10
  if (icon === null || icon === false) return null;
10
11
  if (typeof icon === "function") {
11
12
  const childIcons = icon(iconProps);
12
- const iconChild = (0, __v_c_util_dist_props_util.filterEmpty)(Array.isArray(childIcons) ? childIcons : [childIcons])?.[0];
13
- if ((0, vue.isVNode)(iconChild)) iconNode = (0, vue.createVNode)(iconChild);
14
- else iconNode = iconChild;
13
+ if (!childIcons) {
14
+ iconNode = null;
15
+ return children;
16
+ }
17
+ iconNode = (0, __v_c_util_dist_props_util.filterEmpty)(childIcons ? Array.isArray(childIcons) ? childIcons : [childIcons] : []);
15
18
  } else if (typeof icon !== "boolean") iconNode = icon;
16
- return iconNode || slots.default?.(iconProps) || null;
19
+ return iconNode || children || null;
17
20
  };
18
21
  }, { props: {
19
22
  icon: {
package/dist/Icon.js CHANGED
@@ -1,17 +1,20 @@
1
- import { createVNode, defineComponent, isVNode } from "vue";
1
+ import { defineComponent } from "vue";
2
2
  import { filterEmpty } from "@v-c/util/dist/props-util";
3
3
  var Icon_default = /* @__PURE__ */ defineComponent((props, { slots }) => {
4
4
  return () => {
5
5
  const { icon, props: iconProps } = props;
6
+ const children = slots.default?.();
6
7
  let iconNode;
7
8
  if (icon === null || icon === false) return null;
8
9
  if (typeof icon === "function") {
9
10
  const childIcons = icon(iconProps);
10
- const iconChild = filterEmpty(Array.isArray(childIcons) ? childIcons : [childIcons])?.[0];
11
- if (isVNode(iconChild)) iconNode = createVNode(iconChild);
12
- else iconNode = iconChild;
11
+ if (!childIcons) {
12
+ iconNode = null;
13
+ return children;
14
+ }
15
+ iconNode = filterEmpty(childIcons ? Array.isArray(childIcons) ? childIcons : [childIcons] : []);
13
16
  } else if (typeof icon !== "boolean") iconNode = icon;
14
- return iconNode || slots.default?.(iconProps) || null;
17
+ return iconNode || children || null;
15
18
  };
16
19
  }, { props: {
17
20
  icon: {
package/dist/Menu.cjs CHANGED
@@ -140,11 +140,11 @@ var Menu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots, expose, att
140
140
  }
141
141
  if (!props.multiple && mergedOpenKeys.value.length && internalMode.value !== "inline") triggerOpenKeys(EMPTY_LIST);
142
142
  };
143
- const onInternalClick = require_useMemoCallback.default((info) => {
143
+ const onInternalClick = (info) => {
144
144
  props.onClick?.(require_warnUtil.warnItemProp(info));
145
145
  triggerSelection(info);
146
- });
147
- const onInternalOpenChange = require_useMemoCallback.default((key, open) => {
146
+ };
147
+ const onInternalOpenChange = (key, open) => {
148
148
  let newOpenKeys = mergedOpenKeys.value.filter((k) => k !== key);
149
149
  if (open) newOpenKeys.push(key);
150
150
  else if (internalMode.value !== "inline") {
@@ -152,7 +152,7 @@ var Menu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots, expose, att
152
152
  newOpenKeys = newOpenKeys.filter((k) => !subPathKeys.has(k));
153
153
  }
154
154
  if (!(0, __v_c_util_dist_isEqual.default)(mergedOpenKeys.value, newOpenKeys, true)) triggerOpenKeys(newOpenKeys, true);
155
- });
155
+ };
156
156
  const triggerAccessibilityOpen = (key, open) => {
157
157
  onInternalOpenChange(key, open ?? !mergedOpenKeys.value.includes(key));
158
158
  };
@@ -181,8 +181,8 @@ var Menu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots, expose, att
181
181
  require_MenuContext.useMenuContextProvider((0, vue.computed)(() => {
182
182
  return {
183
183
  prefixCls: props.prefixCls || defaults.prefixCls,
184
- rootClassName: props.rootClassName,
185
- classNames: props.classNames,
184
+ rootClass: props.rootClass,
185
+ classes: props.classes,
186
186
  styles: props.styles,
187
187
  mode: internalMode.value,
188
188
  openKeys: mergedOpenKeys.value,
@@ -236,7 +236,7 @@ var Menu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots, expose, att
236
236
  const wrappedChildList = internalMode.value !== "horizontal" || props?.disabledOverflow ? childList.value : childList.value.map((child, index) => (0, vue.createVNode)(require_MenuContext.default, {
237
237
  "key": child.key,
238
238
  "overflowDisabled": index > lastVisibleIndex.value,
239
- "classNames": props.classNames,
239
+ "classes": props.classes,
240
240
  "styles": props.styles
241
241
  }, _isSlot(child) ? child : { default: () => [child] }));
242
242
  const container = (0, vue.createVNode)(__v_c_overflow.default, (0, vue.mergeProps)({
@@ -247,7 +247,7 @@ var Menu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots, expose, att
247
247
  "class": (0, __v_c_util.classNames)(props.prefixCls || defaults.prefixCls, `${props.prefixCls || defaults.prefixCls}-root`, `${props.prefixCls || defaults.prefixCls}-${internalMode.value}`, _attrs.class || "", {
248
248
  [`${props.prefixCls || defaults.prefixCls}-inline-collapsed`]: internalInlineCollapsed.value,
249
249
  [`${props.prefixCls || defaults.prefixCls}-rtl`]: isRtl.value
250
- }, props.rootClassName),
250
+ }, props.rootClass),
251
251
  "style": _attrs.style,
252
252
  "data": wrappedChildList,
253
253
  "renderRawItem": (node) => {
@@ -283,12 +283,12 @@ var Menu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots, expose, att
283
283
  required: false,
284
284
  default: void 0
285
285
  },
286
- rootClassName: {
286
+ rootClass: {
287
287
  type: String,
288
288
  required: false,
289
289
  default: void 0
290
290
  },
291
- classNames: {
291
+ classes: {
292
292
  type: Object,
293
293
  required: false,
294
294
  default: void 0
@@ -505,7 +505,8 @@ var Menu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots, expose, att
505
505
  default: void 0
506
506
  }
507
507
  }, defaults),
508
- name: "VcMenu"
508
+ name: "VcMenu",
509
+ inheritAttrs: false
509
510
  });
510
511
  var Menu_default = Menu;
511
512
  exports.default = Menu_default;
package/dist/Menu.d.ts CHANGED
@@ -5,8 +5,8 @@ import { BuiltinPlacements, Components, ItemType, MenuClickEventHandler, MenuMod
5
5
  import { SemanticName } from './SubMenu';
6
6
  export interface MenuProps {
7
7
  prefixCls?: string;
8
- rootClassName?: string;
9
- classNames?: Partial<Record<SemanticName, string>>;
8
+ rootClass?: string;
9
+ classes?: Partial<Record<SemanticName, string>>;
10
10
  styles?: Partial<Record<SemanticName, CSSProperties>>;
11
11
  items?: ItemType[];
12
12
  disabled?: boolean;
package/dist/Menu.js CHANGED
@@ -135,11 +135,11 @@ var Menu_default = /* @__PURE__ */ defineComponent((props, { slots, expose, attr
135
135
  }
136
136
  if (!props.multiple && mergedOpenKeys.value.length && internalMode.value !== "inline") triggerOpenKeys(EMPTY_LIST);
137
137
  };
138
- const onInternalClick = useMemoCallback((info) => {
138
+ const onInternalClick = (info) => {
139
139
  props.onClick?.(warnItemProp(info));
140
140
  triggerSelection(info);
141
- });
142
- const onInternalOpenChange = useMemoCallback((key, open) => {
141
+ };
142
+ const onInternalOpenChange = (key, open) => {
143
143
  let newOpenKeys = mergedOpenKeys.value.filter((k) => k !== key);
144
144
  if (open) newOpenKeys.push(key);
145
145
  else if (internalMode.value !== "inline") {
@@ -147,7 +147,7 @@ var Menu_default = /* @__PURE__ */ defineComponent((props, { slots, expose, attr
147
147
  newOpenKeys = newOpenKeys.filter((k) => !subPathKeys.has(k));
148
148
  }
149
149
  if (!isEqual(mergedOpenKeys.value, newOpenKeys, true)) triggerOpenKeys(newOpenKeys, true);
150
- });
150
+ };
151
151
  const triggerAccessibilityOpen = (key, open) => {
152
152
  onInternalOpenChange(key, open ?? !mergedOpenKeys.value.includes(key));
153
153
  };
@@ -176,8 +176,8 @@ var Menu_default = /* @__PURE__ */ defineComponent((props, { slots, expose, attr
176
176
  useMenuContextProvider(computed(() => {
177
177
  return {
178
178
  prefixCls: props.prefixCls || defaults.prefixCls,
179
- rootClassName: props.rootClassName,
180
- classNames: props.classNames,
179
+ rootClass: props.rootClass,
180
+ classes: props.classes,
181
181
  styles: props.styles,
182
182
  mode: internalMode.value,
183
183
  openKeys: mergedOpenKeys.value,
@@ -231,7 +231,7 @@ var Menu_default = /* @__PURE__ */ defineComponent((props, { slots, expose, attr
231
231
  const wrappedChildList = internalMode.value !== "horizontal" || props?.disabledOverflow ? childList.value : childList.value.map((child, index) => createVNode(MenuContext_default, {
232
232
  "key": child.key,
233
233
  "overflowDisabled": index > lastVisibleIndex.value,
234
- "classNames": props.classNames,
234
+ "classes": props.classes,
235
235
  "styles": props.styles
236
236
  }, _isSlot(child) ? child : { default: () => [child] }));
237
237
  const container = createVNode(Overflow, mergeProps({
@@ -242,7 +242,7 @@ var Menu_default = /* @__PURE__ */ defineComponent((props, { slots, expose, attr
242
242
  "class": classNames(props.prefixCls || defaults.prefixCls, `${props.prefixCls || defaults.prefixCls}-root`, `${props.prefixCls || defaults.prefixCls}-${internalMode.value}`, _attrs.class || "", {
243
243
  [`${props.prefixCls || defaults.prefixCls}-inline-collapsed`]: internalInlineCollapsed.value,
244
244
  [`${props.prefixCls || defaults.prefixCls}-rtl`]: isRtl.value
245
- }, props.rootClassName),
245
+ }, props.rootClass),
246
246
  "style": _attrs.style,
247
247
  "data": wrappedChildList,
248
248
  "renderRawItem": (node) => {
@@ -278,12 +278,12 @@ var Menu_default = /* @__PURE__ */ defineComponent((props, { slots, expose, attr
278
278
  required: false,
279
279
  default: void 0
280
280
  },
281
- rootClassName: {
281
+ rootClass: {
282
282
  type: String,
283
283
  required: false,
284
284
  default: void 0
285
285
  },
286
- classNames: {
286
+ classes: {
287
287
  type: Object,
288
288
  required: false,
289
289
  default: void 0
@@ -500,6 +500,7 @@ var Menu_default = /* @__PURE__ */ defineComponent((props, { slots, expose, attr
500
500
  default: void 0
501
501
  }
502
502
  }, defaults),
503
- name: "VcMenu"
503
+ name: "VcMenu",
504
+ inheritAttrs: false
504
505
  });
505
506
  export { Menu_default as default };
package/dist/MenuItem.cjs CHANGED
@@ -219,7 +219,7 @@ var MenuItem = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots, attrs }
219
219
  onCleanup(() => {
220
220
  measure?.unregisterPath(eventKey.value, connectedKeyPath.value);
221
221
  });
222
- });
222
+ }, { immediate: true });
223
223
  return () => {
224
224
  if (measure) return null;
225
225
  return (0, vue.createVNode)(InternalMenuItem, {
package/dist/MenuItem.js CHANGED
@@ -214,7 +214,7 @@ var MenuItem_default = /* @__PURE__ */ defineComponent((props, { slots, attrs })
214
214
  onCleanup(() => {
215
215
  measure?.unregisterPath(eventKey.value, connectedKeyPath.value);
216
216
  });
217
- });
217
+ }, { immediate: true });
218
218
  return () => {
219
219
  if (measure) return null;
220
220
  return createVNode(InternalMenuItem, {
@@ -15,7 +15,7 @@ var InternalMenuItemGroup = /* @__PURE__ */ (0, vue.defineComponent)((props, { s
15
15
  const context = require_MenuContext.useMenuContext();
16
16
  return () => {
17
17
  const { class: className, title, eventKey,...restProps } = props;
18
- const { prefixCls, classNames: menuClassNames, styles } = context?.value ?? {};
18
+ const { prefixCls, classes: menuClassNames, styles } = context?.value ?? {};
19
19
  const groupPrefixCls = `${prefixCls}-item-group`;
20
20
  return (0, vue.createVNode)("li", (0, vue.mergeProps)({ "role": "presentation" }, restProps, {
21
21
  "onClick": (e) => e.stopPropagation(),
@@ -31,33 +31,36 @@ var InternalMenuItemGroup = /* @__PURE__ */ (0, vue.defineComponent)((props, { s
31
31
  "style": styles?.list
32
32
  }, [slots?.default ? slots.default() : null])]);
33
33
  };
34
- }, { props: {
35
- title: {
36
- type: null,
37
- required: false,
38
- default: void 0
39
- },
40
- eventKey: {
41
- type: String,
42
- required: false,
43
- default: void 0
44
- },
45
- warnKey: {
46
- type: Boolean,
47
- required: false,
48
- default: void 0
49
- },
50
- style: {
51
- type: null,
52
- required: false,
53
- default: void 0
34
+ }, {
35
+ props: {
36
+ title: {
37
+ type: null,
38
+ required: false,
39
+ default: void 0
40
+ },
41
+ eventKey: {
42
+ type: String,
43
+ required: false,
44
+ default: void 0
45
+ },
46
+ warnKey: {
47
+ type: Boolean,
48
+ required: false,
49
+ default: void 0
50
+ },
51
+ style: {
52
+ type: null,
53
+ required: false,
54
+ default: void 0
55
+ },
56
+ class: {
57
+ type: String,
58
+ required: false,
59
+ default: void 0
60
+ }
54
61
  },
55
- class: {
56
- type: String,
57
- required: false,
58
- default: void 0
59
- }
60
- } });
62
+ name: "InternalMenuItemGroup"
63
+ });
61
64
  var MenuItemGroup = /* @__PURE__ */ (0, vue.defineComponent)((props, ctx) => {
62
65
  const connectedKeyPath = require_PathContext.useFullPath((0, vue.computed)(() => props.eventKey));
63
66
  const measure = require_PathContext.useMeasure();
@@ -12,7 +12,7 @@ var InternalMenuItemGroup = /* @__PURE__ */ defineComponent((props, { slots }) =
12
12
  const context = useMenuContext();
13
13
  return () => {
14
14
  const { class: className, title, eventKey,...restProps } = props;
15
- const { prefixCls, classNames: menuClassNames, styles } = context?.value ?? {};
15
+ const { prefixCls, classes: menuClassNames, styles } = context?.value ?? {};
16
16
  const groupPrefixCls = `${prefixCls}-item-group`;
17
17
  return createVNode("li", mergeProps({ "role": "presentation" }, restProps, {
18
18
  "onClick": (e) => e.stopPropagation(),
@@ -28,33 +28,36 @@ var InternalMenuItemGroup = /* @__PURE__ */ defineComponent((props, { slots }) =
28
28
  "style": styles?.list
29
29
  }, [slots?.default ? slots.default() : null])]);
30
30
  };
31
- }, { props: {
32
- title: {
33
- type: null,
34
- required: false,
35
- default: void 0
36
- },
37
- eventKey: {
38
- type: String,
39
- required: false,
40
- default: void 0
41
- },
42
- warnKey: {
43
- type: Boolean,
44
- required: false,
45
- default: void 0
46
- },
47
- style: {
48
- type: null,
49
- required: false,
50
- default: void 0
31
+ }, {
32
+ props: {
33
+ title: {
34
+ type: null,
35
+ required: false,
36
+ default: void 0
37
+ },
38
+ eventKey: {
39
+ type: String,
40
+ required: false,
41
+ default: void 0
42
+ },
43
+ warnKey: {
44
+ type: Boolean,
45
+ required: false,
46
+ default: void 0
47
+ },
48
+ style: {
49
+ type: null,
50
+ required: false,
51
+ default: void 0
52
+ },
53
+ class: {
54
+ type: String,
55
+ required: false,
56
+ default: void 0
57
+ }
51
58
  },
52
- class: {
53
- type: String,
54
- required: false,
55
- default: void 0
56
- }
57
- } });
59
+ name: "InternalMenuItemGroup"
60
+ });
58
61
  var MenuItemGroup_default = /* @__PURE__ */ defineComponent((props, ctx) => {
59
62
  const connectedKeyPath = useFullPath(computed(() => props.eventKey));
60
63
  const measure = useMeasure();
@@ -62,10 +62,10 @@ var PopupTrigger = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots }) =
62
62
  });
63
63
  return () => {
64
64
  const { popupClassName, popup, popupStyle, popupOffset, disabled, onVisibleChange, prefixCls } = props;
65
- const { rtl, rootClassName, mode, getPopupContainer, triggerSubMenuAction, subMenuCloseDelay, subMenuOpenDelay, forceSubMenuRender } = menuContext?.value ?? {};
65
+ const { rtl, rootClass, mode, getPopupContainer, triggerSubMenuAction, subMenuCloseDelay, subMenuOpenDelay, forceSubMenuRender } = menuContext?.value ?? {};
66
66
  return (0, vue.createVNode)(__v_c_trigger.default, {
67
67
  "prefixCls": prefixCls,
68
- "popupClassName": (0, __v_c_util.clsx)(`${prefixCls}-popup`, { [`${prefixCls}-rtl`]: rtl }, popupClassName, rootClassName),
68
+ "popupClassName": (0, __v_c_util.clsx)(`${prefixCls}-popup`, { [`${prefixCls}-rtl`]: rtl }, popupClassName, rootClass),
69
69
  "stretch": mode === "horizontal" ? "minWidth" : void 0,
70
70
  "getPopupContainer": getPopupContainer,
71
71
  "builtinPlacements": placement.value,
@@ -58,10 +58,10 @@ var PopupTrigger_default = /* @__PURE__ */ defineComponent((props, { slots }) =>
58
58
  });
59
59
  return () => {
60
60
  const { popupClassName, popup, popupStyle, popupOffset, disabled, onVisibleChange, prefixCls } = props;
61
- const { rtl, rootClassName, mode, getPopupContainer, triggerSubMenuAction, subMenuCloseDelay, subMenuOpenDelay, forceSubMenuRender } = menuContext?.value ?? {};
61
+ const { rtl, rootClass, mode, getPopupContainer, triggerSubMenuAction, subMenuCloseDelay, subMenuOpenDelay, forceSubMenuRender } = menuContext?.value ?? {};
62
62
  return createVNode(Trigger, {
63
63
  "prefixCls": prefixCls,
64
- "popupClassName": clsx(`${prefixCls}-popup`, { [`${prefixCls}-rtl`]: rtl }, popupClassName, rootClassName),
64
+ "popupClassName": clsx(`${prefixCls}-popup`, { [`${prefixCls}-rtl`]: rtl }, popupClassName, rootClass),
65
65
  "stretch": mode === "horizontal" ? "minWidth" : void 0,
66
66
  "getPopupContainer": getPopupContainer,
67
67
  "builtinPlacements": placement.value,
@@ -107,7 +107,7 @@ var InternalSubMenu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots,
107
107
  else triggerModeRef.value = mode.value;
108
108
  }, { immediate: true });
109
109
  return () => {
110
- const { style, title, class: className, popupClassName, popupOffset, popupStyle,...restProps } = props;
110
+ const { style, title, class: className, popupClassName, popupOffset, popupStyle, classes, styles,...restProps } = props;
111
111
  const children = slots.default?.();
112
112
  const popupId = domDataId.value && `${domDataId.value}-popup`;
113
113
  const expandIconProps = {
@@ -140,8 +140,8 @@ var InternalSubMenu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots,
140
140
  const popupContentTriggerMode = triggerModeRef.value;
141
141
  const renderPopupContent = () => {
142
142
  const originNode = (0, vue.createVNode)(require_MenuContext.default, {
143
- "classNames": props.classNames,
144
- "styles": props.styles,
143
+ "classes": classes,
144
+ "styles": styles,
145
145
  "mode": popupContentTriggerMode === "horizontal" ? "vertical" : popupContentTriggerMode
146
146
  }, { default: () => [(0, vue.createVNode)(require_SubMenuList.default, { "id": popupId }, _isSlot(children) ? children : { default: () => [children] })] });
147
147
  const mergedPopupRender = props?.popupRender || contextPopupRender.value;
@@ -194,7 +194,7 @@ var InternalSubMenu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots,
194
194
  };
195
195
  }, {
196
196
  props: {
197
- classNames: {
197
+ classes: {
198
198
  type: Object,
199
199
  required: false,
200
200
  default: void 0
@@ -239,7 +239,7 @@ var InternalSubMenu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots,
239
239
  required: false,
240
240
  default: void 0
241
241
  },
242
- rootClassName: {
242
+ rootClass: {
243
243
  type: String,
244
244
  required: false,
245
245
  default: void 0
@@ -330,23 +330,27 @@ var InternalSubMenu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots,
330
330
  inheritAttrs: false
331
331
  });
332
332
  var SubMenu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots }) => {
333
- const connectedKeyPath = require_PathContext.useFullPath((0, vue.computed)(() => props?.eventKey));
333
+ const eventKey = (0, vue.computed)(() => props?.eventKey);
334
+ const connectedKeyPath = require_PathContext.useFullPath(eventKey);
334
335
  const measure = require_PathContext.useMeasure();
335
336
  const validKeyPath = (0, vue.computed)(() => connectedKeyPath.value.filter((k) => k !== void 0));
336
- (0, vue.watch)([validKeyPath, () => props.eventKey], () => {
337
- if (measure && props.eventKey) measure.registerPath(props.eventKey, validKeyPath.value);
338
- });
337
+ (0, vue.watch)([connectedKeyPath], (_n, _o, onCleanup) => {
338
+ if (measure) measure.registerPath(eventKey.value, connectedKeyPath.value);
339
+ onCleanup(() => {
340
+ measure?.unregisterPath(eventKey.value, connectedKeyPath.value);
341
+ });
342
+ }, { immediate: true });
339
343
  return () => {
340
344
  const children = slots.default?.();
341
345
  const childList = require_commonUtil.parseChildren(children, validKeyPath.value);
342
346
  let renderNode;
343
347
  if (measure) renderNode = childList;
344
348
  else renderNode = (0, vue.createVNode)(InternalSubMenu, props, _isSlot(childList) ? childList : { default: () => [childList] });
345
- return (0, vue.createVNode)(require_PathContext.PathTrackerContext.Provider, { "value": validKeyPath.value }, _isSlot(renderNode) ? renderNode : { default: () => [renderNode] });
349
+ return (0, vue.createVNode)(require_PathContext.PathTrackerContext.Provider, { "value": connectedKeyPath.value }, _isSlot(renderNode) ? renderNode : { default: () => [renderNode] });
346
350
  };
347
351
  }, {
348
352
  props: {
349
- classNames: {
353
+ classes: {
350
354
  type: Object,
351
355
  required: false,
352
356
  default: void 0
@@ -391,7 +395,7 @@ var SubMenu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots }) => {
391
395
  required: false,
392
396
  default: void 0
393
397
  },
394
- rootClassName: {
398
+ rootClass: {
395
399
  type: String,
396
400
  required: false,
397
401
  default: void 0
@@ -3,7 +3,7 @@ import { CSSProperties } from 'vue';
3
3
  import { PopupRender, SubMenuType } from '../interface';
4
4
  export type SemanticName = 'list' | 'listTitle';
5
5
  export interface SubMenuProps extends Omit<SubMenuType, 'key' | 'children' | 'label'> {
6
- classNames?: Partial<Record<SemanticName, string>>;
6
+ classes?: Partial<Record<SemanticName, string>>;
7
7
  styles?: Partial<Record<SemanticName, CSSProperties>>;
8
8
  title?: VueNode;
9
9
  /** @private Used for rest popup. Do not use in your prod */
@@ -103,7 +103,7 @@ var InternalSubMenu = /* @__PURE__ */ defineComponent((props, { slots, attrs })
103
103
  else triggerModeRef.value = mode.value;
104
104
  }, { immediate: true });
105
105
  return () => {
106
- const { style, title, class: className, popupClassName, popupOffset, popupStyle,...restProps } = props;
106
+ const { style, title, class: className, popupClassName, popupOffset, popupStyle, classes, styles,...restProps } = props;
107
107
  const children = slots.default?.();
108
108
  const popupId = domDataId.value && `${domDataId.value}-popup`;
109
109
  const expandIconProps = {
@@ -136,8 +136,8 @@ var InternalSubMenu = /* @__PURE__ */ defineComponent((props, { slots, attrs })
136
136
  const popupContentTriggerMode = triggerModeRef.value;
137
137
  const renderPopupContent = () => {
138
138
  const originNode = createVNode(MenuContext_default, {
139
- "classNames": props.classNames,
140
- "styles": props.styles,
139
+ "classes": classes,
140
+ "styles": styles,
141
141
  "mode": popupContentTriggerMode === "horizontal" ? "vertical" : popupContentTriggerMode
142
142
  }, { default: () => [createVNode(SubMenuList_default, { "id": popupId }, _isSlot(children) ? children : { default: () => [children] })] });
143
143
  const mergedPopupRender = props?.popupRender || contextPopupRender.value;
@@ -190,7 +190,7 @@ var InternalSubMenu = /* @__PURE__ */ defineComponent((props, { slots, attrs })
190
190
  };
191
191
  }, {
192
192
  props: {
193
- classNames: {
193
+ classes: {
194
194
  type: Object,
195
195
  required: false,
196
196
  default: void 0
@@ -235,7 +235,7 @@ var InternalSubMenu = /* @__PURE__ */ defineComponent((props, { slots, attrs })
235
235
  required: false,
236
236
  default: void 0
237
237
  },
238
- rootClassName: {
238
+ rootClass: {
239
239
  type: String,
240
240
  required: false,
241
241
  default: void 0
@@ -326,23 +326,27 @@ var InternalSubMenu = /* @__PURE__ */ defineComponent((props, { slots, attrs })
326
326
  inheritAttrs: false
327
327
  });
328
328
  var SubMenu_default = /* @__PURE__ */ defineComponent((props, { slots }) => {
329
- const connectedKeyPath = useFullPath(computed(() => props?.eventKey));
329
+ const eventKey = computed(() => props?.eventKey);
330
+ const connectedKeyPath = useFullPath(eventKey);
330
331
  const measure = useMeasure();
331
332
  const validKeyPath = computed(() => connectedKeyPath.value.filter((k) => k !== void 0));
332
- watch([validKeyPath, () => props.eventKey], () => {
333
- if (measure && props.eventKey) measure.registerPath(props.eventKey, validKeyPath.value);
334
- });
333
+ watch([connectedKeyPath], (_n, _o, onCleanup) => {
334
+ if (measure) measure.registerPath(eventKey.value, connectedKeyPath.value);
335
+ onCleanup(() => {
336
+ measure?.unregisterPath(eventKey.value, connectedKeyPath.value);
337
+ });
338
+ }, { immediate: true });
335
339
  return () => {
336
340
  const children = slots.default?.();
337
341
  const childList = parseChildren(children, validKeyPath.value);
338
342
  let renderNode;
339
343
  if (measure) renderNode = childList;
340
344
  else renderNode = createVNode(InternalSubMenu, props, _isSlot(childList) ? childList : { default: () => [childList] });
341
- return createVNode(PathTrackerContext.Provider, { "value": validKeyPath.value }, _isSlot(renderNode) ? renderNode : { default: () => [renderNode] });
345
+ return createVNode(PathTrackerContext.Provider, { "value": connectedKeyPath.value }, _isSlot(renderNode) ? renderNode : { default: () => [renderNode] });
342
346
  };
343
347
  }, {
344
348
  props: {
345
- classNames: {
349
+ classes: {
346
350
  type: Object,
347
351
  required: false,
348
352
  default: void 0
@@ -387,7 +391,7 @@ var SubMenu_default = /* @__PURE__ */ defineComponent((props, { slots }) => {
387
391
  required: false,
388
392
  default: void 0
389
393
  },
390
- rootClassName: {
394
+ rootClass: {
391
395
  type: String,
392
396
  required: false,
393
397
  default: void 0
@@ -38,7 +38,7 @@ var InheritableContextProvider = /* @__PURE__ */ (0, vue.defineComponent)((props
38
38
  required: false,
39
39
  default: void 0
40
40
  },
41
- classNames: {
41
+ classes: {
42
42
  type: Object,
43
43
  required: false,
44
44
  default: void 0
@@ -48,7 +48,7 @@ var InheritableContextProvider = /* @__PURE__ */ (0, vue.defineComponent)((props
48
48
  required: false,
49
49
  default: void 0
50
50
  },
51
- rootClassName: {
51
+ rootClass: {
52
52
  type: String,
53
53
  required: false,
54
54
  default: void 0
@@ -4,9 +4,9 @@ import { BuiltinPlacements, MenuClickEventHandler, MenuMode, PopupRender, Render
4
4
  import { SubMenuProps } from '../SubMenu';
5
5
  export interface MenuContextProps {
6
6
  prefixCls: string;
7
- classNames?: SubMenuProps['classNames'];
7
+ classes?: SubMenuProps['classes'];
8
8
  styles?: SubMenuProps['styles'];
9
- rootClassName?: string;
9
+ rootClass?: string;
10
10
  openKeys: string[];
11
11
  rtl?: boolean;
12
12
  mode: MenuMode;
@@ -35,7 +35,7 @@ var MenuContext_default = /* @__PURE__ */ defineComponent((props, { slots }) =>
35
35
  required: false,
36
36
  default: void 0
37
37
  },
38
- classNames: {
38
+ classes: {
39
39
  type: Object,
40
40
  required: false,
41
41
  default: void 0
@@ -45,7 +45,7 @@ var MenuContext_default = /* @__PURE__ */ defineComponent((props, { slots }) =>
45
45
  required: false,
46
46
  default: void 0
47
47
  },
48
- rootClassName: {
48
+ rootClass: {
49
49
  type: String,
50
50
  required: false,
51
51
  default: void 0
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { MenuDividerType, MenuItemGroupType, MenuItemType, MenuRef, RenderIconInfo, SubMenuType } from './interface';
1
+ import { MenuClickEventHandler, MenuDividerType, MenuInfo, MenuItemGroupType, MenuItemType, MenuRef, RenderIconInfo, SelectEventHandler, SelectInfo, SubMenuType } from './interface';
2
2
  import { MenuProps, default as Menu } from './Menu';
3
3
  import { MenuItemProps, default as MenuItem } from './MenuItem';
4
4
  import { MenuItemGroupProps, default as MenuItemGroup } from './MenuItemGroup';
@@ -8,7 +8,7 @@ import { default as Divider } from './Divider';
8
8
  export { Divider, MenuItem as Item, MenuItemGroup as ItemGroup, MenuItem, MenuItemGroup, SubMenu,
9
9
  /** @private Only used for antd internal. Do not use in your production. */
10
10
  useFullPath, };
11
- export type { MenuDividerType, MenuItemGroupProps, MenuItemGroupType, MenuItemProps, MenuItemType, MenuProps, MenuRef, RenderIconInfo, SubMenuProps, SubMenuType, };
11
+ export type { MenuClickEventHandler, MenuDividerType, MenuInfo, MenuItemGroupProps, MenuItemGroupType, MenuItemProps, MenuItemType, MenuProps, MenuRef, RenderIconInfo, SelectEventHandler, SelectInfo, SubMenuProps, SubMenuType, };
12
12
  type MenuType = typeof Menu & {
13
13
  Item: typeof MenuItem;
14
14
  SubMenu: typeof SubMenu;
@@ -11,7 +11,7 @@ export interface SubMenuType extends ItemSharedProps {
11
11
  children: ItemType[];
12
12
  disabled?: boolean;
13
13
  key: string;
14
- rootClassName?: string;
14
+ rootClass?: string;
15
15
  itemIcon?: RenderIconType;
16
16
  expandIcon?: RenderIconType;
17
17
  onMouseEnter?: MenuHoverEventHandler;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@v-c/menu",
3
3
  "type": "module",
4
- "version": "0.0.3",
4
+ "version": "0.0.5",
5
5
  "description": "menu ui component for vue",
6
6
  "exports": {
7
7
  ".": {
@@ -9,24 +9,25 @@
9
9
  "import": "./dist/index.js",
10
10
  "require": "./dist/index.cjs"
11
11
  },
12
- "./dist/*": "./dist/*",
12
+ "./dist/*.js": "./dist/*.js",
13
+ "./dist/*.d.ts": "./dist/*.d.ts",
13
14
  "./package.json": "./package.json"
14
15
  },
15
16
  "publishConfig": {
16
17
  "access": "public"
17
18
  },
19
+ "main": "./dist/index.js",
18
20
  "files": [
19
21
  "dist",
20
22
  "package.json"
21
23
  ],
22
- "main": "./dist/index.js",
23
24
  "peerDependencies": {
24
25
  "vue": "^3.0.0"
25
26
  },
26
27
  "dependencies": {
27
- "@v-c/overflow": "0.0.1",
28
28
  "@v-c/trigger": "0.0.13",
29
- "@v-c/util": "0.0.13"
29
+ "@v-c/util": "0.0.13",
30
+ "@v-c/overflow": "0.0.1"
30
31
  },
31
32
  "scripts": {
32
33
  "build": "vite build",