@contentful/f36-menu 4.10.4 → 4.11.0
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 +35 -0
- package/README.mdx +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 4.11.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies []:
|
|
8
|
+
- @contentful/f36-icons@4.11.0
|
|
9
|
+
- @contentful/f36-popover@4.11.0
|
|
10
|
+
- @contentful/f36-typography@4.11.0
|
|
11
|
+
- @contentful/f36-utils@4.11.0
|
|
12
|
+
- @contentful/f36-core@4.11.0
|
|
13
|
+
|
|
14
|
+
## 4.11.0-beta.0
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies []:
|
|
19
|
+
- @contentful/f36-icons@4.11.0-beta.0
|
|
20
|
+
- @contentful/f36-popover@4.11.0-beta.0
|
|
21
|
+
- @contentful/f36-typography@4.11.0-beta.0
|
|
22
|
+
- @contentful/f36-utils@4.11.0-beta.0
|
|
23
|
+
- @contentful/f36-core@4.11.0-beta.0
|
|
24
|
+
|
|
25
|
+
## 4.10.5
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- [#2005](https://github.com/contentful/forma-36/pull/2005) [`32cac8e8`](https://github.com/contentful/forma-36/commit/32cac8e8bdeedfe29b36bc6025eec11607c93da8) Thanks [@denkristoffer](https://github.com/denkristoffer)! - feat: Datepicker component
|
|
30
|
+
|
|
31
|
+
- Updated dependencies [[`32cac8e8`](https://github.com/contentful/forma-36/commit/32cac8e8bdeedfe29b36bc6025eec11607c93da8)]:
|
|
32
|
+
- @contentful/f36-icons@4.10.5
|
|
33
|
+
- @contentful/f36-popover@4.10.5
|
|
34
|
+
- @contentful/f36-typography@4.10.5
|
|
35
|
+
- @contentful/f36-utils@4.10.5
|
|
36
|
+
- @contentful/f36-core@4.10.5
|
|
37
|
+
|
|
3
38
|
## 4.10.4
|
|
4
39
|
|
|
5
40
|
### Patch Changes
|
package/README.mdx
CHANGED
|
@@ -132,7 +132,7 @@ but you can redefine them on any submenu by passing those props directly to that
|
|
|
132
132
|
|
|
133
133
|
## Accessibility
|
|
134
134
|
|
|
135
|
-
- When the menu is opened, focus is moved to the first menu item.
|
|
135
|
+
- When the menu is opened, focus is moved to the first menu item. Or to the one that has `isInitiallyFocused` prop set to `true`.
|
|
136
136
|
- When the menu is closed, focus returned back to the trigger element.
|
|
137
137
|
- You can use arrow keys (`ArrowUp` and `ArrowDown`) to navigate through menu items.
|
|
138
138
|
- When the menu is open, click on `Esc` key will close the popover. If you set `closeOnEsc` to `false`, it will not close.
|
package/dist/main.js
CHANGED
|
@@ -426,7 +426,7 @@ const $f099c69f76c1082f$export$adaad53e003c74d0 = ()=>{
|
|
|
426
426
|
const $01d29448a29c05b3$var$MENU_ITEM_DEFAULT_TAG = 'button';
|
|
427
427
|
function $01d29448a29c05b3$var$_MenuItem(props, ref) {
|
|
428
428
|
const { testId: testId , className: className , as: as , isInitiallyFocused: isInitiallyFocused , ...otherProps } = props;
|
|
429
|
-
const id = $6ZrLO$contentfulf36core.useId(
|
|
429
|
+
const id = $6ZrLO$contentfulf36core.useId(undefined, 'menu-item');
|
|
430
430
|
const itemTestId = testId || `cf-ui-${id}`;
|
|
431
431
|
const styles = $f099c69f76c1082f$export$adaad53e003c74d0();
|
|
432
432
|
const { getMenuItemProps: getMenuItemProps , focusMenuItem: focusMenuItem } = $31bc1b2a74a830dc$export$21c7ab35b39f78ec();
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/components/menu/src/index.ts","packages/components/menu/src/CompoundMenu.tsx","packages/components/menu/src/Menu.tsx","packages/components/menu/src/useArrowKeyNavigation.ts","packages/components/menu/src/MenuContext.ts","packages/components/menu/src/MenuList/MenuList.tsx","packages/components/menu/src/SubmenuContext.ts","packages/components/menu/src/MenuList/MenuList.styles.ts","packages/components/menu/src/MenuList/MenuListHeader.tsx","packages/components/menu/src/MenuList/MenuListFooter.tsx","packages/components/menu/src/MenuItem/MenuItem.tsx","packages/components/menu/src/MenuItem/MenuItem.styles.ts","packages/components/menu/src/MenuTrigger/MenuTrigger.tsx","packages/components/menu/src/MenuDivider/MenuDivider.tsx","packages/components/menu/src/MenuDivider/MenuDivider.styles.ts","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.tsx","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.styles.ts","packages/components/menu/src/Submenu/Submenu.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.styles.ts"],"sourcesContent":["export { Menu } from './CompoundMenu';\nexport type { MenuProps } from './Menu';\nexport { MenuList } from './MenuList/MenuList';\nexport type { MenuListProps } from './MenuList/MenuList';\nexport { MenuItem } from './MenuItem/MenuItem';\nexport type { MenuItemProps } from './MenuItem/MenuItem';\nexport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nexport type { MenuTriggerProps } from './MenuTrigger/MenuTrigger';\nexport { MenuDivider } from './MenuDivider/MenuDivider';\nexport type { MenuDividerProps } from './MenuDivider/MenuDivider';\nexport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nexport type { MenuSectionTitleProps } from './MenuSectionTitle/MenuSectionTitle';\nexport { Submenu } from './Submenu/Submenu';\nexport type { SubmenuProps } from './Submenu/Submenu';\nexport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './SubmenuTrigger/SubmenuTrigger';\n","import { Menu as OriginalMenu } from './Menu';\nimport { MenuList } from './MenuList/MenuList';\nimport { MenuListHeader } from './MenuList/MenuListHeader';\nimport { MenuListFooter } from './MenuList/MenuListFooter';\nimport { MenuItem } from './MenuItem/MenuItem';\nimport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nimport { MenuDivider } from './MenuDivider/MenuDivider';\nimport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nimport { Submenu } from './Submenu/Submenu';\nimport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\n\ntype CompoundMenu = typeof OriginalMenu & {\n List: typeof MenuList;\n ListHeader: typeof MenuListHeader;\n ListFooter: typeof MenuListFooter;\n Item: typeof MenuItem;\n Trigger: typeof MenuTrigger;\n Divider: typeof MenuDivider;\n SectionTitle: typeof MenuSectionTitle;\n Submenu: typeof Submenu;\n SubmenuTrigger: typeof SubmenuTrigger;\n};\n\nexport const Menu = OriginalMenu as CompoundMenu;\nMenu.List = MenuList;\nMenu.ListHeader = MenuListHeader;\nMenu.ListFooter = MenuListFooter;\nMenu.Item = MenuItem;\nMenu.Trigger = MenuTrigger;\nMenu.Divider = MenuDivider;\nMenu.SectionTitle = MenuSectionTitle;\nMenu.Submenu = Submenu;\nMenu.SubmenuTrigger = SubmenuTrigger;\n","import React, { useCallback, useMemo, useRef, useEffect } from 'react';\nimport { mergeRefs, useId, useControllableState } from '@contentful/f36-core';\nimport { useArrowKeyNavigation } from './useArrowKeyNavigation';\nimport { Popover } from '@contentful/f36-popover';\nimport type { PopoverProps } from '@contentful/f36-popover';\nimport { MenuContextProvider, MenuContextType } from './MenuContext';\n\nconst MENU_ITEMS_SELECTOR = '[role=\"menuitem\"]:not(:disabled)';\n\nexport interface MenuProps\n extends Omit<PopoverProps, 'autoFocus' | 'id' | 'closeOnBlur'> {\n /**\n * By default, the Menu is uncontrolled (manage it's expanded state by itself)\n * But you can make it controlled by providing boolean (true/false)\n */\n isOpen?: boolean;\n\n /**\n * If `true`, the Menu will be initially opened.\n */\n defaultIsOpen?: boolean;\n\n /**\n * Callback fired when the Menu opens\n */\n onOpen?: () => void;\n\n /**\n * Callback fired when the Menu closes\n */\n onClose?: () => void;\n\n /**\n * If `true`, the Menu will close when a menu item is\n * clicked\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnSelect?: boolean;\n\n /**\n * If true, the menu will close when you blur out it by clicking outside\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnBlur?: boolean;\n\n /**\n * If true, the menu will close when you hit the Esc key\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnEsc?: boolean;\n}\n\nexport function Menu(props: MenuProps) {\n const {\n closeOnSelect = true,\n closeOnBlur = true,\n closeOnEsc = true,\n children,\n onOpen,\n ...otherProps\n } = props;\n const {\n isOpen,\n handleOpen,\n handleClose,\n isControlled,\n } = useControllableState({\n isOpen: props.isOpen,\n defaultIsOpen: props.defaultIsOpen,\n onOpen,\n onClose: props.onClose,\n });\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const menuListRef = useRef<HTMLDivElement>(null);\n\n const menuId = useId(null, 'menu');\n\n const {\n focusedIndex,\n handleArrowsKeyDown,\n setFocusedIndex,\n } = useArrowKeyNavigation({\n itemsContainerRef: menuListRef,\n itemsSelector: MENU_ITEMS_SELECTOR,\n });\n\n useEffect(() => {\n if (isOpen && menuListRef.current) {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n if (menuItems.length > 0 && focusedIndex < menuItems.length) {\n // timeout trick to prevent scroll from jumping\n // when the popover is not positioned correctly yet in the opening phase\n setTimeout(() => {\n (menuItems[focusedIndex] as HTMLElement).focus({\n preventScroll: false,\n });\n }, 0);\n }\n }\n }, [isOpen, focusedIndex]);\n\n const focusMenuItem = useCallback(\n (item: HTMLElement) => {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n const itemIndex = [...menuItems].findIndex(\n (menuItem) => item === menuItem,\n );\n\n if (itemIndex !== -1) {\n setFocusedIndex(itemIndex);\n }\n },\n [setFocusedIndex],\n );\n\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n const handleMenuListKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Tab') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n // we don't want to propagate other keydown events except `Tab`\n event.stopPropagation();\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n handleArrowsKeyDown(event);\n },\n [closeAndFocusTrigger, handleArrowsKeyDown],\n );\n\n const contextValue: MenuContextType = useMemo(\n () => ({\n isOpen,\n menuId,\n focusMenuItem,\n getTriggerProps: (_props = {}, _ref = null) => ({\n onClick: (event) => {\n // if the user made component controlled by providing isOpen prop\n // but onOpen callback is not provided, we won't add toggle logic\n // to the trigger component. So they can make any toggle logic on their own.\n const isFullyControlled = isControlled && !onOpen;\n\n if (!isFullyControlled) {\n if (isOpen) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n _props.onClick?.(event);\n },\n ref: mergeRefs(triggerRef, _ref),\n }),\n getMenuListProps: (_props = {}, _ref = null) => ({\n ref: mergeRefs(menuListRef, _ref),\n onKeyDown: (event) => {\n handleMenuListKeyDown(event);\n _props.onKeyDown?.(event);\n },\n onBlur: (event) => {\n _props.onBlur?.(event);\n\n if (!closeOnBlur) {\n return;\n }\n\n const relatedTarget = event.relatedTarget as Node;\n\n const targetIsMenu =\n menuListRef.current === relatedTarget ||\n menuListRef.current?.contains(relatedTarget);\n const targetIsTrigger =\n triggerRef.current === relatedTarget ||\n triggerRef.current?.contains(relatedTarget);\n const targetIsSubmenu =\n relatedTarget?.parentElement?.dataset.parentMenu === menuId;\n\n if (targetIsMenu || targetIsTrigger || targetIsSubmenu) {\n event.stopPropagation();\n return;\n }\n\n handleClose();\n },\n }),\n getMenuItemProps: (_props = {}) => ({\n onClick: (event) => {\n _props.onClick?.(event);\n\n const isSubmenuTrigger = Boolean(\n (event.target as HTMLElement).getAttribute('aria-haspopup'),\n );\n if (closeOnSelect && !isSubmenuTrigger) {\n closeAndFocusTrigger();\n }\n },\n }),\n propsToPropagateToSubmenus: {\n closeOnSelect,\n closeOnBlur,\n closeOnEsc,\n },\n }),\n [\n menuId,\n isOpen,\n handleMenuListKeyDown,\n closeOnSelect,\n handleClose,\n handleOpen,\n focusMenuItem,\n closeOnBlur,\n closeOnEsc,\n closeAndFocusTrigger,\n isControlled,\n onOpen,\n ],\n );\n\n return (\n <MenuContextProvider value={contextValue}>\n <Popover\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n id={menuId}\n closeOnEsc={closeOnEsc}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n closeOnBlur={false}\n >\n {children}\n </Popover>\n </MenuContextProvider>\n );\n}\n","import { useState, useCallback } from 'react';\n\ninterface UseArrowKeyNavigationProps {\n itemsContainerRef: React.MutableRefObject<HTMLElement>;\n itemsSelector: string;\n keyType?: 'vertical' | 'horizontal';\n initialFocusedIndex?: number;\n}\n\nconst ARROW_KEY_TYPES = {\n vertical: {\n prev: 'ArrowUp',\n next: 'ArrowDown',\n },\n horizontal: {\n prev: 'ArrowLeft',\n next: 'ArrowRight',\n },\n};\n\nexport const useArrowKeyNavigation = ({\n itemsContainerRef,\n itemsSelector,\n keyType = 'vertical',\n}: UseArrowKeyNavigationProps) => {\n const [focusedIndex, setFocusedIndex] = useState<number>(0);\n\n const handleArrowsKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const container = itemsContainerRef.current;\n if (!container) return;\n\n const items = container.querySelectorAll(itemsSelector);\n if (items.length === 0) return;\n\n const lastItemIndex = items.length - 1;\n\n const focusFirstItem = () => setFocusedIndex(0);\n const focusLastItem = () => setFocusedIndex(lastItemIndex);\n const focusNextItem = () => {\n if (focusedIndex === lastItemIndex) {\n focusFirstItem();\n } else {\n setFocusedIndex(focusedIndex + 1);\n }\n };\n const focusPrevItem = () => {\n if (focusedIndex === 0) {\n focusLastItem();\n } else {\n setFocusedIndex(focusedIndex - 1);\n }\n };\n\n const keyToFnMap = {\n [ARROW_KEY_TYPES[keyType].next]: focusNextItem,\n [ARROW_KEY_TYPES[keyType].prev]: focusPrevItem,\n };\n\n const fn = keyToFnMap[event.key];\n if (fn) {\n event.preventDefault();\n fn();\n }\n },\n [focusedIndex, itemsSelector, itemsContainerRef, keyType],\n );\n\n return { focusedIndex, handleArrowsKeyDown, setFocusedIndex };\n};\n","import React, { ComponentPropsWithRef } from 'react';\nimport { MenuProps } from '.';\n\nexport type MenuContextType = {\n isOpen: boolean;\n menuId: string;\n focusMenuItem: (item: HTMLElement) => void;\n getTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n getMenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n _ref: React.Ref<HTMLDivElement>,\n ) => ComponentPropsWithRef<'div'>;\n getMenuItemProps: (\n _props: ComponentPropsWithRef<'button'>,\n ) => ComponentPropsWithRef<'button'>;\n propsToPropagateToSubmenus: Pick<\n MenuProps,\n 'closeOnBlur' | 'closeOnEsc' | 'closeOnSelect'\n >;\n};\n\nconst MenuContext = React.createContext<MenuContextType | undefined>(undefined);\n\nexport const useMenuContext = () => {\n const context = React.useContext(MenuContext);\n\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuContextProvider');\n }\n\n return context;\n};\n\nexport const MenuContextProvider = MenuContext.Provider;\n","import React from 'react';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { Popover } from '@contentful/f36-popover';\nimport { cx } from 'emotion';\nimport { getMenuListStyles } from './MenuList.styles';\nimport { MenuListHeader } from './MenuListHeader';\nimport { MenuListFooter } from './MenuListFooter';\n\ninterface MenuListInternalProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nfunction assertChild(child: any): child is { type: { displayName: string } } {\n return Boolean(child?.type?.displayName);\n}\n\nexport type MenuListProps = PropsWithHTMLElement<MenuListInternalProps, 'div'>;\n\nconst _MenuList = (\n props: ExpandProps<MenuListProps>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list',\n className,\n ...otherProps\n } = props;\n\n const { getMenuListProps } = useMenuContext();\n const submenuContext = useSubmenuContext();\n\n let header: React.ReactElement | null = null;\n let footer: React.ReactElement | null = null;\n const items: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child) => {\n let appendChild = true;\n if (assertChild(child)) {\n if (child.type.displayName === MenuListHeader.displayName) {\n header = (child as unknown) as React.ReactElement;\n appendChild = false;\n } else if (child.type.displayName === MenuListFooter.displayName) {\n footer = (child as unknown) as React.ReactElement;\n appendChild = false;\n }\n }\n if (appendChild) {\n items.push((child as unknown) as React.ReactElement);\n }\n });\n\n const styles = getMenuListStyles({\n hasStickyHeader: Boolean(header),\n hasStickyFooter: Boolean(footer),\n });\n\n const extendedOtherProps = submenuContext\n ? submenuContext.getSubmenuListProps(otherProps)\n : otherProps;\n\n return (\n <Popover.Content\n role=\"menu\"\n {...extendedOtherProps}\n {...getMenuListProps(extendedOtherProps, ref)}\n className={cx(styles.container, className)}\n testId={testId}\n >\n {header}\n {items}\n {footer}\n </Popover.Content>\n );\n};\n\nexport const MenuList = React.forwardRef(_MenuList);\n","import React, { ComponentPropsWithRef, ComponentPropsWithoutRef } from 'react';\n\nexport type SubmenuContextType = {\n isOpen: boolean;\n getSubmenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n ) => { 'data-parent-menu': string } & ComponentPropsWithoutRef<'div'>;\n getSubmenuTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n};\n\nconst SubmenuContext = React.createContext<SubmenuContextType | undefined>(\n undefined,\n);\n\nexport const useSubmenuContext = () => {\n const context = React.useContext(SubmenuContext);\n return context;\n};\n\nexport const SubmenuContextProvider = SubmenuContext.Provider;\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuHeaderStyles = () => {\n return css({\n position: 'sticky',\n top: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderBottom: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuFooterStyles = () => {\n return css({\n position: 'sticky',\n bottom: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderTop: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuListStyles = (props: {\n hasStickyFooter?: boolean;\n hasStickyHeader?: boolean;\n}) => ({\n container: css({\n overflowY: 'auto',\n position: 'relative',\n padding: 0,\n paddingTop: props.hasStickyHeader ? 0 : tokens.spacingXs,\n paddingBottom: props.hasStickyFooter ? 0 : tokens.spacingXs,\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuHeaderStyles } from './MenuList.styles';\n\nexport type MenuListHeaderProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListHeader: React.FC<ExpandProps<MenuListHeaderProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-header',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuHeaderStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListHeader.displayName = 'MenuListHeader';\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuFooterStyles } from './MenuList.styles';\n\nexport type MenuListFooterProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListFooter: React.FC<ExpandProps<MenuListFooterProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-footer',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuFooterStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListFooter.displayName = 'MenuListFooter';\n","import React, { useEffect, useRef } from 'react';\nimport { cx } from 'emotion';\nimport { mergeRefs } from '@contentful/f36-core';\nimport type {\n CommonProps,\n PolymorphicComponent,\n PolymorphicProps,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useId } from '@contentful/f36-core';\nimport { getMenuItemStyles } from './MenuItem.styles';\n\nconst MENU_ITEM_DEFAULT_TAG = 'button';\n\ninterface MenuItemInternalProps extends CommonProps {\n children?: React.ReactNode;\n as?: 'a' | 'button';\n\n /**\n * Sets focus on item\n */\n isInitiallyFocused?: boolean;\n}\n\nexport type MenuItemProps<\n E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG\n> = PolymorphicProps<MenuItemInternalProps, E>;\n\nfunction _MenuItem<E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG>(\n props: MenuItemProps<E>,\n ref: React.Ref<any>,\n) {\n const { testId, className, as, isInitiallyFocused, ...otherProps } = props;\n\n const id = useId(null, 'menu-item');\n const itemTestId = testId || `cf-ui-${id}`;\n const styles = getMenuItemStyles();\n\n const { getMenuItemProps, focusMenuItem } = useMenuContext();\n\n const itemRef = useRef<HTMLElement>(null);\n useEffect(() => {\n if (isInitiallyFocused && itemRef.current) {\n focusMenuItem(itemRef.current);\n }\n }, [isInitiallyFocused, focusMenuItem]);\n\n const Element = (as ?? MENU_ITEM_DEFAULT_TAG) as React.ElementType;\n\n return (\n <Element\n role=\"menuitem\"\n {...otherProps}\n {...getMenuItemProps(otherProps)}\n className={cx(styles.root, className)}\n data-test-id={itemTestId}\n ref={mergeRefs(itemRef, ref)}\n tabIndex={-1}\n >\n {props.children}\n </Element>\n );\n}\n\n_MenuItem.displayName = 'MenuItem';\n\nexport const MenuItem: PolymorphicComponent<\n ExpandProps<MenuItemInternalProps>,\n typeof MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_MenuItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuItemStyles = () => {\n return {\n root: css({\n display: 'block',\n width: '100%',\n background: 'none',\n border: 0,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightNormal,\n position: 'relative',\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n minWidth: '150px',\n textDecoration: 'none',\n color: tokens.gray800,\n\n '&:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:focus': {\n boxShadow: `inset ${tokens.glowPrimary}`,\n // just to make boxShadow with rounded corners\n borderRadius: tokens.borderRadiusMedium,\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: 'unset',\n borderRadius: 'unset',\n },\n '&:focus-visible': {\n boxShadow: `inset ${tokens.glowPrimary}`,\n borderRadius: tokens.borderRadiusMedium,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'auto',\n },\n }),\n };\n};\n","import React from 'react';\nimport { Popover } from '@contentful/f36-popover';\nimport { useMenuContext } from '../MenuContext';\nimport type { ExpandProps } from '@contentful/f36-core';\n\nexport interface MenuTriggerProps {\n children: React.ReactNode;\n}\n\nexport const MenuTrigger = (props: ExpandProps<MenuTriggerProps>) => {\n const child = React.Children.only(props.children) as any;\n const { getTriggerProps } = useMenuContext();\n\n return (\n <Popover.Trigger>\n {React.cloneElement(child, {\n ...getTriggerProps(child.props, child.ref),\n ['aria-haspopup']: 'menu',\n })}\n </Popover.Trigger>\n );\n};\n","import React from 'react';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getMenuDividerStyles } from './MenuDivider.styles';\n\nexport type MenuDividerProps = PropsWithHTMLElement<CommonProps, 'hr'>;\n\nexport const MenuDivider = (props: ExpandProps<MenuDividerProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-divider',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuDividerStyles();\n\n return (\n <hr\n aria-orientation=\"horizontal\"\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n />\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuDividerStyles = () =>\n css({\n border: 'none',\n width: '100%',\n height: '1px',\n background: tokens.gray300,\n margin: `${tokens.spacingXs} 0`,\n });\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getMenuSectionTitleStyles } from './MenuSectionTitle.styles';\nimport { SectionHeading } from '@contentful/f36-typography';\nimport type { SectionHeadingProps } from '@contentful/f36-typography';\nimport type { ExpandProps } from '@contentful/f36-core';\n\nexport type MenuSectionTitleProps = SectionHeadingProps;\n\nexport const MenuSectionTitle = (props: ExpandProps<MenuSectionTitleProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-section-title',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuSectionTitleStyles();\n\n return (\n <SectionHeading\n // Techincally, menus cannot contain headings according to ARIA.\n // We hide the heading from assistive technology, and only use it\n // as a label\n aria-hidden=\"true\"\n testId={testId}\n className={cx(styles, className)}\n marginBottom=\"none\"\n {...otherProps}\n >\n {children}\n </SectionHeading>\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuSectionTitleStyles = () =>\n css({\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n\n 'hr + &': {\n marginTop: '-8px',\n },\n });\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Menu, MenuProps } from '../Menu';\nimport { useMenuContext } from '../MenuContext';\nimport { SubmenuContextProvider, SubmenuContextType } from '../SubmenuContext';\nimport { mergeRefs } from '@contentful/f36-core';\n\nconst SUBMENU_OFFSET: [number, number] = [-8, 2];\n\nexport type SubmenuProps = Omit<\n MenuProps,\n | 'placement'\n | 'offset'\n | 'usePortal'\n | 'isOpen'\n | 'isAutoalignmentEnabled'\n | 'defaultIsOpen'\n>;\n\nexport const Submenu = (props: SubmenuProps) => {\n const { onClose, onOpen, ...otherProps } = props;\n\n const {\n isOpen: isParentMenuOpen,\n menuId,\n propsToPropagateToSubmenus,\n } = useMenuContext();\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const mouseLeaveTimerRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(false);\n const handleOpen = useCallback(() => {\n setIsOpen(true);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onOpen?.();\n }, [onOpen]);\n const handleClose = useCallback(() => {\n setIsOpen(false);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onClose?.();\n }, [onClose]);\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n useEffect(() => {\n // close when parent menu closed\n if (isParentMenuOpen === false) {\n setIsOpen(false);\n }\n }, [isParentMenuOpen]);\n\n const contextValue: SubmenuContextType = useMemo(\n () => ({\n isOpen,\n getSubmenuListProps: (_props) => ({\n 'data-parent-menu': menuId,\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n closeAndFocusTrigger();\n\n _props.onMouseLeave?.(event);\n },\n }),\n getSubmenuTriggerProps: (_props, _ref) => ({\n ref: mergeRefs(triggerRef, _ref),\n onKeyDown: (event) => {\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n handleOpen();\n }\n\n _props.onKeyDown?.(event);\n },\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n mouseLeaveTimerRef.current = window.setTimeout(\n closeAndFocusTrigger,\n 300,\n );\n\n _props.onMouseLeave?.(event);\n },\n }),\n }),\n [isOpen, menuId, handleOpen, closeAndFocusTrigger],\n );\n\n return (\n <SubmenuContextProvider value={contextValue}>\n <Menu\n {...propsToPropagateToSubmenus}\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n onOpen={handleOpen}\n placement=\"right-start\"\n offset={SUBMENU_OFFSET}\n isAutoalignmentEnabled={false}\n />\n </SubmenuContextProvider>\n );\n};\n","import React from 'react';\nimport { MenuTrigger } from '../MenuTrigger/MenuTrigger';\nimport { MenuItem, MenuItemProps } from '../MenuItem/MenuItem';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { ChevronRightIcon } from '@contentful/f36-icons';\nimport type { ExpandProps } from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getSubmenuTriggerStyles } from './SubmenuTrigger.styles';\n\nexport type SubmenuTriggerProps = Omit<\n MenuItemProps<'button'>,\n 'isInitiallyFocused' | 'as'\n>;\n\nconst _SubmenuTrigger = (\n props: ExpandProps<SubmenuTriggerProps>,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const { className, children } = props;\n const { getSubmenuTriggerProps, isOpen } = useSubmenuContext();\n\n const styles = getSubmenuTriggerStyles();\n\n return (\n <MenuTrigger>\n <MenuItem\n {...props}\n {...getSubmenuTriggerProps(props, ref)}\n className={cx(styles.root({ isActive: isOpen }), className)}\n >\n <span className={styles.content}>{children}</span>\n <ChevronRightIcon className={styles.icon} />\n </MenuItem>\n </MenuTrigger>\n );\n};\n\nexport const SubmenuTrigger = React.forwardRef(_SubmenuTrigger);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getSubmenuTriggerStyles = () => {\n return {\n root: ({ isActive }) =>\n css({\n display: 'flex',\n alignItems: 'center',\n paddingRight: tokens.spacingXs,\n ...(isActive\n ? {\n backgroundColor: tokens.gray100,\n }\n : {}),\n }),\n content: css({\n marginRight: tokens.spacingM,\n }),\n icon: css({\n marginLeft: 'auto',\n fill: 'currentColor',\n }),\n };\n};\n"],"names":["Menu","MenuProps","MenuList","MenuListProps","MenuItem","MenuItemProps","MenuTrigger","MenuTriggerProps","MenuDivider","MenuDividerProps","MenuSectionTitle","MenuSectionTitleProps","Submenu","SubmenuProps","SubmenuTrigger","SubmenuTriggerProps","OriginalMenu","MenuListHeader","MenuListFooter","CompoundMenu","List","ListHeader","ListFooter","Item","Trigger","Divider","SectionTitle","React","useCallback","useMemo","useRef","useEffect","mergeRefs","useId","useControllableState","useArrowKeyNavigation","Popover","PopoverProps","MenuContextProvider","MenuContextType","MENU_ITEMS_SELECTOR","Omit","isOpen","defaultIsOpen","onOpen","onClose","closeOnSelect","closeOnBlur","closeOnEsc","props","children","otherProps","handleOpen","handleClose","isControlled","triggerRef","HTMLButtonElement","menuListRef","HTMLDivElement","menuId","focusedIndex","handleArrowsKeyDown","setFocusedIndex","itemsContainerRef","itemsSelector","current","menuItems","querySelectorAll","length","setTimeout","HTMLElement","focus","preventScroll","focusMenuItem","item","itemIndex","findIndex","menuItem","closeAndFocusTrigger","handleMenuListKeyDown","event","KeyboardEvent","key","preventDefault","stopPropagation","contextValue","getTriggerProps","_props","_ref","onClick","isFullyControlled","ref","getMenuListProps","onKeyDown","onBlur","relatedTarget","Node","targetIsMenu","contains","targetIsTrigger","targetIsSubmenu","parentElement","dataset","parentMenu","getMenuItemProps","isSubmenuTrigger","Boolean","target","getAttribute","propsToPropagateToSubmenus","useState","UseArrowKeyNavigationProps","MutableRefObject","keyType","initialFocusedIndex","ARROW_KEY_TYPES","vertical","prev","next","horizontal","container","items","lastItemIndex","focusFirstItem","focusLastItem","focusNextItem","focusPrevItem","keyToFnMap","fn","ComponentPropsWithRef","Ref","Pick","MenuContext","createContext","undefined","useMenuContext","context","useContext","Error","Provider","CommonProps","PropsWithHTMLElement","ExpandProps","useSubmenuContext","getMenuListStyles","MenuListInternalProps","ReactNode","assertChild","child","type","displayName","_MenuList","testId","className","submenuContext","header","ReactElement","footer","Children","forEach","appendChild","push","styles","hasStickyHeader","hasStickyFooter","extendedOtherProps","getSubmenuListProps","forwardRef","ComponentPropsWithoutRef","SubmenuContextType","getSubmenuTriggerProps","SubmenuContext","SubmenuContextProvider","tokens","getMenuHeaderStyles","position","top","left","backgroundColor","colorWhite","borderBottom","gray300","padding","spacingXs","zIndex","getMenuFooterStyles","bottom","borderTop","overflowY","paddingTop","paddingBottom","MenuListHeaderProps","FC","MenuListFooterProps","PolymorphicComponent","PolymorphicProps","getMenuItemStyles","MENU_ITEM_DEFAULT_TAG","MenuItemInternalProps","as","isInitiallyFocused","ElementType","E","_MenuItem","id","itemTestId","itemRef","Element","root","display","width","background","border","margin","outline","fontSize","fontSizeM","lineHeight","lineHeightM","fontWeight","fontWeightNormal","textAlign","spacingM","wordBreak","whiteSpace","cursor","hyphens","minWidth","textDecoration","color","gray800","gray100","boxShadow","glowPrimary","borderRadius","borderRadiusMedium","gray200","opacity","only","cloneElement","getMenuDividerStyles","height","getMenuSectionTitleStyles","SectionHeading","SectionHeadingProps","marginTop","SUBMENU_OFFSET","isParentMenuOpen","mouseLeaveTimerRef","setIsOpen","window","clearTimeout","onMouseOver","onMouseLeave","ChevronRightIcon","getSubmenuTriggerStyles","_SubmenuTrigger","isActive","content","icon","alignItems","paddingRight","marginRight"],"version":3,"file":"main.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/components/menu/src/index.ts","packages/components/menu/src/CompoundMenu.tsx","packages/components/menu/src/Menu.tsx","packages/components/menu/src/useArrowKeyNavigation.ts","packages/components/menu/src/MenuContext.ts","packages/components/menu/src/MenuList/MenuList.tsx","packages/components/menu/src/SubmenuContext.ts","packages/components/menu/src/MenuList/MenuList.styles.ts","packages/components/menu/src/MenuList/MenuListHeader.tsx","packages/components/menu/src/MenuList/MenuListFooter.tsx","packages/components/menu/src/MenuItem/MenuItem.tsx","packages/components/menu/src/MenuItem/MenuItem.styles.ts","packages/components/menu/src/MenuTrigger/MenuTrigger.tsx","packages/components/menu/src/MenuDivider/MenuDivider.tsx","packages/components/menu/src/MenuDivider/MenuDivider.styles.ts","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.tsx","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.styles.ts","packages/components/menu/src/Submenu/Submenu.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.styles.ts"],"sourcesContent":["export { Menu } from './CompoundMenu';\nexport type { MenuProps } from './Menu';\nexport { MenuList } from './MenuList/MenuList';\nexport type { MenuListProps } from './MenuList/MenuList';\nexport { MenuItem } from './MenuItem/MenuItem';\nexport type { MenuItemProps } from './MenuItem/MenuItem';\nexport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nexport type { MenuTriggerProps } from './MenuTrigger/MenuTrigger';\nexport { MenuDivider } from './MenuDivider/MenuDivider';\nexport type { MenuDividerProps } from './MenuDivider/MenuDivider';\nexport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nexport type { MenuSectionTitleProps } from './MenuSectionTitle/MenuSectionTitle';\nexport { Submenu } from './Submenu/Submenu';\nexport type { SubmenuProps } from './Submenu/Submenu';\nexport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './SubmenuTrigger/SubmenuTrigger';\n","import { Menu as OriginalMenu } from './Menu';\nimport { MenuList } from './MenuList/MenuList';\nimport { MenuListHeader } from './MenuList/MenuListHeader';\nimport { MenuListFooter } from './MenuList/MenuListFooter';\nimport { MenuItem } from './MenuItem/MenuItem';\nimport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nimport { MenuDivider } from './MenuDivider/MenuDivider';\nimport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nimport { Submenu } from './Submenu/Submenu';\nimport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\n\ntype CompoundMenu = typeof OriginalMenu & {\n List: typeof MenuList;\n ListHeader: typeof MenuListHeader;\n ListFooter: typeof MenuListFooter;\n Item: typeof MenuItem;\n Trigger: typeof MenuTrigger;\n Divider: typeof MenuDivider;\n SectionTitle: typeof MenuSectionTitle;\n Submenu: typeof Submenu;\n SubmenuTrigger: typeof SubmenuTrigger;\n};\n\nexport const Menu = OriginalMenu as CompoundMenu;\nMenu.List = MenuList;\nMenu.ListHeader = MenuListHeader;\nMenu.ListFooter = MenuListFooter;\nMenu.Item = MenuItem;\nMenu.Trigger = MenuTrigger;\nMenu.Divider = MenuDivider;\nMenu.SectionTitle = MenuSectionTitle;\nMenu.Submenu = Submenu;\nMenu.SubmenuTrigger = SubmenuTrigger;\n","import React, { useCallback, useMemo, useRef, useEffect } from 'react';\nimport { mergeRefs, useId, useControllableState } from '@contentful/f36-core';\nimport { useArrowKeyNavigation } from './useArrowKeyNavigation';\nimport { Popover } from '@contentful/f36-popover';\nimport type { PopoverProps } from '@contentful/f36-popover';\nimport { MenuContextProvider, MenuContextType } from './MenuContext';\n\nconst MENU_ITEMS_SELECTOR = '[role=\"menuitem\"]:not(:disabled)';\n\nexport interface MenuProps\n extends Omit<PopoverProps, 'autoFocus' | 'id' | 'closeOnBlur'> {\n /**\n * By default, the Menu is uncontrolled (manage it's expanded state by itself)\n * But you can make it controlled by providing boolean (true/false)\n */\n isOpen?: boolean;\n\n /**\n * If `true`, the Menu will be initially opened.\n */\n defaultIsOpen?: boolean;\n\n /**\n * Callback fired when the Menu opens\n */\n onOpen?: () => void;\n\n /**\n * Callback fired when the Menu closes\n */\n onClose?: () => void;\n\n /**\n * If `true`, the Menu will close when a menu item is\n * clicked\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnSelect?: boolean;\n\n /**\n * If true, the menu will close when you blur out it by clicking outside\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnBlur?: boolean;\n\n /**\n * If true, the menu will close when you hit the Esc key\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnEsc?: boolean;\n}\n\nexport function Menu(props: MenuProps) {\n const {\n closeOnSelect = true,\n closeOnBlur = true,\n closeOnEsc = true,\n children,\n onOpen,\n ...otherProps\n } = props;\n const {\n isOpen,\n handleOpen,\n handleClose,\n isControlled,\n } = useControllableState({\n isOpen: props.isOpen,\n defaultIsOpen: props.defaultIsOpen,\n onOpen,\n onClose: props.onClose,\n });\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const menuListRef = useRef<HTMLDivElement>(null);\n\n const menuId = useId(null, 'menu');\n\n const {\n focusedIndex,\n handleArrowsKeyDown,\n setFocusedIndex,\n } = useArrowKeyNavigation({\n itemsContainerRef: menuListRef,\n itemsSelector: MENU_ITEMS_SELECTOR,\n });\n\n useEffect(() => {\n if (isOpen && menuListRef.current) {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n if (menuItems.length > 0 && focusedIndex < menuItems.length) {\n // timeout trick to prevent scroll from jumping\n // when the popover is not positioned correctly yet in the opening phase\n setTimeout(() => {\n (menuItems[focusedIndex] as HTMLElement).focus({\n preventScroll: false,\n });\n }, 0);\n }\n }\n }, [isOpen, focusedIndex]);\n\n const focusMenuItem = useCallback(\n (item: HTMLElement) => {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n const itemIndex = [...menuItems].findIndex(\n (menuItem) => item === menuItem,\n );\n\n if (itemIndex !== -1) {\n setFocusedIndex(itemIndex);\n }\n },\n [setFocusedIndex],\n );\n\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n const handleMenuListKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Tab') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n // we don't want to propagate other keydown events except `Tab`\n event.stopPropagation();\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n handleArrowsKeyDown(event);\n },\n [closeAndFocusTrigger, handleArrowsKeyDown],\n );\n\n const contextValue: MenuContextType = useMemo(\n () => ({\n isOpen,\n menuId,\n focusMenuItem,\n getTriggerProps: (_props = {}, _ref = null) => ({\n onClick: (event) => {\n // if the user made component controlled by providing isOpen prop\n // but onOpen callback is not provided, we won't add toggle logic\n // to the trigger component. So they can make any toggle logic on their own.\n const isFullyControlled = isControlled && !onOpen;\n\n if (!isFullyControlled) {\n if (isOpen) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n _props.onClick?.(event);\n },\n ref: mergeRefs(triggerRef, _ref),\n }),\n getMenuListProps: (_props = {}, _ref = null) => ({\n ref: mergeRefs(menuListRef, _ref),\n onKeyDown: (event) => {\n handleMenuListKeyDown(event);\n _props.onKeyDown?.(event);\n },\n onBlur: (event) => {\n _props.onBlur?.(event);\n\n if (!closeOnBlur) {\n return;\n }\n\n const relatedTarget = event.relatedTarget as Node;\n\n const targetIsMenu =\n menuListRef.current === relatedTarget ||\n menuListRef.current?.contains(relatedTarget);\n const targetIsTrigger =\n triggerRef.current === relatedTarget ||\n triggerRef.current?.contains(relatedTarget);\n const targetIsSubmenu =\n relatedTarget?.parentElement?.dataset.parentMenu === menuId;\n\n if (targetIsMenu || targetIsTrigger || targetIsSubmenu) {\n event.stopPropagation();\n return;\n }\n\n handleClose();\n },\n }),\n getMenuItemProps: (_props = {}) => ({\n onClick: (event) => {\n _props.onClick?.(event);\n\n const isSubmenuTrigger = Boolean(\n (event.target as HTMLElement).getAttribute('aria-haspopup'),\n );\n if (closeOnSelect && !isSubmenuTrigger) {\n closeAndFocusTrigger();\n }\n },\n }),\n propsToPropagateToSubmenus: {\n closeOnSelect,\n closeOnBlur,\n closeOnEsc,\n },\n }),\n [\n menuId,\n isOpen,\n handleMenuListKeyDown,\n closeOnSelect,\n handleClose,\n handleOpen,\n focusMenuItem,\n closeOnBlur,\n closeOnEsc,\n closeAndFocusTrigger,\n isControlled,\n onOpen,\n ],\n );\n\n return (\n <MenuContextProvider value={contextValue}>\n <Popover\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n id={menuId}\n closeOnEsc={closeOnEsc}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n closeOnBlur={false}\n >\n {children}\n </Popover>\n </MenuContextProvider>\n );\n}\n","import { useState, useCallback } from 'react';\n\ninterface UseArrowKeyNavigationProps {\n itemsContainerRef: React.MutableRefObject<HTMLElement>;\n itemsSelector: string;\n keyType?: 'vertical' | 'horizontal';\n initialFocusedIndex?: number;\n}\n\nconst ARROW_KEY_TYPES = {\n vertical: {\n prev: 'ArrowUp',\n next: 'ArrowDown',\n },\n horizontal: {\n prev: 'ArrowLeft',\n next: 'ArrowRight',\n },\n};\n\nexport const useArrowKeyNavigation = ({\n itemsContainerRef,\n itemsSelector,\n keyType = 'vertical',\n}: UseArrowKeyNavigationProps) => {\n const [focusedIndex, setFocusedIndex] = useState<number>(0);\n\n const handleArrowsKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const container = itemsContainerRef.current;\n if (!container) return;\n\n const items = container.querySelectorAll(itemsSelector);\n if (items.length === 0) return;\n\n const lastItemIndex = items.length - 1;\n\n const focusFirstItem = () => setFocusedIndex(0);\n const focusLastItem = () => setFocusedIndex(lastItemIndex);\n const focusNextItem = () => {\n if (focusedIndex === lastItemIndex) {\n focusFirstItem();\n } else {\n setFocusedIndex(focusedIndex + 1);\n }\n };\n const focusPrevItem = () => {\n if (focusedIndex === 0) {\n focusLastItem();\n } else {\n setFocusedIndex(focusedIndex - 1);\n }\n };\n\n const keyToFnMap = {\n [ARROW_KEY_TYPES[keyType].next]: focusNextItem,\n [ARROW_KEY_TYPES[keyType].prev]: focusPrevItem,\n };\n\n const fn = keyToFnMap[event.key];\n if (fn) {\n event.preventDefault();\n fn();\n }\n },\n [focusedIndex, itemsSelector, itemsContainerRef, keyType],\n );\n\n return { focusedIndex, handleArrowsKeyDown, setFocusedIndex };\n};\n","import React, { ComponentPropsWithRef } from 'react';\nimport { MenuProps } from '.';\n\nexport type MenuContextType = {\n isOpen: boolean;\n menuId: string;\n focusMenuItem: (item: HTMLElement) => void;\n getTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n getMenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n _ref: React.Ref<HTMLDivElement>,\n ) => ComponentPropsWithRef<'div'>;\n getMenuItemProps: (\n _props: ComponentPropsWithRef<'button'>,\n ) => ComponentPropsWithRef<'button'>;\n propsToPropagateToSubmenus: Pick<\n MenuProps,\n 'closeOnBlur' | 'closeOnEsc' | 'closeOnSelect'\n >;\n};\n\nconst MenuContext = React.createContext<MenuContextType | undefined>(undefined);\n\nexport const useMenuContext = () => {\n const context = React.useContext(MenuContext);\n\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuContextProvider');\n }\n\n return context;\n};\n\nexport const MenuContextProvider = MenuContext.Provider;\n","import React from 'react';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { Popover } from '@contentful/f36-popover';\nimport { cx } from 'emotion';\nimport { getMenuListStyles } from './MenuList.styles';\nimport { MenuListHeader } from './MenuListHeader';\nimport { MenuListFooter } from './MenuListFooter';\n\ninterface MenuListInternalProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nfunction assertChild(child: any): child is { type: { displayName: string } } {\n return Boolean(child?.type?.displayName);\n}\n\nexport type MenuListProps = PropsWithHTMLElement<MenuListInternalProps, 'div'>;\n\nconst _MenuList = (\n props: ExpandProps<MenuListProps>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list',\n className,\n ...otherProps\n } = props;\n\n const { getMenuListProps } = useMenuContext();\n const submenuContext = useSubmenuContext();\n\n let header: React.ReactElement | null = null;\n let footer: React.ReactElement | null = null;\n const items: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child) => {\n let appendChild = true;\n if (assertChild(child)) {\n if (child.type.displayName === MenuListHeader.displayName) {\n header = (child as unknown) as React.ReactElement;\n appendChild = false;\n } else if (child.type.displayName === MenuListFooter.displayName) {\n footer = (child as unknown) as React.ReactElement;\n appendChild = false;\n }\n }\n if (appendChild) {\n items.push((child as unknown) as React.ReactElement);\n }\n });\n\n const styles = getMenuListStyles({\n hasStickyHeader: Boolean(header),\n hasStickyFooter: Boolean(footer),\n });\n\n const extendedOtherProps = submenuContext\n ? submenuContext.getSubmenuListProps(otherProps)\n : otherProps;\n\n return (\n <Popover.Content\n role=\"menu\"\n {...extendedOtherProps}\n {...getMenuListProps(extendedOtherProps, ref)}\n className={cx(styles.container, className)}\n testId={testId}\n >\n {header}\n {items}\n {footer}\n </Popover.Content>\n );\n};\n\nexport const MenuList = React.forwardRef(_MenuList);\n","import React, { ComponentPropsWithRef, ComponentPropsWithoutRef } from 'react';\n\nexport type SubmenuContextType = {\n isOpen: boolean;\n getSubmenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n ) => { 'data-parent-menu': string } & ComponentPropsWithoutRef<'div'>;\n getSubmenuTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n};\n\nconst SubmenuContext = React.createContext<SubmenuContextType | undefined>(\n undefined,\n);\n\nexport const useSubmenuContext = () => {\n const context = React.useContext(SubmenuContext);\n return context;\n};\n\nexport const SubmenuContextProvider = SubmenuContext.Provider;\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuHeaderStyles = () => {\n return css({\n position: 'sticky',\n top: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderBottom: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuFooterStyles = () => {\n return css({\n position: 'sticky',\n bottom: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderTop: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuListStyles = (props: {\n hasStickyFooter?: boolean;\n hasStickyHeader?: boolean;\n}) => ({\n container: css({\n overflowY: 'auto',\n position: 'relative',\n padding: 0,\n paddingTop: props.hasStickyHeader ? 0 : tokens.spacingXs,\n paddingBottom: props.hasStickyFooter ? 0 : tokens.spacingXs,\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuHeaderStyles } from './MenuList.styles';\n\nexport type MenuListHeaderProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListHeader: React.FC<ExpandProps<MenuListHeaderProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-header',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuHeaderStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListHeader.displayName = 'MenuListHeader';\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuFooterStyles } from './MenuList.styles';\n\nexport type MenuListFooterProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListFooter: React.FC<ExpandProps<MenuListFooterProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-footer',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuFooterStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListFooter.displayName = 'MenuListFooter';\n","import React, { useEffect, useRef } from 'react';\nimport { cx } from 'emotion';\nimport { mergeRefs } from '@contentful/f36-core';\nimport type {\n CommonProps,\n PolymorphicComponent,\n PolymorphicProps,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useId } from '@contentful/f36-core';\nimport { getMenuItemStyles } from './MenuItem.styles';\n\nconst MENU_ITEM_DEFAULT_TAG = 'button';\n\ninterface MenuItemInternalProps extends CommonProps {\n children?: React.ReactNode;\n as?: 'a' | 'button';\n\n /**\n * Sets focus on item\n */\n isInitiallyFocused?: boolean;\n}\n\nexport type MenuItemProps<\n E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG\n> = PolymorphicProps<MenuItemInternalProps, E>;\n\nfunction _MenuItem<E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG>(\n props: MenuItemProps<E>,\n ref: React.Ref<any>,\n) {\n const { testId, className, as, isInitiallyFocused, ...otherProps } = props;\n\n const id = useId(undefined, 'menu-item');\n const itemTestId = testId || `cf-ui-${id}`;\n const styles = getMenuItemStyles();\n\n const { getMenuItemProps, focusMenuItem } = useMenuContext();\n\n const itemRef = useRef<HTMLElement>(null);\n useEffect(() => {\n if (isInitiallyFocused && itemRef.current) {\n focusMenuItem(itemRef.current);\n }\n }, [isInitiallyFocused, focusMenuItem]);\n\n const Element = (as ?? MENU_ITEM_DEFAULT_TAG) as React.ElementType;\n\n return (\n <Element\n role=\"menuitem\"\n {...otherProps}\n {...getMenuItemProps(otherProps)}\n className={cx(styles.root, className)}\n data-test-id={itemTestId}\n ref={mergeRefs(itemRef, ref)}\n tabIndex={-1}\n >\n {props.children}\n </Element>\n );\n}\n\n_MenuItem.displayName = 'MenuItem';\n\nexport const MenuItem: PolymorphicComponent<\n ExpandProps<MenuItemInternalProps>,\n typeof MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_MenuItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuItemStyles = () => {\n return {\n root: css({\n display: 'block',\n width: '100%',\n background: 'none',\n border: 0,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightNormal,\n position: 'relative',\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n minWidth: '150px',\n textDecoration: 'none',\n color: tokens.gray800,\n\n '&:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:focus': {\n boxShadow: `inset ${tokens.glowPrimary}`,\n // just to make boxShadow with rounded corners\n borderRadius: tokens.borderRadiusMedium,\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: 'unset',\n borderRadius: 'unset',\n },\n '&:focus-visible': {\n boxShadow: `inset ${tokens.glowPrimary}`,\n borderRadius: tokens.borderRadiusMedium,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'auto',\n },\n }),\n };\n};\n","import React from 'react';\nimport { Popover } from '@contentful/f36-popover';\nimport { useMenuContext } from '../MenuContext';\nimport type { ExpandProps } from '@contentful/f36-core';\n\nexport interface MenuTriggerProps {\n children: React.ReactNode;\n}\n\nexport const MenuTrigger = (props: ExpandProps<MenuTriggerProps>) => {\n const child = React.Children.only(props.children) as any;\n const { getTriggerProps } = useMenuContext();\n\n return (\n <Popover.Trigger>\n {React.cloneElement(child, {\n ...getTriggerProps(child.props, child.ref),\n ['aria-haspopup']: 'menu',\n })}\n </Popover.Trigger>\n );\n};\n","import React from 'react';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getMenuDividerStyles } from './MenuDivider.styles';\n\nexport type MenuDividerProps = PropsWithHTMLElement<CommonProps, 'hr'>;\n\nexport const MenuDivider = (props: ExpandProps<MenuDividerProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-divider',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuDividerStyles();\n\n return (\n <hr\n aria-orientation=\"horizontal\"\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n />\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuDividerStyles = () =>\n css({\n border: 'none',\n width: '100%',\n height: '1px',\n background: tokens.gray300,\n margin: `${tokens.spacingXs} 0`,\n });\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getMenuSectionTitleStyles } from './MenuSectionTitle.styles';\nimport { SectionHeading } from '@contentful/f36-typography';\nimport type { SectionHeadingProps } from '@contentful/f36-typography';\nimport type { ExpandProps } from '@contentful/f36-core';\n\nexport type MenuSectionTitleProps = SectionHeadingProps;\n\nexport const MenuSectionTitle = (props: ExpandProps<MenuSectionTitleProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-section-title',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuSectionTitleStyles();\n\n return (\n <SectionHeading\n // Techincally, menus cannot contain headings according to ARIA.\n // We hide the heading from assistive technology, and only use it\n // as a label\n aria-hidden=\"true\"\n testId={testId}\n className={cx(styles, className)}\n marginBottom=\"none\"\n {...otherProps}\n >\n {children}\n </SectionHeading>\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuSectionTitleStyles = () =>\n css({\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n\n 'hr + &': {\n marginTop: '-8px',\n },\n });\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Menu, MenuProps } from '../Menu';\nimport { useMenuContext } from '../MenuContext';\nimport { SubmenuContextProvider, SubmenuContextType } from '../SubmenuContext';\nimport { mergeRefs } from '@contentful/f36-core';\n\nconst SUBMENU_OFFSET: [number, number] = [-8, 2];\n\nexport type SubmenuProps = Omit<\n MenuProps,\n | 'placement'\n | 'offset'\n | 'usePortal'\n | 'isOpen'\n | 'isAutoalignmentEnabled'\n | 'defaultIsOpen'\n>;\n\nexport const Submenu = (props: SubmenuProps) => {\n const { onClose, onOpen, ...otherProps } = props;\n\n const {\n isOpen: isParentMenuOpen,\n menuId,\n propsToPropagateToSubmenus,\n } = useMenuContext();\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const mouseLeaveTimerRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(false);\n const handleOpen = useCallback(() => {\n setIsOpen(true);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onOpen?.();\n }, [onOpen]);\n const handleClose = useCallback(() => {\n setIsOpen(false);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onClose?.();\n }, [onClose]);\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n useEffect(() => {\n // close when parent menu closed\n if (isParentMenuOpen === false) {\n setIsOpen(false);\n }\n }, [isParentMenuOpen]);\n\n const contextValue: SubmenuContextType = useMemo(\n () => ({\n isOpen,\n getSubmenuListProps: (_props) => ({\n 'data-parent-menu': menuId,\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n closeAndFocusTrigger();\n\n _props.onMouseLeave?.(event);\n },\n }),\n getSubmenuTriggerProps: (_props, _ref) => ({\n ref: mergeRefs(triggerRef, _ref),\n onKeyDown: (event) => {\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n handleOpen();\n }\n\n _props.onKeyDown?.(event);\n },\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n mouseLeaveTimerRef.current = window.setTimeout(\n closeAndFocusTrigger,\n 300,\n );\n\n _props.onMouseLeave?.(event);\n },\n }),\n }),\n [isOpen, menuId, handleOpen, closeAndFocusTrigger],\n );\n\n return (\n <SubmenuContextProvider value={contextValue}>\n <Menu\n {...propsToPropagateToSubmenus}\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n onOpen={handleOpen}\n placement=\"right-start\"\n offset={SUBMENU_OFFSET}\n isAutoalignmentEnabled={false}\n />\n </SubmenuContextProvider>\n );\n};\n","import React from 'react';\nimport { MenuTrigger } from '../MenuTrigger/MenuTrigger';\nimport { MenuItem, MenuItemProps } from '../MenuItem/MenuItem';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { ChevronRightIcon } from '@contentful/f36-icons';\nimport type { ExpandProps } from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getSubmenuTriggerStyles } from './SubmenuTrigger.styles';\n\nexport type SubmenuTriggerProps = Omit<\n MenuItemProps<'button'>,\n 'isInitiallyFocused' | 'as'\n>;\n\nconst _SubmenuTrigger = (\n props: ExpandProps<SubmenuTriggerProps>,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const { className, children } = props;\n const { getSubmenuTriggerProps, isOpen } = useSubmenuContext();\n\n const styles = getSubmenuTriggerStyles();\n\n return (\n <MenuTrigger>\n <MenuItem\n {...props}\n {...getSubmenuTriggerProps(props, ref)}\n className={cx(styles.root({ isActive: isOpen }), className)}\n >\n <span className={styles.content}>{children}</span>\n <ChevronRightIcon className={styles.icon} />\n </MenuItem>\n </MenuTrigger>\n );\n};\n\nexport const SubmenuTrigger = React.forwardRef(_SubmenuTrigger);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getSubmenuTriggerStyles = () => {\n return {\n root: ({ isActive }) =>\n css({\n display: 'flex',\n alignItems: 'center',\n paddingRight: tokens.spacingXs,\n ...(isActive\n ? {\n backgroundColor: tokens.gray100,\n }\n : {}),\n }),\n content: css({\n marginRight: tokens.spacingM,\n }),\n icon: css({\n marginLeft: 'auto',\n fill: 'currentColor',\n }),\n };\n};\n"],"names":["Menu","MenuProps","MenuList","MenuListProps","MenuItem","MenuItemProps","MenuTrigger","MenuTriggerProps","MenuDivider","MenuDividerProps","MenuSectionTitle","MenuSectionTitleProps","Submenu","SubmenuProps","SubmenuTrigger","SubmenuTriggerProps","OriginalMenu","MenuListHeader","MenuListFooter","CompoundMenu","List","ListHeader","ListFooter","Item","Trigger","Divider","SectionTitle","React","useCallback","useMemo","useRef","useEffect","mergeRefs","useId","useControllableState","useArrowKeyNavigation","Popover","PopoverProps","MenuContextProvider","MenuContextType","MENU_ITEMS_SELECTOR","Omit","isOpen","defaultIsOpen","onOpen","onClose","closeOnSelect","closeOnBlur","closeOnEsc","props","children","otherProps","handleOpen","handleClose","isControlled","triggerRef","HTMLButtonElement","menuListRef","HTMLDivElement","menuId","focusedIndex","handleArrowsKeyDown","setFocusedIndex","itemsContainerRef","itemsSelector","current","menuItems","querySelectorAll","length","setTimeout","HTMLElement","focus","preventScroll","focusMenuItem","item","itemIndex","findIndex","menuItem","closeAndFocusTrigger","handleMenuListKeyDown","event","KeyboardEvent","key","preventDefault","stopPropagation","contextValue","getTriggerProps","_props","_ref","onClick","isFullyControlled","ref","getMenuListProps","onKeyDown","onBlur","relatedTarget","Node","targetIsMenu","contains","targetIsTrigger","targetIsSubmenu","parentElement","dataset","parentMenu","getMenuItemProps","isSubmenuTrigger","Boolean","target","getAttribute","propsToPropagateToSubmenus","useState","UseArrowKeyNavigationProps","MutableRefObject","keyType","initialFocusedIndex","ARROW_KEY_TYPES","vertical","prev","next","horizontal","container","items","lastItemIndex","focusFirstItem","focusLastItem","focusNextItem","focusPrevItem","keyToFnMap","fn","ComponentPropsWithRef","Ref","Pick","MenuContext","createContext","undefined","useMenuContext","context","useContext","Error","Provider","CommonProps","PropsWithHTMLElement","ExpandProps","useSubmenuContext","getMenuListStyles","MenuListInternalProps","ReactNode","assertChild","child","type","displayName","_MenuList","testId","className","submenuContext","header","ReactElement","footer","Children","forEach","appendChild","push","styles","hasStickyHeader","hasStickyFooter","extendedOtherProps","getSubmenuListProps","forwardRef","ComponentPropsWithoutRef","SubmenuContextType","getSubmenuTriggerProps","SubmenuContext","SubmenuContextProvider","tokens","getMenuHeaderStyles","position","top","left","backgroundColor","colorWhite","borderBottom","gray300","padding","spacingXs","zIndex","getMenuFooterStyles","bottom","borderTop","overflowY","paddingTop","paddingBottom","MenuListHeaderProps","FC","MenuListFooterProps","PolymorphicComponent","PolymorphicProps","getMenuItemStyles","MENU_ITEM_DEFAULT_TAG","MenuItemInternalProps","as","isInitiallyFocused","ElementType","E","_MenuItem","id","itemTestId","itemRef","Element","root","display","width","background","border","margin","outline","fontSize","fontSizeM","lineHeight","lineHeightM","fontWeight","fontWeightNormal","textAlign","spacingM","wordBreak","whiteSpace","cursor","hyphens","minWidth","textDecoration","color","gray800","gray100","boxShadow","glowPrimary","borderRadius","borderRadiusMedium","gray200","opacity","only","cloneElement","getMenuDividerStyles","height","getMenuSectionTitleStyles","SectionHeading","SectionHeadingProps","marginTop","SUBMENU_OFFSET","isParentMenuOpen","mouseLeaveTimerRef","setIsOpen","window","clearTimeout","onMouseOver","onMouseLeave","ChevronRightIcon","getSubmenuTriggerStyles","_SubmenuTrigger","isActive","content","icon","alignItems","paddingRight","marginRight"],"version":3,"file":"main.js.map"}
|
package/dist/module.js
CHANGED
|
@@ -411,7 +411,7 @@ const $0cc53a77e90ceec6$export$adaad53e003c74d0 = ()=>{
|
|
|
411
411
|
const $ea346231d142cd67$var$MENU_ITEM_DEFAULT_TAG = 'button';
|
|
412
412
|
function $ea346231d142cd67$var$_MenuItem(props, ref) {
|
|
413
413
|
const { testId: testId , className: className , as: as , isInitiallyFocused: isInitiallyFocused , ...otherProps } = props;
|
|
414
|
-
const id = $eBAEH$useId(
|
|
414
|
+
const id = $eBAEH$useId(undefined, 'menu-item');
|
|
415
415
|
const itemTestId = testId || `cf-ui-${id}`;
|
|
416
416
|
const styles = $0cc53a77e90ceec6$export$adaad53e003c74d0();
|
|
417
417
|
const { getMenuItemProps: getMenuItemProps , focusMenuItem: focusMenuItem } = $c66e4ce1999d7489$export$21c7ab35b39f78ec();
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/components/menu/src/index.ts","packages/components/menu/src/CompoundMenu.tsx","packages/components/menu/src/Menu.tsx","packages/components/menu/src/useArrowKeyNavigation.ts","packages/components/menu/src/MenuContext.ts","packages/components/menu/src/MenuList/MenuList.tsx","packages/components/menu/src/SubmenuContext.ts","packages/components/menu/src/MenuList/MenuList.styles.ts","packages/components/menu/src/MenuList/MenuListHeader.tsx","packages/components/menu/src/MenuList/MenuListFooter.tsx","packages/components/menu/src/MenuItem/MenuItem.tsx","packages/components/menu/src/MenuItem/MenuItem.styles.ts","packages/components/menu/src/MenuTrigger/MenuTrigger.tsx","packages/components/menu/src/MenuDivider/MenuDivider.tsx","packages/components/menu/src/MenuDivider/MenuDivider.styles.ts","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.tsx","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.styles.ts","packages/components/menu/src/Submenu/Submenu.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.styles.ts"],"sourcesContent":["export { Menu } from './CompoundMenu';\nexport type { MenuProps } from './Menu';\nexport { MenuList } from './MenuList/MenuList';\nexport type { MenuListProps } from './MenuList/MenuList';\nexport { MenuItem } from './MenuItem/MenuItem';\nexport type { MenuItemProps } from './MenuItem/MenuItem';\nexport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nexport type { MenuTriggerProps } from './MenuTrigger/MenuTrigger';\nexport { MenuDivider } from './MenuDivider/MenuDivider';\nexport type { MenuDividerProps } from './MenuDivider/MenuDivider';\nexport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nexport type { MenuSectionTitleProps } from './MenuSectionTitle/MenuSectionTitle';\nexport { Submenu } from './Submenu/Submenu';\nexport type { SubmenuProps } from './Submenu/Submenu';\nexport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './SubmenuTrigger/SubmenuTrigger';\n","import { Menu as OriginalMenu } from './Menu';\nimport { MenuList } from './MenuList/MenuList';\nimport { MenuListHeader } from './MenuList/MenuListHeader';\nimport { MenuListFooter } from './MenuList/MenuListFooter';\nimport { MenuItem } from './MenuItem/MenuItem';\nimport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nimport { MenuDivider } from './MenuDivider/MenuDivider';\nimport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nimport { Submenu } from './Submenu/Submenu';\nimport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\n\ntype CompoundMenu = typeof OriginalMenu & {\n List: typeof MenuList;\n ListHeader: typeof MenuListHeader;\n ListFooter: typeof MenuListFooter;\n Item: typeof MenuItem;\n Trigger: typeof MenuTrigger;\n Divider: typeof MenuDivider;\n SectionTitle: typeof MenuSectionTitle;\n Submenu: typeof Submenu;\n SubmenuTrigger: typeof SubmenuTrigger;\n};\n\nexport const Menu = OriginalMenu as CompoundMenu;\nMenu.List = MenuList;\nMenu.ListHeader = MenuListHeader;\nMenu.ListFooter = MenuListFooter;\nMenu.Item = MenuItem;\nMenu.Trigger = MenuTrigger;\nMenu.Divider = MenuDivider;\nMenu.SectionTitle = MenuSectionTitle;\nMenu.Submenu = Submenu;\nMenu.SubmenuTrigger = SubmenuTrigger;\n","import React, { useCallback, useMemo, useRef, useEffect } from 'react';\nimport { mergeRefs, useId, useControllableState } from '@contentful/f36-core';\nimport { useArrowKeyNavigation } from './useArrowKeyNavigation';\nimport { Popover } from '@contentful/f36-popover';\nimport type { PopoverProps } from '@contentful/f36-popover';\nimport { MenuContextProvider, MenuContextType } from './MenuContext';\n\nconst MENU_ITEMS_SELECTOR = '[role=\"menuitem\"]:not(:disabled)';\n\nexport interface MenuProps\n extends Omit<PopoverProps, 'autoFocus' | 'id' | 'closeOnBlur'> {\n /**\n * By default, the Menu is uncontrolled (manage it's expanded state by itself)\n * But you can make it controlled by providing boolean (true/false)\n */\n isOpen?: boolean;\n\n /**\n * If `true`, the Menu will be initially opened.\n */\n defaultIsOpen?: boolean;\n\n /**\n * Callback fired when the Menu opens\n */\n onOpen?: () => void;\n\n /**\n * Callback fired when the Menu closes\n */\n onClose?: () => void;\n\n /**\n * If `true`, the Menu will close when a menu item is\n * clicked\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnSelect?: boolean;\n\n /**\n * If true, the menu will close when you blur out it by clicking outside\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnBlur?: boolean;\n\n /**\n * If true, the menu will close when you hit the Esc key\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnEsc?: boolean;\n}\n\nexport function Menu(props: MenuProps) {\n const {\n closeOnSelect = true,\n closeOnBlur = true,\n closeOnEsc = true,\n children,\n onOpen,\n ...otherProps\n } = props;\n const {\n isOpen,\n handleOpen,\n handleClose,\n isControlled,\n } = useControllableState({\n isOpen: props.isOpen,\n defaultIsOpen: props.defaultIsOpen,\n onOpen,\n onClose: props.onClose,\n });\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const menuListRef = useRef<HTMLDivElement>(null);\n\n const menuId = useId(null, 'menu');\n\n const {\n focusedIndex,\n handleArrowsKeyDown,\n setFocusedIndex,\n } = useArrowKeyNavigation({\n itemsContainerRef: menuListRef,\n itemsSelector: MENU_ITEMS_SELECTOR,\n });\n\n useEffect(() => {\n if (isOpen && menuListRef.current) {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n if (menuItems.length > 0 && focusedIndex < menuItems.length) {\n // timeout trick to prevent scroll from jumping\n // when the popover is not positioned correctly yet in the opening phase\n setTimeout(() => {\n (menuItems[focusedIndex] as HTMLElement).focus({\n preventScroll: false,\n });\n }, 0);\n }\n }\n }, [isOpen, focusedIndex]);\n\n const focusMenuItem = useCallback(\n (item: HTMLElement) => {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n const itemIndex = [...menuItems].findIndex(\n (menuItem) => item === menuItem,\n );\n\n if (itemIndex !== -1) {\n setFocusedIndex(itemIndex);\n }\n },\n [setFocusedIndex],\n );\n\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n const handleMenuListKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Tab') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n // we don't want to propagate other keydown events except `Tab`\n event.stopPropagation();\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n handleArrowsKeyDown(event);\n },\n [closeAndFocusTrigger, handleArrowsKeyDown],\n );\n\n const contextValue: MenuContextType = useMemo(\n () => ({\n isOpen,\n menuId,\n focusMenuItem,\n getTriggerProps: (_props = {}, _ref = null) => ({\n onClick: (event) => {\n // if the user made component controlled by providing isOpen prop\n // but onOpen callback is not provided, we won't add toggle logic\n // to the trigger component. So they can make any toggle logic on their own.\n const isFullyControlled = isControlled && !onOpen;\n\n if (!isFullyControlled) {\n if (isOpen) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n _props.onClick?.(event);\n },\n ref: mergeRefs(triggerRef, _ref),\n }),\n getMenuListProps: (_props = {}, _ref = null) => ({\n ref: mergeRefs(menuListRef, _ref),\n onKeyDown: (event) => {\n handleMenuListKeyDown(event);\n _props.onKeyDown?.(event);\n },\n onBlur: (event) => {\n _props.onBlur?.(event);\n\n if (!closeOnBlur) {\n return;\n }\n\n const relatedTarget = event.relatedTarget as Node;\n\n const targetIsMenu =\n menuListRef.current === relatedTarget ||\n menuListRef.current?.contains(relatedTarget);\n const targetIsTrigger =\n triggerRef.current === relatedTarget ||\n triggerRef.current?.contains(relatedTarget);\n const targetIsSubmenu =\n relatedTarget?.parentElement?.dataset.parentMenu === menuId;\n\n if (targetIsMenu || targetIsTrigger || targetIsSubmenu) {\n event.stopPropagation();\n return;\n }\n\n handleClose();\n },\n }),\n getMenuItemProps: (_props = {}) => ({\n onClick: (event) => {\n _props.onClick?.(event);\n\n const isSubmenuTrigger = Boolean(\n (event.target as HTMLElement).getAttribute('aria-haspopup'),\n );\n if (closeOnSelect && !isSubmenuTrigger) {\n closeAndFocusTrigger();\n }\n },\n }),\n propsToPropagateToSubmenus: {\n closeOnSelect,\n closeOnBlur,\n closeOnEsc,\n },\n }),\n [\n menuId,\n isOpen,\n handleMenuListKeyDown,\n closeOnSelect,\n handleClose,\n handleOpen,\n focusMenuItem,\n closeOnBlur,\n closeOnEsc,\n closeAndFocusTrigger,\n isControlled,\n onOpen,\n ],\n );\n\n return (\n <MenuContextProvider value={contextValue}>\n <Popover\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n id={menuId}\n closeOnEsc={closeOnEsc}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n closeOnBlur={false}\n >\n {children}\n </Popover>\n </MenuContextProvider>\n );\n}\n","import { useState, useCallback } from 'react';\n\ninterface UseArrowKeyNavigationProps {\n itemsContainerRef: React.MutableRefObject<HTMLElement>;\n itemsSelector: string;\n keyType?: 'vertical' | 'horizontal';\n initialFocusedIndex?: number;\n}\n\nconst ARROW_KEY_TYPES = {\n vertical: {\n prev: 'ArrowUp',\n next: 'ArrowDown',\n },\n horizontal: {\n prev: 'ArrowLeft',\n next: 'ArrowRight',\n },\n};\n\nexport const useArrowKeyNavigation = ({\n itemsContainerRef,\n itemsSelector,\n keyType = 'vertical',\n}: UseArrowKeyNavigationProps) => {\n const [focusedIndex, setFocusedIndex] = useState<number>(0);\n\n const handleArrowsKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const container = itemsContainerRef.current;\n if (!container) return;\n\n const items = container.querySelectorAll(itemsSelector);\n if (items.length === 0) return;\n\n const lastItemIndex = items.length - 1;\n\n const focusFirstItem = () => setFocusedIndex(0);\n const focusLastItem = () => setFocusedIndex(lastItemIndex);\n const focusNextItem = () => {\n if (focusedIndex === lastItemIndex) {\n focusFirstItem();\n } else {\n setFocusedIndex(focusedIndex + 1);\n }\n };\n const focusPrevItem = () => {\n if (focusedIndex === 0) {\n focusLastItem();\n } else {\n setFocusedIndex(focusedIndex - 1);\n }\n };\n\n const keyToFnMap = {\n [ARROW_KEY_TYPES[keyType].next]: focusNextItem,\n [ARROW_KEY_TYPES[keyType].prev]: focusPrevItem,\n };\n\n const fn = keyToFnMap[event.key];\n if (fn) {\n event.preventDefault();\n fn();\n }\n },\n [focusedIndex, itemsSelector, itemsContainerRef, keyType],\n );\n\n return { focusedIndex, handleArrowsKeyDown, setFocusedIndex };\n};\n","import React, { ComponentPropsWithRef } from 'react';\nimport { MenuProps } from '.';\n\nexport type MenuContextType = {\n isOpen: boolean;\n menuId: string;\n focusMenuItem: (item: HTMLElement) => void;\n getTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n getMenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n _ref: React.Ref<HTMLDivElement>,\n ) => ComponentPropsWithRef<'div'>;\n getMenuItemProps: (\n _props: ComponentPropsWithRef<'button'>,\n ) => ComponentPropsWithRef<'button'>;\n propsToPropagateToSubmenus: Pick<\n MenuProps,\n 'closeOnBlur' | 'closeOnEsc' | 'closeOnSelect'\n >;\n};\n\nconst MenuContext = React.createContext<MenuContextType | undefined>(undefined);\n\nexport const useMenuContext = () => {\n const context = React.useContext(MenuContext);\n\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuContextProvider');\n }\n\n return context;\n};\n\nexport const MenuContextProvider = MenuContext.Provider;\n","import React from 'react';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { Popover } from '@contentful/f36-popover';\nimport { cx } from 'emotion';\nimport { getMenuListStyles } from './MenuList.styles';\nimport { MenuListHeader } from './MenuListHeader';\nimport { MenuListFooter } from './MenuListFooter';\n\ninterface MenuListInternalProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nfunction assertChild(child: any): child is { type: { displayName: string } } {\n return Boolean(child?.type?.displayName);\n}\n\nexport type MenuListProps = PropsWithHTMLElement<MenuListInternalProps, 'div'>;\n\nconst _MenuList = (\n props: ExpandProps<MenuListProps>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list',\n className,\n ...otherProps\n } = props;\n\n const { getMenuListProps } = useMenuContext();\n const submenuContext = useSubmenuContext();\n\n let header: React.ReactElement | null = null;\n let footer: React.ReactElement | null = null;\n const items: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child) => {\n let appendChild = true;\n if (assertChild(child)) {\n if (child.type.displayName === MenuListHeader.displayName) {\n header = (child as unknown) as React.ReactElement;\n appendChild = false;\n } else if (child.type.displayName === MenuListFooter.displayName) {\n footer = (child as unknown) as React.ReactElement;\n appendChild = false;\n }\n }\n if (appendChild) {\n items.push((child as unknown) as React.ReactElement);\n }\n });\n\n const styles = getMenuListStyles({\n hasStickyHeader: Boolean(header),\n hasStickyFooter: Boolean(footer),\n });\n\n const extendedOtherProps = submenuContext\n ? submenuContext.getSubmenuListProps(otherProps)\n : otherProps;\n\n return (\n <Popover.Content\n role=\"menu\"\n {...extendedOtherProps}\n {...getMenuListProps(extendedOtherProps, ref)}\n className={cx(styles.container, className)}\n testId={testId}\n >\n {header}\n {items}\n {footer}\n </Popover.Content>\n );\n};\n\nexport const MenuList = React.forwardRef(_MenuList);\n","import React, { ComponentPropsWithRef, ComponentPropsWithoutRef } from 'react';\n\nexport type SubmenuContextType = {\n isOpen: boolean;\n getSubmenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n ) => { 'data-parent-menu': string } & ComponentPropsWithoutRef<'div'>;\n getSubmenuTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n};\n\nconst SubmenuContext = React.createContext<SubmenuContextType | undefined>(\n undefined,\n);\n\nexport const useSubmenuContext = () => {\n const context = React.useContext(SubmenuContext);\n return context;\n};\n\nexport const SubmenuContextProvider = SubmenuContext.Provider;\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuHeaderStyles = () => {\n return css({\n position: 'sticky',\n top: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderBottom: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuFooterStyles = () => {\n return css({\n position: 'sticky',\n bottom: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderTop: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuListStyles = (props: {\n hasStickyFooter?: boolean;\n hasStickyHeader?: boolean;\n}) => ({\n container: css({\n overflowY: 'auto',\n position: 'relative',\n padding: 0,\n paddingTop: props.hasStickyHeader ? 0 : tokens.spacingXs,\n paddingBottom: props.hasStickyFooter ? 0 : tokens.spacingXs,\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuHeaderStyles } from './MenuList.styles';\n\nexport type MenuListHeaderProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListHeader: React.FC<ExpandProps<MenuListHeaderProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-header',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuHeaderStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListHeader.displayName = 'MenuListHeader';\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuFooterStyles } from './MenuList.styles';\n\nexport type MenuListFooterProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListFooter: React.FC<ExpandProps<MenuListFooterProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-footer',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuFooterStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListFooter.displayName = 'MenuListFooter';\n","import React, { useEffect, useRef } from 'react';\nimport { cx } from 'emotion';\nimport { mergeRefs } from '@contentful/f36-core';\nimport type {\n CommonProps,\n PolymorphicComponent,\n PolymorphicProps,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useId } from '@contentful/f36-core';\nimport { getMenuItemStyles } from './MenuItem.styles';\n\nconst MENU_ITEM_DEFAULT_TAG = 'button';\n\ninterface MenuItemInternalProps extends CommonProps {\n children?: React.ReactNode;\n as?: 'a' | 'button';\n\n /**\n * Sets focus on item\n */\n isInitiallyFocused?: boolean;\n}\n\nexport type MenuItemProps<\n E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG\n> = PolymorphicProps<MenuItemInternalProps, E>;\n\nfunction _MenuItem<E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG>(\n props: MenuItemProps<E>,\n ref: React.Ref<any>,\n) {\n const { testId, className, as, isInitiallyFocused, ...otherProps } = props;\n\n const id = useId(null, 'menu-item');\n const itemTestId = testId || `cf-ui-${id}`;\n const styles = getMenuItemStyles();\n\n const { getMenuItemProps, focusMenuItem } = useMenuContext();\n\n const itemRef = useRef<HTMLElement>(null);\n useEffect(() => {\n if (isInitiallyFocused && itemRef.current) {\n focusMenuItem(itemRef.current);\n }\n }, [isInitiallyFocused, focusMenuItem]);\n\n const Element = (as ?? MENU_ITEM_DEFAULT_TAG) as React.ElementType;\n\n return (\n <Element\n role=\"menuitem\"\n {...otherProps}\n {...getMenuItemProps(otherProps)}\n className={cx(styles.root, className)}\n data-test-id={itemTestId}\n ref={mergeRefs(itemRef, ref)}\n tabIndex={-1}\n >\n {props.children}\n </Element>\n );\n}\n\n_MenuItem.displayName = 'MenuItem';\n\nexport const MenuItem: PolymorphicComponent<\n ExpandProps<MenuItemInternalProps>,\n typeof MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_MenuItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuItemStyles = () => {\n return {\n root: css({\n display: 'block',\n width: '100%',\n background: 'none',\n border: 0,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightNormal,\n position: 'relative',\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n minWidth: '150px',\n textDecoration: 'none',\n color: tokens.gray800,\n\n '&:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:focus': {\n boxShadow: `inset ${tokens.glowPrimary}`,\n // just to make boxShadow with rounded corners\n borderRadius: tokens.borderRadiusMedium,\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: 'unset',\n borderRadius: 'unset',\n },\n '&:focus-visible': {\n boxShadow: `inset ${tokens.glowPrimary}`,\n borderRadius: tokens.borderRadiusMedium,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'auto',\n },\n }),\n };\n};\n","import React from 'react';\nimport { Popover } from '@contentful/f36-popover';\nimport { useMenuContext } from '../MenuContext';\nimport type { ExpandProps } from '@contentful/f36-core';\n\nexport interface MenuTriggerProps {\n children: React.ReactNode;\n}\n\nexport const MenuTrigger = (props: ExpandProps<MenuTriggerProps>) => {\n const child = React.Children.only(props.children) as any;\n const { getTriggerProps } = useMenuContext();\n\n return (\n <Popover.Trigger>\n {React.cloneElement(child, {\n ...getTriggerProps(child.props, child.ref),\n ['aria-haspopup']: 'menu',\n })}\n </Popover.Trigger>\n );\n};\n","import React from 'react';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getMenuDividerStyles } from './MenuDivider.styles';\n\nexport type MenuDividerProps = PropsWithHTMLElement<CommonProps, 'hr'>;\n\nexport const MenuDivider = (props: ExpandProps<MenuDividerProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-divider',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuDividerStyles();\n\n return (\n <hr\n aria-orientation=\"horizontal\"\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n />\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuDividerStyles = () =>\n css({\n border: 'none',\n width: '100%',\n height: '1px',\n background: tokens.gray300,\n margin: `${tokens.spacingXs} 0`,\n });\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getMenuSectionTitleStyles } from './MenuSectionTitle.styles';\nimport { SectionHeading } from '@contentful/f36-typography';\nimport type { SectionHeadingProps } from '@contentful/f36-typography';\nimport type { ExpandProps } from '@contentful/f36-core';\n\nexport type MenuSectionTitleProps = SectionHeadingProps;\n\nexport const MenuSectionTitle = (props: ExpandProps<MenuSectionTitleProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-section-title',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuSectionTitleStyles();\n\n return (\n <SectionHeading\n // Techincally, menus cannot contain headings according to ARIA.\n // We hide the heading from assistive technology, and only use it\n // as a label\n aria-hidden=\"true\"\n testId={testId}\n className={cx(styles, className)}\n marginBottom=\"none\"\n {...otherProps}\n >\n {children}\n </SectionHeading>\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuSectionTitleStyles = () =>\n css({\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n\n 'hr + &': {\n marginTop: '-8px',\n },\n });\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Menu, MenuProps } from '../Menu';\nimport { useMenuContext } from '../MenuContext';\nimport { SubmenuContextProvider, SubmenuContextType } from '../SubmenuContext';\nimport { mergeRefs } from '@contentful/f36-core';\n\nconst SUBMENU_OFFSET: [number, number] = [-8, 2];\n\nexport type SubmenuProps = Omit<\n MenuProps,\n | 'placement'\n | 'offset'\n | 'usePortal'\n | 'isOpen'\n | 'isAutoalignmentEnabled'\n | 'defaultIsOpen'\n>;\n\nexport const Submenu = (props: SubmenuProps) => {\n const { onClose, onOpen, ...otherProps } = props;\n\n const {\n isOpen: isParentMenuOpen,\n menuId,\n propsToPropagateToSubmenus,\n } = useMenuContext();\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const mouseLeaveTimerRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(false);\n const handleOpen = useCallback(() => {\n setIsOpen(true);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onOpen?.();\n }, [onOpen]);\n const handleClose = useCallback(() => {\n setIsOpen(false);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onClose?.();\n }, [onClose]);\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n useEffect(() => {\n // close when parent menu closed\n if (isParentMenuOpen === false) {\n setIsOpen(false);\n }\n }, [isParentMenuOpen]);\n\n const contextValue: SubmenuContextType = useMemo(\n () => ({\n isOpen,\n getSubmenuListProps: (_props) => ({\n 'data-parent-menu': menuId,\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n closeAndFocusTrigger();\n\n _props.onMouseLeave?.(event);\n },\n }),\n getSubmenuTriggerProps: (_props, _ref) => ({\n ref: mergeRefs(triggerRef, _ref),\n onKeyDown: (event) => {\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n handleOpen();\n }\n\n _props.onKeyDown?.(event);\n },\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n mouseLeaveTimerRef.current = window.setTimeout(\n closeAndFocusTrigger,\n 300,\n );\n\n _props.onMouseLeave?.(event);\n },\n }),\n }),\n [isOpen, menuId, handleOpen, closeAndFocusTrigger],\n );\n\n return (\n <SubmenuContextProvider value={contextValue}>\n <Menu\n {...propsToPropagateToSubmenus}\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n onOpen={handleOpen}\n placement=\"right-start\"\n offset={SUBMENU_OFFSET}\n isAutoalignmentEnabled={false}\n />\n </SubmenuContextProvider>\n );\n};\n","import React from 'react';\nimport { MenuTrigger } from '../MenuTrigger/MenuTrigger';\nimport { MenuItem, MenuItemProps } from '../MenuItem/MenuItem';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { ChevronRightIcon } from '@contentful/f36-icons';\nimport type { ExpandProps } from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getSubmenuTriggerStyles } from './SubmenuTrigger.styles';\n\nexport type SubmenuTriggerProps = Omit<\n MenuItemProps<'button'>,\n 'isInitiallyFocused' | 'as'\n>;\n\nconst _SubmenuTrigger = (\n props: ExpandProps<SubmenuTriggerProps>,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const { className, children } = props;\n const { getSubmenuTriggerProps, isOpen } = useSubmenuContext();\n\n const styles = getSubmenuTriggerStyles();\n\n return (\n <MenuTrigger>\n <MenuItem\n {...props}\n {...getSubmenuTriggerProps(props, ref)}\n className={cx(styles.root({ isActive: isOpen }), className)}\n >\n <span className={styles.content}>{children}</span>\n <ChevronRightIcon className={styles.icon} />\n </MenuItem>\n </MenuTrigger>\n );\n};\n\nexport const SubmenuTrigger = React.forwardRef(_SubmenuTrigger);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getSubmenuTriggerStyles = () => {\n return {\n root: ({ isActive }) =>\n css({\n display: 'flex',\n alignItems: 'center',\n paddingRight: tokens.spacingXs,\n ...(isActive\n ? {\n backgroundColor: tokens.gray100,\n }\n : {}),\n }),\n content: css({\n marginRight: tokens.spacingM,\n }),\n icon: css({\n marginLeft: 'auto',\n fill: 'currentColor',\n }),\n };\n};\n"],"names":["Menu","MenuProps","MenuList","MenuListProps","MenuItem","MenuItemProps","MenuTrigger","MenuTriggerProps","MenuDivider","MenuDividerProps","MenuSectionTitle","MenuSectionTitleProps","Submenu","SubmenuProps","SubmenuTrigger","SubmenuTriggerProps","OriginalMenu","MenuListHeader","MenuListFooter","CompoundMenu","List","ListHeader","ListFooter","Item","Trigger","Divider","SectionTitle","React","useCallback","useMemo","useRef","useEffect","mergeRefs","useId","useControllableState","useArrowKeyNavigation","Popover","PopoverProps","MenuContextProvider","MenuContextType","MENU_ITEMS_SELECTOR","Omit","isOpen","defaultIsOpen","onOpen","onClose","closeOnSelect","closeOnBlur","closeOnEsc","props","children","otherProps","handleOpen","handleClose","isControlled","triggerRef","HTMLButtonElement","menuListRef","HTMLDivElement","menuId","focusedIndex","handleArrowsKeyDown","setFocusedIndex","itemsContainerRef","itemsSelector","current","menuItems","querySelectorAll","length","setTimeout","HTMLElement","focus","preventScroll","focusMenuItem","item","itemIndex","findIndex","menuItem","closeAndFocusTrigger","handleMenuListKeyDown","event","KeyboardEvent","key","preventDefault","stopPropagation","contextValue","getTriggerProps","_props","_ref","onClick","isFullyControlled","ref","getMenuListProps","onKeyDown","onBlur","relatedTarget","Node","targetIsMenu","contains","targetIsTrigger","targetIsSubmenu","parentElement","dataset","parentMenu","getMenuItemProps","isSubmenuTrigger","Boolean","target","getAttribute","propsToPropagateToSubmenus","useState","UseArrowKeyNavigationProps","MutableRefObject","keyType","initialFocusedIndex","ARROW_KEY_TYPES","vertical","prev","next","horizontal","container","items","lastItemIndex","focusFirstItem","focusLastItem","focusNextItem","focusPrevItem","keyToFnMap","fn","ComponentPropsWithRef","Ref","Pick","MenuContext","createContext","undefined","useMenuContext","context","useContext","Error","Provider","CommonProps","PropsWithHTMLElement","ExpandProps","useSubmenuContext","getMenuListStyles","MenuListInternalProps","ReactNode","assertChild","child","type","displayName","_MenuList","testId","className","submenuContext","header","ReactElement","footer","Children","forEach","appendChild","push","styles","hasStickyHeader","hasStickyFooter","extendedOtherProps","getSubmenuListProps","forwardRef","ComponentPropsWithoutRef","SubmenuContextType","getSubmenuTriggerProps","SubmenuContext","SubmenuContextProvider","tokens","getMenuHeaderStyles","position","top","left","backgroundColor","colorWhite","borderBottom","gray300","padding","spacingXs","zIndex","getMenuFooterStyles","bottom","borderTop","overflowY","paddingTop","paddingBottom","MenuListHeaderProps","FC","MenuListFooterProps","PolymorphicComponent","PolymorphicProps","getMenuItemStyles","MENU_ITEM_DEFAULT_TAG","MenuItemInternalProps","as","isInitiallyFocused","ElementType","E","_MenuItem","id","itemTestId","itemRef","Element","root","display","width","background","border","margin","outline","fontSize","fontSizeM","lineHeight","lineHeightM","fontWeight","fontWeightNormal","textAlign","spacingM","wordBreak","whiteSpace","cursor","hyphens","minWidth","textDecoration","color","gray800","gray100","boxShadow","glowPrimary","borderRadius","borderRadiusMedium","gray200","opacity","only","cloneElement","getMenuDividerStyles","height","getMenuSectionTitleStyles","SectionHeading","SectionHeadingProps","marginTop","SUBMENU_OFFSET","isParentMenuOpen","mouseLeaveTimerRef","setIsOpen","window","clearTimeout","onMouseOver","onMouseLeave","ChevronRightIcon","getSubmenuTriggerStyles","_SubmenuTrigger","isActive","content","icon","alignItems","paddingRight","marginRight"],"version":3,"file":"module.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/components/menu/src/index.ts","packages/components/menu/src/CompoundMenu.tsx","packages/components/menu/src/Menu.tsx","packages/components/menu/src/useArrowKeyNavigation.ts","packages/components/menu/src/MenuContext.ts","packages/components/menu/src/MenuList/MenuList.tsx","packages/components/menu/src/SubmenuContext.ts","packages/components/menu/src/MenuList/MenuList.styles.ts","packages/components/menu/src/MenuList/MenuListHeader.tsx","packages/components/menu/src/MenuList/MenuListFooter.tsx","packages/components/menu/src/MenuItem/MenuItem.tsx","packages/components/menu/src/MenuItem/MenuItem.styles.ts","packages/components/menu/src/MenuTrigger/MenuTrigger.tsx","packages/components/menu/src/MenuDivider/MenuDivider.tsx","packages/components/menu/src/MenuDivider/MenuDivider.styles.ts","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.tsx","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.styles.ts","packages/components/menu/src/Submenu/Submenu.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.styles.ts"],"sourcesContent":["export { Menu } from './CompoundMenu';\nexport type { MenuProps } from './Menu';\nexport { MenuList } from './MenuList/MenuList';\nexport type { MenuListProps } from './MenuList/MenuList';\nexport { MenuItem } from './MenuItem/MenuItem';\nexport type { MenuItemProps } from './MenuItem/MenuItem';\nexport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nexport type { MenuTriggerProps } from './MenuTrigger/MenuTrigger';\nexport { MenuDivider } from './MenuDivider/MenuDivider';\nexport type { MenuDividerProps } from './MenuDivider/MenuDivider';\nexport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nexport type { MenuSectionTitleProps } from './MenuSectionTitle/MenuSectionTitle';\nexport { Submenu } from './Submenu/Submenu';\nexport type { SubmenuProps } from './Submenu/Submenu';\nexport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './SubmenuTrigger/SubmenuTrigger';\n","import { Menu as OriginalMenu } from './Menu';\nimport { MenuList } from './MenuList/MenuList';\nimport { MenuListHeader } from './MenuList/MenuListHeader';\nimport { MenuListFooter } from './MenuList/MenuListFooter';\nimport { MenuItem } from './MenuItem/MenuItem';\nimport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nimport { MenuDivider } from './MenuDivider/MenuDivider';\nimport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nimport { Submenu } from './Submenu/Submenu';\nimport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\n\ntype CompoundMenu = typeof OriginalMenu & {\n List: typeof MenuList;\n ListHeader: typeof MenuListHeader;\n ListFooter: typeof MenuListFooter;\n Item: typeof MenuItem;\n Trigger: typeof MenuTrigger;\n Divider: typeof MenuDivider;\n SectionTitle: typeof MenuSectionTitle;\n Submenu: typeof Submenu;\n SubmenuTrigger: typeof SubmenuTrigger;\n};\n\nexport const Menu = OriginalMenu as CompoundMenu;\nMenu.List = MenuList;\nMenu.ListHeader = MenuListHeader;\nMenu.ListFooter = MenuListFooter;\nMenu.Item = MenuItem;\nMenu.Trigger = MenuTrigger;\nMenu.Divider = MenuDivider;\nMenu.SectionTitle = MenuSectionTitle;\nMenu.Submenu = Submenu;\nMenu.SubmenuTrigger = SubmenuTrigger;\n","import React, { useCallback, useMemo, useRef, useEffect } from 'react';\nimport { mergeRefs, useId, useControllableState } from '@contentful/f36-core';\nimport { useArrowKeyNavigation } from './useArrowKeyNavigation';\nimport { Popover } from '@contentful/f36-popover';\nimport type { PopoverProps } from '@contentful/f36-popover';\nimport { MenuContextProvider, MenuContextType } from './MenuContext';\n\nconst MENU_ITEMS_SELECTOR = '[role=\"menuitem\"]:not(:disabled)';\n\nexport interface MenuProps\n extends Omit<PopoverProps, 'autoFocus' | 'id' | 'closeOnBlur'> {\n /**\n * By default, the Menu is uncontrolled (manage it's expanded state by itself)\n * But you can make it controlled by providing boolean (true/false)\n */\n isOpen?: boolean;\n\n /**\n * If `true`, the Menu will be initially opened.\n */\n defaultIsOpen?: boolean;\n\n /**\n * Callback fired when the Menu opens\n */\n onOpen?: () => void;\n\n /**\n * Callback fired when the Menu closes\n */\n onClose?: () => void;\n\n /**\n * If `true`, the Menu will close when a menu item is\n * clicked\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnSelect?: boolean;\n\n /**\n * If true, the menu will close when you blur out it by clicking outside\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnBlur?: boolean;\n\n /**\n * If true, the menu will close when you hit the Esc key\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnEsc?: boolean;\n}\n\nexport function Menu(props: MenuProps) {\n const {\n closeOnSelect = true,\n closeOnBlur = true,\n closeOnEsc = true,\n children,\n onOpen,\n ...otherProps\n } = props;\n const {\n isOpen,\n handleOpen,\n handleClose,\n isControlled,\n } = useControllableState({\n isOpen: props.isOpen,\n defaultIsOpen: props.defaultIsOpen,\n onOpen,\n onClose: props.onClose,\n });\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const menuListRef = useRef<HTMLDivElement>(null);\n\n const menuId = useId(null, 'menu');\n\n const {\n focusedIndex,\n handleArrowsKeyDown,\n setFocusedIndex,\n } = useArrowKeyNavigation({\n itemsContainerRef: menuListRef,\n itemsSelector: MENU_ITEMS_SELECTOR,\n });\n\n useEffect(() => {\n if (isOpen && menuListRef.current) {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n if (menuItems.length > 0 && focusedIndex < menuItems.length) {\n // timeout trick to prevent scroll from jumping\n // when the popover is not positioned correctly yet in the opening phase\n setTimeout(() => {\n (menuItems[focusedIndex] as HTMLElement).focus({\n preventScroll: false,\n });\n }, 0);\n }\n }\n }, [isOpen, focusedIndex]);\n\n const focusMenuItem = useCallback(\n (item: HTMLElement) => {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n const itemIndex = [...menuItems].findIndex(\n (menuItem) => item === menuItem,\n );\n\n if (itemIndex !== -1) {\n setFocusedIndex(itemIndex);\n }\n },\n [setFocusedIndex],\n );\n\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n const handleMenuListKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Tab') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n // we don't want to propagate other keydown events except `Tab`\n event.stopPropagation();\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n handleArrowsKeyDown(event);\n },\n [closeAndFocusTrigger, handleArrowsKeyDown],\n );\n\n const contextValue: MenuContextType = useMemo(\n () => ({\n isOpen,\n menuId,\n focusMenuItem,\n getTriggerProps: (_props = {}, _ref = null) => ({\n onClick: (event) => {\n // if the user made component controlled by providing isOpen prop\n // but onOpen callback is not provided, we won't add toggle logic\n // to the trigger component. So they can make any toggle logic on their own.\n const isFullyControlled = isControlled && !onOpen;\n\n if (!isFullyControlled) {\n if (isOpen) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n _props.onClick?.(event);\n },\n ref: mergeRefs(triggerRef, _ref),\n }),\n getMenuListProps: (_props = {}, _ref = null) => ({\n ref: mergeRefs(menuListRef, _ref),\n onKeyDown: (event) => {\n handleMenuListKeyDown(event);\n _props.onKeyDown?.(event);\n },\n onBlur: (event) => {\n _props.onBlur?.(event);\n\n if (!closeOnBlur) {\n return;\n }\n\n const relatedTarget = event.relatedTarget as Node;\n\n const targetIsMenu =\n menuListRef.current === relatedTarget ||\n menuListRef.current?.contains(relatedTarget);\n const targetIsTrigger =\n triggerRef.current === relatedTarget ||\n triggerRef.current?.contains(relatedTarget);\n const targetIsSubmenu =\n relatedTarget?.parentElement?.dataset.parentMenu === menuId;\n\n if (targetIsMenu || targetIsTrigger || targetIsSubmenu) {\n event.stopPropagation();\n return;\n }\n\n handleClose();\n },\n }),\n getMenuItemProps: (_props = {}) => ({\n onClick: (event) => {\n _props.onClick?.(event);\n\n const isSubmenuTrigger = Boolean(\n (event.target as HTMLElement).getAttribute('aria-haspopup'),\n );\n if (closeOnSelect && !isSubmenuTrigger) {\n closeAndFocusTrigger();\n }\n },\n }),\n propsToPropagateToSubmenus: {\n closeOnSelect,\n closeOnBlur,\n closeOnEsc,\n },\n }),\n [\n menuId,\n isOpen,\n handleMenuListKeyDown,\n closeOnSelect,\n handleClose,\n handleOpen,\n focusMenuItem,\n closeOnBlur,\n closeOnEsc,\n closeAndFocusTrigger,\n isControlled,\n onOpen,\n ],\n );\n\n return (\n <MenuContextProvider value={contextValue}>\n <Popover\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n id={menuId}\n closeOnEsc={closeOnEsc}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n closeOnBlur={false}\n >\n {children}\n </Popover>\n </MenuContextProvider>\n );\n}\n","import { useState, useCallback } from 'react';\n\ninterface UseArrowKeyNavigationProps {\n itemsContainerRef: React.MutableRefObject<HTMLElement>;\n itemsSelector: string;\n keyType?: 'vertical' | 'horizontal';\n initialFocusedIndex?: number;\n}\n\nconst ARROW_KEY_TYPES = {\n vertical: {\n prev: 'ArrowUp',\n next: 'ArrowDown',\n },\n horizontal: {\n prev: 'ArrowLeft',\n next: 'ArrowRight',\n },\n};\n\nexport const useArrowKeyNavigation = ({\n itemsContainerRef,\n itemsSelector,\n keyType = 'vertical',\n}: UseArrowKeyNavigationProps) => {\n const [focusedIndex, setFocusedIndex] = useState<number>(0);\n\n const handleArrowsKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const container = itemsContainerRef.current;\n if (!container) return;\n\n const items = container.querySelectorAll(itemsSelector);\n if (items.length === 0) return;\n\n const lastItemIndex = items.length - 1;\n\n const focusFirstItem = () => setFocusedIndex(0);\n const focusLastItem = () => setFocusedIndex(lastItemIndex);\n const focusNextItem = () => {\n if (focusedIndex === lastItemIndex) {\n focusFirstItem();\n } else {\n setFocusedIndex(focusedIndex + 1);\n }\n };\n const focusPrevItem = () => {\n if (focusedIndex === 0) {\n focusLastItem();\n } else {\n setFocusedIndex(focusedIndex - 1);\n }\n };\n\n const keyToFnMap = {\n [ARROW_KEY_TYPES[keyType].next]: focusNextItem,\n [ARROW_KEY_TYPES[keyType].prev]: focusPrevItem,\n };\n\n const fn = keyToFnMap[event.key];\n if (fn) {\n event.preventDefault();\n fn();\n }\n },\n [focusedIndex, itemsSelector, itemsContainerRef, keyType],\n );\n\n return { focusedIndex, handleArrowsKeyDown, setFocusedIndex };\n};\n","import React, { ComponentPropsWithRef } from 'react';\nimport { MenuProps } from '.';\n\nexport type MenuContextType = {\n isOpen: boolean;\n menuId: string;\n focusMenuItem: (item: HTMLElement) => void;\n getTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n getMenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n _ref: React.Ref<HTMLDivElement>,\n ) => ComponentPropsWithRef<'div'>;\n getMenuItemProps: (\n _props: ComponentPropsWithRef<'button'>,\n ) => ComponentPropsWithRef<'button'>;\n propsToPropagateToSubmenus: Pick<\n MenuProps,\n 'closeOnBlur' | 'closeOnEsc' | 'closeOnSelect'\n >;\n};\n\nconst MenuContext = React.createContext<MenuContextType | undefined>(undefined);\n\nexport const useMenuContext = () => {\n const context = React.useContext(MenuContext);\n\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuContextProvider');\n }\n\n return context;\n};\n\nexport const MenuContextProvider = MenuContext.Provider;\n","import React from 'react';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { Popover } from '@contentful/f36-popover';\nimport { cx } from 'emotion';\nimport { getMenuListStyles } from './MenuList.styles';\nimport { MenuListHeader } from './MenuListHeader';\nimport { MenuListFooter } from './MenuListFooter';\n\ninterface MenuListInternalProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nfunction assertChild(child: any): child is { type: { displayName: string } } {\n return Boolean(child?.type?.displayName);\n}\n\nexport type MenuListProps = PropsWithHTMLElement<MenuListInternalProps, 'div'>;\n\nconst _MenuList = (\n props: ExpandProps<MenuListProps>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list',\n className,\n ...otherProps\n } = props;\n\n const { getMenuListProps } = useMenuContext();\n const submenuContext = useSubmenuContext();\n\n let header: React.ReactElement | null = null;\n let footer: React.ReactElement | null = null;\n const items: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child) => {\n let appendChild = true;\n if (assertChild(child)) {\n if (child.type.displayName === MenuListHeader.displayName) {\n header = (child as unknown) as React.ReactElement;\n appendChild = false;\n } else if (child.type.displayName === MenuListFooter.displayName) {\n footer = (child as unknown) as React.ReactElement;\n appendChild = false;\n }\n }\n if (appendChild) {\n items.push((child as unknown) as React.ReactElement);\n }\n });\n\n const styles = getMenuListStyles({\n hasStickyHeader: Boolean(header),\n hasStickyFooter: Boolean(footer),\n });\n\n const extendedOtherProps = submenuContext\n ? submenuContext.getSubmenuListProps(otherProps)\n : otherProps;\n\n return (\n <Popover.Content\n role=\"menu\"\n {...extendedOtherProps}\n {...getMenuListProps(extendedOtherProps, ref)}\n className={cx(styles.container, className)}\n testId={testId}\n >\n {header}\n {items}\n {footer}\n </Popover.Content>\n );\n};\n\nexport const MenuList = React.forwardRef(_MenuList);\n","import React, { ComponentPropsWithRef, ComponentPropsWithoutRef } from 'react';\n\nexport type SubmenuContextType = {\n isOpen: boolean;\n getSubmenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n ) => { 'data-parent-menu': string } & ComponentPropsWithoutRef<'div'>;\n getSubmenuTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n};\n\nconst SubmenuContext = React.createContext<SubmenuContextType | undefined>(\n undefined,\n);\n\nexport const useSubmenuContext = () => {\n const context = React.useContext(SubmenuContext);\n return context;\n};\n\nexport const SubmenuContextProvider = SubmenuContext.Provider;\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuHeaderStyles = () => {\n return css({\n position: 'sticky',\n top: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderBottom: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuFooterStyles = () => {\n return css({\n position: 'sticky',\n bottom: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderTop: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuListStyles = (props: {\n hasStickyFooter?: boolean;\n hasStickyHeader?: boolean;\n}) => ({\n container: css({\n overflowY: 'auto',\n position: 'relative',\n padding: 0,\n paddingTop: props.hasStickyHeader ? 0 : tokens.spacingXs,\n paddingBottom: props.hasStickyFooter ? 0 : tokens.spacingXs,\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuHeaderStyles } from './MenuList.styles';\n\nexport type MenuListHeaderProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListHeader: React.FC<ExpandProps<MenuListHeaderProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-header',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuHeaderStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListHeader.displayName = 'MenuListHeader';\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuFooterStyles } from './MenuList.styles';\n\nexport type MenuListFooterProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListFooter: React.FC<ExpandProps<MenuListFooterProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-footer',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuFooterStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListFooter.displayName = 'MenuListFooter';\n","import React, { useEffect, useRef } from 'react';\nimport { cx } from 'emotion';\nimport { mergeRefs } from '@contentful/f36-core';\nimport type {\n CommonProps,\n PolymorphicComponent,\n PolymorphicProps,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useId } from '@contentful/f36-core';\nimport { getMenuItemStyles } from './MenuItem.styles';\n\nconst MENU_ITEM_DEFAULT_TAG = 'button';\n\ninterface MenuItemInternalProps extends CommonProps {\n children?: React.ReactNode;\n as?: 'a' | 'button';\n\n /**\n * Sets focus on item\n */\n isInitiallyFocused?: boolean;\n}\n\nexport type MenuItemProps<\n E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG\n> = PolymorphicProps<MenuItemInternalProps, E>;\n\nfunction _MenuItem<E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG>(\n props: MenuItemProps<E>,\n ref: React.Ref<any>,\n) {\n const { testId, className, as, isInitiallyFocused, ...otherProps } = props;\n\n const id = useId(undefined, 'menu-item');\n const itemTestId = testId || `cf-ui-${id}`;\n const styles = getMenuItemStyles();\n\n const { getMenuItemProps, focusMenuItem } = useMenuContext();\n\n const itemRef = useRef<HTMLElement>(null);\n useEffect(() => {\n if (isInitiallyFocused && itemRef.current) {\n focusMenuItem(itemRef.current);\n }\n }, [isInitiallyFocused, focusMenuItem]);\n\n const Element = (as ?? MENU_ITEM_DEFAULT_TAG) as React.ElementType;\n\n return (\n <Element\n role=\"menuitem\"\n {...otherProps}\n {...getMenuItemProps(otherProps)}\n className={cx(styles.root, className)}\n data-test-id={itemTestId}\n ref={mergeRefs(itemRef, ref)}\n tabIndex={-1}\n >\n {props.children}\n </Element>\n );\n}\n\n_MenuItem.displayName = 'MenuItem';\n\nexport const MenuItem: PolymorphicComponent<\n ExpandProps<MenuItemInternalProps>,\n typeof MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_MenuItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuItemStyles = () => {\n return {\n root: css({\n display: 'block',\n width: '100%',\n background: 'none',\n border: 0,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightNormal,\n position: 'relative',\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n minWidth: '150px',\n textDecoration: 'none',\n color: tokens.gray800,\n\n '&:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:focus': {\n boxShadow: `inset ${tokens.glowPrimary}`,\n // just to make boxShadow with rounded corners\n borderRadius: tokens.borderRadiusMedium,\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: 'unset',\n borderRadius: 'unset',\n },\n '&:focus-visible': {\n boxShadow: `inset ${tokens.glowPrimary}`,\n borderRadius: tokens.borderRadiusMedium,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'auto',\n },\n }),\n };\n};\n","import React from 'react';\nimport { Popover } from '@contentful/f36-popover';\nimport { useMenuContext } from '../MenuContext';\nimport type { ExpandProps } from '@contentful/f36-core';\n\nexport interface MenuTriggerProps {\n children: React.ReactNode;\n}\n\nexport const MenuTrigger = (props: ExpandProps<MenuTriggerProps>) => {\n const child = React.Children.only(props.children) as any;\n const { getTriggerProps } = useMenuContext();\n\n return (\n <Popover.Trigger>\n {React.cloneElement(child, {\n ...getTriggerProps(child.props, child.ref),\n ['aria-haspopup']: 'menu',\n })}\n </Popover.Trigger>\n );\n};\n","import React from 'react';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getMenuDividerStyles } from './MenuDivider.styles';\n\nexport type MenuDividerProps = PropsWithHTMLElement<CommonProps, 'hr'>;\n\nexport const MenuDivider = (props: ExpandProps<MenuDividerProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-divider',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuDividerStyles();\n\n return (\n <hr\n aria-orientation=\"horizontal\"\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n />\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuDividerStyles = () =>\n css({\n border: 'none',\n width: '100%',\n height: '1px',\n background: tokens.gray300,\n margin: `${tokens.spacingXs} 0`,\n });\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getMenuSectionTitleStyles } from './MenuSectionTitle.styles';\nimport { SectionHeading } from '@contentful/f36-typography';\nimport type { SectionHeadingProps } from '@contentful/f36-typography';\nimport type { ExpandProps } from '@contentful/f36-core';\n\nexport type MenuSectionTitleProps = SectionHeadingProps;\n\nexport const MenuSectionTitle = (props: ExpandProps<MenuSectionTitleProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-section-title',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuSectionTitleStyles();\n\n return (\n <SectionHeading\n // Techincally, menus cannot contain headings according to ARIA.\n // We hide the heading from assistive technology, and only use it\n // as a label\n aria-hidden=\"true\"\n testId={testId}\n className={cx(styles, className)}\n marginBottom=\"none\"\n {...otherProps}\n >\n {children}\n </SectionHeading>\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuSectionTitleStyles = () =>\n css({\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n\n 'hr + &': {\n marginTop: '-8px',\n },\n });\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Menu, MenuProps } from '../Menu';\nimport { useMenuContext } from '../MenuContext';\nimport { SubmenuContextProvider, SubmenuContextType } from '../SubmenuContext';\nimport { mergeRefs } from '@contentful/f36-core';\n\nconst SUBMENU_OFFSET: [number, number] = [-8, 2];\n\nexport type SubmenuProps = Omit<\n MenuProps,\n | 'placement'\n | 'offset'\n | 'usePortal'\n | 'isOpen'\n | 'isAutoalignmentEnabled'\n | 'defaultIsOpen'\n>;\n\nexport const Submenu = (props: SubmenuProps) => {\n const { onClose, onOpen, ...otherProps } = props;\n\n const {\n isOpen: isParentMenuOpen,\n menuId,\n propsToPropagateToSubmenus,\n } = useMenuContext();\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const mouseLeaveTimerRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(false);\n const handleOpen = useCallback(() => {\n setIsOpen(true);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onOpen?.();\n }, [onOpen]);\n const handleClose = useCallback(() => {\n setIsOpen(false);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onClose?.();\n }, [onClose]);\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n useEffect(() => {\n // close when parent menu closed\n if (isParentMenuOpen === false) {\n setIsOpen(false);\n }\n }, [isParentMenuOpen]);\n\n const contextValue: SubmenuContextType = useMemo(\n () => ({\n isOpen,\n getSubmenuListProps: (_props) => ({\n 'data-parent-menu': menuId,\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n closeAndFocusTrigger();\n\n _props.onMouseLeave?.(event);\n },\n }),\n getSubmenuTriggerProps: (_props, _ref) => ({\n ref: mergeRefs(triggerRef, _ref),\n onKeyDown: (event) => {\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n handleOpen();\n }\n\n _props.onKeyDown?.(event);\n },\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n mouseLeaveTimerRef.current = window.setTimeout(\n closeAndFocusTrigger,\n 300,\n );\n\n _props.onMouseLeave?.(event);\n },\n }),\n }),\n [isOpen, menuId, handleOpen, closeAndFocusTrigger],\n );\n\n return (\n <SubmenuContextProvider value={contextValue}>\n <Menu\n {...propsToPropagateToSubmenus}\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n onOpen={handleOpen}\n placement=\"right-start\"\n offset={SUBMENU_OFFSET}\n isAutoalignmentEnabled={false}\n />\n </SubmenuContextProvider>\n );\n};\n","import React from 'react';\nimport { MenuTrigger } from '../MenuTrigger/MenuTrigger';\nimport { MenuItem, MenuItemProps } from '../MenuItem/MenuItem';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { ChevronRightIcon } from '@contentful/f36-icons';\nimport type { ExpandProps } from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getSubmenuTriggerStyles } from './SubmenuTrigger.styles';\n\nexport type SubmenuTriggerProps = Omit<\n MenuItemProps<'button'>,\n 'isInitiallyFocused' | 'as'\n>;\n\nconst _SubmenuTrigger = (\n props: ExpandProps<SubmenuTriggerProps>,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const { className, children } = props;\n const { getSubmenuTriggerProps, isOpen } = useSubmenuContext();\n\n const styles = getSubmenuTriggerStyles();\n\n return (\n <MenuTrigger>\n <MenuItem\n {...props}\n {...getSubmenuTriggerProps(props, ref)}\n className={cx(styles.root({ isActive: isOpen }), className)}\n >\n <span className={styles.content}>{children}</span>\n <ChevronRightIcon className={styles.icon} />\n </MenuItem>\n </MenuTrigger>\n );\n};\n\nexport const SubmenuTrigger = React.forwardRef(_SubmenuTrigger);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getSubmenuTriggerStyles = () => {\n return {\n root: ({ isActive }) =>\n css({\n display: 'flex',\n alignItems: 'center',\n paddingRight: tokens.spacingXs,\n ...(isActive\n ? {\n backgroundColor: tokens.gray100,\n }\n : {}),\n }),\n content: css({\n marginRight: tokens.spacingM,\n }),\n icon: css({\n marginLeft: 'auto',\n fill: 'currentColor',\n }),\n };\n};\n"],"names":["Menu","MenuProps","MenuList","MenuListProps","MenuItem","MenuItemProps","MenuTrigger","MenuTriggerProps","MenuDivider","MenuDividerProps","MenuSectionTitle","MenuSectionTitleProps","Submenu","SubmenuProps","SubmenuTrigger","SubmenuTriggerProps","OriginalMenu","MenuListHeader","MenuListFooter","CompoundMenu","List","ListHeader","ListFooter","Item","Trigger","Divider","SectionTitle","React","useCallback","useMemo","useRef","useEffect","mergeRefs","useId","useControllableState","useArrowKeyNavigation","Popover","PopoverProps","MenuContextProvider","MenuContextType","MENU_ITEMS_SELECTOR","Omit","isOpen","defaultIsOpen","onOpen","onClose","closeOnSelect","closeOnBlur","closeOnEsc","props","children","otherProps","handleOpen","handleClose","isControlled","triggerRef","HTMLButtonElement","menuListRef","HTMLDivElement","menuId","focusedIndex","handleArrowsKeyDown","setFocusedIndex","itemsContainerRef","itemsSelector","current","menuItems","querySelectorAll","length","setTimeout","HTMLElement","focus","preventScroll","focusMenuItem","item","itemIndex","findIndex","menuItem","closeAndFocusTrigger","handleMenuListKeyDown","event","KeyboardEvent","key","preventDefault","stopPropagation","contextValue","getTriggerProps","_props","_ref","onClick","isFullyControlled","ref","getMenuListProps","onKeyDown","onBlur","relatedTarget","Node","targetIsMenu","contains","targetIsTrigger","targetIsSubmenu","parentElement","dataset","parentMenu","getMenuItemProps","isSubmenuTrigger","Boolean","target","getAttribute","propsToPropagateToSubmenus","useState","UseArrowKeyNavigationProps","MutableRefObject","keyType","initialFocusedIndex","ARROW_KEY_TYPES","vertical","prev","next","horizontal","container","items","lastItemIndex","focusFirstItem","focusLastItem","focusNextItem","focusPrevItem","keyToFnMap","fn","ComponentPropsWithRef","Ref","Pick","MenuContext","createContext","undefined","useMenuContext","context","useContext","Error","Provider","CommonProps","PropsWithHTMLElement","ExpandProps","useSubmenuContext","getMenuListStyles","MenuListInternalProps","ReactNode","assertChild","child","type","displayName","_MenuList","testId","className","submenuContext","header","ReactElement","footer","Children","forEach","appendChild","push","styles","hasStickyHeader","hasStickyFooter","extendedOtherProps","getSubmenuListProps","forwardRef","ComponentPropsWithoutRef","SubmenuContextType","getSubmenuTriggerProps","SubmenuContext","SubmenuContextProvider","tokens","getMenuHeaderStyles","position","top","left","backgroundColor","colorWhite","borderBottom","gray300","padding","spacingXs","zIndex","getMenuFooterStyles","bottom","borderTop","overflowY","paddingTop","paddingBottom","MenuListHeaderProps","FC","MenuListFooterProps","PolymorphicComponent","PolymorphicProps","getMenuItemStyles","MENU_ITEM_DEFAULT_TAG","MenuItemInternalProps","as","isInitiallyFocused","ElementType","E","_MenuItem","id","itemTestId","itemRef","Element","root","display","width","background","border","margin","outline","fontSize","fontSizeM","lineHeight","lineHeightM","fontWeight","fontWeightNormal","textAlign","spacingM","wordBreak","whiteSpace","cursor","hyphens","minWidth","textDecoration","color","gray800","gray100","boxShadow","glowPrimary","borderRadius","borderRadiusMedium","gray200","opacity","only","cloneElement","getMenuDividerStyles","height","getMenuSectionTitleStyles","SectionHeading","SectionHeadingProps","marginTop","SUBMENU_OFFSET","isParentMenuOpen","mouseLeaveTimerRef","setIsOpen","window","clearTimeout","onMouseOver","onMouseLeave","ChevronRightIcon","getSubmenuTriggerStyles","_SubmenuTrigger","isActive","content","icon","alignItems","paddingRight","marginRight"],"version":3,"file":"module.js.map"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/f36-menu",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.11.0",
|
|
4
4
|
"description": "Forma 36: Menu component",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "parcel build"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@babel/runtime": "^7.6.2",
|
|
10
|
-
"@contentful/f36-core": "^4.
|
|
11
|
-
"@contentful/f36-icons": "^4.
|
|
12
|
-
"@contentful/f36-popover": "^4.
|
|
10
|
+
"@contentful/f36-core": "^4.11.0",
|
|
11
|
+
"@contentful/f36-icons": "^4.11.0",
|
|
12
|
+
"@contentful/f36-popover": "^4.11.0",
|
|
13
13
|
"@contentful/f36-tokens": "^4.0.1",
|
|
14
|
-
"@contentful/f36-typography": "^4.
|
|
15
|
-
"@contentful/f36-utils": "^4.
|
|
14
|
+
"@contentful/f36-typography": "^4.11.0",
|
|
15
|
+
"@contentful/f36-utils": "^4.11.0",
|
|
16
16
|
"emotion": "^10.0.17"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|