@fluentui/react-menu 9.24.0 → 9.25.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 +45 -2
- package/dist/index.d.ts +130 -8
- package/lib/Menu.js +1 -1
- package/lib/Menu.js.map +1 -1
- package/lib/MenuItemLink.js +1 -1
- package/lib/MenuItemLink.js.map +1 -1
- package/lib/MenuItemRadio.js +1 -1
- package/lib/MenuItemRadio.js.map +1 -1
- package/lib/MenuList.js +1 -1
- package/lib/MenuList.js.map +1 -1
- package/lib/MenuPopover.js +1 -1
- package/lib/MenuPopover.js.map +1 -1
- package/lib/MenuTrigger.js +1 -1
- package/lib/MenuTrigger.js.map +1 -1
- package/lib/components/Menu/Menu.js +0 -1
- package/lib/components/Menu/Menu.js.map +1 -1
- package/lib/components/Menu/Menu.types.js +3 -1
- package/lib/components/Menu/Menu.types.js.map +1 -1
- package/lib/components/Menu/index.js +1 -1
- package/lib/components/Menu/index.js.map +1 -1
- package/lib/components/Menu/useMenu.js +24 -12
- package/lib/components/Menu/useMenu.js.map +1 -1
- package/lib/components/Menu/useMenuContextValues.js +21 -3
- package/lib/components/Menu/useMenuContextValues.js.map +1 -1
- package/lib/components/MenuDivider/renderMenuDivider.js.map +1 -1
- package/lib/components/MenuDivider/useMenuDivider.js +0 -1
- package/lib/components/MenuDivider/useMenuDivider.js.map +1 -1
- package/lib/components/MenuDivider/useMenuDividerStyles.styles.js +1 -0
- package/lib/components/MenuDivider/useMenuDividerStyles.styles.js.map +1 -1
- package/lib/components/MenuDivider/useMenuDividerStyles.styles.raw.js +1 -0
- package/lib/components/MenuDivider/useMenuDividerStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuGroup/renderMenuGroup.js.map +1 -1
- package/lib/components/MenuGroup/useMenuGroup.js +0 -1
- package/lib/components/MenuGroup/useMenuGroup.js.map +1 -1
- package/lib/components/MenuGroupHeader/renderMenuGroupHeader.js.map +1 -1
- package/lib/components/MenuGroupHeader/useMenuGroupHeader.js +0 -1
- package/lib/components/MenuGroupHeader/useMenuGroupHeader.js.map +1 -1
- package/lib/components/MenuGroupHeader/useMenuGroupHeaderStyles.styles.js +1 -0
- package/lib/components/MenuGroupHeader/useMenuGroupHeaderStyles.styles.js.map +1 -1
- package/lib/components/MenuGroupHeader/useMenuGroupHeaderStyles.styles.raw.js +1 -0
- package/lib/components/MenuGroupHeader/useMenuGroupHeaderStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuItem/MenuItem.types.js.map +1 -1
- package/lib/components/MenuItem/index.js +2 -1
- package/lib/components/MenuItem/index.js.map +1 -1
- package/lib/components/MenuItem/useCharacterSearch.js +1 -1
- package/lib/components/MenuItem/useCharacterSearch.js.map +1 -1
- package/lib/components/MenuItem/useMenuItem.js +1 -145
- package/lib/components/MenuItem/useMenuItem.js.map +1 -1
- package/lib/components/MenuItem/useMenuItemBase.js +147 -0
- package/lib/components/MenuItem/useMenuItemBase.js.map +1 -0
- package/lib/components/MenuItem/useMenuItemStyles.styles.js +27 -6
- package/lib/components/MenuItem/useMenuItemStyles.styles.js.map +1 -1
- package/lib/components/MenuItem/useMenuItemStyles.styles.raw.js +28 -1
- package/lib/components/MenuItem/useMenuItemStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuItemCheckbox/useMenuItemCheckbox.js +1 -3
- package/lib/components/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
- package/lib/components/MenuItemCheckbox/useMenuItemCheckboxStyles.styles.js +6 -0
- package/lib/components/MenuItemCheckbox/useMenuItemCheckboxStyles.styles.js.map +1 -1
- package/lib/components/MenuItemCheckbox/useMenuItemCheckboxStyles.styles.raw.js +6 -0
- package/lib/components/MenuItemCheckbox/useMenuItemCheckboxStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuItemLink/MenuItemLink.types.js.map +1 -1
- package/lib/components/MenuItemLink/index.js +1 -1
- package/lib/components/MenuItemLink/index.js.map +1 -1
- package/lib/components/MenuItemLink/useMenuItemLink.js +30 -1
- package/lib/components/MenuItemLink/useMenuItemLink.js.map +1 -1
- package/lib/components/MenuItemLink/useMenuItemLinkStyles.styles.js +5 -0
- package/lib/components/MenuItemLink/useMenuItemLinkStyles.styles.js.map +1 -1
- package/lib/components/MenuItemLink/useMenuItemLinkStyles.styles.raw.js +5 -0
- package/lib/components/MenuItemLink/useMenuItemLinkStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuItemRadio/useMenuItemRadio.js +1 -3
- package/lib/components/MenuItemRadio/useMenuItemRadio.js.map +1 -1
- package/lib/components/MenuItemRadio/useMenuItemRadioStyles.styles.js +6 -0
- package/lib/components/MenuItemRadio/useMenuItemRadioStyles.styles.js.map +1 -1
- package/lib/components/MenuItemRadio/useMenuItemRadioStyles.styles.raw.js +6 -0
- package/lib/components/MenuItemRadio/useMenuItemRadioStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuItemSwitch/MenuItemSwitch.types.js.map +1 -1
- package/lib/components/MenuItemSwitch/useMenuItemSwitch.js +0 -1
- package/lib/components/MenuItemSwitch/useMenuItemSwitch.js.map +1 -1
- package/lib/components/MenuItemSwitch/useMenuItemSwitchStyles.styles.js +7 -0
- package/lib/components/MenuItemSwitch/useMenuItemSwitchStyles.styles.js.map +1 -1
- package/lib/components/MenuItemSwitch/useMenuItemSwitchStyles.styles.raw.js +7 -0
- package/lib/components/MenuItemSwitch/useMenuItemSwitchStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuList/MenuList.types.js +3 -1
- package/lib/components/MenuList/MenuList.types.js.map +1 -1
- package/lib/components/MenuList/index.js +1 -1
- package/lib/components/MenuList/index.js.map +1 -1
- package/lib/components/MenuList/renderMenuList.js.map +1 -1
- package/lib/components/MenuList/useMenuList.js +115 -65
- package/lib/components/MenuList/useMenuList.js.map +1 -1
- package/lib/components/MenuList/useMenuListContextValues.js +11 -3
- package/lib/components/MenuList/useMenuListContextValues.js.map +1 -1
- package/lib/components/MenuList/useMenuListStyles.styles.js +1 -0
- package/lib/components/MenuList/useMenuListStyles.styles.js.map +1 -1
- package/lib/components/MenuList/useMenuListStyles.styles.raw.js +1 -0
- package/lib/components/MenuList/useMenuListStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuPopover/MenuPopover.types.js +3 -1
- package/lib/components/MenuPopover/MenuPopover.types.js.map +1 -1
- package/lib/components/MenuPopover/index.js +1 -1
- package/lib/components/MenuPopover/index.js.map +1 -1
- package/lib/components/MenuPopover/renderMenuPopover.js.map +1 -1
- package/lib/components/MenuPopover/useMenuPopover.js +27 -7
- package/lib/components/MenuPopover/useMenuPopover.js.map +1 -1
- package/lib/components/MenuPopover/useMenuPopoverStyles.styles.js +1 -0
- package/lib/components/MenuPopover/useMenuPopoverStyles.styles.js.map +1 -1
- package/lib/components/MenuPopover/useMenuPopoverStyles.styles.raw.js +1 -0
- package/lib/components/MenuPopover/useMenuPopoverStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuSplitGroup/MenuSplitGroup.types.js.map +1 -1
- package/lib/components/MenuSplitGroup/useMenuSplitGroup.js +2 -1
- package/lib/components/MenuSplitGroup/useMenuSplitGroup.js.map +1 -1
- package/lib/components/MenuSplitGroup/useMenuSplitGroupContextValues.js.map +1 -1
- package/lib/components/MenuSplitGroup/useMenuSplitGroupStyles.styles.js +1 -0
- package/lib/components/MenuSplitGroup/useMenuSplitGroupStyles.styles.js.map +1 -1
- package/lib/components/MenuSplitGroup/useMenuSplitGroupStyles.styles.raw.js +1 -0
- package/lib/components/MenuSplitGroup/useMenuSplitGroupStyles.styles.raw.js.map +1 -1
- package/lib/components/MenuTrigger/MenuTrigger.js +0 -1
- package/lib/components/MenuTrigger/MenuTrigger.js.map +1 -1
- package/lib/components/MenuTrigger/MenuTrigger.types.js +1 -1
- package/lib/components/MenuTrigger/MenuTrigger.types.js.map +1 -1
- package/lib/components/MenuTrigger/index.js +1 -1
- package/lib/components/MenuTrigger/index.js.map +1 -1
- package/lib/components/MenuTrigger/useMenuTrigger.js +39 -12
- package/lib/components/MenuTrigger/useMenuTrigger.js.map +1 -1
- package/lib/contexts/menuContext.js +0 -1
- package/lib/contexts/menuContext.js.map +1 -1
- package/lib/contexts/menuListContext.js +0 -1
- package/lib/contexts/menuListContext.js.map +1 -1
- package/lib/index.js +9 -14
- package/lib/index.js.map +1 -1
- package/lib/selectable/types.js +3 -1
- package/lib/selectable/types.js.map +1 -1
- package/lib/selectable/useCheckmarkStyles.styles.js +1 -0
- package/lib/selectable/useCheckmarkStyles.styles.js.map +1 -1
- package/lib/selectable/useCheckmarkStyles.styles.raw.js +1 -0
- package/lib/selectable/useCheckmarkStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/Menu.js +3 -0
- package/lib-commonjs/Menu.js.map +1 -1
- package/lib-commonjs/MenuItemLink.js +3 -0
- package/lib-commonjs/MenuItemLink.js.map +1 -1
- package/lib-commonjs/MenuItemRadio.js.map +1 -1
- package/lib-commonjs/MenuList.js +3 -0
- package/lib-commonjs/MenuList.js.map +1 -1
- package/lib-commonjs/MenuPopover.js +3 -0
- package/lib-commonjs/MenuPopover.js.map +1 -1
- package/lib-commonjs/MenuTrigger.js +3 -0
- package/lib-commonjs/MenuTrigger.js.map +1 -1
- package/lib-commonjs/components/Menu/Menu.js +0 -2
- package/lib-commonjs/components/Menu/Menu.js.map +1 -1
- package/lib-commonjs/components/Menu/Menu.types.js +3 -3
- package/lib-commonjs/components/Menu/Menu.types.js.map +1 -1
- package/lib-commonjs/components/Menu/index.js +3 -0
- package/lib-commonjs/components/Menu/index.js.map +1 -1
- package/lib-commonjs/components/Menu/useMenu.js +30 -15
- package/lib-commonjs/components/Menu/useMenu.js.map +1 -1
- package/lib-commonjs/components/Menu/useMenuContextValues.js +22 -3
- package/lib-commonjs/components/Menu/useMenuContextValues.js.map +1 -1
- package/lib-commonjs/components/MenuDivider/renderMenuDivider.js.map +1 -1
- package/lib-commonjs/components/MenuDivider/useMenuDivider.js +0 -2
- package/lib-commonjs/components/MenuDivider/useMenuDivider.js.map +1 -1
- package/lib-commonjs/components/MenuDivider/useMenuDividerStyles.styles.js +1 -0
- package/lib-commonjs/components/MenuDivider/useMenuDividerStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuDivider/useMenuDividerStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/MenuDivider/useMenuDividerStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuGroup/renderMenuGroup.js.map +1 -1
- package/lib-commonjs/components/MenuGroup/useMenuGroup.js +0 -2
- package/lib-commonjs/components/MenuGroup/useMenuGroup.js.map +1 -1
- package/lib-commonjs/components/MenuGroupHeader/renderMenuGroupHeader.js.map +1 -1
- package/lib-commonjs/components/MenuGroupHeader/useMenuGroupHeader.js +0 -2
- package/lib-commonjs/components/MenuGroupHeader/useMenuGroupHeader.js.map +1 -1
- package/lib-commonjs/components/MenuGroupHeader/useMenuGroupHeaderStyles.styles.js +1 -0
- package/lib-commonjs/components/MenuGroupHeader/useMenuGroupHeaderStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuGroupHeader/useMenuGroupHeaderStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/MenuGroupHeader/useMenuGroupHeaderStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuItem/MenuItem.types.js.map +1 -1
- package/lib-commonjs/components/MenuItem/index.js +2 -1
- package/lib-commonjs/components/MenuItem/index.js.map +1 -1
- package/lib-commonjs/components/MenuItem/useCharacterSearch.js +1 -2
- package/lib-commonjs/components/MenuItem/useCharacterSearch.js.map +1 -1
- package/lib-commonjs/components/MenuItem/useMenuItem.js +5 -152
- package/lib-commonjs/components/MenuItem/useMenuItem.js.map +1 -1
- package/lib-commonjs/components/MenuItem/useMenuItemBase.js +155 -0
- package/lib-commonjs/components/MenuItem/useMenuItemBase.js.map +1 -0
- package/lib-commonjs/components/MenuItem/useMenuItemStyles.styles.js +51 -16
- package/lib-commonjs/components/MenuItem/useMenuItemStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuItem/useMenuItemStyles.styles.raw.js +28 -1
- package/lib-commonjs/components/MenuItem/useMenuItemStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuItemCheckbox/useMenuItemCheckbox.js +2 -2
- package/lib-commonjs/components/MenuItemCheckbox/useMenuItemCheckbox.js.map +1 -1
- package/lib-commonjs/components/MenuItemCheckbox/useMenuItemCheckboxStyles.styles.js +6 -0
- package/lib-commonjs/components/MenuItemCheckbox/useMenuItemCheckboxStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuItemCheckbox/useMenuItemCheckboxStyles.styles.raw.js +6 -0
- package/lib-commonjs/components/MenuItemCheckbox/useMenuItemCheckboxStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuItemLink/MenuItemLink.types.js.map +1 -1
- package/lib-commonjs/components/MenuItemLink/index.js +3 -0
- package/lib-commonjs/components/MenuItemLink/index.js.map +1 -1
- package/lib-commonjs/components/MenuItemLink/useMenuItemLink.js +35 -5
- package/lib-commonjs/components/MenuItemLink/useMenuItemLink.js.map +1 -1
- package/lib-commonjs/components/MenuItemLink/useMenuItemLinkStyles.styles.js +5 -0
- package/lib-commonjs/components/MenuItemLink/useMenuItemLinkStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuItemLink/useMenuItemLinkStyles.styles.raw.js +5 -0
- package/lib-commonjs/components/MenuItemLink/useMenuItemLinkStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuItemRadio/useMenuItemRadio.js +2 -2
- package/lib-commonjs/components/MenuItemRadio/useMenuItemRadio.js.map +1 -1
- package/lib-commonjs/components/MenuItemRadio/useMenuItemRadioStyles.styles.js +6 -0
- package/lib-commonjs/components/MenuItemRadio/useMenuItemRadioStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuItemRadio/useMenuItemRadioStyles.styles.raw.js +6 -0
- package/lib-commonjs/components/MenuItemRadio/useMenuItemRadioStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuItemSwitch/MenuItemSwitch.types.js.map +1 -1
- package/lib-commonjs/components/MenuItemSwitch/useMenuItemSwitch.js.map +1 -1
- package/lib-commonjs/components/MenuItemSwitch/useMenuItemSwitchStyles.styles.js +7 -0
- package/lib-commonjs/components/MenuItemSwitch/useMenuItemSwitchStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuItemSwitch/useMenuItemSwitchStyles.styles.raw.js +7 -0
- package/lib-commonjs/components/MenuItemSwitch/useMenuItemSwitchStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuList/MenuList.types.js +3 -3
- package/lib-commonjs/components/MenuList/MenuList.types.js.map +1 -1
- package/lib-commonjs/components/MenuList/index.js +3 -0
- package/lib-commonjs/components/MenuList/index.js.map +1 -1
- package/lib-commonjs/components/MenuList/renderMenuList.js.map +1 -1
- package/lib-commonjs/components/MenuList/useMenuList.js +108 -67
- package/lib-commonjs/components/MenuList/useMenuList.js.map +1 -1
- package/lib-commonjs/components/MenuList/useMenuListContextValues.js +12 -3
- package/lib-commonjs/components/MenuList/useMenuListContextValues.js.map +1 -1
- package/lib-commonjs/components/MenuList/useMenuListStyles.styles.js +1 -0
- package/lib-commonjs/components/MenuList/useMenuListStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuList/useMenuListStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/MenuList/useMenuListStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuPopover/MenuPopover.types.js +3 -3
- package/lib-commonjs/components/MenuPopover/MenuPopover.types.js.map +1 -1
- package/lib-commonjs/components/MenuPopover/index.js +3 -0
- package/lib-commonjs/components/MenuPopover/index.js.map +1 -1
- package/lib-commonjs/components/MenuPopover/renderMenuPopover.js.map +1 -1
- package/lib-commonjs/components/MenuPopover/useMenuPopover.js +26 -7
- package/lib-commonjs/components/MenuPopover/useMenuPopover.js.map +1 -1
- package/lib-commonjs/components/MenuPopover/useMenuPopoverStyles.styles.js +1 -0
- package/lib-commonjs/components/MenuPopover/useMenuPopoverStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuPopover/useMenuPopoverStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/MenuPopover/useMenuPopoverStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuSplitGroup/MenuSplitGroup.types.js.map +1 -1
- package/lib-commonjs/components/MenuSplitGroup/useMenuSplitGroup.js.map +1 -1
- package/lib-commonjs/components/MenuSplitGroup/useMenuSplitGroupContextValues.js.map +1 -1
- package/lib-commonjs/components/MenuSplitGroup/useMenuSplitGroupStyles.styles.js +1 -0
- package/lib-commonjs/components/MenuSplitGroup/useMenuSplitGroupStyles.styles.js.map +1 -1
- package/lib-commonjs/components/MenuSplitGroup/useMenuSplitGroupStyles.styles.raw.js +1 -0
- package/lib-commonjs/components/MenuSplitGroup/useMenuSplitGroupStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/MenuTrigger/MenuTrigger.js +0 -2
- package/lib-commonjs/components/MenuTrigger/MenuTrigger.js.map +1 -1
- package/lib-commonjs/components/MenuTrigger/MenuTrigger.types.js +0 -2
- package/lib-commonjs/components/MenuTrigger/MenuTrigger.types.js.map +1 -1
- package/lib-commonjs/components/MenuTrigger/index.js +3 -0
- package/lib-commonjs/components/MenuTrigger/index.js.map +1 -1
- package/lib-commonjs/components/MenuTrigger/useMenuTrigger.js +32 -14
- package/lib-commonjs/components/MenuTrigger/useMenuTrigger.js.map +1 -1
- package/lib-commonjs/contexts/menuContext.js +0 -2
- package/lib-commonjs/contexts/menuContext.js.map +1 -1
- package/lib-commonjs/contexts/menuListContext.js +0 -2
- package/lib-commonjs/contexts/menuListContext.js.map +1 -1
- package/lib-commonjs/index.js +27 -5
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/selectable/types.js +3 -3
- package/lib-commonjs/selectable/types.js.map +1 -1
- package/lib-commonjs/selectable/useCheckmarkStyles.styles.js +1 -0
- package/lib-commonjs/selectable/useCheckmarkStyles.styles.js.map +1 -1
- package/lib-commonjs/selectable/useCheckmarkStyles.styles.raw.js +1 -0
- package/lib-commonjs/selectable/useCheckmarkStyles.styles.raw.js.map +1 -1
- package/package.json +10 -10
|
@@ -19,7 +19,7 @@ _export(exports, {
|
|
|
19
19
|
return _renderMenuItem.renderMenuItem_unstable;
|
|
20
20
|
},
|
|
21
21
|
useMenuItemBase_unstable: function() {
|
|
22
|
-
return
|
|
22
|
+
return _useMenuItemBase.useMenuItemBase_unstable;
|
|
23
23
|
},
|
|
24
24
|
useMenuItemStyles_unstable: function() {
|
|
25
25
|
return _useMenuItemStylesstyles.useMenuItemStyles_unstable;
|
|
@@ -31,4 +31,5 @@ _export(exports, {
|
|
|
31
31
|
const _MenuItem = require("./MenuItem");
|
|
32
32
|
const _renderMenuItem = require("./renderMenuItem");
|
|
33
33
|
const _useMenuItem = require("./useMenuItem");
|
|
34
|
+
const _useMenuItemBase = require("./useMenuItemBase");
|
|
34
35
|
const _useMenuItemStylesstyles = require("./useMenuItemStyles.styles");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/MenuItem/index.ts"],"sourcesContent":["export { MenuItem } from './MenuItem';\nexport type { MenuItemProps, MenuItemSlots, MenuItemState } from './MenuItem.types';\nexport { renderMenuItem_unstable } from './renderMenuItem';\nexport { useMenuItem_unstable
|
|
1
|
+
{"version":3,"sources":["../src/components/MenuItem/index.ts"],"sourcesContent":["export { MenuItem } from './MenuItem';\nexport type { MenuItemProps, MenuItemSlots, MenuItemState } from './MenuItem.types';\nexport { renderMenuItem_unstable } from './renderMenuItem';\nexport { useMenuItem_unstable } from './useMenuItem';\nexport { useMenuItemBase_unstable } from './useMenuItemBase';\nexport { menuItemClassNames, useMenuItemStyles_unstable } from './useMenuItemStyles.styles';\n"],"names":["MenuItem","renderMenuItem_unstable","useMenuItem_unstable","useMenuItemBase_unstable","menuItemClassNames","useMenuItemStyles_unstable"],"mappings":";;;;;;;;;;;;eAASA,kBAAQ;;;eAKRI,2CAAkB;;;eAHlBH,uCAAuB;;;eAEvBE,yCAAwB;;;eACJE,mDAA0B;;;eAF9CH,iCAAoB;;;0BAHJ,aAAa;gCAEE,mBAAmB;6BACtB,gBAAgB;iCACZ,oBAAoB;yCACE,6BAA6B"}
|
|
@@ -9,13 +9,12 @@ Object.defineProperty(exports, "useCharacterSearch", {
|
|
|
9
9
|
return useCharacterSearch;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
13
|
-
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
14
12
|
const _menuListContext = require("../../contexts/menuListContext");
|
|
15
13
|
const useCharacterSearch = (state, ref)=>{
|
|
16
14
|
'use no memo';
|
|
17
15
|
const setFocusByFirstCharacter = (0, _menuListContext.useMenuListContext_unstable)((context)=>context.setFocusByFirstCharacter);
|
|
18
16
|
const { onKeyDown: originalOnKeyDown } = state.root;
|
|
17
|
+
// eslint-disable-next-line react-hooks/immutability
|
|
19
18
|
state.root.onKeyDown = (e)=>{
|
|
20
19
|
var _e_key;
|
|
21
20
|
originalOnKeyDown === null || originalOnKeyDown === void 0 ? void 0 : originalOnKeyDown(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/MenuItem/useCharacterSearch.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useMenuListContext_unstable } from '../../contexts/menuListContext';\nimport type { MenuItemState } from '../../components/index';\nimport type { ARIAButtonElementIntersection } from '@fluentui/react-aria';\n\nexport const useCharacterSearch = (state: MenuItemState, ref: React.RefObject<HTMLElement | null>): MenuItemState => {\n 'use no memo';\n\n const setFocusByFirstCharacter = useMenuListContext_unstable(context => context.setFocusByFirstCharacter);\n\n const { onKeyDown: originalOnKeyDown } = state.root;\n\n state.root.onKeyDown = (e: React.KeyboardEvent<ARIAButtonElementIntersection>) => {\n originalOnKeyDown?.(e);\n\n if (e.key?.length > 1) {\n return;\n }\n\n if (ref.current) {\n setFocusByFirstCharacter?.(e, ref.current);\n }\n };\n\n return state;\n};\n"],"names":["
|
|
1
|
+
{"version":3,"sources":["../src/components/MenuItem/useCharacterSearch.ts"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { useMenuListContext_unstable } from '../../contexts/menuListContext';\nimport type { MenuItemState } from '../../components/index';\nimport type { ARIAButtonElementIntersection } from '@fluentui/react-aria';\n\nexport const useCharacterSearch = (state: MenuItemState, ref: React.RefObject<HTMLElement | null>): MenuItemState => {\n 'use no memo';\n\n const setFocusByFirstCharacter = useMenuListContext_unstable(context => context.setFocusByFirstCharacter);\n\n const { onKeyDown: originalOnKeyDown } = state.root;\n\n // eslint-disable-next-line react-hooks/immutability\n state.root.onKeyDown = (e: React.KeyboardEvent<ARIAButtonElementIntersection>) => {\n originalOnKeyDown?.(e);\n\n if (e.key?.length > 1) {\n return;\n }\n\n if (ref.current) {\n setFocusByFirstCharacter?.(e, ref.current);\n }\n };\n\n return state;\n};\n"],"names":["useMenuListContext_unstable","useCharacterSearch","state","ref","setFocusByFirstCharacter","context","onKeyDown","originalOnKeyDown","root","e","key","length","current"],"mappings":"AAAA;;;;;+BAOaC;;;;;;iCAJ+B,iCAAiC;AAItE,2BAA2B,CAACC,OAAsBC;IACvD;IAEA,MAAMC,+BAA2BJ,4CAAAA,EAA4BK,CAAAA,UAAWA,QAAQD,wBAAwB;IAExG,MAAM,EAAEE,WAAWC,iBAAiB,EAAE,GAAGL,MAAMM,IAAI;IAEnD,oDAAoD;IACpDN,MAAMM,IAAI,CAACF,SAAS,GAAG,CAACG;YAGlBA;QAFJF,sBAAAA,QAAAA,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAoBE;QAEpB,IAAIA,CAAAA,CAAAA,SAAAA,EAAEC,GAAAA,AAAG,MAAA,QAALD,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAOE,MAAAA,AAAM,IAAG,GAAG;YACrB;QACF;QAEA,IAAIR,IAAIS,OAAO,EAAE;YACfR,6BAAAA,QAAAA,6BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,yBAA2BK,GAAGN,IAAIS,OAAO;QAC3C;IACF;IAEA,OAAOV;AACT,EAAE"}
|
|
@@ -3,38 +3,22 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
get: all[name]
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
_export(exports, {
|
|
13
|
-
useMenuItemBase_unstable: function() {
|
|
14
|
-
return useMenuItemBase_unstable;
|
|
15
|
-
},
|
|
16
|
-
useMenuItem_unstable: function() {
|
|
6
|
+
Object.defineProperty(exports, "useMenuItem_unstable", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
17
9
|
return useMenuItem_unstable;
|
|
18
10
|
}
|
|
19
11
|
});
|
|
20
12
|
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
21
13
|
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
22
|
-
const _reactutilities = require("@fluentui/react-utilities");
|
|
23
14
|
const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
|
|
24
|
-
const _useCharacterSearch = require("./useCharacterSearch");
|
|
25
|
-
const _menuTriggerContext = require("../../contexts/menuTriggerContext");
|
|
26
15
|
const _reacticons = require("@fluentui/react-icons");
|
|
27
|
-
const
|
|
28
|
-
const _menuContext = require("../../contexts/menuContext");
|
|
29
|
-
const _reactaria = require("@fluentui/react-aria");
|
|
30
|
-
const _keyboardkeys = require("@fluentui/keyboard-keys");
|
|
31
|
-
const _menuSplitGroupContext = require("../../contexts/menuSplitGroupContext");
|
|
32
|
-
const _useValidateNesting = require("../../utils/useValidateNesting");
|
|
16
|
+
const _useMenuItemBase = require("./useMenuItemBase");
|
|
33
17
|
const ChevronRightIcon = (0, _reacticons.bundleIcon)(_reacticons.ChevronRightFilled, _reacticons.ChevronRightRegular);
|
|
34
18
|
const ChevronLeftIcon = (0, _reacticons.bundleIcon)(_reacticons.ChevronLeftFilled, _reacticons.ChevronLeftRegular);
|
|
35
19
|
const useMenuItem_unstable = (props, ref)=>{
|
|
36
20
|
const { dir } = (0, _reactsharedcontexts.useFluent_unstable)();
|
|
37
|
-
const state = useMenuItemBase_unstable(props, ref);
|
|
21
|
+
const state = (0, _useMenuItemBase.useMenuItemBase_unstable)(props, ref);
|
|
38
22
|
// Set default chevron icon
|
|
39
23
|
if (state.submenuIndicator) {
|
|
40
24
|
var _state_submenuIndicator;
|
|
@@ -43,134 +27,3 @@ const useMenuItem_unstable = (props, ref)=>{
|
|
|
43
27
|
}
|
|
44
28
|
return state;
|
|
45
29
|
};
|
|
46
|
-
const useMenuItemBase_unstable = (props, ref)=>{
|
|
47
|
-
const isSubmenuTrigger = (0, _menuTriggerContext.useMenuTriggerContext_unstable)();
|
|
48
|
-
const persistOnClickContext = (0, _menuContext.useMenuContext_unstable)((context)=>context.persistOnItemClick);
|
|
49
|
-
const { as = 'div', disabled = false, hasSubmenu = isSubmenuTrigger, persistOnClick = persistOnClickContext, content: _content, ...rest } = props;
|
|
50
|
-
const { hasIcons, hasCheckmarks } = useIconAndCheckmarkAlignment({
|
|
51
|
-
hasSubmenu
|
|
52
|
-
});
|
|
53
|
-
const setOpen = (0, _menuContext.useMenuContext_unstable)((context)=>context.setOpen);
|
|
54
|
-
useNotifySplitItemMultiline({
|
|
55
|
-
multiline: !!props.subText,
|
|
56
|
-
hasSubmenu
|
|
57
|
-
});
|
|
58
|
-
const innerRef = _react.useRef(null);
|
|
59
|
-
const dismissedWithKeyboardRef = _react.useRef(false);
|
|
60
|
-
const validateNestingRef = (0, _useValidateNesting.useValidateNesting)(getValidateNestingComponentName(props.role));
|
|
61
|
-
const state = {
|
|
62
|
-
hasSubmenu,
|
|
63
|
-
disabled,
|
|
64
|
-
persistOnClick,
|
|
65
|
-
components: {
|
|
66
|
-
root: 'div',
|
|
67
|
-
icon: 'span',
|
|
68
|
-
checkmark: 'span',
|
|
69
|
-
submenuIndicator: 'span',
|
|
70
|
-
content: 'span',
|
|
71
|
-
secondaryContent: 'span',
|
|
72
|
-
subText: 'span'
|
|
73
|
-
},
|
|
74
|
-
root: _reactutilities.slot.always((0, _reactutilities.getIntrinsicElementProps)(as, (0, _reactaria.useARIAButtonProps)(as, {
|
|
75
|
-
role: 'menuitem',
|
|
76
|
-
...rest,
|
|
77
|
-
disabled: false,
|
|
78
|
-
disabledFocusable: disabled,
|
|
79
|
-
ref: (0, _reactutilities.useMergedRefs)(ref, innerRef, validateNestingRef),
|
|
80
|
-
onKeyDown: (0, _reactutilities.useEventCallback)((event)=>{
|
|
81
|
-
var _props_onKeyDown;
|
|
82
|
-
(_props_onKeyDown = props.onKeyDown) === null || _props_onKeyDown === void 0 ? void 0 : _props_onKeyDown.call(props, event);
|
|
83
|
-
if (!event.isDefaultPrevented() && (event.key === _keyboardkeys.Space || event.key === _keyboardkeys.Enter)) {
|
|
84
|
-
dismissedWithKeyboardRef.current = true;
|
|
85
|
-
}
|
|
86
|
-
}),
|
|
87
|
-
onMouseMove: (0, _reactutilities.useEventCallback)((event)=>{
|
|
88
|
-
var _props_onMouseMove;
|
|
89
|
-
if (event.currentTarget.ownerDocument.activeElement !== event.currentTarget) {
|
|
90
|
-
var _innerRef_current;
|
|
91
|
-
(_innerRef_current = innerRef.current) === null || _innerRef_current === void 0 ? void 0 : _innerRef_current.focus();
|
|
92
|
-
}
|
|
93
|
-
(_props_onMouseMove = props.onMouseMove) === null || _props_onMouseMove === void 0 ? void 0 : _props_onMouseMove.call(props, event);
|
|
94
|
-
}),
|
|
95
|
-
onClick: (0, _reactutilities.useEventCallback)((event)=>{
|
|
96
|
-
var _props_onClick;
|
|
97
|
-
if (!hasSubmenu && !persistOnClick) {
|
|
98
|
-
setOpen(event, {
|
|
99
|
-
open: false,
|
|
100
|
-
keyboard: dismissedWithKeyboardRef.current,
|
|
101
|
-
bubble: true,
|
|
102
|
-
type: 'menuItemClick',
|
|
103
|
-
event
|
|
104
|
-
});
|
|
105
|
-
dismissedWithKeyboardRef.current = false;
|
|
106
|
-
}
|
|
107
|
-
(_props_onClick = props.onClick) === null || _props_onClick === void 0 ? void 0 : _props_onClick.call(props, event);
|
|
108
|
-
})
|
|
109
|
-
})), {
|
|
110
|
-
elementType: 'div'
|
|
111
|
-
}),
|
|
112
|
-
icon: _reactutilities.slot.optional(props.icon, {
|
|
113
|
-
renderByDefault: hasIcons,
|
|
114
|
-
elementType: 'span'
|
|
115
|
-
}),
|
|
116
|
-
checkmark: _reactutilities.slot.optional(props.checkmark, {
|
|
117
|
-
renderByDefault: hasCheckmarks,
|
|
118
|
-
elementType: 'span'
|
|
119
|
-
}),
|
|
120
|
-
submenuIndicator: _reactutilities.slot.optional(props.submenuIndicator, {
|
|
121
|
-
renderByDefault: hasSubmenu,
|
|
122
|
-
elementType: 'span'
|
|
123
|
-
}),
|
|
124
|
-
content: _reactutilities.slot.optional(props.content, {
|
|
125
|
-
renderByDefault: !!props.children,
|
|
126
|
-
defaultProps: {
|
|
127
|
-
children: props.children
|
|
128
|
-
},
|
|
129
|
-
elementType: 'span'
|
|
130
|
-
}),
|
|
131
|
-
secondaryContent: _reactutilities.slot.optional(props.secondaryContent, {
|
|
132
|
-
elementType: 'span'
|
|
133
|
-
}),
|
|
134
|
-
subText: _reactutilities.slot.optional(props.subText, {
|
|
135
|
-
elementType: 'span'
|
|
136
|
-
})
|
|
137
|
-
};
|
|
138
|
-
(0, _useCharacterSearch.useCharacterSearch)(state, innerRef);
|
|
139
|
-
return state;
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* MenuSplitGroup needs to apply extra styles when its main item is in multiline layout mode
|
|
143
|
-
* Notify the parent MenuSplitGroup so that it can handle this case
|
|
144
|
-
*/ const useNotifySplitItemMultiline = (options)=>{
|
|
145
|
-
const { hasSubmenu, multiline } = options;
|
|
146
|
-
const isSplitItemTrigger = (0, _menuSplitGroupContext.useIsInMenuSplitGroup)() && hasSubmenu;
|
|
147
|
-
const { setMultiline } = (0, _menuSplitGroupContext.useMenuSplitGroupContext_unstable)();
|
|
148
|
-
(0, _reactutilities.useIsomorphicLayoutEffect)(()=>{
|
|
149
|
-
if (!isSplitItemTrigger) {
|
|
150
|
-
setMultiline(multiline);
|
|
151
|
-
}
|
|
152
|
-
}, [
|
|
153
|
-
setMultiline,
|
|
154
|
-
multiline,
|
|
155
|
-
isSplitItemTrigger
|
|
156
|
-
]);
|
|
157
|
-
};
|
|
158
|
-
const useIconAndCheckmarkAlignment = (options)=>{
|
|
159
|
-
const { hasSubmenu } = options;
|
|
160
|
-
const hasIcons = (0, _menuListContext.useMenuListContext_unstable)((context)=>context.hasIcons);
|
|
161
|
-
const hasCheckmarks = (0, _menuListContext.useMenuListContext_unstable)((context)=>context.hasCheckmarks);
|
|
162
|
-
const isSplitItemTrigger = (0, _menuSplitGroupContext.useIsInMenuSplitGroup)() && hasSubmenu;
|
|
163
|
-
return {
|
|
164
|
-
hasIcons: hasIcons && !isSplitItemTrigger,
|
|
165
|
-
hasCheckmarks: hasCheckmarks && !isSplitItemTrigger
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
const getValidateNestingComponentName = (role)=>{
|
|
169
|
-
switch(role){
|
|
170
|
-
case 'menuitemcheckbox':
|
|
171
|
-
return 'MenuItemCheckbox';
|
|
172
|
-
case 'menuitemradio':
|
|
173
|
-
return 'MenuItemRadio';
|
|
174
|
-
}
|
|
175
|
-
return 'MenuItem';
|
|
176
|
-
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/MenuItem/useMenuItem.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n useEventCallback,\n useMergedRefs,\n getIntrinsicElementProps,\n slot,\n useIsomorphicLayoutEffect,\n} from '@fluentui/react-utilities';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { useCharacterSearch } from './useCharacterSearch';\nimport { useMenuTriggerContext_unstable } from '../../contexts/menuTriggerContext';\nimport {\n ChevronRightFilled,\n ChevronRightRegular,\n ChevronLeftFilled,\n ChevronLeftRegular,\n bundleIcon,\n} from '@fluentui/react-icons';\nimport { useMenuListContext_unstable } from '../../contexts/menuListContext';\nimport { useMenuContext_unstable } from '../../contexts/menuContext';\nimport type { MenuItemProps, MenuItemState } from './MenuItem.types';\nimport {\n ARIAButtonElement,\n ARIAButtonElementIntersection,\n ARIAButtonProps,\n useARIAButtonProps,\n} from '@fluentui/react-aria';\nimport { Enter, Space } from '@fluentui/keyboard-keys';\nimport { useIsInMenuSplitGroup, useMenuSplitGroupContext_unstable } from '../../contexts/menuSplitGroupContext';\nimport { useValidateNesting } from '../../utils/useValidateNesting';\n\nconst ChevronRightIcon = bundleIcon(ChevronRightFilled, ChevronRightRegular);\nconst ChevronLeftIcon = bundleIcon(ChevronLeftFilled, ChevronLeftRegular);\n\n/**\n * Returns the props and state required to render the component\n */\nexport const useMenuItem_unstable = (props: MenuItemProps, ref: React.Ref<ARIAButtonElement<'div'>>): MenuItemState => {\n const { dir } = useFluent();\n const state = useMenuItemBase_unstable(props, ref);\n\n // Set default chevron icon\n if (state.submenuIndicator) {\n state.submenuIndicator.children ??= dir === 'rtl' ? <ChevronLeftIcon /> : <ChevronRightIcon />;\n }\n\n return state;\n};\n\n/**\n * Base hook for MenuItem component, produces state required to render the component.\n * It doesn't set any design-related props specific to MenuItem such as submenu indicator icon.\n *\n * @internal\n */\nexport const useMenuItemBase_unstable = (\n props: MenuItemProps,\n ref: React.Ref<ARIAButtonElement<'div'>>,\n): MenuItemState => {\n const isSubmenuTrigger = useMenuTriggerContext_unstable();\n const persistOnClickContext = useMenuContext_unstable(context => context.persistOnItemClick);\n const {\n as = 'div',\n disabled = false,\n hasSubmenu = isSubmenuTrigger,\n persistOnClick = persistOnClickContext,\n content: _content, // `content` is a slot and it's type clashes with the HTMLElement `content` attribute\n ...rest\n } = props;\n const { hasIcons, hasCheckmarks } = useIconAndCheckmarkAlignment({ hasSubmenu });\n const setOpen = useMenuContext_unstable(context => context.setOpen);\n useNotifySplitItemMultiline({ multiline: !!props.subText, hasSubmenu });\n\n const innerRef = React.useRef<ARIAButtonElementIntersection<'div'>>(null);\n const dismissedWithKeyboardRef = React.useRef(false);\n\n const validateNestingRef = useValidateNesting(getValidateNestingComponentName(props.role));\n\n const state: MenuItemState = {\n hasSubmenu,\n disabled,\n persistOnClick,\n components: {\n root: 'div',\n icon: 'span',\n checkmark: 'span',\n submenuIndicator: 'span',\n content: 'span',\n secondaryContent: 'span',\n subText: 'span',\n },\n root: slot.always(\n getIntrinsicElementProps(\n as,\n useARIAButtonProps<'div', ARIAButtonProps<'div'>>(as, {\n role: 'menuitem',\n ...rest,\n disabled: false,\n disabledFocusable: disabled,\n ref: useMergedRefs(ref, innerRef, validateNestingRef) as React.Ref<ARIAButtonElementIntersection<'div'>>,\n onKeyDown: useEventCallback(event => {\n props.onKeyDown?.(event);\n if (!event.isDefaultPrevented() && (event.key === Space || event.key === Enter)) {\n dismissedWithKeyboardRef.current = true;\n }\n }),\n onMouseMove: useEventCallback(event => {\n if (event.currentTarget.ownerDocument.activeElement !== event.currentTarget) {\n innerRef.current?.focus();\n }\n\n props.onMouseMove?.(event);\n }),\n onClick: useEventCallback(event => {\n if (!hasSubmenu && !persistOnClick) {\n setOpen(event, {\n open: false,\n keyboard: dismissedWithKeyboardRef.current,\n bubble: true,\n type: 'menuItemClick',\n event,\n });\n dismissedWithKeyboardRef.current = false;\n }\n\n props.onClick?.(event);\n }),\n }),\n ),\n { elementType: 'div' },\n ),\n icon: slot.optional(props.icon, { renderByDefault: hasIcons, elementType: 'span' }),\n checkmark: slot.optional(props.checkmark, {\n renderByDefault: hasCheckmarks,\n elementType: 'span',\n }),\n submenuIndicator: slot.optional(props.submenuIndicator, {\n renderByDefault: hasSubmenu,\n elementType: 'span',\n }),\n content: slot.optional(props.content, {\n renderByDefault: !!props.children,\n defaultProps: { children: props.children },\n elementType: 'span',\n }),\n secondaryContent: slot.optional(props.secondaryContent, { elementType: 'span' }),\n subText: slot.optional(props.subText, { elementType: 'span' }),\n };\n useCharacterSearch(state, innerRef);\n return state;\n};\n\n/**\n * MenuSplitGroup needs to apply extra styles when its main item is in multiline layout mode\n * Notify the parent MenuSplitGroup so that it can handle this case\n */\nconst useNotifySplitItemMultiline = (options: { hasSubmenu: boolean; multiline: boolean }) => {\n const { hasSubmenu, multiline } = options;\n const isSplitItemTrigger = useIsInMenuSplitGroup() && hasSubmenu;\n\n const { setMultiline } = useMenuSplitGroupContext_unstable();\n\n useIsomorphicLayoutEffect(() => {\n if (!isSplitItemTrigger) {\n setMultiline(multiline);\n }\n }, [setMultiline, multiline, isSplitItemTrigger]);\n};\n\nconst useIconAndCheckmarkAlignment = (options: { hasSubmenu: boolean }) => {\n const { hasSubmenu } = options;\n const hasIcons = useMenuListContext_unstable(context => context.hasIcons);\n const hasCheckmarks = useMenuListContext_unstable(context => context.hasCheckmarks);\n const isSplitItemTrigger = useIsInMenuSplitGroup() && hasSubmenu;\n\n return {\n hasIcons: hasIcons && !isSplitItemTrigger,\n hasCheckmarks: hasCheckmarks && !isSplitItemTrigger,\n };\n};\n\nconst getValidateNestingComponentName = (role?: string) => {\n switch (role) {\n case 'menuitemcheckbox':\n return 'MenuItemCheckbox';\n case 'menuitemradio':\n return 'MenuItemRadio';\n }\n return 'MenuItem';\n};\n"],"names":["React","useEventCallback","useMergedRefs","getIntrinsicElementProps","slot","useIsomorphicLayoutEffect","useFluent_unstable","useFluent","useCharacterSearch","useMenuTriggerContext_unstable","ChevronRightFilled","ChevronRightRegular","ChevronLeftFilled","ChevronLeftRegular","bundleIcon","useMenuListContext_unstable","useMenuContext_unstable","useARIAButtonProps","Enter","Space","useIsInMenuSplitGroup","useMenuSplitGroupContext_unstable","useValidateNesting","ChevronRightIcon","ChevronLeftIcon","useMenuItem_unstable","props","ref","dir","state","useMenuItemBase_unstable","submenuIndicator","children","isSubmenuTrigger","persistOnClickContext","context","persistOnItemClick","as","disabled","hasSubmenu","persistOnClick","content","_content","rest","hasIcons","hasCheckmarks","useIconAndCheckmarkAlignment","setOpen","useNotifySplitItemMultiline","multiline","subText","innerRef","useRef","dismissedWithKeyboardRef","validateNestingRef","getValidateNestingComponentName","role","components","root","icon","checkmark","secondaryContent","always","disabledFocusable","onKeyDown","event","isDefaultPrevented","key","current","onMouseMove","currentTarget","ownerDocument","activeElement","focus","onClick","open","keyboard","bubble","type","elementType","optional","renderByDefault","defaultProps","options","isSplitItemTrigger","setMultiline"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/MenuItem/useMenuItem.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport {\n ChevronRightFilled,\n ChevronRightRegular,\n ChevronLeftFilled,\n ChevronLeftRegular,\n bundleIcon,\n} from '@fluentui/react-icons';\nimport { useMenuItemBase_unstable } from './useMenuItemBase';\nimport type { MenuItemProps, MenuItemState } from './MenuItem.types';\nimport type { ARIAButtonElement } from '@fluentui/react-aria';\n\nconst ChevronRightIcon = bundleIcon(ChevronRightFilled, ChevronRightRegular);\nconst ChevronLeftIcon = bundleIcon(ChevronLeftFilled, ChevronLeftRegular);\n\n/**\n * Returns the props and state required to render the component\n */\nexport const useMenuItem_unstable = (props: MenuItemProps, ref: React.Ref<ARIAButtonElement<'div'>>): MenuItemState => {\n const { dir } = useFluent();\n const state = useMenuItemBase_unstable(props, ref);\n\n // Set default chevron icon\n if (state.submenuIndicator) {\n state.submenuIndicator.children ??= dir === 'rtl' ? <ChevronLeftIcon /> : <ChevronRightIcon />;\n }\n\n return state;\n};\n"],"names":["React","useFluent_unstable","useFluent","ChevronRightFilled","ChevronRightRegular","ChevronLeftFilled","ChevronLeftRegular","bundleIcon","useMenuItemBase_unstable","ChevronRightIcon","ChevronLeftIcon","useMenuItem_unstable","props","ref","dir","state","submenuIndicator","children"],"mappings":"AAAA;;;;;;;;;;;;iEAEuB,QAAQ;qCACiB,kCAAkC;4BAO3E,wBAAwB;iCACU,oBAAoB;AAI7D,MAAMS,uBAAmBF,sBAAAA,EAAWJ,8BAAAA,EAAoBC,+BAAAA;AACxD,MAAMM,sBAAkBH,sBAAAA,EAAWF,6BAAAA,EAAmBC,8BAAAA;AAK/C,MAAMK,uBAAuB,CAACC,OAAsBC;IACzD,MAAM,EAAEC,GAAG,EAAE,OAAGZ,uCAAAA;IAChB,MAAMa,YAAQP,yCAAAA,EAAyBI,OAAOC;IAE9C,2BAA2B;IAC3B,IAAIE,MAAMC,gBAAgB,EAAE;YAC1BD;;QAAAA,CAAAA,YAAAA,CAAAA,0BAAAA,MAAMC,gBAAAA,AAAgB,EAACC,QAAAA,MAAAA,QAAAA,cAAAA,KAAAA,IAAAA,YAAvBF,wBAAuBE,QAAAA,GAAaH,QAAQ,QAAA,WAAA,GAAQ,OAAA,aAAA,CAACJ,iBAAAA,QAAAA,WAAAA,GAAqB,OAAA,aAAA,CAACD,kBAAAA;IAC7E;IAEA,OAAOM;AACT,EAAE"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useMenuItemBase_unstable", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useMenuItemBase_unstable;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
13
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
14
|
+
const _reactutilities = require("@fluentui/react-utilities");
|
|
15
|
+
const _useCharacterSearch = require("./useCharacterSearch");
|
|
16
|
+
const _menuTriggerContext = require("../../contexts/menuTriggerContext");
|
|
17
|
+
const _menuListContext = require("../../contexts/menuListContext");
|
|
18
|
+
const _menuContext = require("../../contexts/menuContext");
|
|
19
|
+
const _reactaria = require("@fluentui/react-aria");
|
|
20
|
+
const _keyboardkeys = require("@fluentui/keyboard-keys");
|
|
21
|
+
const _menuSplitGroupContext = require("../../contexts/menuSplitGroupContext");
|
|
22
|
+
const _useValidateNesting = require("../../utils/useValidateNesting");
|
|
23
|
+
const useMenuItemBase_unstable = (props, ref)=>{
|
|
24
|
+
const isSubmenuTrigger = (0, _menuTriggerContext.useMenuTriggerContext_unstable)();
|
|
25
|
+
const persistOnClickContext = (0, _menuContext.useMenuContext_unstable)((context)=>context.persistOnItemClick);
|
|
26
|
+
const { as = 'div', disabled = false, hasSubmenu = isSubmenuTrigger, persistOnClick = persistOnClickContext, content: _content, ...rest } = props;
|
|
27
|
+
const { hasIcons, hasCheckmarks } = useIconAndCheckmarkAlignment({
|
|
28
|
+
hasSubmenu
|
|
29
|
+
});
|
|
30
|
+
const setOpen = (0, _menuContext.useMenuContext_unstable)((context)=>context.setOpen);
|
|
31
|
+
const open = (0, _menuContext.useMenuContext_unstable)((context)=>context.open);
|
|
32
|
+
useNotifySplitItemMultiline({
|
|
33
|
+
multiline: !!props.subText,
|
|
34
|
+
hasSubmenu
|
|
35
|
+
});
|
|
36
|
+
const innerRef = _react.useRef(null);
|
|
37
|
+
const dismissedWithKeyboardRef = _react.useRef(false);
|
|
38
|
+
const validateNestingRef = (0, _useValidateNesting.useValidateNesting)(getValidateNestingComponentName(props.role));
|
|
39
|
+
const state = {
|
|
40
|
+
hasSubmenu,
|
|
41
|
+
submenuOpen: hasSubmenu && open,
|
|
42
|
+
disabled,
|
|
43
|
+
persistOnClick,
|
|
44
|
+
components: {
|
|
45
|
+
root: 'div',
|
|
46
|
+
icon: 'span',
|
|
47
|
+
checkmark: 'span',
|
|
48
|
+
submenuIndicator: 'span',
|
|
49
|
+
content: 'span',
|
|
50
|
+
secondaryContent: 'span',
|
|
51
|
+
subText: 'span'
|
|
52
|
+
},
|
|
53
|
+
root: _reactutilities.slot.always((0, _reactutilities.getIntrinsicElementProps)(as, (0, _reactaria.useARIAButtonProps)(as, {
|
|
54
|
+
role: 'menuitem',
|
|
55
|
+
...rest,
|
|
56
|
+
disabled: false,
|
|
57
|
+
disabledFocusable: disabled,
|
|
58
|
+
ref: (0, _reactutilities.useMergedRefs)(ref, innerRef, validateNestingRef),
|
|
59
|
+
onKeyDown: (0, _reactutilities.useEventCallback)((event)=>{
|
|
60
|
+
var _props_onKeyDown;
|
|
61
|
+
(_props_onKeyDown = props.onKeyDown) === null || _props_onKeyDown === void 0 ? void 0 : _props_onKeyDown.call(props, event);
|
|
62
|
+
if (!event.isDefaultPrevented() && (event.key === _keyboardkeys.Space || event.key === _keyboardkeys.Enter)) {
|
|
63
|
+
dismissedWithKeyboardRef.current = true;
|
|
64
|
+
}
|
|
65
|
+
}),
|
|
66
|
+
onMouseMove: (0, _reactutilities.useEventCallback)((event)=>{
|
|
67
|
+
var _props_onMouseMove;
|
|
68
|
+
if (event.currentTarget.ownerDocument.activeElement !== event.currentTarget) {
|
|
69
|
+
var _innerRef_current;
|
|
70
|
+
(_innerRef_current = innerRef.current) === null || _innerRef_current === void 0 ? void 0 : _innerRef_current.focus();
|
|
71
|
+
}
|
|
72
|
+
(_props_onMouseMove = props.onMouseMove) === null || _props_onMouseMove === void 0 ? void 0 : _props_onMouseMove.call(props, event);
|
|
73
|
+
}),
|
|
74
|
+
onClick: (0, _reactutilities.useEventCallback)((event)=>{
|
|
75
|
+
var _props_onClick;
|
|
76
|
+
if (!hasSubmenu && !persistOnClick) {
|
|
77
|
+
setOpen(event, {
|
|
78
|
+
open: false,
|
|
79
|
+
keyboard: dismissedWithKeyboardRef.current,
|
|
80
|
+
bubble: true,
|
|
81
|
+
type: 'menuItemClick',
|
|
82
|
+
event
|
|
83
|
+
});
|
|
84
|
+
dismissedWithKeyboardRef.current = false;
|
|
85
|
+
}
|
|
86
|
+
(_props_onClick = props.onClick) === null || _props_onClick === void 0 ? void 0 : _props_onClick.call(props, event);
|
|
87
|
+
})
|
|
88
|
+
})), {
|
|
89
|
+
elementType: 'div'
|
|
90
|
+
}),
|
|
91
|
+
icon: _reactutilities.slot.optional(props.icon, {
|
|
92
|
+
renderByDefault: hasIcons,
|
|
93
|
+
elementType: 'span'
|
|
94
|
+
}),
|
|
95
|
+
checkmark: _reactutilities.slot.optional(props.checkmark, {
|
|
96
|
+
renderByDefault: hasCheckmarks,
|
|
97
|
+
elementType: 'span'
|
|
98
|
+
}),
|
|
99
|
+
submenuIndicator: _reactutilities.slot.optional(props.submenuIndicator, {
|
|
100
|
+
renderByDefault: hasSubmenu,
|
|
101
|
+
elementType: 'span'
|
|
102
|
+
}),
|
|
103
|
+
content: _reactutilities.slot.optional(props.content, {
|
|
104
|
+
renderByDefault: !!props.children,
|
|
105
|
+
defaultProps: {
|
|
106
|
+
children: props.children
|
|
107
|
+
},
|
|
108
|
+
elementType: 'span'
|
|
109
|
+
}),
|
|
110
|
+
secondaryContent: _reactutilities.slot.optional(props.secondaryContent, {
|
|
111
|
+
elementType: 'span'
|
|
112
|
+
}),
|
|
113
|
+
subText: _reactutilities.slot.optional(props.subText, {
|
|
114
|
+
elementType: 'span'
|
|
115
|
+
})
|
|
116
|
+
};
|
|
117
|
+
(0, _useCharacterSearch.useCharacterSearch)(state, innerRef);
|
|
118
|
+
return state;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* MenuSplitGroup needs to apply extra styles when its main item is in multiline layout mode
|
|
122
|
+
* Notify the parent MenuSplitGroup so that it can handle this case
|
|
123
|
+
*/ const useNotifySplitItemMultiline = (options)=>{
|
|
124
|
+
const { hasSubmenu, multiline } = options;
|
|
125
|
+
const isSplitItemTrigger = (0, _menuSplitGroupContext.useIsInMenuSplitGroup)() && hasSubmenu;
|
|
126
|
+
const { setMultiline } = (0, _menuSplitGroupContext.useMenuSplitGroupContext_unstable)();
|
|
127
|
+
(0, _reactutilities.useIsomorphicLayoutEffect)(()=>{
|
|
128
|
+
if (!isSplitItemTrigger) {
|
|
129
|
+
setMultiline(multiline);
|
|
130
|
+
}
|
|
131
|
+
}, [
|
|
132
|
+
setMultiline,
|
|
133
|
+
multiline,
|
|
134
|
+
isSplitItemTrigger
|
|
135
|
+
]);
|
|
136
|
+
};
|
|
137
|
+
const useIconAndCheckmarkAlignment = (options)=>{
|
|
138
|
+
const { hasSubmenu } = options;
|
|
139
|
+
const hasIcons = (0, _menuListContext.useMenuListContext_unstable)((context)=>context.hasIcons);
|
|
140
|
+
const hasCheckmarks = (0, _menuListContext.useMenuListContext_unstable)((context)=>context.hasCheckmarks);
|
|
141
|
+
const isSplitItemTrigger = (0, _menuSplitGroupContext.useIsInMenuSplitGroup)() && hasSubmenu;
|
|
142
|
+
return {
|
|
143
|
+
hasIcons: hasIcons && !isSplitItemTrigger,
|
|
144
|
+
hasCheckmarks: hasCheckmarks && !isSplitItemTrigger
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
const getValidateNestingComponentName = (role)=>{
|
|
148
|
+
switch(role){
|
|
149
|
+
case 'menuitemcheckbox':
|
|
150
|
+
return 'MenuItemCheckbox';
|
|
151
|
+
case 'menuitemradio':
|
|
152
|
+
return 'MenuItemRadio';
|
|
153
|
+
}
|
|
154
|
+
return 'MenuItem';
|
|
155
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/MenuItem/useMenuItemBase.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n useEventCallback,\n useMergedRefs,\n getIntrinsicElementProps,\n slot,\n useIsomorphicLayoutEffect,\n} from '@fluentui/react-utilities';\nimport { useCharacterSearch } from './useCharacterSearch';\nimport { useMenuTriggerContext_unstable } from '../../contexts/menuTriggerContext';\nimport { useMenuListContext_unstable } from '../../contexts/menuListContext';\nimport { useMenuContext_unstable } from '../../contexts/menuContext';\nimport type { MenuItemProps, MenuItemState } from './MenuItem.types';\nimport type { ARIAButtonElement, ARIAButtonElementIntersection, ARIAButtonProps } from '@fluentui/react-aria';\nimport { useARIAButtonProps } from '@fluentui/react-aria';\nimport { Enter, Space } from '@fluentui/keyboard-keys';\nimport { useIsInMenuSplitGroup, useMenuSplitGroupContext_unstable } from '../../contexts/menuSplitGroupContext';\nimport { useValidateNesting } from '../../utils/useValidateNesting';\n\n/**\n * Base hook for MenuItem component, produces state required to render the component.\n * It doesn't set any design-related props specific to MenuItem such as submenu indicator icon.\n */\nexport const useMenuItemBase_unstable = (\n props: MenuItemProps,\n ref: React.Ref<ARIAButtonElement<'div'>>,\n): MenuItemState => {\n const isSubmenuTrigger = useMenuTriggerContext_unstable();\n const persistOnClickContext = useMenuContext_unstable(context => context.persistOnItemClick);\n const {\n as = 'div',\n disabled = false,\n hasSubmenu = isSubmenuTrigger,\n persistOnClick = persistOnClickContext,\n content: _content, // `content` is a slot and it's type clashes with the HTMLElement `content` attribute\n ...rest\n } = props;\n const { hasIcons, hasCheckmarks } = useIconAndCheckmarkAlignment({ hasSubmenu });\n const setOpen = useMenuContext_unstable(context => context.setOpen);\n const open = useMenuContext_unstable(context => context.open);\n useNotifySplitItemMultiline({ multiline: !!props.subText, hasSubmenu });\n\n const innerRef = React.useRef<ARIAButtonElementIntersection<'div'>>(null);\n const dismissedWithKeyboardRef = React.useRef(false);\n\n const validateNestingRef = useValidateNesting(getValidateNestingComponentName(props.role));\n\n const state: MenuItemState = {\n hasSubmenu,\n submenuOpen: hasSubmenu && open,\n disabled,\n persistOnClick,\n components: {\n root: 'div',\n icon: 'span',\n checkmark: 'span',\n submenuIndicator: 'span',\n content: 'span',\n secondaryContent: 'span',\n subText: 'span',\n },\n root: slot.always(\n getIntrinsicElementProps(\n as,\n useARIAButtonProps<'div', ARIAButtonProps<'div'>>(as, {\n role: 'menuitem',\n ...rest,\n disabled: false,\n disabledFocusable: disabled,\n ref: useMergedRefs(ref, innerRef, validateNestingRef) as React.Ref<ARIAButtonElementIntersection<'div'>>,\n onKeyDown: useEventCallback(event => {\n props.onKeyDown?.(event);\n if (!event.isDefaultPrevented() && (event.key === Space || event.key === Enter)) {\n dismissedWithKeyboardRef.current = true;\n }\n }),\n onMouseMove: useEventCallback(event => {\n if (event.currentTarget.ownerDocument.activeElement !== event.currentTarget) {\n innerRef.current?.focus();\n }\n\n props.onMouseMove?.(event);\n }),\n onClick: useEventCallback(event => {\n if (!hasSubmenu && !persistOnClick) {\n setOpen(event, {\n open: false,\n keyboard: dismissedWithKeyboardRef.current,\n bubble: true,\n type: 'menuItemClick',\n event,\n });\n dismissedWithKeyboardRef.current = false;\n }\n\n props.onClick?.(event);\n }),\n }),\n ),\n { elementType: 'div' },\n ),\n icon: slot.optional(props.icon, { renderByDefault: hasIcons, elementType: 'span' }),\n checkmark: slot.optional(props.checkmark, {\n renderByDefault: hasCheckmarks,\n elementType: 'span',\n }),\n submenuIndicator: slot.optional(props.submenuIndicator, {\n renderByDefault: hasSubmenu,\n elementType: 'span',\n }),\n content: slot.optional(props.content, {\n renderByDefault: !!props.children,\n defaultProps: { children: props.children },\n elementType: 'span',\n }),\n secondaryContent: slot.optional(props.secondaryContent, { elementType: 'span' }),\n subText: slot.optional(props.subText, { elementType: 'span' }),\n };\n useCharacterSearch(state, innerRef);\n return state;\n};\n\n/**\n * MenuSplitGroup needs to apply extra styles when its main item is in multiline layout mode\n * Notify the parent MenuSplitGroup so that it can handle this case\n */\nconst useNotifySplitItemMultiline = (options: { hasSubmenu: boolean; multiline: boolean }) => {\n const { hasSubmenu, multiline } = options;\n const isSplitItemTrigger = useIsInMenuSplitGroup() && hasSubmenu;\n\n const { setMultiline } = useMenuSplitGroupContext_unstable();\n\n useIsomorphicLayoutEffect(() => {\n if (!isSplitItemTrigger) {\n setMultiline(multiline);\n }\n }, [setMultiline, multiline, isSplitItemTrigger]);\n};\n\nconst useIconAndCheckmarkAlignment = (options: { hasSubmenu: boolean }) => {\n const { hasSubmenu } = options;\n const hasIcons = useMenuListContext_unstable(context => context.hasIcons);\n const hasCheckmarks = useMenuListContext_unstable(context => context.hasCheckmarks);\n const isSplitItemTrigger = useIsInMenuSplitGroup() && hasSubmenu;\n\n return {\n hasIcons: hasIcons && !isSplitItemTrigger,\n hasCheckmarks: hasCheckmarks && !isSplitItemTrigger,\n };\n};\n\nconst getValidateNestingComponentName = (role?: string) => {\n switch (role) {\n case 'menuitemcheckbox':\n return 'MenuItemCheckbox';\n case 'menuitemradio':\n return 'MenuItemRadio';\n }\n return 'MenuItem';\n};\n"],"names":["React","useEventCallback","useMergedRefs","getIntrinsicElementProps","slot","useIsomorphicLayoutEffect","useCharacterSearch","useMenuTriggerContext_unstable","useMenuListContext_unstable","useMenuContext_unstable","useARIAButtonProps","Enter","Space","useIsInMenuSplitGroup","useMenuSplitGroupContext_unstable","useValidateNesting","useMenuItemBase_unstable","props","ref","isSubmenuTrigger","persistOnClickContext","context","persistOnItemClick","as","disabled","hasSubmenu","persistOnClick","content","_content","rest","hasIcons","hasCheckmarks","useIconAndCheckmarkAlignment","setOpen","open","useNotifySplitItemMultiline","multiline","subText","innerRef","useRef","dismissedWithKeyboardRef","validateNestingRef","getValidateNestingComponentName","role","state","submenuOpen","components","root","icon","checkmark","submenuIndicator","secondaryContent","always","disabledFocusable","onKeyDown","event","isDefaultPrevented","key","current","onMouseMove","currentTarget","ownerDocument","activeElement","focus","onClick","keyboard","bubble","type","elementType","optional","renderByDefault","children","defaultProps","options","isSplitItemTrigger","setMultiline"],"mappings":"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"}
|
|
@@ -108,6 +108,16 @@ const useStyles = /*#__PURE__*/ (0, _react.__styles)({
|
|
|
108
108
|
Baz25je: "f68mna0",
|
|
109
109
|
cmx5o7: "f1p5zmk"
|
|
110
110
|
},
|
|
111
|
+
submenuOpen: {
|
|
112
|
+
De3pzq: "f5gciec",
|
|
113
|
+
sj55zd: "fmh2wxz",
|
|
114
|
+
D0sxk3: "fxoiby5",
|
|
115
|
+
t6yez3: "f15q0o9g",
|
|
116
|
+
B3y4be1: "f17gqod3",
|
|
117
|
+
B2i6fwv: "f15ms52v",
|
|
118
|
+
By8wz76: "fix5gee",
|
|
119
|
+
B7iucu3: "f1gokeew"
|
|
120
|
+
},
|
|
111
121
|
disabled: {
|
|
112
122
|
sj55zd: "f1s2aq7o",
|
|
113
123
|
Bi91k9c: "fvgxktp",
|
|
@@ -147,24 +157,27 @@ const useStyles = /*#__PURE__*/ (0, _react.__styles)({
|
|
|
147
157
|
".f1yn80uh::before{width:var(--strokeWidthThin);}",
|
|
148
158
|
".f68mna0::before{height:24px;}",
|
|
149
159
|
".f1p5zmk::before{background-color:var(--colorNeutralStroke1);}",
|
|
160
|
+
".f5gciec{background-color:var(--colorNeutralBackground1Hover);}",
|
|
161
|
+
".fmh2wxz{color:var(--colorNeutralForeground2Hover);}",
|
|
162
|
+
".fxoiby5 .fui-Icon-filled{display:inline;}",
|
|
163
|
+
".f15q0o9g .fui-Icon-regular{display:none;}",
|
|
164
|
+
".f17gqod3 .fui-MenuItem__icon{color:var(--colorNeutralForeground2BrandSelected);}",
|
|
165
|
+
".f15ms52v .fui-MenuItem__subText{color:var(--colorNeutralForeground3Hover);}",
|
|
150
166
|
".f1s2aq7o{color:var(--colorNeutralForegroundDisabled);}"
|
|
151
167
|
],
|
|
152
|
-
h: [
|
|
153
|
-
".fvgxktp:hover{color:var(--colorNeutralForegroundDisabled);}",
|
|
154
|
-
".f1ijtazh:hover{background-color:var(--colorNeutralBackground1);}",
|
|
155
|
-
".fphbwmw:hover{cursor:not-allowed;}",
|
|
156
|
-
".f19vpps7:hover .fui-Icon-filled{display:none;}",
|
|
157
|
-
".fv5swzo:hover .fui-Icon-regular{display:inline;}",
|
|
158
|
-
".f1q1x1ba:hover .fui-MenuItem__icon{color:var(--colorNeutralForegroundDisabled);}",
|
|
159
|
-
".ff3wrqt:hover .fui-MenuItem__subText{color:var(--colorNeutralForegroundDisabled);}",
|
|
160
|
-
".fcvwxyo:hover:active{color:var(--colorNeutralForegroundDisabled);}",
|
|
161
|
-
".f1to34ca:hover:active{background-color:var(--colorNeutralBackground1);}",
|
|
162
|
-
".fszh5vc:hover:active .fui-MenuItem__subText{color:var(--colorNeutralForegroundDisabled);}"
|
|
163
|
-
],
|
|
164
|
-
f: [
|
|
165
|
-
".ft33916:focus{color:var(--colorNeutralForegroundDisabled);}"
|
|
166
|
-
],
|
|
167
168
|
m: [
|
|
169
|
+
[
|
|
170
|
+
"@media (forced-colors: active){.fix5gee{background-color:Canvas;}}",
|
|
171
|
+
{
|
|
172
|
+
m: "(forced-colors: active)"
|
|
173
|
+
}
|
|
174
|
+
],
|
|
175
|
+
[
|
|
176
|
+
"@media (forced-colors: active){.f1gokeew{color:Highlight;}}",
|
|
177
|
+
{
|
|
178
|
+
m: "(forced-colors: active)"
|
|
179
|
+
}
|
|
180
|
+
],
|
|
168
181
|
[
|
|
169
182
|
"@media (forced-colors: active){.f1cyfu5x{color:GrayText;}}",
|
|
170
183
|
{
|
|
@@ -231,6 +244,21 @@ const useStyles = /*#__PURE__*/ (0, _react.__styles)({
|
|
|
231
244
|
m: "(forced-colors: active)"
|
|
232
245
|
}
|
|
233
246
|
]
|
|
247
|
+
],
|
|
248
|
+
h: [
|
|
249
|
+
".fvgxktp:hover{color:var(--colorNeutralForegroundDisabled);}",
|
|
250
|
+
".f1ijtazh:hover{background-color:var(--colorNeutralBackground1);}",
|
|
251
|
+
".fphbwmw:hover{cursor:not-allowed;}",
|
|
252
|
+
".f19vpps7:hover .fui-Icon-filled{display:none;}",
|
|
253
|
+
".fv5swzo:hover .fui-Icon-regular{display:inline;}",
|
|
254
|
+
".f1q1x1ba:hover .fui-MenuItem__icon{color:var(--colorNeutralForegroundDisabled);}",
|
|
255
|
+
".ff3wrqt:hover .fui-MenuItem__subText{color:var(--colorNeutralForegroundDisabled);}",
|
|
256
|
+
".fcvwxyo:hover:active{color:var(--colorNeutralForegroundDisabled);}",
|
|
257
|
+
".f1to34ca:hover:active{background-color:var(--colorNeutralBackground1);}",
|
|
258
|
+
".fszh5vc:hover:active .fui-MenuItem__subText{color:var(--colorNeutralForegroundDisabled);}"
|
|
259
|
+
],
|
|
260
|
+
f: [
|
|
261
|
+
".ft33916:focus{color:var(--colorNeutralForegroundDisabled);}"
|
|
234
262
|
]
|
|
235
263
|
});
|
|
236
264
|
const useSubTextStyles = /*#__PURE__*/ (0, _react.__styles)({
|
|
@@ -281,23 +309,30 @@ const useMenuItemStyles_unstable = (state)=>{
|
|
|
281
309
|
const subtextBaseStyles = useSubtextBaseStyles();
|
|
282
310
|
const subTextStyles = useSubTextStyles();
|
|
283
311
|
const multiline = !!state.subText;
|
|
284
|
-
|
|
312
|
+
// eslint-disable-next-line react-hooks/immutability
|
|
313
|
+
state.root.className = (0, _react.mergeClasses)(menuItemClassNames.root, rootBaseStyles, state.submenuOpen && styles.submenuOpen, state.disabled && styles.disabled, state.root.className);
|
|
285
314
|
if (state.content) {
|
|
315
|
+
// eslint-disable-next-line react-hooks/immutability
|
|
286
316
|
state.content.className = (0, _react.mergeClasses)(menuItemClassNames.content, contentBaseStyles, state.content.className, multiline && multilineStyles.content);
|
|
287
317
|
}
|
|
288
318
|
if (state.checkmark) {
|
|
319
|
+
// eslint-disable-next-line react-hooks/immutability
|
|
289
320
|
state.checkmark.className = (0, _react.mergeClasses)(menuItemClassNames.checkmark, styles.checkmark, state.checkmark.className);
|
|
290
321
|
}
|
|
291
322
|
if (state.secondaryContent) {
|
|
323
|
+
// eslint-disable-next-line react-hooks/immutability
|
|
292
324
|
state.secondaryContent.className = (0, _react.mergeClasses)(menuItemClassNames.secondaryContent, secondaryContentBaseStyles, state.disabled && styles.disabled, state.secondaryContent.className, multiline && multilineStyles.secondaryContent);
|
|
293
325
|
}
|
|
294
326
|
if (state.icon) {
|
|
327
|
+
// eslint-disable-next-line react-hooks/immutability
|
|
295
328
|
state.icon.className = (0, _react.mergeClasses)(menuItemClassNames.icon, iconBaseStyles, state.icon.className);
|
|
296
329
|
}
|
|
297
330
|
if (state.submenuIndicator) {
|
|
331
|
+
// eslint-disable-next-line react-hooks/immutability
|
|
298
332
|
state.submenuIndicator.className = (0, _react.mergeClasses)(menuItemClassNames.submenuIndicator, submenuIndicatorBaseStyles, state.submenuIndicator.className, multiline && multilineStyles.submenuIndicator);
|
|
299
333
|
}
|
|
300
334
|
if (state.subText) {
|
|
335
|
+
// eslint-disable-next-line react-hooks/immutability
|
|
301
336
|
state.subText.className = (0, _react.mergeClasses)(menuItemClassNames.subText, state.disabled && subTextStyles.disabled, state.subText.className, subtextBaseStyles);
|
|
302
337
|
}
|
|
303
338
|
(0, _index.useCheckmarkStyles_unstable)(state);
|