diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html index 9104caf6ce..ad3fbd690a 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html @@ -49,7 +49,7 @@ @if (!row['_' + prop.name].component) { - @if (prop.type === 'datetime') { + @if (prop.type === 'datetime' || prop.type === 'date' || prop.type === 'time') {
' @@ -158,12 +153,6 @@ export class ExtensibleTableComponent implements OnChanges, AfterViewIn switch (prop.type) { case ePropType.Boolean: return this.getIcon(value); - case ePropType.Date: - return this.getDate(value, getShortDateFormat(this.config)); - case ePropType.Time: - return this.getDate(value, getShortTimeFormat(this.config)); - case ePropType.DateTime: - return this.getDate(value, getShortDateShortTimeFormat(this.config)); case ePropType.Enum: return this.getEnum(value, prop.enumList || []); default: diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/timezone.interceptor.ts b/npm/ng-packs/packages/core/src/lib/interceptors/timezone.interceptor.ts index 1789eff2fb..6d5855433e 100644 --- a/npm/ng-packs/packages/core/src/lib/interceptors/timezone.interceptor.ts +++ b/npm/ng-packs/packages/core/src/lib/interceptors/timezone.interceptor.ts @@ -10,8 +10,7 @@ export class TimezoneInterceptor implements HttpInterceptor { protected readonly timezoneService = inject(TimezoneService); intercept(req: HttpRequest, next: HttpHandler): Observable> { - const timezone = this.timezoneService.getTimezone(); - console.log(timezone); + const timezone = this.timezoneService.timezone; if (timezone) { req = req.clone({ setHeaders: { diff --git a/npm/ng-packs/packages/core/src/lib/pipes/utc-to-local.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/utc-to-local.pipe.ts index d0e1452fc5..2d0687a24d 100644 --- a/npm/ng-packs/packages/core/src/lib/pipes/utc-to-local.pipe.ts +++ b/npm/ng-packs/packages/core/src/lib/pipes/utc-to-local.pipe.ts @@ -1,5 +1,7 @@ -import { Pipe, PipeTransform, Injectable, inject } from '@angular/core'; +import { Pipe, PipeTransform, Injectable, inject, LOCALE_ID } from '@angular/core'; import { ConfigStateService, LocalizationService, TimezoneService } from '../services'; +import { getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat } from '../utils'; +import { formatDate } from '@angular/common'; @Injectable() @Pipe({ @@ -9,23 +11,51 @@ export class UtcToLocalPipe implements PipeTransform { protected readonly timezoneService = inject(TimezoneService); protected readonly configState = inject(ConfigStateService); protected readonly localizationService = inject(LocalizationService); + protected readonly locale = inject(LOCALE_ID); - transform(value: string | Date | null | undefined): string | Date { + transform( + value: string | Date | null | undefined, + propType: 'date' | 'datetime' | 'time', + ): string | Date { if (!value) return ''; try { - const dateInput = new Date(value); - - if (isNaN(dateInput.getTime())) { - return ''; + let format: string; + switch (propType) { + case 'date': + format = getShortDateFormat(this.configState); + break; + case 'datetime': + format = getShortDateShortTimeFormat(this.configState); + break; + case 'time': + format = getShortTimeFormat(this.configState); + break; + default: + format = getShortDateShortTimeFormat(this.configState); } - const localization = this.configState.getOne('localization'); - const locale = localization?.currentCulture?.cultureName ?? 'en-US'; - const options: Intl.DateTimeFormatOptions = this.timezoneService.isUtcClockEnabled - ? { timeZone: this.timezoneService.getTimezone() } - : undefined; - return dateInput.toLocaleString(locale, options); + if (this.timezoneService.isUtcClockEnabled) { + const timeZone = this.timezoneService.timezone; + const options: Intl.DateTimeFormatOptions = { timeZone }; + let localeStr: string; + switch (propType) { + case 'date': + localeStr = new Date(value).toLocaleDateString(this.locale, options); + break; + case 'datetime': + localeStr = new Date(value).toLocaleString(this.locale, options); + break; + case 'time': + localeStr = new Date(value).toLocaleTimeString(this.locale, options); + break; + default: + localeStr = new Date(value).toLocaleString(this.locale, options); + } + return formatDate(localeStr, format, this.locale); + } else { + return formatDate(value, format, this.locale, format); + } } catch (err) { return value; } diff --git a/npm/ng-packs/packages/core/src/lib/services/timezone.service.ts b/npm/ng-packs/packages/core/src/lib/services/timezone.service.ts index ee3587cfdf..b3b5fe9cff 100644 --- a/npm/ng-packs/packages/core/src/lib/services/timezone.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/timezone.service.ts @@ -25,7 +25,7 @@ export class TimezoneService { return Intl.DateTimeFormat().resolvedOptions().timeZone; } - getTimezone(): string { + get timezone(): string { if (!this.isUtcClockEnabled) { return this.getBrowserTimezone(); }