import { Pipe, PipeTransform, Inject } from '@angular/core'; import { I18nService } from '../services/i18n.service'; declare const p3xr: any; /** * Locale-aware date pipe backed by dayjs. * * Named presets: * {{ value | date:'date' }} — date only (ll) * {{ value | date:'datetime' }} — date + time (lll) ← default * {{ value | date:'timestamp' }} — date + time + s * * Raw dayjs format tokens also accepted (L, LL, LLL, LLLL, LT, LTS, …). * Returns '-' for falsy or invalid values. * Impure so Angular re-evaluates on language changes. */ @Pipe({ name: 'date', pure: false, standalone: true, }) export class DatePipe implements PipeTransform { constructor(@Inject(I18nService) private i18n: I18nService) {} transform(value: any, format: string = 'datetime'): string { const lang = this.i18n.currentLang(); if (!value) return '-'; const dayjs = (globalThis as any).dayjs || require('dayjs'); const localeMap = p3xr?.settings?.language?.momentDateMap || {}; dayjs.locale(localeMap[lang] || lang); const d = dayjs(value); if (!d.isValid()) return '-'; switch (format) { case 'date': return d.format('ll'); case 'datetime': return d.format('lll'); case 'timestamp': return d.format('ll') + ' ' + d.format('LTS'); default: return d.format(format); } } }