From 36e30ec47e8a34cda4d2f53909005f603b675797 Mon Sep 17 00:00:00 2001 From: KK <30570688+kkl4261@users.noreply.github.com> Date: Fri, 22 Dec 2023 18:56:47 +0800 Subject: [PATCH] add orderByField to OrderByCollection --- __tests__/disableSort.test.js | 7 ++++--- __tests__/multiColumnSort.test.js | 28 +++++++++++++++------------- src/utils/data-manager.js | 3 ++- types/index.d.ts | 1 + 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/__tests__/disableSort.test.js b/__tests__/disableSort.test.js index cc79fc86..2f7b11d3 100644 --- a/__tests__/disableSort.test.js +++ b/__tests__/disableSort.test.js @@ -39,7 +39,8 @@ describe('Disabled Client Sorting', () => { { orderBy: 0, orderDirection: 'asc', - sortOrder: 0 + sortOrder: 0, + orderByField: 'number' } ]; }); @@ -62,7 +63,7 @@ describe('Disabled Client Sorting', () => { fireEvent.click(numberColumn); expect(onOrderCollectionChangeSpy).toHaveBeenCalledWith([ - { sortOrder: 1, orderBy: 0, orderDirection: 'asc' } + { sortOrder: 1, orderBy: 0, orderDirection: 'asc', orderByField: 'number' } ]); const cells = queryAllByTestId('mtablebodyrow').map((row) => @@ -93,7 +94,7 @@ describe('Disabled Client Sorting', () => { fireEvent.click(numberColumn); expect(onOrderCollectionChangeSpy).toHaveBeenCalledWith([ - { sortOrder: 1, orderBy: 0, orderDirection: 'asc' } + { sortOrder: 1, orderBy: 0, orderDirection: 'asc', orderByField: 'number' } ]); const cells = queryAllByTestId('mtablebodyrow').map((row) => diff --git a/__tests__/multiColumnSort.test.js b/__tests__/multiColumnSort.test.js index fbb3745e..8938ba2f 100644 --- a/__tests__/multiColumnSort.test.js +++ b/__tests__/multiColumnSort.test.js @@ -75,12 +75,14 @@ describe('Multi Column Sort', () => { { orderBy: 1, orderDirection: 'asc', - sortOrder: 1 + sortOrder: 1, + orderByField: 'title' }, { orderBy: 2, orderDirection: 'desc', - sortOrder: 2 + sortOrder: 2, + orderByField: 'name' } ]; }); @@ -102,15 +104,15 @@ describe('Multi Column Sort', () => { fireEvent.click(numberColumn); expect(onOrderCollectionChangeSpy).toHaveBeenCalledWith([ - { sortOrder: 1, orderBy: 0, orderDirection: 'asc' } + { sortOrder: 1, orderBy: 0, orderDirection: 'asc', orderByField: 'number' } ]); const titleColumn = queryAllByTestId('mtableheader-sortlabel')[1]; fireEvent.click(titleColumn); expect(onOrderCollectionChangeSpy).toHaveBeenCalledWith([ - { sortOrder: 1, orderBy: 0, orderDirection: 'asc' }, - { sortOrder: 2, orderBy: 1, orderDirection: 'asc' } + { sortOrder: 1, orderBy: 0, orderDirection: 'asc', orderByField: 'number' }, + { sortOrder: 2, orderBy: 1, orderDirection: 'asc', orderByField: 'title' } ]); }); @@ -131,7 +133,7 @@ describe('Multi Column Sort', () => { fireEvent.click(numberColumn); expect(onOrderCollectionChangeSpy).toHaveBeenCalledWith([ - { sortOrder: 1, orderBy: 0, orderDirection: 'asc' } + { sortOrder: 1, orderBy: 0, orderDirection: 'asc', orderByField: 'number' } ]); fireEvent.click(queryAllByTestId('mtableheader-sortlabel')[1]); @@ -139,9 +141,9 @@ describe('Multi Column Sort', () => { fireEvent.click(queryAllByTestId('mtableheader-sortlabel')[3]); expect(onOrderCollectionChangeSpy).toHaveBeenCalledWith([ - { sortOrder: 1, orderBy: 1, orderDirection: 'asc' }, - { sortOrder: 2, orderBy: 2, orderDirection: 'asc' }, - { sortOrder: 3, orderBy: 3, orderDirection: 'asc' } + { sortOrder: 1, orderBy: 1, orderDirection: 'asc', orderByField: 'title' }, + { sortOrder: 2, orderBy: 2, orderDirection: 'asc', orderByField: 'name' }, + { sortOrder: 3, orderBy: 3, orderDirection: 'asc', orderByField: 'lastName' } ]); }); @@ -163,7 +165,7 @@ describe('Multi Column Sort', () => { fireEvent.click(numberColumn); expect(onOrderCollectionChangeSpy).toHaveBeenCalledWith([ - { sortOrder: 1, orderBy: 0, orderDirection: 'desc' } + { sortOrder: 1, orderBy: 0, orderDirection: 'desc', orderByField: 'number' } ]); }); @@ -185,9 +187,9 @@ describe('Multi Column Sort', () => { fireEvent.click(numberColumn); expect(onOrderCollectionChangeSpy).toHaveBeenCalledWith([ - { sortOrder: 1, orderBy: 1, orderDirection: 'asc' }, - { sortOrder: 2, orderBy: 2, orderDirection: 'desc' }, - { sortOrder: 3, orderBy: 0, orderDirection: 'asc' } + { sortOrder: 1, orderBy: 1, orderDirection: 'asc', orderByField: 'title' }, + { sortOrder: 2, orderBy: 2, orderDirection: 'desc', orderByField: 'name' }, + { sortOrder: 3, orderBy: 0, orderDirection: 'asc', orderByField: 'number' } ]); }); }); diff --git a/src/utils/data-manager.js b/src/utils/data-manager.js index 63c0a2ca..ba22326d 100644 --- a/src/utils/data-manager.js +++ b/src/utils/data-manager.js @@ -215,7 +215,8 @@ export default class DataManager { return { orderBy: columnDef.tableData.id, sortOrder: undefined, - orderDirection: '' + orderDirection: '', + orderByField: columnDef.field }; } }); diff --git a/types/index.d.ts b/types/index.d.ts index 5507b49a..6a7a57fc 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -12,6 +12,7 @@ export interface OrderByCollection { orderBy: number; orderDirection: string; sortOrder: number; + orderByField: string; } export interface MaterialTableProps {