import MessageFormat from '@messageformat/core'; import { DateAdapter, DurationUnit } from '@mosaic-design/date-adapter'; /** * interface for absolute date or datetime formatter template */ export interface FormatterAbsoluteTemplate { variables?: { [name: string]: string; }; DATE: string; DATETIME: string; } /** * interface for range date or datetime formatter template */ export interface FormatterRangeTemplate { variables?: { [name: string]: string; }; START_DATE: string; END_DATE: string; DATE: string; START_DATETIME: string; END_DATETIME: string; DATETIME: string; } /** * interface for relative date or datetime formatter template */ export interface FormatterRelativeTemplate { variables?: { [name: string]: string; }; BEFORE_YESTERDAY: string; YESTERDAY: string; TODAY: string; TOMORROW: string; AFTER_TOMORROW: string; } export interface DateTimeOptions { seconds?: boolean; milliseconds?: boolean; currYear?: boolean; } export interface FormatterConfig { relativeTemplates: { short: FormatterRelativeTemplate; long: FormatterRelativeTemplate; }; absoluteTemplates: { short: FormatterAbsoluteTemplate; long: FormatterAbsoluteTemplate; }; rangeTemplates: { closedRange: { short: FormatterRangeTemplate; middle: FormatterRangeTemplate; long: FormatterRangeTemplate; }; openedRange: { short: FormatterRangeTemplate; long: FormatterRangeTemplate; }; }; durationTemplates: { shortest: FormatterDurationNumbersTemplate; short: FormatterDurationTemplate; long: FormatterDurationTemplate; }; } /** * interface for duration of dates numeric formatter template */ export interface FormatterDurationNumbersTemplate { variables?: { [name: string]: string; }; FULL: string; ONLY_MINUTES: string; } /** * interface for duration of dates text formatter template */ export interface FormatterDurationTemplate { variables?: { [name: string]: string; }; YEARS: string; MONTHS: string; WEEKS: string; DAYS: string; HOURS: string; MINUTES: string; SECONDS: string; SEPARATOR: string; LAST_PART_SEPARATOR: string; YEARS_FRACTION: string; MONTHS_FRACTION: string; } export declare class DateFormatter { protected readonly adapter: DateAdapter; config: FormatterConfig; protected readonly invalidDateErrorText: string; protected messageFormat: MessageFormat; constructor(adapter: DateAdapter, localeName: string); setLocale(localeName: string): void; /** * @param date - date * @param template - template * @param seconds - use seconds * @param milliseconds - use milliseconds * @returns relative date by template */ relativeDate(date: D, template: FormatterRelativeTemplate, seconds?: boolean, milliseconds?: boolean): string; /** * @param date - date * @returns relative date in short format */ relativeShortDate(date: D): string; /** * @param date - date * @returns relative date in long format */ relativeLongDate(date: D): string; /** * @param date - date * @param options - DateTimeOptions * @returns relative date in short format with time */ relativeShortDateTime(date: D, options?: DateTimeOptions): string; /** * @param date - date * @param options - DateTimeOptions * @returns relative date in long format with time */ relativeLongDateTime(date: D, options?: DateTimeOptions): string; /** * @param date - date * @param params - parameters * @param datetime - should time be shown as well * @param seconds - should time with seconds be shown as well * @param milliseconds - should time with milliseconds be shown as well * @param currYear - should current year be shown as well */ absoluteDate(date: D, params: FormatterAbsoluteTemplate, datetime?: boolean, seconds?: boolean, milliseconds?: boolean, currYear?: boolean): string; /** * @param date - date * @param currYear - should the year be shown forced * @returns absolute date in short format */ absoluteShortDate(date: D, currYear?: boolean): string; /** * @param date - date * @param options - DateTimeOptions * @returns absolute date in short format with time */ absoluteShortDateTime(date: D, options?: DateTimeOptions): string; /** * @param date - date * @param currYear - should the year be shown forced * @returns absolute date in long format */ absoluteLongDate(date: D, currYear?: boolean): string; /** * @param date - date * @param options - DateTimeOptions * @returns absolute date in long format with time */ absoluteLongDateTime(date: D, options?: DateTimeOptions): string; /** * @param startDate - start date * @param endDate - end date * @param template - template * @returns opened date */ openedRangeDate(startDate: D | null, endDate: D | null, template: FormatterRangeTemplate): string; /** * @param startDate - start date * @param endDate - end date * @param template - template * @param seconds - should time with seconds be shown as well * @param milliseconds - should time with milliseconds be shown as well * @returns opened date */ openedRangeDateTime(startDate: D | null, endDate: D | null, template: FormatterRangeTemplate, seconds?: boolean, milliseconds?: boolean): string; /** * @param startDate - start date * @param endDate - end date * @param template - template * @returns range date in template format */ rangeDate(startDate: D, endDate: D, template: FormatterRangeTemplate): string; /** * @param startDate - start date * @param endDate - end date * @param template - template * @param seconds - use seconds * @param milliseconds - use milliseconds * @returns range date in template format with time */ rangeDateTime(startDate: D, endDate: D, template: FormatterRangeTemplate, seconds?: boolean, milliseconds?: boolean): string; /** * @param startDate - start date * @param endDate - end date * @returns range date in short format */ rangeShortDate(startDate: D | null, endDate?: D): string; /** * @param startDate - start date * @param endDate - end date * @param options - DateTimeOptions * @returns range date in short format with time */ rangeShortDateTime(startDate: D | null, endDate?: D | null, options?: DateTimeOptions): string; /** * @param startDate - start date * @param endDate - end date * @returns range date in long format */ rangeLongDate(startDate: D | null, endDate?: D | null): string; /** * @param startDate - start date * @param endDate - end date * @param options - DateTimeOptions * @returns range date in long format with time */ rangeLongDateTime(startDate: D | null, endDate?: D, options?: DateTimeOptions): string; /** * @param startDate - start date * @param endDate - end date * @param options - DateTimeOptions * @returns range middle date with time */ rangeMiddleDateTime(startDate: D, endDate: D, options?: DateTimeOptions): string; /** * @param startDate - start date * @param endDate - end date * @param seconds - add seconds to formatted value * @param milliseconds - add milliseconds to formatted value * @returns formatted duration as string like 48:02:25 */ durationShortest(startDate: D, endDate: D, seconds?: boolean, milliseconds?: boolean): string; /** * @param startDate - start date * @param endDate - end date * @param units - if defined, units to show will be specified * @param fraction - shows fraction part for years and months * @param template - specify template * @returns formatted duration as string */ duration(startDate: D, endDate: D, units: DurationUnit[], fraction: boolean, template: FormatterDurationTemplate): string; durationLong(startDate: D, endDate: D, units?: DurationUnit[], fraction?: boolean): string; durationShort(startDate: D, endDate: D, units?: DurationUnit[], fraction?: boolean): string; private checkDates; private compileMessage; /** * @param date - date for compile * @param variables - date template variables * @param currYearForced - param for absolute days formatting * @returns compiledVariables */ private compileVariables; private isBeforeYesterday; private isYesterday; private isToday; private isTomorrow; private isAfterTomorrow; private hasSame; }