import React, { useEffect } from "react"; import { useControllableValue } from "ahooks"; import { Drawer } from "antd"; export type PanelProps = { children: React.ReactNode; defaultOpen?: boolean; extra?: React.ReactNode; footer?: React.ReactNode; open?: boolean; title?: React.ReactNode; onClose?: () => void | Promise; onOpenChange?: (open: boolean) => void; }; const Panel = ({ children, extra, footer, title, onClose, ...props }: PanelProps) => { const [open, setOpen] = useControllableValue(props, { valuePropName: "open", defaultValuePropName: "defaultOpen", trigger: "onOpenChange", }); const handleClose = async () => { try { const ret = await onClose?.(); if (ret != null && !ret) return; setOpen(false); } catch { return; } }; return ( {children} ); }; export default Panel;