@v-c/menu 0.0.1 → 0.0.3

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.
Files changed (58) hide show
  1. package/dist/Divider.cjs +33 -36
  2. package/dist/Divider.js +28 -34
  3. package/dist/Icon.cjs +39 -38
  4. package/dist/Icon.js +36 -38
  5. package/dist/Menu.cjs +506 -575
  6. package/dist/Menu.d.ts +2 -0
  7. package/dist/Menu.js +495 -570
  8. package/dist/MenuItem.cjs +314 -344
  9. package/dist/MenuItem.js +303 -339
  10. package/dist/MenuItemGroup.cjs +98 -116
  11. package/dist/MenuItemGroup.js +91 -113
  12. package/dist/SubMenu/InlineSubMenuList.cjs +58 -82
  13. package/dist/SubMenu/InlineSubMenuList.js +54 -81
  14. package/dist/SubMenu/PopupTrigger.cjs +133 -167
  15. package/dist/SubMenu/PopupTrigger.d.ts +2 -2
  16. package/dist/SubMenu/PopupTrigger.js +126 -165
  17. package/dist/SubMenu/SubMenuList.cjs +18 -26
  18. package/dist/SubMenu/SubMenuList.js +14 -25
  19. package/dist/SubMenu/index.cjs +479 -526
  20. package/dist/SubMenu/index.js +469 -521
  21. package/dist/_virtual/rolldown_runtime.cjs +21 -0
  22. package/dist/context/IdContext.cjs +15 -23
  23. package/dist/context/IdContext.js +15 -27
  24. package/dist/context/MenuContext.cjs +183 -174
  25. package/dist/context/MenuContext.js +180 -177
  26. package/dist/context/PathContext.cjs +54 -79
  27. package/dist/context/PathContext.js +54 -90
  28. package/dist/context/PrivateContext.cjs +11 -17
  29. package/dist/context/PrivateContext.js +11 -20
  30. package/dist/hooks/useAccessibility.cjs +171 -191
  31. package/dist/hooks/useAccessibility.js +168 -193
  32. package/dist/hooks/useActive.cjs +25 -28
  33. package/dist/hooks/useActive.js +23 -28
  34. package/dist/hooks/useDirectionStyle.cjs +11 -17
  35. package/dist/hooks/useDirectionStyle.js +9 -17
  36. package/dist/hooks/useKeyRecords.cjs +70 -88
  37. package/dist/hooks/useKeyRecords.js +68 -89
  38. package/dist/hooks/useMemoCallback.cjs +9 -9
  39. package/dist/hooks/useMemoCallback.js +7 -9
  40. package/dist/index.cjs +21 -21
  41. package/dist/index.d.ts +2 -2
  42. package/dist/index.js +12 -20
  43. package/dist/interface.cjs +0 -1
  44. package/dist/interface.js +0 -1
  45. package/dist/placements.cjs +70 -70
  46. package/dist/placements.js +69 -72
  47. package/dist/utils/commonUtil.cjs +24 -26
  48. package/dist/utils/commonUtil.js +23 -26
  49. package/dist/utils/motionUtil.cjs +2 -9
  50. package/dist/utils/motionUtil.js +3 -10
  51. package/dist/utils/nodeUtil.cjs +49 -77
  52. package/dist/utils/nodeUtil.d.ts +4 -1
  53. package/dist/utils/nodeUtil.js +48 -77
  54. package/dist/utils/timeUtil.cjs +2 -3
  55. package/dist/utils/timeUtil.js +3 -4
  56. package/dist/utils/warnUtil.cjs +8 -14
  57. package/dist/utils/warnUtil.js +7 -14
  58. package/package.json +2 -2
@@ -1,84 +1,57 @@
1
- import { defineComponent, shallowRef, watchEffect, watch, computed, createVNode, Transition } from "vue";
2
- import { getTransitionProps } from "@v-c/util/dist/utils/transition";
3
- import InheritableContextProvider, { useMenuContext } from "../context/MenuContext.js";
1
+ import MenuContext_default, { useMenuContext } from "../context/MenuContext.js";
4
2
  import { getMotion } from "../utils/motionUtil.js";
5
- import InternalSubMenuList from "./SubMenuList.js";
6
- const InlineSubMenuList = /* @__PURE__ */ defineComponent((props, {
7
- slots
8
- }) => {
9
- const fixedMode = "inline";
10
- const menuContext = useMenuContext();
11
- const sameModeRef = shallowRef(false);
12
- watchEffect(() => {
13
- sameModeRef.value = menuContext?.value?.mode === fixedMode;
14
- });
15
- const destroy = shallowRef(!sameModeRef.value);
16
- watch(() => menuContext?.value?.mode, () => {
17
- if (sameModeRef.value) {
18
- destroy.value = false;
19
- }
20
- }, {
21
- immediate: true
22
- });
23
- const mergedOpen = computed(() => sameModeRef.value ? props?.open : false);
24
- const mergedMotion = computed(() => {
25
- const {
26
- motion,
27
- defaultMotions
28
- } = menuContext?.value ?? {};
29
- const motionData = {
30
- ...getMotion(fixedMode, motion, defaultMotions)
31
- };
32
- if (props.keyPath && props.keyPath.length > 1) {
33
- motionData.appear = false;
34
- }
35
- const _onAfterLeave = motionData.onAfterLeave;
36
- motionData.onAfterLeave = (el) => {
37
- if (!sameModeRef.value) {
38
- destroy.value = true;
39
- }
40
- return _onAfterLeave?.(el);
41
- };
42
- return motionData;
43
- });
44
- return () => {
45
- if (destroy.value) {
46
- return null;
47
- }
48
- return createVNode(InheritableContextProvider, {
49
- "mode": fixedMode,
50
- "locked": !sameModeRef.value
51
- }, {
52
- default: () => [createVNode(Transition, getTransitionProps(mergedMotion.value?.name, mergedMotion.value), {
53
- default: () => [mergedOpen.value && createVNode(InternalSubMenuList, {
54
- "id": props.id
55
- }, {
56
- default: () => [slots?.default?.()]
57
- })]
58
- })]
59
- });
60
- };
3
+ import SubMenuList_default from "./SubMenuList.js";
4
+ import { Transition, computed, createVNode, defineComponent, shallowRef, watch, watchEffect } from "vue";
5
+ import { getTransitionProps } from "@v-c/util/dist/utils/transition";
6
+ var InlineSubMenuList_default = /* @__PURE__ */ defineComponent((props, { slots }) => {
7
+ const fixedMode = "inline";
8
+ const menuContext = useMenuContext();
9
+ const sameModeRef = shallowRef(false);
10
+ watchEffect(() => {
11
+ sameModeRef.value = menuContext?.value?.mode === fixedMode;
12
+ });
13
+ const destroy = shallowRef(!sameModeRef.value);
14
+ watch(() => menuContext?.value?.mode, () => {
15
+ if (sameModeRef.value) destroy.value = false;
16
+ }, { immediate: true });
17
+ const mergedOpen = computed(() => sameModeRef.value ? props?.open : false);
18
+ const mergedMotion = computed(() => {
19
+ const { motion, defaultMotions } = menuContext?.value ?? {};
20
+ const motionData = { ...getMotion(fixedMode, motion, defaultMotions) };
21
+ if (props.keyPath && props.keyPath.length > 1) motionData.appear = false;
22
+ const _onAfterLeave = motionData.onAfterLeave;
23
+ motionData.onAfterLeave = (el) => {
24
+ if (!sameModeRef.value) destroy.value = true;
25
+ return _onAfterLeave?.(el);
26
+ };
27
+ return motionData;
28
+ });
29
+ return () => {
30
+ if (destroy.value) return null;
31
+ return createVNode(MenuContext_default, {
32
+ "mode": fixedMode,
33
+ "locked": !sameModeRef.value
34
+ }, { default: () => [createVNode(Transition, getTransitionProps(mergedMotion.value?.name, mergedMotion.value), { default: () => [mergedOpen.value && createVNode(SubMenuList_default, { "id": props.id }, { default: () => [slots?.default?.()] })] })] });
35
+ };
61
36
  }, {
62
- props: {
63
- id: {
64
- type: String,
65
- required: false,
66
- default: void 0
67
- },
68
- open: {
69
- type: Boolean,
70
- required: true,
71
- default: void 0
72
- },
73
- keyPath: {
74
- type: Array,
75
- required: true,
76
- default: void 0
77
- }
78
- },
79
- name: "InlineSubMenuList",
80
- inheritAttrs: false
37
+ props: {
38
+ id: {
39
+ type: String,
40
+ required: false,
41
+ default: void 0
42
+ },
43
+ open: {
44
+ type: Boolean,
45
+ required: true,
46
+ default: void 0
47
+ },
48
+ keyPath: {
49
+ type: Array,
50
+ required: true,
51
+ default: void 0
52
+ }
53
+ },
54
+ name: "InlineSubMenuList",
55
+ inheritAttrs: false
81
56
  });
82
- export {
83
- InlineSubMenuList as default
84
- };
57
+ export { InlineSubMenuList_default as default };
@@ -1,168 +1,134 @@
1
- "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const vue = require("vue");
4
- const Trigger = require("@v-c/trigger");
5
- const util = require("@v-c/util");
6
- const raf = require("@v-c/util/dist/raf.ts");
7
- const MenuContext = require("../context/MenuContext.cjs");
8
- const placements = require("../placements.cjs");
9
- const motionUtil = require("../utils/motionUtil.cjs");
10
- const popupPlacementMap = {
11
- "horizontal": "bottomLeft",
12
- "vertical": "rightTop",
13
- "vertical-left": "rightTop",
14
- "vertical-right": "leftTop"
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ const require_rolldown_runtime = require("../_virtual/rolldown_runtime.cjs");
3
+ const require_MenuContext = require("../context/MenuContext.cjs");
4
+ const require_motionUtil = require("../utils/motionUtil.cjs");
5
+ const require_placements = require("../placements.cjs");
6
+ let vue = require("vue");
7
+ let __v_c_util = require("@v-c/util");
8
+ let __v_c_trigger = require("@v-c/trigger");
9
+ __v_c_trigger = require_rolldown_runtime.__toESM(__v_c_trigger);
10
+ let __v_c_util_dist_raf = require("@v-c/util/dist/raf");
11
+ __v_c_util_dist_raf = require_rolldown_runtime.__toESM(__v_c_util_dist_raf);
12
+ var popupPlacementMap = {
13
+ "horizontal": "bottomLeft",
14
+ "vertical": "rightTop",
15
+ "vertical-left": "rightTop",
16
+ "vertical-right": "leftTop"
15
17
  };
16
- const PopupTrigger = /* @__PURE__ */ vue.defineComponent((props, {
17
- slots
18
- }) => {
19
- const menuContext = MenuContext.useMenuContext();
20
- const innerVisible = vue.shallowRef(props.visible ?? false);
21
- const placement = vue.computed(() => {
22
- const rtl = menuContext?.value?.rtl;
23
- const builtinPlacements = menuContext?.value?.builtinPlacements;
24
- return rtl ? {
25
- ...placements.placementsRtl,
26
- ...builtinPlacements
27
- } : {
28
- ...placements.placements,
29
- ...builtinPlacements
30
- };
31
- });
32
- const triggerMode = vue.computed(() => props.mode);
33
- const popupPlacement = vue.computed(() => {
34
- return popupPlacementMap[triggerMode.value];
35
- });
36
- const defaultMotions = vue.computed(() => menuContext?.value?.defaultMotions);
37
- const motion = vue.computed(() => menuContext?.value?.motion);
38
- const targetMotion = vue.computed(() => {
39
- return {
40
- ...motionUtil.getMotion(triggerMode.value, motion.value, defaultMotions.value)
41
- };
42
- });
43
- const targetMotionRef = vue.shallowRef(targetMotion.value);
44
- vue.watch(triggerMode, (mode) => {
45
- if (mode !== "inline") {
46
- targetMotionRef.value = targetMotion.value;
47
- }
48
- }, {
49
- immediate: true
50
- });
51
- vue.watch([motion, defaultMotions], () => {
52
- if (triggerMode.value !== "inline") {
53
- targetMotionRef.value = targetMotion.value;
54
- }
55
- });
56
- const mergedMotion = vue.computed(() => {
57
- return {
58
- ...targetMotionRef.value,
59
- appear: true
60
- };
61
- });
62
- const visibleRef = vue.shallowRef();
63
- vue.watch(() => props.visible, (visible, _, onCleanup) => {
64
- visibleRef.value = raf(() => {
65
- innerVisible.value = visible;
66
- });
67
- onCleanup(() => {
68
- if (visibleRef.value !== void 0) {
69
- raf.cancel(visibleRef.value);
70
- }
71
- });
72
- });
73
- return () => {
74
- const {
75
- popupClassName,
76
- popup,
77
- popupStyle,
78
- popupOffset,
79
- disabled,
80
- onVisibleChange,
81
- prefixCls
82
- } = props;
83
- const {
84
- rtl,
85
- rootClassName,
86
- mode,
87
- getPopupContainer,
88
- triggerSubMenuAction,
89
- subMenuCloseDelay,
90
- subMenuOpenDelay,
91
- forceSubMenuRender
92
- } = menuContext?.value ?? {};
93
- return vue.createVNode(Trigger, {
94
- "prefixCls": prefixCls,
95
- "popupClassName": util.clsx(`${prefixCls}-popup`, {
96
- [`${prefixCls}-rtl`]: rtl
97
- }, popupClassName, rootClassName),
98
- "stretch": mode === "horizontal" ? "minWidth" : void 0,
99
- "getPopupContainer": getPopupContainer,
100
- "builtinPlacements": placement.value,
101
- "popupPlacement": popupPlacement.value,
102
- "popupVisible": innerVisible.value,
103
- "popup": popup,
104
- "popupStyle": popupStyle,
105
- "popupAlign": popupOffset && {
106
- offset: popupOffset
107
- },
108
- "action": disabled ? [] : [triggerSubMenuAction],
109
- "mouseEnterDelay": subMenuOpenDelay,
110
- "mouseLeaveDelay": subMenuCloseDelay,
111
- "onOpenChange": onVisibleChange,
112
- "forceRender": forceSubMenuRender,
113
- "popupMotion": mergedMotion.value,
114
- "fresh": true
115
- }, {
116
- default: () => [slots?.default?.()]
117
- });
118
- };
119
- }, {
120
- props: {
121
- prefixCls: {
122
- type: String,
123
- required: true,
124
- default: void 0
125
- },
126
- mode: {
127
- type: String,
128
- required: true,
129
- default: void 0
130
- },
131
- visible: {
132
- type: Boolean,
133
- required: true,
134
- default: void 0
135
- },
136
- popup: {
137
- type: null,
138
- required: true,
139
- default: void 0
140
- },
141
- popupStyle: {
142
- type: null,
143
- required: false,
144
- default: void 0
145
- },
146
- popupClassName: {
147
- type: String,
148
- required: false,
149
- default: void 0
150
- },
151
- popupOffset: {
152
- type: Array,
153
- required: false,
154
- default: void 0
155
- },
156
- disabled: {
157
- type: Boolean,
158
- required: true,
159
- default: void 0
160
- },
161
- onVisibleChange: {
162
- type: Function,
163
- required: true,
164
- default: void 0
165
- }
166
- }
167
- });
168
- exports.default = PopupTrigger;
18
+ var PopupTrigger = /* @__PURE__ */ (0, vue.defineComponent)((props, { slots }) => {
19
+ const menuContext = require_MenuContext.useMenuContext();
20
+ const innerVisible = (0, vue.shallowRef)(props.visible ?? false);
21
+ const placement = (0, vue.computed)(() => {
22
+ const rtl = menuContext?.value?.rtl;
23
+ const builtinPlacements = menuContext?.value?.builtinPlacements;
24
+ return rtl ? {
25
+ ...require_placements.placementsRtl,
26
+ ...builtinPlacements
27
+ } : {
28
+ ...require_placements.default,
29
+ ...builtinPlacements
30
+ };
31
+ });
32
+ const triggerMode = (0, vue.computed)(() => props.mode);
33
+ const popupPlacement = (0, vue.computed)(() => {
34
+ return popupPlacementMap[triggerMode.value];
35
+ });
36
+ const defaultMotions = (0, vue.computed)(() => menuContext?.value?.defaultMotions);
37
+ const motion = (0, vue.computed)(() => menuContext?.value?.motion);
38
+ const targetMotion = (0, vue.computed)(() => {
39
+ return { ...require_motionUtil.getMotion(triggerMode.value, motion.value, defaultMotions.value) };
40
+ });
41
+ const targetMotionRef = (0, vue.shallowRef)(targetMotion.value);
42
+ (0, vue.watch)(triggerMode, (mode) => {
43
+ if (mode !== "inline") targetMotionRef.value = targetMotion.value;
44
+ }, { immediate: true });
45
+ (0, vue.watch)([motion, defaultMotions], () => {
46
+ if (triggerMode.value !== "inline") targetMotionRef.value = targetMotion.value;
47
+ });
48
+ const mergedMotion = (0, vue.computed)(() => {
49
+ return {
50
+ ...targetMotionRef.value,
51
+ appear: true
52
+ };
53
+ });
54
+ const visibleRef = (0, vue.shallowRef)();
55
+ (0, vue.watch)(() => props.visible, (visible, _, onCleanup) => {
56
+ visibleRef.value = (0, __v_c_util_dist_raf.default)(() => {
57
+ innerVisible.value = visible;
58
+ });
59
+ onCleanup(() => {
60
+ if (visibleRef.value !== void 0) __v_c_util_dist_raf.default.cancel(visibleRef.value);
61
+ });
62
+ });
63
+ return () => {
64
+ const { popupClassName, popup, popupStyle, popupOffset, disabled, onVisibleChange, prefixCls } = props;
65
+ const { rtl, rootClassName, mode, getPopupContainer, triggerSubMenuAction, subMenuCloseDelay, subMenuOpenDelay, forceSubMenuRender } = menuContext?.value ?? {};
66
+ return (0, vue.createVNode)(__v_c_trigger.default, {
67
+ "prefixCls": prefixCls,
68
+ "popupClassName": (0, __v_c_util.clsx)(`${prefixCls}-popup`, { [`${prefixCls}-rtl`]: rtl }, popupClassName, rootClassName),
69
+ "stretch": mode === "horizontal" ? "minWidth" : void 0,
70
+ "getPopupContainer": getPopupContainer,
71
+ "builtinPlacements": placement.value,
72
+ "popupPlacement": popupPlacement.value,
73
+ "popupVisible": innerVisible.value,
74
+ "popup": popup,
75
+ "popupStyle": popupStyle,
76
+ "popupAlign": popupOffset && { offset: popupOffset },
77
+ "action": disabled ? [] : [triggerSubMenuAction],
78
+ "mouseEnterDelay": subMenuOpenDelay,
79
+ "mouseLeaveDelay": subMenuCloseDelay,
80
+ "onOpenChange": onVisibleChange,
81
+ "forceRender": forceSubMenuRender,
82
+ "popupMotion": mergedMotion.value,
83
+ "fresh": true
84
+ }, { default: () => [slots?.default?.()] });
85
+ };
86
+ }, { props: {
87
+ prefixCls: {
88
+ type: String,
89
+ required: true,
90
+ default: void 0
91
+ },
92
+ mode: {
93
+ type: String,
94
+ required: true,
95
+ default: void 0
96
+ },
97
+ visible: {
98
+ type: Boolean,
99
+ required: true,
100
+ default: void 0
101
+ },
102
+ popup: {
103
+ type: null,
104
+ required: true,
105
+ default: void 0
106
+ },
107
+ popupStyle: {
108
+ type: null,
109
+ required: false,
110
+ default: void 0
111
+ },
112
+ popupClassName: {
113
+ type: String,
114
+ required: false,
115
+ default: void 0
116
+ },
117
+ popupOffset: {
118
+ type: Array,
119
+ required: false,
120
+ default: void 0
121
+ },
122
+ disabled: {
123
+ type: Boolean,
124
+ required: true,
125
+ default: void 0
126
+ },
127
+ onVisibleChange: {
128
+ type: Function,
129
+ required: true,
130
+ default: void 0
131
+ }
132
+ } });
133
+ var PopupTrigger_default = PopupTrigger;
134
+ exports.default = PopupTrigger_default;
@@ -1,6 +1,6 @@
1
- import { VueNode } from '@v-c/util/dist/type.ts';
1
+ import { VueNode } from '@v-c/util/dist/type';
2
2
  import { CSSProperties } from 'vue';
3
- import { MenuMode } from '../interface.ts';
3
+ import { MenuMode } from '../interface';
4
4
  export interface PopupTriggerProps {
5
5
  prefixCls: string;
6
6
  mode: MenuMode;