import { Table } from 'antd'; import type { TableProps } from 'antd/es/table'; import { ColumnsType } from 'antd/lib/table'; import { SyntheticEvent, useCallback, useMemo, useState } from 'react'; import { ResizeCallbackData } from 'react-resizable'; import ResizableHeader from './ResizableHeader'; // eslint-disable-next-line @typescript-eslint/no-explicit-any function ResizeTable({ columns, ...restprops }: TableProps): JSX.Element { const [columnsData, setColumns] = useState(columns || []); const handleResize = useCallback( (index: number) => ( _e: SyntheticEvent, { size }: ResizeCallbackData, ): void => { const newColumns = [...columnsData]; newColumns[index] = { ...newColumns[index], width: size.width, }; setColumns(newColumns); }, [columnsData], ); const mergeColumns = useMemo( () => columnsData.map((col, index) => ({ ...col, onHeaderCell: (column: ColumnsType[number]): unknown => ({ width: column.width, onResize: handleResize(index), }), })), [columnsData, handleResize], ); return ( } /> ); } export default ResizeTable;