@v-c/menu 1.0.7 → 1.0.9

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,522 +0,0 @@
1
- Object.defineProperties(exports, {
2
- __esModule: { value: true },
3
- [Symbol.toStringTag]: { value: "Module" }
4
- });
5
- const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
6
- const require_MenuContext = require("../context/MenuContext.cjs");
7
- const require_PathContext = require("../context/PathContext.cjs");
8
- const require_Icon = require("../Icon.cjs");
9
- const require_IdContext = require("../context/IdContext.cjs");
10
- const require_PrivateContext = require("../context/PrivateContext.cjs");
11
- const require_useMemoCallback = require("../hooks/useMemoCallback.cjs");
12
- const require_useActive = require("../hooks/useActive.cjs");
13
- const require_useDirectionStyle = require("../hooks/useDirectionStyle.cjs");
14
- const require_warnUtil = require("../utils/warnUtil.cjs");
15
- const require_commonUtil = require("../utils/commonUtil.cjs");
16
- const require_SubMenuList = require("./SubMenuList.cjs");
17
- const require_InlineSubMenuList = require("./InlineSubMenuList.cjs");
18
- const require_PopupTrigger = require("./PopupTrigger.cjs");
19
- let vue = require("vue");
20
- let _v_c_util = require("@v-c/util");
21
- let _v_c_overflow = require("@v-c/overflow");
22
- _v_c_overflow = require_rolldown_runtime.__toESM(_v_c_overflow);
23
- let _v_c_util_dist_warning = require("@v-c/util/dist/warning");
24
- _v_c_util_dist_warning = require_rolldown_runtime.__toESM(_v_c_util_dist_warning);
25
- function _isSlot(s) {
26
- return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s);
27
- }
28
- var InternalSubMenu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots, attrs }) => {
29
- const domDataId = require_IdContext.useMenuId((0, vue.computed)(() => props?.eventKey || ""));
30
- const menuContext = require_MenuContext.useMenuContext();
31
- const { _internalRenderSubMenuItem } = require_PrivateContext.usePrivateContext();
32
- const pathUserContext = require_PathContext.usePathUserContext();
33
- const connectedPath = require_PathContext.useFullPath();
34
- const validConnectedPath = (0, vue.computed)(() => connectedPath.value.filter((k) => k !== void 0));
35
- const prefixCls = (0, vue.computed)(() => menuContext?.value?.prefixCls || "vc-menu");
36
- const mode = (0, vue.computed)(() => menuContext?.value?.mode || "vertical");
37
- const openKeys = (0, vue.computed)(() => menuContext?.value?.openKeys || []);
38
- const contextDisabled = (0, vue.computed)(() => menuContext?.value?.disabled);
39
- const overflowDisabled = (0, vue.computed)(() => menuContext?.value?.overflowDisabled);
40
- const activeKey = (0, vue.computed)(() => menuContext?.value?.activeKey);
41
- const selectedKeys = (0, vue.computed)(() => menuContext?.value?.selectedKeys || []);
42
- const contextExpandIcon = (0, vue.computed)(() => menuContext?.value?.expandIcon);
43
- const contextPopupRender = (0, vue.computed)(() => menuContext?.value?.popupRender);
44
- const onOpenChange = (key, open$1) => {
45
- menuContext?.value?.onOpenChange?.(key, open$1);
46
- };
47
- const onActive = (key) => {
48
- menuContext?.value?.onActive?.(key);
49
- };
50
- const subMenuPrefixCls = (0, vue.computed)(() => `${prefixCls.value}-submenu`);
51
- const mergedDisabled = (0, vue.computed)(() => !!(contextDisabled.value || props?.disabled));
52
- if (process.env.NODE_ENV !== "production" && props?.warnKey) (0, _v_c_util_dist_warning.default)(false, "SubMenu should not leave undefined `key`.");
53
- const mergedItemIcon = (0, vue.computed)(() => props?.itemIcon ?? menuContext?.value?.itemIcon);
54
- const mergedExpandIcon = (0, vue.computed)(() => props?.expandIcon ?? contextExpandIcon.value);
55
- const originOpen = (0, vue.computed)(() => {
56
- const key = props?.eventKey;
57
- return key ? openKeys.value.includes(key) : false;
58
- });
59
- const open = (0, vue.computed)(() => !overflowDisabled.value && originOpen.value);
60
- const childrenSelected = (0, vue.computed)(() => {
61
- const key = props?.eventKey;
62
- return key ? pathUserContext.isSubPathKey(selectedKeys.value, key) : false;
63
- });
64
- const { active, ...activeProps } = require_useActive.default((0, vue.computed)(() => props?.eventKey || ""), mergedDisabled, (e) => props?.onTitleMouseEnter?.(e), (e) => props?.onTitleMouseLeave?.(e));
65
- const childrenActive = (0, vue.ref)(false);
66
- const triggerChildrenActive = (newActive) => {
67
- if (!mergedDisabled.value) childrenActive.value = newActive;
68
- };
69
- const onInternalMouseEnter = (domEvent) => {
70
- triggerChildrenActive(true);
71
- props?.onMouseEnter?.({
72
- key: props.eventKey,
73
- domEvent
74
- });
75
- };
76
- const onInternalMouseLeave = (domEvent) => {
77
- triggerChildrenActive(false);
78
- props?.onMouseLeave?.({
79
- key: props.eventKey,
80
- domEvent
81
- });
82
- };
83
- const mergedActive = (0, vue.computed)(() => {
84
- if (active.value) return active.value;
85
- if (mode.value !== "inline") {
86
- const key = props?.eventKey;
87
- const currentActiveKey = activeKey.value;
88
- return childrenActive.value || (key && currentActiveKey ? pathUserContext.isSubPathKey([currentActiveKey], key) : false);
89
- }
90
- return false;
91
- });
92
- const directionStyle = require_useDirectionStyle.default((0, vue.computed)(() => connectedPath.value.length));
93
- const onInternalTitleClick = (e) => {
94
- if (mergedDisabled.value) return;
95
- const key = props?.eventKey;
96
- props?.onTitleClick?.({
97
- key,
98
- domEvent: e
99
- });
100
- if (mode.value === "inline" && key) onOpenChange(key, !originOpen.value);
101
- };
102
- const onMergedItemClick = require_useMemoCallback.default((info) => {
103
- props?.onClick?.(require_warnUtil.warnItemProp(info));
104
- menuContext?.value?.onItemClick?.(info);
105
- });
106
- const onPopupVisibleChange = (newVisible) => {
107
- const key = props?.eventKey;
108
- if (mode.value !== "inline" && key) onOpenChange(key, newVisible);
109
- };
110
- const onInternalFocus = () => {
111
- const key = props?.eventKey;
112
- if (key) onActive(key);
113
- };
114
- const triggerModeRef = (0, vue.ref)(mode.value);
115
- (0, vue.watch)(mode, () => {
116
- if (mode.value !== "inline" && validConnectedPath.value.length > 1) triggerModeRef.value = "vertical";
117
- else triggerModeRef.value = mode.value;
118
- }, { immediate: true });
119
- return () => {
120
- const { style, title, class: className, popupClassName, popupOffset, popupStyle, classes, styles, ...restProps } = props;
121
- const children = slots.default?.();
122
- const popupId = domDataId.value && `${domDataId.value}-popup`;
123
- const expandIconProps = {
124
- isOpen: open.value,
125
- isSelected: childrenSelected.value,
126
- isSubMenu: true,
127
- disabled: mergedDisabled.value
128
- };
129
- const expandIconNode = (0, vue.createVNode)(require_Icon.default, {
130
- "icon": mode.value !== "horizontal" ? mergedExpandIcon.value : void 0,
131
- "props": {
132
- ...props,
133
- ...expandIconProps
134
- }
135
- }, { default: () => [(0, vue.createVNode)("i", { "class": `${subMenuPrefixCls.value}-arrow` }, null)] });
136
- let titleNode = (0, vue.createVNode)("div", (0, vue.mergeProps)({
137
- "role": "menuitem",
138
- "style": directionStyle.value,
139
- "class": `${subMenuPrefixCls.value}-title`,
140
- "tabindex": mergedDisabled.value ? void 0 : -1,
141
- "title": typeof title === "string" ? title : void 0,
142
- "data-menu-id": overflowDisabled.value && domDataId.value ? void 0 : domDataId.value,
143
- "aria-expanded": open.value,
144
- "aria-haspopup": true,
145
- "aria-controls": popupId,
146
- "aria-disabled": mergedDisabled.value,
147
- "onClick": onInternalTitleClick,
148
- "onFocus": onInternalFocus
149
- }, activeProps), [title, expandIconNode]);
150
- const popupContentTriggerMode = triggerModeRef.value;
151
- const renderPopupContent = () => {
152
- const originNode = (0, vue.createVNode)(require_MenuContext.default, {
153
- "classes": classes,
154
- "styles": styles,
155
- "mode": popupContentTriggerMode === "horizontal" ? "vertical" : popupContentTriggerMode
156
- }, { default: () => [(0, vue.createVNode)(require_SubMenuList.default, { "id": popupId }, _isSlot(children) ? children : { default: () => [children] })] });
157
- const mergedPopupRender = props?.popupRender || contextPopupRender.value;
158
- if (mergedPopupRender) return mergedPopupRender(originNode, {
159
- item: props,
160
- keys: validConnectedPath.value
161
- });
162
- return originNode;
163
- };
164
- if (!overflowDisabled.value) {
165
- const triggerMode = triggerModeRef.value;
166
- const _titleNode = function() {
167
- return titleNode;
168
- }();
169
- titleNode = (0, vue.createVNode)(require_PopupTrigger.default, {
170
- "mode": triggerMode,
171
- "prefixCls": subMenuPrefixCls.value,
172
- "visible": !props?.internalPopupClose && open.value && mode.value !== "inline",
173
- "popupClassName": popupClassName,
174
- "popupOffset": popupOffset,
175
- "popupStyle": popupStyle,
176
- "popup": renderPopupContent(),
177
- "disabled": mergedDisabled.value,
178
- "onVisibleChange": onPopupVisibleChange
179
- }, _isSlot(titleNode) ? titleNode : { default: () => [_titleNode] });
180
- }
181
- let listNode = (0, vue.createVNode)(_v_c_overflow.default.Item, (0, vue.mergeProps)({ "role": "none" }, attrs, restProps, {
182
- "component": "li",
183
- "style": style,
184
- "class": (0, _v_c_util.classNames)(subMenuPrefixCls.value, `${subMenuPrefixCls.value}-${mode.value}`, className, {
185
- [`${subMenuPrefixCls.value}-open`]: open.value,
186
- [`${subMenuPrefixCls.value}-active`]: mergedActive.value,
187
- [`${subMenuPrefixCls.value}-selected`]: childrenSelected.value,
188
- [`${subMenuPrefixCls.value}-disabled`]: mergedDisabled.value
189
- }),
190
- "onMouseenter": onInternalMouseEnter,
191
- "onMouseleave": onInternalMouseLeave
192
- }), { default: () => [titleNode, !overflowDisabled.value && (0, vue.createVNode)(require_InlineSubMenuList.default, {
193
- "id": popupId,
194
- "open": open.value,
195
- "keyPath": validConnectedPath.value
196
- }, _isSlot(children) ? children : { default: () => [children] })] });
197
- if (_internalRenderSubMenuItem) listNode = _internalRenderSubMenuItem(listNode, props, {
198
- selected: childrenSelected.value,
199
- active: mergedActive.value,
200
- open: open.value,
201
- disabled: mergedDisabled.value
202
- });
203
- return (0, vue.createVNode)(require_MenuContext.default, {
204
- "classes": classes,
205
- "styles": styles,
206
- "onItemClick": onMergedItemClick,
207
- "mode": mode.value === "horizontal" ? "vertical" : mode.value,
208
- "itemIcon": mergedItemIcon.value,
209
- "expandIcon": mergedExpandIcon.value
210
- }, _isSlot(listNode) ? listNode : { default: () => [listNode] });
211
- };
212
- }, {
213
- props: {
214
- classes: {
215
- type: Object,
216
- required: false,
217
- default: void 0
218
- },
219
- styles: {
220
- type: Object,
221
- required: false,
222
- default: void 0
223
- },
224
- title: {
225
- type: [
226
- Object,
227
- Function,
228
- String,
229
- Number,
230
- null,
231
- Boolean,
232
- Array
233
- ],
234
- required: false,
235
- default: void 0
236
- },
237
- internalPopupClose: {
238
- type: Boolean,
239
- required: false,
240
- default: void 0
241
- },
242
- eventKey: {
243
- type: String,
244
- required: false,
245
- default: void 0
246
- },
247
- warnKey: {
248
- type: Boolean,
249
- required: false,
250
- default: void 0
251
- },
252
- type: {
253
- type: String,
254
- required: false,
255
- default: void 0
256
- },
257
- disabled: {
258
- type: Boolean,
259
- required: false,
260
- default: void 0
261
- },
262
- rootClass: {
263
- type: String,
264
- required: false,
265
- default: void 0
266
- },
267
- itemIcon: {
268
- type: [
269
- Object,
270
- Function,
271
- String,
272
- Number,
273
- null,
274
- Boolean,
275
- Array
276
- ],
277
- required: false,
278
- default: void 0
279
- },
280
- expandIcon: {
281
- type: [
282
- Object,
283
- Function,
284
- String,
285
- Number,
286
- null,
287
- Boolean,
288
- Array
289
- ],
290
- required: false,
291
- default: void 0
292
- },
293
- onMouseEnter: {
294
- type: Function,
295
- required: false,
296
- default: void 0
297
- },
298
- onMouseLeave: {
299
- type: Function,
300
- required: false,
301
- default: void 0
302
- },
303
- popupClassName: {
304
- type: String,
305
- required: false,
306
- default: void 0
307
- },
308
- popupOffset: {
309
- type: Array,
310
- required: false,
311
- default: void 0
312
- },
313
- popupStyle: {
314
- type: Object,
315
- required: false,
316
- default: void 0
317
- },
318
- popupRender: {
319
- type: Function,
320
- required: false,
321
- default: void 0
322
- },
323
- onClick: {
324
- type: Function,
325
- required: false,
326
- default: void 0
327
- },
328
- onTitleClick: {
329
- type: Function,
330
- required: false,
331
- default: void 0
332
- },
333
- onTitleMouseEnter: {
334
- type: Function,
335
- required: false,
336
- default: void 0
337
- },
338
- onTitleMouseLeave: {
339
- type: Function,
340
- required: false,
341
- default: void 0
342
- },
343
- style: {
344
- type: Object,
345
- required: false,
346
- default: void 0
347
- },
348
- class: {
349
- type: String,
350
- required: false,
351
- default: void 0
352
- }
353
- },
354
- name: "InternalSubMenu",
355
- inheritAttrs: false
356
- });
357
- var SubMenu = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots }) => {
358
- const eventKey = (0, vue.computed)(() => props?.eventKey);
359
- const connectedKeyPath = require_PathContext.useFullPath(eventKey);
360
- const measure = require_PathContext.useMeasure();
361
- const validKeyPath = (0, vue.computed)(() => connectedKeyPath.value.filter((k) => k !== void 0));
362
- (0, vue.watch)([connectedKeyPath], (_n, _o, onCleanup) => {
363
- if (measure) measure.registerPath(eventKey.value, connectedKeyPath.value);
364
- onCleanup(() => {
365
- measure?.unregisterPath(eventKey.value, connectedKeyPath.value);
366
- });
367
- }, { immediate: true });
368
- return () => {
369
- const children = slots.default?.();
370
- const childList = require_commonUtil.parseChildren(children, validKeyPath.value);
371
- let renderNode;
372
- if (measure) renderNode = childList;
373
- else renderNode = (0, vue.createVNode)(InternalSubMenu, props, _isSlot(childList) ? childList : { default: () => [childList] });
374
- return (0, vue.createVNode)(require_PathContext.PathTrackerContext.Provider, { "value": connectedKeyPath.value }, _isSlot(renderNode) ? renderNode : { default: () => [renderNode] });
375
- };
376
- }, {
377
- props: {
378
- classes: {
379
- type: Object,
380
- required: false,
381
- default: void 0
382
- },
383
- styles: {
384
- type: Object,
385
- required: false,
386
- default: void 0
387
- },
388
- title: {
389
- type: [
390
- Object,
391
- Function,
392
- String,
393
- Number,
394
- null,
395
- Boolean,
396
- Array
397
- ],
398
- required: false,
399
- default: void 0
400
- },
401
- internalPopupClose: {
402
- type: Boolean,
403
- required: false,
404
- default: void 0
405
- },
406
- eventKey: {
407
- type: String,
408
- required: false,
409
- default: void 0
410
- },
411
- warnKey: {
412
- type: Boolean,
413
- required: false,
414
- default: void 0
415
- },
416
- type: {
417
- type: String,
418
- required: false,
419
- default: void 0
420
- },
421
- disabled: {
422
- type: Boolean,
423
- required: false,
424
- default: void 0
425
- },
426
- rootClass: {
427
- type: String,
428
- required: false,
429
- default: void 0
430
- },
431
- itemIcon: {
432
- type: [
433
- Object,
434
- Function,
435
- String,
436
- Number,
437
- null,
438
- Boolean,
439
- Array
440
- ],
441
- required: false,
442
- default: void 0
443
- },
444
- expandIcon: {
445
- type: [
446
- Object,
447
- Function,
448
- String,
449
- Number,
450
- null,
451
- Boolean,
452
- Array
453
- ],
454
- required: false,
455
- default: void 0
456
- },
457
- onMouseEnter: {
458
- type: Function,
459
- required: false,
460
- default: void 0
461
- },
462
- onMouseLeave: {
463
- type: Function,
464
- required: false,
465
- default: void 0
466
- },
467
- popupClassName: {
468
- type: String,
469
- required: false,
470
- default: void 0
471
- },
472
- popupOffset: {
473
- type: Array,
474
- required: false,
475
- default: void 0
476
- },
477
- popupStyle: {
478
- type: Object,
479
- required: false,
480
- default: void 0
481
- },
482
- popupRender: {
483
- type: Function,
484
- required: false,
485
- default: void 0
486
- },
487
- onClick: {
488
- type: Function,
489
- required: false,
490
- default: void 0
491
- },
492
- onTitleClick: {
493
- type: Function,
494
- required: false,
495
- default: void 0
496
- },
497
- onTitleMouseEnter: {
498
- type: Function,
499
- required: false,
500
- default: void 0
501
- },
502
- onTitleMouseLeave: {
503
- type: Function,
504
- required: false,
505
- default: void 0
506
- },
507
- style: {
508
- type: Object,
509
- required: false,
510
- default: void 0
511
- },
512
- class: {
513
- type: String,
514
- required: false,
515
- default: void 0
516
- }
517
- },
518
- name: "SubMenu",
519
- inheritAttrs: false
520
- });
521
- var SubMenu_default = SubMenu;
522
- exports.default = SubMenu_default;
@@ -1,21 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
9
- key = keys[i];
10
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
11
- get: ((k) => from[k]).bind(null, key),
12
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
13
- });
14
- }
15
- return to;
16
- };
17
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
18
- value: mod,
19
- enumerable: true
20
- }) : target, mod));
21
- exports.__toESM = __toESM;
@@ -1,26 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
3
- let vue = require("vue");
4
- var IdContextKey = Symbol("IdContext");
5
- function useIdContextProvide(id) {
6
- (0, vue.provide)(IdContextKey, id);
7
- }
8
- const IdContextProvider = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots }) => {
9
- useIdContextProvide((0, vue.computed)(() => props.id));
10
- return () => slots?.default?.();
11
- }, { props: { id: {
12
- type: String,
13
- required: true,
14
- default: void 0
15
- } } });
16
- function getMenuId(uuid, eventKey) {
17
- return `${uuid}-${eventKey}`;
18
- }
19
- function useMenuId(eventKey) {
20
- const id = (0, vue.inject)(IdContextKey, (0, vue.ref)(""));
21
- return (0, vue.computed)(() => getMenuId(id.value, eventKey.value));
22
- }
23
- exports.IdContextProvider = IdContextProvider;
24
- exports.getMenuId = getMenuId;
25
- exports.useIdContextProvide = useIdContextProvide;
26
- exports.useMenuId = useMenuId;