diff --git a/packages/lib/src/base-menu/GroupItem.tsx b/packages/lib/src/base-menu/GroupItem.tsx index 177e1dab3..f00fa023d 100644 --- a/packages/lib/src/base-menu/GroupItem.tsx +++ b/packages/lib/src/base-menu/GroupItem.tsx @@ -1,108 +1,76 @@ -import { useContext, useEffect, useId, useState } from "react"; +import { useContext, useId } from "react"; import DxcIcon from "../icon/Icon"; import SubMenu from "./SubMenu"; import ItemAction from "./ItemAction"; import MenuItem from "./MenuItem"; import { GroupItemProps } from "./types"; -import * as Popover from "@radix-ui/react-popover"; import { useGroupItem } from "./useGroupItem"; import BaseMenuContext from "./BaseMenuContext"; +import DxcPopover from "../popover/Popover"; const GroupItem = ({ items, ...props }: GroupItemProps) => { const groupMenuId = `group-menu-${useId()}`; - const navigationTreeId = `sidenav-${useId()}`; const contextValue = useContext(BaseMenuContext) ?? {}; const { groupSelected, isOpen, toggleOpen, hasPopOver, isHorizontal } = useGroupItem( items, contextValue, props.defaultOpen ); - const [portalContainer, setPortalContainer] = useState(null); - useEffect(() => { - setPortalContainer(document?.getElementById(`${navigationTreeId}-portal`)); - }, []); return hasPopOver ? ( <> - - - : } - onClick={() => { - toggleOpen(); - }} - selected={groupSelected && !isOpen} - {...props} - /> - - {portalContainer && ( - + { + if (isOpen) { + toggleOpen(); + } + }} + asChild + popoverContent={ + <> - { - if (event.key === "Escape") { - toggleOpen(); - } - }} - align="start" - side={isHorizontal ? "bottom" : "right"} - style={{ - zIndex: "var(--z-contextualmenu)", - padding: "var(--spacing-padding-xs)", - boxShadow: "var(--shadow-100)", - backgroundColor: "var(--color-bg-neutral-lightest)", - borderRadius: "var(--border-radius-m)", - ...(isHorizontal - ? {} - : { - display: "flex", - flexDirection: "column", - gap: "var(--spacing-gap-xxs)", - }), - }} - sideOffset={isHorizontal ? 16 : 0} - onInteractOutside={() => toggleOpen()} - > - {!isHorizontal && props.depthLevel === 0 && ( - : - } - onClick={() => toggleOpen()} - selected={groupSelected && !isOpen} - {...props} - icon={undefined} + {!isHorizontal && props.depthLevel === 0 && ( + : } + onClick={() => toggleOpen()} + selected={groupSelected && !isOpen} + {...props} + icon={undefined} + /> + )} + + {items.map((item, index) => ( + - )} - - {items.map((item, index) => ( - - ))} - - + ))} + - - )} - -
+ + } + isOpen={isOpen} + > + : } + onClick={() => { + toggleOpen(); + }} + selected={groupSelected && !isOpen} + {...props} + /> + ) : ( <>