UNPKG

@matheo/datepicker

Version:

Angular material date+time picker

1 lines 20.6 kB
{"version":3,"file":"matheo-datepicker-luxon.mjs","sources":["../../../../libs/datepicker/luxon/luxon-date-adapter.ts","../../../../libs/datepicker/luxon/luxon-date-formats.ts","../../../../libs/datepicker/luxon/index.ts","../../../../libs/datepicker/luxon/matheo-datepicker-luxon.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.io/license\n */\n\nimport { Inject, Injectable, Optional, InjectionToken } from '@angular/core';\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\nimport { DateAdapter } from '@matheo/datepicker/core';\nimport {\n DateTime as LuxonDateTime,\n Info as LuxonInfo,\n DateTimeOptions as LuxonDateTimeOptions,\n} from 'luxon';\n\n/** Configurable options for {@see LuxonDateAdapter}. */\nexport interface MatLuxonDateAdapterOptions {\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 * {@default false}\n */\n useUtc: boolean;\n\n /**\n * Luxon does not have support for retrieving the first day of the week.\n * This allows supplying a custom function to override it.\n * Remember that you need to return 0 = Sunday, 1 = Monday\n */\n firstDayOfWeek?: (locale: string) => number;\n}\n\n/** InjectionToken for LuxonDateAdapter to configure options. */\nexport const MAT_LUXON_DATE_ADAPTER_OPTIONS = new InjectionToken<MatLuxonDateAdapterOptions>(\n 'MAT_LUXON_DATE_ADAPTER_OPTIONS',\n {\n providedIn: 'root',\n factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY,\n }\n);\n\n/** @docs-private */\nexport function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY(): MatLuxonDateAdapterOptions {\n return {\n useUtc: false,\n };\n}\n\n/** The default hour names to use if Intl API is not available. */\nconst DEFAULT_HOUR_NAMES = range(24, (i) => (i === 0 ? '00' : String(i)));\n\n/** The default minute names to use if Intl API is not available. */\nconst DEFAULT_MINUTE_NAMES = range(60, String);\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 Luxon Dates for use with Angular Material. */\n@Injectable()\nexport class LuxonDateAdapter extends DateAdapter<LuxonDateTime> {\n private _useUTC: boolean;\n private _getFirstDayOfWeek?: MatLuxonDateAdapterOptions['firstDayOfWeek'];\n\n constructor(\n @Optional() @Inject(MAT_DATE_LOCALE) dateLocale: string,\n @Optional()\n @Inject(MAT_LUXON_DATE_ADAPTER_OPTIONS)\n options?: MatLuxonDateAdapterOptions,\n ) {\n super();\n this._useUTC = options ? !!options.useUtc : false;\n this._getFirstDayOfWeek = options?.firstDayOfWeek;\n this.setLocale(dateLocale || LuxonDateTime.local().locale);\n }\n\n setLocale(locale: string) {\n super.setLocale(locale);\n }\n\n getYear(date: LuxonDateTime): number {\n return date.year;\n }\n\n getMonth(date: LuxonDateTime): number {\n // Luxon works with 1-indexed months whereas our code expects 0-indexed.\n return date.month - 1;\n }\n\n getDate(date: LuxonDateTime): number {\n return date.day;\n }\n\n getHours(date: LuxonDateTime): number {\n return date.hour;\n }\n\n setHours(date: LuxonDateTime, hour: number): LuxonDateTime {\n return date.set({ hour });\n }\n\n getMinutes(date: LuxonDateTime): number {\n return date.minute;\n }\n\n setMinutes(date: LuxonDateTime, minute: number): LuxonDateTime {\n return date.set({ minute });\n }\n\n getSeconds(date: LuxonDateTime): number {\n return date.second;\n }\n\n setSeconds(date: LuxonDateTime, second: number, ms?: number): LuxonDateTime {\n return date.set({ second, millisecond: ms });\n }\n\n getMilliseconds(date: LuxonDateTime): number {\n return date.millisecond;\n }\n\n getDayOfWeek(date: LuxonDateTime): number {\n return date.weekday === 7 ? 0 : date.weekday;\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n return LuxonInfo.months(style, { locale: this.locale });\n }\n\n getDateNames(): string[] {\n // At the time of writing, Luxon doesn't offer similar\n // functionality so we have to fall back to the Intl API.\n const dtf = new Intl.DateTimeFormat(this.locale, {\n day: 'numeric',\n timeZone: 'utc',\n });\n\n // Format a UTC date in order to avoid DST issues.\n return range(31, (i) => {\n return dtf.format(LuxonDateTime.utc(2017, 1, i + 1).toJSDate());\n });\n }\n\n getHourNames(): string[] {\n return DEFAULT_HOUR_NAMES;\n }\n\n getMinuteNames(): string[] {\n return DEFAULT_MINUTE_NAMES;\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n // Note that we shift the array once, because Luxon returns Monday as the\n // first day of the week, whereas our logic assumes that it's Sunday. See:\n // https://moment.github.io/luxon/api-docs/index.html#infoweekdays\n const days = LuxonInfo.weekdays(style, { locale: this.locale });\n days.unshift(days.pop()!);\n return days;\n }\n\n getYearName(date: LuxonDateTime): string {\n return date.toFormat('yyyy');\n }\n\n getFirstDayOfWeek(): number {\n // Luxon doesn't have support for getting the first day of the week.\n if (this._getFirstDayOfWeek) {\n return this._getFirstDayOfWeek(this.locale);\n }\n return 0;\n }\n\n getNumDaysInMonth(date: LuxonDateTime): number {\n return date.daysInMonth;\n }\n\n clone(date: LuxonDateTime): LuxonDateTime {\n return LuxonDateTime.fromObject(date.toObject({ includeConfig: true }));\n }\n\n createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0,\n ms: number = 0\n ): LuxonDateTime {\n if (month < 0 || month > 11) {\n throw Error(\n `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\n );\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n // Luxon uses 1-indexed months so we need to add one to the month.\n const result = this._useUTC\n ? LuxonDateTime.utc(year, month + 1, date, hours, minutes, seconds, ms)\n : LuxonDateTime.local(year, month + 1, date, hours, minutes, seconds, ms);\n\n if (!this.isValid(result)) {\n throw Error(`Invalid date \"${date}\". Reason: \"${result.invalidReason}\".`);\n }\n\n return result.setLocale(this.locale);\n }\n\n today(): LuxonDateTime {\n return (this._useUTC ? LuxonDateTime.utc() : LuxonDateTime.local()).setLocale(\n this.locale\n );\n }\n\n parse(value: any, parseFormat: string | string[]): LuxonDateTime | null {\n const options: LuxonDateTimeOptions = this._getOptions();\n\n if (typeof value == 'string' && value.length > 0) {\n const iso8601Date = LuxonDateTime.fromISO(value, options);\n\n if (this.isValid(iso8601Date)) {\n return iso8601Date;\n }\n\n const parseFormats = Array.isArray(parseFormat)\n ? parseFormat\n : [parseFormat];\n for (const format of parseFormats) {\n const fromFormat = LuxonDateTime.fromFormat(value, format, options);\n\n if (this.isValid(fromFormat)) {\n return fromFormat;\n }\n }\n\n return this.invalid();\n } else if (typeof value === 'number') {\n return LuxonDateTime.fromMillis(value, options);\n } else if (value instanceof Date) {\n return LuxonDateTime.fromJSDate(value, options);\n } else if (value instanceof LuxonDateTime) {\n return LuxonDateTime.fromMillis(value.toMillis(), options);\n }\n\n return null;\n }\n\n format(date: LuxonDateTime, displayFormat: string): string {\n if (!this.isValid(date)) {\n throw Error('LuxonDateAdapter: Cannot format invalid date.');\n }\n\n let result = date.setLocale(this.locale);\n if (this._useUTC) {\n result = result.toUTC();\n }\n return result.toFormat(displayFormat);\n }\n\n addCalendarYears(date: LuxonDateTime, years: number): LuxonDateTime {\n return date.plus({ years }).setLocale(this.locale);\n }\n\n addCalendarMonths(date: LuxonDateTime, months: number): LuxonDateTime {\n return date.plus({ months }).setLocale(this.locale);\n }\n\n addCalendarDays(date: LuxonDateTime, days: number): LuxonDateTime {\n return date.plus({ days }).setLocale(this.locale);\n }\n\n addCalendarHours(date: LuxonDateTime, hours: number): LuxonDateTime {\n return date.plus({ hours });\n }\n\n addCalendarMinutes(date: LuxonDateTime, minutes: number): LuxonDateTime {\n return date.plus({ minutes });\n }\n\n addCalendarSeconds(date: LuxonDateTime, seconds: number, ms?: number): LuxonDateTime {\n return date.plus({ seconds, milliseconds: ms });\n }\n\n toIso8601(date: LuxonDateTime): string {\n return date.toISO();\n }\n\n /**\n * Returns the given value if given a valid Luxon or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid DateTime and empty\n * string into null. Returns an invalid date for all other values.\n */\n deserialize(value: any): LuxonDateTime | null {\n const options = this._getOptions();\n let date;\n if (value instanceof Date) {\n date = LuxonDateTime.fromJSDate(value, options);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = LuxonDateTime.fromISO(value, options);\n }\n if (date && this.isValid(date)) {\n return date;\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any): boolean {\n return obj instanceof LuxonDateTime;\n }\n\n isValid(date: LuxonDateTime): boolean {\n return date.isValid;\n }\n\n invalid(): LuxonDateTime {\n return LuxonDateTime.invalid('Invalid Luxon DateTime object.');\n }\n\n /** Gets the options that should be used when constructing a new `DateTime` object. */\n private _getOptions(): LuxonDateTimeOptions {\n return {\n zone: this._useUTC ? 'utc' : undefined,\n locale: this.locale,\n };\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.io/license\n */\n\nimport { MatDateFormats } from '@matheo/datepicker/core';\n\nexport const MAT_LUXON_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'D',\n datetimeInput: 'f',\n timeInput: 'h:mm',\n monthInput: 'LLL',\n yearInput: 'yyyy',\n },\n display: {\n dateInput: 'D',\n datetimeInput: 'f',\n timeInput: 'T',\n monthInput: 'LLL yyyy',\n yearInput: 'yyyy',\n dateA11yLabel: 'DD',\n monthLabel: 'LLL',\n monthDayLabel: 'LLL d',\n monthDayA11yLabel: 'LLLL d',\n monthYearLabel: 'LLL yyyy',\n monthYearA11yLabel: 'LLLL yyyy',\n timeLabel: 'T',\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.io/license\n */\n\nimport { NgModule } from '@angular/core';\nimport {\n DateAdapter as MaterialDateAdapter,\n MAT_DATE_FORMATS,\n MAT_DATE_LOCALE,\n} from '@angular/material/core';\nimport { DateAdapter } from '@matheo/datepicker/core';\nimport {\n MAT_LUXON_DATE_ADAPTER_OPTIONS,\n LuxonDateAdapter,\n} from './luxon-date-adapter';\nimport { MAT_LUXON_DATE_FORMATS } from './luxon-date-formats';\n\nexport * from './luxon-date-adapter';\nexport * from './luxon-date-formats';\n\n@NgModule({\n providers: [\n {\n provide: DateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],\n },\n {\n provide: MaterialDateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],\n },\n ],\n})\nexport class LuxonDateModule {}\n\n@NgModule({\n imports: [LuxonDateModule],\n providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_LUXON_DATE_FORMATS }],\n})\nexport class MatLuxonDateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["LuxonDateTime","LuxonInfo","MaterialDateAdapter"],"mappings":"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"}