openreplay/frontend/app/components/ui/Popover/Popover.tsx
Delirium 968a3eefde
ui: migrating old components -> ant (#3060)
* ui: migrating old components -> ant

* ui: moving input, tooltip, toggler, checkbox... -> Toggler\s*(.)? from 'UI

* ui: more components moved

* ui: move popover to ant
2025-02-24 16:11:44 +01:00

40 lines
928 B
TypeScript

import React from 'react';
import { Popover as AntPopover } from 'antd';
interface Props {
render: React.ReactNode | ((args: { close: () => void }) => React.ReactNode);
placement?: string;
children: React.ReactNode;
onOpen?: () => void;
onClose?: () => void;
}
const Popover = ({ children, render, placement = 'top', onOpen, onClose }: Props) => {
const [visible, setVisible] = React.useState(false);
const handleOpen = () => {
setVisible(true);
onOpen?.();
}
const handleClose = () => {
setVisible(false);
onClose?.();
}
return (
<AntPopover
placement={placement}
open={visible}
content={() => render({ close: handleClose })}
trigger="click"
onOpenChange={visible => (visible
? handleOpen() :
handleClose())
}
>
{children}
</AntPopover>
)
};
export default Popover;