diff --git a/npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts index ea23da1efc..984279f1a4 100644 --- a/npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts +++ b/npm/ng-packs/packages/core/src/lib/pipes/sort.pipe.ts @@ -5,7 +5,11 @@ export type SortOrder = 'asc' | 'desc'; name: 'abpSort', }) export class SortPipe implements PipeTransform { - transform(value: any[], sortOrder: SortOrder | string = 'asc', sortKey?: string): any { + transform( + value: any[], + sortOrder: SortOrder | string = 'asc', + sortKey?: string, + ): any { sortOrder = sortOrder && (sortOrder.toLowerCase() as any); if (!value || (sortOrder !== 'asc' && sortOrder !== 'desc')) return value; @@ -17,7 +21,9 @@ export class SortPipe implements PipeTransform { numberArray = value.filter(item => typeof item === 'number').sort(); stringArray = value.filter(item => typeof item === 'string').sort(); } else { - numberArray = value.filter(item => typeof item[sortKey] === 'number').sort((a, b) => a[sortKey] - b[sortKey]); + numberArray = value + .filter(item => typeof item[sortKey] === 'number') + .sort((a, b) => a[sortKey] - b[sortKey]); stringArray = value .filter(item => typeof item[sortKey] === 'string') .sort((a, b) => { @@ -26,7 +32,15 @@ export class SortPipe implements PipeTransform { else return 0; }); } - const sorted = numberArray.concat(stringArray); + const sorted = [ + ...numberArray, + ...stringArray, + ...value.filter( + item => + typeof item[sortKey] !== 'number' && + typeof item[sortKey] !== 'string', + ), + ]; return sortOrder === 'asc' ? sorted : sorted.reverse(); } }