From caab6cd43403c1f0f23c541008819c6019856ff4 Mon Sep 17 00:00:00 2001 From: Valentin Gavran Date: Tue, 18 Oct 2022 09:32:44 +0200 Subject: [PATCH] refactor(DataTable): sort functions has now access to sort direction BREAKING CHANGE: DataTable sorting may not work like before. --- .../src/components/data-table/data-table.interface.ts | 2 +- .../src/components/data-table/services/data.service.ts | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/libs/anglify/src/components/data-table/data-table.interface.ts b/libs/anglify/src/components/data-table/data-table.interface.ts index 5126412c..3cce7fa8 100644 --- a/libs/anglify/src/components/data-table/data-table.interface.ts +++ b/libs/anglify/src/components/data-table/data-table.interface.ts @@ -4,7 +4,7 @@ export type DataTableHeader = { filterable?: boolean; hidden?: boolean; hiddenOnMobile?: boolean; - sort?(a: DataTableItem, b: DataTableItem): number; + sort?(a: DataTableItem, b: DataTableItem, direction: SortSetting['direction']): number; sortable?: boolean; text: string; value: string; diff --git a/libs/anglify/src/components/data-table/services/data.service.ts b/libs/anglify/src/components/data-table/services/data.service.ts index efa3f9f4..b0f06497 100644 --- a/libs/anglify/src/components/data-table/services/data.service.ts +++ b/libs/anglify/src/components/data-table/services/data.service.ts @@ -75,10 +75,9 @@ export class DataService { // if sort function is defined in headers, use it const header = headers.find(header => header.value === option.value); if (header?.sort) { - const sort = header.sort(a, b); - - if (option.direction === 'desc') return sort * -1; - return sort; + const sort = header.sort(a, b, option.direction); + if (sort !== 0) return sort; + continue; } const aValue = a[option.value];