Skip to content

Commit f94a6ff

Browse files
authored
fix(AnalyticalTable): fix wrong column order on consecutive column reorder events (#233)
1 parent 5436bd4 commit f94a6ff

File tree

2 files changed

+13
-20
lines changed

2 files changed

+13
-20
lines changed

packages/main/src/components/AnalyticalTable/hooks/useDragAndDrop.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
import { useCallback, useRef, useState } from 'react';
1+
import { useCallback, useState } from 'react';
2+
import { Event } from '@ui5/webcomponents-react-base/lib/Event';
23

34
const getColumnId = (column) => {
45
return typeof column.accessor === 'string' ? column.accessor : column.id;
56
};
67

7-
export const useDragAndDrop = (props, setColumnOrder, columnOrder, isBeingResized, onColumnsOrderChanged) => {
8+
export const useDragAndDrop = (props, setColumnOrder, columnOrder, isBeingResized) => {
9+
const { onColumnsReordered } = props;
10+
811
const [dragOver, setDragOver] = useState('');
912

1013
const handleDragStart = useCallback(
@@ -42,9 +45,13 @@ export const useDragAndDrop = (props, setColumnOrder, columnOrder, isBeingResize
4245
tempCols.splice(droppedColIdx, 0, tempCols.splice(draggedColIdx, 1)[0]);
4346
setColumnOrder(tempCols);
4447

45-
const newOrderedColumns = [...props.columns];
46-
newOrderedColumns.splice(droppedColIdx, 0, newOrderedColumns.splice(draggedColIdx, 1)[0]);
47-
onColumnsOrderChanged(e.currentTarget, props.columns[draggedColIdx], newOrderedColumns);
48+
const columnsNewOrder = tempCols.map((tempColId) => props.columns.find((col) => getColumnId(col) === tempColId));
49+
onColumnsReordered(
50+
Event.of(null, e, {
51+
columnsNewOrder,
52+
column: props.columns[draggedColIdx]
53+
})
54+
);
4855
},
4956
[columnOrder]
5057
);

packages/main/src/components/AnalyticalTable/index.tsx

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ const AnalyticalTable: FC<TableProps> = forwardRef((props: TableProps, ref: Ref<
137137
selectedRowKey,
138138
LoadingComponent,
139139
onRowExpandChange,
140-
onColumnsReordered,
141140
noDataText,
142141
NoDataComponent,
143142
visibleRows,
@@ -253,25 +252,12 @@ const AnalyticalTable: FC<TableProps> = forwardRef((props: TableProps, ref: Ref<
253252
[tableState.groupBy, onGroup]
254253
);
255254

256-
const onColumnsOrderChanged = useCallback(
257-
(target, column, columnsNewOrder) => {
258-
onColumnsReordered(
259-
Event.of(null, target, {
260-
columnsNewOrder,
261-
column
262-
})
263-
);
264-
},
265-
[tableState.columnOrder, onColumnsReordered]
266-
);
267-
268255
const [headerRef, tableWidth] = useWindowResize();
269256
const [dragOver, handleDragEnter, handleDragStart, handleDragOver, handleOnDrop, handleOnDragEnd] = useDragAndDrop(
270257
props,
271258
setColumnOrder,
272259
tableState.columnOrder,
273-
isBeingResized,
274-
onColumnsOrderChanged
260+
isBeingResized
275261
);
276262

277263
return (

0 commit comments

Comments
 (0)