Files
web/apps/scandic-web/components/TempDesignSystem/Popover/index.tsx
Hrishikesh Vaipurkar 67bdf5bbcf Merged in chore/SW-3298-move-sidepeekselfcontrolled- (pull request #2710)
chore(SW-3298): Moved SidePeekSelfControlled to design system

* chore(SW-3298): Moved SidePeekSelfControlled to design system


Approved-by: Anton Gunnarsson
2025-08-26 14:29:54 +00:00

52 lines
1.2 KiB
TypeScript

import {
Button,
Dialog,
DialogTrigger,
OverlayArrow,
Popover as RAPopover,
} from "react-aria-components"
import useSetOverFlowVisibleOnRA from "@scandic-hotels/common/hooks/useSetOverflowVisibleOnRA"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { Arrow } from "./Arrow"
import styles from "./popover.module.css"
import type { PopoverProps } from "./popover"
export default function Popover({
triggerContent,
children,
...props
}: PopoverProps) {
const setOverflowVisible = useSetOverFlowVisibleOnRA()
return (
<DialogTrigger onOpenChange={setOverflowVisible}>
<Button className={styles.trigger}>{triggerContent}</Button>
<RAPopover
{...props}
offset={16}
crossOffset={-24}
className={styles.root}
>
<OverlayArrow>
<Arrow />
</OverlayArrow>
<Dialog>
{({ close }) => (
<>
<Button className={styles.closeButton} onPress={close}>
<MaterialIcon icon="close" size={20} />
</Button>
{children}
</>
)}
</Dialog>
</RAPopover>
</DialogTrigger>
)
}