@lucca-front/ng 18.3.0 → 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.
Files changed (67) hide show
  1. package/core/type/style.d.ts +1 -1
  2. package/core-select/input/select-input.component.d.ts +1 -1
  3. package/core-select/user/users.directive.d.ts +2 -1
  4. package/esm2022/callout/callout-disclosure/callout-disclosure.component.mjs +3 -3
  5. package/esm2022/comment/comment/comment.component.mjs +3 -3
  6. package/esm2022/core/portal/portal.directive.mjs +8 -3
  7. package/esm2022/core/type/style.mjs +1 -1
  8. package/esm2022/core-select/input/select-input.component.mjs +8 -6
  9. package/esm2022/core-select/user/user-option.component.mjs +3 -3
  10. package/esm2022/core-select/user/users.directive.mjs +19 -23
  11. package/esm2022/date2/date-input/date-input.component.mjs +24 -5
  12. package/esm2022/department/select/feeder/department-feeder.component.mjs +2 -2
  13. package/esm2022/department/select/input/department-select-input.component.mjs +2 -1
  14. package/esm2022/department/service/department-v4.service.mjs +2 -2
  15. package/esm2022/dialog/dialog/dialog.component.mjs +2 -2
  16. package/esm2022/dialog/dialog-header/dialog-header.component.mjs +3 -3
  17. package/esm2022/form-field/form-field.component.mjs +10 -9
  18. package/esm2022/forms/checkbox-input/checkbox-input.component.mjs +3 -3
  19. package/esm2022/forms/form-field-id.directive.mjs +4 -4
  20. package/esm2022/multi-select/displayer/displayer-input.directive.mjs +5 -5
  21. package/esm2022/multi-select/input/select-all/with-select-all.directive.mjs +15 -18
  22. package/esm2022/multi-select/input/select-input.component.mjs +8 -4
  23. package/esm2022/multi-select/public-api.mjs +2 -1
  24. package/esm2022/multi-select/select.model.mjs +2 -2
  25. package/esm2022/multi-select/select.utils.mjs +32 -0
  26. package/esm2022/skeleton/skeleton-field/skeleton-field.component.mjs +2 -2
  27. package/esm2022/tooltip/panel/tooltip-panel.component.mjs +3 -3
  28. package/esm2022/tooltip/trigger/ellipsis.ruler.mjs +81 -0
  29. package/esm2022/tooltip/trigger/tooltip-trigger.directive.mjs +42 -85
  30. package/esm2022/user/tile/user-tile.component.mjs +2 -2
  31. package/fesm2022/lucca-front-ng-callout.mjs +2 -2
  32. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  33. package/fesm2022/lucca-front-ng-comment.mjs +2 -2
  34. package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-core-select-user.mjs +24 -28
  36. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-core-select.mjs +5 -3
  38. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  39. package/fesm2022/lucca-front-ng-core.mjs +7 -2
  40. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  41. package/fesm2022/lucca-front-ng-date2.mjs +23 -4
  42. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  43. package/fesm2022/lucca-front-ng-department.mjs +3 -2
  44. package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
  45. package/fesm2022/lucca-front-ng-dialog.mjs +4 -4
  46. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  47. package/fesm2022/lucca-front-ng-form-field.mjs +9 -8
  48. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  49. package/fesm2022/lucca-front-ng-forms.mjs +5 -5
  50. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  51. package/fesm2022/lucca-front-ng-multi-select.mjs +59 -26
  52. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  53. package/fesm2022/lucca-front-ng-skeleton.mjs +2 -2
  54. package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
  55. package/fesm2022/lucca-front-ng-tooltip.mjs +121 -87
  56. package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
  57. package/fesm2022/lucca-front-ng-user.mjs +2 -2
  58. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  59. package/form-field/form-field.component.d.ts +1 -1
  60. package/multi-select/displayer/displayer-input.directive.d.ts +2 -2
  61. package/multi-select/input/select-input.component.d.ts +3 -1
  62. package/multi-select/public-api.d.ts +2 -0
  63. package/multi-select/select.utils.d.ts +14 -0
  64. package/package.json +15 -15
  65. package/tooltip/panel/tooltip-panel.component.d.ts +2 -2
  66. package/tooltip/trigger/ellipsis.ruler.d.ts +27 -0
  67. package/tooltip/trigger/tooltip-trigger.directive.d.ts +4 -19
@@ -7,7 +7,7 @@ import { isSameDay, isSameMonth, isSameYear, startOfDay, startOfMonth, startOfYe
7
7
  import { getIntl, ɵeffectWithDeps as _effectWithDeps } from '@lucca-front/ng/core';
8
8
  import { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';
9
9
  import { ConnectionPositionPair } from '@angular/cdk/overlay';
10
- import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
10
+ import { Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
11
11
  import { InputDirective } from '@lucca-front/ng/form-field';
12
12
  import { IconComponent } from '@lucca-front/ng/icon';
13
13
  import { PopoverDirective } from '@lucca-front/ng/popover2';
@@ -567,8 +567,14 @@ class DateInputComponent {
567
567
  effect(() => {
568
568
  const inputValue = this.userTextInput();
569
569
  if (inputValue.length > 0) {
570
- const parsed = parse(inputValue, this.#dateFormat, startOfDay(new Date()));
571
- if (parsed.getFullYear() > 999) {
570
+ let parsed;
571
+ try {
572
+ parsed = parse(inputValue, this.#dateFormat, startOfDay(new Date()));
573
+ }
574
+ catch (error) {
575
+ /* not a correct date */
576
+ }
577
+ if (parsed instanceof Date && parsed.getFullYear() > 999) {
572
578
  this.selectedDate.set(startOfDay(parsed));
573
579
  this.currentDate.set(startOfDay(parsed));
574
580
  }
@@ -600,10 +606,23 @@ class DateInputComponent {
600
606
  });
601
607
  }
602
608
  validate(control) {
609
+ // null with a formControl required
610
+ if (!control.value && control.hasValidator(Validators.required)) {
611
+ return { date: true };
612
+ }
613
+ // try to parse the display value cause formControl.value is undefined if date is not parsable
614
+ try {
615
+ parse(this.displayValue(), this.#dateFormat, startOfDay(new Date()));
616
+ }
617
+ catch (error) {
618
+ /* not a correct date */
619
+ return { date: true };
620
+ }
621
+ // is form control value is a valid date
603
622
  return this.isValidDate(control.value) ? null : { date: true };
604
623
  }
605
624
  isValidDate(date) {
606
- return !!date && !isNaN(date.getTime());
625
+ return !date || !isNaN(date.getTime());
607
626
  }
608
627
  isInMinMax(date, mode) {
609
628
  let result = true;
@@ -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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"}
@@ -61,7 +61,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
61
61
 
62
62
  class LuDepartmentV4Service {
63
63
  set filters(filters) {
64
- this._filters = filters;
64
+ this._filters = filters ?? [];
65
65
  }
66
66
  set appInstanceId(appInstanceId) {
67
67
  if (appInstanceId) {
@@ -109,7 +109,7 @@ class LuDepartmentFeederComponent extends ALuTreeOptionOperator {
109
109
  this._service.operations = operations;
110
110
  }
111
111
  set filters(filters) {
112
- this._service.filters = filters;
112
+ this._service.filters = filters ?? [];
113
113
  }
114
114
  constructor(hostService, selfService) {
115
115
  super();
@@ -230,6 +230,7 @@ class LuDepartmentSelectInputComponent extends ALuSelectInputComponent {
230
230
  this._viewContainerRef = _viewContainerRef;
231
231
  this._renderer = _renderer;
232
232
  this.byId = (option1, option2) => option1 && option2 && option1.id === option2.id;
233
+ this.filters = [];
233
234
  this.intl = getIntl(LU_DEPARTMENT_SELECT_INPUT_TRANSLATIONS);
234
235
  }
235
236
  searchFn(o, c) {
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-department.mjs","sources":["../../../packages/ng/department/service/department-service.model.ts","../../../packages/ng/department/service/department-v3.service.ts","../../../packages/ng/department/service/department-v4.service.ts","../../../packages/ng/department/select/feeder/department-feeder.component.ts","../../../packages/ng/department/select/feeder/department-feeder.module.ts","../../../packages/ng/department/select/input/translations.ts","../../../packages/ng/department/select/input/department-select-input.translate.ts","../../../packages/ng/department/select/input/department-select-input.component.ts","../../../packages/ng/department/select/input/department-select-input.component.html","../../../packages/ng/department/select/input/department-select-input.module.ts","../../../packages/ng/department/select/department-select.module.ts","../../../packages/ng/department/department.module.ts","../../../packages/ng/department/lucca-front-ng-department.ts"],"sourcesContent":["import { ILuTree } from '@lucca-front/ng/core';\nimport { ILuDepartment } from '../department.model';\nimport { Observable } from 'rxjs';\nimport { ILuApiService, ALuApiService } from '@lucca-front/ng/api';\n\nexport interface ILuDepartmentService<D extends ILuDepartment = ILuDepartment> extends ILuApiService<D> {\n\tgetTrees(): Observable<ILuTree<D>[]>;\n}\nexport abstract class ALuDepartmentService<D extends ILuDepartment = ILuDepartment> extends ALuApiService<D> implements ILuDepartmentService<D> {\n\tabstract getTrees(): Observable<ILuTree<D>[]>;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ILuApiResponse, LuApiV3Service } from '@lucca-front/ng/api';\nimport { ILuTree } from '@lucca-front/ng/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ILuDepartment } from '../department.model';\nimport { ILuDepartmentService } from './department-service.model';\n\nexport interface IApiDepartment {\n\tnode: ILuDepartment;\n\tchildren: IApiDepartment[];\n}\n\n/**\n * @deprecated use {LuDepartmentService} instead.\n */\n@Injectable()\nexport class LuDepartmentV3Service extends LuApiV3Service<ILuDepartment> implements ILuDepartmentService<ILuDepartment> {\n\tprotected override _api = `/api/v3/departments`;\n\tprotected _appInstanceId: number | string;\n\tset appInstanceId(appInstanceId: number | string) {\n\t\tif (appInstanceId) {\n\t\t\tthis._appInstanceId = appInstanceId;\n\t\t}\n\t}\n\tprotected _operations: number[] = [];\n\tset operations(operations: number[]) {\n\t\tthis._operations = operations;\n\t}\n\n\tconstructor(protected override _http: HttpClient) {\n\t\tsuper(_http);\n\t}\n\n\tgetTrees() {\n\t\tlet call: Observable<ILuApiResponse<IApiDepartment>>;\n\t\tif (this._appInstanceId && this._operations?.length) {\n\t\t\tcall = this._http.get<ILuApiResponse<IApiDepartment>>(\n\t\t\t\t`/api/v3/departments/scopedtree?fields=id,name&${[`appInstanceId=${this._appInstanceId}`, `operations=${this._operations.join(',')}`, this._filters.join(',')].filter((f) => !!f).join('&')}`,\n\t\t\t);\n\t\t} else {\n\t\t\tcall = this._http.get<ILuApiResponse<IApiDepartment>>(`/api/v3/departments/tree?fields=id,name&${this._filters.join(',')}`);\n\t\t}\n\t\treturn call.pipe(\n\t\t\tmap((response: ILuApiResponse<IApiDepartment>): ILuTree<ILuDepartment>[] => {\n\t\t\t\tconst tree = response.data;\n\t\t\t\treturn tree?.children.map((c) => this.format(c)) ?? [];\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate format(t: IApiDepartment): ILuTree<ILuDepartment> {\n\t\treturn { value: t.node, children: t.children.map((c) => this.format(c)) };\n\t}\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ILuApiResponse } from '@lucca-front/ng/api';\nimport { ILuTree } from '@lucca-front/ng/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ILuDepartment } from '../department.model';\nimport { IApiDepartment } from './department-v3.service';\n\n@Injectable()\nexport class LuDepartmentV4Service {\n\tapi = `/organization/structure/api/departments`;\n\tprotected _filters: string[] = [];\n\tset filters(filters: string[]) {\n\t\tthis._filters = filters;\n\t}\n\tprotected _appInstanceId: number | string;\n\tset appInstanceId(appInstanceId: number | string) {\n\t\tif (appInstanceId) {\n\t\t\tthis._appInstanceId = appInstanceId;\n\t\t}\n\t}\n\tprotected _operations: number[] = [];\n\tset operations(operations: number[]) {\n\t\tthis._operations = operations;\n\t}\n\n\tconstructor(private _http: HttpClient) {}\n\n\tgetTrees() {\n\t\tlet call: Observable<IApiDepartment>;\n\t\tif (this._appInstanceId && this._operations?.length) {\n\t\t\tcall = this._http\n\t\t\t\t.get<\n\t\t\t\t\tILuApiResponse<IApiDepartment>\n\t\t\t\t>(`/api/v3/departments/scopedtree?fields=id,name&${[`appInstanceId=${this._appInstanceId}`, `operations=${this._operations.join(',')}`, this._filters.join(',')].filter((f) => !!f).join('&')}`)\n\t\t\t\t.pipe(map((response) => response.data));\n\t\t} else {\n\t\t\tcall = this._http.get<IApiDepartment>(`${this.api}/tree`);\n\t\t}\n\n\t\treturn call.pipe(\n\t\t\tmap((tree: IApiDepartment): ILuTree<ILuDepartment>[] => {\n\t\t\t\treturn tree?.children.map((c) => this.format(c)) ?? [];\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate format(t: IApiDepartment): ILuTree<ILuDepartment> {\n\t\treturn { value: t.node, children: t.children.map((c) => this.format(c)) };\n\t}\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, Input, Optional, Self, SkipSelf } from '@angular/core';\nimport { ALuOnOpenSubscriber, ILuOnOpenSubscriber, ILuTree } from '@lucca-front/ng/core';\nimport { ALuTreeOptionOperator, ILuTreeOptionOperator } from '@lucca-front/ng/option';\nimport { Observable, Subject } from 'rxjs';\nimport { ILuDepartment } from '../../department.model';\nimport { ALuDepartmentService, LuDepartmentV4Service } from '../../service/index';\n\n@Component({\n\tselector: 'lu-department-feeder',\n\ttemplate: '',\n\tstyleUrls: [],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\tproviders: [\n\t\t{\n\t\t\tprovide: ALuTreeOptionOperator,\n\t\t\tuseExisting: forwardRef(() => LuDepartmentFeederComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuDepartmentService,\n\t\t\tuseClass: LuDepartmentV4Service,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuOnOpenSubscriber,\n\t\t\tuseExisting: forwardRef(() => LuDepartmentFeederComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class LuDepartmentFeederComponent extends ALuTreeOptionOperator<ILuDepartment> implements ILuTreeOptionOperator<ILuDepartment>, ILuOnOpenSubscriber {\n\tinOptions$: Observable<ILuTree<ILuDepartment>[]>;\n\toutOptions$: Observable<ILuTree<ILuDepartment>[]>;\n\tprotected _out$ = new Subject<ILuTree<ILuDepartment>[]>();\n\tprotected _service: LuDepartmentV4Service;\n\t@Input() set appInstanceId(appInstanceId: number | string) {\n\t\tthis._service.appInstanceId = appInstanceId;\n\t}\n\t@Input() set operations(operations: number[]) {\n\t\tthis._service.operations = operations;\n\t}\n\n\t@Input() set filters(filters: string[]) {\n\t\tthis._service.filters = filters;\n\t}\n\n\tconstructor(\n\t\t@Inject(ALuDepartmentService)\n\t\t@Optional()\n\t\t@SkipSelf()\n\t\thostService: LuDepartmentV4Service,\n\t\t@Inject(ALuDepartmentService) @Self() selfService: LuDepartmentV4Service,\n\t) {\n\t\tsuper();\n\t\tthis._service = hostService || selfService;\n\t\tthis.outOptions$ = this._out$.asObservable();\n\t}\n\tonOpen() {\n\t\tthis._service.getTrees().subscribe((trees) => this._out$.next(trees));\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { LuDepartmentFeederComponent } from './department-feeder.component';\n\n@NgModule({\n\timports: [LuDepartmentFeederComponent],\n\texports: [LuDepartmentFeederComponent],\n})\nexport class LuDepartmentFeederModule {}\n","export const Translations = {\n\ten: {\n\t\tdepartments: 'departments',\n\t},\n\tde: {\n\t\tdepartments: 'Abteilungen',\n\t},\n\tfr: {\n\t\tdepartments: 'départements',\n\t},\n\tit: {\n\t\tdepartments: 'dipartimenti',\n\t},\n\tnl: {\n\t\tdepartments: 'afdelingen',\n\t},\n\t'nl-BE': {\n\t\tdepartments: 'afdelingen',\n\t},\n\tes: {\n\t\tdepartments: 'departamentos',\n\t},\n\tpt: {\n\t\tdepartments: 'departamentos',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_DEPARTMENT_SELECT_INPUT_TRANSLATIONS = new InjectionToken('LuDepartmentSelectTranslations', {\n\tfactory: () => luDepartmentSelectInputTranslations,\n});\n\nexport interface ILuDepartmentSelectInputLabel {\n\tdepartments: string;\n}\n\nexport const luDepartmentSelectInputTranslations: LuTranslation<ILuDepartmentSelectInputLabel> = Translations;\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, Input, Renderer2, ViewContainerRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LuInputClearerComponent, LuInputDisplayerDirective } from '@lucca-front/ng/input';\nimport {\n\tILuTreeOptionPickerPanel,\n\tLuForTreeOptionsDirective,\n\tLuOptionComparer,\n\tLuTreeOptionItemComponent,\n\tLuTreeOptionPickerAdvancedComponent,\n\tLuTreeOptionPickerComponent,\n\tLuTreeOptionSearcherComponent,\n\tLuTreeOptionSelectAllComponent,\n} from '@lucca-front/ng/option';\nimport { ILuInputWithPicker } from '@lucca-front/ng/picker';\nimport { ALuSelectInputComponent } from '@lucca-front/ng/select';\nimport { LuDepartmentFeederComponent } from '../feeder';\nimport { LU_DEPARTMENT_SELECT_INPUT_TRANSLATIONS } from './department-select-input.translate';\n\n@Component({\n\tselector: 'lu-department-select',\n\ttemplateUrl: './department-select-input.component.html',\n\tstyleUrls: ['./department-select-input.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [\n\t\tCommonModule,\n\t\tOverlayModule,\n\t\tA11yModule,\n\t\tLuInputClearerComponent,\n\t\tLuTreeOptionPickerComponent,\n\t\tLuTreeOptionPickerAdvancedComponent,\n\t\tLuDepartmentFeederComponent,\n\t\tLuTreeOptionSearcherComponent,\n\t\tLuTreeOptionSelectAllComponent,\n\t\tLuTreeOptionItemComponent,\n\t\tLuForTreeOptionsDirective,\n\t\tLuInputDisplayerDirective,\n\t],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuDepartmentSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class LuDepartmentSelectInputComponent<\n\t\tD extends import('../../department.model').ILuDepartment = import('../../department.model').ILuDepartment,\n\t\tP extends ILuTreeOptionPickerPanel<D> = ILuTreeOptionPickerPanel<D>,\n\t>\n\textends ALuSelectInputComponent<D, P>\n\timplements ControlValueAccessor, ILuInputWithPicker<D>, AfterViewInit\n{\n\tbyId: LuOptionComparer<D> = (option1: D, option2: D) => option1 && option2 && option1.id === option2.id;\n\n\t@Input() appInstanceId: number | string;\n\t@Input() operations: number[];\n\t@Input() filters: string[];\n\n\tpublic intl = getIntl(LU_DEPARTMENT_SELECT_INPUT_TRANSLATIONS);\n\n\tconstructor(\n\t\tprotected override _changeDetectorRef: ChangeDetectorRef,\n\t\tprotected override _overlay: Overlay,\n\t\tprotected override _elementRef: ElementRef<HTMLElement>,\n\t\tprotected override _viewContainerRef: ViewContainerRef,\n\t\tprotected override _renderer: Renderer2,\n\t) {\n\t\tsuper(_changeDetectorRef, _overlay, _elementRef, _viewContainerRef, _renderer);\n\t}\n\n\tsearchFn(o: D, c: string): boolean {\n\t\treturn o.name.toLowerCase().includes(c.toLowerCase());\n\t}\n}\n","<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\n<div class=\"lu-select-value\">\n\t<div class=\"lu-select-display-wrapper\">\n\t\t<ng-container #display></ng-container>\n\t</div>\n</div>\n<div class=\"lu-select-suffix\">\n\t<lu-input-clearer></lu-input-clearer>\n</div>\n\n<ng-template luDisplayer [luDisplayerMultiple]=\"true\" let-values>\n\t<span *ngIf=\"multiple && values?.length > 1; else singleView\"\n\t\t><span class=\"numericBadge\">{{ values.length }}</span> {{ intl.departments }}</span\n\t>\n\t<ng-template #singleView>{{ (values[0] || values).name }}</ng-template>\n</ng-template>\n\n<lu-tree-option-picker-advanced [option-comparer]=\"byId\">\n\t<header class=\"lu-picker-header\" [class.mod-multiple]=\"multiple\">\n\t\t<lu-department-feeder [appInstanceId]=\"appInstanceId\" [operations]=\"operations\" [filters]=\"filters\"></lu-department-feeder>\n\t\t<lu-tree-option-searcher [searchFn]=\"searchFn\"></lu-tree-option-searcher>\n\t\t<lu-tree-option-select-all class=\"option-selector\"></lu-tree-option-select-all>\n\t</header>\n\t<!-- <lu-tree-option-pager></lu-tree-option-pager> -->\n\t<lu-tree-option *luForTreeOptions=\"let option\" [tree]=\"option\">\n\t\t<ng-container *luDisplayer=\"let value\">{{ value.name }}</ng-container>\n\t</lu-tree-option>\n</lu-tree-option-picker-advanced>\n","import { NgModule } from '@angular/core';\nimport { LuDepartmentSelectInputComponent } from './department-select-input.component';\n\n@NgModule({\n\timports: [LuDepartmentSelectInputComponent],\n\texports: [LuDepartmentSelectInputComponent],\n})\nexport class LuDepartmentSelectInputModule {}\n","import { NgModule } from '@angular/core';\nimport { LuDepartmentFeederComponent } from './feeder';\nimport { LuDepartmentSelectInputComponent } from './input';\n\n@NgModule({\n\timports: [LuDepartmentFeederComponent, LuDepartmentSelectInputComponent],\n\texports: [LuDepartmentFeederComponent, LuDepartmentSelectInputComponent],\n})\nexport class LuDepartmentSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { LuDepartmentSelectModule } from './select/index';\n\n@NgModule({\n\timports: [LuDepartmentSelectModule],\n\texports: [LuDepartmentSelectModule],\n})\nexport class LuDepartmentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-department.mjs","sources":["../../../packages/ng/department/service/department-service.model.ts","../../../packages/ng/department/service/department-v3.service.ts","../../../packages/ng/department/service/department-v4.service.ts","../../../packages/ng/department/select/feeder/department-feeder.component.ts","../../../packages/ng/department/select/feeder/department-feeder.module.ts","../../../packages/ng/department/select/input/translations.ts","../../../packages/ng/department/select/input/department-select-input.translate.ts","../../../packages/ng/department/select/input/department-select-input.component.ts","../../../packages/ng/department/select/input/department-select-input.component.html","../../../packages/ng/department/select/input/department-select-input.module.ts","../../../packages/ng/department/select/department-select.module.ts","../../../packages/ng/department/department.module.ts","../../../packages/ng/department/lucca-front-ng-department.ts"],"sourcesContent":["import { ILuTree } from '@lucca-front/ng/core';\nimport { ILuDepartment } from '../department.model';\nimport { Observable } from 'rxjs';\nimport { ILuApiService, ALuApiService } from '@lucca-front/ng/api';\n\nexport interface ILuDepartmentService<D extends ILuDepartment = ILuDepartment> extends ILuApiService<D> {\n\tgetTrees(): Observable<ILuTree<D>[]>;\n}\nexport abstract class ALuDepartmentService<D extends ILuDepartment = ILuDepartment> extends ALuApiService<D> implements ILuDepartmentService<D> {\n\tabstract getTrees(): Observable<ILuTree<D>[]>;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ILuApiResponse, LuApiV3Service } from '@lucca-front/ng/api';\nimport { ILuTree } from '@lucca-front/ng/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ILuDepartment } from '../department.model';\nimport { ILuDepartmentService } from './department-service.model';\n\nexport interface IApiDepartment {\n\tnode: ILuDepartment;\n\tchildren: IApiDepartment[];\n}\n\n/**\n * @deprecated use {LuDepartmentService} instead.\n */\n@Injectable()\nexport class LuDepartmentV3Service extends LuApiV3Service<ILuDepartment> implements ILuDepartmentService<ILuDepartment> {\n\tprotected override _api = `/api/v3/departments`;\n\tprotected _appInstanceId: number | string;\n\tset appInstanceId(appInstanceId: number | string) {\n\t\tif (appInstanceId) {\n\t\t\tthis._appInstanceId = appInstanceId;\n\t\t}\n\t}\n\tprotected _operations: number[] = [];\n\tset operations(operations: number[]) {\n\t\tthis._operations = operations;\n\t}\n\n\tconstructor(protected override _http: HttpClient) {\n\t\tsuper(_http);\n\t}\n\n\tgetTrees() {\n\t\tlet call: Observable<ILuApiResponse<IApiDepartment>>;\n\t\tif (this._appInstanceId && this._operations?.length) {\n\t\t\tcall = this._http.get<ILuApiResponse<IApiDepartment>>(\n\t\t\t\t`/api/v3/departments/scopedtree?fields=id,name&${[`appInstanceId=${this._appInstanceId}`, `operations=${this._operations.join(',')}`, this._filters.join(',')].filter((f) => !!f).join('&')}`,\n\t\t\t);\n\t\t} else {\n\t\t\tcall = this._http.get<ILuApiResponse<IApiDepartment>>(`/api/v3/departments/tree?fields=id,name&${this._filters.join(',')}`);\n\t\t}\n\t\treturn call.pipe(\n\t\t\tmap((response: ILuApiResponse<IApiDepartment>): ILuTree<ILuDepartment>[] => {\n\t\t\t\tconst tree = response.data;\n\t\t\t\treturn tree?.children.map((c) => this.format(c)) ?? [];\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate format(t: IApiDepartment): ILuTree<ILuDepartment> {\n\t\treturn { value: t.node, children: t.children.map((c) => this.format(c)) };\n\t}\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ILuApiResponse } from '@lucca-front/ng/api';\nimport { ILuTree } from '@lucca-front/ng/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ILuDepartment } from '../department.model';\nimport { IApiDepartment } from './department-v3.service';\n\n@Injectable()\nexport class LuDepartmentV4Service {\n\tapi = `/organization/structure/api/departments`;\n\tprotected _filters: string[] = [];\n\tset filters(filters: string[]) {\n\t\tthis._filters = filters ?? [];\n\t}\n\tprotected _appInstanceId: number | string;\n\tset appInstanceId(appInstanceId: number | string) {\n\t\tif (appInstanceId) {\n\t\t\tthis._appInstanceId = appInstanceId;\n\t\t}\n\t}\n\tprotected _operations: number[] = [];\n\tset operations(operations: number[]) {\n\t\tthis._operations = operations;\n\t}\n\n\tconstructor(private _http: HttpClient) {}\n\n\tgetTrees() {\n\t\tlet call: Observable<IApiDepartment>;\n\t\tif (this._appInstanceId && this._operations?.length) {\n\t\t\tcall = this._http\n\t\t\t\t.get<\n\t\t\t\t\tILuApiResponse<IApiDepartment>\n\t\t\t\t>(`/api/v3/departments/scopedtree?fields=id,name&${[`appInstanceId=${this._appInstanceId}`, `operations=${this._operations.join(',')}`, this._filters.join(',')].filter((f) => !!f).join('&')}`)\n\t\t\t\t.pipe(map((response) => response.data));\n\t\t} else {\n\t\t\tcall = this._http.get<IApiDepartment>(`${this.api}/tree`);\n\t\t}\n\n\t\treturn call.pipe(\n\t\t\tmap((tree: IApiDepartment): ILuTree<ILuDepartment>[] => {\n\t\t\t\treturn tree?.children.map((c) => this.format(c)) ?? [];\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate format(t: IApiDepartment): ILuTree<ILuDepartment> {\n\t\treturn { value: t.node, children: t.children.map((c) => this.format(c)) };\n\t}\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Inject, Input, Optional, Self, SkipSelf } from '@angular/core';\nimport { ALuOnOpenSubscriber, ILuOnOpenSubscriber, ILuTree } from '@lucca-front/ng/core';\nimport { ALuTreeOptionOperator, ILuTreeOptionOperator } from '@lucca-front/ng/option';\nimport { Observable, Subject } from 'rxjs';\nimport { ILuDepartment } from '../../department.model';\nimport { ALuDepartmentService, LuDepartmentV4Service } from '../../service/index';\n\n@Component({\n\tselector: 'lu-department-feeder',\n\ttemplate: '',\n\tstyleUrls: [],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\tproviders: [\n\t\t{\n\t\t\tprovide: ALuTreeOptionOperator,\n\t\t\tuseExisting: forwardRef(() => LuDepartmentFeederComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuDepartmentService,\n\t\t\tuseClass: LuDepartmentV4Service,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuOnOpenSubscriber,\n\t\t\tuseExisting: forwardRef(() => LuDepartmentFeederComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class LuDepartmentFeederComponent extends ALuTreeOptionOperator<ILuDepartment> implements ILuTreeOptionOperator<ILuDepartment>, ILuOnOpenSubscriber {\n\tinOptions$: Observable<ILuTree<ILuDepartment>[]>;\n\toutOptions$: Observable<ILuTree<ILuDepartment>[]>;\n\tprotected _out$ = new Subject<ILuTree<ILuDepartment>[]>();\n\tprotected _service: LuDepartmentV4Service;\n\t@Input() set appInstanceId(appInstanceId: number | string) {\n\t\tthis._service.appInstanceId = appInstanceId;\n\t}\n\t@Input() set operations(operations: number[]) {\n\t\tthis._service.operations = operations;\n\t}\n\n\t@Input() set filters(filters: string[]) {\n\t\tthis._service.filters = filters ?? [];\n\t}\n\n\tconstructor(\n\t\t@Inject(ALuDepartmentService)\n\t\t@Optional()\n\t\t@SkipSelf()\n\t\thostService: LuDepartmentV4Service,\n\t\t@Inject(ALuDepartmentService) @Self() selfService: LuDepartmentV4Service,\n\t) {\n\t\tsuper();\n\t\tthis._service = hostService || selfService;\n\t\tthis.outOptions$ = this._out$.asObservable();\n\t}\n\tonOpen() {\n\t\tthis._service.getTrees().subscribe((trees) => this._out$.next(trees));\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { LuDepartmentFeederComponent } from './department-feeder.component';\n\n@NgModule({\n\timports: [LuDepartmentFeederComponent],\n\texports: [LuDepartmentFeederComponent],\n})\nexport class LuDepartmentFeederModule {}\n","export const Translations = {\n\ten: {\n\t\tdepartments: 'departments',\n\t},\n\tde: {\n\t\tdepartments: 'Abteilungen',\n\t},\n\tfr: {\n\t\tdepartments: 'départements',\n\t},\n\tit: {\n\t\tdepartments: 'dipartimenti',\n\t},\n\tnl: {\n\t\tdepartments: 'afdelingen',\n\t},\n\t'nl-BE': {\n\t\tdepartments: 'afdelingen',\n\t},\n\tes: {\n\t\tdepartments: 'departamentos',\n\t},\n\tpt: {\n\t\tdepartments: 'departamentos',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_DEPARTMENT_SELECT_INPUT_TRANSLATIONS = new InjectionToken('LuDepartmentSelectTranslations', {\n\tfactory: () => luDepartmentSelectInputTranslations,\n});\n\nexport interface ILuDepartmentSelectInputLabel {\n\tdepartments: string;\n}\n\nexport const luDepartmentSelectInputTranslations: LuTranslation<ILuDepartmentSelectInputLabel> = Translations;\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, Input, Renderer2, ViewContainerRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { LuInputClearerComponent, LuInputDisplayerDirective } from '@lucca-front/ng/input';\nimport {\n\tILuTreeOptionPickerPanel,\n\tLuForTreeOptionsDirective,\n\tLuOptionComparer,\n\tLuTreeOptionItemComponent,\n\tLuTreeOptionPickerAdvancedComponent,\n\tLuTreeOptionPickerComponent,\n\tLuTreeOptionSearcherComponent,\n\tLuTreeOptionSelectAllComponent,\n} from '@lucca-front/ng/option';\nimport { ILuInputWithPicker } from '@lucca-front/ng/picker';\nimport { ALuSelectInputComponent } from '@lucca-front/ng/select';\nimport { LuDepartmentFeederComponent } from '../feeder';\nimport { LU_DEPARTMENT_SELECT_INPUT_TRANSLATIONS } from './department-select-input.translate';\n\n@Component({\n\tselector: 'lu-department-select',\n\ttemplateUrl: './department-select-input.component.html',\n\tstyleUrls: ['./department-select-input.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n\timports: [\n\t\tCommonModule,\n\t\tOverlayModule,\n\t\tA11yModule,\n\t\tLuInputClearerComponent,\n\t\tLuTreeOptionPickerComponent,\n\t\tLuTreeOptionPickerAdvancedComponent,\n\t\tLuDepartmentFeederComponent,\n\t\tLuTreeOptionSearcherComponent,\n\t\tLuTreeOptionSelectAllComponent,\n\t\tLuTreeOptionItemComponent,\n\t\tLuForTreeOptionsDirective,\n\t\tLuInputDisplayerDirective,\n\t],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuDepartmentSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class LuDepartmentSelectInputComponent<\n\t\tD extends import('../../department.model').ILuDepartment = import('../../department.model').ILuDepartment,\n\t\tP extends ILuTreeOptionPickerPanel<D> = ILuTreeOptionPickerPanel<D>,\n\t>\n\textends ALuSelectInputComponent<D, P>\n\timplements ControlValueAccessor, ILuInputWithPicker<D>, AfterViewInit\n{\n\tbyId: LuOptionComparer<D> = (option1: D, option2: D) => option1 && option2 && option1.id === option2.id;\n\n\t@Input() appInstanceId: number | string;\n\t@Input() operations: number[];\n\t@Input() filters: string[] = [];\n\n\tpublic intl = getIntl(LU_DEPARTMENT_SELECT_INPUT_TRANSLATIONS);\n\n\tconstructor(\n\t\tprotected override _changeDetectorRef: ChangeDetectorRef,\n\t\tprotected override _overlay: Overlay,\n\t\tprotected override _elementRef: ElementRef<HTMLElement>,\n\t\tprotected override _viewContainerRef: ViewContainerRef,\n\t\tprotected override _renderer: Renderer2,\n\t) {\n\t\tsuper(_changeDetectorRef, _overlay, _elementRef, _viewContainerRef, _renderer);\n\t}\n\n\tsearchFn(o: D, c: string): boolean {\n\t\treturn o.name.toLowerCase().includes(c.toLowerCase());\n\t}\n}\n","<div class=\"lu-select-placeholder\">{{ placeholder }}</div>\n<div class=\"lu-select-value\">\n\t<div class=\"lu-select-display-wrapper\">\n\t\t<ng-container #display></ng-container>\n\t</div>\n</div>\n<div class=\"lu-select-suffix\">\n\t<lu-input-clearer></lu-input-clearer>\n</div>\n\n<ng-template luDisplayer [luDisplayerMultiple]=\"true\" let-values>\n\t<span *ngIf=\"multiple && values?.length > 1; else singleView\"\n\t\t><span class=\"numericBadge\">{{ values.length }}</span> {{ intl.departments }}</span\n\t>\n\t<ng-template #singleView>{{ (values[0] || values).name }}</ng-template>\n</ng-template>\n\n<lu-tree-option-picker-advanced [option-comparer]=\"byId\">\n\t<header class=\"lu-picker-header\" [class.mod-multiple]=\"multiple\">\n\t\t<lu-department-feeder [appInstanceId]=\"appInstanceId\" [operations]=\"operations\" [filters]=\"filters\"></lu-department-feeder>\n\t\t<lu-tree-option-searcher [searchFn]=\"searchFn\"></lu-tree-option-searcher>\n\t\t<lu-tree-option-select-all class=\"option-selector\"></lu-tree-option-select-all>\n\t</header>\n\t<!-- <lu-tree-option-pager></lu-tree-option-pager> -->\n\t<lu-tree-option *luForTreeOptions=\"let option\" [tree]=\"option\">\n\t\t<ng-container *luDisplayer=\"let value\">{{ value.name }}</ng-container>\n\t</lu-tree-option>\n</lu-tree-option-picker-advanced>\n","import { NgModule } from '@angular/core';\nimport { LuDepartmentSelectInputComponent } from './department-select-input.component';\n\n@NgModule({\n\timports: [LuDepartmentSelectInputComponent],\n\texports: [LuDepartmentSelectInputComponent],\n})\nexport class LuDepartmentSelectInputModule {}\n","import { NgModule } from '@angular/core';\nimport { LuDepartmentFeederComponent } from './feeder';\nimport { LuDepartmentSelectInputComponent } from './input';\n\n@NgModule({\n\timports: [LuDepartmentFeederComponent, LuDepartmentSelectInputComponent],\n\texports: [LuDepartmentFeederComponent, LuDepartmentSelectInputComponent],\n})\nexport class LuDepartmentSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { LuDepartmentSelectModule } from './select/index';\n\n@NgModule({\n\timports: [LuDepartmentSelectModule],\n\texports: [LuDepartmentSelectModule],\n})\nexport class LuDepartmentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}