Skip to content

Commit 75a43a3

Browse files
committed
fix(AnalyticalTable): Always render selection column as first column
Allow disable reordering per column level by setting `canReorder` to false. Closes #311
1 parent 56de88d commit 75a43a3

File tree

5 files changed

+11
-10
lines changed

5 files changed

+11
-10
lines changed

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,10 @@ const styles = ({ parameters }: JSSTheme) => ({
8181

8282
const useStyles = createUseStyles<JSSTheme, keyof ReturnType<typeof styles>>(styles, { name: 'TableColumnHeader' });
8383

84-
export /**
85-
* <code>import { ColumnHeader } from '@ui5/webcomponents-react/lib/ColumnHeader';</code>
86-
*/
8784
/**
8885
* <code>import { ColumnHeader } from '@ui5/webcomponents-react/lib/ColumnHeader';</code>
8986
*/
90-
const ColumnHeader: FC<ColumnHeaderProps> = (props) => {
87+
export const ColumnHeader: FC<ColumnHeaderProps> = (props: ColumnHeaderProps) => {
9188
const classes = useStyles(props);
9289

9390
const {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const defaultFilterMethod = (filter, row) => {
1515
export const DefaultColumn = {
1616
Filter: DefaultFilterComponent,
1717
canResize: true,
18+
canReorder: true,
1819
minWidth: DEFAULT_COLUMN_WIDTH,
1920
vAlign: VerticalAlign.Middle,
2021
Aggregated: Aggregated,

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const getColumnId = (column) => {
55
return typeof column.accessor === 'string' ? column.accessor : column.id;
66
};
77

8-
export const useDragAndDrop = (props, setColumnOrder, columnOrder, resizeInfo) => {
8+
export const useDragAndDrop = (props, setColumnOrder, columnOrder, resizeInfo, columns: any[]) => {
99
const { onColumnsReordered } = props;
1010

1111
const [dragOver, setDragOver] = useState('');
@@ -37,19 +37,19 @@ export const useDragAndDrop = (props, setColumnOrder, columnOrder, resizeInfo) =
3737
const draggedColId = e.dataTransfer.getData('colId');
3838
if (droppedColId === draggedColId) return;
3939

40-
const internalColumnOrder = columnOrder.length > 0 ? columnOrder : props.columns.map((col) => getColumnId(col));
40+
const internalColumnOrder = columnOrder.length > 0 ? columnOrder : columns.map((col) => getColumnId(col));
4141
const droppedColIdx = internalColumnOrder.findIndex((col) => col === droppedColId);
4242
const draggedColIdx = internalColumnOrder.findIndex((col) => col === draggedColId);
4343

4444
const tempCols = [...internalColumnOrder];
4545
tempCols.splice(droppedColIdx, 0, tempCols.splice(draggedColIdx, 1)[0]);
4646
setColumnOrder(tempCols);
4747

48-
const columnsNewOrder = tempCols.map((tempColId) => props.columns.find((col) => getColumnId(col) === tempColId));
48+
const columnsNewOrder = tempCols.map((tempColId) => columns.find((col) => getColumnId(col) === tempColId));
4949
onColumnsReordered(
5050
Event.of(null, e, {
5151
columnsNewOrder,
52-
column: props.columns[draggedColIdx]
52+
column: columns[draggedColIdx]
5353
})
5454
);
5555
},

packages/main/src/components/AnalyticalTable/hooks/useRowSelectionColumn.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export const useRowSelectionColumn: PluginHook<{}> = (hooks) => {
3434
groupable: false,
3535
filterable: false,
3636
disableResizing: true,
37+
canReorder: false,
3738
width: 36,
3839
minWidth: 36,
3940
// The header can use the table's getToggleAllRowsSelectedProps method

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ const AnalyticalTable: FC<TableProps> = forwardRef((props: TableProps, ref: Ref<
189189
rows,
190190
prepareRow,
191191
state: tableState,
192+
columns: tableInternalColumns,
192193
setColumnOrder,
193194
dispatch,
194195
totalColumnsWidth,
@@ -320,7 +321,8 @@ const AnalyticalTable: FC<TableProps> = forwardRef((props: TableProps, ref: Ref<
320321
props,
321322
setColumnOrder,
322323
tableState.columnOrder,
323-
tableState.columnResizing
324+
tableState.columnResizing,
325+
tableInternalColumns
324326
);
325327

326328
const passThroughProps = usePassThroughHtmlProps(props);
@@ -356,7 +358,7 @@ const AnalyticalTable: FC<TableProps> = forwardRef((props: TableProps, ref: Ref<
356358
onDragEnd={handleOnDragEnd}
357359
dragOver={column.id === dragOver}
358360
column={column}
359-
isDraggable={!isTreeTable}
361+
isDraggable={!isTreeTable && column.canReorder}
360362
>
361363
{column.render('Header')}
362364
</ColumnHeader>

0 commit comments

Comments
 (0)