@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.
- package/dist/cjs/components/Menu/Menu.js +11 -0
- package/dist/cjs/components/Menu/Menu.js.map +1 -1
- package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
- package/dist/esm/components/Menu/Menu.js +11 -0
- package/dist/esm/components/Menu/Menu.js.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -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,
|
|
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":"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","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;
|