@react-spectrum/menu 3.11.1-nightly.3856 → 3.11.1-nightly.3864

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-spectrum/menu/src/index.ts","packages/@react-spectrum/menu/src/MenuTrigger.tsx","packages/@react-spectrum/menu/src/context.ts","packages/@adobe/spectrum-css-temp/components/menu/vars.css","packages/@react-spectrum/menu/src/Menu.tsx","packages/@react-spectrum/menu/src/MenuItem.tsx","packages/@react-spectrum/menu/src/MenuSection.tsx","packages/@react-spectrum/menu/src/ActionMenu.tsx","packages/@react-spectrum/menu/intl/*.js","packages/@react-spectrum/menu/intl/ar-AE.json","packages/@react-spectrum/menu/intl/bg-BG.json","packages/@react-spectrum/menu/intl/cs-CZ.json","packages/@react-spectrum/menu/intl/da-DK.json","packages/@react-spectrum/menu/intl/de-DE.json","packages/@react-spectrum/menu/intl/el-GR.json","packages/@react-spectrum/menu/intl/en-US.json","packages/@react-spectrum/menu/intl/es-ES.json","packages/@react-spectrum/menu/intl/et-EE.json","packages/@react-spectrum/menu/intl/fi-FI.json","packages/@react-spectrum/menu/intl/fr-FR.json","packages/@react-spectrum/menu/intl/he-IL.json","packages/@react-spectrum/menu/intl/hr-HR.json","packages/@react-spectrum/menu/intl/hu-HU.json","packages/@react-spectrum/menu/intl/it-IT.json","packages/@react-spectrum/menu/intl/ja-JP.json","packages/@react-spectrum/menu/intl/ko-KR.json","packages/@react-spectrum/menu/intl/lt-LT.json","packages/@react-spectrum/menu/intl/lv-LV.json","packages/@react-spectrum/menu/intl/nb-NO.json","packages/@react-spectrum/menu/intl/nl-NL.json","packages/@react-spectrum/menu/intl/pl-PL.json","packages/@react-spectrum/menu/intl/pt-BR.json","packages/@react-spectrum/menu/intl/pt-PT.json","packages/@react-spectrum/menu/intl/ro-RO.json","packages/@react-spectrum/menu/intl/ru-RU.json","packages/@react-spectrum/menu/intl/sk-SK.json","packages/@react-spectrum/menu/intl/sl-SI.json","packages/@react-spectrum/menu/intl/sr-SP.json","packages/@react-spectrum/menu/intl/sv-SE.json","packages/@react-spectrum/menu/intl/tr-TR.json","packages/@react-spectrum/menu/intl/uk-UA.json","packages/@react-spectrum/menu/intl/zh-CN.json","packages/@react-spectrum/menu/intl/zh-TW.json"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {MenuTrigger} from './MenuTrigger';\nexport {Menu} from './Menu';\nexport {ActionMenu} from './ActionMenu';\nexport {Item, Section} from '@react-stately/collections';\nexport type {SpectrumMenuTriggerProps} from '@react-types/menu';\nexport type {SpectrumActionMenuProps, SpectrumMenuProps} from '@react-types/menu';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, SlotProvider, useDOMRef, useIsMobileDevice} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport {MenuContext} from './context';\nimport {Placement} from '@react-types/overlays';\nimport {Popover, Tray} from '@react-spectrum/overlays';\nimport {PressResponder} from '@react-aria/interactions';\nimport React, {forwardRef, Fragment, useRef} from 'react';\nimport {SpectrumMenuTriggerProps} from '@react-types/menu';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useMenuTrigger} from '@react-aria/menu';\nimport {useMenuTriggerState} from '@react-stately/menu';\n\nfunction MenuTrigger(props: SpectrumMenuTriggerProps, ref: DOMRef<HTMLElement>) {\n let triggerRef = useRef<HTMLElement>();\n let domRef = useDOMRef(ref);\n let menuTriggerRef = domRef || triggerRef;\n let menuRef = useRef<HTMLUListElement>();\n let {\n children,\n align = 'start',\n shouldFlip = true,\n direction = 'bottom',\n closeOnSelect,\n trigger = 'press'\n } = props;\n\n let [menuTrigger, menu] = React.Children.toArray(children);\n let state = useMenuTriggerState(props);\n\n let {menuTriggerProps, menuProps} = useMenuTrigger({trigger}, state, menuTriggerRef);\n\n let initialPlacement: Placement;\n switch (direction) {\n case 'left':\n case 'right':\n case 'start':\n case 'end':\n initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}` as Placement;\n break;\n case 'bottom':\n case 'top':\n default:\n initialPlacement = `${direction} ${align}` as Placement;\n }\n\n let isMobile = useIsMobileDevice();\n let menuContext = {\n ...menuProps,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: state.focusStrategy || true,\n UNSAFE_style: isMobile ? {\n width: '100%',\n maxHeight: 'inherit'\n } : undefined,\n UNSAFE_className: classNames(styles, {'spectrum-Menu-popover': !isMobile})\n };\n\n // On small screen devices, the menu is rendered in a tray, otherwise a popover.\n let overlay;\n if (isMobile) {\n overlay = (\n <Tray state={state}>\n {menu}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n state={state}\n triggerRef={menuTriggerRef}\n scrollRef={menuRef}\n placement={initialPlacement}\n hideArrow\n shouldFlip={shouldFlip}>\n {menu}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider slots={{actionButton: {holdAffordance: trigger === 'longPress'}}}>\n <PressResponder {...menuTriggerProps} ref={menuTriggerRef} isPressed={state.isOpen}>\n {menuTrigger}\n </PressResponder>\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>\n {overlay}\n </MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\nexport {_MenuTrigger as MenuTrigger};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusStrategy} from '@react-types/shared';\nimport React, {HTMLAttributes, MutableRefObject, useContext} from 'react';\n\nexport interface MenuContextValue extends HTMLAttributes<HTMLElement> {\n onClose?: () => void,\n closeOnSelect?: boolean,\n shouldFocusWrap?: boolean,\n autoFocus?: boolean | FocusStrategy,\n ref?: MutableRefObject<HTMLUListElement>\n}\n\nexport const MenuContext = React.createContext<MenuContextValue>({});\n\nexport function useMenuContext(): MenuContextValue {\n return useContext(MenuContext);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, useDOMRef, useStyleProps} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport {MenuContext} from './context';\nimport {MenuItem} from './MenuItem';\nimport {MenuSection} from './MenuSection';\nimport {mergeProps, useSyncRef} from '@react-aria/utils';\nimport React, {ReactElement, useContext} from 'react';\nimport {SpectrumMenuProps} from '@react-types/menu';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useMenu} from '@react-aria/menu';\nimport {useTreeState} from '@react-stately/tree';\n\nfunction Menu<T extends object>(props: SpectrumMenuProps<T>, ref: DOMRef<HTMLUListElement>) {\n let contextProps = useContext(MenuContext);\n let completeProps = {\n ...mergeProps(contextProps, props)\n };\n\n let domRef = useDOMRef(ref);\n let state = useTreeState(completeProps);\n let {menuProps} = useMenu(completeProps, state, domRef);\n let {styleProps} = useStyleProps(completeProps);\n useSyncRef(contextProps, domRef);\n\n return (\n <ul\n {...menuProps}\n {...styleProps}\n ref={domRef}\n className={\n classNames(\n styles,\n 'spectrum-Menu',\n styleProps.className\n )\n }>\n {[...state.collection].map(item => {\n if (item.type === 'section') {\n return (\n <MenuSection\n key={item.key}\n item={item}\n state={state}\n onAction={completeProps.onAction} />\n );\n }\n\n let menuItem = (\n <MenuItem\n key={item.key}\n item={item}\n state={state}\n onAction={completeProps.onAction} />\n );\n\n if (item.wrapper) {\n menuItem = item.wrapper(menuItem);\n }\n\n return menuItem;\n })}\n </ul>\n );\n}\n\n/**\n * Menus display a list of actions or options that a user can choose.\n */\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\n// https://stackoverflow.com/questions/58469229/react-with-typescript-generics-while-using-react-forwardref\nconst _Menu = React.forwardRef(Menu) as <T>(props: SpectrumMenuProps<T> & {ref?: DOMRef<HTMLUListElement>}) => ReactElement;\nexport {_Menu as Menu};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames, ClearSlots, SlotProvider} from '@react-spectrum/utils';\nimport {FocusRing} from '@react-aria/focus';\nimport {Grid} from '@react-spectrum/layout';\nimport {mergeProps} from '@react-aria/utils';\nimport {Node} from '@react-types/shared';\nimport React, {Key, useRef} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {Text} from '@react-spectrum/text';\nimport {TreeState} from '@react-stately/tree';\nimport {useHover} from '@react-aria/interactions';\nimport {useMenuContext} from './context';\nimport {useMenuItem} from '@react-aria/menu';\n\ninterface MenuItemProps<T> {\n item: Node<T>,\n state: TreeState<T>,\n isVirtualized?: boolean,\n onAction?: (key: Key) => void\n}\n\n/** @private */\nexport function MenuItem<T>(props: MenuItemProps<T>) {\n let {\n item,\n state,\n isVirtualized,\n onAction\n } = props;\n\n let {\n onClose,\n closeOnSelect\n } = useMenuContext();\n\n let {\n rendered,\n key\n } = item;\n\n let isSelected = state.selectionManager.isSelected(key);\n let isDisabled = state.disabledKeys.has(key);\n\n let ref = useRef<HTMLLIElement>();\n let {menuItemProps, labelProps, descriptionProps, keyboardShortcutProps} = useMenuItem(\n {\n isSelected,\n isDisabled,\n 'aria-label': item['aria-label'],\n key,\n onClose,\n closeOnSelect,\n isVirtualized,\n onAction\n },\n state,\n ref\n );\n let {hoverProps, isHovered} = useHover({isDisabled});\n\n let contents = typeof rendered === 'string'\n ? <Text>{rendered}</Text>\n : rendered;\n\n return (\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n <li\n {...mergeProps(menuItemProps, hoverProps)}\n ref={ref}\n className={classNames(\n styles,\n 'spectrum-Menu-item',\n {\n 'is-disabled': isDisabled,\n 'is-selected': isSelected,\n 'is-selectable': state.selectionManager.selectionMode !== 'none',\n 'is-hovered': isHovered\n }\n )}>\n <Grid\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Menu-itemGrid'\n )\n }>\n <ClearSlots>\n <SlotProvider\n slots={{\n text: {UNSAFE_className: styles['spectrum-Menu-itemLabel'], ...labelProps},\n end: {UNSAFE_className: styles['spectrum-Menu-end'], ...descriptionProps},\n icon: {UNSAFE_className: styles['spectrum-Menu-icon'], size: 'S'},\n description: {UNSAFE_className: styles['spectrum-Menu-description'], ...descriptionProps},\n keyboard: {UNSAFE_className: styles['spectrum-Menu-keyboard'], ...keyboardShortcutProps}\n }}>\n {contents}\n {isSelected &&\n <CheckmarkMedium\n slot=\"checkmark\"\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Menu-checkmark'\n )\n } />\n }\n </SlotProvider>\n </ClearSlots>\n </Grid>\n </li>\n </FocusRing>\n );\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames} from '@react-spectrum/utils';\nimport {getChildNodes} from '@react-stately/collections';\nimport {MenuItem} from './MenuItem';\nimport {Node} from '@react-types/shared';\nimport React, {Fragment, Key} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {TreeState} from '@react-stately/tree';\nimport {useMenuSection} from '@react-aria/menu';\nimport {useSeparator} from '@react-aria/separator';\n\ninterface MenuSectionProps<T> {\n item: Node<T>,\n state: TreeState<T>,\n onAction?: (key: Key) => void\n}\n\n/** @private */\nexport function MenuSection<T>(props: MenuSectionProps<T>) {\n let {item, state, onAction} = props;\n let {itemProps, headingProps, groupProps} = useMenuSection({\n heading: item.rendered,\n 'aria-label': item['aria-label']\n });\n\n let {separatorProps} = useSeparator({\n elementType: 'li'\n });\n\n return (\n <Fragment>\n {item.key !== state.collection.getFirstKey() &&\n <li\n {...separatorProps}\n className={classNames(\n styles,\n 'spectrum-Menu-divider'\n )} />\n }\n <li {...itemProps}>\n {item.rendered &&\n <span\n {...headingProps}\n className={\n classNames(\n styles,\n 'spectrum-Menu-sectionHeading'\n )\n }>\n {item.rendered}\n </span>\n }\n <ul\n {...groupProps}\n className={\n classNames(\n styles,\n 'spectrum-Menu'\n )\n }>\n {[...getChildNodes(item, state.collection)].map(node => {\n let item = (\n <MenuItem\n key={node.key}\n item={node}\n state={state}\n onAction={onAction} />\n );\n\n if (node.wrapper) {\n item = node.wrapper(item);\n }\n\n return item;\n })}\n </ul>\n </li>\n </Fragment>\n );\n}\n","/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ActionButton} from '@react-spectrum/button';\nimport {filterDOMProps} from '@react-aria/utils';\nimport {FocusableRef} from '@react-types/shared';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {Menu} from './Menu';\nimport {MenuTrigger} from './MenuTrigger';\nimport More from '@spectrum-icons/workflow/More';\nimport React, {forwardRef, ReactElement} from 'react';\nimport {SpectrumActionMenuProps} from '@react-types/menu';\nimport {useLocalizedStringFormatter} from '@react-aria/i18n';\nimport {useSlotProps} from '@react-spectrum/utils';\n\nfunction ActionMenu<T extends object>(props: SpectrumActionMenuProps<T>, ref: FocusableRef<HTMLButtonElement>) {\n props = useSlotProps(props, 'actionMenu');\n let stringFormatter = useLocalizedStringFormatter(intlMessages);\n let buttonProps = filterDOMProps(props, {labelable: true});\n if (buttonProps['aria-label'] === undefined) {\n buttonProps['aria-label'] = stringFormatter.format('moreActions');\n }\n\n return (\n <MenuTrigger\n isOpen={props.isOpen}\n defaultOpen={props.defaultOpen}\n onOpenChange={props.onOpenChange}\n align={props.align}\n direction={props.direction}\n shouldFlip={props.shouldFlip}>\n <ActionButton\n ref={ref}\n {...props}\n {...buttonProps}>\n <More />\n </ActionButton>\n <Menu\n children={props.children}\n items={props.items}\n disabledKeys={props.disabledKeys}\n onAction={props.onAction} />\n </MenuTrigger>\n );\n}\n\n/**\n * ActionMenu combines an ActionButton with a Menu for simple \"more actions\" use cases.\n */\nconst _ActionMenu = forwardRef(ActionMenu) as <T>(props: SpectrumActionMenuProps<T> & {ref?: FocusableRef<HTMLButtonElement>}) => ReactElement;\nexport {_ActionMenu as ActionMenu};\n","const _temp0 = require(\"./ar-AE.json\");\nconst _temp1 = require(\"./bg-BG.json\");\nconst _temp2 = require(\"./cs-CZ.json\");\nconst _temp3 = require(\"./da-DK.json\");\nconst _temp4 = require(\"./de-DE.json\");\nconst _temp5 = require(\"./el-GR.json\");\nconst _temp6 = require(\"./en-US.json\");\nconst _temp7 = require(\"./es-ES.json\");\nconst _temp8 = require(\"./et-EE.json\");\nconst _temp9 = require(\"./fi-FI.json\");\nconst _temp10 = require(\"./fr-FR.json\");\nconst _temp11 = require(\"./he-IL.json\");\nconst _temp12 = require(\"./hr-HR.json\");\nconst _temp13 = require(\"./hu-HU.json\");\nconst _temp14 = require(\"./it-IT.json\");\nconst _temp15 = require(\"./ja-JP.json\");\nconst _temp16 = require(\"./ko-KR.json\");\nconst _temp17 = require(\"./lt-LT.json\");\nconst _temp18 = require(\"./lv-LV.json\");\nconst _temp19 = require(\"./nb-NO.json\");\nconst _temp20 = require(\"./nl-NL.json\");\nconst _temp21 = require(\"./pl-PL.json\");\nconst _temp22 = require(\"./pt-BR.json\");\nconst _temp23 = require(\"./pt-PT.json\");\nconst _temp24 = require(\"./ro-RO.json\");\nconst _temp25 = require(\"./ru-RU.json\");\nconst _temp26 = require(\"./sk-SK.json\");\nconst _temp27 = require(\"./sl-SI.json\");\nconst _temp28 = require(\"./sr-SP.json\");\nconst _temp29 = require(\"./sv-SE.json\");\nconst _temp30 = require(\"./tr-TR.json\");\nconst _temp31 = require(\"./uk-UA.json\");\nconst _temp32 = require(\"./zh-CN.json\");\nconst _temp33 = require(\"./zh-TW.json\");\nmodule.exports = {\n \"ar-AE\": _temp0,\n \"bg-BG\": _temp1,\n \"cs-CZ\": _temp2,\n \"da-DK\": _temp3,\n \"de-DE\": _temp4,\n \"el-GR\": _temp5,\n \"en-US\": _temp6,\n \"es-ES\": _temp7,\n \"et-EE\": _temp8,\n \"fi-FI\": _temp9,\n \"fr-FR\": _temp10,\n \"he-IL\": _temp11,\n \"hr-HR\": _temp12,\n \"hu-HU\": _temp13,\n \"it-IT\": _temp14,\n \"ja-JP\": _temp15,\n \"ko-KR\": _temp16,\n \"lt-LT\": _temp17,\n \"lv-LV\": _temp18,\n \"nb-NO\": _temp19,\n \"nl-NL\": _temp20,\n \"pl-PL\": _temp21,\n \"pt-BR\": _temp22,\n \"pt-PT\": _temp23,\n \"ro-RO\": _temp24,\n \"ru-RU\": _temp25,\n \"sk-SK\": _temp26,\n \"sl-SI\": _temp27,\n \"sr-SP\": _temp28,\n \"sv-SE\": _temp29,\n \"tr-TR\": _temp30,\n \"uk-UA\": _temp31,\n \"zh-CN\": _temp32,\n \"zh-TW\": _temp33\n}","{\n \"moreActions\": \"المزيد من الإجراءات\"\n}\n","{\n \"moreActions\": \"Повече действия\"\n}\n","{\n \"moreActions\": \"Další akce\"\n}\n","{\n \"moreActions\": \"Flere handlinger\"\n}\n","{\n \"moreActions\": \"Mehr Aktionen\"\n}\n","{\n \"moreActions\": \"Περισσότερες ενέργειες\"\n}\n","{\n \"moreActions\": \"More actions\"\n}","{\n \"moreActions\": \"Más acciones\"\n}\n","{\n \"moreActions\": \"Veel toiminguid\"\n}\n","{\n \"moreActions\": \"Lisää toimintoja\"\n}\n","{\n \"moreActions\": \"Autres actions\"\n}\n","{\n \"moreActions\": \"פעולות נוספות\"\n}\n","{\n \"moreActions\": \"Dodatne radnje\"\n}\n","{\n \"moreActions\": \"További lehetőségek\"\n}\n","{\n \"moreActions\": \"Altre azioni\"\n}\n","{\n \"moreActions\": \"その他のアクション\"\n}\n","{\n \"moreActions\": \"기타 액션\"\n}\n","{\n \"moreActions\": \"Daugiau veiksmų\"\n}\n","{\n \"moreActions\": \"Citas darbības\"\n}\n","{\n \"moreActions\": \"Flere handlinger\"\n}\n","{\n \"moreActions\": \"Meer handelingen\"\n}\n","{\n \"moreActions\": \"Więcej akcji\"\n}\n","{\n \"moreActions\": \"Mais ações\"\n}\n","{\n \"moreActions\": \"Mais ações\"\n}\n","{\n \"moreActions\": \"Mai multe acțiuni\"\n}\n","{\n \"moreActions\": \"Дополнительные действия\"\n}\n","{\n \"moreActions\": \"Ďalšie akcie\"\n}\n","{\n \"moreActions\": \"Več možnosti\"\n}\n","{\n \"moreActions\": \"Dodatne radnje\"\n}\n","{\n \"moreActions\": \"Fler åtgärder\"\n}\n","{\n \"moreActions\": \"Daha fazla eylem\"\n}\n","{\n \"moreActions\": \"Більше дій\"\n}\n","{\n \"moreActions\": \"更多操作\"\n}\n","{\n \"moreActions\": \"更多動作\"\n}\n"],"names":[],"version":3,"file":"module.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-spectrum/menu/src/index.ts","packages/@react-spectrum/menu/src/MenuTrigger.tsx","packages/@react-spectrum/menu/src/context.ts","packages/@adobe/spectrum-css-temp/components/menu/vars.css","packages/@react-spectrum/menu/src/Menu.tsx","packages/@react-spectrum/menu/src/MenuItem.tsx","packages/@react-spectrum/menu/intl/*.js","packages/@react-spectrum/menu/intl/ar-AE.json","packages/@react-spectrum/menu/intl/bg-BG.json","packages/@react-spectrum/menu/intl/cs-CZ.json","packages/@react-spectrum/menu/intl/da-DK.json","packages/@react-spectrum/menu/intl/de-DE.json","packages/@react-spectrum/menu/intl/el-GR.json","packages/@react-spectrum/menu/intl/en-US.json","packages/@react-spectrum/menu/intl/es-ES.json","packages/@react-spectrum/menu/intl/et-EE.json","packages/@react-spectrum/menu/intl/fi-FI.json","packages/@react-spectrum/menu/intl/fr-FR.json","packages/@react-spectrum/menu/intl/he-IL.json","packages/@react-spectrum/menu/intl/hr-HR.json","packages/@react-spectrum/menu/intl/hu-HU.json","packages/@react-spectrum/menu/intl/it-IT.json","packages/@react-spectrum/menu/intl/ja-JP.json","packages/@react-spectrum/menu/intl/ko-KR.json","packages/@react-spectrum/menu/intl/lt-LT.json","packages/@react-spectrum/menu/intl/lv-LV.json","packages/@react-spectrum/menu/intl/nb-NO.json","packages/@react-spectrum/menu/intl/nl-NL.json","packages/@react-spectrum/menu/intl/pl-PL.json","packages/@react-spectrum/menu/intl/pt-BR.json","packages/@react-spectrum/menu/intl/pt-PT.json","packages/@react-spectrum/menu/intl/ro-RO.json","packages/@react-spectrum/menu/intl/ru-RU.json","packages/@react-spectrum/menu/intl/sk-SK.json","packages/@react-spectrum/menu/intl/sl-SI.json","packages/@react-spectrum/menu/intl/sr-SP.json","packages/@react-spectrum/menu/intl/sv-SE.json","packages/@react-spectrum/menu/intl/tr-TR.json","packages/@react-spectrum/menu/intl/uk-UA.json","packages/@react-spectrum/menu/intl/zh-CN.json","packages/@react-spectrum/menu/intl/zh-TW.json","packages/@react-spectrum/menu/src/MenuSection.tsx","packages/@react-spectrum/menu/src/ActionMenu.tsx","packages/@react-spectrum/menu/src/MenuDialogTrigger.tsx","packages/@adobe/spectrum-css-temp/components/contextualhelp/vars.css"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {MenuTrigger} from './MenuTrigger';\nexport {Menu} from './Menu';\nexport {ActionMenu} from './ActionMenu';\nexport {MenuDialogTrigger} from './MenuDialogTrigger';\nexport {Item, Section} from '@react-stately/collections';\nexport type {SpectrumMenuTriggerProps} from '@react-types/menu';\nexport type {SpectrumActionMenuProps, SpectrumMenuProps} from '@react-types/menu';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, SlotProvider, useDOMRef, useIsMobileDevice} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport {MenuContext} from './context';\nimport {Placement} from '@react-types/overlays';\nimport {Popover, Tray} from '@react-spectrum/overlays';\nimport {PressResponder} from '@react-aria/interactions';\nimport React, {forwardRef, Fragment, useRef} from 'react';\nimport {SpectrumMenuTriggerProps} from '@react-types/menu';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useMenuTrigger} from '@react-aria/menu';\nimport {useMenuTriggerState} from '@react-stately/menu';\n\nfunction MenuTrigger(props: SpectrumMenuTriggerProps, ref: DOMRef<HTMLElement>) {\n let triggerRef = useRef<HTMLElement>();\n let domRef = useDOMRef(ref);\n let menuTriggerRef = domRef || triggerRef;\n let menuRef = useRef<HTMLUListElement>();\n let {\n children,\n align = 'start',\n shouldFlip = true,\n direction = 'bottom',\n closeOnSelect,\n trigger = 'press'\n } = props;\n\n let [menuTrigger, menu] = React.Children.toArray(children);\n let state = useMenuTriggerState(props);\n\n let {menuTriggerProps, menuProps} = useMenuTrigger({trigger}, state, menuTriggerRef);\n\n let initialPlacement: Placement;\n switch (direction) {\n case 'left':\n case 'right':\n case 'start':\n case 'end':\n initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}` as Placement;\n break;\n case 'bottom':\n case 'top':\n default:\n initialPlacement = `${direction} ${align}` as Placement;\n }\n\n let isMobile = useIsMobileDevice();\n let menuContext = {\n ...menuProps,\n state,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: state.focusStrategy || true,\n UNSAFE_style: isMobile ? {\n width: '100%',\n maxHeight: 'inherit'\n } : undefined,\n UNSAFE_className: classNames(styles, {'spectrum-Menu-popover': !isMobile})\n };\n\n // On small screen devices, the menu is rendered in a tray, otherwise a popover.\n let overlay;\n if (isMobile) {\n overlay = (\n <Tray state={state}>\n {menu}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n state={state}\n triggerRef={menuTriggerRef}\n scrollRef={menuRef}\n placement={initialPlacement}\n hideArrow\n shouldFlip={shouldFlip}>\n {menu}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider slots={{actionButton: {holdAffordance: trigger === 'longPress'}}}>\n <PressResponder {...menuTriggerProps} ref={menuTriggerRef} isPressed={state.isOpen}>\n {menuTrigger}\n </PressResponder>\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>\n {overlay}\n </MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\nexport {_MenuTrigger as MenuTrigger};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusStrategy} from '@react-types/shared';\nimport {MenuTriggerState} from '@react-stately/menu';\nimport React, {HTMLAttributes, MutableRefObject, useContext} from 'react';\nimport {TreeState} from '@react-stately/tree';\n\nexport interface MenuContextValue extends HTMLAttributes<HTMLElement> {\n onClose?: () => void,\n closeOnSelect?: boolean,\n shouldFocusWrap?: boolean,\n autoFocus?: boolean | FocusStrategy,\n ref?: MutableRefObject<HTMLUListElement>,\n state?: MenuTriggerState\n}\n\nexport const MenuContext = React.createContext<MenuContextValue>({});\n\nexport function useMenuContext(): MenuContextValue {\n return useContext(MenuContext);\n}\n\nexport interface MenuDialogContextValue {\n isUnavailable?: boolean,\n triggerRef?: MutableRefObject<HTMLLIElement>\n}\n\nexport const MenuDialogContext = React.createContext<MenuDialogContextValue | undefined>(undefined);\n\nexport function useMenuDialogContext(): MenuDialogContextValue {\n return useContext(MenuDialogContext);\n}\n\nexport interface MenuStateContextValue<T> {\n state?: TreeState<T>\n}\n\nexport const MenuStateContext = React.createContext<MenuStateContextValue<any>>({});\n\nexport function useMenuStateContext<T>(): MenuStateContextValue<T> {\n return useContext(MenuStateContext);\n}\n\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, useDOMRef, useStyleProps} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport {FocusScope} from '@react-aria/focus';\nimport {MenuContext, MenuStateContext} from './context';\nimport {MenuItem} from './MenuItem';\nimport {MenuSection} from './MenuSection';\nimport {mergeProps, useSyncRef} from '@react-aria/utils';\nimport React, {ReactElement, useContext} from 'react';\nimport {SpectrumMenuProps} from '@react-types/menu';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useMenu} from '@react-aria/menu';\nimport {useTreeState} from '@react-stately/tree';\n\nfunction Menu<T extends object>(props: SpectrumMenuProps<T>, ref: DOMRef<HTMLUListElement>) {\n let contextProps = useContext(MenuContext);\n let completeProps = {\n ...mergeProps(contextProps, props)\n };\n\n let domRef = useDOMRef(ref);\n let state = useTreeState(completeProps);\n let {menuProps} = useMenu(completeProps, state, domRef);\n let {styleProps} = useStyleProps(completeProps);\n useSyncRef(contextProps, domRef);\n\n return (\n <MenuStateContext.Provider value={{state}}>\n <FocusScope contain={state.expandedKeys.size > 0}>\n <ul\n {...menuProps}\n {...styleProps}\n ref={domRef}\n className={\n classNames(\n styles,\n 'spectrum-Menu',\n styleProps.className\n )\n }>\n {[...state.collection].map(item => {\n if (item.type === 'section') {\n return (\n <MenuSection\n key={item.key}\n item={item}\n state={state}\n onAction={completeProps.onAction} />\n );\n }\n\n let menuItem = (\n <MenuItem\n key={item.key}\n item={item}\n state={state}\n onAction={completeProps.onAction} />\n );\n\n if (item.wrapper) {\n menuItem = item.wrapper(menuItem);\n }\n\n return menuItem;\n })}\n </ul>\n </FocusScope>\n </MenuStateContext.Provider>\n );\n}\n\n/**\n * Menus display a list of actions or options that a user can choose.\n */\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\n// https://stackoverflow.com/questions/58469229/react-with-typescript-generics-while-using-react-forwardref\nconst _Menu = React.forwardRef(Menu) as <T>(props: SpectrumMenuProps<T> & {ref?: DOMRef<HTMLUListElement>}) => ReactElement;\nexport {_Menu as Menu};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames, ClearSlots, SlotProvider} from '@react-spectrum/utils';\nimport {DOMAttributes, Node} from '@react-types/shared';\nimport {FocusRing} from '@react-aria/focus';\nimport {Grid} from '@react-spectrum/layout';\nimport InfoOutline from '@spectrum-icons/workflow/InfoOutline';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {mergeProps, useSlotId} from '@react-aria/utils';\nimport React, {Key, useRef} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {Text} from '@react-spectrum/text';\nimport {TreeState} from '@react-stately/tree';\nimport {useLocalizedStringFormatter} from '@react-aria/i18n';\nimport {useMenuContext, useMenuDialogContext} from './context';\nimport {useMenuItem} from '@react-aria/menu';\n\ninterface MenuItemProps<T> {\n item: Node<T>,\n state: TreeState<T>,\n isVirtualized?: boolean,\n onAction?: (key: Key) => void\n}\n\n/** @private */\nexport function MenuItem<T>(props: MenuItemProps<T>) {\n let {\n item,\n state,\n isVirtualized,\n onAction\n } = props;\n let stringFormatter = useLocalizedStringFormatter(intlMessages);\n let menuDialogContext = useMenuDialogContext();\n let {triggerRef} = menuDialogContext || {};\n let isMenuDialogTrigger = !!menuDialogContext;\n let isUnavailable = false;\n\n if (isMenuDialogTrigger) {\n isUnavailable = menuDialogContext.isUnavailable;\n }\n\n let {\n onClose,\n closeOnSelect\n } = useMenuContext();\n\n let {\n rendered,\n key\n } = item;\n\n let isSelected = state.selectionManager.isSelected(key);\n let isDisabled = state.disabledKeys.has(key);\n\n let ref = useRef<HTMLLIElement>(null);\n if (triggerRef) {\n ref = triggerRef;\n }\n\n let {\n menuItemProps,\n labelProps,\n descriptionProps,\n keyboardShortcutProps\n } = useMenuItem(\n {\n isSelected,\n isDisabled,\n 'aria-label': item['aria-label'],\n key,\n onClose,\n closeOnSelect,\n isVirtualized,\n onAction,\n 'aria-haspopup': isMenuDialogTrigger ? 'dialog' : undefined\n },\n state,\n ref\n );\n let endId = useSlotId();\n let endProps: DOMAttributes = {};\n if (endId) {\n endProps.id = endId;\n menuItemProps['aria-describedby'] = menuItemProps['aria-describedby'] + ' ' + endId;\n }\n\n let contents = typeof rendered === 'string'\n ? <Text>{rendered}</Text>\n : rendered;\n\n return (\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n <li\n {...mergeProps(menuItemProps)}\n ref={ref}\n className={classNames(\n styles,\n 'spectrum-Menu-item',\n {\n 'is-disabled': isDisabled,\n 'is-selected': isSelected,\n 'is-selectable': state.selectionManager.selectionMode !== 'none',\n 'is-open': state.expandedKeys.has(key)\n }\n )}>\n <Grid\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Menu-itemGrid'\n )\n }>\n <ClearSlots>\n <SlotProvider\n slots={{\n text: {UNSAFE_className: styles['spectrum-Menu-itemLabel'], ...labelProps},\n end: {UNSAFE_className: styles['spectrum-Menu-end'], ...endProps},\n icon: {UNSAFE_className: styles['spectrum-Menu-icon'], size: 'S'},\n description: {UNSAFE_className: styles['spectrum-Menu-description'], ...descriptionProps},\n keyboard: {UNSAFE_className: styles['spectrum-Menu-keyboard'], ...keyboardShortcutProps}\n }}>\n {contents}\n {isSelected &&\n <CheckmarkMedium\n slot=\"checkmark\"\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Menu-checkmark'\n )\n } />\n }\n {\n isUnavailable && <InfoOutline slot=\"end\" size=\"XS\" alignSelf=\"center\" aria-label={stringFormatter.format('unavailable')} />\n }\n </SlotProvider>\n </ClearSlots>\n </Grid>\n </li>\n </FocusRing>\n );\n}\n","const _temp0 = require(\"./ar-AE.json\");\nconst _temp1 = require(\"./bg-BG.json\");\nconst _temp2 = require(\"./cs-CZ.json\");\nconst _temp3 = require(\"./da-DK.json\");\nconst _temp4 = require(\"./de-DE.json\");\nconst _temp5 = require(\"./el-GR.json\");\nconst _temp6 = require(\"./en-US.json\");\nconst _temp7 = require(\"./es-ES.json\");\nconst _temp8 = require(\"./et-EE.json\");\nconst _temp9 = require(\"./fi-FI.json\");\nconst _temp10 = require(\"./fr-FR.json\");\nconst _temp11 = require(\"./he-IL.json\");\nconst _temp12 = require(\"./hr-HR.json\");\nconst _temp13 = require(\"./hu-HU.json\");\nconst _temp14 = require(\"./it-IT.json\");\nconst _temp15 = require(\"./ja-JP.json\");\nconst _temp16 = require(\"./ko-KR.json\");\nconst _temp17 = require(\"./lt-LT.json\");\nconst _temp18 = require(\"./lv-LV.json\");\nconst _temp19 = require(\"./nb-NO.json\");\nconst _temp20 = require(\"./nl-NL.json\");\nconst _temp21 = require(\"./pl-PL.json\");\nconst _temp22 = require(\"./pt-BR.json\");\nconst _temp23 = require(\"./pt-PT.json\");\nconst _temp24 = require(\"./ro-RO.json\");\nconst _temp25 = require(\"./ru-RU.json\");\nconst _temp26 = require(\"./sk-SK.json\");\nconst _temp27 = require(\"./sl-SI.json\");\nconst _temp28 = require(\"./sr-SP.json\");\nconst _temp29 = require(\"./sv-SE.json\");\nconst _temp30 = require(\"./tr-TR.json\");\nconst _temp31 = require(\"./uk-UA.json\");\nconst _temp32 = require(\"./zh-CN.json\");\nconst _temp33 = require(\"./zh-TW.json\");\nmodule.exports = {\n \"ar-AE\": _temp0,\n \"bg-BG\": _temp1,\n \"cs-CZ\": _temp2,\n \"da-DK\": _temp3,\n \"de-DE\": _temp4,\n \"el-GR\": _temp5,\n \"en-US\": _temp6,\n \"es-ES\": _temp7,\n \"et-EE\": _temp8,\n \"fi-FI\": _temp9,\n \"fr-FR\": _temp10,\n \"he-IL\": _temp11,\n \"hr-HR\": _temp12,\n \"hu-HU\": _temp13,\n \"it-IT\": _temp14,\n \"ja-JP\": _temp15,\n \"ko-KR\": _temp16,\n \"lt-LT\": _temp17,\n \"lv-LV\": _temp18,\n \"nb-NO\": _temp19,\n \"nl-NL\": _temp20,\n \"pl-PL\": _temp21,\n \"pt-BR\": _temp22,\n \"pt-PT\": _temp23,\n \"ro-RO\": _temp24,\n \"ru-RU\": _temp25,\n \"sk-SK\": _temp26,\n \"sl-SI\": _temp27,\n \"sr-SP\": _temp28,\n \"sv-SE\": _temp29,\n \"tr-TR\": _temp30,\n \"uk-UA\": _temp31,\n \"zh-CN\": _temp32,\n \"zh-TW\": _temp33\n}","{\n \"moreActions\": \"المزيد من الإجراءات\",\n \"unavailable\": \"Unavailable\"\n}\n","{\n \"moreActions\": \"Повече действия\"\n}\n","{\n \"moreActions\": \"Další akce\"\n}\n","{\n \"moreActions\": \"Flere handlinger\"\n}\n","{\n \"moreActions\": \"Mehr Aktionen\"\n}\n","{\n \"moreActions\": \"Περισσότερες ενέργειες\"\n}\n","{\n \"moreActions\": \"More actions\",\n \"unavailable\": \"Unavailable\"\n}\n","{\n \"moreActions\": \"Más acciones\"\n}\n","{\n \"moreActions\": \"Veel toiminguid\"\n}\n","{\n \"moreActions\": \"Lisää toimintoja\"\n}\n","{\n \"moreActions\": \"Autres actions\"\n}\n","{\n \"moreActions\": \"פעולות נוספות\"\n}\n","{\n \"moreActions\": \"Dodatne radnje\"\n}\n","{\n \"moreActions\": \"További lehetőségek\"\n}\n","{\n \"moreActions\": \"Altre azioni\"\n}\n","{\n \"moreActions\": \"その他のアクション\"\n}\n","{\n \"moreActions\": \"기타 액션\"\n}\n","{\n \"moreActions\": \"Daugiau veiksmų\"\n}\n","{\n \"moreActions\": \"Citas darbības\"\n}\n","{\n \"moreActions\": \"Flere handlinger\"\n}\n","{\n \"moreActions\": \"Meer handelingen\"\n}\n","{\n \"moreActions\": \"Więcej akcji\"\n}\n","{\n \"moreActions\": \"Mais ações\"\n}\n","{\n \"moreActions\": \"Mais ações\"\n}\n","{\n \"moreActions\": \"Mai multe acțiuni\"\n}\n","{\n \"moreActions\": \"Дополнительные действия\"\n}\n","{\n \"moreActions\": \"Ďalšie akcie\"\n}\n","{\n \"moreActions\": \"Več možnosti\"\n}\n","{\n \"moreActions\": \"Dodatne radnje\"\n}\n","{\n \"moreActions\": \"Fler åtgärder\"\n}\n","{\n \"moreActions\": \"Daha fazla eylem\"\n}\n","{\n \"moreActions\": \"Більше дій\"\n}\n","{\n \"moreActions\": \"更多操作\"\n}\n","{\n \"moreActions\": \"更多動作\"\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames} from '@react-spectrum/utils';\nimport {getChildNodes} from '@react-stately/collections';\nimport {MenuItem} from './MenuItem';\nimport {Node} from '@react-types/shared';\nimport React, {Fragment, Key} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {TreeState} from '@react-stately/tree';\nimport {useMenuSection} from '@react-aria/menu';\nimport {useSeparator} from '@react-aria/separator';\n\ninterface MenuSectionProps<T> {\n item: Node<T>,\n state: TreeState<T>,\n onAction?: (key: Key) => void\n}\n\n/** @private */\nexport function MenuSection<T>(props: MenuSectionProps<T>) {\n let {item, state, onAction} = props;\n let {itemProps, headingProps, groupProps} = useMenuSection({\n heading: item.rendered,\n 'aria-label': item['aria-label']\n });\n\n let {separatorProps} = useSeparator({\n elementType: 'li'\n });\n\n return (\n <Fragment>\n {item.key !== state.collection.getFirstKey() &&\n <li\n {...separatorProps}\n className={classNames(\n styles,\n 'spectrum-Menu-divider'\n )} />\n }\n <li {...itemProps}>\n {item.rendered &&\n <span\n {...headingProps}\n className={\n classNames(\n styles,\n 'spectrum-Menu-sectionHeading'\n )\n }>\n {item.rendered}\n </span>\n }\n <ul\n {...groupProps}\n className={\n classNames(\n styles,\n 'spectrum-Menu'\n )\n }>\n {[...getChildNodes(item, state.collection)].map(node => {\n let item = (\n <MenuItem\n key={node.key}\n item={node}\n state={state}\n onAction={onAction} />\n );\n\n if (node.wrapper) {\n item = node.wrapper(item);\n }\n\n return item;\n })}\n </ul>\n </li>\n </Fragment>\n );\n}\n","/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ActionButton} from '@react-spectrum/button';\nimport {filterDOMProps} from '@react-aria/utils';\nimport {FocusableRef} from '@react-types/shared';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {Menu} from './Menu';\nimport {MenuTrigger} from './MenuTrigger';\nimport More from '@spectrum-icons/workflow/More';\nimport React, {forwardRef, ReactElement} from 'react';\nimport {SpectrumActionMenuProps} from '@react-types/menu';\nimport {useLocalizedStringFormatter} from '@react-aria/i18n';\nimport {useSlotProps} from '@react-spectrum/utils';\n\nfunction ActionMenu<T extends object>(props: SpectrumActionMenuProps<T>, ref: FocusableRef<HTMLButtonElement>) {\n props = useSlotProps(props, 'actionMenu');\n let stringFormatter = useLocalizedStringFormatter(intlMessages);\n let buttonProps = filterDOMProps(props, {labelable: true});\n if (buttonProps['aria-label'] === undefined) {\n buttonProps['aria-label'] = stringFormatter.format('moreActions');\n }\n\n return (\n <MenuTrigger\n isOpen={props.isOpen}\n defaultOpen={props.defaultOpen}\n onOpenChange={props.onOpenChange}\n align={props.align}\n direction={props.direction}\n shouldFlip={props.shouldFlip}>\n <ActionButton\n ref={ref}\n {...props}\n {...buttonProps}>\n <More />\n </ActionButton>\n <Menu\n children={props.children}\n items={props.items}\n disabledKeys={props.disabledKeys}\n onAction={props.onAction} />\n </MenuTrigger>\n );\n}\n\n/**\n * ActionMenu combines an ActionButton with a Menu for simple \"more actions\" use cases.\n */\nconst _ActionMenu = forwardRef(ActionMenu) as <T>(props: SpectrumActionMenuProps<T> & {ref?: FocusableRef<HTMLButtonElement>}) => ReactElement;\nexport {_ActionMenu as ActionMenu};\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, SlotProvider, useIsMobileDevice} from '@react-spectrum/utils';\nimport helpStyles from '@adobe/spectrum-css-temp/components/contextualhelp/vars.css';\nimport {ItemProps} from '@react-types/shared';\nimport {MenuDialogContext, useMenuStateContext} from './context';\nimport {Modal, Popover} from '@react-spectrum/overlays';\nimport React, {Key, ReactElement, useRef} from 'react';\nimport {useOverlayTriggerState} from '@react-stately/overlays';\n\nfunction MenuDialogTrigger<T>(props: ItemProps<T> & {isUnavailable?: boolean, targetKey: Key}): ReactElement {\n let {isUnavailable} = props;\n\n let {state: menuState} = useMenuStateContext();\n let state = useOverlayTriggerState({isOpen: menuState.expandedKeys.has(props.targetKey), onOpenChange: (val) => {\n if (!val) {\n if (menuState.expandedKeys.has(props.targetKey)) {\n menuState.toggleKey(props.targetKey);\n }\n }\n }});\n let slots = {};\n if (isUnavailable) {\n slots = {\n dialog: {UNSAFE_className: classNames(helpStyles, 'react-spectrum-ContextualHelp-dialog')},\n content: {UNSAFE_className: helpStyles['react-spectrum-ContextualHelp-content']},\n footer: {UNSAFE_className: helpStyles['react-spectrum-ContextualHelp-footer']}\n };\n }\n let [trigger] = React.Children.toArray(props.children);\n let [, content] = props.children as [ReactElement, ReactElement];\n\n let isMobile = useIsMobileDevice();\n let triggerRef = useRef<HTMLLIElement>(null);\n return (\n <>\n <MenuDialogContext.Provider value={{isUnavailable, triggerRef}}>{trigger}</MenuDialogContext.Provider>\n <SlotProvider slots={slots}>\n {\n isMobile ? (\n <Modal state={state} isDismissable>\n {content}\n </Modal>\n ) : (\n <Popover state={state} triggerRef={triggerRef} placement=\"end top\" hideArrow offset={-10} isNonModal shouldContainFocus={false}>{content}</Popover>\n )\n }\n </SlotProvider>\n </>\n );\n}\n\nMenuDialogTrigger.getCollectionNode = function* getCollectionNode<T>(props: ItemProps<T>) {\n let [trigger] = React.Children.toArray(props.children) as ReactElement[];\n let [, content] = props.children as [ReactElement, ReactElement];\n\n yield {\n element: React.cloneElement(trigger, {...trigger.props, hasChildItems: true}),\n wrapper: (element) => (\n <MenuDialogTrigger key={element.key} targetKey={element.key} {...props}>\n {element}\n {content}\n </MenuDialogTrigger>\n )\n };\n};\n\nlet _Item = MenuDialogTrigger as <T>(props: ItemProps<T> & {isUnavailable?: boolean}) => JSX.Element;\nexport {_Item as MenuDialogTrigger};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n"],"names":[],"version":3,"file":"module.js.map"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React, { ReactElement } from "react";
2
2
  import { SpectrumMenuTriggerProps, SpectrumMenuProps, SpectrumActionMenuProps } from "@react-types/menu";
3
- import { DOMRef, FocusableRef } from "@react-types/shared";
3
+ import { DOMRef, FocusableRef, ItemProps } from "@react-types/shared";
4
4
  /**
5
5
  * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,
6
6
  * linking the Menu's open state with the trigger's press state.
@@ -18,6 +18,9 @@ export const Menu: <T>(props: SpectrumMenuProps<T> & {
18
18
  export const ActionMenu: <T>(props: SpectrumActionMenuProps<T> & {
19
19
  ref?: FocusableRef<HTMLButtonElement>;
20
20
  }) => ReactElement;
21
+ export let MenuDialogTrigger: <T>(props: ItemProps<T> & {
22
+ isUnavailable?: boolean;
23
+ }) => JSX.Element;
21
24
  export { Item, Section } from '@react-stately/collections';
22
25
  export type { SpectrumMenuTriggerProps } from '@react-types/menu';
23
26
  export type { SpectrumActionMenuProps, SpectrumMenuProps } from '@react-types/menu';
@@ -1 +1 @@
1
- {"mappings":";;;AC2GA;;;GAGG;AACH,OAAA,IAAI,oJAAsC,CAAC;AGlC3C;;GAEG;AAGH,OAAA,MAAM;UAA2E,OAAO,gBAAgB,CAAC;MAAM,YAAY,CAAC;AC1B5H;;GAEG;AACH,OAAA,MAAM;UAAuF,aAAa,iBAAiB,CAAC;MAAM,YAAY,CAAC;AC1C/I,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,4BAA4B,CAAC;AACzD,YAAY,EAAC,wBAAwB,EAAC,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAC,uBAAuB,EAAE,iBAAiB,EAAC,MAAM,mBAAmB,CAAC","sources":["packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/context.ts","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/MenuTrigger.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/MenuItem.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/MenuSection.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/Menu.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/ActionMenu.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/index.ts","packages/@react-spectrum/menu/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,"/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {MenuTrigger} from './MenuTrigger';\nexport {Menu} from './Menu';\nexport {ActionMenu} from './ActionMenu';\nexport {Item, Section} from '@react-stately/collections';\nexport type {SpectrumMenuTriggerProps} from '@react-types/menu';\nexport type {SpectrumActionMenuProps, SpectrumMenuProps} from '@react-types/menu';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
1
+ {"mappings":";;;AC4GA;;;GAGG;AACH,OAAA,IAAI,oJAAsC,CAAC;AG9B3C;;GAEG;AAGH,OAAA,MAAM;UAA2E,OAAO,gBAAgB,CAAC;MAAM,YAAY,CAAC;AC/B5H;;GAEG;AACH,OAAA,MAAM;UAAuF,aAAa,iBAAiB,CAAC;MAAM,YAAY,CAAC;ACkB/I,OAAA,IAAI;oBAAwE,OAAO;MAAM,WAAW,CAAC;AC3DrG,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,4BAA4B,CAAC;AACzD,YAAY,EAAC,wBAAwB,EAAC,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAC,uBAAuB,EAAE,iBAAiB,EAAC,MAAM,mBAAmB,CAAC","sources":["packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/context.ts","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/MenuTrigger.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/MenuItem.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/MenuSection.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/Menu.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/ActionMenu.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/MenuDialogTrigger.tsx","packages/@react-spectrum/menu/src/packages/@react-spectrum/menu/src/index.ts","packages/@react-spectrum/menu/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,"/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {MenuTrigger} from './MenuTrigger';\nexport {Menu} from './Menu';\nexport {ActionMenu} from './ActionMenu';\nexport {MenuDialogTrigger} from './MenuDialogTrigger';\nexport {Item, Section} from '@react-stately/collections';\nexport type {SpectrumMenuTriggerProps} from '@react-types/menu';\nexport type {SpectrumActionMenuProps, SpectrumMenuProps} from '@react-types/menu';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-spectrum/menu",
3
- "version": "3.11.1-nightly.3856+bd89c6aba",
3
+ "version": "3.11.1-nightly.3864+5a3315f56",
4
4
  "description": "Spectrum UI components in React",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
@@ -36,35 +36,36 @@
36
36
  "url": "https://github.com/adobe/react-spectrum"
37
37
  },
38
38
  "dependencies": {
39
- "@react-aria/focus": "3.0.0-nightly.2154+bd89c6aba",
40
- "@react-aria/i18n": "3.0.0-nightly.2154+bd89c6aba",
41
- "@react-aria/interactions": "3.0.0-nightly.2154+bd89c6aba",
42
- "@react-aria/menu": "3.9.1-nightly.3856+bd89c6aba",
43
- "@react-aria/overlays": "3.0.0-nightly.2154+bd89c6aba",
44
- "@react-aria/selection": "3.0.0-nightly.2154+bd89c6aba",
45
- "@react-aria/separator": "3.0.0-nightly.2154+bd89c6aba",
46
- "@react-aria/utils": "3.0.0-nightly.2154+bd89c6aba",
47
- "@react-aria/virtualizer": "3.8.1-nightly.3856+bd89c6aba",
48
- "@react-spectrum/button": "3.0.0-nightly.2154+bd89c6aba",
49
- "@react-spectrum/checkbox": "3.0.0-nightly.2154+bd89c6aba",
50
- "@react-spectrum/divider": "3.0.0-nightly.2154+bd89c6aba",
51
- "@react-spectrum/layout": "3.5.2-nightly.3856+bd89c6aba",
52
- "@react-spectrum/overlays": "3.0.0-nightly.2154+bd89c6aba",
53
- "@react-spectrum/text": "3.4.2-nightly.3856+bd89c6aba",
54
- "@react-spectrum/utils": "3.0.0-nightly.2154+bd89c6aba",
55
- "@react-stately/collections": "3.0.0-nightly.2154+bd89c6aba",
56
- "@react-stately/menu": "3.5.2-nightly.3856+bd89c6aba",
57
- "@react-stately/tree": "3.0.0-nightly.2154+bd89c6aba",
58
- "@react-stately/utils": "3.0.0-nightly.2154+bd89c6aba",
59
- "@react-types/menu": "3.9.1-nightly.3856+bd89c6aba",
60
- "@react-types/overlays": "3.7.2-nightly.3856+bd89c6aba",
61
- "@react-types/shared": "3.0.0-nightly.2154+bd89c6aba",
62
- "@spectrum-icons/ui": "3.0.0-nightly.2154+bd89c6aba",
63
- "@spectrum-icons/workflow": "3.0.0-nightly.2154+bd89c6aba",
39
+ "@react-aria/focus": "3.0.0-nightly.2162+5a3315f56",
40
+ "@react-aria/i18n": "3.0.0-nightly.2162+5a3315f56",
41
+ "@react-aria/interactions": "3.0.0-nightly.2162+5a3315f56",
42
+ "@react-aria/menu": "3.9.1-nightly.3864+5a3315f56",
43
+ "@react-aria/overlays": "3.0.0-nightly.2162+5a3315f56",
44
+ "@react-aria/selection": "3.0.0-nightly.2162+5a3315f56",
45
+ "@react-aria/separator": "3.0.0-nightly.2162+5a3315f56",
46
+ "@react-aria/utils": "3.0.0-nightly.2162+5a3315f56",
47
+ "@react-aria/virtualizer": "3.8.1-nightly.3864+5a3315f56",
48
+ "@react-spectrum/button": "3.0.0-nightly.2162+5a3315f56",
49
+ "@react-spectrum/checkbox": "3.0.0-nightly.2162+5a3315f56",
50
+ "@react-spectrum/divider": "3.0.0-nightly.2162+5a3315f56",
51
+ "@react-spectrum/layout": "3.5.2-nightly.3864+5a3315f56",
52
+ "@react-spectrum/overlays": "3.0.0-nightly.2162+5a3315f56",
53
+ "@react-spectrum/text": "3.4.2-nightly.3864+5a3315f56",
54
+ "@react-spectrum/utils": "3.0.0-nightly.2162+5a3315f56",
55
+ "@react-stately/collections": "3.0.0-nightly.2162+5a3315f56",
56
+ "@react-stately/menu": "3.5.2-nightly.3864+5a3315f56",
57
+ "@react-stately/overlays": "3.5.2-nightly.3864+5a3315f56",
58
+ "@react-stately/tree": "3.0.0-nightly.2162+5a3315f56",
59
+ "@react-stately/utils": "3.0.0-nightly.2162+5a3315f56",
60
+ "@react-types/menu": "3.9.1-nightly.3864+5a3315f56",
61
+ "@react-types/overlays": "3.7.2-nightly.3864+5a3315f56",
62
+ "@react-types/shared": "3.0.0-nightly.2162+5a3315f56",
63
+ "@spectrum-icons/ui": "3.0.0-nightly.2162+5a3315f56",
64
+ "@spectrum-icons/workflow": "3.0.0-nightly.2162+5a3315f56",
64
65
  "@swc/helpers": "^0.4.14"
65
66
  },
66
67
  "devDependencies": {
67
- "@adobe/spectrum-css-temp": "3.0.0-nightly.2154+bd89c6aba"
68
+ "@adobe/spectrum-css-temp": "3.0.0-nightly.2162+5a3315f56"
68
69
  },
69
70
  "peerDependencies": {
70
71
  "@react-spectrum/provider": "^3.0.0",
@@ -74,5 +75,5 @@
74
75
  "publishConfig": {
75
76
  "access": "public"
76
77
  },
77
- "gitHead": "bd89c6aba9dd1bf763a5166d37524ab6fb612509"
78
+ "gitHead": "5a3315f560071087cacf846bd2a86d8f47692446"
78
79
  }
package/src/Menu.tsx CHANGED
@@ -12,7 +12,8 @@
12
12
 
13
13
  import {classNames, useDOMRef, useStyleProps} from '@react-spectrum/utils';
14
14
  import {DOMRef} from '@react-types/shared';
15
- import {MenuContext} from './context';
15
+ import {FocusScope} from '@react-aria/focus';
16
+ import {MenuContext, MenuStateContext} from './context';
16
17
  import {MenuItem} from './MenuItem';
17
18
  import {MenuSection} from './MenuSection';
18
19
  import {mergeProps, useSyncRef} from '@react-aria/utils';
@@ -35,43 +36,47 @@ function Menu<T extends object>(props: SpectrumMenuProps<T>, ref: DOMRef<HTMLULi
35
36
  useSyncRef(contextProps, domRef);
36
37
 
37
38
  return (
38
- <ul
39
- {...menuProps}
40
- {...styleProps}
41
- ref={domRef}
42
- className={
43
- classNames(
44
- styles,
45
- 'spectrum-Menu',
46
- styleProps.className
47
- )
48
- }>
49
- {[...state.collection].map(item => {
50
- if (item.type === 'section') {
51
- return (
52
- <MenuSection
53
- key={item.key}
54
- item={item}
55
- state={state}
56
- onAction={completeProps.onAction} />
57
- );
58
- }
39
+ <MenuStateContext.Provider value={{state}}>
40
+ <FocusScope contain={state.expandedKeys.size > 0}>
41
+ <ul
42
+ {...menuProps}
43
+ {...styleProps}
44
+ ref={domRef}
45
+ className={
46
+ classNames(
47
+ styles,
48
+ 'spectrum-Menu',
49
+ styleProps.className
50
+ )
51
+ }>
52
+ {[...state.collection].map(item => {
53
+ if (item.type === 'section') {
54
+ return (
55
+ <MenuSection
56
+ key={item.key}
57
+ item={item}
58
+ state={state}
59
+ onAction={completeProps.onAction} />
60
+ );
61
+ }
59
62
 
60
- let menuItem = (
61
- <MenuItem
62
- key={item.key}
63
- item={item}
64
- state={state}
65
- onAction={completeProps.onAction} />
66
- );
63
+ let menuItem = (
64
+ <MenuItem
65
+ key={item.key}
66
+ item={item}
67
+ state={state}
68
+ onAction={completeProps.onAction} />
69
+ );
67
70
 
68
- if (item.wrapper) {
69
- menuItem = item.wrapper(menuItem);
70
- }
71
+ if (item.wrapper) {
72
+ menuItem = item.wrapper(menuItem);
73
+ }
71
74
 
72
- return menuItem;
73
- })}
74
- </ul>
75
+ return menuItem;
76
+ })}
77
+ </ul>
78
+ </FocusScope>
79
+ </MenuStateContext.Provider>
75
80
  );
76
81
  }
77
82
 
@@ -0,0 +1,79 @@
1
+ /*
2
+ * Copyright 2023 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ import {classNames, SlotProvider, useIsMobileDevice} from '@react-spectrum/utils';
14
+ import helpStyles from '@adobe/spectrum-css-temp/components/contextualhelp/vars.css';
15
+ import {ItemProps} from '@react-types/shared';
16
+ import {MenuDialogContext, useMenuStateContext} from './context';
17
+ import {Modal, Popover} from '@react-spectrum/overlays';
18
+ import React, {Key, ReactElement, useRef} from 'react';
19
+ import {useOverlayTriggerState} from '@react-stately/overlays';
20
+
21
+ function MenuDialogTrigger<T>(props: ItemProps<T> & {isUnavailable?: boolean, targetKey: Key}): ReactElement {
22
+ let {isUnavailable} = props;
23
+
24
+ let {state: menuState} = useMenuStateContext();
25
+ let state = useOverlayTriggerState({isOpen: menuState.expandedKeys.has(props.targetKey), onOpenChange: (val) => {
26
+ if (!val) {
27
+ if (menuState.expandedKeys.has(props.targetKey)) {
28
+ menuState.toggleKey(props.targetKey);
29
+ }
30
+ }
31
+ }});
32
+ let slots = {};
33
+ if (isUnavailable) {
34
+ slots = {
35
+ dialog: {UNSAFE_className: classNames(helpStyles, 'react-spectrum-ContextualHelp-dialog')},
36
+ content: {UNSAFE_className: helpStyles['react-spectrum-ContextualHelp-content']},
37
+ footer: {UNSAFE_className: helpStyles['react-spectrum-ContextualHelp-footer']}
38
+ };
39
+ }
40
+ let [trigger] = React.Children.toArray(props.children);
41
+ let [, content] = props.children as [ReactElement, ReactElement];
42
+
43
+ let isMobile = useIsMobileDevice();
44
+ let triggerRef = useRef<HTMLLIElement>(null);
45
+ return (
46
+ <>
47
+ <MenuDialogContext.Provider value={{isUnavailable, triggerRef}}>{trigger}</MenuDialogContext.Provider>
48
+ <SlotProvider slots={slots}>
49
+ {
50
+ isMobile ? (
51
+ <Modal state={state} isDismissable>
52
+ {content}
53
+ </Modal>
54
+ ) : (
55
+ <Popover state={state} triggerRef={triggerRef} placement="end top" hideArrow offset={-10} isNonModal shouldContainFocus={false}>{content}</Popover>
56
+ )
57
+ }
58
+ </SlotProvider>
59
+ </>
60
+ );
61
+ }
62
+
63
+ MenuDialogTrigger.getCollectionNode = function* getCollectionNode<T>(props: ItemProps<T>) {
64
+ let [trigger] = React.Children.toArray(props.children) as ReactElement[];
65
+ let [, content] = props.children as [ReactElement, ReactElement];
66
+
67
+ yield {
68
+ element: React.cloneElement(trigger, {...trigger.props, hasChildItems: true}),
69
+ wrapper: (element) => (
70
+ <MenuDialogTrigger key={element.key} targetKey={element.key} {...props}>
71
+ {element}
72
+ {content}
73
+ </MenuDialogTrigger>
74
+ )
75
+ };
76
+ };
77
+
78
+ let _Item = MenuDialogTrigger as <T>(props: ItemProps<T> & {isUnavailable?: boolean}) => JSX.Element;
79
+ export {_Item as MenuDialogTrigger};
package/src/MenuItem.tsx CHANGED
@@ -12,16 +12,19 @@
12
12
 
13
13
  import CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';
14
14
  import {classNames, ClearSlots, SlotProvider} from '@react-spectrum/utils';
15
+ import {DOMAttributes, Node} from '@react-types/shared';
15
16
  import {FocusRing} from '@react-aria/focus';
16
17
  import {Grid} from '@react-spectrum/layout';
17
- import {mergeProps} from '@react-aria/utils';
18
- import {Node} from '@react-types/shared';
18
+ import InfoOutline from '@spectrum-icons/workflow/InfoOutline';
19
+ // @ts-ignore
20
+ import intlMessages from '../intl/*.json';
21
+ import {mergeProps, useSlotId} from '@react-aria/utils';
19
22
  import React, {Key, useRef} from 'react';
20
23
  import styles from '@adobe/spectrum-css-temp/components/menu/vars.css';
21
24
  import {Text} from '@react-spectrum/text';
22
25
  import {TreeState} from '@react-stately/tree';
23
- import {useHover} from '@react-aria/interactions';
24
- import {useMenuContext} from './context';
26
+ import {useLocalizedStringFormatter} from '@react-aria/i18n';
27
+ import {useMenuContext, useMenuDialogContext} from './context';
25
28
  import {useMenuItem} from '@react-aria/menu';
26
29
 
27
30
  interface MenuItemProps<T> {
@@ -39,6 +42,15 @@ export function MenuItem<T>(props: MenuItemProps<T>) {
39
42
  isVirtualized,
40
43
  onAction
41
44
  } = props;
45
+ let stringFormatter = useLocalizedStringFormatter(intlMessages);
46
+ let menuDialogContext = useMenuDialogContext();
47
+ let {triggerRef} = menuDialogContext || {};
48
+ let isMenuDialogTrigger = !!menuDialogContext;
49
+ let isUnavailable = false;
50
+
51
+ if (isMenuDialogTrigger) {
52
+ isUnavailable = menuDialogContext.isUnavailable;
53
+ }
42
54
 
43
55
  let {
44
56
  onClose,
@@ -53,8 +65,17 @@ export function MenuItem<T>(props: MenuItemProps<T>) {
53
65
  let isSelected = state.selectionManager.isSelected(key);
54
66
  let isDisabled = state.disabledKeys.has(key);
55
67
 
56
- let ref = useRef<HTMLLIElement>();
57
- let {menuItemProps, labelProps, descriptionProps, keyboardShortcutProps} = useMenuItem(
68
+ let ref = useRef<HTMLLIElement>(null);
69
+ if (triggerRef) {
70
+ ref = triggerRef;
71
+ }
72
+
73
+ let {
74
+ menuItemProps,
75
+ labelProps,
76
+ descriptionProps,
77
+ keyboardShortcutProps
78
+ } = useMenuItem(
58
79
  {
59
80
  isSelected,
60
81
  isDisabled,
@@ -63,12 +84,18 @@ export function MenuItem<T>(props: MenuItemProps<T>) {
63
84
  onClose,
64
85
  closeOnSelect,
65
86
  isVirtualized,
66
- onAction
87
+ onAction,
88
+ 'aria-haspopup': isMenuDialogTrigger ? 'dialog' : undefined
67
89
  },
68
90
  state,
69
91
  ref
70
92
  );
71
- let {hoverProps, isHovered} = useHover({isDisabled});
93
+ let endId = useSlotId();
94
+ let endProps: DOMAttributes = {};
95
+ if (endId) {
96
+ endProps.id = endId;
97
+ menuItemProps['aria-describedby'] = menuItemProps['aria-describedby'] + ' ' + endId;
98
+ }
72
99
 
73
100
  let contents = typeof rendered === 'string'
74
101
  ? <Text>{rendered}</Text>
@@ -77,7 +104,7 @@ export function MenuItem<T>(props: MenuItemProps<T>) {
77
104
  return (
78
105
  <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>
79
106
  <li
80
- {...mergeProps(menuItemProps, hoverProps)}
107
+ {...mergeProps(menuItemProps)}
81
108
  ref={ref}
82
109
  className={classNames(
83
110
  styles,
@@ -86,7 +113,7 @@ export function MenuItem<T>(props: MenuItemProps<T>) {
86
113
  'is-disabled': isDisabled,
87
114
  'is-selected': isSelected,
88
115
  'is-selectable': state.selectionManager.selectionMode !== 'none',
89
- 'is-hovered': isHovered
116
+ 'is-open': state.expandedKeys.has(key)
90
117
  }
91
118
  )}>
92
119
  <Grid
@@ -100,7 +127,7 @@ export function MenuItem<T>(props: MenuItemProps<T>) {
100
127
  <SlotProvider
101
128
  slots={{
102
129
  text: {UNSAFE_className: styles['spectrum-Menu-itemLabel'], ...labelProps},
103
- end: {UNSAFE_className: styles['spectrum-Menu-end'], ...descriptionProps},
130
+ end: {UNSAFE_className: styles['spectrum-Menu-end'], ...endProps},
104
131
  icon: {UNSAFE_className: styles['spectrum-Menu-icon'], size: 'S'},
105
132
  description: {UNSAFE_className: styles['spectrum-Menu-description'], ...descriptionProps},
106
133
  keyboard: {UNSAFE_className: styles['spectrum-Menu-keyboard'], ...keyboardShortcutProps}
@@ -110,12 +137,15 @@ export function MenuItem<T>(props: MenuItemProps<T>) {
110
137
  <CheckmarkMedium
111
138
  slot="checkmark"
112
139
  UNSAFE_className={
113
- classNames(
114
- styles,
115
- 'spectrum-Menu-checkmark'
116
- )
117
- } />
118
- }
140
+ classNames(
141
+ styles,
142
+ 'spectrum-Menu-checkmark'
143
+ )
144
+ } />
145
+ }
146
+ {
147
+ isUnavailable && <InfoOutline slot="end" size="XS" alignSelf="center" aria-label={stringFormatter.format('unavailable')} />
148
+ }
119
149
  </SlotProvider>
120
150
  </ClearSlots>
121
151
  </Grid>
@@ -58,6 +58,7 @@ function MenuTrigger(props: SpectrumMenuTriggerProps, ref: DOMRef<HTMLElement>)
58
58
  let isMobile = useIsMobileDevice();
59
59
  let menuContext = {
60
60
  ...menuProps,
61
+ state,
61
62
  ref: menuRef,
62
63
  onClose: state.close,
63
64
  closeOnSelect,