@lucca-front/ng 18.3.1 → 18.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core-select/input/select-input.component.d.ts +1 -1
- package/esm2022/callout/callout-disclosure/callout-disclosure.component.mjs +3 -3
- package/esm2022/core-select/input/select-input.component.mjs +8 -6
- package/esm2022/core-select/user/users.directive.mjs +6 -3
- package/esm2022/date2/date-input/date-input.component.mjs +24 -5
- package/esm2022/form-field/form-field.component.mjs +10 -9
- package/esm2022/forms/checkbox-input/checkbox-input.component.mjs +3 -3
- package/esm2022/forms/form-field-id.directive.mjs +4 -4
- package/esm2022/multi-select/displayer/displayer-input.directive.mjs +5 -5
- package/esm2022/multi-select/input/select-all/with-select-all.directive.mjs +9 -13
- package/esm2022/multi-select/input/select-input.component.mjs +8 -4
- package/esm2022/skeleton/skeleton-field/skeleton-field.component.mjs +2 -2
- package/esm2022/tooltip/panel/tooltip-panel.component.mjs +3 -3
- package/esm2022/tooltip/trigger/ellipsis.ruler.mjs +40 -18
- package/esm2022/tooltip/trigger/tooltip-trigger.directive.mjs +38 -37
- package/esm2022/user/tile/user-tile.component.mjs +2 -2
- package/fesm2022/lucca-front-ng-callout.mjs +2 -2
- package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-user.mjs +5 -2
- package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select.mjs +5 -3
- package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date2.mjs +23 -4
- package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +9 -8
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms.mjs +5 -5
- package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-multi-select.mjs +18 -19
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-skeleton.mjs +2 -2
- package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-tooltip.mjs +79 -56
- package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-user.mjs +2 -2
- package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
- package/form-field/form-field.component.d.ts +1 -1
- package/multi-select/displayer/displayer-input.directive.d.ts +2 -2
- package/multi-select/input/select-input.component.d.ts +3 -1
- package/package.json +26 -26
- package/tooltip/panel/tooltip-panel.component.d.ts +2 -2
- package/tooltip/trigger/ellipsis.ruler.d.ts +9 -2
- package/tooltip/trigger/tooltip-trigger.directive.d.ts +4 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lucca-front-ng-date2.mjs","sources":["../../../packages/ng/date2/calendar.token.ts","../../../packages/ng/date2/translations.ts","../../../packages/ng/date2/date2.translate.ts","../../../packages/ng/date2/repeat-times.directive.ts","../../../packages/ng/date2/utils.ts","../../../packages/ng/date2/calendar2/calendar2.tokens.ts","../../../packages/ng/date2/calendar2/calendar2-cell.directive.ts","../../../packages/ng/date2/calendar2/calendar2.component.ts","../../../packages/ng/date2/calendar2/calendar2.component.html","../../../packages/ng/date2/date-format.ts","../../../packages/ng/date2/date-input/date-input.component.ts","../../../packages/ng/date2/date-input/date-input.component.html","../../../packages/ng/date2/lucca-front-ng-date2.ts"],"sourcesContent":["import { inject, InjectionToken, LOCALE_ID } from '@angular/core';\nimport { getLocaleFirstDayOfWeek, getLocaleWeekEndRange } from '@angular/common';\n\nexport type CalendarWeekDay = 1 | 2 | 3 | 4 | 5 | 6 | 7;\n\nexport interface CalendarWeekInfo {\n\tfirstDay: CalendarWeekDay;\n\tweekend: CalendarWeekDay[];\n}\n\nexport const WEEK_INFO = new InjectionToken<CalendarWeekInfo>('Calendar2:WeekInfo', {\n\tfactory: () => {\n\t\tconst locale = inject(LOCALE_ID);\n\t\t// TODO find a reliable way to obtain this, Angular has a deprecated method, date-fns can't get locale from string, Intl's weekDay isn't in firefox\n\t\tconst [weekendStart, weekendEnd] = getLocaleWeekEndRange(locale);\n\t\tconst weekend: number[] = [];\n\t\tlet weekDay: number = weekendStart;\n\t\twhile (weekDay != weekendEnd) {\n\t\t\t// Sunday is 0 in Angular but 7 in Intl\n\t\t\tweekend.push(weekDay || 7);\n\t\t\tweekDay = (weekDay + 1) % 7;\n\t\t}\n\t\tweekend.push(weekDay || 7);\n\t\treturn {\n\t\t\tfirstDay: (getLocaleFirstDayOfWeek(locale) + 7) % 7,\n\t\t\tweekend,\n\t\t} as CalendarWeekInfo;\n\t},\n});\n","export const Translations = {\n\tfr: {\n\t\tdirectionKeysTip: 'Les touches directionnelles servent à parcourir les dates.',\n\t\tpickDate: 'Choisir une date dans le calendrier',\n\t\tprevious: 'Précédent',\n\t\tnext: 'Suivant',\n\t\tclear: 'Vider ce champ',\n\t},\n\ten: {\n\t\tdirectionKeysTip: 'The arrow keys are used to navigate through dates.',\n\t\tpickDate: 'Pick a date in calendar',\n\t\tprevious: 'Previous',\n\t\tnext: 'Next',\n\t\tclear: 'Clear',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_DATE2_TRANSLATIONS = new InjectionToken('LuDate2Translations', {\n\tfactory: () => luDate2Translations,\n});\n\nexport interface Date2Translate {\n\tdirectionKeysTip: string;\n\tpickDate: string;\n\tprevious: string;\n\tnext: string;\n\tclear: string;\n}\n\nexport const luDate2Translations: LuTranslation<Date2Translate> = Translations;\n","import { Directive, inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n\tselector: '[luRepeatTimes]',\n\tstandalone: true,\n})\nexport class RepeatTimesDirective {\n\tprivate templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate viewContainerRef = inject(ViewContainerRef);\n\n\t@Input('luRepeatTimes')\n\tpublic set repeatTimes(times: number) {\n\t\tthis.viewContainerRef.clear();\n\n\t\tfor (let i = 0; i < times; i++) {\n\t\t\tthis.viewContainerRef.createEmbeddedView(this.templateRef);\n\t\t}\n\t}\n}\n","import { CalendarWeekDay, CalendarWeekInfo } from './calendar.token';\nimport { Day, isSameDay, isSameMonth, isSameYear, startOfDay, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarMode } from './calendar2/calendar-mode';\n\nexport function getIntlWeekDay(date: Date): CalendarWeekDay {\n\treturn (date.getDay() || 7) as CalendarWeekDay;\n}\n\nexport function getJSFirstDayOfWeek(weekInfo: CalendarWeekInfo): Day {\n\treturn (weekInfo.firstDay % 7) as Day;\n}\n\nconst modeToComparator: Record<CalendarMode, (a: Date, b: Date) => boolean> = {\n\tday: isSameDay,\n\tmonth: isSameMonth,\n\tyear: isSameYear,\n};\n\nconst modeToPeriodStart: Record<CalendarMode, (date: Date) => Date> = {\n\tday: startOfDay,\n\tmonth: startOfMonth,\n\tyear: startOfYear,\n};\n\nexport function comparePeriods(mode: CalendarMode, a: Date, b: Date): boolean {\n\treturn modeToComparator[mode](a, b);\n}\n\nexport function startOfPeriod(mode: CalendarMode, date: Date): Date {\n\treturn modeToPeriodStart[mode](date);\n}\n","import { InjectionToken, Signal, WritableSignal } from '@angular/core';\nimport { Calendar2CellDirective } from './calendar2-cell.directive';\n\nexport const CALENDAR_CELLS = new InjectionToken<Signal<Calendar2CellDirective[]>>('Calendar2:Calendar2Cells');\nexport const CALENDAR_TABBABLE_DATE = new InjectionToken<WritableSignal<Date>>('Calendar2:TabbableDate');\n","import { computed, Directive, ElementRef, HostBinding, HostListener, inject, input } from '@angular/core';\nimport { CALENDAR_TABBABLE_DATE } from './calendar2.tokens';\nimport { CalendarMode } from './calendar-mode';\nimport { add, addMonths, addYears, endOfWeek, startOfWeek, sub, subMonths, subYears } from 'date-fns';\nimport type { Duration } from 'date-fns/types';\nimport { WEEK_INFO } from '../calendar.token';\nimport { comparePeriods, getJSFirstDayOfWeek } from '../utils';\n\nconst modeToDurationKey: Record<CalendarMode, keyof Duration> = {\n\tday: 'days',\n\tmonth: 'months',\n\tyear: 'years',\n};\n\n@Directive({\n\tselector: '[luCalendar2Cell]',\n\tstandalone: true,\n})\nexport class Calendar2CellDirective {\n\t#host = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n\t#tabbableDate = inject(CALENDAR_TABBABLE_DATE);\n\t#weekInfo = inject(WEEK_INFO);\n\n\t// Index of this day in the current week display row, not depending on locale, 0 is first day of week and 6 is last\n\tluCalendar2Cell = input.required<number>();\n\n\tluCalendar2Mode = input.required<CalendarMode>();\n\n\tluCalendar2Date = input.required<Date>();\n\n\t@HostBinding('tabindex')\n\tget tabindex(): 0 | -1 {\n\t\treturn this.isTabbableDate() ? 0 : -1;\n\t}\n\n\tisTabbableDate = computed(() => {\n\t\treturn comparePeriods(this.luCalendar2Mode(), this.luCalendar2Date(), this.#tabbableDate());\n\t});\n\n\t@HostListener('keydown', ['$event'])\n\tkeydown($event: KeyboardEvent): void {\n\t\t// See https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/examples/datepicker-dialog/#ex_label for keyboard\n\t\t// navigation standards on date pickers\n\t\tconst cellsPerRow = this.luCalendar2Mode() === 'day' ? 7 : 3;\n\t\tconst datePropertyToEdit = modeToDurationKey[this.luCalendar2Mode()];\n\t\tswitch ($event.key) {\n\t\t\tcase 'ArrowRight':\n\t\t\t\tthis.#tabbableDate.set(add(this.luCalendar2Date(), { [datePropertyToEdit]: 1 }));\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tthis.#tabbableDate.set(sub(this.luCalendar2Date(), { [datePropertyToEdit]: 1 }));\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tthis.#tabbableDate.set(add(this.luCalendar2Date(), { [datePropertyToEdit]: cellsPerRow }));\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tthis.#tabbableDate.set(sub(this.luCalendar2Date(), { [datePropertyToEdit]: cellsPerRow }));\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tif (this.luCalendar2Mode() === 'day') {\n\t\t\t\t\tthis.#tabbableDate.set(startOfWeek(this.luCalendar2Date(), { weekStartsOn: getJSFirstDayOfWeek(this.#weekInfo) }));\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'End':\n\t\t\t\tif (this.luCalendar2Mode() === 'day') {\n\t\t\t\t\tthis.#tabbableDate.set(endOfWeek(this.luCalendar2Date(), { weekStartsOn: getJSFirstDayOfWeek(this.#weekInfo) }));\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'PageUp':\n\t\t\t\tif (this.luCalendar2Mode() === 'day') {\n\t\t\t\t\tif ($event.shiftKey) {\n\t\t\t\t\t\tthis.#tabbableDate.set(subYears(this.luCalendar2Date(), 1));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#tabbableDate.set(subMonths(this.luCalendar2Date(), 1));\n\t\t\t\t\t}\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'PageDown':\n\t\t\t\tif (this.luCalendar2Mode() === 'day') {\n\t\t\t\t\tif ($event.shiftKey) {\n\t\t\t\t\t\tthis.#tabbableDate.set(addYears(this.luCalendar2Date(), 1));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#tabbableDate.set(addMonths(this.luCalendar2Date(), 1));\n\t\t\t\t\t}\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tfocus(): void {\n\t\tthis.#host.nativeElement.focus();\n\t}\n\n\tblur(): void {\n\t\tthis.#host.nativeElement.blur();\n\t}\n}\n","import { NgClass } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, LOCALE_ID, model, OnInit, output, viewChildren, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { CalloutComponent } from '@lucca-front/ng/callout';\nimport {\n\taddMonths,\n\taddYears,\n\teachDayOfInterval,\n\teachMonthOfInterval,\n\teachYearOfInterval,\n\tendOfDecade,\n\tendOfMonth,\n\tendOfWeek,\n\tendOfYear,\n\tisSameDay,\n\tisSameMonth,\n\tisSameYear,\n\tisWithinInterval,\n\tlastDayOfMonth,\n\tstartOfDay,\n\tstartOfDecade,\n\tstartOfMonth,\n\tstartOfWeek,\n\tstartOfYear,\n\tsubMonths,\n\tsubYears,\n\tWeekOptions,\n} from 'date-fns';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { WEEK_INFO } from '../calendar.token';\nimport { LU_DATE2_TRANSLATIONS } from '../date2.translate';\nimport { RepeatTimesDirective } from '../repeat-times.directive';\nimport { getIntlWeekDay, getJSFirstDayOfWeek } from '../utils';\nimport { CalendarCellInfo, CalendarMonthInfo, CalendarYearInfo } from './calendar-cell-info';\nimport { CalendarMode } from './calendar-mode';\nimport { Calendar2CellDirective } from './calendar2-cell.directive';\nimport { CALENDAR_CELLS, CALENDAR_TABBABLE_DATE } from './calendar2.tokens';\nimport { CellStatus } from './cell-status';\nimport { DateRange } from './date-range';\n\nconst MODE_HIERARCHY: CalendarMode[] = ['day', 'month', 'year'];\n\n@Component({\n\tselector: 'lu-calendar2',\n\tstandalone: true,\n\timports: [RepeatTimesDirective, ButtonComponent, Calendar2CellDirective, NgClass, CalloutComponent, LuTooltipTriggerDirective],\n\ttemplateUrl: './calendar2.component.html',\n\tstyleUrl: './calendar2.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: CALENDAR_CELLS,\n\t\t\tuseFactory: () => inject(Calendar2Component).calendar2CellInstances,\n\t\t},\n\t\t{\n\t\t\tprovide: CALENDAR_TABBABLE_DATE,\n\t\t\tuseFactory: () => inject(Calendar2Component).tabbableDate,\n\t\t},\n\t],\n})\nexport class Calendar2Component implements OnInit {\n\t#locale = inject(LOCALE_ID);\n\t#weekInfo = inject(WEEK_INFO);\n\treadonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t#intlDateFormat = new Intl.DateTimeFormat(this.#locale, { month: 'long' });\n\t#intlDateYear = new Intl.DateTimeFormat(this.#locale, { year: 'numeric' });\n\n\t#intlDaysLong = new Intl.DateTimeFormat(this.#locale, { weekday: 'long' });\n\t#intlDaysShort = new Intl.DateTimeFormat(this.#locale, { weekday: 'short' });\n\t#intlRelativeDay = new Intl.RelativeTimeFormat(this.#locale, { numeric: 'auto' });\n\n\t#intlMonthsLong = new Intl.DateTimeFormat(this.#locale, { month: 'long' });\n\t#intlMonthsShort = new Intl.DateTimeFormat(this.#locale, { month: 'short' });\n\n\t#weekOptions: WeekOptions = { weekStartsOn: getJSFirstDayOfWeek(this.#weekInfo) };\n\n\tintl = getIntl(LU_DATE2_TRANSLATIONS);\n\n\tshowOverflow = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\tenableOverflow = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\thideToday = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\thasTodayButton = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\thideWeekend = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\t// Date used to init the component and as internal focus model\n\tdate = model.required<Date>();\n\n\ttabbableDate = model<Date | null>(null);\n\n\tmode = model<CalendarMode>('day');\n\n\tdisplayMode = model<CalendarMode>('year');\n\n\tranges = input<DateRange[]>([]);\n\n\tgetCellInfo = input<(date: Date, displayMode: CalendarMode) => CellStatus>((_date: Date) => ({\n\t\tclasses: [],\n\t\tdisabled: false,\n\t}));\n\n\tmonth = computed(() => startOfMonth(this.date()));\n\n\tyear = computed(() => startOfYear(this.date()));\n\n\tdecade = computed(() => startOfDecade(this.date()));\n\n\tpreviousMonth = computed(() => subMonths(this.month(), 1));\n\n\tnextMonth = computed(() => addMonths(this.month(), 1));\n\n\tnextPage = output();\n\n\tpreviousPage = output();\n\n\tdateClicked = output<Date>();\n\n\ttodayLabel = this.#intlRelativeDay.format(0, 'day');\n\tthisMonthLabel = this.#intlRelativeDay.format(0, 'month');\n\tthisYearLabel = this.#intlRelativeDay.format(0, 'year');\n\n\tcalendar2CellInstances = viewChildren(Calendar2CellDirective);\n\n\tdaysOfWeek = eachDayOfInterval({\n\t\tstart: startOfWeek(new Date(), this.#weekOptions),\n\t\tend: endOfWeek(new Date(), this.#weekOptions),\n\t}).map((day) => ({\n\t\tlong: this.#intlDaysLong.format(day),\n\t\tshort: this.#intlDaysShort.format(day),\n\t}));\n\n\tmonthGridDisplay = computed(() => {\n\t\tconst daysOfMonth: CalendarCellInfo[] = eachDayOfInterval({\n\t\t\tstart: this.month(),\n\t\t\tend: endOfMonth(this.month()),\n\t\t}).map((date) => this.dateToCellInfo(date));\n\t\tconst daysByWeek = daysOfMonth.reduce<Record<number, CalendarCellInfo[]>>((acc, day) => {\n\t\t\tconst key = startOfWeek(day.date, this.#weekOptions).getTime();\n\t\t\treturn {\n\t\t\t\t...acc,\n\t\t\t\t[key]: [...(acc[key] || []), day],\n\t\t\t};\n\t\t}, {});\n\t\t// If we want to show days before and after this month\n\t\tif (this.showOverflow()) {\n\t\t\t// Use last week of previous month\n\t\t\tconst startOfPreviousOverflow = startOfWeek(lastDayOfMonth(this.previousMonth()), this.#weekOptions);\n\t\t\tconst previousOverflow = eachDayOfInterval({\n\t\t\t\tstart: startOfPreviousOverflow,\n\t\t\t\tend: endOfMonth(this.previousMonth()),\n\t\t\t}).map((date) => this.dateToCellInfo(date, true));\n\t\t\tif (daysByWeek[startOfPreviousOverflow.getTime()]) {\n\t\t\t\tdaysByWeek[startOfPreviousOverflow.getTime()] = [...previousOverflow, ...daysByWeek[startOfPreviousOverflow.getTime()]];\n\t\t\t}\n\t\t\t// Use first week of next month\n\t\t\tconst startOfNextMonthOverflow = startOfWeek(startOfMonth(this.nextMonth()), this.#weekOptions);\n\t\t\tconst endOfNextMonthOverflow = endOfWeek(startOfMonth(this.nextMonth()), this.#weekOptions);\n\t\t\tconst nextOverflow = eachDayOfInterval({\n\t\t\t\tstart: startOfMonth(this.nextMonth()),\n\t\t\t\tend: endOfNextMonthOverflow,\n\t\t\t}).map((date) => this.dateToCellInfo(date, true));\n\t\t\tif (daysByWeek[startOfNextMonthOverflow.getTime()]) {\n\t\t\t\tdaysByWeek[startOfNextMonthOverflow.getTime()] = [...daysByWeek[startOfNextMonthOverflow.getTime()], ...nextOverflow];\n\t\t\t}\n\t\t}\n\t\treturn Object.keys(daysByWeek)\n\t\t\t.sort()\n\t\t\t.map((weekStart) => daysByWeek[+weekStart]);\n\t});\n\n\tyearGridDisplay = computed(() => {\n\t\tconst monthsOfYear: Date[] = eachMonthOfInterval({\n\t\t\tstart: this.year(),\n\t\t\tend: endOfYear(this.year()),\n\t\t});\n\t\treturn monthsOfYear\n\t\t\t.map((month) => {\n\t\t\t\treturn {\n\t\t\t\t\tdate: month,\n\t\t\t\t\tshort: this.#intlMonthsShort.format(month),\n\t\t\t\t\tlong: this.#intlMonthsLong.format(month),\n\t\t\t\t\tisCurrent: isSameMonth(new Date(), month),\n\t\t\t\t\tstatus: this.getCellInfo()(month, this.displayMode()),\n\t\t\t\t} as CalendarMonthInfo;\n\t\t\t})\n\t\t\t.reduce<CalendarMonthInfo[][]>((all, one, i) => {\n\t\t\t\tconst ch = Math.floor(i / 3);\n\t\t\t\tall[ch] = [...(all[ch] || []), one];\n\t\t\t\treturn all;\n\t\t\t}, []);\n\t});\n\n\tdecadeGridDisplay = computed(() => {\n\t\tconst yearsOfDecade: Date[] = eachYearOfInterval({\n\t\t\tstart: subYears(this.decade(), 1),\n\t\t\tend: addYears(endOfDecade(this.decade()), 1),\n\t\t});\n\t\treturn yearsOfDecade\n\t\t\t.map((year) => {\n\t\t\t\treturn {\n\t\t\t\t\tdate: year,\n\t\t\t\t\tlabel: this.#intlDateYear.format(year),\n\t\t\t\t\tisCurrent: isSameYear(new Date(), year),\n\t\t\t\t\tstatus: this.getCellInfo()(year, this.displayMode()),\n\t\t\t\t};\n\t\t\t})\n\t\t\t.reduce<CalendarYearInfo[][]>((all, one, i) => {\n\t\t\t\tconst ch = Math.floor(i / 3);\n\t\t\t\tall[ch] = [...(all[ch] || []), one];\n\t\t\t\treturn all;\n\t\t\t}, []);\n\t});\n\n\tcurrentMonthLabel = computed(() => {\n\t\treturn this.#intlDateFormat.format(this.date());\n\t});\n\n\tcurrentYearLabel = computed(() => {\n\t\treturn this.#intlDateYear.format(this.date());\n\t});\n\n\tcurrentDecadeLabel = computed(() => {\n\t\t// eslint-disable-next-line no-irregular-whitespace\n\t\treturn `${this.#intlDateYear.format(startOfDecade(this.decade()))} – ${this.#intlDateYear.format(endOfDecade(this.decade()))}`;\n\t});\n\n\tconstructor() {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tif (this.tabbableDate() === null) {\n\t\t\t\t\tthis.tabbableDate.set(this.date());\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\tfocusTabbableDate(): void {\n\t\tthis.calendar2CellInstances()\n\t\t\t.find((cell) => cell.isTabbableDate())\n\t\t\t?.focus();\n\t}\n\n\tblurTabbableDate(): void {\n\t\tthis.calendar2CellInstances()\n\t\t\t.find((cell) => cell.isTabbableDate())\n\t\t\t?.blur();\n\t}\n\n\tclickToday() {\n\t\tthis.onCellClicked(startOfDay(new Date()));\n\t}\n\n\tngOnInit(): void {\n\t\t// On init, set display mode to the mode specified by component consumer\n\t\tthis.displayMode.set(this.mode());\n\t}\n\n\tonCellClicked(date: Date): void {\n\t\t// On cell clicked, if display mode is same as mode, emit value\n\t\t// Else, zoom in to new mode\n\t\tif (this.displayMode() === this.mode()) {\n\t\t\tthis.dateClicked.emit(date);\n\t\t} else {\n\t\t\t// Check that we are able to zoom in\n\t\t\tconst maxZoomLevel = MODE_HIERARCHY.indexOf(this.mode());\n\t\t\tconst currentZoomLevel = MODE_HIERARCHY.indexOf(this.displayMode());\n\t\t\tconst targetZoomLevel = currentZoomLevel - 1;\n\t\t\tif (targetZoomLevel >= 0 && targetZoomLevel >= maxZoomLevel) {\n\t\t\t\tconst newZoomLevel = MODE_HIERARCHY[targetZoomLevel];\n\t\t\t\tswitch (newZoomLevel) {\n\t\t\t\t\tcase 'year':\n\t\t\t\t\t\tthis.date.set(startOfDecade(date));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'month':\n\t\t\t\t\t\tthis.date.set(startOfYear(date));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'day':\n\t\t\t\t\t\tthis.date.set(startOfMonth(date));\n\t\t\t\t}\n\t\t\t\tthis.displayMode.set(newZoomLevel);\n\t\t\t}\n\t\t}\n\t}\n\n\tdateToCellInfo(date: Date, isOverflow = false): CalendarCellInfo {\n\t\tconst status = this.getCellInfo()(date, this.displayMode());\n\n\t\tconst classes: string[] = status?.classes || [];\n\n\t\tconst rangeInfo = this.getRangeInfo(date, 'day');\n\n\t\tif (rangeInfo?.class) {\n\t\t\tclasses.push(rangeInfo.class);\n\t\t}\n\n\t\treturn {\n\t\t\tday: date.getDate(),\n\t\t\tisWeekend: this.#weekInfo.weekend.includes(getIntlWeekDay(date)) && !this.hideWeekend(),\n\t\t\tisOverflow,\n\t\t\tstatus,\n\t\t\tlabel: status.label || rangeInfo?.label,\n\t\t\tdate,\n\t\t\tclasses,\n\t\t\tisCurrent: isSameDay(new Date(), date) && !this.hideToday(),\n\t\t\trangeInfo,\n\t\t\tdisabled: status?.disabled || (isOverflow && !this.enableOverflow()),\n\t\t};\n\t}\n\n\tgetRangeInfo(date: Date, scope: CalendarMode) {\n\t\tconst range: DateRange | undefined = this.ranges().find((range: DateRange) => {\n\t\t\treturn (\n\t\t\t\t(range.scope || 'day') === scope &&\n\t\t\t\tisWithinInterval(date, {\n\t\t\t\t\tstart: startOfDay(range.start),\n\t\t\t\t\tend: range.end || endOfMonth(date),\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t\tif (!range) {\n\t\t\treturn null;\n\t\t}\n\t\tconst isStart: boolean = range && isSameDay(date, range.start);\n\t\tconst isEnd: boolean = range && range.end && isSameDay(date, range.end);\n\t\treturn {\n\t\t\trange,\n\t\t\tisStart,\n\t\t\tisEnd,\n\t\t\tlabel: range?.label,\n\t\t\tclass: range?.class,\n\t\t};\n\t}\n}\n","<div class=\"calendar\">\n\t@switch (displayMode()) { @case ('day') {\n\t<div class=\"calendar-name\" id=\"calendar-name\" aria-live=\"polite\">\n\t\t<button type=\"button\" class=\"calendar-name-button\" (click)=\"displayMode.set('month')\">{{ currentMonthLabel() }}</button>&ngsp;\n\t\t<button type=\"button\" class=\"calendar-name-button\" (click)=\"displayMode.set('year')\">{{ currentYearLabel() }}</button>\n\t\t<span class=\"u-mask\">{{ intl.directionKeysTip }} </span>\n\t</div>\n\t<table class=\"calendar-table\" role=\"grid\" aria-labelledby=\"calendar-name\">\n\t\t<thead class=\"calendar-table-head\">\n\t\t\t<tr class=\"calendar-table-head-row\">\n\t\t\t\t@for (day of daysOfWeek; track day.long) {\n\t\t\t\t<th class=\"calendar-table-head-row-cell\" scope=\"col\" [attr.data-content-after]=\"day.short.substring(0, 1)\">\n\t\t\t\t\t<span class=\"u-mask\">{{ day.long }}</span>\n\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody class=\"calendar-table-body\">\n\t\t\t@for (week of monthGridDisplay(); track $index; let isFirstWeek = $first; let isLastWeek = $last) {\n\t\t\t<tr class=\"calendar-table-body-row\">\n\t\t\t\t<td class=\"calendar-table-body-row-cell is-overflow\" *luRepeatTimes=\"isFirstWeek ? 7 - week.length : 0\"></td>\n\t\t\t\t@for (day of week; track dayIndex; let dayIndex = $index) {\n\t\t\t\t<td\n\t\t\t\t\tclass=\"calendar-table-body-row-cell\"\n\t\t\t\t\t[class.is-daysOff]=\"day.isWeekend\"\n\t\t\t\t\t[class.is-overflow]=\"day.isOverflow\"\n\t\t\t\t\t[class.is-current]=\"day.isCurrent\"\n\t\t\t\t\t[attr.aria-selected]=\"day.status.selected || !!day.rangeInfo?.range\"\n\t\t\t\t\t[class.is-start]=\"day.rangeInfo?.isStart || day.status.selected\"\n\t\t\t\t\t[class.is-end]=\"day.rangeInfo?.isEnd || day.status.selected\"\n\t\t\t\t\t[class.is-selected]=\"day.rangeInfo?.range || day.status.selected\"\n\t\t\t\t\t[ngClass]=\"day.classes\"\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\t[luCalendar2Cell]=\"dayIndex\"\n\t\t\t\t\t\t[luCalendar2Date]=\"day.date\"\n\t\t\t\t\t\tluCalendar2Mode=\"day\"\n\t\t\t\t\t\tclass=\"calendar-table-body-row-cell-action\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t[attr.aria-disabled]=\"day.disabled ? 'true' : null\"\n\t\t\t\t\t\t(click)=\"day.disabled?null:onCellClicked(day.date)\"\n\t\t\t\t\t\t[luTooltip]=\"day.label\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ day.day }} @if (day.isCurrent) {\n\t\t\t\t\t\t<span class=\"u-mask\">({{ todayLabel }})</span>\n\t\t\t\t\t\t} @if (day.isWeekend) {\n\t\t\t\t\t\t<svg class=\"calendar-table-body-row-cell-action-stripes\">\n\t\t\t\t\t\t\t<use href=\"#calendar-stripes-symbol\"></use>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t}\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t\t<td class=\"calendar-table-body-row-cell is-overflow\" *luRepeatTimes=\"isLastWeek ? 7 - week.length : 0\"></td>\n\t\t\t</tr>\n\t\t\t}\n\t\t\t<tr class=\"calendar-table-body-row\" *luRepeatTimes=\"6 - monthGridDisplay().length\">\n\t\t\t\t<td class=\"calendar-table-body-row-cell\" *luRepeatTimes=\"7\"></td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n\t@if (hasTodayButton()) {\n\t<div class=\"calendar-divider divider\"></div>\n\t<button class=\"calendar-todayLink link\" type=\"button\" (click)=\"clickToday()\">{{ todayLabel }}</button>\n\t}\n\t<svg class=\"calendar-stripes\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\" aria-hidden=\"true\">\n\t\t<symbol id=\"calendar-stripes-symbol\" viewBox=\"0 0 60 60\">\n\t\t\t<path\n\t\t\t\tclass=\"calendar-stripes-symbol-path\"\n\t\t\t\td=\"m-41.82 43.03 84.85-84.85.53.53-84.85 84.85zm2.12 2.12L45.15-39.7l.53.53-84.85 84.85zm2.12 2.12\n\t\t\t84.85-84.85.53.53-84.85 84.85zm2.12 2.13L49.4-35.47l.53.53-84.85 84.85zm2.12 2.11\n\t\t\t84.85-84.85.54.53-84.86 84.86zm2.12 2.13 84.86-84.86.53.53-84.86 84.86zm2.12\n\t\t\t2.12L55.76-29.1l.53.53-84.86 84.86zm2.13 2.12 84.85-84.85.53.53-84.85 84.85zm2.12\n\t\t\t2.12L60-24.85l.53.53-84.85 84.85zm2.12 2.12 84.85-84.85.53.53-84.85 84.85zm2.12\n\t\t\t2.12L64.24-20.6l.53.53-84.85 84.85zm2.12 2.12 84.85-84.85.53.53-84.85 84.85zm2.12\n\t\t\t2.13L68.5-16.37l.53.53-84.86 84.86zm2.12 2.11 84.86-84.85.53.53-84.86 84.86zm2.13 2.13\n\t\t\t84.85-84.85.53.53-84.85 84.85zm2.12 2.12L74.85-10l.53.53-84.85 84.85zm2.12\n\t\t\t2.12L76.97-7.88l.53.53L-7.35 77.5zm2.12 2.13L79.09-5.77l.53.53-84.85 84.85zm2.12\n\t\t\t2.11L81.21-3.64l.53.53L-3.1 81.74zm2.12 2.12L83.33-1.52l.53.53L-.99\n\t\t\t83.86zM.6 85.46 85.46.6l.53.53L1.13 86zm2.12 2.12L87.58 2.72l.53.53L3.25 88.11zm2.13 2.12L89.7\n\t\t\t4.85l.53.53L5.38 90.23zm2.12 2.12L91.82 6.97l.53.53L7.5 92.35zm2.12 2.12L93.94 9.1l.53.53L9.62\n\t\t\t94.47zm2.12 2.12 84.85-84.85.53.53-84.85 84.85zm2.12 2.12 84.85-84.85.53.53-84.85 84.85zm2.12\n\t\t\t2.12 84.86-84.85.53.53-84.86 84.86z\"\n\t\t\t/>\n\t\t</symbol>\n\t</svg>\n\t} @case ('month') {\n\t<div class=\"calendar-name\" id=\"calendar-year-name\">\n\t\t<button type=\"button\" class=\"calendar-name-button\" (click)=\"displayMode.set('year')\">{{ currentYearLabel() }}</button>\n\t\t<span class=\"u-mask\">{{ intl.directionKeysTip }} </span>\n\t</div>\n\t<table class=\"calendar-table\" role=\"grid\" aria-labelledby=\"calendar-year-name\">\n\t\t<tbody class=\"calendar-table-body\">\n\t\t\t@for (quarter of yearGridDisplay(); track $index) {\n\t\t\t<tr class=\"calendar-table-body-row\">\n\t\t\t\t@for (month of quarter; track month.date.getTime(); let index = $index) {\n\t\t\t\t<td\n\t\t\t\t\tclass=\"calendar-table-body-row-cell\"\n\t\t\t\t\t[class.is-current]=\"month.isCurrent\"\n\t\t\t\t\t[class.is-selected]=\"month.status.selected\"\n\t\t\t\t\t[ngClass]=\"month.status.classes\"\n\t\t\t\t\t[attr.aria-selected]=\"month.status.selected\"\n\t\t\t\t\t[class.is-start]=\"month.status.selected\"\n\t\t\t\t\t[class.is-end]=\"month.status.selected\"\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"calendar-table-body-row-cell-action\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t[attr.data-content-after]=\"month.short\"\n\t\t\t\t\t\t[luCalendar2Cell]=\"index\"\n\t\t\t\t\t\t[luCalendar2Date]=\"month.date\"\n\t\t\t\t\t\t[disabled]=\"month.status.disabled\"\n\t\t\t\t\t\t(click)=\"onCellClicked(month.date)\"\n\t\t\t\t\t\tluCalendar2Mode=\"month\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"u-mask\">{{ month.long }}</span>\n\t\t\t\t\t\t@if (month.isCurrent) {\n\t\t\t\t\t\t<span class=\"u-mask\">({{ thisMonthLabel }})</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t}\n\t\t</tbody>\n\t</table>\n\t} @case ('year') {\n\t<div class=\"calendar-name\" id=\"calendar-decade-name\">\n\t\t{{ currentDecadeLabel() }}\n\t\t<span class=\"u-mask\">{{ intl.directionKeysTip }} </span>\n\t</div>\n\t<table class=\"calendar-table\" role=\"grid\" aria-labelledby=\"calendar-decade-name\">\n\t\t<tbody class=\"calendar-table-body\">\n\t\t\t@for (row of decadeGridDisplay(); track $index; let firstRow = $first; let lastRow = $last) {\n\t\t\t<tr class=\"calendar-table-body-row\">\n\t\t\t\t@for (year of row; track year.date.getTime(); let index = $index; let firstCell = $first; let lastCell = $last) {\n\t\t\t\t<td\n\t\t\t\t\tclass=\"calendar-table-body-row-cell\"\n\t\t\t\t\t[class.is-overflow]=\"(firstRow && firstCell) || (lastRow && lastCell)\"\n\t\t\t\t\t[class.is-current]=\"year.isCurrent\"\n\t\t\t\t\t[class.is-selected]=\"year.status.selected\"\n\t\t\t\t\t[attr.aria-selected]=\"year.status.selected\"\n\t\t\t\t\t[ngClass]=\"year.status.classes\"\n\t\t\t\t\t[class.is-start]=\"year.status.selected\"\n\t\t\t\t\t[class.is-end]=\"year.status.selected\"\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"calendar-table-body-row-cell-action\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t[luCalendar2Cell]=\"index\"\n\t\t\t\t\t\t[disabled]=\"year.status.disabled\"\n\t\t\t\t\t\t[luCalendar2Date]=\"year.date\"\n\t\t\t\t\t\tluCalendar2Mode=\"year\"\n\t\t\t\t\t\t(click)=\"onCellClicked(year.date)\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ year.label }} @if (year.isCurrent) {\n\t\t\t\t\t\t<span class=\"u-mask\">({{ thisYearLabel }})</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t}\n\t\t</tbody>\n\t</table>\n\t} }\n</div>\n","export function getDateFormat(locale: string): string {\n\treturn new Intl.DateTimeFormat(locale).formatToParts(new Date('01/01/2024')).reduce((acc, part) => {\n\t\tswitch (part.type) {\n\t\t\tcase 'day':\n\t\t\t\treturn `${acc}${'d'.repeat(part.value.length)}`;\n\t\t\tcase 'month':\n\t\t\t\treturn `${acc}${'M'.repeat(part.value.length)}`;\n\t\t\tcase 'year':\n\t\t\t\treturn `${acc}${'y'.repeat(part.value.length)}`;\n\t\t\tcase 'literal':\n\t\t\t\treturn `${acc}${part.value}`;\n\t\t}\n\t\treturn acc;\n\t}, '');\n}\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef, forwardRef, inject, input, LOCALE_ID, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { getIntl, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { PopoverDirective } from '@lucca-front/ng/popover2';\nimport { addMonths, addYears, parse, startOfDay, startOfMonth } from 'date-fns';\nimport { CalendarMode } from '../calendar2/calendar-mode';\nimport { Calendar2Component } from '../calendar2/calendar2.component';\nimport { CellStatus } from '../calendar2/cell-status';\nimport { DateRange } from '../calendar2/date-range';\nimport { getDateFormat } from '../date-format';\nimport { LU_DATE2_TRANSLATIONS } from '../date2.translate';\nimport { comparePeriods, startOfPeriod } from '../utils';\n\n@Component({\n\tselector: 'lu-date-input',\n\tstandalone: true,\n\timports: [PopoverDirective, Calendar2Component, IconComponent, InputDirective],\n\ttemplateUrl: './date-input.component.html',\n\tstyleUrl: './date-input.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => DateInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: NG_VALIDATORS,\n\t\t\tuseExisting: forwardRef(() => DateInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class DateInputComponent implements ControlValueAccessor, Validator {\n\t#locale = inject(LOCALE_ID);\n\n\t#intlDateTimeFormat = new Intl.DateTimeFormat(this.#locale);\n\n\t#intlDateTimeFormatMonth = new Intl.DateTimeFormat(this.#locale, { month: 'numeric', year: 'numeric' });\n\t#intlDateTimeFormatYear = new Intl.DateTimeFormat(this.#locale, { year: 'numeric' });\n\n\t// Contains the current date format (like dd/mm/yy etc) based on current locale\n\t#dateFormat = getDateFormat(this.#locale).toUpperCase();\n\n\tintl = getIntl(LU_DATE2_TRANSLATIONS);\n\n\t// CVA stuff\n\t#onChange?: (value: Date) => void;\n\tonTouched?: () => void;\n\tdisabled = false;\n\n\tmin = input<Date>(new Date('1/1/1000'));\n\tmax = input<Date | null>(null);\n\n\tranges = input<DateRange[]>([]);\n\n\tdisableOverflow = input<boolean, boolean>(false, { transform: booleanAttribute });\n\thideOverflow = input<boolean, boolean>(false, { transform: booleanAttribute });\n\thideToday = input<boolean, boolean>(false, { transform: booleanAttribute });\n\thasTodayButton = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tclearable = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tplaceholder = input<string>();\n\n\tmode = input<CalendarMode>('day');\n\thideWeekend = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\tgetCellInfo = input<((day: Date, mode: CalendarMode) => CellStatus) | null>();\n\n\tpopoverPositions: ConnectionPositionPair[] = [\n\t\tnew ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }, 16, 6),\n\t\tnew ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }, 16, 6),\n\t];\n\n\tcalendarMode = signal<CalendarMode>('day');\n\n\tinputFocused = signal(false);\n\n\tprotected currentDate = signal(startOfMonth(new Date()));\n\n\tprotected tabbableDate = signal<Date | null>(null);\n\n\tselectedDate = signal<Date | null>(null);\n\n\tcalendar = viewChild(Calendar2Component);\n\n\tdisplayValue = computed(() => {\n\t\tif (this.selectedDate() && this.isValidDate(this.selectedDate())) {\n\t\t\tlet formatter: Intl.DateTimeFormat;\n\t\t\tswitch (this.mode()) {\n\t\t\t\tcase 'day':\n\t\t\t\t\tformatter = this.#intlDateTimeFormat;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'month':\n\t\t\t\t\tformatter = this.#intlDateTimeFormatMonth;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'year':\n\t\t\t\t\tformatter = this.#intlDateTimeFormatYear;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn formatter.format(this.selectedDate());\n\t\t}\n\t\treturn this.userTextInput();\n\t});\n\n\tuserTextInput = signal<string>('');\n\n\tcombinedGetCellInfo = (date: Date, mode: CalendarMode): CellStatus => {\n\t\tconst infoFromInput = this.getCellInfo()?.(date, mode);\n\t\treturn {\n\t\t\tclasses: [...(infoFromInput?.classes || [])],\n\t\t\tdisabled: infoFromInput?.disabled || !this.isInMinMax(date, mode),\n\t\t\tselected: this.selectedDate() && this.calendarMode() === mode && comparePeriods(mode, date, this.selectedDate()),\n\t\t\tlabel: infoFromInput?.label,\n\t\t};\n\t};\n\n\tpreviousButton = viewChild<ElementRef<Element>>('previousButtonRef');\n\n\tnextButton = viewChild<ElementRef<Element>>('nextButtonRef');\n\n\tget isNavigationButtonFocused(): boolean {\n\t\treturn [this.previousButton()?.nativeElement, this.nextButton()?.nativeElement].includes(document.activeElement);\n\t}\n\n\tconstructor() {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst inputValue = this.userTextInput();\n\t\t\t\tif (inputValue.length > 0) {\n\t\t\t\t\tconst parsed = parse(inputValue, this.#dateFormat, startOfDay(new Date()));\n\t\t\t\t\tif (parsed.getFullYear() > 999) {\n\t\t\t\t\t\tthis.selectedDate.set(startOfDay(parsed));\n\t\t\t\t\t\tthis.currentDate.set(startOfDay(parsed));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.selectedDate.set(parsed);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(() => {\n\t\t\tthis.#onChange?.(this.selectedDate());\n\t\t});\n\n\t\tɵeffectWithDeps([this.calendarMode, this.tabbableDate], (calendarMode, tabbableDate) => {\n\t\t\tif (tabbableDate && !comparePeriods(calendarMode, tabbableDate, this.currentDate())) {\n\t\t\t\tthis.currentDate.set(startOfPeriod(calendarMode, tabbableDate));\n\t\t\t}\n\t\t\tif (!this.isNavigationButtonFocused && !this.inputFocused()) {\n\t\t\t\tthis.calendar()?.blurTabbableDate();\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.calendar()?.focusTabbableDate();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\topenPopover(ref: PopoverDirective): void {\n\t\tref.openPopover(true, true);\n\t\t// Once popover is opened, aka in the next CD cycle, focus current tabbable date\n\t\tsetTimeout(() => {\n\t\t\tthis.calendar()?.focusTabbableDate();\n\t\t});\n\t}\n\n\tvalidate(control: AbstractControl<Date, Date>): ValidationErrors {\n\t\treturn this.isValidDate(control.value) ? null : { date: true };\n\t}\n\n\tisValidDate(date: Date): boolean {\n\t\treturn !!date && !isNaN(date.getTime());\n\t}\n\n\tisInMinMax(date: Date, mode: CalendarMode): boolean {\n\t\tlet result = true;\n\t\tif (this.min()) {\n\t\t\tswitch (mode) {\n\t\t\t\tcase 'day':\n\t\t\t\t\tresult = result && this.min().getTime() <= date.getTime();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'month':\n\t\t\t\t\tresult = result && this.min().getMonth() <= date.getMonth();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'year':\n\t\t\t\t\tresult = result && this.min().getFullYear() <= date.getFullYear();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (this.max()) {\n\t\t\tswitch (mode) {\n\t\t\t\tcase 'day':\n\t\t\t\t\tresult = result && this.max().getTime() >= date.getTime();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'month':\n\t\t\t\t\tresult = result && this.max().getMonth() >= date.getMonth();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'year':\n\t\t\t\t\tresult = result && this.max().getFullYear() >= date.getFullYear();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\twriteValue(date: Date): void {\n\t\tif (date) {\n\t\t\tthis.selectedDate.set(startOfDay(date));\n\t\t\tthis.currentDate.set(startOfDay(date));\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: Date) => void): void {\n\t\tthis.#onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState?(isDisabled: boolean): void {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\tprev() {\n\t\tthis.move(-1);\n\t}\n\n\tnext() {\n\t\tthis.move(1);\n\t}\n\n\tclear(input: HTMLInputElement) {\n\t\tinput.value = '';\n\t\tthis.selectedDate.set(null);\n\t\tthis.onTouched?.();\n\t}\n\n\tcurrentDateChangeFromCalendar(date: Date): void {\n\t\tthis.tabbableDate.set(date);\n\t\tthis.currentDate.set(date);\n\t}\n\n\tmove(direction: 1 | -1): void {\n\t\tswitch (this.calendarMode()) {\n\t\t\tcase 'year':\n\t\t\t\tthis.currentDate.set(addYears(this.currentDate(), direction * 10));\n\t\t\t\tthis.tabbableDate.set(addYears(this.tabbableDate(), direction * 10));\n\t\t\t\tbreak;\n\t\t\tcase 'month':\n\t\t\t\tthis.currentDate.set(addYears(this.currentDate(), direction));\n\t\t\t\tthis.tabbableDate.set(addYears(this.tabbableDate(), direction));\n\t\t\t\tbreak;\n\t\t\tcase 'day':\n\t\t\t\tthis.currentDate.set(addMonths(this.currentDate(), direction));\n\t\t\t\tthis.tabbableDate.set(addMonths(this.tabbableDate(), direction));\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","<div class=\"textField\">\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\ttype=\"text\"\n\t\t\tid=\"date\"\n\t\t\t#date\n\t\t\tluInput\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[value]=\"displayValue()\"\n\t\t\t(input)=\"userTextInput.set(date.value)\"\n\t\t\t(blur)=\"onTouched?.();inputFocused.set(false)\"\n\t\t\t(focus)=\"inputFocused.set(true)\"\n\t\t\t[attr.placeholder]=\"placeholder()\"\n\t\t\taria-haspopup=\"true\"\n\t\t\trole=\"combobox\"\n\t\t\t(click)=\"popoverRef.openPopover(true, true)\"\n\t\t\t(keyup.arrowDown)=\"popoverRef.opened() ? popoverRef.focusBackToContent($event) : openPopover(popoverRef)\"\n\t\t\t(keyup.space)=\" popoverRef.opened() ? popoverRef.focusBackToContent($event) : openPopover(popoverRef)\"\n\t\t\t(keyup.escape)=\"popoverRef.close()\"\n\t\t\t[disabled]=\"disabled\"\n\t\t/>\n\n\t\t<div class=\"textField-input-affix\">\n\t\t\t@if (clearable() && date.value !== '') {\n\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clear(date)\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t</button>\n\t\t\t}\n\t\t\t<button\n\t\t\t\t[luPopover2]=\"calendar\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[luPopoverNoCloseButton]=\"true\"\n\t\t\t\t#popoverRef=\"luPopover2\"\n\t\t\t\t[customPositions]=\"popoverPositions\"\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"button mod-onlyIcon mod-text textField-input-affix-toggle\"\n\t\t\t>\n\t\t\t\t<lu-icon [icon]=\"'calendarDate'\" [alt]=\"intl.pickDate\"></lu-icon>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n\n<ng-template #calendar>\n\t<div class=\"calendarWrapper\">\n\t\t<div class=\"calendarWrapper-navigation mod-prev\">\n\t\t\t<button class=\"calendarWrapper-navigation-button button\" type=\"button\" (click)=\"prev()\" #previousButtonRef>\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-chevronLeft\"></span><span class=\"u-mask\">{{ intl.previous }}</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"calendarWrapper-navigation mod-next\">\n\t\t\t<button class=\"calendarWrapper-navigation-button button\" type=\"button\" (click)=\"next()\" #nextButtonRef>\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-chevronRight\"></span><span class=\"u-mask\"> {{ intl.next }}</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"calendarWrapper-content\" tabindex=\"-1\">\n\t\t\t<lu-calendar2\n\t\t\t\t[enableOverflow]=\"!disableOverflow()\"\n\t\t\t\t[showOverflow]=\"!hideOverflow()\"\n\t\t\t\t[hideToday]=\"hideToday()\"\n\t\t\t\t[hasTodayButton]=\"hasTodayButton()\"\n\t\t\t\t[date]=\"currentDate()\"\n\t\t\t\t(dateChange)=\"currentDateChangeFromCalendar($event)\"\n\t\t\t\t[(tabbableDate)]=\"tabbableDate\"\n\t\t\t\t[getCellInfo]=\"combinedGetCellInfo\"\n\t\t\t\t[ranges]=\"ranges()\"\n\t\t\t\t(dateClicked)=\"selectedDate.set($event);currentDate.set($event);popoverRef.close();date.focus()\"\n\t\t\t\t(nextPage)=\"move(1)\"\n\t\t\t\t(previousPage)=\"move(-1)\"\n\t\t\t\t[(displayMode)]=\"calendarMode\"\n\t\t\t\t[mode]=\"mode()\"\n\t\t\t\t[hideWeekend]=\"hideWeekend()\"\n\t\t\t></lu-calendar2>\n\t\t</div>\n\t</div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵeffectWithDeps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lucca-front-ng-date2.mjs","sources":["../../../packages/ng/date2/calendar.token.ts","../../../packages/ng/date2/translations.ts","../../../packages/ng/date2/date2.translate.ts","../../../packages/ng/date2/repeat-times.directive.ts","../../../packages/ng/date2/utils.ts","../../../packages/ng/date2/calendar2/calendar2.tokens.ts","../../../packages/ng/date2/calendar2/calendar2-cell.directive.ts","../../../packages/ng/date2/calendar2/calendar2.component.ts","../../../packages/ng/date2/calendar2/calendar2.component.html","../../../packages/ng/date2/date-format.ts","../../../packages/ng/date2/date-input/date-input.component.ts","../../../packages/ng/date2/date-input/date-input.component.html","../../../packages/ng/date2/lucca-front-ng-date2.ts"],"sourcesContent":["import { inject, InjectionToken, LOCALE_ID } from '@angular/core';\nimport { getLocaleFirstDayOfWeek, getLocaleWeekEndRange } from '@angular/common';\n\nexport type CalendarWeekDay = 1 | 2 | 3 | 4 | 5 | 6 | 7;\n\nexport interface CalendarWeekInfo {\n\tfirstDay: CalendarWeekDay;\n\tweekend: CalendarWeekDay[];\n}\n\nexport const WEEK_INFO = new InjectionToken<CalendarWeekInfo>('Calendar2:WeekInfo', {\n\tfactory: () => {\n\t\tconst locale = inject(LOCALE_ID);\n\t\t// TODO find a reliable way to obtain this, Angular has a deprecated method, date-fns can't get locale from string, Intl's weekDay isn't in firefox\n\t\tconst [weekendStart, weekendEnd] = getLocaleWeekEndRange(locale);\n\t\tconst weekend: number[] = [];\n\t\tlet weekDay: number = weekendStart;\n\t\twhile (weekDay != weekendEnd) {\n\t\t\t// Sunday is 0 in Angular but 7 in Intl\n\t\t\tweekend.push(weekDay || 7);\n\t\t\tweekDay = (weekDay + 1) % 7;\n\t\t}\n\t\tweekend.push(weekDay || 7);\n\t\treturn {\n\t\t\tfirstDay: (getLocaleFirstDayOfWeek(locale) + 7) % 7,\n\t\t\tweekend,\n\t\t} as CalendarWeekInfo;\n\t},\n});\n","export const Translations = {\n\tfr: {\n\t\tdirectionKeysTip: 'Les touches directionnelles servent à parcourir les dates.',\n\t\tpickDate: 'Choisir une date dans le calendrier',\n\t\tprevious: 'Précédent',\n\t\tnext: 'Suivant',\n\t\tclear: 'Vider ce champ',\n\t},\n\ten: {\n\t\tdirectionKeysTip: 'The arrow keys are used to navigate through dates.',\n\t\tpickDate: 'Pick a date in calendar',\n\t\tprevious: 'Previous',\n\t\tnext: 'Next',\n\t\tclear: 'Clear',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_DATE2_TRANSLATIONS = new InjectionToken('LuDate2Translations', {\n\tfactory: () => luDate2Translations,\n});\n\nexport interface Date2Translate {\n\tdirectionKeysTip: string;\n\tpickDate: string;\n\tprevious: string;\n\tnext: string;\n\tclear: string;\n}\n\nexport const luDate2Translations: LuTranslation<Date2Translate> = Translations;\n","import { Directive, inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n\tselector: '[luRepeatTimes]',\n\tstandalone: true,\n})\nexport class RepeatTimesDirective {\n\tprivate templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate viewContainerRef = inject(ViewContainerRef);\n\n\t@Input('luRepeatTimes')\n\tpublic set repeatTimes(times: number) {\n\t\tthis.viewContainerRef.clear();\n\n\t\tfor (let i = 0; i < times; i++) {\n\t\t\tthis.viewContainerRef.createEmbeddedView(this.templateRef);\n\t\t}\n\t}\n}\n","import { CalendarWeekDay, CalendarWeekInfo } from './calendar.token';\nimport { Day, isSameDay, isSameMonth, isSameYear, startOfDay, startOfMonth, startOfYear } from 'date-fns';\nimport { CalendarMode } from './calendar2/calendar-mode';\n\nexport function getIntlWeekDay(date: Date): CalendarWeekDay {\n\treturn (date.getDay() || 7) as CalendarWeekDay;\n}\n\nexport function getJSFirstDayOfWeek(weekInfo: CalendarWeekInfo): Day {\n\treturn (weekInfo.firstDay % 7) as Day;\n}\n\nconst modeToComparator: Record<CalendarMode, (a: Date, b: Date) => boolean> = {\n\tday: isSameDay,\n\tmonth: isSameMonth,\n\tyear: isSameYear,\n};\n\nconst modeToPeriodStart: Record<CalendarMode, (date: Date) => Date> = {\n\tday: startOfDay,\n\tmonth: startOfMonth,\n\tyear: startOfYear,\n};\n\nexport function comparePeriods(mode: CalendarMode, a: Date, b: Date): boolean {\n\treturn modeToComparator[mode](a, b);\n}\n\nexport function startOfPeriod(mode: CalendarMode, date: Date): Date {\n\treturn modeToPeriodStart[mode](date);\n}\n","import { InjectionToken, Signal, WritableSignal } from '@angular/core';\nimport { Calendar2CellDirective } from './calendar2-cell.directive';\n\nexport const CALENDAR_CELLS = new InjectionToken<Signal<Calendar2CellDirective[]>>('Calendar2:Calendar2Cells');\nexport const CALENDAR_TABBABLE_DATE = new InjectionToken<WritableSignal<Date>>('Calendar2:TabbableDate');\n","import { computed, Directive, ElementRef, HostBinding, HostListener, inject, input } from '@angular/core';\nimport { CALENDAR_TABBABLE_DATE } from './calendar2.tokens';\nimport { CalendarMode } from './calendar-mode';\nimport { add, addMonths, addYears, endOfWeek, startOfWeek, sub, subMonths, subYears } from 'date-fns';\nimport type { Duration } from 'date-fns/types';\nimport { WEEK_INFO } from '../calendar.token';\nimport { comparePeriods, getJSFirstDayOfWeek } from '../utils';\n\nconst modeToDurationKey: Record<CalendarMode, keyof Duration> = {\n\tday: 'days',\n\tmonth: 'months',\n\tyear: 'years',\n};\n\n@Directive({\n\tselector: '[luCalendar2Cell]',\n\tstandalone: true,\n})\nexport class Calendar2CellDirective {\n\t#host = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n\n\t#tabbableDate = inject(CALENDAR_TABBABLE_DATE);\n\t#weekInfo = inject(WEEK_INFO);\n\n\t// Index of this day in the current week display row, not depending on locale, 0 is first day of week and 6 is last\n\tluCalendar2Cell = input.required<number>();\n\n\tluCalendar2Mode = input.required<CalendarMode>();\n\n\tluCalendar2Date = input.required<Date>();\n\n\t@HostBinding('tabindex')\n\tget tabindex(): 0 | -1 {\n\t\treturn this.isTabbableDate() ? 0 : -1;\n\t}\n\n\tisTabbableDate = computed(() => {\n\t\treturn comparePeriods(this.luCalendar2Mode(), this.luCalendar2Date(), this.#tabbableDate());\n\t});\n\n\t@HostListener('keydown', ['$event'])\n\tkeydown($event: KeyboardEvent): void {\n\t\t// See https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/examples/datepicker-dialog/#ex_label for keyboard\n\t\t// navigation standards on date pickers\n\t\tconst cellsPerRow = this.luCalendar2Mode() === 'day' ? 7 : 3;\n\t\tconst datePropertyToEdit = modeToDurationKey[this.luCalendar2Mode()];\n\t\tswitch ($event.key) {\n\t\t\tcase 'ArrowRight':\n\t\t\t\tthis.#tabbableDate.set(add(this.luCalendar2Date(), { [datePropertyToEdit]: 1 }));\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tthis.#tabbableDate.set(sub(this.luCalendar2Date(), { [datePropertyToEdit]: 1 }));\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tthis.#tabbableDate.set(add(this.luCalendar2Date(), { [datePropertyToEdit]: cellsPerRow }));\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tthis.#tabbableDate.set(sub(this.luCalendar2Date(), { [datePropertyToEdit]: cellsPerRow }));\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tif (this.luCalendar2Mode() === 'day') {\n\t\t\t\t\tthis.#tabbableDate.set(startOfWeek(this.luCalendar2Date(), { weekStartsOn: getJSFirstDayOfWeek(this.#weekInfo) }));\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'End':\n\t\t\t\tif (this.luCalendar2Mode() === 'day') {\n\t\t\t\t\tthis.#tabbableDate.set(endOfWeek(this.luCalendar2Date(), { weekStartsOn: getJSFirstDayOfWeek(this.#weekInfo) }));\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'PageUp':\n\t\t\t\tif (this.luCalendar2Mode() === 'day') {\n\t\t\t\t\tif ($event.shiftKey) {\n\t\t\t\t\t\tthis.#tabbableDate.set(subYears(this.luCalendar2Date(), 1));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#tabbableDate.set(subMonths(this.luCalendar2Date(), 1));\n\t\t\t\t\t}\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'PageDown':\n\t\t\t\tif (this.luCalendar2Mode() === 'day') {\n\t\t\t\t\tif ($event.shiftKey) {\n\t\t\t\t\t\tthis.#tabbableDate.set(addYears(this.luCalendar2Date(), 1));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#tabbableDate.set(addMonths(this.luCalendar2Date(), 1));\n\t\t\t\t\t}\n\t\t\t\t\t$event.preventDefault();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tfocus(): void {\n\t\tthis.#host.nativeElement.focus();\n\t}\n\n\tblur(): void {\n\t\tthis.#host.nativeElement.blur();\n\t}\n}\n","import { NgClass } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, LOCALE_ID, model, OnInit, output, viewChildren, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { CalloutComponent } from '@lucca-front/ng/callout';\nimport {\n\taddMonths,\n\taddYears,\n\teachDayOfInterval,\n\teachMonthOfInterval,\n\teachYearOfInterval,\n\tendOfDecade,\n\tendOfMonth,\n\tendOfWeek,\n\tendOfYear,\n\tisSameDay,\n\tisSameMonth,\n\tisSameYear,\n\tisWithinInterval,\n\tlastDayOfMonth,\n\tstartOfDay,\n\tstartOfDecade,\n\tstartOfMonth,\n\tstartOfWeek,\n\tstartOfYear,\n\tsubMonths,\n\tsubYears,\n\tWeekOptions,\n} from 'date-fns';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { WEEK_INFO } from '../calendar.token';\nimport { LU_DATE2_TRANSLATIONS } from '../date2.translate';\nimport { RepeatTimesDirective } from '../repeat-times.directive';\nimport { getIntlWeekDay, getJSFirstDayOfWeek } from '../utils';\nimport { CalendarCellInfo, CalendarMonthInfo, CalendarYearInfo } from './calendar-cell-info';\nimport { CalendarMode } from './calendar-mode';\nimport { Calendar2CellDirective } from './calendar2-cell.directive';\nimport { CALENDAR_CELLS, CALENDAR_TABBABLE_DATE } from './calendar2.tokens';\nimport { CellStatus } from './cell-status';\nimport { DateRange } from './date-range';\n\nconst MODE_HIERARCHY: CalendarMode[] = ['day', 'month', 'year'];\n\n@Component({\n\tselector: 'lu-calendar2',\n\tstandalone: true,\n\timports: [RepeatTimesDirective, ButtonComponent, Calendar2CellDirective, NgClass, CalloutComponent, LuTooltipTriggerDirective],\n\ttemplateUrl: './calendar2.component.html',\n\tstyleUrl: './calendar2.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: CALENDAR_CELLS,\n\t\t\tuseFactory: () => inject(Calendar2Component).calendar2CellInstances,\n\t\t},\n\t\t{\n\t\t\tprovide: CALENDAR_TABBABLE_DATE,\n\t\t\tuseFactory: () => inject(Calendar2Component).tabbableDate,\n\t\t},\n\t],\n})\nexport class Calendar2Component implements OnInit {\n\t#locale = inject(LOCALE_ID);\n\t#weekInfo = inject(WEEK_INFO);\n\treadonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t#intlDateFormat = new Intl.DateTimeFormat(this.#locale, { month: 'long' });\n\t#intlDateYear = new Intl.DateTimeFormat(this.#locale, { year: 'numeric' });\n\n\t#intlDaysLong = new Intl.DateTimeFormat(this.#locale, { weekday: 'long' });\n\t#intlDaysShort = new Intl.DateTimeFormat(this.#locale, { weekday: 'short' });\n\t#intlRelativeDay = new Intl.RelativeTimeFormat(this.#locale, { numeric: 'auto' });\n\n\t#intlMonthsLong = new Intl.DateTimeFormat(this.#locale, { month: 'long' });\n\t#intlMonthsShort = new Intl.DateTimeFormat(this.#locale, { month: 'short' });\n\n\t#weekOptions: WeekOptions = { weekStartsOn: getJSFirstDayOfWeek(this.#weekInfo) };\n\n\tintl = getIntl(LU_DATE2_TRANSLATIONS);\n\n\tshowOverflow = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\tenableOverflow = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\thideToday = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\thasTodayButton = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\thideWeekend = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\t// Date used to init the component and as internal focus model\n\tdate = model.required<Date>();\n\n\ttabbableDate = model<Date | null>(null);\n\n\tmode = model<CalendarMode>('day');\n\n\tdisplayMode = model<CalendarMode>('year');\n\n\tranges = input<DateRange[]>([]);\n\n\tgetCellInfo = input<(date: Date, displayMode: CalendarMode) => CellStatus>((_date: Date) => ({\n\t\tclasses: [],\n\t\tdisabled: false,\n\t}));\n\n\tmonth = computed(() => startOfMonth(this.date()));\n\n\tyear = computed(() => startOfYear(this.date()));\n\n\tdecade = computed(() => startOfDecade(this.date()));\n\n\tpreviousMonth = computed(() => subMonths(this.month(), 1));\n\n\tnextMonth = computed(() => addMonths(this.month(), 1));\n\n\tnextPage = output();\n\n\tpreviousPage = output();\n\n\tdateClicked = output<Date>();\n\n\ttodayLabel = this.#intlRelativeDay.format(0, 'day');\n\tthisMonthLabel = this.#intlRelativeDay.format(0, 'month');\n\tthisYearLabel = this.#intlRelativeDay.format(0, 'year');\n\n\tcalendar2CellInstances = viewChildren(Calendar2CellDirective);\n\n\tdaysOfWeek = eachDayOfInterval({\n\t\tstart: startOfWeek(new Date(), this.#weekOptions),\n\t\tend: endOfWeek(new Date(), this.#weekOptions),\n\t}).map((day) => ({\n\t\tlong: this.#intlDaysLong.format(day),\n\t\tshort: this.#intlDaysShort.format(day),\n\t}));\n\n\tmonthGridDisplay = computed(() => {\n\t\tconst daysOfMonth: CalendarCellInfo[] = eachDayOfInterval({\n\t\t\tstart: this.month(),\n\t\t\tend: endOfMonth(this.month()),\n\t\t}).map((date) => this.dateToCellInfo(date));\n\t\tconst daysByWeek = daysOfMonth.reduce<Record<number, CalendarCellInfo[]>>((acc, day) => {\n\t\t\tconst key = startOfWeek(day.date, this.#weekOptions).getTime();\n\t\t\treturn {\n\t\t\t\t...acc,\n\t\t\t\t[key]: [...(acc[key] || []), day],\n\t\t\t};\n\t\t}, {});\n\t\t// If we want to show days before and after this month\n\t\tif (this.showOverflow()) {\n\t\t\t// Use last week of previous month\n\t\t\tconst startOfPreviousOverflow = startOfWeek(lastDayOfMonth(this.previousMonth()), this.#weekOptions);\n\t\t\tconst previousOverflow = eachDayOfInterval({\n\t\t\t\tstart: startOfPreviousOverflow,\n\t\t\t\tend: endOfMonth(this.previousMonth()),\n\t\t\t}).map((date) => this.dateToCellInfo(date, true));\n\t\t\tif (daysByWeek[startOfPreviousOverflow.getTime()]) {\n\t\t\t\tdaysByWeek[startOfPreviousOverflow.getTime()] = [...previousOverflow, ...daysByWeek[startOfPreviousOverflow.getTime()]];\n\t\t\t}\n\t\t\t// Use first week of next month\n\t\t\tconst startOfNextMonthOverflow = startOfWeek(startOfMonth(this.nextMonth()), this.#weekOptions);\n\t\t\tconst endOfNextMonthOverflow = endOfWeek(startOfMonth(this.nextMonth()), this.#weekOptions);\n\t\t\tconst nextOverflow = eachDayOfInterval({\n\t\t\t\tstart: startOfMonth(this.nextMonth()),\n\t\t\t\tend: endOfNextMonthOverflow,\n\t\t\t}).map((date) => this.dateToCellInfo(date, true));\n\t\t\tif (daysByWeek[startOfNextMonthOverflow.getTime()]) {\n\t\t\t\tdaysByWeek[startOfNextMonthOverflow.getTime()] = [...daysByWeek[startOfNextMonthOverflow.getTime()], ...nextOverflow];\n\t\t\t}\n\t\t}\n\t\treturn Object.keys(daysByWeek)\n\t\t\t.sort()\n\t\t\t.map((weekStart) => daysByWeek[+weekStart]);\n\t});\n\n\tyearGridDisplay = computed(() => {\n\t\tconst monthsOfYear: Date[] = eachMonthOfInterval({\n\t\t\tstart: this.year(),\n\t\t\tend: endOfYear(this.year()),\n\t\t});\n\t\treturn monthsOfYear\n\t\t\t.map((month) => {\n\t\t\t\treturn {\n\t\t\t\t\tdate: month,\n\t\t\t\t\tshort: this.#intlMonthsShort.format(month),\n\t\t\t\t\tlong: this.#intlMonthsLong.format(month),\n\t\t\t\t\tisCurrent: isSameMonth(new Date(), month),\n\t\t\t\t\tstatus: this.getCellInfo()(month, this.displayMode()),\n\t\t\t\t} as CalendarMonthInfo;\n\t\t\t})\n\t\t\t.reduce<CalendarMonthInfo[][]>((all, one, i) => {\n\t\t\t\tconst ch = Math.floor(i / 3);\n\t\t\t\tall[ch] = [...(all[ch] || []), one];\n\t\t\t\treturn all;\n\t\t\t}, []);\n\t});\n\n\tdecadeGridDisplay = computed(() => {\n\t\tconst yearsOfDecade: Date[] = eachYearOfInterval({\n\t\t\tstart: subYears(this.decade(), 1),\n\t\t\tend: addYears(endOfDecade(this.decade()), 1),\n\t\t});\n\t\treturn yearsOfDecade\n\t\t\t.map((year) => {\n\t\t\t\treturn {\n\t\t\t\t\tdate: year,\n\t\t\t\t\tlabel: this.#intlDateYear.format(year),\n\t\t\t\t\tisCurrent: isSameYear(new Date(), year),\n\t\t\t\t\tstatus: this.getCellInfo()(year, this.displayMode()),\n\t\t\t\t};\n\t\t\t})\n\t\t\t.reduce<CalendarYearInfo[][]>((all, one, i) => {\n\t\t\t\tconst ch = Math.floor(i / 3);\n\t\t\t\tall[ch] = [...(all[ch] || []), one];\n\t\t\t\treturn all;\n\t\t\t}, []);\n\t});\n\n\tcurrentMonthLabel = computed(() => {\n\t\treturn this.#intlDateFormat.format(this.date());\n\t});\n\n\tcurrentYearLabel = computed(() => {\n\t\treturn this.#intlDateYear.format(this.date());\n\t});\n\n\tcurrentDecadeLabel = computed(() => {\n\t\t// eslint-disable-next-line no-irregular-whitespace\n\t\treturn `${this.#intlDateYear.format(startOfDecade(this.decade()))} – ${this.#intlDateYear.format(endOfDecade(this.decade()))}`;\n\t});\n\n\tconstructor() {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tif (this.tabbableDate() === null) {\n\t\t\t\t\tthis.tabbableDate.set(this.date());\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\tfocusTabbableDate(): void {\n\t\tthis.calendar2CellInstances()\n\t\t\t.find((cell) => cell.isTabbableDate())\n\t\t\t?.focus();\n\t}\n\n\tblurTabbableDate(): void {\n\t\tthis.calendar2CellInstances()\n\t\t\t.find((cell) => cell.isTabbableDate())\n\t\t\t?.blur();\n\t}\n\n\tclickToday() {\n\t\tthis.onCellClicked(startOfDay(new Date()));\n\t}\n\n\tngOnInit(): void {\n\t\t// On init, set display mode to the mode specified by component consumer\n\t\tthis.displayMode.set(this.mode());\n\t}\n\n\tonCellClicked(date: Date): void {\n\t\t// On cell clicked, if display mode is same as mode, emit value\n\t\t// Else, zoom in to new mode\n\t\tif (this.displayMode() === this.mode()) {\n\t\t\tthis.dateClicked.emit(date);\n\t\t} else {\n\t\t\t// Check that we are able to zoom in\n\t\t\tconst maxZoomLevel = MODE_HIERARCHY.indexOf(this.mode());\n\t\t\tconst currentZoomLevel = MODE_HIERARCHY.indexOf(this.displayMode());\n\t\t\tconst targetZoomLevel = currentZoomLevel - 1;\n\t\t\tif (targetZoomLevel >= 0 && targetZoomLevel >= maxZoomLevel) {\n\t\t\t\tconst newZoomLevel = MODE_HIERARCHY[targetZoomLevel];\n\t\t\t\tswitch (newZoomLevel) {\n\t\t\t\t\tcase 'year':\n\t\t\t\t\t\tthis.date.set(startOfDecade(date));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'month':\n\t\t\t\t\t\tthis.date.set(startOfYear(date));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'day':\n\t\t\t\t\t\tthis.date.set(startOfMonth(date));\n\t\t\t\t}\n\t\t\t\tthis.displayMode.set(newZoomLevel);\n\t\t\t}\n\t\t}\n\t}\n\n\tdateToCellInfo(date: Date, isOverflow = false): CalendarCellInfo {\n\t\tconst status = this.getCellInfo()(date, this.displayMode());\n\n\t\tconst classes: string[] = status?.classes || [];\n\n\t\tconst rangeInfo = this.getRangeInfo(date, 'day');\n\n\t\tif (rangeInfo?.class) {\n\t\t\tclasses.push(rangeInfo.class);\n\t\t}\n\n\t\treturn {\n\t\t\tday: date.getDate(),\n\t\t\tisWeekend: this.#weekInfo.weekend.includes(getIntlWeekDay(date)) && !this.hideWeekend(),\n\t\t\tisOverflow,\n\t\t\tstatus,\n\t\t\tlabel: status.label || rangeInfo?.label,\n\t\t\tdate,\n\t\t\tclasses,\n\t\t\tisCurrent: isSameDay(new Date(), date) && !this.hideToday(),\n\t\t\trangeInfo,\n\t\t\tdisabled: status?.disabled || (isOverflow && !this.enableOverflow()),\n\t\t};\n\t}\n\n\tgetRangeInfo(date: Date, scope: CalendarMode) {\n\t\tconst range: DateRange | undefined = this.ranges().find((range: DateRange) => {\n\t\t\treturn (\n\t\t\t\t(range.scope || 'day') === scope &&\n\t\t\t\tisWithinInterval(date, {\n\t\t\t\t\tstart: startOfDay(range.start),\n\t\t\t\t\tend: range.end || endOfMonth(date),\n\t\t\t\t})\n\t\t\t);\n\t\t});\n\t\tif (!range) {\n\t\t\treturn null;\n\t\t}\n\t\tconst isStart: boolean = range && isSameDay(date, range.start);\n\t\tconst isEnd: boolean = range && range.end && isSameDay(date, range.end);\n\t\treturn {\n\t\t\trange,\n\t\t\tisStart,\n\t\t\tisEnd,\n\t\t\tlabel: range?.label,\n\t\t\tclass: range?.class,\n\t\t};\n\t}\n}\n","<div class=\"calendar\">\n\t@switch (displayMode()) { @case ('day') {\n\t<div class=\"calendar-name\" id=\"calendar-name\" aria-live=\"polite\">\n\t\t<button type=\"button\" class=\"calendar-name-button\" (click)=\"displayMode.set('month')\">{{ currentMonthLabel() }}</button>&ngsp;\n\t\t<button type=\"button\" class=\"calendar-name-button\" (click)=\"displayMode.set('year')\">{{ currentYearLabel() }}</button>\n\t\t<span class=\"u-mask\">{{ intl.directionKeysTip }} </span>\n\t</div>\n\t<table class=\"calendar-table\" role=\"grid\" aria-labelledby=\"calendar-name\">\n\t\t<thead class=\"calendar-table-head\">\n\t\t\t<tr class=\"calendar-table-head-row\">\n\t\t\t\t@for (day of daysOfWeek; track day.long) {\n\t\t\t\t<th class=\"calendar-table-head-row-cell\" scope=\"col\" [attr.data-content-after]=\"day.short.substring(0, 1)\">\n\t\t\t\t\t<span class=\"u-mask\">{{ day.long }}</span>\n\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody class=\"calendar-table-body\">\n\t\t\t@for (week of monthGridDisplay(); track $index; let isFirstWeek = $first; let isLastWeek = $last) {\n\t\t\t<tr class=\"calendar-table-body-row\">\n\t\t\t\t<td class=\"calendar-table-body-row-cell is-overflow\" *luRepeatTimes=\"isFirstWeek ? 7 - week.length : 0\"></td>\n\t\t\t\t@for (day of week; track dayIndex; let dayIndex = $index) {\n\t\t\t\t<td\n\t\t\t\t\tclass=\"calendar-table-body-row-cell\"\n\t\t\t\t\t[class.is-daysOff]=\"day.isWeekend\"\n\t\t\t\t\t[class.is-overflow]=\"day.isOverflow\"\n\t\t\t\t\t[class.is-current]=\"day.isCurrent\"\n\t\t\t\t\t[attr.aria-selected]=\"day.status.selected || !!day.rangeInfo?.range\"\n\t\t\t\t\t[class.is-start]=\"day.rangeInfo?.isStart || day.status.selected\"\n\t\t\t\t\t[class.is-end]=\"day.rangeInfo?.isEnd || day.status.selected\"\n\t\t\t\t\t[class.is-selected]=\"day.rangeInfo?.range || day.status.selected\"\n\t\t\t\t\t[ngClass]=\"day.classes\"\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\t[luCalendar2Cell]=\"dayIndex\"\n\t\t\t\t\t\t[luCalendar2Date]=\"day.date\"\n\t\t\t\t\t\tluCalendar2Mode=\"day\"\n\t\t\t\t\t\tclass=\"calendar-table-body-row-cell-action\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t[attr.aria-disabled]=\"day.disabled ? 'true' : null\"\n\t\t\t\t\t\t(click)=\"day.disabled?null:onCellClicked(day.date)\"\n\t\t\t\t\t\t[luTooltip]=\"day.label\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ day.day }} @if (day.isCurrent) {\n\t\t\t\t\t\t<span class=\"u-mask\">({{ todayLabel }})</span>\n\t\t\t\t\t\t} @if (day.isWeekend) {\n\t\t\t\t\t\t<svg class=\"calendar-table-body-row-cell-action-stripes\">\n\t\t\t\t\t\t\t<use href=\"#calendar-stripes-symbol\"></use>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t}\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t\t<td class=\"calendar-table-body-row-cell is-overflow\" *luRepeatTimes=\"isLastWeek ? 7 - week.length : 0\"></td>\n\t\t\t</tr>\n\t\t\t}\n\t\t\t<tr class=\"calendar-table-body-row\" *luRepeatTimes=\"6 - monthGridDisplay().length\">\n\t\t\t\t<td class=\"calendar-table-body-row-cell\" *luRepeatTimes=\"7\"></td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n\t@if (hasTodayButton()) {\n\t<div class=\"calendar-divider divider\"></div>\n\t<button class=\"calendar-todayLink link\" type=\"button\" (click)=\"clickToday()\">{{ todayLabel }}</button>\n\t}\n\t<svg class=\"calendar-stripes\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\" aria-hidden=\"true\">\n\t\t<symbol id=\"calendar-stripes-symbol\" viewBox=\"0 0 60 60\">\n\t\t\t<path\n\t\t\t\tclass=\"calendar-stripes-symbol-path\"\n\t\t\t\td=\"m-41.82 43.03 84.85-84.85.53.53-84.85 84.85zm2.12 2.12L45.15-39.7l.53.53-84.85 84.85zm2.12 2.12\n\t\t\t84.85-84.85.53.53-84.85 84.85zm2.12 2.13L49.4-35.47l.53.53-84.85 84.85zm2.12 2.11\n\t\t\t84.85-84.85.54.53-84.86 84.86zm2.12 2.13 84.86-84.86.53.53-84.86 84.86zm2.12\n\t\t\t2.12L55.76-29.1l.53.53-84.86 84.86zm2.13 2.12 84.85-84.85.53.53-84.85 84.85zm2.12\n\t\t\t2.12L60-24.85l.53.53-84.85 84.85zm2.12 2.12 84.85-84.85.53.53-84.85 84.85zm2.12\n\t\t\t2.12L64.24-20.6l.53.53-84.85 84.85zm2.12 2.12 84.85-84.85.53.53-84.85 84.85zm2.12\n\t\t\t2.13L68.5-16.37l.53.53-84.86 84.86zm2.12 2.11 84.86-84.85.53.53-84.86 84.86zm2.13 2.13\n\t\t\t84.85-84.85.53.53-84.85 84.85zm2.12 2.12L74.85-10l.53.53-84.85 84.85zm2.12\n\t\t\t2.12L76.97-7.88l.53.53L-7.35 77.5zm2.12 2.13L79.09-5.77l.53.53-84.85 84.85zm2.12\n\t\t\t2.11L81.21-3.64l.53.53L-3.1 81.74zm2.12 2.12L83.33-1.52l.53.53L-.99\n\t\t\t83.86zM.6 85.46 85.46.6l.53.53L1.13 86zm2.12 2.12L87.58 2.72l.53.53L3.25 88.11zm2.13 2.12L89.7\n\t\t\t4.85l.53.53L5.38 90.23zm2.12 2.12L91.82 6.97l.53.53L7.5 92.35zm2.12 2.12L93.94 9.1l.53.53L9.62\n\t\t\t94.47zm2.12 2.12 84.85-84.85.53.53-84.85 84.85zm2.12 2.12 84.85-84.85.53.53-84.85 84.85zm2.12\n\t\t\t2.12 84.86-84.85.53.53-84.86 84.86z\"\n\t\t\t/>\n\t\t</symbol>\n\t</svg>\n\t} @case ('month') {\n\t<div class=\"calendar-name\" id=\"calendar-year-name\">\n\t\t<button type=\"button\" class=\"calendar-name-button\" (click)=\"displayMode.set('year')\">{{ currentYearLabel() }}</button>\n\t\t<span class=\"u-mask\">{{ intl.directionKeysTip }} </span>\n\t</div>\n\t<table class=\"calendar-table\" role=\"grid\" aria-labelledby=\"calendar-year-name\">\n\t\t<tbody class=\"calendar-table-body\">\n\t\t\t@for (quarter of yearGridDisplay(); track $index) {\n\t\t\t<tr class=\"calendar-table-body-row\">\n\t\t\t\t@for (month of quarter; track month.date.getTime(); let index = $index) {\n\t\t\t\t<td\n\t\t\t\t\tclass=\"calendar-table-body-row-cell\"\n\t\t\t\t\t[class.is-current]=\"month.isCurrent\"\n\t\t\t\t\t[class.is-selected]=\"month.status.selected\"\n\t\t\t\t\t[ngClass]=\"month.status.classes\"\n\t\t\t\t\t[attr.aria-selected]=\"month.status.selected\"\n\t\t\t\t\t[class.is-start]=\"month.status.selected\"\n\t\t\t\t\t[class.is-end]=\"month.status.selected\"\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"calendar-table-body-row-cell-action\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t[attr.data-content-after]=\"month.short\"\n\t\t\t\t\t\t[luCalendar2Cell]=\"index\"\n\t\t\t\t\t\t[luCalendar2Date]=\"month.date\"\n\t\t\t\t\t\t[disabled]=\"month.status.disabled\"\n\t\t\t\t\t\t(click)=\"onCellClicked(month.date)\"\n\t\t\t\t\t\tluCalendar2Mode=\"month\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"u-mask\">{{ month.long }}</span>\n\t\t\t\t\t\t@if (month.isCurrent) {\n\t\t\t\t\t\t<span class=\"u-mask\">({{ thisMonthLabel }})</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t}\n\t\t</tbody>\n\t</table>\n\t} @case ('year') {\n\t<div class=\"calendar-name\" id=\"calendar-decade-name\">\n\t\t{{ currentDecadeLabel() }}\n\t\t<span class=\"u-mask\">{{ intl.directionKeysTip }} </span>\n\t</div>\n\t<table class=\"calendar-table\" role=\"grid\" aria-labelledby=\"calendar-decade-name\">\n\t\t<tbody class=\"calendar-table-body\">\n\t\t\t@for (row of decadeGridDisplay(); track $index; let firstRow = $first; let lastRow = $last) {\n\t\t\t<tr class=\"calendar-table-body-row\">\n\t\t\t\t@for (year of row; track year.date.getTime(); let index = $index; let firstCell = $first; let lastCell = $last) {\n\t\t\t\t<td\n\t\t\t\t\tclass=\"calendar-table-body-row-cell\"\n\t\t\t\t\t[class.is-overflow]=\"(firstRow && firstCell) || (lastRow && lastCell)\"\n\t\t\t\t\t[class.is-current]=\"year.isCurrent\"\n\t\t\t\t\t[class.is-selected]=\"year.status.selected\"\n\t\t\t\t\t[attr.aria-selected]=\"year.status.selected\"\n\t\t\t\t\t[ngClass]=\"year.status.classes\"\n\t\t\t\t\t[class.is-start]=\"year.status.selected\"\n\t\t\t\t\t[class.is-end]=\"year.status.selected\"\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"calendar-table-body-row-cell-action\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t[luCalendar2Cell]=\"index\"\n\t\t\t\t\t\t[disabled]=\"year.status.disabled\"\n\t\t\t\t\t\t[luCalendar2Date]=\"year.date\"\n\t\t\t\t\t\tluCalendar2Mode=\"year\"\n\t\t\t\t\t\t(click)=\"onCellClicked(year.date)\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ year.label }} @if (year.isCurrent) {\n\t\t\t\t\t\t<span class=\"u-mask\">({{ thisYearLabel }})</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t</button>\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t}\n\t\t</tbody>\n\t</table>\n\t} }\n</div>\n","export function getDateFormat(locale: string): string {\n\treturn new Intl.DateTimeFormat(locale).formatToParts(new Date('01/01/2024')).reduce((acc, part) => {\n\t\tswitch (part.type) {\n\t\t\tcase 'day':\n\t\t\t\treturn `${acc}${'d'.repeat(part.value.length)}`;\n\t\t\tcase 'month':\n\t\t\t\treturn `${acc}${'M'.repeat(part.value.length)}`;\n\t\t\tcase 'year':\n\t\t\t\treturn `${acc}${'y'.repeat(part.value.length)}`;\n\t\t\tcase 'literal':\n\t\t\t\treturn `${acc}${part.value}`;\n\t\t}\n\t\treturn acc;\n\t}, '');\n}\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, ElementRef, forwardRef, inject, input, LOCALE_ID, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, Validators } from '@angular/forms';\nimport { getIntl, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { PopoverDirective } from '@lucca-front/ng/popover2';\nimport { addMonths, addYears, parse, startOfDay, startOfMonth } from 'date-fns';\nimport { CalendarMode } from '../calendar2/calendar-mode';\nimport { Calendar2Component } from '../calendar2/calendar2.component';\nimport { CellStatus } from '../calendar2/cell-status';\nimport { DateRange } from '../calendar2/date-range';\nimport { getDateFormat } from '../date-format';\nimport { LU_DATE2_TRANSLATIONS } from '../date2.translate';\nimport { comparePeriods, startOfPeriod } from '../utils';\n\n@Component({\n\tselector: 'lu-date-input',\n\tstandalone: true,\n\timports: [PopoverDirective, Calendar2Component, IconComponent, InputDirective],\n\ttemplateUrl: './date-input.component.html',\n\tstyleUrl: './date-input.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => DateInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: NG_VALIDATORS,\n\t\t\tuseExisting: forwardRef(() => DateInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class DateInputComponent implements ControlValueAccessor, Validator {\n\t#locale = inject(LOCALE_ID);\n\n\t#intlDateTimeFormat = new Intl.DateTimeFormat(this.#locale);\n\n\t#intlDateTimeFormatMonth = new Intl.DateTimeFormat(this.#locale, { month: 'numeric', year: 'numeric' });\n\t#intlDateTimeFormatYear = new Intl.DateTimeFormat(this.#locale, { year: 'numeric' });\n\n\t// Contains the current date format (like dd/mm/yy etc) based on current locale\n\t#dateFormat = getDateFormat(this.#locale).toUpperCase();\n\n\tintl = getIntl(LU_DATE2_TRANSLATIONS);\n\n\t// CVA stuff\n\t#onChange?: (value: Date) => void;\n\tonTouched?: () => void;\n\tdisabled = false;\n\n\tmin = input<Date>(new Date('1/1/1000'));\n\tmax = input<Date | null>(null);\n\n\tranges = input<DateRange[]>([]);\n\n\tdisableOverflow = input<boolean, boolean>(false, { transform: booleanAttribute });\n\thideOverflow = input<boolean, boolean>(false, { transform: booleanAttribute });\n\thideToday = input<boolean, boolean>(false, { transform: booleanAttribute });\n\thasTodayButton = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tclearable = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tplaceholder = input<string>();\n\n\tmode = input<CalendarMode>('day');\n\thideWeekend = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n\tgetCellInfo = input<((day: Date, mode: CalendarMode) => CellStatus) | null>();\n\n\tpopoverPositions: ConnectionPositionPair[] = [\n\t\tnew ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }, 16, 6),\n\t\tnew ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }, 16, 6),\n\t];\n\n\tcalendarMode = signal<CalendarMode>('day');\n\n\tinputFocused = signal(false);\n\n\tprotected currentDate = signal(startOfMonth(new Date()));\n\n\tprotected tabbableDate = signal<Date | null>(null);\n\n\tselectedDate = signal<Date | null>(null);\n\n\tcalendar = viewChild(Calendar2Component);\n\n\tdisplayValue = computed(() => {\n\t\tif (this.selectedDate() && this.isValidDate(this.selectedDate())) {\n\t\t\tlet formatter: Intl.DateTimeFormat;\n\t\t\tswitch (this.mode()) {\n\t\t\t\tcase 'day':\n\t\t\t\t\tformatter = this.#intlDateTimeFormat;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'month':\n\t\t\t\t\tformatter = this.#intlDateTimeFormatMonth;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'year':\n\t\t\t\t\tformatter = this.#intlDateTimeFormatYear;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn formatter.format(this.selectedDate());\n\t\t}\n\t\treturn this.userTextInput();\n\t});\n\n\tuserTextInput = signal<string>('');\n\n\tcombinedGetCellInfo = (date: Date, mode: CalendarMode): CellStatus => {\n\t\tconst infoFromInput = this.getCellInfo()?.(date, mode);\n\t\treturn {\n\t\t\tclasses: [...(infoFromInput?.classes || [])],\n\t\t\tdisabled: infoFromInput?.disabled || !this.isInMinMax(date, mode),\n\t\t\tselected: this.selectedDate() && this.calendarMode() === mode && comparePeriods(mode, date, this.selectedDate()),\n\t\t\tlabel: infoFromInput?.label,\n\t\t};\n\t};\n\n\tpreviousButton = viewChild<ElementRef<Element>>('previousButtonRef');\n\n\tnextButton = viewChild<ElementRef<Element>>('nextButtonRef');\n\n\tget isNavigationButtonFocused(): boolean {\n\t\treturn [this.previousButton()?.nativeElement, this.nextButton()?.nativeElement].includes(document.activeElement);\n\t}\n\n\tconstructor() {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst inputValue = this.userTextInput();\n\t\t\t\tif (inputValue.length > 0) {\n\t\t\t\t\tlet parsed: Date;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tparsed = parse(inputValue, this.#dateFormat, startOfDay(new Date()));\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t/* not a correct date */\n\t\t\t\t\t}\n\t\t\t\t\tif (parsed instanceof Date && parsed.getFullYear() > 999) {\n\t\t\t\t\t\tthis.selectedDate.set(startOfDay(parsed));\n\t\t\t\t\t\tthis.currentDate.set(startOfDay(parsed));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.selectedDate.set(parsed);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t\teffect(() => {\n\t\t\tthis.#onChange?.(this.selectedDate());\n\t\t});\n\n\t\tɵeffectWithDeps([this.calendarMode, this.tabbableDate], (calendarMode, tabbableDate) => {\n\t\t\tif (tabbableDate && !comparePeriods(calendarMode, tabbableDate, this.currentDate())) {\n\t\t\t\tthis.currentDate.set(startOfPeriod(calendarMode, tabbableDate));\n\t\t\t}\n\t\t\tif (!this.isNavigationButtonFocused && !this.inputFocused()) {\n\t\t\t\tthis.calendar()?.blurTabbableDate();\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.calendar()?.focusTabbableDate();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\topenPopover(ref: PopoverDirective): void {\n\t\tref.openPopover(true, true);\n\t\t// Once popover is opened, aka in the next CD cycle, focus current tabbable date\n\t\tsetTimeout(() => {\n\t\t\tthis.calendar()?.focusTabbableDate();\n\t\t});\n\t}\n\n\tvalidate(control: AbstractControl<Date, Date>): ValidationErrors {\n\t\t// null with a formControl required\n\t\tif (!control.value && control.hasValidator(Validators.required)) {\n\t\t\treturn { date: true };\n\t\t}\n\t\t// try to parse the display value cause formControl.value is undefined if date is not parsable\n\t\ttry {\n\t\t\tparse(this.displayValue(), this.#dateFormat, startOfDay(new Date()));\n\t\t} catch (error) {\n\t\t\t/* not a correct date */\n\t\t\treturn { date: true };\n\t\t}\n\t\t// is form control value is a valid date\n\t\treturn this.isValidDate(control.value) ? null : { date: true };\n\t}\n\n\tisValidDate(date: Date): boolean {\n\t\treturn !date || !isNaN(date.getTime());\n\t}\n\n\tisInMinMax(date: Date, mode: CalendarMode): boolean {\n\t\tlet result = true;\n\t\tif (this.min()) {\n\t\t\tswitch (mode) {\n\t\t\t\tcase 'day':\n\t\t\t\t\tresult = result && this.min().getTime() <= date.getTime();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'month':\n\t\t\t\t\tresult = result && this.min().getMonth() <= date.getMonth();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'year':\n\t\t\t\t\tresult = result && this.min().getFullYear() <= date.getFullYear();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (this.max()) {\n\t\t\tswitch (mode) {\n\t\t\t\tcase 'day':\n\t\t\t\t\tresult = result && this.max().getTime() >= date.getTime();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'month':\n\t\t\t\t\tresult = result && this.max().getMonth() >= date.getMonth();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'year':\n\t\t\t\t\tresult = result && this.max().getFullYear() >= date.getFullYear();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\twriteValue(date: Date): void {\n\t\tif (date) {\n\t\t\tthis.selectedDate.set(startOfDay(date));\n\t\t\tthis.currentDate.set(startOfDay(date));\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: Date) => void): void {\n\t\tthis.#onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState?(isDisabled: boolean): void {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\tprev() {\n\t\tthis.move(-1);\n\t}\n\n\tnext() {\n\t\tthis.move(1);\n\t}\n\n\tclear(input: HTMLInputElement) {\n\t\tinput.value = '';\n\t\tthis.selectedDate.set(null);\n\t\tthis.onTouched?.();\n\t}\n\n\tcurrentDateChangeFromCalendar(date: Date): void {\n\t\tthis.tabbableDate.set(date);\n\t\tthis.currentDate.set(date);\n\t}\n\n\tmove(direction: 1 | -1): void {\n\t\tswitch (this.calendarMode()) {\n\t\t\tcase 'year':\n\t\t\t\tthis.currentDate.set(addYears(this.currentDate(), direction * 10));\n\t\t\t\tthis.tabbableDate.set(addYears(this.tabbableDate(), direction * 10));\n\t\t\t\tbreak;\n\t\t\tcase 'month':\n\t\t\t\tthis.currentDate.set(addYears(this.currentDate(), direction));\n\t\t\t\tthis.tabbableDate.set(addYears(this.tabbableDate(), direction));\n\t\t\t\tbreak;\n\t\t\tcase 'day':\n\t\t\t\tthis.currentDate.set(addMonths(this.currentDate(), direction));\n\t\t\t\tthis.tabbableDate.set(addMonths(this.tabbableDate(), direction));\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","<div class=\"textField\">\n\t<div class=\"textField-input\">\n\t\t<input\n\t\t\ttype=\"text\"\n\t\t\tid=\"date\"\n\t\t\t#date\n\t\t\tluInput\n\t\t\tclass=\"textField-input-value\"\n\t\t\t[value]=\"displayValue()\"\n\t\t\t(input)=\"userTextInput.set(date.value)\"\n\t\t\t(blur)=\"onTouched?.();inputFocused.set(false)\"\n\t\t\t(focus)=\"inputFocused.set(true)\"\n\t\t\t[attr.placeholder]=\"placeholder()\"\n\t\t\taria-haspopup=\"true\"\n\t\t\trole=\"combobox\"\n\t\t\t(click)=\"popoverRef.openPopover(true, true)\"\n\t\t\t(keyup.arrowDown)=\"popoverRef.opened() ? popoverRef.focusBackToContent($event) : openPopover(popoverRef)\"\n\t\t\t(keyup.space)=\" popoverRef.opened() ? popoverRef.focusBackToContent($event) : openPopover(popoverRef)\"\n\t\t\t(keyup.escape)=\"popoverRef.close()\"\n\t\t\t[disabled]=\"disabled\"\n\t\t/>\n\n\t\t<div class=\"textField-input-affix\">\n\t\t\t@if (clearable() && date.value !== '') {\n\t\t\t<button class=\"textField-input-affix-clear clear\" type=\"button\" (click)=\"clear(date)\">\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-signClose\"></span>\n\t\t\t\t<span class=\"u-mask\">{{ intl.clear }}</span>\n\t\t\t</button>\n\t\t\t}\n\t\t\t<button\n\t\t\t\t[luPopover2]=\"calendar\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[luPopoverNoCloseButton]=\"true\"\n\t\t\t\t#popoverRef=\"luPopover2\"\n\t\t\t\t[customPositions]=\"popoverPositions\"\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"button mod-onlyIcon mod-text textField-input-affix-toggle\"\n\t\t\t>\n\t\t\t\t<lu-icon [icon]=\"'calendarDate'\" [alt]=\"intl.pickDate\"></lu-icon>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n\n<ng-template #calendar>\n\t<div class=\"calendarWrapper\">\n\t\t<div class=\"calendarWrapper-navigation mod-prev\">\n\t\t\t<button class=\"calendarWrapper-navigation-button button\" type=\"button\" (click)=\"prev()\" #previousButtonRef>\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-chevronLeft\"></span><span class=\"u-mask\">{{ intl.previous }}</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"calendarWrapper-navigation mod-next\">\n\t\t\t<button class=\"calendarWrapper-navigation-button button\" type=\"button\" (click)=\"next()\" #nextButtonRef>\n\t\t\t\t<span aria-hidden=\"true\" class=\"lucca-icon icon-chevronRight\"></span><span class=\"u-mask\"> {{ intl.next }}</span>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class=\"calendarWrapper-content\" tabindex=\"-1\">\n\t\t\t<lu-calendar2\n\t\t\t\t[enableOverflow]=\"!disableOverflow()\"\n\t\t\t\t[showOverflow]=\"!hideOverflow()\"\n\t\t\t\t[hideToday]=\"hideToday()\"\n\t\t\t\t[hasTodayButton]=\"hasTodayButton()\"\n\t\t\t\t[date]=\"currentDate()\"\n\t\t\t\t(dateChange)=\"currentDateChangeFromCalendar($event)\"\n\t\t\t\t[(tabbableDate)]=\"tabbableDate\"\n\t\t\t\t[getCellInfo]=\"combinedGetCellInfo\"\n\t\t\t\t[ranges]=\"ranges()\"\n\t\t\t\t(dateClicked)=\"selectedDate.set($event);currentDate.set($event);popoverRef.close();date.focus()\"\n\t\t\t\t(nextPage)=\"move(1)\"\n\t\t\t\t(previousPage)=\"move(-1)\"\n\t\t\t\t[(displayMode)]=\"calendarMode\"\n\t\t\t\t[mode]=\"mode()\"\n\t\t\t\t[hideWeekend]=\"hideWeekend()\"\n\t\t\t></lu-calendar2>\n\t\t</div>\n\t</div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵeffectWithDeps"],"mappings":"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"}
|