import { Resizable } from 'react-resizable'; import style from './index.less'; const ResizableTitle = (props) => { const { onResize, width, ...restProps } = props; const { className, ...rest } = restProps; if (!width) { return ; } return ( { e.stopPropagation(); }} /> } onResize={onResize} draggableOpts={{ enableUserSelectHack: false }} > ); }; export const components = { header: { cell: ResizableTitle, }, }; export const handleResize = (index, columns, setColumns) => (_, { size }) => { const newColumns = [...columns]; newColumns[index] = { ...newColumns[index], width: size.width, }; setColumns(newColumns); }; export const getMergeColumns = (columns, setColumns) => { const mergeColumns = columns.map((col, index) => ({ ...col, onHeaderCell: (column) => ({ width: column.width, onResize: handleResize(index, columns, (value) => setColumns(value)), }), })); return mergeColumns; };