@activecollab/components 2.0.456 → 2.0.457

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.
@@ -157,15 +157,26 @@ var Menu = exports.Menu = function Menu(_ref2) {
157
157
 
158
158
  // Set on the node itself, so the trigger gets it also through a wrapper such as Tooltip.
159
159
  var expandedTrigger = (0, _react.useRef)(null);
160
+ var checkedTrigger = (0, _react.useRef)(null);
161
+ var triggerOwnsExpanded = (0, _react.useRef)(false);
160
162
  (0, _react.useEffect)(function () {
161
163
  var node = elementRef.current;
162
164
  if (!node) {
163
165
  return;
164
166
  }
165
167
  var trigger = triggerOf(node);
168
+
169
+ // A trigger that renders its own aria-expanded keeps it, so the menu never clears its "false".
170
+ if (checkedTrigger.current !== trigger) {
171
+ checkedTrigger.current = trigger;
172
+ triggerOwnsExpanded.current = trigger.hasAttribute("aria-expanded");
173
+ }
166
174
  if (!trigger.hasAttribute("aria-haspopup")) {
167
175
  trigger.setAttribute("aria-haspopup", "true");
168
176
  }
177
+ if (triggerOwnsExpanded.current) {
178
+ return;
179
+ }
169
180
  if (open) {
170
181
  trigger.setAttribute("aria-expanded", "true");
171
182
  expandedTrigger.current = trigger;
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_context","_Styles","_useForkRef","_Overlay","_Popper","_Transitions","_Window","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","length","l","Symbol","iterator","u","next","done","push","value","return","isArray","isFocusVisible","element","Boolean","matches","_unused","TRIGGER","triggerOf","node","_node$querySelector","querySelector","visibleBoxOf","rects","children","map","getBoundingClientRect","left","Math","min","rect","right","max","top","bottom","offsetToVisibleBox","options","offset","_ref","placement","wrapper","box","_placement$split","split","_placement$split2","side","align","vertical","start","end","skidding","distance","returnFocusOptions","visible","focusVisible","Menu","exports","_ref2","_ref2$disableFocusLoc","disableFocusLock","onMenuClick","_ref2$handleScroll","handleScroll","_ref2$mode","mode","_ref2$open","open","defaultOpen","onOpen","onClose","onBeforeClose","_ref2$position","position","target","className","menuClassName","popperClassName","backgroundElementClass","_ref2$windowAbsolutel","windowAbsolutelyPositioned","onPopperOpen","_useState","useState","_useState2","setOpen","_useState3","_useState4","exited","setExited","_useState5","_useState6","childNode","setChildNode","elementRef","useRef","isOpenAtLeastOnce","wasOpen","focusBeforeOpen","focusWasVisible","returnFocusTo","popperRef","current","document","activeElement","useEffect","expandedTrigger","trigger","hasAttribute","setAttribute","removeAttribute","handleRefRef","useForkRef","ref","undefined","handleRef","popperModifiers","useMemo","HTMLElement","handleOpen","useCallback","event","_target$props","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","previous","returnTo","isConnected","focus","keepFocusOut","_popperRef$current","contains","_returnFocusTo$curren","addEventListener","removeEventListener","createElement","Fragment","React","cloneElement","Window","disableScrollLock","disableCloseOnEsc","style","Overlay","tabIndex","disableBackgroundColor","Popper","anchorEl","afterWrite","modifiers","transition","_ref3","transitionProps","Grow","in","onEnter","onExited","_transitionProps$onEx","StyledMenu","classnames","concat","$mode","onMouseDown","pointerEvents","MenuContextProvider","displayName"],"sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import React, {\n useRef,\n FC,\n ReactNode,\n MouseEvent,\n useState,\n useCallback,\n useEffect,\n useMemo,\n ReactElement,\n Ref,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classnames from \"classnames\";\n\nimport { MenuContextProvider } from \"./context\";\nimport { StyledMenu } from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Overlay } from \"../Overlay\";\nimport { Popper } from \"../Popper\";\nimport { Grow } from \"../Transitions\";\nimport { Window } from \"../Window\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\n// source: https://twitter.com/mattpocockuk/status/1671908303918473217/photo/1\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type MenuMode = \"normal\" | \"wider\" | \"tiny\" | \"widest\";\n\nexport interface IMenu {\n /** Menu content */\n children:\n | ReactNode\n | ((childProps: { forceClose: () => void }) => JSX.Element);\n /** On menu element click */\n onMenuClick?: (event: MouseEvent<HTMLElement>) => void;\n /** Handle scroll bar */\n handleScroll?: boolean;\n /** Disable Focus Lock */\n disableFocusLock?: boolean;\n /** Menu width mode */\n mode?: MenuMode;\n /** Should menu be open when it's mounted */\n open?: boolean;\n /** Callback triggered when modal has been opened */\n onOpen?: () => void;\n /** Callback triggered when modal has been closed */\n onClose?: () => void;\n /** Before close callback */\n onBeforeClose?: () => boolean;\n /** Position Menu */\n position?: Placement;\n /** Target element */\n target?: ElementWithRef<Element>;\n className?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Should Window be positioned absolutely */\n windowAbsolutelyPositioned?: boolean;\n /** Popper on open */\n onPopperOpen?: (...args) => void;\n}\n\nconst isFocusVisible = (element: Element | null) => {\n try {\n return Boolean(element?.matches(\":focus-visible\"));\n } catch {\n return false;\n }\n};\n\nconst TRIGGER = 'button, [role=\"button\"], a[href]';\n\n// A target can wrap its button, as a div around a Tooltip or a CounterButton does.\nconst triggerOf = (node: HTMLElement) =>\n node.matches(TRIGGER)\n ? node\n : node.querySelector<HTMLElement>(TRIGGER) ?? node;\n\nconst visibleBoxOf = (node: HTMLElement) => {\n const rects = [node, ...Array.from(node.children)].map((element) =>\n element.getBoundingClientRect()\n );\n\n return {\n left: Math.min(...rects.map((rect) => rect.left)),\n right: Math.max(...rects.map((rect) => rect.right)),\n top: Math.min(...rects.map((rect) => rect.top)),\n bottom: Math.max(...rects.map((rect) => rect.bottom)),\n };\n};\n\n// A control group pulls a wrapped button out of its wrapper by negative margins, so the menu lines up with the button.\nconst offsetToVisibleBox = (node: HTMLElement) => ({\n name: \"offset\",\n options: {\n offset: ({ placement }: { placement: Placement }): [number, number] => {\n if (triggerOf(node) === node) {\n return [0, 0];\n }\n\n const wrapper = node.getBoundingClientRect();\n const box = visibleBoxOf(node);\n const [side, align] = placement.split(\"-\");\n const vertical = side === \"top\" || side === \"bottom\";\n const start = vertical ? \"left\" : \"top\";\n const end = vertical ? \"right\" : \"bottom\";\n const skidding =\n align === \"start\"\n ? box[start] - wrapper[start]\n : align === \"end\"\n ? box[end] - wrapper[end]\n : (box[start] + box[end] - wrapper[start] - wrapper[end]) / 2;\n const distance = {\n bottom: box.bottom - wrapper.bottom,\n top: wrapper.top - box.top,\n right: box.right - wrapper.right,\n left: wrapper.left - box.left,\n }[side];\n\n return [skidding, distance ?? 0];\n },\n },\n});\n\n// A menu opened with the pointer hands the focus back without a focus ring, so its trigger does not stay lit.\nconst returnFocusOptions = (visible: boolean) =>\n ({ focusVisible: visible } as FocusOptions);\n\nexport const Menu: FC<IMenu> = ({\n children,\n disableFocusLock = false,\n onMenuClick,\n handleScroll = true,\n mode = \"normal\",\n open: defaultOpen = false,\n onOpen,\n onClose,\n onBeforeClose,\n position = \"bottom-start\",\n target,\n className,\n menuClassName,\n popperClassName,\n backgroundElementClass,\n windowAbsolutelyPositioned = false,\n onPopperOpen,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [exited, setExited] = useState(!defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<HTMLElement | null>(null);\n const isOpenAtLeastOnce = useRef(false);\n const wasOpen = useRef(open);\n const focusBeforeOpen = useRef<Element | null>(null);\n const focusWasVisible = useRef(false);\n const returnFocusTo = useRef<HTMLElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n\n // Read on the render that opens the menu, before the focus lock moves the focus inside it.\n if (open && !wasOpen.current && typeof document !== \"undefined\") {\n focusBeforeOpen.current = document.activeElement;\n focusWasVisible.current = isFocusVisible(document.activeElement);\n }\n wasOpen.current = open;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useEffect(() => {\n if (open) {\n setExited(false);\n }\n }, [open]);\n\n // Set on the node itself, so the trigger gets it also through a wrapper such as Tooltip.\n const expandedTrigger = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n const node = elementRef.current;\n\n if (!node) {\n return;\n }\n\n const trigger = triggerOf(node);\n\n if (!trigger.hasAttribute(\"aria-haspopup\")) {\n trigger.setAttribute(\"aria-haspopup\", \"true\");\n }\n\n if (open) {\n trigger.setAttribute(\"aria-expanded\", \"true\");\n expandedTrigger.current = trigger;\n } else if (expandedTrigger.current) {\n expandedTrigger.current.removeAttribute(\"aria-expanded\");\n expandedTrigger.current = null;\n }\n }, [open, childNode]);\n\n const handleRefRef = useForkRef(\n target ? target.ref : undefined,\n setChildNode\n );\n const handleRef = useForkRef(handleRefRef, elementRef);\n\n const popperModifiers = useMemo(\n () =>\n childNode instanceof HTMLElement\n ? [offsetToVisibleBox(childNode)]\n : undefined,\n [childNode]\n );\n\n const handleOpen = useCallback(\n (\n event: Pick<MouseEvent<Element>, \"preventDefault\" | \"stopPropagation\">\n ) => {\n event?.preventDefault();\n event?.stopPropagation();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, target?.props]\n );\n\n const handleClose = useCallback(() => {\n if (typeof onBeforeClose === \"function\" && !onBeforeClose()) {\n return;\n }\n setOpen(false);\n typeof onClose === \"function\" && onClose();\n }, [onClose, onBeforeClose]);\n\n const childProps = {\n forceClose: handleClose,\n };\n\n const targetProps = {\n open,\n ref: handleRef,\n onClick: handleOpen,\n };\n\n useEffect(() => {\n if (open) {\n isOpenAtLeastOnce.current = true;\n } else if (!open && isOpenAtLeastOnce.current) {\n const previous = focusBeforeOpen.current;\n const returnTo =\n previous instanceof HTMLElement && previous.isConnected\n ? previous\n : elementRef.current;\n\n returnFocusTo.current = returnTo;\n returnTo?.focus(returnFocusOptions(focusWasVisible.current));\n isOpenAtLeastOnce.current = false;\n }\n }, [open]);\n\n // A fading menu is already closed. Its content can still reach for the focus, and would take it away\n // with it when it unmounts, so the focus goes straight back to where the menu returned it.\n useEffect(() => {\n if (open || exited) {\n return undefined;\n }\n\n const keepFocusOut = (event: FocusEvent) => {\n if (popperRef.current?.contains(event.target as Node)) {\n returnFocusTo.current?.focus(\n returnFocusOptions(focusWasVisible.current)\n );\n }\n };\n\n document.addEventListener(\"focusin\", keepFocusOut, true);\n\n return () => document.removeEventListener(\"focusin\", keepFocusOut, true);\n }, [open, exited]);\n\n return (\n <>\n {target && React.cloneElement(target, targetProps)}\n {open || !exited ? (\n <Window\n onClose={handleClose}\n disableScrollLock={!handleScroll}\n // The menu returns the focus itself at once, so a late returnFocus cannot undo a caller's move.\n disableFocusLock={disableFocusLock || !open}\n // A fading menu is already closed, so an escape pressed meanwhile belongs to the page behind it.\n disableCloseOnEsc={!open}\n style={{\n position: windowAbsolutelyPositioned ? \"absolute\" : \"fixed\",\n }}\n >\n {/* A closing menu must not swallow the click that lands while it fades out. */}\n {open ? (\n <Overlay\n className={backgroundElementClass}\n onClick={handleClose}\n tabIndex={-1}\n disableBackgroundColor\n />\n ) : null}\n <Popper\n ref={popperRef}\n anchorEl={childNode}\n open={childNode ? open : false}\n placement={position}\n className={popperClassName}\n tabIndex={-1}\n afterWrite={onPopperOpen}\n modifiers={popperModifiers}\n transition\n >\n {({ placement, transitionProps }) => (\n <Grow\n placement={placement}\n in={transitionProps?.in}\n onEnter={transitionProps?.onEnter}\n onExited={() => {\n setExited(true);\n transitionProps?.onExited?.();\n }}\n >\n <StyledMenu\n className={classnames(\n \"c-simple-menu__paper\",\n `c-simple-menu__${mode}`,\n menuClassName,\n className\n )}\n $mode={mode}\n onMouseDown={onMenuClick}\n style={open ? undefined : { pointerEvents: \"none\" }}\n >\n <MenuContextProvider value={{ open, setOpen }}>\n {typeof children === \"function\"\n ? children(childProps)\n : children}\n </MenuContextProvider>\n </StyledMenu>\n </Grow>\n )}\n </Popper>\n </Window>\n ) : null}\n </>\n );\n};\n\nMenu.displayName = \"Menu\";\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Menu.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_context","_Styles","_useForkRef","_Overlay","_Popper","_Transitions","_Window","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","length","l","Symbol","iterator","u","next","done","push","value","return","isArray","isFocusVisible","element","Boolean","matches","_unused","TRIGGER","triggerOf","node","_node$querySelector","querySelector","visibleBoxOf","rects","children","map","getBoundingClientRect","left","Math","min","rect","right","max","top","bottom","offsetToVisibleBox","options","offset","_ref","placement","wrapper","box","_placement$split","split","_placement$split2","side","align","vertical","start","end","skidding","distance","returnFocusOptions","visible","focusVisible","Menu","exports","_ref2","_ref2$disableFocusLoc","disableFocusLock","onMenuClick","_ref2$handleScroll","handleScroll","_ref2$mode","mode","_ref2$open","open","defaultOpen","onOpen","onClose","onBeforeClose","_ref2$position","position","target","className","menuClassName","popperClassName","backgroundElementClass","_ref2$windowAbsolutel","windowAbsolutelyPositioned","onPopperOpen","_useState","useState","_useState2","setOpen","_useState3","_useState4","exited","setExited","_useState5","_useState6","childNode","setChildNode","elementRef","useRef","isOpenAtLeastOnce","wasOpen","focusBeforeOpen","focusWasVisible","returnFocusTo","popperRef","current","document","activeElement","useEffect","expandedTrigger","checkedTrigger","triggerOwnsExpanded","trigger","hasAttribute","setAttribute","removeAttribute","handleRefRef","useForkRef","ref","undefined","handleRef","popperModifiers","useMemo","HTMLElement","handleOpen","useCallback","event","_target$props","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","previous","returnTo","isConnected","focus","keepFocusOut","_popperRef$current","contains","_returnFocusTo$curren","addEventListener","removeEventListener","createElement","Fragment","React","cloneElement","Window","disableScrollLock","disableCloseOnEsc","style","Overlay","tabIndex","disableBackgroundColor","Popper","anchorEl","afterWrite","modifiers","transition","_ref3","transitionProps","Grow","in","onEnter","onExited","_transitionProps$onEx","StyledMenu","classnames","concat","$mode","onMouseDown","pointerEvents","MenuContextProvider","displayName"],"sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import React, {\n useRef,\n FC,\n ReactNode,\n MouseEvent,\n useState,\n useCallback,\n useEffect,\n useMemo,\n ReactElement,\n Ref,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classnames from \"classnames\";\n\nimport { MenuContextProvider } from \"./context\";\nimport { StyledMenu } from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Overlay } from \"../Overlay\";\nimport { Popper } from \"../Popper\";\nimport { Grow } from \"../Transitions\";\nimport { Window } from \"../Window\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\n// source: https://twitter.com/mattpocockuk/status/1671908303918473217/photo/1\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type MenuMode = \"normal\" | \"wider\" | \"tiny\" | \"widest\";\n\nexport interface IMenu {\n /** Menu content */\n children:\n | ReactNode\n | ((childProps: { forceClose: () => void }) => JSX.Element);\n /** On menu element click */\n onMenuClick?: (event: MouseEvent<HTMLElement>) => void;\n /** Handle scroll bar */\n handleScroll?: boolean;\n /** Disable Focus Lock */\n disableFocusLock?: boolean;\n /** Menu width mode */\n mode?: MenuMode;\n /** Should menu be open when it's mounted */\n open?: boolean;\n /** Callback triggered when modal has been opened */\n onOpen?: () => void;\n /** Callback triggered when modal has been closed */\n onClose?: () => void;\n /** Before close callback */\n onBeforeClose?: () => boolean;\n /** Position Menu */\n position?: Placement;\n /** Target element */\n target?: ElementWithRef<Element>;\n className?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Should Window be positioned absolutely */\n windowAbsolutelyPositioned?: boolean;\n /** Popper on open */\n onPopperOpen?: (...args) => void;\n}\n\nconst isFocusVisible = (element: Element | null) => {\n try {\n return Boolean(element?.matches(\":focus-visible\"));\n } catch {\n return false;\n }\n};\n\nconst TRIGGER = 'button, [role=\"button\"], a[href]';\n\n// A target can wrap its button, as a div around a Tooltip or a CounterButton does.\nconst triggerOf = (node: HTMLElement) =>\n node.matches(TRIGGER)\n ? node\n : node.querySelector<HTMLElement>(TRIGGER) ?? node;\n\nconst visibleBoxOf = (node: HTMLElement) => {\n const rects = [node, ...Array.from(node.children)].map((element) =>\n element.getBoundingClientRect()\n );\n\n return {\n left: Math.min(...rects.map((rect) => rect.left)),\n right: Math.max(...rects.map((rect) => rect.right)),\n top: Math.min(...rects.map((rect) => rect.top)),\n bottom: Math.max(...rects.map((rect) => rect.bottom)),\n };\n};\n\n// A control group pulls a wrapped button out of its wrapper by negative margins, so the menu lines up with the button.\nconst offsetToVisibleBox = (node: HTMLElement) => ({\n name: \"offset\",\n options: {\n offset: ({ placement }: { placement: Placement }): [number, number] => {\n if (triggerOf(node) === node) {\n return [0, 0];\n }\n\n const wrapper = node.getBoundingClientRect();\n const box = visibleBoxOf(node);\n const [side, align] = placement.split(\"-\");\n const vertical = side === \"top\" || side === \"bottom\";\n const start = vertical ? \"left\" : \"top\";\n const end = vertical ? \"right\" : \"bottom\";\n const skidding =\n align === \"start\"\n ? box[start] - wrapper[start]\n : align === \"end\"\n ? box[end] - wrapper[end]\n : (box[start] + box[end] - wrapper[start] - wrapper[end]) / 2;\n const distance = {\n bottom: box.bottom - wrapper.bottom,\n top: wrapper.top - box.top,\n right: box.right - wrapper.right,\n left: wrapper.left - box.left,\n }[side];\n\n return [skidding, distance ?? 0];\n },\n },\n});\n\n// A menu opened with the pointer hands the focus back without a focus ring, so its trigger does not stay lit.\nconst returnFocusOptions = (visible: boolean) =>\n ({ focusVisible: visible } as FocusOptions);\n\nexport const Menu: FC<IMenu> = ({\n children,\n disableFocusLock = false,\n onMenuClick,\n handleScroll = true,\n mode = \"normal\",\n open: defaultOpen = false,\n onOpen,\n onClose,\n onBeforeClose,\n position = \"bottom-start\",\n target,\n className,\n menuClassName,\n popperClassName,\n backgroundElementClass,\n windowAbsolutelyPositioned = false,\n onPopperOpen,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [exited, setExited] = useState(!defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<HTMLElement | null>(null);\n const isOpenAtLeastOnce = useRef(false);\n const wasOpen = useRef(open);\n const focusBeforeOpen = useRef<Element | null>(null);\n const focusWasVisible = useRef(false);\n const returnFocusTo = useRef<HTMLElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n\n // Read on the render that opens the menu, before the focus lock moves the focus inside it.\n if (open && !wasOpen.current && typeof document !== \"undefined\") {\n focusBeforeOpen.current = document.activeElement;\n focusWasVisible.current = isFocusVisible(document.activeElement);\n }\n wasOpen.current = open;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useEffect(() => {\n if (open) {\n setExited(false);\n }\n }, [open]);\n\n // Set on the node itself, so the trigger gets it also through a wrapper such as Tooltip.\n const expandedTrigger = useRef<HTMLElement | null>(null);\n const checkedTrigger = useRef<HTMLElement | null>(null);\n const triggerOwnsExpanded = useRef(false);\n\n useEffect(() => {\n const node = elementRef.current;\n\n if (!node) {\n return;\n }\n\n const trigger = triggerOf(node);\n\n // A trigger that renders its own aria-expanded keeps it, so the menu never clears its \"false\".\n if (checkedTrigger.current !== trigger) {\n checkedTrigger.current = trigger;\n triggerOwnsExpanded.current = trigger.hasAttribute(\"aria-expanded\");\n }\n\n if (!trigger.hasAttribute(\"aria-haspopup\")) {\n trigger.setAttribute(\"aria-haspopup\", \"true\");\n }\n\n if (triggerOwnsExpanded.current) {\n return;\n }\n\n if (open) {\n trigger.setAttribute(\"aria-expanded\", \"true\");\n expandedTrigger.current = trigger;\n } else if (expandedTrigger.current) {\n expandedTrigger.current.removeAttribute(\"aria-expanded\");\n expandedTrigger.current = null;\n }\n }, [open, childNode]);\n\n const handleRefRef = useForkRef(\n target ? target.ref : undefined,\n setChildNode\n );\n const handleRef = useForkRef(handleRefRef, elementRef);\n\n const popperModifiers = useMemo(\n () =>\n childNode instanceof HTMLElement\n ? [offsetToVisibleBox(childNode)]\n : undefined,\n [childNode]\n );\n\n const handleOpen = useCallback(\n (\n event: Pick<MouseEvent<Element>, \"preventDefault\" | \"stopPropagation\">\n ) => {\n event?.preventDefault();\n event?.stopPropagation();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, target?.props]\n );\n\n const handleClose = useCallback(() => {\n if (typeof onBeforeClose === \"function\" && !onBeforeClose()) {\n return;\n }\n setOpen(false);\n typeof onClose === \"function\" && onClose();\n }, [onClose, onBeforeClose]);\n\n const childProps = {\n forceClose: handleClose,\n };\n\n const targetProps = {\n open,\n ref: handleRef,\n onClick: handleOpen,\n };\n\n useEffect(() => {\n if (open) {\n isOpenAtLeastOnce.current = true;\n } else if (!open && isOpenAtLeastOnce.current) {\n const previous = focusBeforeOpen.current;\n const returnTo =\n previous instanceof HTMLElement && previous.isConnected\n ? previous\n : elementRef.current;\n\n returnFocusTo.current = returnTo;\n returnTo?.focus(returnFocusOptions(focusWasVisible.current));\n isOpenAtLeastOnce.current = false;\n }\n }, [open]);\n\n // A fading menu is already closed. Its content can still reach for the focus, and would take it away\n // with it when it unmounts, so the focus goes straight back to where the menu returned it.\n useEffect(() => {\n if (open || exited) {\n return undefined;\n }\n\n const keepFocusOut = (event: FocusEvent) => {\n if (popperRef.current?.contains(event.target as Node)) {\n returnFocusTo.current?.focus(\n returnFocusOptions(focusWasVisible.current)\n );\n }\n };\n\n document.addEventListener(\"focusin\", keepFocusOut, true);\n\n return () => document.removeEventListener(\"focusin\", keepFocusOut, true);\n }, [open, exited]);\n\n return (\n <>\n {target && React.cloneElement(target, targetProps)}\n {open || !exited ? (\n <Window\n onClose={handleClose}\n disableScrollLock={!handleScroll}\n // The menu returns the focus itself at once, so a late returnFocus cannot undo a caller's move.\n disableFocusLock={disableFocusLock || !open}\n // A fading menu is already closed, so an escape pressed meanwhile belongs to the page behind it.\n disableCloseOnEsc={!open}\n style={{\n position: windowAbsolutelyPositioned ? \"absolute\" : \"fixed\",\n }}\n >\n {/* A closing menu must not swallow the click that lands while it fades out. */}\n {open ? (\n <Overlay\n className={backgroundElementClass}\n onClick={handleClose}\n tabIndex={-1}\n disableBackgroundColor\n />\n ) : null}\n <Popper\n ref={popperRef}\n anchorEl={childNode}\n open={childNode ? open : false}\n placement={position}\n className={popperClassName}\n tabIndex={-1}\n afterWrite={onPopperOpen}\n modifiers={popperModifiers}\n transition\n >\n {({ placement, transitionProps }) => (\n <Grow\n placement={placement}\n in={transitionProps?.in}\n onEnter={transitionProps?.onEnter}\n onExited={() => {\n setExited(true);\n transitionProps?.onExited?.();\n }}\n >\n <StyledMenu\n className={classnames(\n \"c-simple-menu__paper\",\n `c-simple-menu__${mode}`,\n menuClassName,\n className\n )}\n $mode={mode}\n onMouseDown={onMenuClick}\n style={open ? undefined : { pointerEvents: \"none\" }}\n >\n <MenuContextProvider value={{ open, setOpen }}>\n {typeof children === \"function\"\n ? children(childProps)\n : children}\n </MenuContextProvider>\n </StyledMenu>\n </Grow>\n )}\n </Popper>\n </Window>\n ) : null}\n </>\n );\n};\n\nMenu.displayName = \"Menu\";\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../../src/components/Menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAEZ,EAAE,EACF,SAAS,EACT,UAAU,EAKV,YAAY,EACZ,GAAG,EACJ,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAW3C,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAID,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,KAAK;IACpB,mBAAmB;IACnB,QAAQ,EACJ,SAAS,GACT,CAAC,CAAC,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9D,4BAA4B;IAC5B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACvD,wBAAwB;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,oBAAoB;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qBAAqB;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6FAA6F;IAC7F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6CAA6C;IAC7C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,qBAAqB;IACrB,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,OAAA,KAAK,IAAI,CAAC;CAClC;AAoED,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,KAAK,CA+N1B,CAAC"}
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../../src/components/Menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAEZ,EAAE,EACF,SAAS,EACT,UAAU,EAKV,YAAY,EACZ,GAAG,EACJ,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAW3C,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAID,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,KAAK;IACpB,mBAAmB;IACnB,QAAQ,EACJ,SAAS,GACT,CAAC,CAAC,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9D,4BAA4B;IAC5B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACvD,wBAAwB;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,oBAAoB;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qBAAqB;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6FAA6F;IAC7F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6CAA6C;IAC7C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,qBAAqB;IACrB,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,OAAA,KAAK,IAAI,CAAC;CAClC;AAoED,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,KAAK,CA2O1B,CAAC"}
@@ -126,15 +126,26 @@ export const Menu = _ref2 => {
126
126
 
127
127
  // Set on the node itself, so the trigger gets it also through a wrapper such as Tooltip.
128
128
  const expandedTrigger = useRef(null);
129
+ const checkedTrigger = useRef(null);
130
+ const triggerOwnsExpanded = useRef(false);
129
131
  useEffect(() => {
130
132
  const node = elementRef.current;
131
133
  if (!node) {
132
134
  return;
133
135
  }
134
136
  const trigger = triggerOf(node);
137
+
138
+ // A trigger that renders its own aria-expanded keeps it, so the menu never clears its "false".
139
+ if (checkedTrigger.current !== trigger) {
140
+ checkedTrigger.current = trigger;
141
+ triggerOwnsExpanded.current = trigger.hasAttribute("aria-expanded");
142
+ }
135
143
  if (!trigger.hasAttribute("aria-haspopup")) {
136
144
  trigger.setAttribute("aria-haspopup", "true");
137
145
  }
146
+ if (triggerOwnsExpanded.current) {
147
+ return;
148
+ }
138
149
  if (open) {
139
150
  trigger.setAttribute("aria-expanded", "true");
140
151
  expandedTrigger.current = trigger;
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["React","useRef","useState","useCallback","useEffect","useMemo","classnames","MenuContextProvider","StyledMenu","useForkRef","Overlay","Popper","Grow","Window","isFocusVisible","element","Boolean","matches","_unused","TRIGGER","triggerOf","node","_node$querySelector","querySelector","visibleBoxOf","rects","Array","from","children","map","getBoundingClientRect","left","Math","min","rect","right","max","top","bottom","offsetToVisibleBox","name","options","offset","_ref","placement","wrapper","box","_placement$split","split","side","align","vertical","start","end","skidding","distance","returnFocusOptions","visible","focusVisible","Menu","_ref2","_ref2$disableFocusLoc","disableFocusLock","onMenuClick","_ref2$handleScroll","handleScroll","_ref2$mode","mode","_ref2$open","open","defaultOpen","onOpen","onClose","onBeforeClose","_ref2$position","position","target","className","menuClassName","popperClassName","backgroundElementClass","_ref2$windowAbsolutel","windowAbsolutelyPositioned","onPopperOpen","_useState","setOpen","_useState2","exited","setExited","_useState3","childNode","setChildNode","elementRef","isOpenAtLeastOnce","wasOpen","focusBeforeOpen","focusWasVisible","returnFocusTo","popperRef","current","document","activeElement","expandedTrigger","trigger","hasAttribute","setAttribute","removeAttribute","handleRefRef","ref","undefined","handleRef","popperModifiers","HTMLElement","handleOpen","event","_target$props","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","previous","returnTo","isConnected","focus","keepFocusOut","_popperRef$current","contains","_returnFocusTo$curren","addEventListener","removeEventListener","createElement","Fragment","cloneElement","disableScrollLock","disableCloseOnEsc","style","tabIndex","disableBackgroundColor","anchorEl","afterWrite","modifiers","transition","_ref3","transitionProps","in","onEnter","onExited","$mode","onMouseDown","pointerEvents","value","displayName"],"sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import React, {\n useRef,\n FC,\n ReactNode,\n MouseEvent,\n useState,\n useCallback,\n useEffect,\n useMemo,\n ReactElement,\n Ref,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classnames from \"classnames\";\n\nimport { MenuContextProvider } from \"./context\";\nimport { StyledMenu } from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Overlay } from \"../Overlay\";\nimport { Popper } from \"../Popper\";\nimport { Grow } from \"../Transitions\";\nimport { Window } from \"../Window\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\n// source: https://twitter.com/mattpocockuk/status/1671908303918473217/photo/1\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type MenuMode = \"normal\" | \"wider\" | \"tiny\" | \"widest\";\n\nexport interface IMenu {\n /** Menu content */\n children:\n | ReactNode\n | ((childProps: { forceClose: () => void }) => JSX.Element);\n /** On menu element click */\n onMenuClick?: (event: MouseEvent<HTMLElement>) => void;\n /** Handle scroll bar */\n handleScroll?: boolean;\n /** Disable Focus Lock */\n disableFocusLock?: boolean;\n /** Menu width mode */\n mode?: MenuMode;\n /** Should menu be open when it's mounted */\n open?: boolean;\n /** Callback triggered when modal has been opened */\n onOpen?: () => void;\n /** Callback triggered when modal has been closed */\n onClose?: () => void;\n /** Before close callback */\n onBeforeClose?: () => boolean;\n /** Position Menu */\n position?: Placement;\n /** Target element */\n target?: ElementWithRef<Element>;\n className?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Should Window be positioned absolutely */\n windowAbsolutelyPositioned?: boolean;\n /** Popper on open */\n onPopperOpen?: (...args) => void;\n}\n\nconst isFocusVisible = (element: Element | null) => {\n try {\n return Boolean(element?.matches(\":focus-visible\"));\n } catch {\n return false;\n }\n};\n\nconst TRIGGER = 'button, [role=\"button\"], a[href]';\n\n// A target can wrap its button, as a div around a Tooltip or a CounterButton does.\nconst triggerOf = (node: HTMLElement) =>\n node.matches(TRIGGER)\n ? node\n : node.querySelector<HTMLElement>(TRIGGER) ?? node;\n\nconst visibleBoxOf = (node: HTMLElement) => {\n const rects = [node, ...Array.from(node.children)].map((element) =>\n element.getBoundingClientRect()\n );\n\n return {\n left: Math.min(...rects.map((rect) => rect.left)),\n right: Math.max(...rects.map((rect) => rect.right)),\n top: Math.min(...rects.map((rect) => rect.top)),\n bottom: Math.max(...rects.map((rect) => rect.bottom)),\n };\n};\n\n// A control group pulls a wrapped button out of its wrapper by negative margins, so the menu lines up with the button.\nconst offsetToVisibleBox = (node: HTMLElement) => ({\n name: \"offset\",\n options: {\n offset: ({ placement }: { placement: Placement }): [number, number] => {\n if (triggerOf(node) === node) {\n return [0, 0];\n }\n\n const wrapper = node.getBoundingClientRect();\n const box = visibleBoxOf(node);\n const [side, align] = placement.split(\"-\");\n const vertical = side === \"top\" || side === \"bottom\";\n const start = vertical ? \"left\" : \"top\";\n const end = vertical ? \"right\" : \"bottom\";\n const skidding =\n align === \"start\"\n ? box[start] - wrapper[start]\n : align === \"end\"\n ? box[end] - wrapper[end]\n : (box[start] + box[end] - wrapper[start] - wrapper[end]) / 2;\n const distance = {\n bottom: box.bottom - wrapper.bottom,\n top: wrapper.top - box.top,\n right: box.right - wrapper.right,\n left: wrapper.left - box.left,\n }[side];\n\n return [skidding, distance ?? 0];\n },\n },\n});\n\n// A menu opened with the pointer hands the focus back without a focus ring, so its trigger does not stay lit.\nconst returnFocusOptions = (visible: boolean) =>\n ({ focusVisible: visible } as FocusOptions);\n\nexport const Menu: FC<IMenu> = ({\n children,\n disableFocusLock = false,\n onMenuClick,\n handleScroll = true,\n mode = \"normal\",\n open: defaultOpen = false,\n onOpen,\n onClose,\n onBeforeClose,\n position = \"bottom-start\",\n target,\n className,\n menuClassName,\n popperClassName,\n backgroundElementClass,\n windowAbsolutelyPositioned = false,\n onPopperOpen,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [exited, setExited] = useState(!defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<HTMLElement | null>(null);\n const isOpenAtLeastOnce = useRef(false);\n const wasOpen = useRef(open);\n const focusBeforeOpen = useRef<Element | null>(null);\n const focusWasVisible = useRef(false);\n const returnFocusTo = useRef<HTMLElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n\n // Read on the render that opens the menu, before the focus lock moves the focus inside it.\n if (open && !wasOpen.current && typeof document !== \"undefined\") {\n focusBeforeOpen.current = document.activeElement;\n focusWasVisible.current = isFocusVisible(document.activeElement);\n }\n wasOpen.current = open;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useEffect(() => {\n if (open) {\n setExited(false);\n }\n }, [open]);\n\n // Set on the node itself, so the trigger gets it also through a wrapper such as Tooltip.\n const expandedTrigger = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n const node = elementRef.current;\n\n if (!node) {\n return;\n }\n\n const trigger = triggerOf(node);\n\n if (!trigger.hasAttribute(\"aria-haspopup\")) {\n trigger.setAttribute(\"aria-haspopup\", \"true\");\n }\n\n if (open) {\n trigger.setAttribute(\"aria-expanded\", \"true\");\n expandedTrigger.current = trigger;\n } else if (expandedTrigger.current) {\n expandedTrigger.current.removeAttribute(\"aria-expanded\");\n expandedTrigger.current = null;\n }\n }, [open, childNode]);\n\n const handleRefRef = useForkRef(\n target ? target.ref : undefined,\n setChildNode\n );\n const handleRef = useForkRef(handleRefRef, elementRef);\n\n const popperModifiers = useMemo(\n () =>\n childNode instanceof HTMLElement\n ? [offsetToVisibleBox(childNode)]\n : undefined,\n [childNode]\n );\n\n const handleOpen = useCallback(\n (\n event: Pick<MouseEvent<Element>, \"preventDefault\" | \"stopPropagation\">\n ) => {\n event?.preventDefault();\n event?.stopPropagation();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, target?.props]\n );\n\n const handleClose = useCallback(() => {\n if (typeof onBeforeClose === \"function\" && !onBeforeClose()) {\n return;\n }\n setOpen(false);\n typeof onClose === \"function\" && onClose();\n }, [onClose, onBeforeClose]);\n\n const childProps = {\n forceClose: handleClose,\n };\n\n const targetProps = {\n open,\n ref: handleRef,\n onClick: handleOpen,\n };\n\n useEffect(() => {\n if (open) {\n isOpenAtLeastOnce.current = true;\n } else if (!open && isOpenAtLeastOnce.current) {\n const previous = focusBeforeOpen.current;\n const returnTo =\n previous instanceof HTMLElement && previous.isConnected\n ? previous\n : elementRef.current;\n\n returnFocusTo.current = returnTo;\n returnTo?.focus(returnFocusOptions(focusWasVisible.current));\n isOpenAtLeastOnce.current = false;\n }\n }, [open]);\n\n // A fading menu is already closed. Its content can still reach for the focus, and would take it away\n // with it when it unmounts, so the focus goes straight back to where the menu returned it.\n useEffect(() => {\n if (open || exited) {\n return undefined;\n }\n\n const keepFocusOut = (event: FocusEvent) => {\n if (popperRef.current?.contains(event.target as Node)) {\n returnFocusTo.current?.focus(\n returnFocusOptions(focusWasVisible.current)\n );\n }\n };\n\n document.addEventListener(\"focusin\", keepFocusOut, true);\n\n return () => document.removeEventListener(\"focusin\", keepFocusOut, true);\n }, [open, exited]);\n\n return (\n <>\n {target && React.cloneElement(target, targetProps)}\n {open || !exited ? (\n <Window\n onClose={handleClose}\n disableScrollLock={!handleScroll}\n // The menu returns the focus itself at once, so a late returnFocus cannot undo a caller's move.\n disableFocusLock={disableFocusLock || !open}\n // A fading menu is already closed, so an escape pressed meanwhile belongs to the page behind it.\n disableCloseOnEsc={!open}\n style={{\n position: windowAbsolutelyPositioned ? \"absolute\" : \"fixed\",\n }}\n >\n {/* A closing menu must not swallow the click that lands while it fades out. */}\n {open ? (\n <Overlay\n className={backgroundElementClass}\n onClick={handleClose}\n tabIndex={-1}\n disableBackgroundColor\n />\n ) : null}\n <Popper\n ref={popperRef}\n anchorEl={childNode}\n open={childNode ? open : false}\n placement={position}\n className={popperClassName}\n tabIndex={-1}\n afterWrite={onPopperOpen}\n modifiers={popperModifiers}\n transition\n >\n {({ placement, transitionProps }) => (\n <Grow\n placement={placement}\n in={transitionProps?.in}\n onEnter={transitionProps?.onEnter}\n onExited={() => {\n setExited(true);\n transitionProps?.onExited?.();\n }}\n >\n <StyledMenu\n className={classnames(\n \"c-simple-menu__paper\",\n `c-simple-menu__${mode}`,\n menuClassName,\n className\n )}\n $mode={mode}\n onMouseDown={onMenuClick}\n style={open ? undefined : { pointerEvents: \"none\" }}\n >\n <MenuContextProvider value={{ open, setOpen }}>\n {typeof children === \"function\"\n ? children(childProps)\n : children}\n </MenuContextProvider>\n </StyledMenu>\n </Grow>\n )}\n </Popper>\n </Window>\n ) : null}\n </>\n );\n};\n\nMenu.displayName = \"Menu\";\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Menu.js","names":["React","useRef","useState","useCallback","useEffect","useMemo","classnames","MenuContextProvider","StyledMenu","useForkRef","Overlay","Popper","Grow","Window","isFocusVisible","element","Boolean","matches","_unused","TRIGGER","triggerOf","node","_node$querySelector","querySelector","visibleBoxOf","rects","Array","from","children","map","getBoundingClientRect","left","Math","min","rect","right","max","top","bottom","offsetToVisibleBox","name","options","offset","_ref","placement","wrapper","box","_placement$split","split","side","align","vertical","start","end","skidding","distance","returnFocusOptions","visible","focusVisible","Menu","_ref2","_ref2$disableFocusLoc","disableFocusLock","onMenuClick","_ref2$handleScroll","handleScroll","_ref2$mode","mode","_ref2$open","open","defaultOpen","onOpen","onClose","onBeforeClose","_ref2$position","position","target","className","menuClassName","popperClassName","backgroundElementClass","_ref2$windowAbsolutel","windowAbsolutelyPositioned","onPopperOpen","_useState","setOpen","_useState2","exited","setExited","_useState3","childNode","setChildNode","elementRef","isOpenAtLeastOnce","wasOpen","focusBeforeOpen","focusWasVisible","returnFocusTo","popperRef","current","document","activeElement","expandedTrigger","checkedTrigger","triggerOwnsExpanded","trigger","hasAttribute","setAttribute","removeAttribute","handleRefRef","ref","undefined","handleRef","popperModifiers","HTMLElement","handleOpen","event","_target$props","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","previous","returnTo","isConnected","focus","keepFocusOut","_popperRef$current","contains","_returnFocusTo$curren","addEventListener","removeEventListener","createElement","Fragment","cloneElement","disableScrollLock","disableCloseOnEsc","style","tabIndex","disableBackgroundColor","anchorEl","afterWrite","modifiers","transition","_ref3","transitionProps","in","onEnter","onExited","$mode","onMouseDown","pointerEvents","value","displayName"],"sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import React, {\n useRef,\n FC,\n ReactNode,\n MouseEvent,\n useState,\n useCallback,\n useEffect,\n useMemo,\n ReactElement,\n Ref,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classnames from \"classnames\";\n\nimport { MenuContextProvider } from \"./context\";\nimport { StyledMenu } from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Overlay } from \"../Overlay\";\nimport { Popper } from \"../Popper\";\nimport { Grow } from \"../Transitions\";\nimport { Window } from \"../Window\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\n// source: https://twitter.com/mattpocockuk/status/1671908303918473217/photo/1\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type MenuMode = \"normal\" | \"wider\" | \"tiny\" | \"widest\";\n\nexport interface IMenu {\n /** Menu content */\n children:\n | ReactNode\n | ((childProps: { forceClose: () => void }) => JSX.Element);\n /** On menu element click */\n onMenuClick?: (event: MouseEvent<HTMLElement>) => void;\n /** Handle scroll bar */\n handleScroll?: boolean;\n /** Disable Focus Lock */\n disableFocusLock?: boolean;\n /** Menu width mode */\n mode?: MenuMode;\n /** Should menu be open when it's mounted */\n open?: boolean;\n /** Callback triggered when modal has been opened */\n onOpen?: () => void;\n /** Callback triggered when modal has been closed */\n onClose?: () => void;\n /** Before close callback */\n onBeforeClose?: () => boolean;\n /** Position Menu */\n position?: Placement;\n /** Target element */\n target?: ElementWithRef<Element>;\n className?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Should Window be positioned absolutely */\n windowAbsolutelyPositioned?: boolean;\n /** Popper on open */\n onPopperOpen?: (...args) => void;\n}\n\nconst isFocusVisible = (element: Element | null) => {\n try {\n return Boolean(element?.matches(\":focus-visible\"));\n } catch {\n return false;\n }\n};\n\nconst TRIGGER = 'button, [role=\"button\"], a[href]';\n\n// A target can wrap its button, as a div around a Tooltip or a CounterButton does.\nconst triggerOf = (node: HTMLElement) =>\n node.matches(TRIGGER)\n ? node\n : node.querySelector<HTMLElement>(TRIGGER) ?? node;\n\nconst visibleBoxOf = (node: HTMLElement) => {\n const rects = [node, ...Array.from(node.children)].map((element) =>\n element.getBoundingClientRect()\n );\n\n return {\n left: Math.min(...rects.map((rect) => rect.left)),\n right: Math.max(...rects.map((rect) => rect.right)),\n top: Math.min(...rects.map((rect) => rect.top)),\n bottom: Math.max(...rects.map((rect) => rect.bottom)),\n };\n};\n\n// A control group pulls a wrapped button out of its wrapper by negative margins, so the menu lines up with the button.\nconst offsetToVisibleBox = (node: HTMLElement) => ({\n name: \"offset\",\n options: {\n offset: ({ placement }: { placement: Placement }): [number, number] => {\n if (triggerOf(node) === node) {\n return [0, 0];\n }\n\n const wrapper = node.getBoundingClientRect();\n const box = visibleBoxOf(node);\n const [side, align] = placement.split(\"-\");\n const vertical = side === \"top\" || side === \"bottom\";\n const start = vertical ? \"left\" : \"top\";\n const end = vertical ? \"right\" : \"bottom\";\n const skidding =\n align === \"start\"\n ? box[start] - wrapper[start]\n : align === \"end\"\n ? box[end] - wrapper[end]\n : (box[start] + box[end] - wrapper[start] - wrapper[end]) / 2;\n const distance = {\n bottom: box.bottom - wrapper.bottom,\n top: wrapper.top - box.top,\n right: box.right - wrapper.right,\n left: wrapper.left - box.left,\n }[side];\n\n return [skidding, distance ?? 0];\n },\n },\n});\n\n// A menu opened with the pointer hands the focus back without a focus ring, so its trigger does not stay lit.\nconst returnFocusOptions = (visible: boolean) =>\n ({ focusVisible: visible } as FocusOptions);\n\nexport const Menu: FC<IMenu> = ({\n children,\n disableFocusLock = false,\n onMenuClick,\n handleScroll = true,\n mode = \"normal\",\n open: defaultOpen = false,\n onOpen,\n onClose,\n onBeforeClose,\n position = \"bottom-start\",\n target,\n className,\n menuClassName,\n popperClassName,\n backgroundElementClass,\n windowAbsolutelyPositioned = false,\n onPopperOpen,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [exited, setExited] = useState(!defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<HTMLElement | null>(null);\n const isOpenAtLeastOnce = useRef(false);\n const wasOpen = useRef(open);\n const focusBeforeOpen = useRef<Element | null>(null);\n const focusWasVisible = useRef(false);\n const returnFocusTo = useRef<HTMLElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n\n // Read on the render that opens the menu, before the focus lock moves the focus inside it.\n if (open && !wasOpen.current && typeof document !== \"undefined\") {\n focusBeforeOpen.current = document.activeElement;\n focusWasVisible.current = isFocusVisible(document.activeElement);\n }\n wasOpen.current = open;\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n useEffect(() => {\n if (open) {\n setExited(false);\n }\n }, [open]);\n\n // Set on the node itself, so the trigger gets it also through a wrapper such as Tooltip.\n const expandedTrigger = useRef<HTMLElement | null>(null);\n const checkedTrigger = useRef<HTMLElement | null>(null);\n const triggerOwnsExpanded = useRef(false);\n\n useEffect(() => {\n const node = elementRef.current;\n\n if (!node) {\n return;\n }\n\n const trigger = triggerOf(node);\n\n // A trigger that renders its own aria-expanded keeps it, so the menu never clears its \"false\".\n if (checkedTrigger.current !== trigger) {\n checkedTrigger.current = trigger;\n triggerOwnsExpanded.current = trigger.hasAttribute(\"aria-expanded\");\n }\n\n if (!trigger.hasAttribute(\"aria-haspopup\")) {\n trigger.setAttribute(\"aria-haspopup\", \"true\");\n }\n\n if (triggerOwnsExpanded.current) {\n return;\n }\n\n if (open) {\n trigger.setAttribute(\"aria-expanded\", \"true\");\n expandedTrigger.current = trigger;\n } else if (expandedTrigger.current) {\n expandedTrigger.current.removeAttribute(\"aria-expanded\");\n expandedTrigger.current = null;\n }\n }, [open, childNode]);\n\n const handleRefRef = useForkRef(\n target ? target.ref : undefined,\n setChildNode\n );\n const handleRef = useForkRef(handleRefRef, elementRef);\n\n const popperModifiers = useMemo(\n () =>\n childNode instanceof HTMLElement\n ? [offsetToVisibleBox(childNode)]\n : undefined,\n [childNode]\n );\n\n const handleOpen = useCallback(\n (\n event: Pick<MouseEvent<Element>, \"preventDefault\" | \"stopPropagation\">\n ) => {\n event?.preventDefault();\n event?.stopPropagation();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, target?.props]\n );\n\n const handleClose = useCallback(() => {\n if (typeof onBeforeClose === \"function\" && !onBeforeClose()) {\n return;\n }\n setOpen(false);\n typeof onClose === \"function\" && onClose();\n }, [onClose, onBeforeClose]);\n\n const childProps = {\n forceClose: handleClose,\n };\n\n const targetProps = {\n open,\n ref: handleRef,\n onClick: handleOpen,\n };\n\n useEffect(() => {\n if (open) {\n isOpenAtLeastOnce.current = true;\n } else if (!open && isOpenAtLeastOnce.current) {\n const previous = focusBeforeOpen.current;\n const returnTo =\n previous instanceof HTMLElement && previous.isConnected\n ? previous\n : elementRef.current;\n\n returnFocusTo.current = returnTo;\n returnTo?.focus(returnFocusOptions(focusWasVisible.current));\n isOpenAtLeastOnce.current = false;\n }\n }, [open]);\n\n // A fading menu is already closed. Its content can still reach for the focus, and would take it away\n // with it when it unmounts, so the focus goes straight back to where the menu returned it.\n useEffect(() => {\n if (open || exited) {\n return undefined;\n }\n\n const keepFocusOut = (event: FocusEvent) => {\n if (popperRef.current?.contains(event.target as Node)) {\n returnFocusTo.current?.focus(\n returnFocusOptions(focusWasVisible.current)\n );\n }\n };\n\n document.addEventListener(\"focusin\", keepFocusOut, true);\n\n return () => document.removeEventListener(\"focusin\", keepFocusOut, true);\n }, [open, exited]);\n\n return (\n <>\n {target && React.cloneElement(target, targetProps)}\n {open || !exited ? (\n <Window\n onClose={handleClose}\n disableScrollLock={!handleScroll}\n // The menu returns the focus itself at once, so a late returnFocus cannot undo a caller's move.\n disableFocusLock={disableFocusLock || !open}\n // A fading menu is already closed, so an escape pressed meanwhile belongs to the page behind it.\n disableCloseOnEsc={!open}\n style={{\n position: windowAbsolutelyPositioned ? \"absolute\" : \"fixed\",\n }}\n >\n {/* A closing menu must not swallow the click that lands while it fades out. */}\n {open ? (\n <Overlay\n className={backgroundElementClass}\n onClick={handleClose}\n tabIndex={-1}\n disableBackgroundColor\n />\n ) : null}\n <Popper\n ref={popperRef}\n anchorEl={childNode}\n open={childNode ? open : false}\n placement={position}\n className={popperClassName}\n tabIndex={-1}\n afterWrite={onPopperOpen}\n modifiers={popperModifiers}\n transition\n >\n {({ placement, transitionProps }) => (\n <Grow\n placement={placement}\n in={transitionProps?.in}\n onEnter={transitionProps?.onEnter}\n onExited={() => {\n setExited(true);\n transitionProps?.onExited?.();\n }}\n >\n <StyledMenu\n className={classnames(\n \"c-simple-menu__paper\",\n `c-simple-menu__${mode}`,\n menuClassName,\n className\n )}\n $mode={mode}\n onMouseDown={onMenuClick}\n style={open ? undefined : { pointerEvents: \"none\" }}\n >\n <MenuContextProvider value={{ open, setOpen }}>\n {typeof children === \"function\"\n ? children(childProps)\n : children}\n </MenuContextProvider>\n </StyledMenu>\n </Grow>\n )}\n </Popper>\n </Window>\n ) : null}\n </>\n );\n};\n\nMenu.displayName = \"Menu\";\n"],"mappings":"AAAA,OAAOA,KAAK,IACVC,MAAM,EAINC,QAAQ,EACRC,WAAW,EACXC,SAAS,EACTC,OAAO,QAGF,OAAO;AAGd,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAASC,mBAAmB,QAAQ,WAAW;AAC/C,SAASC,UAAU,QAAQ,UAAU;AACrC,OAAOC,UAAU,MAAM,wBAAwB;AAC/C,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,IAAI,QAAQ,gBAAgB;AACrC,SAASC,MAAM,QAAQ,WAAW;;AAMlC;AACA;;AAyCA,MAAMC,cAAc,GAAIC,OAAuB,IAAK;EAClD,IAAI;IACF,OAAOC,OAAO,CAACD,OAAO,oBAAPA,OAAO,CAAEE,OAAO,CAAC,gBAAgB,CAAC,CAAC;EACpD,CAAC,CAAC,OAAAC,OAAA,EAAM;IACN,OAAO,KAAK;EACd;AACF,CAAC;AAED,MAAMC,OAAO,GAAG,kCAAkC;;AAElD;AACA,MAAMC,SAAS,GAAIC,IAAiB;EAAA,IAAAC,mBAAA;EAAA,OAClCD,IAAI,CAACJ,OAAO,CAACE,OAAO,CAAC,GACjBE,IAAI,IAAAC,mBAAA,GACJD,IAAI,CAACE,aAAa,CAAcJ,OAAO,CAAC,YAAAG,mBAAA,GAAID,IAAI;AAAA;AAEtD,MAAMG,YAAY,GAAIH,IAAiB,IAAK;EAC1C,MAAMI,KAAK,GAAG,CAACJ,IAAI,EAAE,GAAGK,KAAK,CAACC,IAAI,CAACN,IAAI,CAACO,QAAQ,CAAC,CAAC,CAACC,GAAG,CAAEd,OAAO,IAC7DA,OAAO,CAACe,qBAAqB,CAAC,CAChC,CAAC;EAED,OAAO;IACLC,IAAI,EAAEC,IAAI,CAACC,GAAG,CAAC,GAAGR,KAAK,CAACI,GAAG,CAAEK,IAAI,IAAKA,IAAI,CAACH,IAAI,CAAC,CAAC;IACjDI,KAAK,EAAEH,IAAI,CAACI,GAAG,CAAC,GAAGX,KAAK,CAACI,GAAG,CAAEK,IAAI,IAAKA,IAAI,CAACC,KAAK,CAAC,CAAC;IACnDE,GAAG,EAAEL,IAAI,CAACC,GAAG,CAAC,GAAGR,KAAK,CAACI,GAAG,CAAEK,IAAI,IAAKA,IAAI,CAACG,GAAG,CAAC,CAAC;IAC/CC,MAAM,EAAEN,IAAI,CAACI,GAAG,CAAC,GAAGX,KAAK,CAACI,GAAG,CAAEK,IAAI,IAAKA,IAAI,CAACI,MAAM,CAAC;EACtD,CAAC;AACH,CAAC;;AAED;AACA,MAAMC,kBAAkB,GAAIlB,IAAiB,KAAM;EACjDmB,IAAI,EAAE,QAAQ;EACdC,OAAO,EAAE;IACPC,MAAM,EAAEC,IAAA,IAA+D;MAAA,IAA5DC,SAAS,GAAAD,IAAA,CAATC,SAAS;MAClB,IAAIxB,SAAS,CAACC,IAAI,CAAC,KAAKA,IAAI,EAAE;QAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;MACf;MAEA,MAAMwB,OAAO,GAAGxB,IAAI,CAACS,qBAAqB,CAAC,CAAC;MAC5C,MAAMgB,GAAG,GAAGtB,YAAY,CAACH,IAAI,CAAC;MAC9B,MAAA0B,gBAAA,GAAsBH,SAAS,CAACI,KAAK,CAAC,GAAG,CAAC;QAAnCC,IAAI,GAAAF,gBAAA;QAAEG,KAAK,GAAAH,gBAAA;MAClB,MAAMI,QAAQ,GAAGF,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,QAAQ;MACpD,MAAMG,KAAK,GAAGD,QAAQ,GAAG,MAAM,GAAG,KAAK;MACvC,MAAME,GAAG,GAAGF,QAAQ,GAAG,OAAO,GAAG,QAAQ;MACzC,MAAMG,QAAQ,GACZJ,KAAK,KAAK,OAAO,GACbJ,GAAG,CAACM,KAAK,CAAC,GAAGP,OAAO,CAACO,KAAK,CAAC,GAC3BF,KAAK,KAAK,KAAK,GACfJ,GAAG,CAACO,GAAG,CAAC,GAAGR,OAAO,CAACQ,GAAG,CAAC,GACvB,CAACP,GAAG,CAACM,KAAK,CAAC,GAAGN,GAAG,CAACO,GAAG,CAAC,GAAGR,OAAO,CAACO,KAAK,CAAC,GAAGP,OAAO,CAACQ,GAAG,CAAC,IAAI,CAAC;MACjE,MAAME,QAAQ,GAAG;QACfjB,MAAM,EAAEQ,GAAG,CAACR,MAAM,GAAGO,OAAO,CAACP,MAAM;QACnCD,GAAG,EAAEQ,OAAO,CAACR,GAAG,GAAGS,GAAG,CAACT,GAAG;QAC1BF,KAAK,EAAEW,GAAG,CAACX,KAAK,GAAGU,OAAO,CAACV,KAAK;QAChCJ,IAAI,EAAEc,OAAO,CAACd,IAAI,GAAGe,GAAG,CAACf;MAC3B,CAAC,CAACkB,IAAI,CAAC;MAEP,OAAO,CAACK,QAAQ,EAAEC,QAAQ,WAARA,QAAQ,GAAI,CAAC,CAAC;IAClC;EACF;AACF,CAAC,CAAC;;AAEF;AACA,MAAMC,kBAAkB,GAAIC,OAAgB,KACzC;EAAEC,YAAY,EAAED;AAAQ,CAAC,CAAiB;AAE7C,OAAO,MAAME,IAAe,GAAGC,KAAA,IAkBzB;EAAA,IAjBJhC,QAAQ,GAAAgC,KAAA,CAARhC,QAAQ;IAAAiC,qBAAA,GAAAD,KAAA,CACRE,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IACxBE,WAAW,GAAAH,KAAA,CAAXG,WAAW;IAAAC,kBAAA,GAAAJ,KAAA,CACXK,YAAY;IAAZA,YAAY,GAAAD,kBAAA,cAAG,IAAI,GAAAA,kBAAA;IAAAE,UAAA,GAAAN,KAAA,CACnBO,IAAI;IAAJA,IAAI,GAAAD,UAAA,cAAG,QAAQ,GAAAA,UAAA;IAAAE,UAAA,GAAAR,KAAA,CACfS,IAAI;IAAEC,WAAW,GAAAF,UAAA,cAAG,KAAK,GAAAA,UAAA;IACzBG,MAAM,GAAAX,KAAA,CAANW,MAAM;IACNC,OAAO,GAAAZ,KAAA,CAAPY,OAAO;IACPC,aAAa,GAAAb,KAAA,CAAba,aAAa;IAAAC,cAAA,GAAAd,KAAA,CACbe,QAAQ;IAARA,QAAQ,GAAAD,cAAA,cAAG,cAAc,GAAAA,cAAA;IACzBE,MAAM,GAAAhB,KAAA,CAANgB,MAAM;IACNC,SAAS,GAAAjB,KAAA,CAATiB,SAAS;IACTC,aAAa,GAAAlB,KAAA,CAAbkB,aAAa;IACbC,eAAe,GAAAnB,KAAA,CAAfmB,eAAe;IACfC,sBAAsB,GAAApB,KAAA,CAAtBoB,sBAAsB;IAAAC,qBAAA,GAAArB,KAAA,CACtBsB,0BAA0B;IAA1BA,0BAA0B,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAClCE,YAAY,GAAAvB,KAAA,CAAZuB,YAAY;EAEZ,MAAAC,SAAA,GAAwBlF,QAAQ,CAACoE,WAAW,CAAC;IAAtCD,IAAI,GAAAe,SAAA;IAAEC,OAAO,GAAAD,SAAA;EACpB,MAAAE,UAAA,GAA4BpF,QAAQ,CAAC,CAACoE,WAAW,CAAC;IAA3CiB,MAAM,GAAAD,UAAA;IAAEE,SAAS,GAAAF,UAAA;EACxB,MAAAG,UAAA,GAAkCvF,QAAQ,CAAiB,CAAC;IAArDwF,SAAS,GAAAD,UAAA;IAAEE,YAAY,GAAAF,UAAA;EAC9B,MAAMG,UAAU,GAAG3F,MAAM,CAAqB,IAAI,CAAC;EACnD,MAAM4F,iBAAiB,GAAG5F,MAAM,CAAC,KAAK,CAAC;EACvC,MAAM6F,OAAO,GAAG7F,MAAM,CAACoE,IAAI,CAAC;EAC5B,MAAM0B,eAAe,GAAG9F,MAAM,CAAiB,IAAI,CAAC;EACpD,MAAM+F,eAAe,GAAG/F,MAAM,CAAC,KAAK,CAAC;EACrC,MAAMgG,aAAa,GAAGhG,MAAM,CAAqB,IAAI,CAAC;EACtD,MAAMiG,SAAS,GAAGjG,MAAM,CAAwB,IAAI,CAAC;;EAErD;EACA,IAAIoE,IAAI,IAAI,CAACyB,OAAO,CAACK,OAAO,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IAC/DL,eAAe,CAACI,OAAO,GAAGC,QAAQ,CAACC,aAAa;IAChDL,eAAe,CAACG,OAAO,GAAGrF,cAAc,CAACsF,QAAQ,CAACC,aAAa,CAAC;EAClE;EACAP,OAAO,CAACK,OAAO,GAAG9B,IAAI;EAEtBjE,SAAS,CAAC,MAAM;IACdiF,OAAO,CAACf,WAAW,CAAC;EACtB,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjBlE,SAAS,CAAC,MAAM;IACd,IAAIiE,IAAI,EAAE;MACRmB,SAAS,CAAC,KAAK,CAAC;IAClB;EACF,CAAC,EAAE,CAACnB,IAAI,CAAC,CAAC;;EAEV;EACA,MAAMiC,eAAe,GAAGrG,MAAM,CAAqB,IAAI,CAAC;EACxD,MAAMsG,cAAc,GAAGtG,MAAM,CAAqB,IAAI,CAAC;EACvD,MAAMuG,mBAAmB,GAAGvG,MAAM,CAAC,KAAK,CAAC;EAEzCG,SAAS,CAAC,MAAM;IACd,MAAMiB,IAAI,GAAGuE,UAAU,CAACO,OAAO;IAE/B,IAAI,CAAC9E,IAAI,EAAE;MACT;IACF;IAEA,MAAMoF,OAAO,GAAGrF,SAAS,CAACC,IAAI,CAAC;;IAE/B;IACA,IAAIkF,cAAc,CAACJ,OAAO,KAAKM,OAAO,EAAE;MACtCF,cAAc,CAACJ,OAAO,GAAGM,OAAO;MAChCD,mBAAmB,CAACL,OAAO,GAAGM,OAAO,CAACC,YAAY,CAAC,eAAe,CAAC;IACrE;IAEA,IAAI,CAACD,OAAO,CAACC,YAAY,CAAC,eAAe,CAAC,EAAE;MAC1CD,OAAO,CAACE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IAC/C;IAEA,IAAIH,mBAAmB,CAACL,OAAO,EAAE;MAC/B;IACF;IAEA,IAAI9B,IAAI,EAAE;MACRoC,OAAO,CAACE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;MAC7CL,eAAe,CAACH,OAAO,GAAGM,OAAO;IACnC,CAAC,MAAM,IAAIH,eAAe,CAACH,OAAO,EAAE;MAClCG,eAAe,CAACH,OAAO,CAACS,eAAe,CAAC,eAAe,CAAC;MACxDN,eAAe,CAACH,OAAO,GAAG,IAAI;IAChC;EACF,CAAC,EAAE,CAAC9B,IAAI,EAAEqB,SAAS,CAAC,CAAC;EAErB,MAAMmB,YAAY,GAAGpG,UAAU,CAC7BmE,MAAM,GAAGA,MAAM,CAACkC,GAAG,GAAGC,SAAS,EAC/BpB,YACF,CAAC;EACD,MAAMqB,SAAS,GAAGvG,UAAU,CAACoG,YAAY,EAAEjB,UAAU,CAAC;EAEtD,MAAMqB,eAAe,GAAG5G,OAAO,CAC7B,MACEqF,SAAS,YAAYwB,WAAW,GAC5B,CAAC3E,kBAAkB,CAACmD,SAAS,CAAC,CAAC,GAC/BqB,SAAS,EACf,CAACrB,SAAS,CACZ,CAAC;EAED,MAAMyB,UAAU,GAAGhH,WAAW,CAE1BiH,KAAsE,IACnE;IAAA,IAAAC,aAAA;IACHD,KAAK,YAALA,KAAK,CAAEE,cAAc,CAAC,CAAC;IACvBF,KAAK,YAALA,KAAK,CAAEG,eAAe,CAAC,CAAC;IACxBlC,OAAO,CAAC,IAAI,CAAC;IACb,OAAOd,MAAM,KAAK,UAAU,IAAIA,MAAM,CAAC,CAAC;IACxC,QAAOK,MAAM,aAAAyC,aAAA,GAANzC,MAAM,CAAE4C,KAAK,qBAAbH,aAAA,CAAeI,OAAO,MAAK,UAAU,IAC1C7C,MAAM,CAAC4C,KAAK,CAACC,OAAO,CAACL,KAAK,CAAC;EAC/B,CAAC,EACD,CAAC7C,MAAM,EAAEK,MAAM,oBAANA,MAAM,CAAE4C,KAAK,CACxB,CAAC;EAED,MAAME,WAAW,GAAGvH,WAAW,CAAC,MAAM;IACpC,IAAI,OAAOsE,aAAa,KAAK,UAAU,IAAI,CAACA,aAAa,CAAC,CAAC,EAAE;MAC3D;IACF;IACAY,OAAO,CAAC,KAAK,CAAC;IACd,OAAOb,OAAO,KAAK,UAAU,IAAIA,OAAO,CAAC,CAAC;EAC5C,CAAC,EAAE,CAACA,OAAO,EAAEC,aAAa,CAAC,CAAC;EAE5B,MAAMkD,UAAU,GAAG;IACjBC,UAAU,EAAEF;EACd,CAAC;EAED,MAAMG,WAAW,GAAG;IAClBxD,IAAI;IACJyC,GAAG,EAAEE,SAAS;IACdS,OAAO,EAAEN;EACX,CAAC;EAED/G,SAAS,CAAC,MAAM;IACd,IAAIiE,IAAI,EAAE;MACRwB,iBAAiB,CAACM,OAAO,GAAG,IAAI;IAClC,CAAC,MAAM,IAAI,CAAC9B,IAAI,IAAIwB,iBAAiB,CAACM,OAAO,EAAE;MAC7C,MAAM2B,QAAQ,GAAG/B,eAAe,CAACI,OAAO;MACxC,MAAM4B,QAAQ,GACZD,QAAQ,YAAYZ,WAAW,IAAIY,QAAQ,CAACE,WAAW,GACnDF,QAAQ,GACRlC,UAAU,CAACO,OAAO;MAExBF,aAAa,CAACE,OAAO,GAAG4B,QAAQ;MAChCA,QAAQ,YAARA,QAAQ,CAAEE,KAAK,CAACzE,kBAAkB,CAACwC,eAAe,CAACG,OAAO,CAAC,CAAC;MAC5DN,iBAAiB,CAACM,OAAO,GAAG,KAAK;IACnC;EACF,CAAC,EAAE,CAAC9B,IAAI,CAAC,CAAC;;EAEV;EACA;EACAjE,SAAS,CAAC,MAAM;IACd,IAAIiE,IAAI,IAAIkB,MAAM,EAAE;MAClB,OAAOwB,SAAS;IAClB;IAEA,MAAMmB,YAAY,GAAId,KAAiB,IAAK;MAAA,IAAAe,kBAAA;MAC1C,KAAAA,kBAAA,GAAIjC,SAAS,CAACC,OAAO,aAAjBgC,kBAAA,CAAmBC,QAAQ,CAAChB,KAAK,CAACxC,MAAc,CAAC,EAAE;QAAA,IAAAyD,qBAAA;QACrD,CAAAA,qBAAA,GAAApC,aAAa,CAACE,OAAO,aAArBkC,qBAAA,CAAuBJ,KAAK,CAC1BzE,kBAAkB,CAACwC,eAAe,CAACG,OAAO,CAC5C,CAAC;MACH;IACF,CAAC;IAEDC,QAAQ,CAACkC,gBAAgB,CAAC,SAAS,EAAEJ,YAAY,EAAE,IAAI,CAAC;IAExD,OAAO,MAAM9B,QAAQ,CAACmC,mBAAmB,CAAC,SAAS,EAAEL,YAAY,EAAE,IAAI,CAAC;EAC1E,CAAC,EAAE,CAAC7D,IAAI,EAAEkB,MAAM,CAAC,CAAC;EAElB,oBACEvF,KAAA,CAAAwI,aAAA,CAAAxI,KAAA,CAAAyI,QAAA,QACG7D,MAAM,iBAAI5E,KAAK,CAAC0I,YAAY,CAAC9D,MAAM,EAAEiD,WAAW,CAAC,EACjDxD,IAAI,IAAI,CAACkB,MAAM,gBACdvF,KAAA,CAAAwI,aAAA,CAAC3H,MAAM;IACL2D,OAAO,EAAEkD,WAAY;IACrBiB,iBAAiB,EAAE,CAAC1E;IACpB;IAAA;IACAH,gBAAgB,EAAEA,gBAAgB,IAAI,CAACO;IACvC;IAAA;IACAuE,iBAAiB,EAAE,CAACvE,IAAK;IACzBwE,KAAK,EAAE;MACLlE,QAAQ,EAAEO,0BAA0B,GAAG,UAAU,GAAG;IACtD;EAAE,GAGDb,IAAI,gBACHrE,KAAA,CAAAwI,aAAA,CAAC9H,OAAO;IACNmE,SAAS,EAAEG,sBAAuB;IAClCyC,OAAO,EAAEC,WAAY;IACrBoB,QAAQ,EAAE,CAAC,CAAE;IACbC,sBAAsB;EAAA,CACvB,CAAC,GACA,IAAI,eACR/I,KAAA,CAAAwI,aAAA,CAAC7H,MAAM;IACLmG,GAAG,EAAEZ,SAAU;IACf8C,QAAQ,EAAEtD,SAAU;IACpBrB,IAAI,EAAEqB,SAAS,GAAGrB,IAAI,GAAG,KAAM;IAC/BzB,SAAS,EAAE+B,QAAS;IACpBE,SAAS,EAAEE,eAAgB;IAC3B+D,QAAQ,EAAE,CAAC,CAAE;IACbG,UAAU,EAAE9D,YAAa;IACzB+D,SAAS,EAAEjC,eAAgB;IAC3BkC,UAAU;EAAA,GAETC,KAAA;IAAA,IAAGxG,SAAS,GAAAwG,KAAA,CAATxG,SAAS;MAAEyG,eAAe,GAAAD,KAAA,CAAfC,eAAe;IAAA,oBAC5BrJ,KAAA,CAAAwI,aAAA,CAAC5H,IAAI;MACHgC,SAAS,EAAEA,SAAU;MACrB0G,EAAE,EAAED,eAAe,oBAAfA,eAAe,CAAEC,EAAG;MACxBC,OAAO,EAAEF,eAAe,oBAAfA,eAAe,CAAEE,OAAQ;MAClCC,QAAQ,EAAEA,CAAA,KAAM;QACdhE,SAAS,CAAC,IAAI,CAAC;QACf6D,eAAe,YAAfA,eAAe,CAAEG,QAAQ,YAAzBH,eAAe,CAAEG,QAAQ,CAAG,CAAC;MAC/B;IAAE,gBAEFxJ,KAAA,CAAAwI,aAAA,CAAChI,UAAU;MACTqE,SAAS,EAAEvE,UAAU,CACnB,sBAAsB,sBACJ6D,IAAI,EACtBW,aAAa,EACbD,SACF,CAAE;MACF4E,KAAK,EAAEtF,IAAK;MACZuF,WAAW,EAAE3F,WAAY;MACzB8E,KAAK,EAAExE,IAAI,GAAG0C,SAAS,GAAG;QAAE4C,aAAa,EAAE;MAAO;IAAE,gBAEpD3J,KAAA,CAAAwI,aAAA,CAACjI,mBAAmB;MAACqJ,KAAK,EAAE;QAAEvF,IAAI;QAAEgB;MAAQ;IAAE,GAC3C,OAAOzD,QAAQ,KAAK,UAAU,GAC3BA,QAAQ,CAAC+F,UAAU,CAAC,GACpB/F,QACe,CACX,CACR,CAAC;EAAA,CAEH,CACF,CAAC,GACP,IACJ,CAAC;AAEP,CAAC;AAED+B,IAAI,CAACkG,WAAW,GAAG,MAAM","ignoreList":[]}
package/dist/index.js CHANGED
@@ -15803,15 +15803,26 @@
15803
15803
 
15804
15804
  // Set on the node itself, so the trigger gets it also through a wrapper such as Tooltip.
15805
15805
  var expandedTrigger = React.useRef(null);
15806
+ var checkedTrigger = React.useRef(null);
15807
+ var triggerOwnsExpanded = React.useRef(false);
15806
15808
  React.useEffect(function () {
15807
15809
  var node = elementRef.current;
15808
15810
  if (!node) {
15809
15811
  return;
15810
15812
  }
15811
15813
  var trigger = triggerOf(node);
15814
+
15815
+ // A trigger that renders its own aria-expanded keeps it, so the menu never clears its "false".
15816
+ if (checkedTrigger.current !== trigger) {
15817
+ checkedTrigger.current = trigger;
15818
+ triggerOwnsExpanded.current = trigger.hasAttribute("aria-expanded");
15819
+ }
15812
15820
  if (!trigger.hasAttribute("aria-haspopup")) {
15813
15821
  trigger.setAttribute("aria-haspopup", "true");
15814
15822
  }
15823
+ if (triggerOwnsExpanded.current) {
15824
+ return;
15825
+ }
15815
15826
  if (open) {
15816
15827
  trigger.setAttribute("aria-expanded", "true");
15817
15828
  expandedTrigger.current = trigger;