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 30322207db0..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,10 +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 { - // Mirror Angular's DatePipe, which defaults to 'mediumDate' when no format is supplied. - // A null/empty format would otherwise reach ngFormatDate and throw on `format.length`. - return value != null ? ngFormatDate(value, format || 'mediumDate', 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 */ 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 ''; }