From e2c51e896b26f2de5dd7eb38a0db6f24c53555d4 Mon Sep 17 00:00:00 2001 From: Viktor Kombov Date: Tue, 11 Aug 2026 18:20:38 +0300 Subject: [PATCH 1/2] fix(i18n): handle missing date formats --- .../core/src/core/i18n/formatters/formatter-base.spec.ts | 8 ++++++++ .../core/src/core/i18n/formatters/formatter-base.ts | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-base.spec.ts b/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-base.spec.ts index 92f01a1204c..531c7a5476d 100644 --- a/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-base.spec.ts +++ b/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-base.spec.ts @@ -66,6 +66,14 @@ describe('Localization', () => { expect(i18nFormatter.formatDate('2025-01-25T14:15:00', 'ex: HH:mm GGG', 'en-US')).toEqual('ex: 14:15 AD'); }); + it('should return an empty string when the format is missing', () => { + const value = '2025-01-25T14:15:00'; + + expect(i18nFormatter.formatDate(value, undefined, 'en-US')).toEqual(''); + expect(i18nFormatter.formatDate(value, null, 'en-US')).toEqual(''); + expect(i18nFormatter.formatDate(value, '', 'en-US')).toEqual(''); + }); + it('should return correct date format per locale', () => { // Defaults to Angular's one because they are registered in tests expect(i18nFormatter.getLocaleDateTimeFormat('en', false)).toEqual('M/d/yyyy'); diff --git a/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-base.ts b/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-base.ts index bf12e5380fd..1b7e6f7b2f6 100644 --- a/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-base.ts +++ b/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-base.ts @@ -77,8 +77,8 @@ export class BaseFormatter { /** * Format provided date to reflect locales format. Similar to Angular's formatDate. */ - public formatDate(value: Date | string | number | null | undefined, format: string, locale: string, timezone?: string): string { - return value != null ? ngFormatDate(value, format, locale, timezone) : ''; + public formatDate(value: Date | string | number | null | undefined, format: string | null | undefined, locale: string, timezone?: string): string { + return value != null && format ? ngFormatDate(value, format, locale, timezone) : ''; } /** Format number value based on locale */ From d92660267173566e8e71f963bd3a9cc62d2c5dfe Mon Sep 17 00:00:00 2001 From: Viktor Kombov Date: Wed, 12 Aug 2026 10:50:39 +0300 Subject: [PATCH 2/2] fix(formatter): allow null or undefined format in formatDate method --- .../core/src/core/i18n/formatters/formatter-intl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-intl.ts b/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-intl.ts index 1839fe48667..d1372fd678c 100644 --- a/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-intl.ts +++ b/projects/igniteui-angular/core/src/core/i18n/formatters/formatter-intl.ts @@ -21,7 +21,7 @@ export class IntlFormatter extends BaseFormatter { } } - public override formatDate(value: Date | string | number | null | undefined, format: string, locale: string, timezone?: string): string { + public override formatDate(value: Date | string | number | null | undefined, format: string | null | undefined, locale: string, timezone?: string): string { if (value === null || value === undefined || value === '') { return ''; }