@servicetitan/anvil2 1.49.4 → 1.49.6
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/CHANGELOG.md +34 -0
- package/dist/{Breadcrumbs-DjR-2OEH.js → Breadcrumbs-Y6IaMoi5.js} +2 -2
- package/dist/{Breadcrumbs-DjR-2OEH.js.map → Breadcrumbs-Y6IaMoi5.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-BkJs1qTF.js → Calendar-B5Ednjem.js} +2 -2
- package/dist/{Calendar-BkJs1qTF.js.map → Calendar-B5Ednjem.js.map} +1 -1
- package/dist/{Calendar-WHERvu2Y.js → Calendar-Ce08LvdP.js} +2 -2
- package/dist/{Calendar-WHERvu2Y.js.map → Calendar-Ce08LvdP.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-C5Qjq_tU.js → Checkbox-ByaZv8wu.js} +2 -2
- package/dist/{Checkbox-C5Qjq_tU.js.map → Checkbox-ByaZv8wu.js.map} +1 -1
- package/dist/{Checkbox-Bhjj-jM4.js → Checkbox-nE-_tWmc.js} +4 -3
- package/dist/{Checkbox-Bhjj-jM4.js.map → Checkbox-nE-_tWmc.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/Checkbox.module-D4EgXL0i.js +27 -0
- package/dist/Checkbox.module-D4EgXL0i.js.map +1 -0
- package/dist/{Chip-X2EwdZ97.js → Chip-UqdorCE2.js} +23 -17
- package/dist/Chip-UqdorCE2.js.map +1 -0
- package/dist/Chip.js +1 -1
- package/dist/Combobox-Dy4IZDg1.js +4281 -0
- package/dist/Combobox-Dy4IZDg1.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable--vA-HttA.js → DataTable-D6MmOQF2.js} +8 -8
- package/dist/{DataTable--vA-HttA.js.map → DataTable-D6MmOQF2.js.map} +1 -1
- package/dist/{DateField-BNleIuS8.js → DateField-BxS9LZG7.js} +6 -6
- package/dist/{DateField-BNleIuS8.js.map → DateField-BxS9LZG7.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-BBgvno-_.js → DateFieldRange-BdDiHUfv.js} +7 -7
- package/dist/{DateFieldRange-BBgvno-_.js.map → DateFieldRange-BdDiHUfv.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-Bcwkxogy.js → DateFieldSingle-CuQO3LH9.js} +7 -7
- package/dist/{DateFieldSingle-Bcwkxogy.js.map → DateFieldSingle-CuQO3LH9.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-DnVJaBBq.js → DateFieldYearless-2YhZmNYg.js} +3 -3
- package/dist/{DateFieldYearless-DnVJaBBq.js.map → DateFieldYearless-2YhZmNYg.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-BivGidsU.js → DateFieldYearlessRange-CgCmvHLs.js} +3 -3
- package/dist/{DateFieldYearlessRange-BivGidsU.js.map → DateFieldYearlessRange-CgCmvHLs.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-Dn6zHxpt.js → DaysOfTheWeek-DlIka9b_.js} +3 -3
- package/dist/{DaysOfTheWeek-Dn6zHxpt.js.map → DaysOfTheWeek-DlIka9b_.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-3ptbLquZ.js → Dialog-DSwvbfdW.js} +21 -62
- package/dist/Dialog-DSwvbfdW.js.map +1 -0
- package/dist/Dialog.css +29 -29
- package/dist/Dialog.js +2 -1
- package/dist/Dialog.js.map +1 -1
- package/dist/DialogCancelButton-sTEfx5kf.js +50 -0
- package/dist/DialogCancelButton-sTEfx5kf.js.map +1 -0
- package/dist/{Drawer-plkbENfI.js → Drawer-CGYcEj6d.js} +5 -4
- package/dist/{Drawer-plkbENfI.js.map → Drawer-CGYcEj6d.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{DrawerContext-D4tWTLVf.js → DrawerContext-Cs3k160L.js} +127 -2
- package/dist/{DrawerContext-D4tWTLVf.js.map → DrawerContext-Cs3k160L.js.map} +1 -1
- package/dist/{FieldLabel-CHMCV9wX.js → FieldLabel-jqlQ1Ldh.js} +2 -2
- package/dist/{FieldLabel-CHMCV9wX.js.map → FieldLabel-jqlQ1Ldh.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{InputMask-Cd01c3Tj.js → InputMask-DaN_Adz6.js} +3 -3
- package/dist/{InputMask-Cd01c3Tj.js.map → InputMask-DaN_Adz6.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{Link-DuYh7Xl2.js → Link-DqZxs0kQ.js} +13 -4
- package/dist/Link-DqZxs0kQ.js.map +1 -0
- package/dist/Link.css +27 -19
- package/dist/Link.js +1 -1
- package/dist/Link.module-CjeOl2NH.js +14 -0
- package/dist/Link.module-CjeOl2NH.js.map +1 -0
- package/dist/{LinkButton-pIUNATNE.js → LinkButton-jb2Gc3hC.js} +5 -2
- package/dist/LinkButton-jb2Gc3hC.js.map +1 -0
- package/dist/LinkButton.js +1 -1
- package/dist/{ListView-CZ5T8bR1.js → ListView-B1I7Ii3g.js} +2 -2
- package/dist/{ListView-CZ5T8bR1.js.map → ListView-B1I7Ii3g.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Menu-DUAfSImY.js → Menu-Cn2JJe1Y.js} +2 -2
- package/dist/{Menu-DUAfSImY.js.map → Menu-Cn2JJe1Y.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/{NumberField-C62E56_v.js → NumberField-BdK4U9mW.js} +2 -2
- package/dist/{NumberField-C62E56_v.js.map → NumberField-BdK4U9mW.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-Bc8ko-eM.js → Page-C-yMjgoO.js} +7 -7
- package/dist/{Page-Bc8ko-eM.js.map → Page-C-yMjgoO.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-BHEEnNas.js → Pagination-CnF6yBr5.js} +2 -2
- package/dist/{Pagination-BHEEnNas.js.map → Pagination-CnF6yBr5.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CIPg_ZgX.js → Popover-CcMDyKTj.js} +2 -2
- package/dist/{Popover-CIPg_ZgX.js.map → Popover-CcMDyKTj.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-CUpF9fFW.js → ProgressBar-CufkbVu5.js} +2 -2
- package/dist/{ProgressBar-CUpF9fFW.js.map → ProgressBar-CufkbVu5.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CyCFna1X.js → Radio-BeBG7Ksw.js} +2 -2
- package/dist/{Radio-CyCFna1X.js.map → Radio-BeBG7Ksw.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-DRS2EjVH.js → RadioGroup-BAjpkCjp.js} +2 -2
- package/dist/{RadioGroup-DRS2EjVH.js.map → RadioGroup-BAjpkCjp.js.map} +1 -1
- package/dist/{SearchField-DrgNbG3I.js → SearchField-D6bICv4b.js} +36 -7
- package/dist/SearchField-D6bICv4b.js.map +1 -0
- package/dist/SearchField.css +13 -8
- package/dist/SearchField.js +1 -1
- package/dist/{SelectCard-lBcnP5j5.js → SelectCard-DDN7qqHv.js} +3 -3
- package/dist/{SelectCard-lBcnP5j5.js.map → SelectCard-DDN7qqHv.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.d.ts +2 -0
- package/dist/SelectField.js +2 -0
- package/dist/SelectField.js.map +1 -0
- package/dist/SelectFieldSync-DQm3_D0v.js +1122 -0
- package/dist/SelectFieldSync-DQm3_D0v.js.map +1 -0
- package/dist/SelectFieldSync.css +168 -0
- package/dist/{SelectTrigger-DdsBqEtU.js → SelectTrigger-CNEhRluU.js} +2 -2
- package/dist/{SelectTrigger-DdsBqEtU.js.map → SelectTrigger-CNEhRluU.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-BkVt3IP4.js → SelectTriggerBase-Cv6hGsrC.js} +5 -35
- package/dist/{SelectTriggerBase-BkVt3IP4.js.map → SelectTriggerBase-Cv6hGsrC.js.map} +1 -1
- package/dist/SelectTriggerBase.css +59 -59
- package/dist/SelectTriggerBase.module-Ce49lamD.js +35 -0
- package/dist/SelectTriggerBase.module-Ce49lamD.js.map +1 -0
- package/dist/Table.js +1 -1
- package/dist/{TextField-CpVkZxMT.js → TextField--y8q4R2H.js} +2 -2
- package/dist/{TextField-CpVkZxMT.js.map → TextField--y8q4R2H.js.map} +1 -1
- package/dist/{TextField-CygbgVVt.js → TextField-aMwSN1iP.js} +2 -2
- package/dist/{TextField-CygbgVVt.js.map → TextField-aMwSN1iP.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-DacevzmW.js → Textarea-D1zwX2h6.js} +2 -2
- package/dist/{Textarea-DacevzmW.js.map → Textarea-D1zwX2h6.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-BkOB5ESa.js → TimeField-BHxXbOfe.js} +4 -4
- package/dist/{TimeField-BkOB5ESa.js.map → TimeField-BHxXbOfe.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-nFhRAJc8.js → Toaster-CRp3nf4U.js} +2 -2
- package/dist/{Toaster-nFhRAJc8.js.map → Toaster-CRp3nf4U.js.map} +1 -1
- package/dist/{Toaster-Dx0cFQwb.js → Toaster-qPt6zb6F.js} +3 -3
- package/dist/{Toaster-Dx0cFQwb.js.map → Toaster-qPt6zb6F.js.map} +1 -1
- package/dist/{Toolbar-DuuaM0Cz.js → Toolbar-XJrmS4v4.js} +13 -13
- package/dist/{Toolbar-DuuaM0Cz.js.map → Toolbar-XJrmS4v4.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-CZsoFe6C.js → Tooltip-CBy7srE2.js} +3 -3
- package/dist/Tooltip-CBy7srE2.js.map +1 -0
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-MHLlAdrH.js → YearlessDateInputWithPicker-LiMI-Oer.js} +4 -4
- package/dist/{YearlessDateInputWithPicker-MHLlAdrH.js.map → YearlessDateInputWithPicker-LiMI-Oer.js.map} +1 -1
- package/dist/assets/icons/st/titan_intelligence.svg +1 -1
- package/dist/assets/icons/st/transactional.svg +1 -0
- package/dist/assets/icons/st.ts +1 -0
- package/dist/beta/components/SelectField/SelectField.d.ts +2 -0
- package/dist/beta/components/SelectField/SelectFieldSync.d.ts +39 -0
- package/dist/beta/components/SelectField/index.d.ts +3 -0
- package/dist/beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts +8 -0
- package/dist/beta/components/SelectField/internal/FieldPopover/FieldPopover.d.ts +8 -0
- package/dist/beta/components/SelectField/internal/InView.d.ts +34 -0
- package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +64 -0
- package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +39 -0
- package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +26 -0
- package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +14 -0
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +31 -0
- package/dist/beta/components/SelectField/stories/SelectField.stories.data.d.ts +32 -0
- package/dist/beta/components/SelectField/types.d.ts +275 -0
- package/dist/beta/components/Table/types.d.ts +1 -1
- package/dist/beta/components/index.d.ts +1 -0
- package/dist/beta/hooks/index.d.ts +1 -0
- package/dist/beta/hooks/useAdaptiveView.d.ts +50 -0
- package/dist/beta/index.d.ts +1 -0
- package/dist/beta.js +5 -4
- package/dist/beta.js.map +1 -1
- package/dist/components/ButtonToggle/ButtonToggle.d.ts +1 -1
- package/dist/components/Chip/Chip.d.ts +2 -1
- package/dist/components/Chip/internal/Chip.d.ts +2 -1
- package/dist/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +1 -1
- package/dist/components/DateFieldSingle/internal/MaskedDateInput.d.ts +1 -1
- package/dist/components/Link/internal/Link.d.ts +21 -2
- package/dist/components/Link/useLinkStyles.d.ts +1 -1
- package/dist/components/LinkButton/LinkButton.d.ts +13 -1
- package/dist/components/SearchField/SearchField.d.ts +6 -3
- package/dist/components/Stepper/Stepper.d.ts +1 -1
- package/dist/components/Stepper/StepperStep.d.ts +1 -1
- package/dist/components/Tab/Tab.d.ts +1 -1
- package/dist/components/Tab/TabButton.d.ts +1 -1
- package/dist/{indeterminate_check_box-RY9zr3xS.js → indeterminate_check_box-B4zobNlt.js} +2 -27
- package/dist/{indeterminate_check_box-RY9zr3xS.js.map → indeterminate_check_box-B4zobNlt.js.map} +1 -1
- package/dist/index.js +39 -38
- package/dist/index.js.map +1 -1
- package/dist/internal/hooks/index.d.ts +1 -0
- package/dist/internal/hooks/useDebouncedCallback/index.d.ts +1 -0
- package/dist/internal/hooks/useDebouncedCallback/useDebouncedCallback.d.ts +28 -0
- package/dist/internal/hooks/useSelectFieldLoading/index.d.ts +1 -0
- package/dist/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.d.ts +102 -0
- package/dist/{Combobox-BO-k4QZE.js → match-sorter.esm-CtBw0MrM.js} +4 -4278
- package/dist/match-sorter.esm-CtBw0MrM.js.map +1 -0
- package/dist/useDialogScrollLock-BW-aVboo.js +41 -0
- package/dist/useDialogScrollLock-BW-aVboo.js.map +1 -0
- package/dist/{useInitialFocus-Cl_Txu7W.js → useInitialFocus-BpmW7pDB.js} +4 -41
- package/dist/useInitialFocus-BpmW7pDB.js.map +1 -0
- package/dist/{usePopoverSupport-CWTCDfN2.js → usePopoverSupport-CCSCHnit.js} +2 -2
- package/dist/{usePopoverSupport-CWTCDfN2.js.map → usePopoverSupport-CCSCHnit.js.map} +1 -1
- package/dist/{utils-aSAOVHjX.js → utils-C-hkPwMi.js} +2 -2
- package/dist/{utils-aSAOVHjX.js.map → utils-C-hkPwMi.js.map} +1 -1
- package/package.json +1 -1
- package/dist/Chip-X2EwdZ97.js.map +0 -1
- package/dist/Combobox-BO-k4QZE.js.map +0 -1
- package/dist/Dialog-3ptbLquZ.js.map +0 -1
- package/dist/Link-DuYh7Xl2.js.map +0 -1
- package/dist/Link.module-Cf17JWod.js +0 -12
- package/dist/Link.module-Cf17JWod.js.map +0 -1
- package/dist/LinkButton-pIUNATNE.js.map +0 -1
- package/dist/SearchField-DrgNbG3I.js.map +0 -1
- package/dist/Tooltip-CZsoFe6C.js.map +0 -1
- package/dist/useInitialFocus-Cl_Txu7W.js.map +0 -1
- /package/dist/{indeterminate_check_box.css → Checkbox.css} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu-DUAfSImY.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuLegacy/MenuLegacyContext.ts","../src/components/Menu/internal/MenuLegacy/MenuLegacyItem.tsx","../src/components/Menu/internal/MenuLegacy/MenuLegacy.tsx","../src/components/Menu/MenuItem.tsx","../src/components/Menu/internal/MenuNested.tsx","../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgArrowDropUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z\" }));\nexport default SvgArrowDropUp;\n","import { createContext } from \"react\";\n\nimport { MenuProps } from \"../Menu\";\n\n/**\n * Context props for Menu components\n */\nexport type MenuContextProps = {\n /**\n * Function to close the root menu\n */\n closeRootMenu: () => void;\n /**\n * Whether auto height is disabled\n */\n disableAutoHeight: MenuProps[\"disableAutoHeight\"];\n};\nexport const MenuContext = createContext<MenuContextProps | null>(null);\n","import * as React from \"react\";\nconst SvgNavigateNext = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.31 6.71a.996.996 0 0 0 0 1.41L13.19 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z\" }));\nexport default SvgNavigateNext;\n","import { Dispatch, HTMLProps, SetStateAction, createContext } from \"react\";\n\nimport { PopoverControlProps } from \"./MenuLegacy\";\n\nexport const MenuLegacyContext = createContext<\n {\n getItemProps: (\n userProps?: HTMLProps<HTMLElement>,\n ) => Record<string, unknown>;\n activeIndex: number | null;\n setActiveIndex?: Dispatch<SetStateAction<number | null>>;\n setHasFocusInside?: Dispatch<SetStateAction<boolean>>;\n isOpen: boolean;\n } & PopoverControlProps\n>({\n getItemProps: () => ({}),\n activeIndex: null,\n isOpen: false,\n});\n","import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport {\n ButtonHTMLAttributes,\n MouseEvent,\n forwardRef,\n useContext,\n FocusEvent,\n ComponentPropsWithoutRef,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../../../internal/functions\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type MenuLegacyItemProps = {\n icon?: IconProps[\"svg\"];\n label: ReactNode;\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\">;\n\nexport const MenuLegacyItem = forwardRef<\n HTMLButtonElement,\n MenuLegacyItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(({ label, disabled, icon, className, ...props }, forwardedRef) => {\n const MenuLegacy = useContext(MenuLegacyContext);\n const item = useListItem({\n label: disabled ? null : childrenToString(label),\n });\n const tree = useFloatingTree();\n const isActive = item.index === MenuLegacy.activeIndex;\n const itemCx = cx([styles[\"item\"]], className);\n return (\n <button\n {...props}\n ref={useMergeRefs([item.ref, forwardedRef])}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n className={itemCx}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n {...MenuLegacy.getItemProps({\n onClick(event: MouseEvent<HTMLButtonElement>) {\n props.onClick?.(event);\n tree?.events.emit(\"click\");\n },\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n MenuLegacy.setHasFocusInside?.(true);\n },\n })}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuLegacyItem.displayName = \"MenuLegacyItem\";\n","import {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n size,\n useHover,\n safePolygon,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n limitShift,\n Placement,\n} from \"@floating-ui/react\";\nimport {\n forwardRef,\n HTMLProps,\n useContext,\n useEffect,\n useRef,\n useState,\n FocusEvent,\n MouseEvent,\n AriaAttributes,\n ReactElement,\n useMemo,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../../../Button\";\nimport { DialogContext } from \"../../../Dialog/internal/DialogContext\";\nimport { DrawerContext } from \"../../../Drawer/internal/DrawerContext\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { ThemeProvider, PortalProviderContext } from \"../../../../providers\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyItem } from \"./MenuLegacyItem\";\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type PopoverControlProps = {\n disableAutoHeight?: boolean;\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n placement?: \"bottom-start\" | \"top-start\" | \"bottom-end\" | \"top-end\";\n};\n\ntype TriggerReturnProps = {\n \"data-open\"?: boolean;\n \"data-focus-inside\"?: boolean;\n \"aria-controls\"?: AriaAttributes[\"aria-controls\"];\n \"aria-expanded\"?: AriaAttributes[\"aria-expanded\"];\n \"aria-haspopup\"?: AriaAttributes[\"aria-haspopup\"];\n id?: string;\n onClick?: () => void;\n onFocus?: () => void;\n onKeyDown?: () => void;\n onKeyUp?: () => void;\n onMouseDown?: () => void;\n onPointerDown?: () => void;\n ref?: ((instance: HTMLElement | null) => void) | null;\n};\n\ntype DefaultTriggerProps = {\n trigger?: never;\n open?: boolean;\n icon?: IconProps[\"svg\"];\n} & (\n | {\n label: string;\n }\n | {\n \"aria-label\": string;\n }\n | {\n \"aria-labellbedby\": string;\n }\n) &\n Omit<ButtonProps, \"icon\"> &\n PopoverControlProps;\n\ntype CustomTriggerProps = {\n trigger: (props: TriggerReturnProps) => ReactElement;\n icon?: IconProps[\"svg\"];\n label?: never;\n open?: boolean;\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} & Omit<HTMLProps<any>, \"ref\"> &\n PopoverControlProps;\n\nexport type MenuLegacyProps = DefaultTriggerProps | CustomTriggerProps;\n\nexport const MenuLegacyComponent = forwardRef<HTMLElement, MenuLegacyProps>(\n (\n {\n children,\n disableAutoHeight,\n open,\n icon,\n root,\n placement = \"bottom-start\",\n ...props\n },\n forwardedRef,\n ) => {\n const [isOpen, setIsOpen] = useState(!!open || false);\n const [hasFocusInside, setHasFocusInside] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const scrollRef = useRef<HTMLDivElement>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuLegacyHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n\n const elementsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const labelsRef = useRef<Array<string | null>>([]);\n const parent = useContext(MenuLegacyContext);\n const { root: portalRoot } = useContext(PortalProviderContext);\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const item = useListItem();\n\n const isNested = parentId != null;\n\n const { theme, mode = \"light\" } = useContext(ThemeProviderContext);\n\n const dialogContext = useContext(DialogContext);\n const drawerContext = useContext(DrawerContext);\n\n const fallbackArr = () => {\n if (!isNested) {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? placement\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? placement\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }\n\n return parent.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n };\n\n const handleIsOpenChange = (internalOpen: boolean) => {\n if (typeof open === \"boolean\") {\n setIsOpen(open);\n return;\n }\n setIsOpen(internalOpen);\n };\n\n const { floatingStyles, refs, context } = useFloating<HTMLButtonElement>({\n nodeId,\n open: isOpen,\n onOpenChange: handleIsOpenChange,\n placement: isNested ? \"right-start\" : placement,\n middleware: [\n offset({\n mainAxis: isNested ? 0 : 4,\n alignmentAxis: isNested ? -4 : 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !parent.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !parent.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n setMenuLegacyHeight(availableHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth}px`,\n maxHeight: `${availableHeight}px`,\n });\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n const [hoverEnabled, setHoverEnabled] = useState(false);\n const hover = useHover(context, {\n enabled: hoverEnabled,\n delay: { open: 75 },\n handleClose: safePolygon({ blockPointerEvents: true }),\n });\n const click = useClick(context, {\n event: \"mousedown\",\n toggle: !isNested,\n ignoreMouse: isNested,\n });\n const role = useRole(context, { role: \"menu\" });\n const dismiss = useDismiss(context, { bubbles: true });\n const listNavigation = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n });\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n onMatch: isOpen ? setActiveIndex : undefined,\n activeIndex,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([hover, click, role, dismiss, listNavigation, typeahead]);\n\n // Event emitter allows you to communicate across tree components.\n // This effect closes all menus when an item gets clicked anywhere\n // in the tree.\n useEffect(() => {\n if (!tree) return;\n\n function handleTreeClick() {\n setIsOpen(!!open || false);\n }\n\n function onSubMenuLegacyOpen(event: {\n nodeId: string;\n parentId: string;\n }) {\n if (event.nodeId === nodeId || event.parentId !== parentId) {\n return;\n }\n setIsOpen(!!open || false);\n }\n\n tree.events.on(\"click\", handleTreeClick);\n tree.events.on(\"menuopen\", onSubMenuLegacyOpen);\n\n return () => {\n tree.events.off(\"click\", handleTreeClick);\n tree.events.off(\"menuopen\", onSubMenuLegacyOpen);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tree, nodeId, parentId]);\n\n useEffect(() => {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n if (!isOpen) {\n setMenuLegacyHeight(null);\n return;\n }\n setTimeout(() => {\n if (!scrollRef.current || !refs.floating.current) return;\n setMenuLegacyHeight(refs.floating.current.clientHeight);\n const isOverflow =\n scrollRef.current.scrollHeight > refs.floating.current.clientHeight;\n if (!isOverflow) return;\n const showTop = scrollRef.current.scrollTop > 0;\n const showBottom =\n scrollRef.current.scrollHeight -\n refs.floating.current.clientHeight -\n scrollTop -\n 16 >\n 0;\n setArrowStart(showTop);\n setArrowEnd(showBottom);\n }, 0);\n }, [\n disableAutoHeight,\n isOpen,\n parent.disableAutoHeight,\n refs.floating,\n scrollTop,\n ]);\n\n useEffect(() => {\n if (!isOpen || !tree) return;\n tree.events.emit(\"menuopen\", { parentId, nodeId });\n }, [tree, isOpen, nodeId, parentId]);\n\n const menuComponentCX = cx({\n [styles[\"nested-menu\"]]: isNested,\n [styles[\"item\"]]: !isNested,\n });\n\n const menuRefs = useMergeRefs([refs.setReference, item.ref, forwardedRef]);\n\n const triggerProps: TriggerReturnProps = {\n \"data-open\": isOpen,\n \"data-focus-inside\": hasFocusInside,\n ref: menuRefs,\n ...getReferenceProps(\n parent.getItemProps({\n ...props,\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onFocus(event: FocusEvent<any>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as HTMLProps<any>),\n ),\n };\n\n const value = useMemo(\n () => ({\n activeIndex,\n setActiveIndex,\n getItemProps,\n setHasFocusInside,\n isOpen,\n disableAutoHeight: disableAutoHeight ?? parent.disableAutoHeight,\n }),\n [\n activeIndex,\n disableAutoHeight,\n getItemProps,\n isOpen,\n parent.disableAutoHeight,\n ],\n );\n\n return (\n <FloatingNode id={nodeId}>\n {isNested ? (\n <button\n ref={menuRefs}\n tabIndex={parent.activeIndex === item.index ? 0 : -1}\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-open={isOpen ? \"\" : undefined}\n data-nested=\"\"\n data-focus-inside={hasFocusInside ? \"\" : undefined}\n className={menuComponentCX}\n {...getReferenceProps(\n parent.getItemProps({\n ...props,\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n onMouseEnter: () => setHoverEnabled(true),\n } as HTMLProps<HTMLButtonElement>),\n )}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {\"label\" in props && props.label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n ) : \"trigger\" in props ? (\n props.trigger?.(triggerProps)\n ) : (\n <Button\n {...(props as ButtonProps)}\n {...(triggerProps as DefaultTriggerProps)}\n {...getReferenceProps({\n onFocus: (event) => props.onFocus?.(event),\n } as HTMLProps<HTMLButtonElement>)}\n icon={icon}\n data-anv=\"menu\"\n >\n {\"label\" in props && props.label}\n </Button>\n )}\n\n <MenuLegacyContext.Provider value={value}>\n <FloatingList elementsRef={elementsRef} labelsRef={labelsRef}>\n {isOpen &&\n (dialogContext == null ||\n dialogContext?.ref?.current != null) && (\n <FloatingPortal\n root={\n root ??\n dialogContext?.ref?.current ??\n drawerContext?.ref?.current ??\n portalRoot\n }\n >\n <FloatingFocusManager\n context={context}\n modal={false}\n initialFocus={isNested ? -1 : 0}\n returnFocus={!isNested}\n >\n <ThemeProvider theme={theme} mode={mode}>\n <div\n ref={refs.setFloating}\n className={styles[\"menu\"]}\n style={floatingStyles}\n {...getFloatingProps({\n onMouseEnter: () => {\n setHoverEnabled(false);\n },\n onKeyDown: (e) => {\n if (\n e.code === \"ArrowLeft\" ||\n e.code === \"ArrowRight\"\n ) {\n e.stopPropagation();\n }\n },\n })}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon\n svg={Up}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n <div\n ref={scrollRef}\n className={styles[\"scroll\"]}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon\n svg={Down}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n </div>\n </ThemeProvider>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingList>\n </MenuLegacyContext.Provider>\n </FloatingNode>\n );\n },\n);\n\nMenuLegacyComponent.displayName = \"MenuLegacyComponent\";\n\nconst MenuLegacyElement = forwardRef<HTMLElement, MenuLegacyProps>(\n (props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuLegacyComponent {...props} ref={ref} />\n </FloatingTree>\n );\n }\n\n return <MenuLegacyComponent {...props} ref={ref} />;\n },\n);\n\nMenuLegacyElement.displayName = \"MenuLegacy\";\n\nexport const MenuLegacy = Object.assign(MenuLegacyElement, {\n Item: MenuLegacyItem,\n});\n","import {\n ButtonHTMLAttributes,\n forwardRef,\n useContext,\n ComponentPropsWithoutRef,\n ReactNode,\n MouseEvent,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString, supportsPopover } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport { MenuLegacyItem } from \"./internal/MenuLegacy\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the MenuItem component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type MenuItemProps = {\n /**\n * Icon to display next to the menu item label\n */\n icon?: IconProps[\"svg\"];\n /**\n * The label text or content for the menu item\n */\n label: ReactNode;\n /**\n * Whether the menu item is disabled\n * @default false\n */\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * MenuItem component for individual menu options within a Menu.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n * - Legacy popover support with fallback\n *\n * @example\n * <MenuItem\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\nexport const MenuItem = forwardRef<\n HTMLButtonElement,\n MenuItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n const {\n label,\n disabled,\n icon,\n className,\n onClick,\n onMouseEnter,\n id: idProp,\n ...rest\n } = props;\n const menuContext = useContext(MenuContext);\n const uid = useId();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useMergeRefs([buttonRef, ref]);\n const [tabIndex, setTabIndex] = useState(-1);\n const itemCx = cx([styles[\"item\"]], className);\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n menuContext?.closeRootMenu();\n };\n const onMouseEnterHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(e);\n buttonRef.current?.focus();\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover())\n return (\n <MenuLegacyItem data-tracking-id={trackingId} {...props} ref={ref} />\n );\n\n return (\n <button\n data-tracking-id={trackingId}\n {...rest}\n ref={combinedRef}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n id={idProp ?? `menuitem-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n aria-disabled={disabled}\n onClick={onClickHandler}\n onMouseEnter={onMouseEnterHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuItem.displayName = \"MenuItem\";\n","import {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport {\n ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n useCallback,\n useContext,\n MouseEvent,\n KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport {\n getActiveElement,\n safeHidePopover,\n safeShowPopover,\n} from \"../../../internal/functions\";\nimport { Icon, IconProps } from \"../../Icon\";\n\nimport { MenuCommonProps } from \"../types\";\nimport { MenuContext } from \"./MenuContext\";\n\nimport styles from \"../Menu.module.scss\";\n\n/**\n * Props for the MenuNested component\n * @extends ComponentPropsWithoutRef<\"button\">\n * @extends MenuCommonProps\n */\nexport type MenuNestedProps = ComponentPropsWithoutRef<\"button\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the nested menu button\n */\n icon?: IconProps[\"svg\"];\n };\n\n/**\n * MenuNested component for creating nested submenus within a Menu.\n *\n * Features:\n * - Hover-based menu opening and closing\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys\n * - Scroll indicators for overflow content\n * - Automatic height adjustment\n * - Focus management and accessibility\n * - Popover API support with legacy fallback\n * - Smooth transitions and animations\n * - Context integration with parent menus\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n * </Menu>\n */\nexport const MenuNested = (props: MenuNestedProps) => {\n const { children, open, defaultOpen = false, label, className, icon } = props;\n const uid = useId();\n const [tabIndex, setTabIndex] = useState(-1);\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n /* istanbul ignore next */\n const fallbackArr = useCallback(() => {\n return menuContext?.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n }, [menuContext?.disableAutoHeight]);\n\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n const timeoutId = setTimeout(() => {\n if (!invokerRef.current || !menuRef.current) return;\n computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [fallbackArr, menuContext?.disableAutoHeight, menuHeight]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 100); // Shorter debounce for nested menu\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\n // Stryker restore all\n\n const popoverHoverTriggered = useRef<boolean>();\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n popoverHoverTriggered.current = true;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (\n !popoverHoverTriggered.current ||\n !menuRef.current ||\n !childrenRef.current\n )\n return;\n\n // Show the menu but keep it transparent\n menuRef.current.style.opacity = \"0\";\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n\n setOpenState(true);\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n\n // Make the menu visible with a short delay to ensure smooth transition\n requestAnimationFrame(() => {\n if (!menuRef.current) return;\n menuRef.current.style.opacity = \"1\";\n });\n }, [uid, fallbackArr, menuContext?.disableAutoHeight]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows menu to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(async (fn?: () => void) => {\n popoverHoverTriggered.current = false;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (popoverHoverTriggered.current || !menuRef.current) return;\n fn?.();\n safeHidePopover(menuRef.current);\n setOpenState(false);\n }, []);\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n setOpenState(open);\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n }, [closeMenu, isControlled, open, openMenu]);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const nestedContainer = containerRef.current;\n nestedContainer.addEventListener(\"focusin\", (_e) => {\n openMenu();\n });\n nestedContainer.addEventListener(\"focusout\", () => closeMenu());\n return () => {\n nestedContainer.removeEventListener(\"focusin\", () => openMenu());\n nestedContainer.removeEventListener(\"focusout\", () => closeMenu());\n };\n }, [closeMenu, openMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current) return;\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"Escape\") {\n menuContext?.closeRootMenu();\n }\n if (e.code === \"ArrowLeft\") {\n e.stopPropagation();\n e.preventDefault();\n invokerRef.current?.focus();\n closeMenu();\n }\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.code === \"ArrowRight\") {\n e.stopPropagation();\n e.preventDefault();\n openMenu();\n const firstItem = menuRef.current?.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n )[0];\n (firstItem as HTMLButtonElement).focus();\n }\n };\n\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n openMenu();\n };\n\n const itemCx = cx([styles[\"item\"]], className);\n\n return (\n <div ref={containerRef} data-nested=\"true\">\n <button\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-state={openState ? \"open\" : \"close\"}\n ref={invokerRef}\n id={`menuitem-${uid.replace(/:/g, \"\")}`}\n aria-expanded={openState}\n onMouseEnter={(e) => {\n e.currentTarget.focus();\n }}\n onKeyDown={MenuButtonOnKeyDownHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onClick={MenuButtonOnClick}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n <div\n popover=\"auto\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={styles.content}\n ref={menuRef}\n role=\"presentation\"\n onKeyDown={onKeyDownHandler}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n useContext,\n KeyboardEvent,\n MouseEvent,\n forwardRef,\n} from \"react\";\nimport {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../Button\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { DialogContext } from \"../Dialog/internal/DialogContext\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { Icon, IconProps } from \"../Icon\";\nimport {\n supportsPopover,\n safeHidePopover,\n safeShowPopover,\n} from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { MenuItem } from \"./MenuItem\";\nimport {\n MenuLegacy as MenuLegacyComponent,\n MenuLegacyProps,\n} from \"./internal/MenuLegacy\";\nimport { MenuNested } from \"./internal/MenuNested\";\nimport { MenuCommonProps } from \"./types\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the Menu component\n * @extends Omit<ButtonProps, \"icon\">\n * @extends MenuCommonProps\n */\nexport type MenuProps = Omit<ButtonProps, \"icon\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the menu button\n */\n icon?: IconProps[\"svg\"];\n } & DataTrackingId;\n\nconst MenuElement = forwardRef<HTMLElement, MenuProps>(\n (props: MenuProps, ref) => {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n root,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\n\n const uid = useId();\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const dialogContext = useContext(DialogContext);\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n const fallbackArr = useCallback(() => {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? [placement]\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? [placement]\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }, [disableAutoHeight, placement]);\n\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n const timeoutId = setTimeout(() => {\n if (!invokerRef.current || !menuRef.current) return;\n\n computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: maxHeight\n ? `${Math.min(newHeight, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n disableAutoHeight,\n menuHeight,\n maxHeight,\n ]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 150);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\n // Stryker restore all\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n if (!menuRef.current || !childrenRef.current) return;\n\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n\n setOpenState(true);\n\n // Wait for next frame to ensure DOM is updated\n requestAnimationFrame(() => {\n if (!childrenRef.current) return;\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n });\n\n dialogContext?.setHasOpenPopover?.(true);\n }, [\n dialogContext,\n uid,\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n ]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows popover to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(\n async (fn?: () => void) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n invokerRef.current?.focus();\n },\n [openState, dialogContext],\n );\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n // open ? openMenu() : closeMenu();\n }, [closeMenu, isControlled, open, openMenu, dialogContext]);\n\n // Effect to attach eventListener for reading click state from\n // globalThis.MouseEvent for composedPath to detect if target is\n // part of the composedPath, then to attempt to close\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n let isClosable = false;\n const onMouseDownHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n onOutsidePress?.(e);\n isClosable = true;\n }\n };\n const onMouseUpHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n if (isControlled || !isClosable || !openState) return;\n\n closeMenu();\n }\n };\n\n document.addEventListener(\"mousedown\", onMouseDownHandler);\n document.addEventListener(\"mouseup\", onMouseUpHandler);\n return () => {\n document.removeEventListener(\"mousedown\", onMouseDownHandler);\n document.removeEventListener(\"mouseup\", onMouseUpHandler);\n };\n }, [isControlled, openState, onOutsidePress, closeMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current || menuContext) return;\n if (e.code === \"Escape\") {\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n }\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const value = useMemo(() => {\n return {\n disableAutoHeight,\n closeRootMenu: menuContext?.closeRootMenu ?? closeMenu,\n };\n }, [disableAutoHeight, menuContext, closeMenu]);\n\n const MenuButtonOnKeyDownHandler = (\n e: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (e.code === \"ArrowDown\") {\n focusItems?.[0].focus();\n e.stopPropagation();\n e.preventDefault();\n }\n };\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n if (openState) {\n closeMenu();\n return;\n }\n openMenu();\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover())\n return (\n <MenuLegacyComponent\n data-tracking-id={trackingId}\n {...(props as MenuLegacyProps)}\n ref={ref}\n />\n );\n\n if (menuContext) {\n return (\n <MenuContext.Provider value={value}>\n <MenuNested\n data-tracking-id={trackingId}\n open={open}\n defaultOpen={defaultOpen}\n className={props.className}\n icon={props.icon}\n label={label}\n >\n {children}\n </MenuNested>\n </MenuContext.Provider>\n );\n }\n return (\n <MenuContext.Provider value={value}>\n {trigger ? (\n trigger({\n ref: invokerRef,\n onClick: () => MenuButtonOnClick(),\n onKeyDown: MenuButtonOnKeyDownHandler,\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n })\n ) : (\n <Button\n ref={invokerRef}\n onClick={MenuButtonOnClick}\n onKeyDown={MenuButtonOnKeyDownHandler}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n data-state={openState ? \"open\" : \"close\"}\n aria-expanded={openState}\n {...rest}\n >\n {label}\n </Button>\n )}\n <div\n popover=\"manual\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={cx(styles.content, contentClassName)}\n onKeyDown={onKeyDownHandler}\n ref={menuRef}\n role=\"presentation\"\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: maxHeight\n ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : (menuHeight ?? \"inherit\"),\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </MenuContext.Provider>\n );\n },\n);\n\nMenuElement.displayName = \"Menu\";\n\n/**\n * Menu component for displaying dropdown menus with navigation and actions.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys and escape\n * - Custom trigger elements\n * - Nested menu support\n * - Automatic height adjustment\n * - Scroll indicators for overflow content\n * - Fully accessible with proper ARIA attributes\n * - Popover API support with legacy fallback\n * - Outside click detection and handling\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu.Item label=\"Copy\" onClick={() => console.log('Copy clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(MenuElement, {\n /**\n * MenuItem component for individual menu options.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n *\n * @example\n * <Menu.Item\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\n Item: MenuItem,\n});\n"],"names":["styles","Next","Up","Down","MenuLegacyComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu-Cn2JJe1Y.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuLegacy/MenuLegacyContext.ts","../src/components/Menu/internal/MenuLegacy/MenuLegacyItem.tsx","../src/components/Menu/internal/MenuLegacy/MenuLegacy.tsx","../src/components/Menu/MenuItem.tsx","../src/components/Menu/internal/MenuNested.tsx","../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgArrowDropUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z\" }));\nexport default SvgArrowDropUp;\n","import { createContext } from \"react\";\n\nimport { MenuProps } from \"../Menu\";\n\n/**\n * Context props for Menu components\n */\nexport type MenuContextProps = {\n /**\n * Function to close the root menu\n */\n closeRootMenu: () => void;\n /**\n * Whether auto height is disabled\n */\n disableAutoHeight: MenuProps[\"disableAutoHeight\"];\n};\nexport const MenuContext = createContext<MenuContextProps | null>(null);\n","import * as React from \"react\";\nconst SvgNavigateNext = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.31 6.71a.996.996 0 0 0 0 1.41L13.19 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z\" }));\nexport default SvgNavigateNext;\n","import { Dispatch, HTMLProps, SetStateAction, createContext } from \"react\";\n\nimport { PopoverControlProps } from \"./MenuLegacy\";\n\nexport const MenuLegacyContext = createContext<\n {\n getItemProps: (\n userProps?: HTMLProps<HTMLElement>,\n ) => Record<string, unknown>;\n activeIndex: number | null;\n setActiveIndex?: Dispatch<SetStateAction<number | null>>;\n setHasFocusInside?: Dispatch<SetStateAction<boolean>>;\n isOpen: boolean;\n } & PopoverControlProps\n>({\n getItemProps: () => ({}),\n activeIndex: null,\n isOpen: false,\n});\n","import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport {\n ButtonHTMLAttributes,\n MouseEvent,\n forwardRef,\n useContext,\n FocusEvent,\n ComponentPropsWithoutRef,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../../../internal/functions\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type MenuLegacyItemProps = {\n icon?: IconProps[\"svg\"];\n label: ReactNode;\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\">;\n\nexport const MenuLegacyItem = forwardRef<\n HTMLButtonElement,\n MenuLegacyItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(({ label, disabled, icon, className, ...props }, forwardedRef) => {\n const MenuLegacy = useContext(MenuLegacyContext);\n const item = useListItem({\n label: disabled ? null : childrenToString(label),\n });\n const tree = useFloatingTree();\n const isActive = item.index === MenuLegacy.activeIndex;\n const itemCx = cx([styles[\"item\"]], className);\n return (\n <button\n {...props}\n ref={useMergeRefs([item.ref, forwardedRef])}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n className={itemCx}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n {...MenuLegacy.getItemProps({\n onClick(event: MouseEvent<HTMLButtonElement>) {\n props.onClick?.(event);\n tree?.events.emit(\"click\");\n },\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n MenuLegacy.setHasFocusInside?.(true);\n },\n })}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuLegacyItem.displayName = \"MenuLegacyItem\";\n","import {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n size,\n useHover,\n safePolygon,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n limitShift,\n Placement,\n} from \"@floating-ui/react\";\nimport {\n forwardRef,\n HTMLProps,\n useContext,\n useEffect,\n useRef,\n useState,\n FocusEvent,\n MouseEvent,\n AriaAttributes,\n ReactElement,\n useMemo,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../../../Button\";\nimport { DialogContext } from \"../../../Dialog/internal/DialogContext\";\nimport { DrawerContext } from \"../../../Drawer/internal/DrawerContext\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { ThemeProvider, PortalProviderContext } from \"../../../../providers\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyItem } from \"./MenuLegacyItem\";\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type PopoverControlProps = {\n disableAutoHeight?: boolean;\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n placement?: \"bottom-start\" | \"top-start\" | \"bottom-end\" | \"top-end\";\n};\n\ntype TriggerReturnProps = {\n \"data-open\"?: boolean;\n \"data-focus-inside\"?: boolean;\n \"aria-controls\"?: AriaAttributes[\"aria-controls\"];\n \"aria-expanded\"?: AriaAttributes[\"aria-expanded\"];\n \"aria-haspopup\"?: AriaAttributes[\"aria-haspopup\"];\n id?: string;\n onClick?: () => void;\n onFocus?: () => void;\n onKeyDown?: () => void;\n onKeyUp?: () => void;\n onMouseDown?: () => void;\n onPointerDown?: () => void;\n ref?: ((instance: HTMLElement | null) => void) | null;\n};\n\ntype DefaultTriggerProps = {\n trigger?: never;\n open?: boolean;\n icon?: IconProps[\"svg\"];\n} & (\n | {\n label: string;\n }\n | {\n \"aria-label\": string;\n }\n | {\n \"aria-labellbedby\": string;\n }\n) &\n Omit<ButtonProps, \"icon\"> &\n PopoverControlProps;\n\ntype CustomTriggerProps = {\n trigger: (props: TriggerReturnProps) => ReactElement;\n icon?: IconProps[\"svg\"];\n label?: never;\n open?: boolean;\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} & Omit<HTMLProps<any>, \"ref\"> &\n PopoverControlProps;\n\nexport type MenuLegacyProps = DefaultTriggerProps | CustomTriggerProps;\n\nexport const MenuLegacyComponent = forwardRef<HTMLElement, MenuLegacyProps>(\n (\n {\n children,\n disableAutoHeight,\n open,\n icon,\n root,\n placement = \"bottom-start\",\n ...props\n },\n forwardedRef,\n ) => {\n const [isOpen, setIsOpen] = useState(!!open || false);\n const [hasFocusInside, setHasFocusInside] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const scrollRef = useRef<HTMLDivElement>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuLegacyHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n\n const elementsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const labelsRef = useRef<Array<string | null>>([]);\n const parent = useContext(MenuLegacyContext);\n const { root: portalRoot } = useContext(PortalProviderContext);\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const item = useListItem();\n\n const isNested = parentId != null;\n\n const { theme, mode = \"light\" } = useContext(ThemeProviderContext);\n\n const dialogContext = useContext(DialogContext);\n const drawerContext = useContext(DrawerContext);\n\n const fallbackArr = () => {\n if (!isNested) {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? placement\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? placement\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }\n\n return parent.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n };\n\n const handleIsOpenChange = (internalOpen: boolean) => {\n if (typeof open === \"boolean\") {\n setIsOpen(open);\n return;\n }\n setIsOpen(internalOpen);\n };\n\n const { floatingStyles, refs, context } = useFloating<HTMLButtonElement>({\n nodeId,\n open: isOpen,\n onOpenChange: handleIsOpenChange,\n placement: isNested ? \"right-start\" : placement,\n middleware: [\n offset({\n mainAxis: isNested ? 0 : 4,\n alignmentAxis: isNested ? -4 : 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !parent.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !parent.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n setMenuLegacyHeight(availableHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth}px`,\n maxHeight: `${availableHeight}px`,\n });\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n const [hoverEnabled, setHoverEnabled] = useState(false);\n const hover = useHover(context, {\n enabled: hoverEnabled,\n delay: { open: 75 },\n handleClose: safePolygon({ blockPointerEvents: true }),\n });\n const click = useClick(context, {\n event: \"mousedown\",\n toggle: !isNested,\n ignoreMouse: isNested,\n });\n const role = useRole(context, { role: \"menu\" });\n const dismiss = useDismiss(context, { bubbles: true });\n const listNavigation = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n });\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n onMatch: isOpen ? setActiveIndex : undefined,\n activeIndex,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([hover, click, role, dismiss, listNavigation, typeahead]);\n\n // Event emitter allows you to communicate across tree components.\n // This effect closes all menus when an item gets clicked anywhere\n // in the tree.\n useEffect(() => {\n if (!tree) return;\n\n function handleTreeClick() {\n setIsOpen(!!open || false);\n }\n\n function onSubMenuLegacyOpen(event: {\n nodeId: string;\n parentId: string;\n }) {\n if (event.nodeId === nodeId || event.parentId !== parentId) {\n return;\n }\n setIsOpen(!!open || false);\n }\n\n tree.events.on(\"click\", handleTreeClick);\n tree.events.on(\"menuopen\", onSubMenuLegacyOpen);\n\n return () => {\n tree.events.off(\"click\", handleTreeClick);\n tree.events.off(\"menuopen\", onSubMenuLegacyOpen);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tree, nodeId, parentId]);\n\n useEffect(() => {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n if (!isOpen) {\n setMenuLegacyHeight(null);\n return;\n }\n setTimeout(() => {\n if (!scrollRef.current || !refs.floating.current) return;\n setMenuLegacyHeight(refs.floating.current.clientHeight);\n const isOverflow =\n scrollRef.current.scrollHeight > refs.floating.current.clientHeight;\n if (!isOverflow) return;\n const showTop = scrollRef.current.scrollTop > 0;\n const showBottom =\n scrollRef.current.scrollHeight -\n refs.floating.current.clientHeight -\n scrollTop -\n 16 >\n 0;\n setArrowStart(showTop);\n setArrowEnd(showBottom);\n }, 0);\n }, [\n disableAutoHeight,\n isOpen,\n parent.disableAutoHeight,\n refs.floating,\n scrollTop,\n ]);\n\n useEffect(() => {\n if (!isOpen || !tree) return;\n tree.events.emit(\"menuopen\", { parentId, nodeId });\n }, [tree, isOpen, nodeId, parentId]);\n\n const menuComponentCX = cx({\n [styles[\"nested-menu\"]]: isNested,\n [styles[\"item\"]]: !isNested,\n });\n\n const menuRefs = useMergeRefs([refs.setReference, item.ref, forwardedRef]);\n\n const triggerProps: TriggerReturnProps = {\n \"data-open\": isOpen,\n \"data-focus-inside\": hasFocusInside,\n ref: menuRefs,\n ...getReferenceProps(\n parent.getItemProps({\n ...props,\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onFocus(event: FocusEvent<any>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as HTMLProps<any>),\n ),\n };\n\n const value = useMemo(\n () => ({\n activeIndex,\n setActiveIndex,\n getItemProps,\n setHasFocusInside,\n isOpen,\n disableAutoHeight: disableAutoHeight ?? parent.disableAutoHeight,\n }),\n [\n activeIndex,\n disableAutoHeight,\n getItemProps,\n isOpen,\n parent.disableAutoHeight,\n ],\n );\n\n return (\n <FloatingNode id={nodeId}>\n {isNested ? (\n <button\n ref={menuRefs}\n tabIndex={parent.activeIndex === item.index ? 0 : -1}\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-open={isOpen ? \"\" : undefined}\n data-nested=\"\"\n data-focus-inside={hasFocusInside ? \"\" : undefined}\n className={menuComponentCX}\n {...getReferenceProps(\n parent.getItemProps({\n ...props,\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n onMouseEnter: () => setHoverEnabled(true),\n } as HTMLProps<HTMLButtonElement>),\n )}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {\"label\" in props && props.label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n ) : \"trigger\" in props ? (\n props.trigger?.(triggerProps)\n ) : (\n <Button\n {...(props as ButtonProps)}\n {...(triggerProps as DefaultTriggerProps)}\n {...getReferenceProps({\n onFocus: (event) => props.onFocus?.(event),\n } as HTMLProps<HTMLButtonElement>)}\n icon={icon}\n data-anv=\"menu\"\n >\n {\"label\" in props && props.label}\n </Button>\n )}\n\n <MenuLegacyContext.Provider value={value}>\n <FloatingList elementsRef={elementsRef} labelsRef={labelsRef}>\n {isOpen &&\n (dialogContext == null ||\n dialogContext?.ref?.current != null) && (\n <FloatingPortal\n root={\n root ??\n dialogContext?.ref?.current ??\n drawerContext?.ref?.current ??\n portalRoot\n }\n >\n <FloatingFocusManager\n context={context}\n modal={false}\n initialFocus={isNested ? -1 : 0}\n returnFocus={!isNested}\n >\n <ThemeProvider theme={theme} mode={mode}>\n <div\n ref={refs.setFloating}\n className={styles[\"menu\"]}\n style={floatingStyles}\n {...getFloatingProps({\n onMouseEnter: () => {\n setHoverEnabled(false);\n },\n onKeyDown: (e) => {\n if (\n e.code === \"ArrowLeft\" ||\n e.code === \"ArrowRight\"\n ) {\n e.stopPropagation();\n }\n },\n })}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon\n svg={Up}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n <div\n ref={scrollRef}\n className={styles[\"scroll\"]}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon\n svg={Down}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n </div>\n </ThemeProvider>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingList>\n </MenuLegacyContext.Provider>\n </FloatingNode>\n );\n },\n);\n\nMenuLegacyComponent.displayName = \"MenuLegacyComponent\";\n\nconst MenuLegacyElement = forwardRef<HTMLElement, MenuLegacyProps>(\n (props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuLegacyComponent {...props} ref={ref} />\n </FloatingTree>\n );\n }\n\n return <MenuLegacyComponent {...props} ref={ref} />;\n },\n);\n\nMenuLegacyElement.displayName = \"MenuLegacy\";\n\nexport const MenuLegacy = Object.assign(MenuLegacyElement, {\n Item: MenuLegacyItem,\n});\n","import {\n ButtonHTMLAttributes,\n forwardRef,\n useContext,\n ComponentPropsWithoutRef,\n ReactNode,\n MouseEvent,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString, supportsPopover } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport { MenuLegacyItem } from \"./internal/MenuLegacy\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the MenuItem component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type MenuItemProps = {\n /**\n * Icon to display next to the menu item label\n */\n icon?: IconProps[\"svg\"];\n /**\n * The label text or content for the menu item\n */\n label: ReactNode;\n /**\n * Whether the menu item is disabled\n * @default false\n */\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * MenuItem component for individual menu options within a Menu.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n * - Legacy popover support with fallback\n *\n * @example\n * <MenuItem\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\nexport const MenuItem = forwardRef<\n HTMLButtonElement,\n MenuItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n const {\n label,\n disabled,\n icon,\n className,\n onClick,\n onMouseEnter,\n id: idProp,\n ...rest\n } = props;\n const menuContext = useContext(MenuContext);\n const uid = useId();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useMergeRefs([buttonRef, ref]);\n const [tabIndex, setTabIndex] = useState(-1);\n const itemCx = cx([styles[\"item\"]], className);\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n menuContext?.closeRootMenu();\n };\n const onMouseEnterHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(e);\n buttonRef.current?.focus();\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover())\n return (\n <MenuLegacyItem data-tracking-id={trackingId} {...props} ref={ref} />\n );\n\n return (\n <button\n data-tracking-id={trackingId}\n {...rest}\n ref={combinedRef}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n id={idProp ?? `menuitem-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n aria-disabled={disabled}\n onClick={onClickHandler}\n onMouseEnter={onMouseEnterHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuItem.displayName = \"MenuItem\";\n","import {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport {\n ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n useCallback,\n useContext,\n MouseEvent,\n KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport {\n getActiveElement,\n safeHidePopover,\n safeShowPopover,\n} from \"../../../internal/functions\";\nimport { Icon, IconProps } from \"../../Icon\";\n\nimport { MenuCommonProps } from \"../types\";\nimport { MenuContext } from \"./MenuContext\";\n\nimport styles from \"../Menu.module.scss\";\n\n/**\n * Props for the MenuNested component\n * @extends ComponentPropsWithoutRef<\"button\">\n * @extends MenuCommonProps\n */\nexport type MenuNestedProps = ComponentPropsWithoutRef<\"button\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the nested menu button\n */\n icon?: IconProps[\"svg\"];\n };\n\n/**\n * MenuNested component for creating nested submenus within a Menu.\n *\n * Features:\n * - Hover-based menu opening and closing\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys\n * - Scroll indicators for overflow content\n * - Automatic height adjustment\n * - Focus management and accessibility\n * - Popover API support with legacy fallback\n * - Smooth transitions and animations\n * - Context integration with parent menus\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n * </Menu>\n */\nexport const MenuNested = (props: MenuNestedProps) => {\n const { children, open, defaultOpen = false, label, className, icon } = props;\n const uid = useId();\n const [tabIndex, setTabIndex] = useState(-1);\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n /* istanbul ignore next */\n const fallbackArr = useCallback(() => {\n return menuContext?.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n }, [menuContext?.disableAutoHeight]);\n\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n const timeoutId = setTimeout(() => {\n if (!invokerRef.current || !menuRef.current) return;\n computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [fallbackArr, menuContext?.disableAutoHeight, menuHeight]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 100); // Shorter debounce for nested menu\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\n // Stryker restore all\n\n const popoverHoverTriggered = useRef<boolean>();\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n popoverHoverTriggered.current = true;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (\n !popoverHoverTriggered.current ||\n !menuRef.current ||\n !childrenRef.current\n )\n return;\n\n // Show the menu but keep it transparent\n menuRef.current.style.opacity = \"0\";\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n\n setOpenState(true);\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n\n // Make the menu visible with a short delay to ensure smooth transition\n requestAnimationFrame(() => {\n if (!menuRef.current) return;\n menuRef.current.style.opacity = \"1\";\n });\n }, [uid, fallbackArr, menuContext?.disableAutoHeight]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows menu to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(async (fn?: () => void) => {\n popoverHoverTriggered.current = false;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (popoverHoverTriggered.current || !menuRef.current) return;\n fn?.();\n safeHidePopover(menuRef.current);\n setOpenState(false);\n }, []);\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n setOpenState(open);\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n }, [closeMenu, isControlled, open, openMenu]);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const nestedContainer = containerRef.current;\n nestedContainer.addEventListener(\"focusin\", (_e) => {\n openMenu();\n });\n nestedContainer.addEventListener(\"focusout\", () => closeMenu());\n return () => {\n nestedContainer.removeEventListener(\"focusin\", () => openMenu());\n nestedContainer.removeEventListener(\"focusout\", () => closeMenu());\n };\n }, [closeMenu, openMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current) return;\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"Escape\") {\n menuContext?.closeRootMenu();\n }\n if (e.code === \"ArrowLeft\") {\n e.stopPropagation();\n e.preventDefault();\n invokerRef.current?.focus();\n closeMenu();\n }\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.code === \"ArrowRight\") {\n e.stopPropagation();\n e.preventDefault();\n openMenu();\n const firstItem = menuRef.current?.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n )[0];\n (firstItem as HTMLButtonElement).focus();\n }\n };\n\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n openMenu();\n };\n\n const itemCx = cx([styles[\"item\"]], className);\n\n return (\n <div ref={containerRef} data-nested=\"true\">\n <button\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-state={openState ? \"open\" : \"close\"}\n ref={invokerRef}\n id={`menuitem-${uid.replace(/:/g, \"\")}`}\n aria-expanded={openState}\n onMouseEnter={(e) => {\n e.currentTarget.focus();\n }}\n onKeyDown={MenuButtonOnKeyDownHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onClick={MenuButtonOnClick}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n <div\n popover=\"auto\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={styles.content}\n ref={menuRef}\n role=\"presentation\"\n onKeyDown={onKeyDownHandler}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n useContext,\n KeyboardEvent,\n MouseEvent,\n forwardRef,\n} from \"react\";\nimport {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../Button\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { DialogContext } from \"../Dialog/internal/DialogContext\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { Icon, IconProps } from \"../Icon\";\nimport {\n supportsPopover,\n safeHidePopover,\n safeShowPopover,\n} from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { MenuItem } from \"./MenuItem\";\nimport {\n MenuLegacy as MenuLegacyComponent,\n MenuLegacyProps,\n} from \"./internal/MenuLegacy\";\nimport { MenuNested } from \"./internal/MenuNested\";\nimport { MenuCommonProps } from \"./types\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the Menu component\n * @extends Omit<ButtonProps, \"icon\">\n * @extends MenuCommonProps\n */\nexport type MenuProps = Omit<ButtonProps, \"icon\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the menu button\n */\n icon?: IconProps[\"svg\"];\n } & DataTrackingId;\n\nconst MenuElement = forwardRef<HTMLElement, MenuProps>(\n (props: MenuProps, ref) => {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n root,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\n\n const uid = useId();\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const dialogContext = useContext(DialogContext);\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n const fallbackArr = useCallback(() => {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? [placement]\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? [placement]\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }, [disableAutoHeight, placement]);\n\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n const timeoutId = setTimeout(() => {\n if (!invokerRef.current || !menuRef.current) return;\n\n computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: maxHeight\n ? `${Math.min(newHeight, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n }, 50);\n return () => clearTimeout(timeoutId);\n }, [\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n disableAutoHeight,\n menuHeight,\n maxHeight,\n ]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 150);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\n // Stryker restore all\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n if (!menuRef.current || !childrenRef.current) return;\n\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n\n setOpenState(true);\n\n // Wait for next frame to ensure DOM is updated\n requestAnimationFrame(() => {\n if (!childrenRef.current) return;\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n });\n\n dialogContext?.setHasOpenPopover?.(true);\n }, [\n dialogContext,\n uid,\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n ]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows popover to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(\n async (fn?: () => void) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n invokerRef.current?.focus();\n },\n [openState, dialogContext],\n );\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n // open ? openMenu() : closeMenu();\n }, [closeMenu, isControlled, open, openMenu, dialogContext]);\n\n // Effect to attach eventListener for reading click state from\n // globalThis.MouseEvent for composedPath to detect if target is\n // part of the composedPath, then to attempt to close\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n let isClosable = false;\n const onMouseDownHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n onOutsidePress?.(e);\n isClosable = true;\n }\n };\n const onMouseUpHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n if (isControlled || !isClosable || !openState) return;\n\n closeMenu();\n }\n };\n\n document.addEventListener(\"mousedown\", onMouseDownHandler);\n document.addEventListener(\"mouseup\", onMouseUpHandler);\n return () => {\n document.removeEventListener(\"mousedown\", onMouseDownHandler);\n document.removeEventListener(\"mouseup\", onMouseUpHandler);\n };\n }, [isControlled, openState, onOutsidePress, closeMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current || menuContext) return;\n if (e.code === \"Escape\") {\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n }\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const value = useMemo(() => {\n return {\n disableAutoHeight,\n closeRootMenu: menuContext?.closeRootMenu ?? closeMenu,\n };\n }, [disableAutoHeight, menuContext, closeMenu]);\n\n const MenuButtonOnKeyDownHandler = (\n e: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (e.code === \"ArrowDown\") {\n focusItems?.[0].focus();\n e.stopPropagation();\n e.preventDefault();\n }\n };\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n if (openState) {\n closeMenu();\n return;\n }\n openMenu();\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover())\n return (\n <MenuLegacyComponent\n data-tracking-id={trackingId}\n {...(props as MenuLegacyProps)}\n ref={ref}\n />\n );\n\n if (menuContext) {\n return (\n <MenuContext.Provider value={value}>\n <MenuNested\n data-tracking-id={trackingId}\n open={open}\n defaultOpen={defaultOpen}\n className={props.className}\n icon={props.icon}\n label={label}\n >\n {children}\n </MenuNested>\n </MenuContext.Provider>\n );\n }\n return (\n <MenuContext.Provider value={value}>\n {trigger ? (\n trigger({\n ref: invokerRef,\n onClick: () => MenuButtonOnClick(),\n onKeyDown: MenuButtonOnKeyDownHandler,\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n })\n ) : (\n <Button\n ref={invokerRef}\n onClick={MenuButtonOnClick}\n onKeyDown={MenuButtonOnKeyDownHandler}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n data-state={openState ? \"open\" : \"close\"}\n aria-expanded={openState}\n {...rest}\n >\n {label}\n </Button>\n )}\n <div\n popover=\"manual\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={cx(styles.content, contentClassName)}\n onKeyDown={onKeyDownHandler}\n ref={menuRef}\n role=\"presentation\"\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: maxHeight\n ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : (menuHeight ?? \"inherit\"),\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </MenuContext.Provider>\n );\n },\n);\n\nMenuElement.displayName = \"Menu\";\n\n/**\n * Menu component for displaying dropdown menus with navigation and actions.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys and escape\n * - Custom trigger elements\n * - Nested menu support\n * - Automatic height adjustment\n * - Scroll indicators for overflow content\n * - Fully accessible with proper ARIA attributes\n * - Popover API support with legacy fallback\n * - Outside click detection and handling\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu.Item label=\"Copy\" onClick={() => console.log('Copy clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(MenuElement, {\n /**\n * MenuItem component for individual menu options.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n *\n * @example\n * <Menu.Item\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\n Item: MenuItem,\n});\n"],"names":["styles","Next","Up","Down","MenuLegacyComponent"],"mappings":"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"}
|
package/dist/Menu.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { M as Menu, a as MenuItem, M as default } from './Menu-
|
|
1
|
+
export { M as Menu, a as MenuItem, M as default } from './Menu-Cn2JJe1Y.js';
|
|
2
2
|
//# sourceMappingURL=Menu.js.map
|
|
@@ -6,7 +6,7 @@ import { S as Spinner } from './Spinner-xEFwsq8_.js';
|
|
|
6
6
|
import { t as textFieldStyles } from './TextField.module-pD1felN8.js';
|
|
7
7
|
import { B as Button } from './Button-92_FKAyV.js';
|
|
8
8
|
import { I as Icon } from './Icon-BSuTVNaa.js';
|
|
9
|
-
import { F as FieldLabel } from './FieldLabel-
|
|
9
|
+
import { F as FieldLabel } from './FieldLabel-jqlQ1Ldh.js';
|
|
10
10
|
import { d as maskitoNumberOptionsGenerator, e as maskitoParseNumber, f as maskitoStringifyNumber, u as useMaskito } from './index.esm-C2ZhC_8d.js';
|
|
11
11
|
import { u as usePrevious } from './usePrevious-Bvq-5auG.js';
|
|
12
12
|
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
@@ -1575,4 +1575,4 @@ const NumberField = forwardRef(
|
|
|
1575
1575
|
NumberField.displayName = "NumberField";
|
|
1576
1576
|
|
|
1577
1577
|
export { NumberField as N };
|
|
1578
|
-
//# sourceMappingURL=NumberField-
|
|
1578
|
+
//# sourceMappingURL=NumberField-BdK4U9mW.js.map
|