diff --git a/npm/ng-packs/packages/core/src/lib/services/localization.service.ts b/npm/ng-packs/packages/core/src/lib/services/localization.service.ts index 6a6fbdbc46..7b474e7881 100644 --- a/npm/ng-packs/packages/core/src/lib/services/localization.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/localization.service.ts @@ -99,7 +99,7 @@ export class LocalizationService { return local; }), - filter(Boolean) + filter(Boolean), ) .subscribe(val => this.localizations$.next(val)); } @@ -211,9 +211,12 @@ export class LocalizationService { key: string | LocalizationWithDefault, ...interpolateParams: string[] ) { - if (!key) key = ''; let defaultValue = ''; + if (!key) { + return defaultValue; + } + if (typeof key !== 'string') { defaultValue = key.defaultValue; key = key.key; @@ -265,7 +268,10 @@ export class LocalizationService { } } -function recursivelyMergeBaseResources(baseResourceName: string, source: ResourceDto): ApplicationLocalizationResourceDto { +function recursivelyMergeBaseResources( + baseResourceName: string, + source: ResourceDto, +): ApplicationLocalizationResourceDto { const item = source[baseResourceName]; if (item.baseResources.length === 0) { @@ -280,10 +286,12 @@ function recursivelyMergeBaseResources(baseResourceName: string, source: Resourc } function mergeResourcesWithBaseResource(resource: ResourceDto): ResourceDto { - const entities: Array<[string, ApplicationLocalizationResourceDto]> = Object.keys(resource).map(key => { - const newValue = recursivelyMergeBaseResources(key, resource); - return [key, newValue]; - }); + const entities: Array<[string, ApplicationLocalizationResourceDto]> = Object.keys(resource).map( + key => { + const newValue = recursivelyMergeBaseResources(key, resource); + return [key, newValue]; + }, + ); return entities.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}); } diff --git a/npm/ng-packs/packages/core/src/lib/tokens/compare-func.token.ts b/npm/ng-packs/packages/core/src/lib/tokens/compare-func.token.ts index 2c5185ce23..4256a82be5 100644 --- a/npm/ng-packs/packages/core/src/lib/tokens/compare-func.token.ts +++ b/npm/ng-packs/packages/core/src/lib/tokens/compare-func.token.ts @@ -1,5 +1,5 @@ import { InjectionToken, inject } from '@angular/core'; -import { SortableItem } from '../models'; +import type { SortableItem } from '../models'; import { LocalizationService } from '../services'; export const SORT_COMPARE_FUNC = new InjectionToken<(a: SortableItem, b: SortableItem) => number>( @@ -9,23 +9,28 @@ export const SORT_COMPARE_FUNC = new InjectionToken<(a: SortableItem, b: Sortabl export function compareFuncFactory() { const localizationService = inject(LocalizationService); const fn = (a: SortableItem, b: SortableItem) => { - const aName = localizationService.instant(a.name); - const bName = localizationService.instant(b.name); const aNumber = a.order; const bNumber = b.order; + if (aNumber > bNumber) return 1; + if (aNumber < bNumber) return -1; + + if (a.id > b.id) return 1; + if (a.id < b.id) return -1; + if (!Number.isInteger(aNumber)) return 1; if (!Number.isInteger(bNumber)) return -1; - if (aNumber > bNumber) return 1; - if (aNumber < bNumber) return -1; + if (!a?.name || !b?.name) { + return -1; + } + + const aName = localizationService.instant(a.name); + const bName = localizationService.instant(b.name); if (aName > bName) return 1; if (aName < bName) return -1; - if (a.id > b.id) return 1; - if (a.id < b.id) return -1; - return 0; };