import React, {useState, useEffect, useRef} from 'react'; import {Table, Select} from 'antd'; import './index.less'; export interface TableSelectProps { value?: any; onChange?: (value: any) => void; onSelect?: (value: any) => void; onSearch?: (value: any) => void; columns?: any[]; dataSource?: any[]; options: { LABEL: string; value: string; }; type?: 'radio' | 'checkbox'; disabled: boolean, searchFromApi: boolean } const TableSelect: React.FC = (props) => { const {onSearch,onChange, onSelect, columns, dataSource = [], options, type = 'radio', value, disabled, searchFromApi = false} = props; const [selectedRowKeys, setSelectedRowKeys] = useState<(string | number)[]>([]); const [selectValue, setSelectValue] = useState(null); const [selectOpen, setSelectOPen] = useState(false); const [searchVal, setSearchVal] = useState(''); const [filterData, setFilterData] = useState(dataSource); const selectRef = useRef(); useEffect(() => { if (!searchFromApi) { if (searchVal) { const list = dataSource?.filter((x) => x[options.LABEL].indexOf(searchVal) > -1); setFilterData(list); } else { setFilterData(dataSource); } } }, [searchVal, dataSource]); useEffect(() => { if (searchFromApi) { setFilterData(dataSource); } }, [dataSource]) useEffect(() => { if (searchFromApi) { if (onSearch) { onSearch(searchVal) } } }, [searchVal]) useEffect(() => { if (value) { setSelectValue(value); setSelectedRowKeys([value]); if (onChange) { onChange(value) } } else { setSelectValue(''); setSelectedRowKeys([]); } }, [value]); const {Option} = Select; return ( <> ); }; export default TableSelect;