From 52d5c85827a5632fc53d0f0f70bcf67ad976165a Mon Sep 17 00:00:00 2001 From: mertsincan Date: Thu, 22 Sep 2022 10:28:54 +0100 Subject: [PATCH] Fixed #3352 and #3353 --- components/lib/column/column.d.ts | 8 ++++++-- components/lib/datatable/DataTable.js | 8 ++++---- components/lib/treetable/TreeTable.js | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/components/lib/column/column.d.ts b/components/lib/column/column.d.ts index b965848953..9ee7da8934 100644 --- a/components/lib/column/column.d.ts +++ b/components/lib/column/column.d.ts @@ -117,12 +117,16 @@ interface ColumnEventParams { columnProps: ColumnProps; } -interface ColumnSortParams { - rowData: any; +interface ColumnSortMetaData { field: string; order: ColumnSortOrderType; } +interface ColumnSortParams extends ColumnSortMetaData { + data: any; + multiSortMeta?: ColumnSortMetaData[]; +} + interface ColumnFilterMetaData { value: any; matchMode: ColumnFilterMatchModeType; diff --git a/components/lib/datatable/DataTable.js b/components/lib/datatable/DataTable.js index 6344dd8fc1..0eb6a6d111 100644 --- a/components/lib/datatable/DataTable.js +++ b/components/lib/datatable/DataTable.js @@ -817,7 +817,7 @@ export const DataTable = React.forwardRef((props, ref) => { columnSortable.current = column.props.sortable; columnSortFunction.current = column.props.sortFunction; - columnField.current = column.props.sortField; + columnField.current = sortField; if (props.sortMode === 'multiple') { let metaKey = event.metaKey || event.ctrlKey; @@ -911,7 +911,7 @@ export const DataTable = React.forwardRef((props, ref) => { let value = [...data]; if (columnSortable.current && columnSortFunction.current) { - value = columnSortFunction.current({ rowData: value, field: field, order: order }); + value = columnSortFunction.current({ data, field, order }); } else { value.sort((data1, data2) => { const value1 = ObjectUtils.resolveFieldData(data1, field); @@ -944,9 +944,9 @@ export const DataTable = React.forwardRef((props, ref) => { if (columnSortable.current && columnSortFunction.current) { const meta = multiSortMeta.find((meta) => meta.field === columnField.current); const field = columnField.current; - const order = meta ? meta.order : defaultSortOrder; + const order = meta ? meta.order : props.defaultSortOrder; - value = columnSortFunction.current({ rowData: value, field: field, order: order }); + value = columnSortFunction.current({ data, field, order, multiSortMeta }); } else { value.sort((data1, data2) => { return multisortField(data1, data2, multiSortMeta, 0); diff --git a/components/lib/treetable/TreeTable.js b/components/lib/treetable/TreeTable.js index 9c57ca9a19..bfbfbe9553 100644 --- a/components/lib/treetable/TreeTable.js +++ b/components/lib/treetable/TreeTable.js @@ -173,7 +173,7 @@ export const TreeTable = React.forwardRef((props, ref) => { if (columnSortable.current && columnSortable.current === 'custom' && columnSortFunction.current) { value = columnSortFunction.current({ - rowData: value, + data, field: getSortField(), order: getSortOrder() });