import { useNextFetchKnowledgeList } from '@/hooks/knowledge-hooks'; import type { CheckboxProps } from 'antd'; import { Avatar, Checkbox, Layout, List, Space, Typography } from 'antd'; import { CheckboxValueType } from 'antd/es/checkbox/Group'; import { Dispatch, SetStateAction, useCallback, useEffect, useMemo, } from 'react'; import { UserOutlined } from '@ant-design/icons'; import { CheckboxChangeEvent } from 'antd/es/checkbox'; import styles from './index.less'; const { Sider } = Layout; interface IProps { checkedList: string[]; setCheckedList: Dispatch>; } const SearchSidebar = ({ checkedList, setCheckedList }: IProps) => { const { list } = useNextFetchKnowledgeList(); const ids = useMemo(() => list.map((x) => x.id), [list]); const checkAll = list.length === checkedList.length; const indeterminate = checkedList.length > 0 && checkedList.length < list.length; const onChange = useCallback( (list: CheckboxValueType[]) => { setCheckedList(list as string[]); }, [setCheckedList], ); const onCheckAllChange: CheckboxProps['onChange'] = useCallback( (e: CheckboxChangeEvent) => { setCheckedList(e.target.checked ? ids : []); }, [ids, setCheckedList], ); useEffect(() => { setCheckedList(ids); }, [ids, setCheckedList]); return ( All ( } src={item.avatar} /> {item.name} )} /> ); }; export default SearchSidebar;