UNPKG

@angular/material-moment-adapter

Version:
1 lines 22.5 kB
{"version":3,"file":"material-moment-adapter.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/material-moment-adapter/adapter/moment-date-adapter.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/material-moment-adapter/adapter/moment-date-formats.ts","../../../../../k8-fastbuild-ST-199a4f3c4e20/bin/src/material-moment-adapter/adapter/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Injectable, InjectionToken, inject} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from '@angular/material/core';\n// Depending on whether rollup is used, moment needs to be imported differently.\n// Since Moment.js doesn't have a default export, we normally need to import using the `* as`\n// syntax. However, rollup creates a synthetic default module and we thus need to import it using\n// the `default as` syntax.\n// TODO(mmalerba): See if we can clean this up at some point.\nimport * as _moment from 'moment';\n// tslint:disable-next-line:no-duplicate-imports\nimport {default as _rollupMoment, Moment, MomentFormatSpecification, MomentInput} from 'moment';\n\nconst moment = _rollupMoment || _moment;\n\n/** Configurable options for MomentDateAdapter. */\nexport interface MatMomentDateAdapterOptions {\n /**\n * When enabled, the dates have to match the format exactly.\n * See https://momentjs.com/guides/#/parsing/strict-mode/.\n */\n strict?: boolean;\n\n /**\n * Turns the use of utc dates on or off.\n * Changing this will change how Angular Material components like DatePicker output dates.\n * Defaults to `false`.\n */\n useUtc?: boolean;\n}\n\n/** InjectionToken for moment date adapter to configure options. */\nexport const MAT_MOMENT_DATE_ADAPTER_OPTIONS = new InjectionToken<MatMomentDateAdapterOptions>(\n 'MAT_MOMENT_DATE_ADAPTER_OPTIONS',\n {\n providedIn: 'root',\n factory: () => ({useUtc: false}),\n },\n);\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts Moment.js Dates for use with Angular Material. */\n@Injectable()\nexport class MomentDateAdapter extends DateAdapter<Moment> {\n private _options = inject<MatMomentDateAdapterOptions>(MAT_MOMENT_DATE_ADAPTER_OPTIONS, {\n optional: true,\n });\n\n // Note: all of the methods that accept a `Moment` input parameter immediately call `this.clone`\n // on it. This is to ensure that we're working with a `Moment` that has the correct locale setting\n // while avoiding mutating the original object passed to us. Just calling `.locale(...)` on the\n // input would mutate the object.\n\n private _localeData: {\n firstDayOfWeek: number;\n longMonths: string[];\n shortMonths: string[];\n dates: string[];\n longDaysOfWeek: string[];\n shortDaysOfWeek: string[];\n narrowDaysOfWeek: string[];\n };\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n const dateLocale = inject<string>(MAT_DATE_LOCALE, {optional: true});\n this.setLocale(dateLocale || moment.locale());\n }\n\n override setLocale(locale: string) {\n super.setLocale(locale);\n\n let momentLocaleData = moment.localeData(locale);\n this._localeData = {\n firstDayOfWeek: momentLocaleData.firstDayOfWeek(),\n longMonths: momentLocaleData.months(),\n shortMonths: momentLocaleData.monthsShort(),\n dates: range(31, i => this.createDate(2017, 0, i + 1).format('D')),\n longDaysOfWeek: momentLocaleData.weekdays(),\n shortDaysOfWeek: momentLocaleData.weekdaysShort(),\n narrowDaysOfWeek: momentLocaleData.weekdaysMin(),\n };\n }\n\n getYear(date: Moment): number {\n return this.clone(date).year();\n }\n\n getMonth(date: Moment): number {\n return this.clone(date).month();\n }\n\n getDate(date: Moment): number {\n return this.clone(date).date();\n }\n\n getDayOfWeek(date: Moment): number {\n return this.clone(date).day();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n // Moment.js doesn't support narrow month names, so we just use short if narrow is requested.\n return style == 'long' ? this._localeData.longMonths : this._localeData.shortMonths;\n }\n\n getDateNames(): string[] {\n return this._localeData.dates;\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (style == 'long') {\n return this._localeData.longDaysOfWeek;\n }\n if (style == 'short') {\n return this._localeData.shortDaysOfWeek;\n }\n return this._localeData.narrowDaysOfWeek;\n }\n\n getYearName(date: Moment): string {\n return this.clone(date).format('YYYY');\n }\n\n getFirstDayOfWeek(): number {\n return this._localeData.firstDayOfWeek;\n }\n\n getNumDaysInMonth(date: Moment): number {\n return this.clone(date).daysInMonth();\n }\n\n clone(date: Moment): Moment {\n return date.clone().locale(this.locale);\n }\n\n createDate(year: number, month: number, date: number): Moment {\n // Moment.js will create an invalid date if any of the components are out of bounds, but we\n // explicitly check each case so we can throw more descriptive errors.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n\n const result = this._createMoment({year, month, date}).locale(this.locale);\n\n // If the result isn't valid, the date must have been out of bounds for this month.\n if (!result.isValid() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Moment {\n return this._createMoment().locale(this.locale);\n }\n\n parse(value: unknown, parseFormat: string | string[]): Moment | null {\n if (value && typeof value == 'string') {\n return this._createMoment(value, parseFormat, this.locale);\n }\n return value ? this._createMoment(value).locale(this.locale) : null;\n }\n\n format(date: Moment, displayFormat: string): string {\n date = this.clone(date);\n if (!this.isValid(date) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('MomentDateAdapter: Cannot format invalid date.');\n }\n return date.format(displayFormat);\n }\n\n addCalendarYears(date: Moment, years: number): Moment {\n return this.clone(date).add({years});\n }\n\n addCalendarMonths(date: Moment, months: number): Moment {\n return this.clone(date).add({months});\n }\n\n addCalendarDays(date: Moment, days: number): Moment {\n return this.clone(date).add({days});\n }\n\n toIso8601(date: Moment): string {\n return this.clone(date).format();\n }\n\n /**\n * Returns the given value if given a valid Moment or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid Moments and empty\n * string into null. Returns an invalid date for all other values.\n */\n override deserialize(value: unknown): Moment | null {\n let date;\n if (value instanceof Date) {\n date = this._createMoment(value).locale(this.locale);\n } else if (this.isDateInstance(value)) {\n // Note: assumes that cloning also sets the correct locale.\n return this.clone(value);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = this._createMoment(value, moment.ISO_8601).locale(this.locale);\n }\n if (date && this.isValid(date)) {\n return this._createMoment(date).locale(this.locale);\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: unknown): obj is Moment {\n return moment.isMoment(obj);\n }\n\n isValid(date: Moment): boolean {\n return this.clone(date).isValid();\n }\n\n invalid(): Moment {\n return moment.invalid();\n }\n\n override setTime(target: Moment, hours: number, minutes: number, seconds: number): Moment {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (hours < 0 || hours > 23) {\n throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n }\n\n if (minutes < 0 || minutes > 59) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n }\n\n if (seconds < 0 || seconds > 59) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n }\n }\n\n return this.clone(target).set({hours, minutes, seconds, milliseconds: 0});\n }\n\n override getHours(date: Moment): number {\n return date.hours();\n }\n\n override getMinutes(date: Moment): number {\n return date.minutes();\n }\n\n override getSeconds(date: Moment): number {\n return date.seconds();\n }\n\n override parseTime(value: unknown, parseFormat: string | string[]): Moment | null {\n return this.parse(value, parseFormat);\n }\n\n override addSeconds(date: Moment, amount: number): Moment {\n return this.clone(date).add({seconds: amount});\n }\n\n /** Creates a Moment instance while respecting the current UTC settings. */\n private _createMoment(\n date?: MomentInput,\n format?: MomentFormatSpecification,\n locale?: string,\n ): Moment {\n const {strict, useUtc}: MatMomentDateAdapterOptions = this._options || {};\n\n return useUtc ? moment.utc(date, format, locale, strict) : moment(date, format, locale, strict);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {MatDateFormats} from '@angular/material/core';\n\nexport const MAT_MOMENT_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'l',\n timeInput: 'LT',\n },\n display: {\n dateInput: 'l',\n timeInput: 'LT',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n timeOptionLabel: 'LT',\n },\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule, Provider} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\n MatMomentDateAdapterOptions,\n MomentDateAdapter,\n} from './moment-date-adapter';\nimport {MAT_MOMENT_DATE_FORMATS} from './moment-date-formats';\n\nexport * from './moment-date-adapter';\nexport * from './moment-date-formats';\n\n@NgModule({\n providers: [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n },\n ],\n})\nexport class MomentDateModule {}\n\n@NgModule({\n providers: [provideMomentDateAdapter()],\n})\nexport class MatMomentDateModule {}\n\nexport function provideMomentDateAdapter(\n formats: MatDateFormats = MAT_MOMENT_DATE_FORMATS,\n options?: MatMomentDateAdapterOptions,\n): Provider[] {\n const providers: Provider[] = [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n },\n {provide: MAT_DATE_FORMATS, useValue: formats},\n ];\n\n if (options) {\n providers.push({provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: options});\n }\n\n return providers;\n}\n"],"names":["moment","_rollupMoment","_moment","MAT_MOMENT_DATE_ADAPTER_OPTIONS","InjectionToken","providedIn","factory","useUtc","range","length","valueFunction","valuesArray","Array","i","MomentDateAdapter","DateAdapter","_options","inject","optional","_localeData","constructor","dateLocale","MAT_DATE_LOCALE","setLocale","locale","momentLocaleData","localeData","firstDayOfWeek","longMonths","months","shortMonths","monthsShort","dates","createDate","format","longDaysOfWeek","weekdays","shortDaysOfWeek","weekdaysShort","narrowDaysOfWeek","weekdaysMin","getYear","date","clone","year","getMonth","month","getDate","getDayOfWeek","day","getMonthNames","style","getDateNames","getDayOfWeekNames","getYearName","getFirstDayOfWeek","getNumDaysInMonth","daysInMonth","ngDevMode","Error","result","_createMoment","isValid","today","parse","value","parseFormat","displayFormat","addCalendarYears","years","add","addCalendarMonths","addCalendarDays","days","toIso8601","deserialize","Date","isDateInstance","ISO_8601","obj","isMoment","invalid","setTime","target","hours","minutes","seconds","set","milliseconds","getHours","getMinutes","getSeconds","parseTime","addSeconds","amount","strict","utc","deps","i0","ɵɵFactoryTarget","Injectable","decorators","MAT_MOMENT_DATE_FORMATS","dateInput","timeInput","display","monthYearLabel","dateA11yLabel","monthYearA11yLabel","timeOptionLabel","MomentDateModule","NgModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","providers","provide","useClass","args","MatMomentDateModule","provideMomentDateAdapter","formats","options","MAT_DATE_FORMATS","useValue","push"],"mappings":"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"}