import { CSSProperties, useState } from 'react'; import { ConfigProvider, Popover } from 'antd'; import { TooltipPlacement } from 'antd/es/tooltip'; import cl from 'classnames'; import styles from './index.module.css'; type AIBPopoverContentType = { label: string; icon: string; desc: string; link: string; id: string; }; function isAIBPopoverContentType(item: any): item is AIBPopoverContentType { return ( typeof item === 'object' && item !== null && item.hasOwnProperty('label') && item.hasOwnProperty('icon') && item.hasOwnProperty('desc') ); } const AIBPopoverDropdown = (content: string[] | AIBPopoverContentType[]) => { if (content.length === 0) return; return (
{content.map((item, index) => { if (!isAIBPopoverContentType(item)) { // TODO 处理非 AIBPopoverContentType 类型的情况 return null; } return ( {item.label}
{item.label}
{item.desc}
); })}
); }; export const AIBPopover = ({ label, content, placement = 'bottom', overlayInnerStyle, }: { label: string; content: string[] | AIBPopoverContentType[]; placement?: TooltipPlacement; overlayInnerStyle?: CSSProperties; }) => { const [open, setOpen] = useState(false); const handleHoverPopover = (openFlag: boolean) => { setOpen(openFlag); }; return (
{label}
); };