@yamada-ui/menu 1.5.2-dev-20241213204523 → 1.5.2-dev-20241213213653

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 (62) hide show
  1. package/dist/{chunk-6HK6THLX.mjs → chunk-6PJHU6VG.mjs} +2 -2
  2. package/dist/{chunk-SWY6VV4V.mjs → chunk-AGHG37SL.mjs} +2 -2
  3. package/dist/{chunk-72J22E3I.mjs → chunk-DAEXVQLG.mjs} +10 -10
  4. package/dist/chunk-DAEXVQLG.mjs.map +1 -0
  5. package/dist/{chunk-KGWPKJI2.mjs → chunk-H662AKOV.mjs} +3 -3
  6. package/dist/{chunk-3YBMMWDY.mjs → chunk-HWUNOGPF.mjs} +2 -2
  7. package/dist/{chunk-HAW3H5KJ.mjs → chunk-IWH3B4PS.mjs} +1 -1
  8. package/dist/chunk-IWH3B4PS.mjs.map +1 -0
  9. package/dist/{chunk-VPMWBZWN.mjs → chunk-JQCTT4C2.mjs} +11 -11
  10. package/dist/chunk-JQCTT4C2.mjs.map +1 -0
  11. package/dist/{chunk-OP45KQJ6.mjs → chunk-JTGSHZXB.mjs} +15 -15
  12. package/dist/chunk-JTGSHZXB.mjs.map +1 -0
  13. package/dist/{chunk-X5YYJEDZ.mjs → chunk-TFGPDF5W.mjs} +36 -23
  14. package/dist/chunk-TFGPDF5W.mjs.map +1 -0
  15. package/dist/{chunk-XZJXCEI7.mjs → chunk-VDTE5ERA.mjs} +2 -2
  16. package/dist/{chunk-4MJ2ZBIB.mjs → chunk-ZG5BKE24.mjs} +2 -2
  17. package/dist/context-menu-trigger.js.map +1 -1
  18. package/dist/context-menu-trigger.mjs +2 -2
  19. package/dist/context-menu.js +13 -13
  20. package/dist/context-menu.js.map +1 -1
  21. package/dist/context-menu.mjs +3 -3
  22. package/dist/index.js +61 -48
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.mjs +11 -11
  25. package/dist/menu-button.js +41 -28
  26. package/dist/menu-button.js.map +1 -1
  27. package/dist/menu-button.mjs +3 -3
  28. package/dist/menu-context.d.mts +2 -2
  29. package/dist/menu-context.d.ts +2 -2
  30. package/dist/menu-context.js.map +1 -1
  31. package/dist/menu-context.mjs +1 -1
  32. package/dist/menu-divider.js.map +1 -1
  33. package/dist/menu-divider.mjs +2 -2
  34. package/dist/menu-group.js.map +1 -1
  35. package/dist/menu-group.mjs +2 -2
  36. package/dist/menu-item.d.mts +24 -0
  37. package/dist/menu-item.d.ts +24 -0
  38. package/dist/menu-item.js +34 -21
  39. package/dist/menu-item.js.map +1 -1
  40. package/dist/menu-item.mjs +2 -2
  41. package/dist/menu-list.js.map +1 -1
  42. package/dist/menu-list.mjs +2 -2
  43. package/dist/menu-option-group.js +41 -28
  44. package/dist/menu-option-group.js.map +1 -1
  45. package/dist/menu-option-group.mjs +4 -4
  46. package/dist/menu-separator.js.map +1 -1
  47. package/dist/menu-separator.mjs +2 -2
  48. package/dist/menu.js +13 -13
  49. package/dist/menu.js.map +1 -1
  50. package/dist/menu.mjs +2 -2
  51. package/package.json +11 -11
  52. package/dist/chunk-72J22E3I.mjs.map +0 -1
  53. package/dist/chunk-HAW3H5KJ.mjs.map +0 -1
  54. package/dist/chunk-OP45KQJ6.mjs.map +0 -1
  55. package/dist/chunk-VPMWBZWN.mjs.map +0 -1
  56. package/dist/chunk-X5YYJEDZ.mjs.map +0 -1
  57. /package/dist/{chunk-6HK6THLX.mjs.map → chunk-6PJHU6VG.mjs.map} +0 -0
  58. /package/dist/{chunk-SWY6VV4V.mjs.map → chunk-AGHG37SL.mjs.map} +0 -0
  59. /package/dist/{chunk-KGWPKJI2.mjs.map → chunk-H662AKOV.mjs.map} +0 -0
  60. /package/dist/{chunk-3YBMMWDY.mjs.map → chunk-HWUNOGPF.mjs.map} +0 -0
  61. /package/dist/{chunk-XZJXCEI7.mjs.map → chunk-VDTE5ERA.mjs.map} +0 -0
  62. /package/dist/{chunk-4MJ2ZBIB.mjs.map → chunk-ZG5BKE24.mjs.map} +0 -0
@@ -81,8 +81,8 @@ var Menu = (props) => {
81
81
  } = (0, import_core.omitThemeProps)(mergedProps);
82
82
  const { relatedRef, onDownstreamCloseMapRef, onUpstreamClose } = (_b = useUpstreamMenu()) != null ? _b : {};
83
83
  const { hasDownstreamRef, setDownstreamOpen } = (_c = useUpstreamMenuItem()) != null ? _c : {};
84
- const isNested = !!relatedRef;
85
- if (isNested) {
84
+ const nested = !!relatedRef;
85
+ if (nested) {
86
86
  placement != null ? placement : placement = "right-start";
87
87
  offset != null ? offset : offset = [-8, 8];
88
88
  closeOnBlur != null ? closeOnBlur : closeOnBlur = false;
@@ -122,8 +122,8 @@ var Menu = (props) => {
122
122
  }, [descendants, initialFocusRef]);
123
123
  const onOpenInternal = (0, import_react.useCallback)(() => {
124
124
  onOpenProp == null ? void 0 : onOpenProp();
125
- if (!isNested) onFocusMenu();
126
- }, [onOpenProp, isNested, onFocusMenu]);
125
+ if (!nested) onFocusMenu();
126
+ }, [onOpenProp, nested, onFocusMenu]);
127
127
  const onCloseInternal = (0, import_react.useCallback)(() => {
128
128
  onCloseProp == null ? void 0 : onCloseProp();
129
129
  for (const onClose2 of onCloseMapRef.current.values()) {
@@ -131,7 +131,7 @@ var Menu = (props) => {
131
131
  }
132
132
  }, [onCloseProp]);
133
133
  const id = (0, import_react.useId)();
134
- const { isOpen, onClose, onOpen } = (0, import_use_disclosure.useDisclosure)({
134
+ const { open, onClose, onOpen } = (0, import_use_disclosure.useDisclosure)({
135
135
  ...props,
136
136
  onClose: onCloseInternal,
137
137
  onOpen: onOpenInternal
@@ -144,8 +144,8 @@ var Menu = (props) => {
144
144
  };
145
145
  }, [id, onClose, onDownstreamCloseMapRef]);
146
146
  (0, import_react.useEffect)(() => {
147
- if (setDownstreamOpen) setDownstreamOpen(isOpen);
148
- }, [setDownstreamOpen, isOpen]);
147
+ if (setDownstreamOpen) setDownstreamOpen(open);
148
+ }, [setDownstreamOpen, open]);
149
149
  (0, import_react.useEffect)(() => {
150
150
  if (hasDownstreamRef) hasDownstreamRef.current = true;
151
151
  return () => {
@@ -153,8 +153,8 @@ var Menu = (props) => {
153
153
  };
154
154
  });
155
155
  (0, import_utils2.useUpdateEffect)(() => {
156
- if (!isOpen) setFocusedIndex(-1);
157
- }, [isOpen]);
156
+ if (!open) setFocusedIndex(-1);
157
+ }, [open]);
158
158
  (0, import_utils2.useUnmountEffect)(() => {
159
159
  timeoutIds.current.forEach((id2) => clearTimeout(id2));
160
160
  timeoutIds.current.clear();
@@ -174,9 +174,9 @@ var Menu = (props) => {
174
174
  buttonRef,
175
175
  closeOnSelect,
176
176
  focusedIndex,
177
- isNested,
178
- isOpen,
179
177
  menuRef,
178
+ nested,
179
+ open,
180
180
  requestAnimationFrameId,
181
181
  setFocusedIndex,
182
182
  styles,
@@ -190,14 +190,14 @@ var Menu = (props) => {
190
190
  import_popover.Popover,
191
191
  {
192
192
  ...{
193
- trigger: isNested ? "hover" : "click",
193
+ trigger: nested ? "hover" : "click",
194
194
  ...rest,
195
195
  closeOnBlur,
196
196
  closeOnButton: false,
197
197
  duration,
198
198
  initialFocusRef,
199
- isOpen,
200
199
  offset,
200
+ open,
201
201
  placement,
202
202
  relatedRef,
203
203
  onClose,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context-menu.tsx","../src/menu.tsx","../src/menu-context.ts"],"sourcesContent":["import type { FC, ThemeProps } from \"@yamada-ui/core\"\nimport type { MenuProps } from \"./menu\"\nimport { omitThemeProps, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport { Menu } from \"./menu\"\nimport { ContextMenuProvider } from \"./menu-context\"\n\nexport interface ContextMenuProps\n extends Omit<MenuProps, \"trigger\">,\n ThemeProps<\"ContextMenu\"> {}\n\n/**\n * `ContextMenu` is triggered by a right click and displays a menu at the pointer's position.\n *\n * @see Docs https://yamada-ui.com/components/overlay/context-menu\n */\nexport const ContextMenu: FC<ContextMenuProps> = (props) => {\n const [styles, mergedProps] = useComponentMultiStyle(\"ContextMenu\", props)\n const { ...rest } = omitThemeProps(mergedProps)\n\n return (\n <ContextMenuProvider value={{ styles }}>\n <Menu trigger=\"contextmenu\" {...rest} />\n </ContextMenuProvider>\n )\n}\n\nContextMenu.__ui__ = \"ContextMenu\"\n","import type { FC, ThemeProps } from \"@yamada-ui/core\"\nimport type { PopoverProps } from \"@yamada-ui/popover\"\nimport { omitThemeProps, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport { Popover } from \"@yamada-ui/popover\"\nimport { useDisclosure } from \"@yamada-ui/use-disclosure\"\nimport { funcAll, useUnmountEffect, useUpdateEffect } from \"@yamada-ui/utils\"\nimport { useCallback, useEffect, useId, useRef, useState } from \"react\"\nimport {\n DescendantsContextProvider,\n MenuProvider,\n UpstreamMenuProvider,\n useContextMenu,\n useDescendants,\n useUpstreamMenu,\n useUpstreamMenuItem,\n} from \"./menu-context\"\n\nexport interface MenuOptions {\n /**\n * If `true`, the list element will be closed when value is selected.\n *\n * @default true\n */\n closeOnSelect?: boolean\n}\n\nexport interface MenuProps\n extends ThemeProps<\"Menu\">,\n Omit<PopoverProps, \"closeOnButton\" | \"relatedRef\">,\n MenuOptions {}\n\n/**\n * `Menu` is a component that displays a common dropdown menu.\n *\n * @see Docs https://yamada-ui.com/components/overlay/menu\n */\nexport const Menu: FC<MenuProps> = (props) => {\n const { styles: contextMenuStyles } = useContextMenu() ?? {}\n const [styles, mergedProps] = useComponentMultiStyle(\"Menu\", props, {\n isProcessSkip: !!contextMenuStyles,\n styles: contextMenuStyles,\n })\n let {\n closeOnBlur,\n closeOnSelect = true,\n duration = 0.2,\n initialFocusRef,\n offset,\n placement,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n } = omitThemeProps(mergedProps)\n const { relatedRef, onDownstreamCloseMapRef, onUpstreamClose } =\n useUpstreamMenu() ?? {}\n const { hasDownstreamRef, setDownstreamOpen } = useUpstreamMenuItem() ?? {}\n const isNested = !!relatedRef\n\n if (isNested) {\n placement ??= \"right-start\"\n offset ??= [-8, 8]\n closeOnBlur ??= false\n } else {\n placement ??= \"bottom-start\"\n }\n\n const descendants = useDescendants()\n\n const [focusedIndex, setFocusedIndex] = useState<number>(-1)\n\n const menuRef = useRef<HTMLDivElement>(null)\n const buttonRef = useRef<HTMLButtonElement>(null)\n const timeoutIds = useRef<Set<any>>(new Set([]))\n const requestAnimationFrameId = useRef<null | number>(null)\n const onCloseMapRef = useRef<Map<string, () => void>>(new Map())\n\n const onFocusMenu = useCallback(() => {\n requestAnimationFrame(() =>\n menuRef.current?.focus({ preventScroll: false }),\n )\n }, [])\n\n const onFocusFirstItem = useCallback(() => {\n const id = setTimeout(() => {\n if (initialFocusRef) return\n\n const first = descendants.enabledFirstValue()\n\n if (first) setFocusedIndex(first.index)\n })\n\n timeoutIds.current.add(id)\n }, [descendants, initialFocusRef])\n\n const onFocusLastItem = useCallback(() => {\n const id = setTimeout(() => {\n if (initialFocusRef) return\n\n const last = descendants.enabledLastValue()\n\n if (last) setFocusedIndex(last.index)\n })\n\n timeoutIds.current.add(id)\n }, [descendants, initialFocusRef])\n\n const onOpenInternal = useCallback(() => {\n onOpenProp?.()\n\n if (!isNested) onFocusMenu()\n }, [onOpenProp, isNested, onFocusMenu])\n\n const onCloseInternal = useCallback(() => {\n onCloseProp?.()\n\n for (const onClose of onCloseMapRef.current.values()) {\n onClose()\n }\n }, [onCloseProp])\n\n const id = useId()\n const { isOpen, onClose, onOpen } = useDisclosure({\n ...props,\n onClose: onCloseInternal,\n onOpen: onOpenInternal,\n })\n\n useEffect(() => {\n const onCloseMap = onDownstreamCloseMapRef?.current\n\n onCloseMap?.set(id, onClose)\n\n return () => {\n onCloseMap?.delete(id)\n }\n }, [id, onClose, onDownstreamCloseMapRef])\n\n useEffect(() => {\n if (setDownstreamOpen) setDownstreamOpen(isOpen)\n }, [setDownstreamOpen, isOpen])\n\n useEffect(() => {\n if (hasDownstreamRef) hasDownstreamRef.current = true\n\n return () => {\n if (hasDownstreamRef) hasDownstreamRef.current = false\n }\n })\n\n useUpdateEffect(() => {\n if (!isOpen) setFocusedIndex(-1)\n }, [isOpen])\n\n useUnmountEffect(() => {\n timeoutIds.current.forEach((id) => clearTimeout(id))\n timeoutIds.current.clear()\n })\n\n return (\n <DescendantsContextProvider value={descendants}>\n <UpstreamMenuProvider\n value={{\n relatedRef: menuRef,\n onDownstreamCloseMapRef: onCloseMapRef,\n onUpstreamClose: funcAll(onUpstreamClose, onClose),\n }}\n >\n <MenuProvider\n value={{\n buttonRef,\n closeOnSelect,\n focusedIndex,\n isNested,\n isOpen,\n menuRef,\n requestAnimationFrameId,\n setFocusedIndex,\n styles,\n onClose,\n onFocusFirstItem,\n onFocusLastItem,\n onOpen,\n onUpstreamClose,\n }}\n >\n <Popover\n {...{\n trigger: isNested ? \"hover\" : \"click\",\n ...rest,\n closeOnBlur,\n closeOnButton: false,\n duration,\n initialFocusRef,\n isOpen,\n offset,\n placement,\n relatedRef,\n onClose,\n onOpen,\n }}\n />\n </MenuProvider>\n </UpstreamMenuProvider>\n </DescendantsContextProvider>\n )\n}\n\nMenu.__ui__ = \"Menu\"\n","import type { CSSUIObject } from \"@yamada-ui/core\"\nimport type {\n Dispatch,\n KeyboardEventHandler,\n MutableRefObject,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport type { MenuOptions } from \"./menu\"\nimport { createDescendant } from \"@yamada-ui/use-descendant\"\nimport { createContext } from \"@yamada-ui/utils\"\n\nexport const {\n DescendantsContextProvider,\n useDescendant: useMenuDescendant,\n useDescendants,\n useDescendantsContext: useMenuDescendantsContext,\n} = createDescendant()\n\ninterface MenuContext extends MenuOptions {\n buttonRef: RefObject<HTMLButtonElement>\n focusedIndex: number\n isNested: boolean\n isOpen: boolean\n menuRef: RefObject<HTMLDivElement>\n requestAnimationFrameId: MutableRefObject<null | number>\n setFocusedIndex: Dispatch<SetStateAction<number>>\n styles: { [key: string]: CSSUIObject | undefined }\n onClose: () => void\n onFocusFirstItem: () => void\n onFocusLastItem: () => void\n onOpen: () => void\n onUpstreamClose?: () => void\n}\n\nexport const [MenuProvider, useMenu] = createContext<MenuContext>({\n name: \"MenuContext\",\n errorMessage: `useMenu returned is 'undefined'. Seems you forgot to wrap the components in \"<Menu />\"`,\n})\n\ninterface ContextMenuContext {\n styles: { [key: string]: CSSUIObject | undefined }\n}\n\nexport const [ContextMenuProvider, useContextMenu] =\n createContext<ContextMenuContext>({\n name: \"ContextMenuContext\",\n strict: false,\n })\n\ninterface UpstreamMenuContext {\n relatedRef: RefObject<HTMLElement>\n onDownstreamCloseMapRef: MutableRefObject<Map<string, () => void>>\n onUpstreamClose: () => void\n}\n\nexport const [UpstreamMenuProvider, useUpstreamMenu] =\n createContext<UpstreamMenuContext>({\n name: \"UpstreamMenuContext\",\n strict: false,\n })\n\ninterface UpstreamMenuItemContext {\n hasDownstreamRef: MutableRefObject<boolean>\n setDownstreamOpen: Dispatch<SetStateAction<boolean>>\n onKeyDownRef: RefObject<KeyboardEventHandler<HTMLDivElement>>\n onUpstreamRestoreFocus: () => void\n}\n\nexport const [UpstreamMenuItemProvider, useUpstreamMenuItem] =\n createContext<UpstreamMenuItemContext>({\n name: \"UpstreamMenuItemContext\",\n strict: false,\n })\n"],"mappings":"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","names":["import_core","import_utils","_a","id","onClose","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/context-menu.tsx","../src/menu.tsx","../src/menu-context.ts"],"sourcesContent":["import type { FC, ThemeProps } from \"@yamada-ui/core\"\nimport type { MenuProps } from \"./menu\"\nimport { omitThemeProps, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport { Menu } from \"./menu\"\nimport { ContextMenuProvider } from \"./menu-context\"\n\nexport interface ContextMenuProps\n extends Omit<MenuProps, \"trigger\">,\n ThemeProps<\"ContextMenu\"> {}\n\n/**\n * `ContextMenu` is triggered by a right click and displays a menu at the pointer's position.\n *\n * @see Docs https://yamada-ui.com/components/overlay/context-menu\n */\nexport const ContextMenu: FC<ContextMenuProps> = (props) => {\n const [styles, mergedProps] = useComponentMultiStyle(\"ContextMenu\", props)\n const { ...rest } = omitThemeProps(mergedProps)\n\n return (\n <ContextMenuProvider value={{ styles }}>\n <Menu trigger=\"contextmenu\" {...rest} />\n </ContextMenuProvider>\n )\n}\n\nContextMenu.__ui__ = \"ContextMenu\"\n","import type { FC, ThemeProps } from \"@yamada-ui/core\"\nimport type { PopoverProps } from \"@yamada-ui/popover\"\nimport { omitThemeProps, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport { Popover } from \"@yamada-ui/popover\"\nimport { useDisclosure } from \"@yamada-ui/use-disclosure\"\nimport { funcAll, useUnmountEffect, useUpdateEffect } from \"@yamada-ui/utils\"\nimport { useCallback, useEffect, useId, useRef, useState } from \"react\"\nimport {\n DescendantsContextProvider,\n MenuProvider,\n UpstreamMenuProvider,\n useContextMenu,\n useDescendants,\n useUpstreamMenu,\n useUpstreamMenuItem,\n} from \"./menu-context\"\n\nexport interface MenuOptions {\n /**\n * If `true`, the list element will be closed when value is selected.\n *\n * @default true\n */\n closeOnSelect?: boolean\n}\n\nexport interface MenuProps\n extends ThemeProps<\"Menu\">,\n Omit<PopoverProps, \"closeOnButton\" | \"relatedRef\">,\n MenuOptions {}\n\n/**\n * `Menu` is a component that displays a common dropdown menu.\n *\n * @see Docs https://yamada-ui.com/components/overlay/menu\n */\nexport const Menu: FC<MenuProps> = (props) => {\n const { styles: contextMenuStyles } = useContextMenu() ?? {}\n const [styles, mergedProps] = useComponentMultiStyle(\"Menu\", props, {\n isProcessSkip: !!contextMenuStyles,\n styles: contextMenuStyles,\n })\n let {\n closeOnBlur,\n closeOnSelect = true,\n duration = 0.2,\n initialFocusRef,\n offset,\n placement,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n } = omitThemeProps(mergedProps)\n const { relatedRef, onDownstreamCloseMapRef, onUpstreamClose } =\n useUpstreamMenu() ?? {}\n const { hasDownstreamRef, setDownstreamOpen } = useUpstreamMenuItem() ?? {}\n const nested = !!relatedRef\n\n if (nested) {\n placement ??= \"right-start\"\n offset ??= [-8, 8]\n closeOnBlur ??= false\n } else {\n placement ??= \"bottom-start\"\n }\n\n const descendants = useDescendants()\n\n const [focusedIndex, setFocusedIndex] = useState<number>(-1)\n\n const menuRef = useRef<HTMLDivElement>(null)\n const buttonRef = useRef<HTMLButtonElement>(null)\n const timeoutIds = useRef<Set<any>>(new Set([]))\n const requestAnimationFrameId = useRef<null | number>(null)\n const onCloseMapRef = useRef<Map<string, () => void>>(new Map())\n\n const onFocusMenu = useCallback(() => {\n requestAnimationFrame(() =>\n menuRef.current?.focus({ preventScroll: false }),\n )\n }, [])\n\n const onFocusFirstItem = useCallback(() => {\n const id = setTimeout(() => {\n if (initialFocusRef) return\n\n const first = descendants.enabledFirstValue()\n\n if (first) setFocusedIndex(first.index)\n })\n\n timeoutIds.current.add(id)\n }, [descendants, initialFocusRef])\n\n const onFocusLastItem = useCallback(() => {\n const id = setTimeout(() => {\n if (initialFocusRef) return\n\n const last = descendants.enabledLastValue()\n\n if (last) setFocusedIndex(last.index)\n })\n\n timeoutIds.current.add(id)\n }, [descendants, initialFocusRef])\n\n const onOpenInternal = useCallback(() => {\n onOpenProp?.()\n\n if (!nested) onFocusMenu()\n }, [onOpenProp, nested, onFocusMenu])\n\n const onCloseInternal = useCallback(() => {\n onCloseProp?.()\n\n for (const onClose of onCloseMapRef.current.values()) {\n onClose()\n }\n }, [onCloseProp])\n\n const id = useId()\n const { open, onClose, onOpen } = useDisclosure({\n ...props,\n onClose: onCloseInternal,\n onOpen: onOpenInternal,\n })\n\n useEffect(() => {\n const onCloseMap = onDownstreamCloseMapRef?.current\n\n onCloseMap?.set(id, onClose)\n\n return () => {\n onCloseMap?.delete(id)\n }\n }, [id, onClose, onDownstreamCloseMapRef])\n\n useEffect(() => {\n if (setDownstreamOpen) setDownstreamOpen(open)\n }, [setDownstreamOpen, open])\n\n useEffect(() => {\n if (hasDownstreamRef) hasDownstreamRef.current = true\n\n return () => {\n if (hasDownstreamRef) hasDownstreamRef.current = false\n }\n })\n\n useUpdateEffect(() => {\n if (!open) setFocusedIndex(-1)\n }, [open])\n\n useUnmountEffect(() => {\n timeoutIds.current.forEach((id) => clearTimeout(id))\n timeoutIds.current.clear()\n })\n\n return (\n <DescendantsContextProvider value={descendants}>\n <UpstreamMenuProvider\n value={{\n relatedRef: menuRef,\n onDownstreamCloseMapRef: onCloseMapRef,\n onUpstreamClose: funcAll(onUpstreamClose, onClose),\n }}\n >\n <MenuProvider\n value={{\n buttonRef,\n closeOnSelect,\n focusedIndex,\n menuRef,\n nested,\n open,\n requestAnimationFrameId,\n setFocusedIndex,\n styles,\n onClose,\n onFocusFirstItem,\n onFocusLastItem,\n onOpen,\n onUpstreamClose,\n }}\n >\n <Popover\n {...{\n trigger: nested ? \"hover\" : \"click\",\n ...rest,\n closeOnBlur,\n closeOnButton: false,\n duration,\n initialFocusRef,\n offset,\n open,\n placement,\n relatedRef,\n onClose,\n onOpen,\n }}\n />\n </MenuProvider>\n </UpstreamMenuProvider>\n </DescendantsContextProvider>\n )\n}\n\nMenu.__ui__ = \"Menu\"\n","import type { CSSUIObject } from \"@yamada-ui/core\"\nimport type {\n Dispatch,\n KeyboardEventHandler,\n MutableRefObject,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport type { MenuOptions } from \"./menu\"\nimport { createDescendant } from \"@yamada-ui/use-descendant\"\nimport { createContext } from \"@yamada-ui/utils\"\n\nexport const {\n DescendantsContextProvider,\n useDescendant: useMenuDescendant,\n useDescendants,\n useDescendantsContext: useMenuDescendantsContext,\n} = createDescendant()\n\ninterface MenuContext extends MenuOptions {\n buttonRef: RefObject<HTMLButtonElement>\n focusedIndex: number\n menuRef: RefObject<HTMLDivElement>\n nested: boolean\n open: boolean\n requestAnimationFrameId: MutableRefObject<null | number>\n setFocusedIndex: Dispatch<SetStateAction<number>>\n styles: { [key: string]: CSSUIObject | undefined }\n onClose: () => void\n onFocusFirstItem: () => void\n onFocusLastItem: () => void\n onOpen: () => void\n onUpstreamClose?: () => void\n}\n\nexport const [MenuProvider, useMenu] = createContext<MenuContext>({\n name: \"MenuContext\",\n errorMessage: `useMenu returned is 'undefined'. Seems you forgot to wrap the components in \"<Menu />\"`,\n})\n\ninterface ContextMenuContext {\n styles: { [key: string]: CSSUIObject | undefined }\n}\n\nexport const [ContextMenuProvider, useContextMenu] =\n createContext<ContextMenuContext>({\n name: \"ContextMenuContext\",\n strict: false,\n })\n\ninterface UpstreamMenuContext {\n relatedRef: RefObject<HTMLElement>\n onDownstreamCloseMapRef: MutableRefObject<Map<string, () => void>>\n onUpstreamClose: () => void\n}\n\nexport const [UpstreamMenuProvider, useUpstreamMenu] =\n createContext<UpstreamMenuContext>({\n name: \"UpstreamMenuContext\",\n strict: false,\n })\n\ninterface UpstreamMenuItemContext {\n hasDownstreamRef: MutableRefObject<boolean>\n setDownstreamOpen: Dispatch<SetStateAction<boolean>>\n onKeyDownRef: RefObject<KeyboardEventHandler<HTMLDivElement>>\n onUpstreamRestoreFocus: () => void\n}\n\nexport const [UpstreamMenuItemProvider, useUpstreamMenuItem] =\n createContext<UpstreamMenuItemContext>({\n name: \"UpstreamMenuItemContext\",\n strict: false,\n })\n"],"mappings":"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","names":["import_core","import_utils","_a","id","onClose","import_jsx_runtime"]}
@@ -1,9 +1,9 @@
1
1
  "use client"
2
2
  import {
3
3
  ContextMenu
4
- } from "./chunk-KGWPKJI2.mjs";
5
- import "./chunk-OP45KQJ6.mjs";
6
- import "./chunk-HAW3H5KJ.mjs";
4
+ } from "./chunk-H662AKOV.mjs";
5
+ import "./chunk-JTGSHZXB.mjs";
6
+ import "./chunk-IWH3B4PS.mjs";
7
7
  export {
8
8
  ContextMenu
9
9
  };
package/dist/index.js CHANGED
@@ -96,8 +96,8 @@ var Menu = (props) => {
96
96
  } = (0, import_core.omitThemeProps)(mergedProps);
97
97
  const { relatedRef, onDownstreamCloseMapRef, onUpstreamClose } = (_b = useUpstreamMenu()) != null ? _b : {};
98
98
  const { hasDownstreamRef, setDownstreamOpen } = (_c = useUpstreamMenuItem()) != null ? _c : {};
99
- const isNested = !!relatedRef;
100
- if (isNested) {
99
+ const nested = !!relatedRef;
100
+ if (nested) {
101
101
  placement != null ? placement : placement = "right-start";
102
102
  offset != null ? offset : offset = [-8, 8];
103
103
  closeOnBlur != null ? closeOnBlur : closeOnBlur = false;
@@ -137,8 +137,8 @@ var Menu = (props) => {
137
137
  }, [descendants, initialFocusRef]);
138
138
  const onOpenInternal = (0, import_react.useCallback)(() => {
139
139
  onOpenProp == null ? void 0 : onOpenProp();
140
- if (!isNested) onFocusMenu();
141
- }, [onOpenProp, isNested, onFocusMenu]);
140
+ if (!nested) onFocusMenu();
141
+ }, [onOpenProp, nested, onFocusMenu]);
142
142
  const onCloseInternal = (0, import_react.useCallback)(() => {
143
143
  onCloseProp == null ? void 0 : onCloseProp();
144
144
  for (const onClose2 of onCloseMapRef.current.values()) {
@@ -146,7 +146,7 @@ var Menu = (props) => {
146
146
  }
147
147
  }, [onCloseProp]);
148
148
  const id = (0, import_react.useId)();
149
- const { isOpen, onClose, onOpen } = (0, import_use_disclosure.useDisclosure)({
149
+ const { open, onClose, onOpen } = (0, import_use_disclosure.useDisclosure)({
150
150
  ...props,
151
151
  onClose: onCloseInternal,
152
152
  onOpen: onOpenInternal
@@ -159,8 +159,8 @@ var Menu = (props) => {
159
159
  };
160
160
  }, [id, onClose, onDownstreamCloseMapRef]);
161
161
  (0, import_react.useEffect)(() => {
162
- if (setDownstreamOpen) setDownstreamOpen(isOpen);
163
- }, [setDownstreamOpen, isOpen]);
162
+ if (setDownstreamOpen) setDownstreamOpen(open);
163
+ }, [setDownstreamOpen, open]);
164
164
  (0, import_react.useEffect)(() => {
165
165
  if (hasDownstreamRef) hasDownstreamRef.current = true;
166
166
  return () => {
@@ -168,8 +168,8 @@ var Menu = (props) => {
168
168
  };
169
169
  });
170
170
  (0, import_utils2.useUpdateEffect)(() => {
171
- if (!isOpen) setFocusedIndex(-1);
172
- }, [isOpen]);
171
+ if (!open) setFocusedIndex(-1);
172
+ }, [open]);
173
173
  (0, import_utils2.useUnmountEffect)(() => {
174
174
  timeoutIds.current.forEach((id2) => clearTimeout(id2));
175
175
  timeoutIds.current.clear();
@@ -189,9 +189,9 @@ var Menu = (props) => {
189
189
  buttonRef,
190
190
  closeOnSelect,
191
191
  focusedIndex,
192
- isNested,
193
- isOpen,
194
192
  menuRef,
193
+ nested,
194
+ open,
195
195
  requestAnimationFrameId,
196
196
  setFocusedIndex,
197
197
  styles,
@@ -205,14 +205,14 @@ var Menu = (props) => {
205
205
  import_popover.Popover,
206
206
  {
207
207
  ...{
208
- trigger: isNested ? "hover" : "click",
208
+ trigger: nested ? "hover" : "click",
209
209
  ...rest,
210
210
  closeOnBlur,
211
211
  closeOnButton: false,
212
212
  duration,
213
213
  initialFocusRef,
214
- isOpen,
215
214
  offset,
215
+ open,
216
216
  placement,
217
217
  relatedRef,
218
218
  onClose,
@@ -302,18 +302,22 @@ var MenuItem = (0, import_core4.forwardRef)(
302
302
  children,
303
303
  closeOnSelect: customCloseOnSelect,
304
304
  command,
305
+ disabled,
306
+ focusable,
305
307
  icon,
306
308
  isDisabled,
307
309
  isFocusable,
308
310
  ...props
309
311
  }, ref) => {
310
312
  var _a, _b;
313
+ disabled != null ? disabled : disabled = isDisabled;
314
+ focusable != null ? focusable : focusable = isFocusable;
311
315
  const {
312
316
  closeOnSelect,
313
317
  focusedIndex,
314
- isNested,
315
- isOpen,
316
318
  menuRef,
319
+ nested,
320
+ open,
317
321
  requestAnimationFrameId,
318
322
  setFocusedIndex,
319
323
  styles,
@@ -321,7 +325,7 @@ var MenuItem = (0, import_core4.forwardRef)(
321
325
  onUpstreamClose
322
326
  } = useMenu();
323
327
  const { onUpstreamRestoreFocus } = (_a = useUpstreamMenuItem()) != null ? _a : {};
324
- const [isDownstreamOpen, setDownstreamOpen] = (0, import_react3.useState)(false);
328
+ const [downstreamOpen, setDownstreamOpen] = (0, import_react3.useState)(false);
325
329
  const uuid = (0, import_react3.useId)();
326
330
  const itemRef = (0, import_react3.useRef)(null);
327
331
  const hasDownstreamRef = (0, import_react3.useRef)(false);
@@ -329,19 +333,19 @@ var MenuItem = (0, import_core4.forwardRef)(
329
333
  () => void 0
330
334
  );
331
335
  id != null ? id : id = uuid;
332
- const trulyDisabled = isDisabled && !isFocusable;
336
+ const trulyDisabled = disabled && !focusable;
333
337
  const type = (_b = itemRef.current) == null ? void 0 : _b.getAttribute("type");
334
338
  const role = !!type ? type === "checkbox" ? "menuitemcheckbox" : "menuitemradio" : "menuitem";
335
339
  const { index, register } = useMenuDescendant({ disabled: trulyDisabled });
336
- const isFocused = index === focusedIndex;
340
+ const focused = index === focusedIndex;
337
341
  const onMouseOver = (0, import_react3.useCallback)(() => {
338
- if (isDisabled) return;
342
+ if (disabled) return;
339
343
  setFocusedIndex(index);
340
- }, [index, isDisabled, setFocusedIndex]);
344
+ }, [index, disabled, setFocusedIndex]);
341
345
  const onMouseLeave = (0, import_react3.useCallback)(() => {
342
- if (isDisabled) return;
346
+ if (disabled) return;
343
347
  setFocusedIndex(-1);
344
- }, [setFocusedIndex, isDisabled]);
348
+ }, [setFocusedIndex, disabled]);
345
349
  const onClick = (0, import_react3.useCallback)(
346
350
  (ev) => {
347
351
  if (!isTargetMenuItem(ev.currentTarget)) return;
@@ -365,7 +369,7 @@ var MenuItem = (0, import_core4.forwardRef)(
365
369
  (ev) => {
366
370
  if (ev.key === " ") ev.key = ev.code;
367
371
  const actions = {
368
- ArrowLeft: isNested ? (0, import_utils4.funcAll)(onUpstreamRestoreFocus, onClose) : void 0,
372
+ ArrowLeft: nested ? (0, import_utils4.funcAll)(onUpstreamRestoreFocus, onClose) : void 0,
369
373
  Space: !hasDownstreamRef.current ? (0, import_utils4.funcAll)(onUpstreamClose, onClose) : void 0
370
374
  };
371
375
  const action = actions[ev.key];
@@ -374,15 +378,15 @@ var MenuItem = (0, import_core4.forwardRef)(
374
378
  ev.stopPropagation();
375
379
  action();
376
380
  },
377
- [isNested, onUpstreamRestoreFocus, onClose, onUpstreamClose]
381
+ [nested, onUpstreamRestoreFocus, onClose, onUpstreamClose]
378
382
  );
379
383
  const rest = (0, import_use_clickable.useClickable)({
380
384
  clickOnSpace: false,
381
385
  focusOnClick: false,
382
386
  ...props,
383
387
  ref: (0, import_utils4.mergeRefs)(register, itemRef, ref),
384
- isDisabled,
385
- isFocusable,
388
+ disabled,
389
+ focusable,
386
390
  onClick: (0, import_utils4.handlerAll)(props.onClick, onClick),
387
391
  onFocus: (0, import_utils4.handlerAll)(props.onFocus, onFocus),
388
392
  onKeyDown: (0, import_utils4.handlerAll)(props.onKeyDown, onKeyDown, onKeyDownRef.current),
@@ -390,9 +394,9 @@ var MenuItem = (0, import_core4.forwardRef)(
390
394
  onMouseOver: (0, import_utils4.handlerAll)(props.onMouseOver, onMouseOver)
391
395
  });
392
396
  (0, import_utils4.useUpdateEffect)(() => {
393
- if (!isOpen) return;
397
+ if (!open) return;
394
398
  const id2 = requestAnimationFrameId.current;
395
- if (isFocused && !trulyDisabled && itemRef.current) {
399
+ if (focused && !trulyDisabled && itemRef.current) {
396
400
  if (id2) cancelAnimationFrame(id2);
397
401
  requestAnimationFrameId.current = requestAnimationFrame(() => {
398
402
  var _a2;
@@ -405,7 +409,7 @@ var MenuItem = (0, import_core4.forwardRef)(
405
409
  return () => {
406
410
  if (id2) cancelAnimationFrame(id2);
407
411
  };
408
- }, [isFocused, trulyDisabled, menuRef, isOpen]);
412
+ }, [focused, trulyDisabled, menuRef, open]);
409
413
  children = icon || command ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_core4.ui.span, { style: { flex: 1 }, children }) : children;
410
414
  const css = {
411
415
  alignItems: "center",
@@ -434,11 +438,11 @@ var MenuItem = (0, import_core4.forwardRef)(
434
438
  {
435
439
  id,
436
440
  className: (0, import_utils4.cx)("ui-menu__item", className),
437
- "data-focus": (0, import_utils4.dataAttr)(isDownstreamOpen),
441
+ "data-focus": (0, import_utils4.dataAttr)(downstreamOpen),
438
442
  __css: css,
439
443
  ...rest,
440
444
  role,
441
- tabIndex: !isDownstreamOpen && isFocused ? 0 : -1,
445
+ tabIndex: !downstreamOpen && focused ? 0 : -1,
442
446
  children: [
443
447
  icon ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuIcon, { children: icon }) : null,
444
448
  children,
@@ -453,17 +457,26 @@ var MenuItem = (0, import_core4.forwardRef)(
453
457
  MenuItem.displayName = "MenuItem";
454
458
  MenuItem.__ui__ = "MenuItem";
455
459
  var MenuOptionItem = (0, import_core4.forwardRef)(
456
- ({ className, children, closeOnSelect = false, icon, isChecked, ...rest }, ref) => {
460
+ ({
461
+ className,
462
+ checked,
463
+ children,
464
+ closeOnSelect = false,
465
+ icon,
466
+ isChecked,
467
+ ...rest
468
+ }, ref) => {
469
+ checked != null ? checked : checked = isChecked;
457
470
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
458
471
  MenuItem,
459
472
  {
460
473
  ref,
461
474
  className: (0, import_utils4.cx)("ui-menu__item--option", className),
462
- "aria-checked": isChecked,
475
+ "aria-checked": checked,
463
476
  closeOnSelect,
464
477
  ...rest,
465
478
  children: [
466
- icon !== null ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuIcon, { opacity: isChecked ? 1 : 0, children: icon || /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CheckIcon, {}) }) : null,
479
+ icon !== null ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MenuIcon, { opacity: checked ? 1 : 0, children: icon || /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CheckIcon, {}) }) : null,
467
480
  children
468
481
  ]
469
482
  }
@@ -530,7 +543,7 @@ var MenuButton = (0, import_core5.forwardRef)(
530
543
  const { onKeyDownRef, onUpstreamRestoreFocus } = (_a = useUpstreamMenuItem()) != null ? _a : {};
531
544
  const {
532
545
  buttonRef,
533
- isOpen,
546
+ open,
534
547
  onClose,
535
548
  onFocusFirstItem,
536
549
  onFocusLastItem,
@@ -558,17 +571,17 @@ var MenuButton = (0, import_core5.forwardRef)(
558
571
  (ev) => {
559
572
  if (ev.key === " ") ev.key = ev.code;
560
573
  const actions = {
561
- ArrowLeft: isOpen ? (0, import_utils5.funcAll)(onUpstreamRestoreFocus, onClose) : void 0,
562
- ArrowRight: !isOpen ? (0, import_utils5.funcAll)(onOpen, onFocusFirstItem) : void 0,
563
- Enter: !isOpen ? (0, import_utils5.funcAll)(onOpen, onFocusFirstItem) : void 0,
564
- Space: !isOpen ? (0, import_utils5.funcAll)(onOpen, onFocusFirstItem) : void 0
574
+ ArrowLeft: open ? (0, import_utils5.funcAll)(onUpstreamRestoreFocus, onClose) : void 0,
575
+ ArrowRight: !open ? (0, import_utils5.funcAll)(onOpen, onFocusFirstItem) : void 0,
576
+ Enter: !open ? (0, import_utils5.funcAll)(onOpen, onFocusFirstItem) : void 0,
577
+ Space: !open ? (0, import_utils5.funcAll)(onOpen, onFocusFirstItem) : void 0
565
578
  };
566
579
  const action = actions[ev.key];
567
580
  if (!action) return;
568
581
  ev.preventDefault();
569
582
  action();
570
583
  },
571
- [isOpen, onOpen, onFocusFirstItem, onUpstreamRestoreFocus, onClose]
584
+ [open, onOpen, onFocusFirstItem, onUpstreamRestoreFocus, onClose]
572
585
  );
573
586
  (0, import_utils5.assignRef)(onKeyDownRef, onItemKeyDown);
574
587
  const Component = (0, import_react4.useMemo)(() => as ? (0, import_core5.ui)(as) : Button, [as]);
@@ -580,7 +593,7 @@ var MenuButton = (0, import_core5.forwardRef)(
580
593
  className: (0, import_utils5.cx)("ui-menu", className),
581
594
  "aria-haspopup": "menu",
582
595
  ...rest,
583
- "data-active": (0, import_utils5.dataAttr)(isOpen),
596
+ "data-active": (0, import_utils5.dataAttr)(open),
584
597
  onKeyDown: (0, import_utils5.handlerAll)(rest.onKeyDown, onKeyDown),
585
598
  children
586
599
  }
@@ -780,8 +793,8 @@ var MenuOptionGroup = (0, import_react7.forwardRef)(
780
793
  onChange: onChangeProp,
781
794
  ...rest
782
795
  }, ref) => {
783
- const isRadio = type === "radio";
784
- defaultValue != null ? defaultValue : defaultValue = isRadio ? "" : [];
796
+ const radio = type === "radio";
797
+ defaultValue != null ? defaultValue : defaultValue = radio ? "" : [];
785
798
  const [value, setValue] = (0, import_use_controllable_state.useControllableState)({
786
799
  defaultValue,
787
800
  value: valueProp,
@@ -789,13 +802,13 @@ var MenuOptionGroup = (0, import_react7.forwardRef)(
789
802
  });
790
803
  const onChange = (0, import_react7.useCallback)(
791
804
  (selectedValue) => {
792
- if (isRadio && typeof value === "string") setValue(selectedValue);
793
- if (!isRadio && (0, import_utils9.isArray)(value)) {
805
+ if (radio && (0, import_utils9.isString)(value)) setValue(selectedValue);
806
+ if (!radio && (0, import_utils9.isArray)(value)) {
794
807
  const nextValue = value.includes(selectedValue) ? value.filter((item) => item !== selectedValue) : value.concat(selectedValue);
795
808
  setValue(nextValue);
796
809
  }
797
810
  },
798
- [isRadio, value, setValue]
811
+ [radio, value, setValue]
799
812
  );
800
813
  const validChildren = (0, import_utils9.getValidChildren)(children);
801
814
  const cloneChildren = validChildren.map((child) => {
@@ -805,8 +818,8 @@ var MenuOptionGroup = (0, import_react7.forwardRef)(
805
818
  onChange(child.props.value);
806
819
  (_b = (_a = child.props).onClick) == null ? void 0 : _b.call(_a, ev);
807
820
  };
808
- const isChecked = !isRadio && (0, import_utils9.isArray)(value) ? value.includes(child.props.value) : child.props.value === value;
809
- return (0, import_react7.cloneElement)(child, { type, isChecked, onClick });
821
+ const checked = !radio && (0, import_utils9.isArray)(value) ? value.includes(child.props.value) : child.props.value === value;
822
+ return (0, import_react7.cloneElement)(child, { type, checked, onClick });
810
823
  });
811
824
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
812
825
  MenuGroup,