import React from 'react'; import { Input } from 'antd'; import { PlusOutlined } from '@easyv/react-icons'; import { BizGroupInfo } from '@easytwin/core'; import { MenuItem } from '@/components'; export interface GroupMenuProp { title: string; titleIcon?: React.ReactNode; beforeDataSource: BizGroupInfo[]; afterDataSource: BizGroupInfo[]; selectKey: string | null; onSelect?: (id: string) => void; onCreate: (name: string) => void; onEditName?: (id: string, name: string) => void; onRomove?: (id: string) => void; onDropProject?: (id: string) => void; } const GroupMenu: React.FC = function ({ title, titleIcon, beforeDataSource, afterDataSource, selectKey, onSelect, onCreate, onEditName, onRomove, onDropProject, }) { const [selectGroupKey, setSelectGroupKey] = React.useState(null); React.useEffect(() => { setSelectGroupKey(selectKey); }, [selectKey]); const [isCreating, setIsCreating] = React.useState(false); const [, setSditingData] = React.useState(); return (
{/* beforeDataSource */}
{beforeDataSource.map((item) => ( { setSelectGroupKey(key); onSelect?.(key); }} onDropProject={onDropProject} onEditName={onEditName} onRomove={onRomove} /> ))}
{/* afterDataSource title */}
{titleIcon} {title}
{ setSditingData(undefined); setIsCreating(true); }}>
{/* afterDataSource */}
{/* creating */} {isCreating && (
{ value && onCreate(value); setIsCreating(false); }} onPressEnter={({ currentTarget: { value } }) => { value && onCreate(value); setIsCreating(false); }} />
)} {/* afterDataSource list */} {afterDataSource.map((item) => ( { setSelectGroupKey(key); onSelect?.(key); }} onDropProject={onDropProject} onEditName={onEditName} onRomove={onRomove} /> ))}
); }; export default GroupMenu;