dnazarenkoo 8f1451e154
feat: add the ability to drag columns (#3100)
* feat: add the ability to drag columns

* feat: add the ability to drag columns in the logs explorer

* feat: update drag logic

* fix: resolve comments

* feat: resolve comment regarding error handling

---------

Co-authored-by: Vishal Sharma <makeavish786@gmail.com>
Co-authored-by: Palash Gupta <palashgdev@gmail.com>
2023-07-18 17:18:34 +05:30

38 lines
989 B
TypeScript

import { ColumnsType } from 'antd/es/table';
const filterColumns = <T>(
initialColumns: ColumnsType<T>,
findColumns: ColumnsType<T>,
isColumnExist = true,
): ColumnsType<T> =>
initialColumns.filter(({ title: columnTitle }) => {
const column = findColumns.find(({ title }) => title === columnTitle);
return isColumnExist ? !!column : !column;
});
export const getDraggedColumns = <T>(
currentColumns: ColumnsType<T>,
draggedColumns: ColumnsType<T>,
): ColumnsType<T> => {
if (draggedColumns.length) {
const actualDruggedColumns = filterColumns<T>(draggedColumns, currentColumns);
const newColumns = filterColumns<T>(
currentColumns,
actualDruggedColumns,
false,
);
return [...actualDruggedColumns, ...newColumns].reduce((acc, { title }) => {
const column = currentColumns.find(
({ title: columnTitle }) => title === columnTitle,
);
if (column) return [...acc, column];
return acc;
}, [] as ColumnsType<T>);
}
return currentColumns;
};