import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { cn } from '@/lib/utils'; import { IDataSorceInfo, IDataSourceBase, } from '@/pages/user-setting/data-source/interface'; import { Check } from 'lucide-react'; import { useMemo } from 'react'; export type IAddedSourceCardProps = IDataSorceInfo & { filterString: string; list: IDataSourceBase[]; selectedList: IDataSourceBase[]; setSelectedList: (list: IDataSourceBase[]) => void; }; export const AddedSourceCard = (props: IAddedSourceCardProps) => { const { list: originList, name, icon, filterString, selectedList, setSelectedList, } = props; const list = useMemo(() => { return originList.map((item) => { const checked = selectedList?.some((i) => i.id === item.id) || false; return { ...item, checked: checked, }; }); }, [originList, selectedList]); const filterList = useMemo( () => list.filter((item) => item.name.indexOf(filterString) > -1), [filterString, list], ); // const { navigateToDataSourceDetail } = useNavigatePage(); // const toDetail = (id: string) => { // navigateToDataSourceDetail(id); // }; const onCheck = (item: IDataSourceBase & { checked: boolean }) => { if (item.checked) { setSelectedList(selectedList.filter((i) => i.id !== item.id)); } else { setSelectedList([...(selectedList || []), item]); } }; return ( <> {filterList.length > 0 && ( {/* */} {icon} {name} {filterList.map((item) => (
{ console.log('item--->', item); // toDetail(item.id); onCheck(item); }} >
{item.name}
{item.checked && ( { // toDetail(item.id); // }} /> )}
))}
)} ); };