import { useEffect, useMemo } from "react"; import Checkbox from "./Checkbox" import Radio from "./Radio"; import './style/SelectList.sass'; export type ValuesListInput = { key: string; value: string; }[] export interface Props { items; tableName:string; checkedValues?:string[]; multiSelect:boolean; searchValue?:string; setCheckedValues: (newValues)=> void; tabelClassName } const SelectList: React.FC = ({items ,tableName,checkedValues=[],multiSelect=true,searchValue="",setCheckedValues,tabelClassName}) => { const filteredValues = useMemo(() => { return items.filter((listValue) => listValue?.value?.includes(searchValue)); },[items, searchValue]) const toggleValue = (checkedKey) => { if (!multiSelect){ // unToggleAll(); const newCheckedValues = []; newCheckedValues.push(checkedKey); setCheckedValues(newCheckedValues); } else { const newCheckedValues = [...checkedValues]; let index = newCheckedValues.indexOf(checkedKey); if(index > -1) newCheckedValues.splice(index,1); else newCheckedValues.push(checkedKey); setCheckedValues(newCheckedValues); } } const unToggleAll = () => { setCheckedValues([]); } const toggleAll = () => { const newCheckedValues = [...checkedValues]; if(newCheckedValues.length === items.length) setCheckedValues([]); else { items.forEach((obj) => { if(!newCheckedValues.includes(obj.key)) newCheckedValues.push(obj.key); }) setCheckedValues(newCheckedValues); } } const tableHead = multiSelect ? {tableName} : {tableName} return
{tableHead} {filteredValues?.map(listValue => { return } )}
{multiSelect && toggleValue(listValue.key)}/>} {!multiSelect && toggleValue(listValue.key)}/>} {listValue.value}
} export default SelectList;