mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-30 11:22:03 +08:00

* chore: added jsx-runtime plugin in eslint tsconfig Signed-off-by: GermaVinsmoke <vaibhav1180@gmail.com> * chore: updated react imports Signed-off-by: GermaVinsmoke <vaibhav1180@gmail.com> * chore: renamed redux dispatch Signed-off-by: GermaVinsmoke <vaibhav1180@gmail.com> * fix: build is fixed --------- Signed-off-by: GermaVinsmoke <vaibhav1180@gmail.com> Co-authored-by: Palash Gupta <palashgdev@gmail.com>
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
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<any>): JSX.Element {
|
|
const [columnsData, setColumns] = useState<ColumnsType>(columns || []);
|
|
|
|
const handleResize = useCallback(
|
|
(index: number) => (
|
|
_e: SyntheticEvent<Element>,
|
|
{ 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<unknown>[number]): unknown => ({
|
|
width: column.width,
|
|
onResize: handleResize(index),
|
|
}),
|
|
})),
|
|
[columnsData, handleResize],
|
|
);
|
|
|
|
return (
|
|
<Table
|
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
{...restprops}
|
|
components={{ header: { cell: ResizableHeader } }}
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
columns={mergeColumns as ColumnsType<any>}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export default ResizeTable;
|