igniteui-angular 21.0.2 → 21.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chat/README.md +93 -0
- package/fesm2022/igniteui-angular-calendar.mjs +30 -3
- package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
- package/fesm2022/igniteui-angular-directives.mjs +6 -3
- package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-core.mjs +7 -4
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +266 -42
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +235 -2
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +3384 -3188
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs +238 -2
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
- package/lib/core/styles/components/calendar/_calendar-theme.scss +2 -0
- package/lib/core/styles/components/grid/_grid-theme.scss +2 -1
- package/lib/core/styles/components/slider/_slider-theme.scss +0 -1
- package/package.json +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
- package/types/igniteui-angular-directives.d.ts +4 -2
- package/types/igniteui-angular-grids-core.d.ts +1 -1
- package/types/igniteui-angular-grids-grid.d.ts +13 -7
- package/types/igniteui-angular-grids-hierarchical-grid.d.ts +23 -13
- package/types/igniteui-angular-grids-pivot-grid.d.ts +501 -492
- package/types/igniteui-angular-grids-tree-grid.d.ts +12 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igniteui-angular-calendar.mjs","sources":["../../../projects/igniteui-angular/calendar/src/calendar/calendar.directives.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar.ts","../../../projects/igniteui-angular/calendar/src/calendar/common/calendar-view.directive.ts","../../../projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.html","../../../projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.html","../../../projects/igniteui-angular/calendar/src/calendar/days-view/day-item.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/days-view/day-item.component.html","../../../projects/igniteui-angular/calendar/src/calendar/calendar.services.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar-base.ts","../../../projects/igniteui-angular/calendar/src/calendar/days-view/days-view.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/days-view/days-view.component.html","../../../projects/igniteui-angular/calendar/src/calendar/months-view.pipe.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar.component.html","../../../projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.html","../../../projects/igniteui-angular/calendar/src/calendar/public_api.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar.module.ts","../../../projects/igniteui-angular/calendar/src/igniteui-angular-calendar.ts"],"sourcesContent":["/**\n * This file contains all the directives used by the @link IgxCalendarComponent.\n * Except for the directives which are used for templating the calendar itself\n * you should generally not use them directly.\n *\n * @preferred\n */\nimport { Directive, EventEmitter, HostBinding, HostListener, Input, InjectionToken, Output, TemplateRef, ElementRef, AfterViewInit, OnDestroy, NgZone, inject } from '@angular/core';\nimport { fromEvent, Subject, interval } from 'rxjs';\nimport { takeUntil, debounce, tap } from 'rxjs/operators';\nimport { CalendarDay, PlatformUtil } from 'igniteui-angular/core';\n\nexport const IGX_CALENDAR_VIEW_ITEM =\n new InjectionToken<IgxCalendarMonthDirective | IgxCalendarYearDirective>('IgxCalendarViewItem');\n\n@Directive()\nexport abstract class IgxCalendarViewBaseDirective {\n public elementRef = inject(ElementRef);\n\n @Input()\n public value: Date;\n\n @Input()\n public date: Date;\n\n @Input()\n public showActive = false;\n\n @Output()\n public itemSelection = new EventEmitter<Date>();\n\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n @HostListener('mousedown', ['$event'])\n public onMouseDown(event: MouseEvent) {\n event.preventDefault();\n this.itemSelection.emit(this.value);\n }\n\n public abstract get isCurrent(): boolean;\n public abstract get isSelected(): boolean;\n public abstract get isActive(): boolean;\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarYear]',\n providers: [\n { provide: IGX_CALENDAR_VIEW_ITEM, useExisting: IgxCalendarYearDirective }\n ],\n exportAs: 'igxCalendarYear',\n standalone: true\n})\nexport class IgxCalendarYearDirective extends IgxCalendarViewBaseDirective {\n @HostBinding('class.igx-calendar-view__item--current')\n public get isCurrent(): boolean {\n return CalendarDay.today.year === this.value.getFullYear();\n }\n\n @HostBinding('class.igx-calendar-view__item--selected')\n public get isSelected(): boolean {\n return this.value.getFullYear() === this.date.getFullYear();\n }\n\n @HostBinding('class.igx-calendar-view__item--active')\n public get isActive(): boolean {\n return this.isSelected && this.showActive;\n }\n}\n\n@Directive({\n selector: '[igxCalendarMonth]',\n providers: [\n { provide: IGX_CALENDAR_VIEW_ITEM, useExisting: IgxCalendarMonthDirective }\n ],\n exportAs: 'igxCalendarMonth',\n standalone: true\n})\nexport class IgxCalendarMonthDirective extends IgxCalendarViewBaseDirective {\n @HostBinding('class.igx-calendar-view__item--current')\n public get isCurrent(): boolean {\n const today = CalendarDay.today;\n const date = CalendarDay.from(this.value);\n return date.year === today.year && date.month === today.month;\n }\n\n @HostBinding('class.igx-calendar-view__item--selected')\n public get isSelected(): boolean {\n return (this.value.getFullYear() === this.date.getFullYear() &&\n this.value.getMonth() === this.date.getMonth()\n );\n }\n\n @HostBinding('class.igx-calendar-view__item--active')\n public get isActive(): boolean {\n return this.isSelected && this.showActive;\n }\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarHeaderTitle]',\n standalone: true\n})\nexport class IgxCalendarHeaderTitleTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarHeader]',\n standalone: true\n})\nexport class IgxCalendarHeaderTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarSubheader]',\n standalone: true\n})\nexport class IgxCalendarSubheaderTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarScrollPage]',\n standalone: true\n})\nexport class IgxCalendarScrollPageDirective implements AfterViewInit, OnDestroy {\n private element = inject(ElementRef);\n private zone = inject(NgZone);\n protected platform = inject(PlatformUtil);\n\n /**\n * A callback function to be invoked when increment/decrement page is triggered.\n *\n * @hidden\n */\n @Input()\n public startScroll: (keydown?: boolean) => void;\n\n /**\n * A callback function to be invoked when increment/decrement page stops.\n *\n * @hidden\n */\n @Input()\n public stopScroll: (event: any) => void;\n\n /**\n * @hidden\n */\n private destroy$ = new Subject<boolean>();\n\n /**\n * @hidden\n */\n @HostListener('mousedown', ['$event'])\n public onMouseDown(event: MouseEvent) {\n event.preventDefault();\n this.startScroll();\n }\n\n /**\n * @hidden\n */\n @HostListener('mouseup', ['$event'])\n public onMouseUp(event: MouseEvent) {\n this.stopScroll(event);\n }\n\n /**\n * @hidden\n */\n public ngAfterViewInit() {\n fromEvent(this.element.nativeElement, 'keyup').pipe(\n debounce(() => interval(100)),\n takeUntil(this.destroy$)\n ).subscribe((event: KeyboardEvent) => {\n this.stopScroll(event);\n });\n\n this.zone.runOutsideAngular(() => {\n fromEvent(this.element.nativeElement, 'keydown').pipe(\n tap((event: KeyboardEvent) => {\n if (this.platform.isActivationKey(event)) {\n event.preventDefault();\n event.stopPropagation();\n }\n }),\n debounce(() => interval(100)),\n takeUntil(this.destroy$)\n ).subscribe((event: KeyboardEvent) => {\n if (this.platform.isActivationKey(event)) {\n this.zone.run(() => this.startScroll(true));\n }\n });\n });\n }\n\n /**\n * @hidden\n */\n public ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","\n/**\n * Sets the selection type - single, multi or range.\n */\nexport const CalendarSelection = {\n SINGLE: 'single',\n MULTI: 'multi',\n RANGE: 'range'\n} as const;\nexport type CalendarSelection = (typeof CalendarSelection)[keyof typeof CalendarSelection];\n\nexport const enum ScrollDirection {\n PREV = 'prev',\n NEXT = 'next',\n NONE = 'none'\n}\n\nexport interface IViewDateChangeEventArgs {\n previousValue: Date;\n currentValue: Date;\n}\n\nexport const IgxCalendarView = {\n Month: 'month',\n Year: 'year',\n Decade: 'decade'\n} as const;\n\n/**\n * Determines the Calendar active view - days, months or years.\n */\nexport type IgxCalendarView = (typeof IgxCalendarView)[keyof typeof IgxCalendarView];\n\nconst MDAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst FEBRUARY = 1;\n\nexport const range = (start = 0, stop: number, step = 1) => {\n const res = [];\n const cur = (stop === undefined) ? 0 : start;\n const max = (stop === undefined) ? start : stop;\n for (let i = cur; step < 0 ? i > max : i < max; i += step) {\n res.push(i);\n }\n return res;\n};\n\n/**\n * Returns true for leap years, false for non-leap years.\n *\n * @export\n * @param year\n * @returns\n */\nexport const isLeap = (year: number): boolean => (year % 4 === 0) && ((year % 100 !== 0) || (year % 400 === 0));\n\nexport const weekDay = (year: number, month: number, day: number): number => new Date(year, month, day).getDay();\n\n/**\n * Return weekday and number of days for year, month.\n *\n * @export\n * @param year\n * @param month\n * @returns\n */\nexport const monthRange = (year: number, month: number): number[] => {\n if ((month < 0) || (month > 11)) {\n throw new Error('Invalid month specified');\n }\n const day = weekDay(year, month, 1);\n let nDays = MDAYS[month];\n if ((month === FEBRUARY) && (isLeap(year))) {\n nDays++;\n }\n return [day, nDays];\n};\n\nexport interface IFormattedParts {\n value: string;\n literal?: string;\n combined: string;\n}\n\nexport interface IFormattingOptions {\n day?: 'numeric' | '2-digit';\n month?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n weekday?: 'long' | 'short' | 'narrow';\n year?: 'numeric' | '2-digit';\n}\n\nexport interface IFormattingViews {\n day?: boolean;\n month?: boolean;\n year?: boolean;\n}\n\nexport class Calendar {\n public timedelta(date: Date, interval: string, units: number): Date {\n const ret = new Date(date);\n\n const checkRollover = () => {\n if (ret.getDate() !== date.getDate()) {\n ret.setDate(0);\n }\n };\n\n switch (interval.toLowerCase()) {\n case 'year':\n ret.setFullYear(ret.getFullYear() + units);\n checkRollover();\n break;\n case 'quarter':\n ret.setMonth(ret.getMonth() + 3 * units);\n checkRollover();\n break;\n case 'month':\n ret.setMonth(ret.getMonth() + units);\n checkRollover();\n break;\n case 'week':\n ret.setDate(ret.getDate() + 7 * units);\n break;\n case 'day':\n ret.setDate(ret.getDate() + units);\n break;\n case 'hour':\n ret.setTime(ret.getTime() + units * 3600000);\n break;\n case 'minute':\n ret.setTime(ret.getTime() + units * 60000);\n break;\n case 'second':\n ret.setTime(ret.getTime() + units * 1000);\n break;\n default:\n throw new Error('Invalid interval specifier');\n }\n\n return ret;\n }\n}\n","import {\n Output,\n EventEmitter,\n Input,\n HostListener,\n ViewChildren,\n QueryList,\n booleanAttribute,\n Directive,\n HostBinding,\n InjectionToken,\n inject,\n} from \"@angular/core\";\nimport { noop } from \"rxjs\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport {\n IGX_CALENDAR_VIEW_ITEM,\n IgxCalendarMonthDirective,\n IgxCalendarYearDirective,\n} from \"../calendar.directives\";\nimport { CalendarDay, DateRangeType, DayInterval, getNextActiveDate, isDate, isDateInRanges } from 'igniteui-angular/core';\n\n\nexport enum IgxCalendarNavDirection {\n NEXT = 1,\n PREV = -1,\n}\n\nexport const DAY_INTERVAL_TOKEN = new InjectionToken<DayInterval>(\n \"DAY_INTERVAL\",\n);\n\n@Directive({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxCalendarViewDirective,\n multi: true,\n },\n ],\n standalone: true,\n})\nexport abstract class IgxCalendarViewDirective implements ControlValueAccessor {\n protected dayInterval = inject<DayInterval>(DAY_INTERVAL_TOKEN);\n \n @HostBinding(\"attr.role\")\n @Input()\n public role = 'grid';\n\n @HostBinding(\"attr.tabIndex\")\n @Input()\n public tabIndex = 0;\n\n @HostBinding('attr.aria-activeDescendant')\n protected get activeDescendant() {\n if (this.tabIndex === -1) return;\n\n return this.date.getTime();\n }\n\n /**\n * Gets/sets whether the view should be rendered\n * according to the locale and format, if any.\n */\n @Input({ transform: booleanAttribute })\n public formatView: boolean;\n\n /**\n * Applies styles to the active item on view focus.\n */\n @Input({ transform: booleanAttribute })\n public showActive = false;\n\n /**\n * Emits an event when a selection is made in the view.\n * Provides reference the `date` property in the component.\n * @memberof IgxCalendarViewDirective\n */\n @Output()\n public selected = new EventEmitter<Date>();\n\n /**\n * Emits an event when a page changes in the view.\n * Provides reference the `date` property in the component.\n * @memberof IgxCalendarViewDirective\n * @hidden @internal\n */\n @Output()\n public pageChanged = new EventEmitter<Date>();\n\n /**\n * Emits an event when the active date has changed.\n * @memberof IgxCalendarViewDirective\n * @hidden @internal\n */\n @Output()\n public activeDateChanged = new EventEmitter<Date>();\n\n /**\n * @hidden\n * @internal\n */\n @ViewChildren(IGX_CALENDAR_VIEW_ITEM, { read: IGX_CALENDAR_VIEW_ITEM })\n public viewItems: QueryList<\n IgxCalendarMonthDirective | IgxCalendarYearDirective\n >;\n\n /**\n * @hidden\n */\n protected _formatter: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected _locale = \"en\";\n\n /**\n * @hidden\n * @internal\n */\n private _date = new Date();\n\n /**\n * @hidden\n */\n protected _onTouchedCallback: () => void = noop;\n\n /**\n * @hidden\n */\n protected _onChangeCallback: (_: Date) => void = noop;\n\n /**\n * Gets/sets the selected date of the view.\n * By default it's the current date.\n * ```typescript\n * let date = this.view.date;\n * ```\n *\n * @memberof IgxYearsViewComponent\n */\n @Input()\n public set date(value: Date) {\n if (!isDate(value)) return;\n\n this._date = value;\n }\n\n public get date() {\n return this._date;\n }\n\n /**\n * Gets the `locale` of the view.\n * Default value is `\"en\"`.\n * ```typescript\n * let locale = this.view.locale;\n * ```\n *\n * @memberof IgxCalendarViewDirective\n */\n @Input()\n public get locale(): string {\n return this._locale;\n }\n\n /**\n * Sets the `locale` of the view.\n * Expects a valid BCP 47 language tag.\n * Default value is `\"en\"`.\n *\n * @memberof IgxCalendarViewDirective\n */\n public set locale(value: string) {\n this._locale = value;\n this.initFormatter();\n }\n\n constructor() {\n this.initFormatter();\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.arrowdown\", [\"$event\"])\n public onKeydownArrowDown(event: KeyboardEvent) {\n this.navigateTo(event, IgxCalendarNavDirection.NEXT, 3);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.arrowup\", [\"$event\"])\n public onKeydownArrowUp(event: KeyboardEvent) {\n this.navigateTo(event, IgxCalendarNavDirection.PREV, 3);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.arrowright\", [\"$event\"])\n public onKeydownArrowRight(event: KeyboardEvent) {\n this.navigateTo(event, IgxCalendarNavDirection.NEXT, 1);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.arrowleft\", [\"$event\"])\n public onKeydownArrowLeft(event: KeyboardEvent) {\n this.navigateTo(event, IgxCalendarNavDirection.PREV, 1);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.home\", [\"$event\"])\n public onKeydownHome(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n this.date = this.range.at(0);\n this.activeDateChanged.emit(this.date);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.end\", [\"$event\"])\n public onKeydownEnd(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n this.date = this.range.at(-1);\n this.activeDateChanged.emit(this.date);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.enter\", [\"$event\"])\n public onKeydownEnter(event: KeyboardEvent) {\n event.stopPropagation();\n\n this.selected.emit(this.date);\n this._onChangeCallback(this.date);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"focus\")\n protected handleFocus() {\n this.showActive = true;\n }\n\n /**\n * @hidden\n */\n @HostListener(\"blur\")\n protected handleBlur() {\n this.showActive = false;\n }\n\n /**\n * @hidden\n */\n public selectDate(value: Date) {\n this.date = value;\n\n this.selected.emit(this.date);\n this._onChangeCallback(this.date);\n }\n\n /**\n * @hidden\n */\n public registerOnChange(fn: (v: Date) => void) {\n this._onChangeCallback = fn;\n }\n\n /**\n * @hidden\n */\n public registerOnTouched(fn: () => void) {\n this._onTouchedCallback = fn;\n }\n\n /**\n * @hidden\n */\n public writeValue(value: Date) {\n if (value) {\n this.date = value;\n }\n }\n\n /**\n * @hidden\n */\n protected navigateTo(\n event: KeyboardEvent,\n direction: IgxCalendarNavDirection,\n delta: number,\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n const date = getNextActiveDate(\n CalendarDay.from(this.date).add(this.dayInterval, direction * delta),\n [],\n );\n\n const outOfRange = !isDateInRanges(date, [\n {\n type: DateRangeType.Between,\n dateRange: [this.range.at(0), this.range.at(-1)],\n },\n ]);\n\n if (outOfRange) {\n this.pageChanged.emit(date.native);\n }\n\n this.date = date.native;\n this.activeDateChanged.emit(this.date);\n }\n\n /**\n * @hidden\n */\n protected abstract initFormatter(): void;\n\n /**\n * @hidden\n */\n protected abstract get range(): Date[];\n}\n","import {\n Component,\n Input,\n HostBinding,\n ElementRef,\n booleanAttribute,\n inject,\n} from \"@angular/core\";\nimport { IgxCalendarMonthDirective } from \"../calendar.directives\";\nimport { TitleCasePipe } from \"@angular/common\";\nimport {\n IgxCalendarViewDirective,\n DAY_INTERVAL_TOKEN,\n} from \"../common/calendar-view.directive\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CalendarDay, calendarRange, PlatformUtil } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n\n@Component({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxMonthsViewComponent,\n multi: true,\n },\n {\n provide: DAY_INTERVAL_TOKEN,\n useValue: \"month\",\n },\n ],\n selector: \"igx-months-view\",\n templateUrl: \"months-view.component.html\",\n imports: [IgxCalendarMonthDirective, TitleCasePipe]\n})\nexport class IgxMonthsViewComponent extends IgxCalendarViewDirective implements ControlValueAccessor {\n public el = inject(ElementRef);\n\n #standalone = true;\n private platform = inject(PlatformUtil);\n\n /**\n * Sets/gets the `id` of the months view.\n * If not set, the `id` will have value `\"igx-months-view-0\"`.\n * ```html\n * <igx-months-view id=\"my-months-view\"></igx-months-view>\n * ```\n * ```typescript\n * let monthsViewId = this.monthsView.id;\n * ```\n *\n * @memberof IgxMonthsViewComponent\n */\n @HostBinding(\"attr.id\")\n @Input()\n public id = `igx-months-view-${NEXT_ID++}`;\n\n /**\n * The default css class applied to the component.\n *\n * @hidden\n */\n @HostBinding(\"class.igx-calendar-view\")\n public readonly viewClass = true;\n\n /**\n * @hidden @internal\n */\n @Input()\n @HostBinding(\"class.igx-calendar-view--standalone\")\n public get standalone() {\n return this.#standalone;\n }\n\n public set standalone(value: boolean) {\n this.#standalone = value;\n }\n\n /**\n * Gets the month format option of the months view.\n * ```typescript\n * let monthFormat = this.monthsView.monthFormat.\n * ```\n */\n @Input()\n public get monthFormat(): any {\n return this._monthFormat;\n }\n\n /**\n * Sets the month format option of the months view.\n * ```html\n * <igx-months-view> [monthFormat]=\"short'\"</igx-months-view>\n * ```\n *\n * @memberof IgxMonthsViewComponent\n */\n public set monthFormat(value: any) {\n this._monthFormat = value;\n this.initFormatter();\n }\n\n /**\n * Gets/sets whether the view should be rendered\n * according to the locale and format, if any.\n */\n @Input({ transform: booleanAttribute })\n public override formatView = true;\n\n /**\n * Returns an array of date objects which are then used to\n * properly render the month names.\n *\n * Used in the template of the component\n *\n * @hidden @internal\n */\n public get range(): Date[] {\n const start = CalendarDay.from(this.date).set({ date: 1, month: 0 });\n const end = start.add(this.dayInterval, 12);\n\n return Array.from(\n calendarRange({ start, end, unit: this.dayInterval }),\n ).map((m) => m.native);\n }\n\n /**\n * @hidden\n */\n private _monthFormat = \"short\";\n\n /**\n * @hidden\n */\n protected onMouseDown() {\n if (this.tabIndex !== -1 && this.platform.isBrowser && this.el?.nativeElement) {\n this.el.nativeElement.focus();\n }\n }\n\n /**\n * Returns the locale representation of the month in the months view.\n *\n * @hidden\n */\n public formattedMonth(value: Date): { long: string; formatted: string } {\n const rawFormatter = new Intl.DateTimeFormat(this.locale, {\n month: \"long\",\n year: \"numeric\",\n });\n\n if (this.formatView) {\n return {\n long: rawFormatter.format(value),\n formatted: this._formatter.format(value),\n };\n }\n\n return {\n long: rawFormatter.format(value),\n formatted: `${value.getMonth()}`,\n };\n }\n\n /**\n * @hidden\n */\n public monthTracker(_: number, item: Date): string {\n return `${item.getMonth()}}`;\n }\n\n /**\n * @hidden\n */\n protected initFormatter() {\n this._formatter = new Intl.DateTimeFormat(this._locale, {\n month: this.monthFormat,\n });\n }\n}\n","<div class=\"igx-calendar-view__items\" role=\"row\">\n @for (month of range; track monthTracker($index, month)) {\n <span\n igxCalendarMonth\n #item=\"igxCalendarMonth\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"month.getTime()\"\n [attr.aria-label]=\"formattedMonth(month).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [value]=\"month\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n (mousedown)=\"onMouseDown()\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedMonth(month).formatted | titlecase }}\n </span>\n </span>\n }\n</div>\n","import {\n Component,\n Input,\n HostBinding,\n ElementRef,\n inject,\n} from \"@angular/core\";\nimport { IgxCalendarYearDirective } from \"../calendar.directives\";\nimport {\n IgxCalendarViewDirective,\n DAY_INTERVAL_TOKEN,\n} from \"../common/calendar-view.directive\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CalendarDay, calendarRange, PlatformUtil } from 'igniteui-angular/core';\n\n@Component({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxYearsViewComponent,\n multi: true,\n },\n {\n provide: DAY_INTERVAL_TOKEN,\n useValue: \"year\",\n },\n ],\n selector: \"igx-years-view\",\n templateUrl: \"years-view.component.html\",\n imports: [IgxCalendarYearDirective]\n})\nexport class IgxYearsViewComponent extends IgxCalendarViewDirective implements ControlValueAccessor {\n public el = inject(ElementRef);\n\n #standalone = true;\n private platform = inject(PlatformUtil);\n\n /**\n * The default css class applied to the component.\n *\n * @hidden\n */\n @HostBinding(\"class.igx-calendar-view\")\n public readonly viewClass = true;\n\n /**\n * @hidden @internal\n */\n @Input()\n\t@HostBinding('class.igx-calendar-view--standalone')\n\tpublic get standalone() {\n return this.#standalone;\n }\n\n\tpublic set standalone(value: boolean) {\n this.#standalone = value;\n }\n\n /**\n * @hidden\n */\n private _yearFormat = \"numeric\";\n\n /**\n * @hidden\n */\n private _yearsPerPage = 15;\n\n /**\n * Gets the year format option of the years view.\n * ```typescript\n * let yearFormat = this.yearsView.yearFormat.\n * ```\n */\n @Input()\n public get yearFormat(): any {\n return this._yearFormat;\n }\n\n /**\n * Sets the year format option of the years view.\n * ```html\n * <igx-years-view [yearFormat]=\"numeric\"></igx-years-view>\n * ```\n *\n * @memberof IgxYearsViewComponent\n */\n public set yearFormat(value: any) {\n this._yearFormat = value;\n this.initFormatter();\n }\n\n /**\n * Returns an array of date objects which are then used to properly\n * render the years.\n *\n * Used in the template of the component.\n *\n * @hidden @internal\n */\n public get range(): Date[] {\n const year = this.date.getFullYear();\n const start = new CalendarDay({\n year: Math.floor(year / this._yearsPerPage) * this._yearsPerPage,\n month: this.date.getMonth(),\n });\n const end = start.add(this.dayInterval, this._yearsPerPage);\n\n return Array.from(calendarRange({ start, end, unit: this.dayInterval })).map(\n (m) => m.native,\n );\n }\n\n /**\n * Returns the locale representation of the year in the years view.\n *\n * @hidden\n */\n public formattedYear(value: Date): {long: string, formatted: string} {\n const rawFormatter = new Intl.DateTimeFormat(this.locale, { year: 'numeric' });\n\n if (this.formatView) {\n return {\n long: rawFormatter.format(value),\n formatted: this._formatter.format(value)\n }\n }\n\n return {\n long: rawFormatter.format(value),\n formatted: `${value.getFullYear()}`\n }\n }\n\n /**\n * @hidden\n */\n public yearTracker(_: number, item: Date): string {\n return `${item.getFullYear()}}`;\n }\n\n /**\n * @hidden\n */\n protected initFormatter() {\n this._formatter = new Intl.DateTimeFormat(this._locale, {\n year: this.yearFormat,\n });\n }\n\n /**\n * @hidden\n */\n protected onMouseDown() {\n if (this.tabIndex !== -1 && this.platform.isBrowser && this.el?.nativeElement) {\n this.el.nativeElement.focus();\n }\n }\n}\n","<div class=\"igx-calendar-view__items\" role=\"row\">\n @for (year of range; track yearTracker($index, year)) {\n <span\n igxCalendarYear\n #item=\"igxCalendarYear\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"year.getTime()\"\n [attr.aria-label]=\"formattedYear(year).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [attr.aria-current]=\"item.isCurrent\"\n [value]=\"year\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n (mousedown)=\"onMouseDown()\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedYear(year).formatted }}\n </span>\n </span>\n }\n</div>\n","import { Component, Input, Output, EventEmitter, HostBinding, ElementRef, booleanAttribute, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { CalendarSelection } from '../calendar';\nimport { areSameMonth, CalendarDay, DateRangeDescriptor, isDateInRanges, isNextMonth, isPreviousMonth } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Component({\n selector: 'igx-day-item',\n templateUrl: 'day-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class IgxDayItemComponent {\n private elementRef = inject(ElementRef);\n\n @Input()\n public date: CalendarDay;\n\n @Input()\n public viewDate: Date;\n\n @Input()\n public selection: string;\n\n /**\n * Returns boolean indicating if the day is selected\n *\n */\n @Input()\n public get selected(): any {\n return this._selected;\n }\n\n /**\n * Selects the day\n */\n public set selected(value: any) {\n this._selected = value;\n }\n\n @Input()\n public disabledDates: DateRangeDescriptor[];\n\n @Input()\n public specialDates: DateRangeDescriptor[];\n\n @Input({ transform: booleanAttribute })\n public hideOutsideDays = false;\n\n @Input({ transform: booleanAttribute })\n @HostBinding('class.igx-days-view__date--last')\n public isLastInRange = false;\n\n @Input({ transform: booleanAttribute })\n @HostBinding('class.igx-days-view__date--first')\n public isFirstInRange = false;\n\n @Input({ transform: booleanAttribute })\n public isWithinRange = false;\n\n @Input({ transform: booleanAttribute })\n public isWithinPreviewRange = false;\n\n @Input({ transform: booleanAttribute })\n public hideLeadingDays = false;\n\n @Input({ transform: booleanAttribute })\n public hideTrailingDays = false;\n\n private get hideLeading() {\n return this.hideLeadingDays && this.isPreviousMonth;\n }\n\n private get hideTrailing() {\n return this.hideTrailingDays && this.isNextMonth;\n }\n\n @Output()\n public dateSelection = new EventEmitter<CalendarDay>();\n\n @Output()\n public mouseEnter = new EventEmitter<void>();\n\n @Output()\n public mouseLeave = new EventEmitter<void>();\n\n @Output()\n public mouseDown = new EventEmitter<void>();\n\n public get isCurrentMonth(): boolean {\n return areSameMonth(this.date, this.viewDate);\n }\n\n public get isPreviousMonth(): boolean {\n return isPreviousMonth(this.date, this.viewDate);\n }\n\n public get isNextMonth(): boolean {\n return isNextMonth(this.date, this.viewDate);\n }\n\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n @Input({ transform: booleanAttribute })\n @HostBinding('class.igx-days-view__date--active')\n public isActive = false;\n\n @HostBinding('class.igx-days-view__date--selected')\n public get isSelectedCSS(): boolean {\n const selectable =\n !this.isInactive || this.isWithinPreviewRange ||\n (this.isWithinRange && this.selection === \"range\");\n return !this.isDisabled && selectable && this.selected;\n }\n\n @HostBinding('class.igx-days-view__date--inactive')\n public get isInactive(): boolean {\n return !this.isCurrentMonth;\n }\n\n @HostBinding('class.igx-days-view__date--hidden')\n public get isHidden(): boolean {\n return (this.hideLeading || this.hideTrailing) && this.isInactive;\n }\n\n @HostBinding('class.igx-days-view__date--current')\n public get isToday(): boolean {\n return !this.isInactive && this.date.equalTo(CalendarDay.today);\n }\n\n @HostBinding('class.igx-days-view__date--weekend')\n public get isWeekend(): boolean {\n return this.date.weekend;\n }\n\n public get isDisabled(): boolean {\n if (!this.disabledDates) {\n return false;\n }\n\n return isDateInRanges(this.date, this.disabledDates);\n }\n\n public get isFocusable(): boolean {\n return this.isCurrentMonth && !this.isHidden && !this.isDisabled;\n }\n\n protected onMouseEnter() {\n this.mouseEnter.emit();\n }\n\n protected onMouseLeave() {\n this.mouseLeave.emit();\n }\n\n protected onMouseDown(event: MouseEvent) {\n event.preventDefault();\n this.mouseDown.emit();\n }\n\n @HostBinding('class.igx-days-view__date--range')\n public get isWithinRangeCSS(): boolean {\n return !this.isSingleSelection && this.isWithinRange;\n }\n\n @HostBinding('class.igx-days-view__date--range-preview')\n public get isWithinPreviewRangeCSS(): boolean {\n return !this.isSingleSelection && this.isWithinPreviewRange;\n }\n\n @HostBinding('class.igx-days-view__date--special')\n public get isSpecial(): boolean {\n if (!this.specialDates) {\n return false;\n }\n\n return !this.isInactive && isDateInRanges(this.date, this.specialDates);\n }\n\n @HostBinding('class.igx-days-view__date--disabled')\n public get isDisabledCSS(): boolean {\n return this.isHidden || this.isDisabled;\n }\n\n @HostBinding('class.igx-days-view__date--single')\n public get isSingleSelection(): boolean {\n return this.selection !== CalendarSelection.RANGE;\n }\n\n private _selected = false;\n}\n","<span\n aria-hidden=\"true\"\n class=\"igx-days-view__date-inner\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (mousedown)=\"onMouseDown($event)\"\n>\n <ng-content></ng-content>\n</span>\n","import { Injectable, ElementRef, NgZone, inject } from \"@angular/core\";\nimport { EventManager } from \"@angular/platform-browser\";\nimport { PlatformUtil } from 'igniteui-angular/core';\n\n@Injectable()\nexport class KeyboardNavigationService {\n private eventManager = inject(EventManager);\n private ngZone = inject(NgZone);\n\n private keyHandlers = new Map<string, (event: KeyboardEvent) => void>();\n private eventUnsubscribeFn: Function | null = null;\n private platform = inject(PlatformUtil);\n\n public attachKeyboardHandlers(elementRef: ElementRef, context: any) {\n if (!this.platform.isBrowser) {\n return this;\n }\n\n this.detachKeyboardHandlers(); // Clean up any existing listeners\n\n this.ngZone.runOutsideAngular(() => {\n this.eventUnsubscribeFn = this.eventManager.addEventListener(\n elementRef.nativeElement,\n 'keydown',\n (event: KeyboardEvent) => {\n const handler = this.keyHandlers.get(event.key);\n\n if (handler) {\n this.ngZone.run(handler.bind(context, event));\n }\n }\n );\n });\n\n return this;\n }\n\n public detachKeyboardHandlers() {\n if (this.eventUnsubscribeFn) {\n this.eventUnsubscribeFn();\n this.eventUnsubscribeFn = null;\n }\n\n this.keyHandlers.clear();\n }\n\n public set(key : string, handler: (event: KeyboardEvent) => void) {\n this.keyHandlers.set(key, handler);\n return this;\n }\n\n public unset(key: string) {\n this.keyHandlers.delete(key);\n return this;\n }\n}\n","import { Input, Output, EventEmitter, Directive, LOCALE_ID, HostListener, booleanAttribute, ViewChildren, QueryList, ElementRef, ChangeDetectorRef, inject } from '@angular/core';\nimport { IFormattingOptions, IFormattingViews, IViewDateChangeEventArgs, ScrollDirection, IgxCalendarView, CalendarSelection } from './calendar';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { noop, Subject } from 'rxjs';\nimport {\n isDate,\n isEqual,\n PlatformUtil,\n DateRangeDescriptor,\n DateTimeUtil,\n CalendarResourceStringsEN,\n ICalendarResourceStrings,\n getCurrentResourceStrings,\n CalendarDay,\n getYearRange,\n isDateInRanges,\n WEEKDAYS\n} from 'igniteui-angular/core';\nimport { getLocaleFirstDayOfWeek } from \"@angular/common\";\nimport { KeyboardNavigationService } from './calendar.services';\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxCalendarBase]',\n standalone: true,\n providers: [KeyboardNavigationService]\n})\nexport class IgxCalendarBaseDirective implements ControlValueAccessor {\n protected platform = inject(PlatformUtil);\n protected _localeId = inject(LOCALE_ID);\n protected keyboardNavigation? = inject(KeyboardNavigationService);\n protected cdr? = inject(ChangeDetectorRef);\n\n /**\n * Holds month view index we are operating on.\n */\n protected activeViewIdx = 0;\n\n /**\n * @hidden\n */\n private _activeView: IgxCalendarView = IgxCalendarView.Month;\n\n /**\n * @hidden\n */\n private activeViewSubject = new Subject<IgxCalendarView>();\n\n /**\n * @hidden\n */\n protected activeView$ = this.activeViewSubject.asObservable();\n\n /**\n * Sets/gets whether the outside dates (dates that are out of the current month) will be hidden.\n * Default value is `false`.\n * ```html\n * <igx-calendar [hideOutsideDays]=\"true\"></igx-calendar>\n * ```\n * ```typescript\n * let hideOutsideDays = this.calendar.hideOutsideDays;\n * ```\n */\n\n @Input({ transform: booleanAttribute })\n public hideOutsideDays = false;\n\n /**\n * Emits an event when a date is selected.\n * Provides reference the `selectedDates` property.\n */\n @Output()\n public selected = new EventEmitter<Date | Date[]>();\n\n /**\n * Emits an event when the month in view is changed.\n * ```html\n * <igx-calendar (viewDateChanged)=\"viewDateChanged($event)\"></igx-calendar>\n * ```\n * ```typescript\n * public viewDateChanged(event: IViewDateChangeEventArgs) {\n * let viewDate = event.currentValue;\n * }\n * ```\n */\n @Output()\n public viewDateChanged = new EventEmitter<IViewDateChangeEventArgs>();\n\n /**\n * Emits an event when the active view is changed.\n * ```html\n * <igx-calendar (activeViewChanged)=\"activeViewChanged($event)\"></igx-calendar>\n * ```\n * ```typescript\n * public activeViewChanged(event: CalendarView) {\n * let activeView = event;\n * }\n * ```\n */\n @Output()\n public activeViewChanged = new EventEmitter<IgxCalendarView>();\n\n /**\n * @hidden\n */\n public rangeStarted = false;\n\n /**\n * @hidden\n */\n public pageScrollDirection = ScrollDirection.NONE;\n\n /**\n * @hidden\n */\n public scrollPage$ = new Subject<void>();\n\n /**\n * @hidden\n */\n public stopPageScroll$ = new Subject<boolean>();\n\n /**\n * @hidden\n */\n public startPageScroll$ = new Subject<void>();\n\n /**\n * @hidden\n */\n public selectedDates: Date[];\n\n /**\n * @hidden\n */\n public shiftKey = false;\n\n /**\n * @hidden\n */\n public lastSelectedDate: Date;\n\n /**\n * @hidden\n */\n protected formatterWeekday: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterDay: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterMonth: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterYear: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterMonthday: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterRangeday: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected _onTouchedCallback: () => void = noop;\n /**\n * @hidden\n */\n protected _onChangeCallback: (_: Date | Date[]) => void = noop;\n\n /**\n * @hidden\n */\n protected _deselectDate: boolean;\n\n /**\n * @hidden\n */\n private initialSelection: Date | Date[];\n\n /**\n * @hidden\n */\n private _locale: string;\n\n /**\n * @hidden\n */\n private _weekStart: WEEKDAYS | number;\n\n /**\n * @hidden\n */\n private _viewDate: Date;\n\n /**\n * @hidden\n */\n private _startDate: Date;\n\n /**\n * @hidden\n */\n private _endDate: Date;\n\n /**\n * @hidden\n */\n private _disabledDates: DateRangeDescriptor[] = [];\n\n /**\n * @hidden\n */\n private _specialDates: DateRangeDescriptor[] = [];\n\n /**\n * @hidden\n */\n private _selection: CalendarSelection | string = CalendarSelection.SINGLE;\n\n /** @hidden @internal */\n private _resourceStrings = getCurrentResourceStrings(CalendarResourceStringsEN);\n\n /**\n * @hidden\n */\n private _formatOptions: IFormattingOptions = {\n day: 'numeric',\n month: 'long',\n weekday: 'narrow',\n year: 'numeric'\n };\n\n /**\n * @hidden\n */\n private _formatViews: IFormattingViews = {\n day: false,\n month: true,\n year: false\n };\n\n /**\n * An accessor that sets the resource strings.\n * By default it uses EN resources.\n */\n @Input()\n public set resourceStrings(value: ICalendarResourceStrings) {\n this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n }\n\n /**\n * An accessor that returns the resource strings.\n */\n public get resourceStrings(): ICalendarResourceStrings {\n return this._resourceStrings;\n }\n\n /**\n * Gets the start day of the week.\n * Can return a numeric or an enum representation of the week day.\n * If not set, defaults to the first day of the week for the application locale.\n */\n @Input()\n public get weekStart(): WEEKDAYS | number {\n return this._weekStart;\n }\n\n /**\n * Sets the start day of the week.\n * Can be assigned to a numeric value or to `WEEKDAYS` enum value.\n */\n public set weekStart(value: WEEKDAYS | number) {\n this._weekStart = value;\n }\n\n /**\n * Gets the `locale` of the calendar.\n * If not set, defaults to application's locale.\n */\n @Input()\n public get locale(): string {\n return this._locale;\n }\n\n /**\n * Sets the `locale` of the calendar.\n * Expects a valid BCP 47 language tag.\n */\n public set locale(value: string) {\n this._locale = value;\n\n // if value is not a valid BCP 47 tag, set it back to _localeId\n try {\n getLocaleFirstDayOfWeek(this._locale);\n } catch (e) {\n this._locale = this._localeId;\n }\n\n // changing locale runtime needs to update the `weekStart` too, if `weekStart` is not explicitly set\n if (!this.weekStart) {\n this.weekStart = getLocaleFirstDayOfWeek(this._locale);\n }\n\n this.initFormatters();\n }\n\n /**\n * Gets the date format options of the views.\n */\n @Input()\n public get formatOptions(): IFormattingOptions {\n return this._formatOptions;\n }\n\n /**\n * Sets the date format options of the views.\n * Default is { day: 'numeric', month: 'short', weekday: 'short', year: 'numeric' }\n */\n public set formatOptions(formatOptions: IFormattingOptions) {\n this._formatOptions = {...this._formatOptions, ...formatOptions};\n this.initFormatters();\n }\n\n /**\n * Gets whether the `day`, `month` and `year` should be rendered\n * according to the locale and formatOptions, if any.\n */\n @Input()\n public get formatViews(): IFormattingViews {\n return this._formatViews;\n }\n\n /**\n * Sets whether the `day`, `month` and `year` should be rendered\n * according to the locale and formatOptions, if any.\n */\n public set formatViews(formatViews: IFormattingViews) {\n this._formatViews = Object.assign(this._formatViews, formatViews);\n }\n\n /**\n * Gets the current active view.\n * ```typescript\n * this.activeView = calendar.activeView;\n * ```\n */\n @Input()\n public get activeView(): IgxCalendarView {\n return this._activeView;\n }\n\n /**\n * Sets the current active view.\n * ```html\n * <igx-calendar [activeView]=\"year\" #calendar></igx-calendar>\n * ```\n * ```typescript\n * calendar.activeView = IgxCalendarView.YEAR;\n * ```\n */\n public set activeView(val: IgxCalendarView) {\n this._activeView = val;\n this.activeViewSubject.next(val);\n }\n\n /**\n * @hidden\n */\n public get isDefaultView(): boolean {\n return this._activeView === IgxCalendarView.Month;\n }\n\n /**\n * @hidden\n */\n public get isDecadeView(): boolean {\n return this._activeView === IgxCalendarView.Decade;\n }\n\n /**\n * @hidden\n */\n public activeViewDecade(activeViewIdx = 0): void {\n this.activeView = IgxCalendarView.Decade;\n this.activeViewIdx = activeViewIdx;\n }\n\n /**\n * @hidden\n */\n public activeViewDecadeKB(event: KeyboardEvent, activeViewIdx = 0) {\n event.stopPropagation();\n\n if (this.platform.isActivationKey(event)) {\n event.preventDefault();\n this.activeViewDecade(activeViewIdx);\n }\n }\n\n /**\n * @hidden\n */\n @ViewChildren('yearsBtn')\n public yearsBtns: QueryList<ElementRef>;\n\n /**\n * @hidden @internal\n */\n public previousViewDate: Date;\n\n /**\n * @hidden\n */\n public changeYear(date: Date) {\n this.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('month', -this.activeViewIdx).native;\n this.activeView = IgxCalendarView.Month;\n }\n\n /**\n * Returns the locale representation of the year in the year view if enabled,\n * otherwise returns the default `Date.getFullYear()` value.\n *\n * @hidden\n */\n public formattedYear(value: Date | Date[]): string {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn;\n\t\t}\n\n if (this.formatViews.year) {\n return this.formatterYear.format(value);\n }\n\n\t return `${value.getFullYear()}`;\n }\n\n\tpublic formattedYears(value: Date) {\n\t\tconst dates = value as unknown as Date[];\n\t\treturn dates.map(date => this.formattedYear(date)).join(' - ');\n\t}\n\n protected prevNavLabel(detail?: string): string {\n switch (this.activeView) {\n case 'month':\n return `${this.resourceStrings.igx_calendar_previous_month}, ${detail}`\n case 'year':\n return this.resourceStrings.igx_calendar_previous_year;\n case 'decade':\n return this.resourceStrings.igx_calendar_previous_years.replace('{0}', '15');\n }\n }\n\n protected nextNavLabel(detail?: string): string {\n switch (this.activeView) {\n case 'month':\n return `${this.resourceStrings.igx_calendar_next_month}, ${detail}`\n case 'year':\n return this.resourceStrings.igx_calendar_next_year;\n case 'decade':\n return this.resourceStrings.igx_calendar_next_years.replace('{0}', '15');\n }\n }\n\n\tprotected getDecadeRange(): { start: string; end: string } {\n const range = getYearRange(this.viewDate, 15);\n const start = CalendarDay.from(this.viewDate).set({ date: 1, year: range.start });\n const end = CalendarDay.from(this.viewDate).set({ date: 1, year: range.end });\n\n\t\treturn {\n\t\t\tstart: this.formatterYear.format(start.native),\n\t\t\tend: this.formatterYear.format(end.native)\n\t\t}\n\t}\n /**\n *\n * Gets the selection type.\n * Default value is `\"single\"`.\n * Changing the type of selection resets the currently\n * selected values if any.\n */\n @Input()\n public get selection(): string {\n return this._selection;\n }\n\n /**\n * Sets the selection.\n */\n public set selection(value: string) {\n switch (value) {\n case CalendarSelection.SINGLE:\n this.selectedDates = null;\n break;\n case CalendarSelection.MULTI:\n case CalendarSelection.RANGE:\n this.selectedDates = [];\n break;\n default:\n throw new Error('Invalid selection value');\n }\n this._onChangeCallback(this.selectedDates);\n this.rangeStarted = false;\n this._selection = value;\n }\n\n /**\n * Gets the date that is presented. By default it is the current date.\n */\n @Input()\n public get viewDate(): Date {\n return this._viewDate;\n }\n\n /**\n * Sets the date that will be presented in the default view when the component renders.\n */\n public set viewDate(value: Date | string) {\n if (Array.isArray(value)) {\n return;\n }\n\n if (typeof value === 'string') {\n value = DateTimeUtil.parseIsoDate(value);\n }\n\n const validDate = this.validateDate(value);\n\n if (this._viewDate) {\n this.initialSelection = validDate;\n }\n\n const date = this.getDateOnly(validDate).setDate(1);\n this._viewDate = new Date(date);\n }\n\n /**\n * Gets the disabled dates descriptors.\n */\n @Input()\n public get disabledDates(): DateRangeDescriptor[] {\n return this._disabledDates;\n }\n\n /**\n * Sets the disabled dates' descriptors.\n * ```typescript\n * @ViewChild(\"MyCalendar\")\n * public calendar: IgxCalendarComponent;\n * ngOnInit(){\n * this.calendar.disabledDates = [\n * {type: DateRangeType.Between, dateRange: [new Date(\"2020-1-1\"), new Date(\"2020-1-15\")]},\n * {type: DateRangeType.Weekends}];\n * }\n * ```\n */\n public set disabledDates(value: DateRangeDescriptor[]) {\n this._disabledDates = value;\n }\n\n /**\n * Checks whether a date is disabled.\n *\n * @hidden\n */\n public isDateDisabled(date: Date | string) {\n if (!this.disabledDates) {\n return false;\n }\n\n if (typeof date === 'string') {\n date = DateTimeUtil.parseIsoDate(date);\n }\n\n return isDateInRanges(date, this.disabledDates);\n }\n\n /**\n * Gets the special dates descriptors.\n */\n @Input()\n public get specialDates(): DateRangeDescriptor[] {\n return this._specialDates;\n }\n\n /**\n * Sets the special dates' descriptors.\n * ```typescript\n * @ViewChild(\"MyCalendar\")\n * public calendar: IgxCalendarComponent;\n * ngOnInit(){\n * this.calendar.specialDates = [\n * {type: DateRangeType.Between, dateRange: [new Date(\"2020-1-1\"), new Date(\"2020-1-15\")]},\n * {type: DateRangeType.Weekends}];\n * }\n * ```\n */\n public set specialDates(value: DateRangeDescriptor[]) {\n this._specialDates = value;\n }\n\n /**\n * Gets the selected date(s).\n *\n * When selection is set to `single`, it returns\n * a single `Date` object.\n * Otherwise it is an array of `Date` objects.\n */\n @Input()\n public get value(): Date | Date[] {\n if (this.selection === CalendarSelection.SINGLE) {\n return this.selectedDates?.at(0);\n }\n\n return this.selectedDates;\n }\n\n /**\n * Sets the selected date(s).\n *\n * When selection is set to `single`, it accepts\n * a single `Date` object.\n * Otherwise it is an array of `Date` objects.\n */\n public set value(value: Date | Date[] | string) {\n // Validate the date if it is of type string and it is IsoDate\n if (typeof value === 'string') {\n value = DateTimeUtil.parseIsoDate(value);\n }\n\n // Check if value is set initially by the user,\n // if it's not set the initial selection to the current date\n if (!value || (Array.isArray(value) && value.length === 0)) {\n this.initialSelection = new Date();\n return;\n }\n\n // Value is provided, but there's no initial selection, set the initial selection to the passed value\n if (!this.initialSelection) {\n this.viewDate = Array.isArray(value) ? new Date(Math.min(...value as unknown as number[])) : value;\n }\n\n // we then call selectDate with either a single date or an array of dates\n // we also set the initial selection to the provided value\n this.selectDate(value);\n this.initialSelection = value;\n }\n\n /**\n * @hidden\n */\n constructor() {\n const _localeId = this._localeId;\n\n this.locale = _localeId;\n this.viewDate = this.viewDate ? this.viewDate : new Date();\n this.initFormatters();\n }\n\n /**\n * Multi/Range selection with shift key\n *\n * @hidden\n * @internal\n */\n @HostListener('pointerdown', ['$event'])\n public onPointerdown(event: MouseEvent) {\n this.shiftKey = event.button === 0 && event.shiftKey;\n }\n\n /**\n * @hidden\n */\n public registerOnChange(fn: (v: Date | Date[]) => void) {\n this._onChangeCallback = fn;\n }\n\n /**\n * @hidden\n */\n public registerOnTouched(fn: () => void) {\n this._onTouchedCallback = fn;\n }\n\n /**\n * @hidden\n */\n public writeValue(value: Date | Date[]) {\n this.value = value;\n }\n\n /**\n * Selects date(s) (based on the selection type).\n */\n public selectDate(value: Date | Date[] | string) {\n if (typeof value === 'string') {\n value = DateTimeUtil.parseIsoDate(value);\n }\n\n if (value === null || value === undefined || (Array.isArray(value) && value.length === 0)) {\n return;\n }\n\n switch (this.selection) {\n case CalendarSelection.SINGLE:\n if (isDate(value)) {\n this.selectSingle(value as Date);\n }\n break;\n case CalendarSelection.MULTI:\n this.selectMultiple(value);\n break;\n case CalendarSelection.RANGE:\n this.selectRange(value);\n break;\n }\n }\n\n /**\n * Deselects date(s) (based on the selection type).\n */\n public deselectDate(value?: Date | Date[] | string) {\n if (!this.selectedDates || this.selectedDates.length === 0) {\n return;\n }\n\n if (typeof value === 'string') {\n value = DateTimeUtil.parseIsoDate(value);\n }\n\n if (value === null || value === undefined) {\n this.selectedDates = this.selection === CalendarSelection.SINGLE ? null : [];\n this.rangeStarted = false;\n this._onChangeCallback(this.selectedDates);\n return;\n }\n\n switch (this.selection) {\n case CalendarSelection.SINGLE:\n this.deselectSingle(value as Date);\n break;\n case CalendarSelection.MULTI:\n this.deselectMultiple(value as Date[]);\n break;\n case CalendarSelection.RANGE:\n this.deselectRange(value as Date[]);\n break;\n }\n }\n\n /**\n * Performs a single selection.\n *\n * @hidden\n */\n private selectSingle(value: Date) {\n if (!isEqual(this.selectedDates?.at(0), value)) {\n this.selectedDates = [this.getDateOnly(value)];\n this._onChangeCallback(this.selectedDates.at(0));\n }\n }\n\n /**\n * Performs a single deselection.\n *\n * @hidden\n */\n private deselectSingle(value: Date) {\n if (this.selectedDates !== null &&\n this.getDateOnlyInMs(value as Date) === this.getDateOnlyInMs(this.selectedDates.at(0))) {\n this.selectedDates = null;\n this._onChangeCallback(this.selectedDates);\n }\n }\n\n /**\n * Performs a multiple selection\n *\n * @hidden\n */\n private selectMultiple(value: Date | Date[]) {\n if (Array.isArray(value)) {\n const newDates = value.map(v => this.getDateOnly(v).getTime());\n const selDates = this.selectedDates.map(v => this.getDateOnly(v).getTime());\n\n if (JSON.stringify(newDates) === JSON.stringify(selDates)) {\n return;\n }\n\n if (selDates.length === 0 || selDates.length > newDates.length) {\n // deselect the dates that are part of currently selectedDates and not part of updated new values\n this.selectedDates = newDates.map(v => new Date(v));\n } else {\n this.selectedDates = Array.from(new Set([...newDates, ...selDates])).map(v => new Date(v));\n }\n } else {\n let newSelection = [];\n\n if (this.shiftKey && this.lastSelectedDate) {\n\n [this._startDate, this._endDate] = this.lastSelectedDate.getTime() < value.getTime()\n ? [this.lastSelectedDate, value]\n : [value, this.lastSelectedDate];\n\n const unselectedDates = [this._startDate, ...this.generateDateRange(this._startDate, this._endDate)]\n .filter(date => this.selectedDates.every((d: Date) => d.getTime() !== date.getTime()));\n\n // select all dates from last selected to shift clicked date\n if (this.selectedDates.some((date: Date) => date.getTime() === this.lastSelectedDate.getTime())\n && unselectedDates.length) {\n\n newSelection = unselectedDates;\n } else {\n // delesect all dates from last clicked to shift clicked date (excluding)\n this.selectedDates = this.selectedDates.filter((date: Date) =>\n date.getTime() < this._startDate.getTime() || date.getTime() > this._endDate.getTime()\n );\n\n this.selectedDates.push(value);\n this._deselectDate = true;\n }\n\n this._startDate = this._endDate = undefined;\n\n } else if (this.selectedDates.every((date: Date) => date.getTime() !== value.getTime())) {\n newSelection.push(value);\n\n } else {\n this.selectedDates = this.selectedDates.filter(\n (date: Date) => date.getTime() !== value.getTime()\n );\n\n this._deselectDate = true;\n }\n\n if (newSelection.length > 0) {\n this.selectedDates = this.selectedDates.concat(newSelection);\n this._deselectDate = false;\n }\n\n this.lastSelectedDate = value;\n }\n\n this.selectedDates = this.selectedDates.filter(d => !this.isDateDisabled(d));\n this.selectedDates.sort((a: Date, b: Date) => a.valueOf() - b.valueOf());\n this._onChangeCallback(this.selectedDates);\n }\n\n /**\n * Performs a multiple deselection.\n *\n * @hidden\n */\n private deselectMultiple(value: Date[]) {\n value = value.filter(v => v !== null);\n const selectedDatesCount = this.selectedDates.length;\n const datesInMsToDeselect: Set<number> = new Set<number>(\n value.map(v => this.getDateOnlyInMs(v)));\n\n for (let i = this.selectedDates.length - 1; i >= 0; i--) {\n if (datesInMsToDeselect.has(this.getDateOnlyInMs(this.selectedDates[i]))) {\n this.selectedDates.splice(i, 1);\n }\n }\n\n if (this.selectedDates.length !== selectedDatesCount) {\n this._onChangeCallback(this.selectedDates);\n }\n }\n\n /**\n * @hidden\n */\n private selectRange(value: Date | Date[], excludeDisabledDates = false) {\n if (Array.isArray(value)) {\n value.sort((a: Date, b: Date) => a.valueOf() - b.valueOf());\n this._startDate = this.getDateOnly(value[0]);\n this._endDate = this.getDateOnly(value[value.length - 1]);\n } else {\n\n if (this.shiftKey && this.lastSelectedDate) {\n\n if (this.lastSelectedDate.getTime() === value.getTime()) {\n this.selectedDates = this.selectedDates.length === 1 ? [] : [value];\n this.rangeStarted = !!this.selectedDates.length;\n this._onChangeCallback(this.selectedDates);\n return;\n }\n\n // shortens the range when selecting a date inside of it\n if (this.selectedDates.some((date: Date) => date.getTime() === value.getTime())) {\n\n this.lastSelectedDate.getTime() < value.getTime()\n ? this._startDate = value\n : this._endDate = value;\n\n } else {\n // extends the range when selecting a date outside of it\n // allows selection from last deselected to current selected date\n if (this.lastSelectedDate.getTime() < value.getTime()) {\n this._startDate = this._startDate ?? this.lastSelectedDate;\n this._endDate = value;\n } else {\n this._startDate = value;\n this._endDate = this._endDate ?? this.lastSelectedDate;\n }\n }\n\n this.rangeStarted = false;\n\n } else if (!this.rangeStarted) {\n this.rangeStarted = true;\n this.selectedDates = [value];\n this._startDate = this._endDate = undefined;\n } else {\n this.rangeStarted = false;\n\n if (this.selectedDates?.at(0)?.getTime() === value.getTime()) {\n this.selectedDates = [];\n this._onChangeCallback(this.selectedDates);\n return;\n }\n\n [this._startDate, this._endDate] = this.lastSelectedDate.getTime() < value.getTime()\n ? [this.lastSelectedDate, value]\n : [value, this.lastSelectedDate];\n }\n\n this.lastSelectedDate = value;\n }\n\n if (this._startDate && this._endDate) {\n this.selectedDates = [this._startDate, ...this.generateDateRange(this._startDate, this._endDate)];\n }\n\n if (excludeDisabledDates) {\n this.selectedDates = this.selectedDates.filter(d => !this.isDateDisabled(d));\n }\n\n this._onChangeCallback(this.selectedDates);\n }\n\n /**\n * Performs a range deselection.\n *\n * @hidden\n */\n private deselectRange(value: Date[]) {\n value = value.filter(v => v !== null);\n\n if (value.length < 1) {\n return;\n }\n\n value.sort((a: Date, b: Date) => a.valueOf() - b.valueOf());\n\n const valueStart = this.getDateOnlyInMs(value[0]);\n const valueEnd = this.getDateOnlyInMs(value[value.length - 1]);\n\n this.selectedDates.sort((a: Date, b: Date) => a.valueOf() - b.valueOf());\n\n const selectedDatesStart = this.getDateOnlyInMs(this.selectedDates[0]);\n const selectedDatesEnd = this.getDateOnlyInMs(this.selectedDates[this.selectedDates.length - 1]);\n\n if (!(valueEnd < selectedDatesStart) && !(valueStart > selectedDatesEnd)) {\n this.selectedDates = [];\n this.rangeStarted = false;\n this._onChangeCallback(this.selectedDates);\n }\n }\n\n /**\n * @hidden\n */\n protected initFormatters() {\n this.formatterDay = new Intl.DateTimeFormat(this._locale, { day: this._formatOptions.day });\n this.formatterWeekday = new Intl.DateTimeFormat(this._locale, { weekday: this._formatOptions.weekday });\n this.formatterMonth = new Intl.DateTimeFormat(this._locale, { month: this._formatOptions.month });\n this.formatterYear = new Intl.DateTimeFormat(this._locale, { year: this._formatOptions.year });\n this.formatterMonthday = new Intl.DateTimeFormat(this._locale, { month: this._formatOptions.month, day: this._formatOptions.day });\n\t\tthis.formatterRangeday = new Intl.DateTimeFormat(this._locale, { day: this._formatOptions.day, month: 'short' });\n }\n\n /**\n * @hidden\n */\n protected getDateOnly(date: Date) {\n const validDate = this.validateDate(date);\n return new Date(validDate.getFullYear(), validDate.getMonth(), validDate.getDate());\n }\n\n /**\n * @hidden\n */\n private getDateOnlyInMs(date: Date) {\n return this.getDateOnly(date).getTime();\n }\n\n /**\n * @hidden\n */\n private generateDateRange(start: Date, end: Date): Date[] {\n const result = [];\n start = this.getDateOnly(start);\n end = this.getDateOnly(end);\n\n while (start.getTime() < end.getTime()) {\n start = CalendarDay.from(start).add('day', 1).native;\n result.push(start);\n }\n\n return result;\n }\n\n private validateDate(value: Date) {\n return DateTimeUtil.isValidDate(value) ? value : new Date();\n }\n}\n","import {\n Component,\n Output,\n EventEmitter,\n Input,\n HostListener,\n ViewChildren,\n QueryList,\n HostBinding,\n booleanAttribute,\n ElementRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n inject,\n DestroyRef,\n AfterContentChecked\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TitleCasePipe } from '@angular/common';\nimport { CalendarSelection, ScrollDirection } from '../../calendar/calendar';\nimport { IgxDayItemComponent } from './day-item.component';\nimport {\n CalendarDay,\n DateRangeType,\n areSameMonth,\n generateMonth,\n getClosestActiveDate,\n getNextActiveDate,\n getPreviousActiveDate,\n intoChunks,\n isDateInRanges,\n getComponentTheme,\n IgxTheme,\n THEME_TOKEN,\n ThemeToken\n} from 'igniteui-angular/core';\nimport { IgxCalendarBaseDirective } from '../calendar-base';\nimport { IViewChangingEventArgs } from './days-view.interface';\nimport { KeyboardNavigationService } from '../calendar.services';\n\nlet NEXT_ID = 0;\n\n@Component({\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxDaysViewComponent\n },\n KeyboardNavigationService\n ],\n selector: 'igx-days-view',\n templateUrl: 'days-view.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IgxDayItemComponent, TitleCasePipe]\n})\nexport class IgxDaysViewComponent extends IgxCalendarBaseDirective implements AfterContentChecked {\n protected el = inject(ElementRef);\n public override cdr = inject(ChangeDetectorRef);\n private themeToken: ThemeToken = inject(THEME_TOKEN);\n #standalone = true;\n\n /**\n * Sets/gets the `id` of the days view.\n * If not set, the `id` will have value `\"igx-days-view-0\"`.\n * ```html\n * <igx-days-view id=\"my-days-view\"></igx-days-view>\n * ```\n * ```typescript\n * let daysViewId = this.daysView.id;\n * ```\n */\n @HostBinding('attr.id')\n @Input()\n public id = `igx-days-view-${NEXT_ID++}`;\n\n @HostBinding('attr.tabIndex')\n @Input()\n public tabIndex = 0;\n\n @HostBinding('attr.role')\n @Input()\n public role = 'grid';\n\n\t@HostBinding('class.igx-days-view')\n\tpublic readonly viewClass = true;\n\n @Input()\n\t@HostBinding('class.igx-days-view--standalone')\n\tpublic get standalone() {\n return this.#standalone;\n }\n\n\tpublic set standalone(value: boolean) {\n this.#standalone = value;\n }\n\n @HostBinding('attr.aria-activeDescendant')\n protected get activeDescendant() {\n if (this.tabIndex === -1) return;\n\n return this.activeDate.getTime();\n }\n\n /**\n * Show/hide week numbers\n *\n * @example\n * ```html\n * <igx-days-view [showWeekNumbers]=\"true\"></igx-days-view>\n * ``\n */\n @Input({ transform: booleanAttribute })\n public showWeekNumbers: boolean;\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public set activeDate(value: Date) {\n this._activeDate = value;\n this.changePreviewRange(value);\n this.activeDateChange.emit(this._activeDate);\n }\n\n public get activeDate(): Date {\n return this._activeDate ?? this.viewDate;\n }\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public set previewRangeDate(value: Date) {\n this._previewRangeDate = value;\n this.previewRangeDateChange.emit(value);\n }\n\n public get previewRangeDate() {\n return this._previewRangeDate;\n }\n\n @Input({ transform: booleanAttribute })\n public set hideLeadingDays(value: boolean) {\n this._hideLeadingDays = value;\n this.cdr.detectChanges();\n }\n\n public get hideLeadingDays() {\n return this._hideLeadingDays ?? this.hideOutsideDays;\n }\n\n @Input({ transform: booleanAttribute })\n public set hideTrailingDays(value: boolean) {\n this._hideTrailingDays = value;\n this.cdr.detectChanges();\n }\n\n public get hideTrailingDays() {\n return this._hideTrailingDays ?? this.hideOutsideDays;\n }\n\n @Input({ transform: booleanAttribute })\n public set showActiveDay(value: boolean) {\n this._showActiveDay = value;\n }\n\n public get showActiveDay() {\n return this._showActiveDay;\n }\n\n /**\n * @hidden\n */\n @Output()\n public dateSelected = new EventEmitter<Date>();\n\n /**\n * @hidden\n */\n @Output()\n public pageChanged = new EventEmitter<IViewChangingEventArgs>();\n\n /**\n * @hidden\n */\n @Output()\n public activeDateChange = new EventEmitter<Date>();\n\n /**\n * @hidden\n */\n @Output()\n public previewRangeDateChange = new EventEmitter<any>();\n\n /**\n * @hidden\n */\n @ViewChildren(IgxDayItemComponent, { read: IgxDayItemComponent })\n public dates: QueryList<IgxDayItemComponent>;\n\n private _activeDate: Date;\n private _previewRangeDate: Date;\n private _hideLeadingDays: boolean;\n private _hideTrailingDays: boolean;\n private _showActiveDay: boolean;\n\n private _destroyRef = inject(DestroyRef);\n private _theme: IgxTheme;\n\n @HostBinding('class.igx-days-view')\n public defaultClass = true;\n\n // Theme-specific classes\n @HostBinding('class.igx-days-view--material')\n protected get isMaterial(): boolean {\n return this._theme === 'material';\n }\n\n @HostBinding('class.igx-days-view--fluent')\n protected get isFluent(): boolean {\n return this._theme === 'fluent';\n }\n\n @HostBinding('class.igx-days-view--bootstrap')\n protected get isBootstrap(): boolean {\n return this._theme === 'bootstrap';\n }\n\n @HostBinding('class.igx-days-view--indigo')\n protected get isIndigo(): boolean {\n return this._theme === 'indigo';\n }\n\n /**\n * @hidden\n */\n constructor() {\n super();\n this._theme = this.themeToken.theme;\n\n const themeChange = this.themeToken.onChange((theme) => {\n if (this._theme !== theme) {\n this._theme = theme;\n this.cdr.detectChanges();\n }\n });\n\n this._destroyRef.onDestroy(() => themeChange.unsubscribe());\n }\n\n private setComponentTheme() {\n // allow DOM theme override (same pattern as input-group)\n if (!this.themeToken.preferToken) {\n const theme = getComponentTheme(this.el.nativeElement);\n\n if (theme && theme !== this._theme) {\n this._theme = theme;\n this.cdr.markForCheck();\n }\n }\n }\n\n public ngAfterContentChecked() {\n this.setComponentTheme();\n }\n\n /**\n * @hidden\n */\n private handleArrowKeydown(event: KeyboardEvent, delta: number) {\n event.preventDefault();\n event.stopPropagation();\n\n const date = getClosestActiveDate(\n CalendarDay.from(this.activeDate),\n delta,\n this.disabledDates,\n );\n\n if (!areSameMonth(this.activeDate, date.native)) {\n this.pageChanged.emit({\n monthAction: delta > 0 ? ScrollDirection.NEXT : ScrollDirection.PREV,\n key: event.key,\n nextDate: date.native\n });\n }\n\n this.activeDate = date.native;\n this.viewDate = date.native;\n this.clearPreviewRange();\n this.changePreviewRange(date.native);\n this.cdr.detectChanges();\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.arrowright', ['$event'])\n protected onArrowRight(event: KeyboardEvent) {\n this.handleArrowKeydown(event, 1);\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.arrowleft', ['$event'])\n protected onArrowLeft(event: KeyboardEvent) {\n this.handleArrowKeydown(event, -1);\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.arrowup', ['$event'])\n protected onArrowUp(event: KeyboardEvent) {\n this.handleArrowKeydown(event, -7);\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.arrowdown', ['$event'])\n protected onArrowDown(event: KeyboardEvent) {\n this.handleArrowKeydown(event, 7);\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.space', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n protected onKeydownEnter(event: KeyboardEvent) {\n event.stopPropagation();\n this.selectActiveDate();\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.home', ['$event'])\n protected onKeydownHome(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n const first = CalendarDay.from(this.activeDate);\n this.activeDate = getNextActiveDate(\n first.set({ date: 1 }),\n this.disabledDates,\n ).native;\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.end', ['$event'])\n protected onKeydownEnd(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n const last = CalendarDay.from(this.activeDate);\n this.activeDate = getPreviousActiveDate(\n last.set({ month: last.month + 1, date: 0 }),\n this.disabledDates,\n ).native;\n }\n\n /**\n * @hidden\n */\n @HostListener('focus')\n protected handleFocus() {\n this._showActiveDay = true;\n this.changePreviewRange(this.activeDate);\n }\n\n /**\n * @hidden\n */\n @HostListener('blur')\n protected handleBlur() {\n this._showActiveDay = false;\n this.clearPreviewRange();\n }\n\n /**\n * @hidden\n */\n protected handleDateClick(item: IgxDayItemComponent) {\n const date = item.date.native;\n\n if (item.isPreviousMonth) {\n this.pageChanged.emit({\n monthAction: ScrollDirection.PREV,\n key: '',\n nextDate: date\n });\n }\n\n if (item.isNextMonth) {\n this.pageChanged.emit({\n monthAction: ScrollDirection.NEXT,\n key: '',\n nextDate: date\n });\n }\n\n if (this.tabIndex !== -1 && this.platform.isBrowser && this.el?.nativeElement) {\n this.el.nativeElement.focus();\n }\n\n this.activeDate = item.date.native;\n this.selectActiveDate();\n }\n\n private selectActiveDate() {\n this.selectDate(this.activeDate);\n this.dateSelected.emit(this.activeDate);\n this.selected.emit(this.selectedDates);\n this.clearPreviewRange();\n }\n\n protected get calendarMonth(): CalendarDay[] {\n return Array.from(generateMonth(this.viewDate, this.weekStart));\n }\n\n protected get monthWeeks(): CalendarDay[][] {\n return Array.from(intoChunks(this.calendarMonth, 7));\n }\n\n /**\n * Returns the week number by date\n *\n * @hidden\n */\n public getWeekNumber(date: CalendarDay): number {\n return date.getWeekNumber(this.weekStart);\n }\n\n /**\n * Returns the locale representation of the date in the days view.\n *\n * @hidden\n */\n public formattedDate(value: Date): string {\n if (this.formatViews.day) {\n return this.formatterDay.format(value);\n }\n\n return `${value.getDate()}`;\n }\n\n /**\n * @hidden\n */\n public get weekHeaderLabels(): {long: string, formatted: string}[] {\n const weekdays = [];\n const rawFormatter = new Intl.DateTimeFormat(this.locale, { weekday: 'long' });\n\n for (const day of this.monthWeeks.at(0)) {\n weekdays.push({\n long: rawFormatter.format(day.native),\n formatted: this.formatterWeekday.format(day.native)\n });\n }\n\n return weekdays;\n }\n\n protected get weekNumberHeader(): { short: string, long: string } {\n const weekOfYear = (style: 'narrow' | 'long') => {\n const dn = new Intl.DisplayNames(this.locale, {\n type: 'dateTimeField',\n style,\n });\n\n return dn.of('weekOfYear');\n }\n\n return {\n short: weekOfYear('narrow').substring(0, 1),\n long: weekOfYear('long'),\n }\n }\n\n /**\n * @hidden\n */\n public rowTracker(_: number, item: CalendarDay[]): string {\n return `${item[0].month}${item[0].date}`;\n }\n\n /**\n * @hidden\n */\n public dateTracker(_: number, item: CalendarDay): string {\n return `${item.month}--${item.date}`;\n }\n\n /**\n * @hidden\n */\n public isSelected(date: CalendarDay): boolean {\n const dates = this.value as Date[];\n const hasValue = this.value || (Array.isArray(this.value) && this.value.length === 1);\n\n if (isDateInRanges(date, this.disabledDates)) {\n return false;\n }\n\n if (this.selection === CalendarSelection.SINGLE) {\n return !!this.value && date.equalTo(this.value as Date);\n }\n\n if (!hasValue) {\n return false;\n }\n\n if (this.selection === CalendarSelection.MULTI && dates.length > 0) {\n return isDateInRanges(date, [\n {\n type: DateRangeType.Specific,\n dateRange: dates,\n },\n ]);\n }\n\n if (this.selection === CalendarSelection.RANGE && dates.length > 0) {\n return isDateInRanges(date, [\n {\n type: DateRangeType.Between,\n dateRange: [dates.at(0), dates.at(-1)],\n },\n ]);\n }\n }\n\n /**\n * @hidden\n */\n protected isFirstInRange(date: CalendarDay): boolean {\n const dates = this.selectedDates;\n\n if (this.isSingleSelection || dates.length === 0) {\n return false;\n }\n\n let target = dates.at(0);\n\n if (this.previewRangeDate && this.previewRangeDate < target) {\n target = this.previewRangeDate;\n }\n\n return date.equalTo(target);\n }\n\n /**\n * @hidden\n */\n protected isLastInRange(date: CalendarDay): boolean {\n const dates = this.selectedDates;\n\n if (this.isSingleSelection || dates.length === 0) {\n return false;\n }\n\n let target = dates.at(-1);\n\n if (this.previewRangeDate && this.previewRangeDate > target) {\n target = this.previewRangeDate;\n }\n\n return date.equalTo(target);\n }\n\n /**\n * @hidden\n */\n protected isActiveDate(day: CalendarDay): boolean {\n return this._showActiveDay && day.equalTo(this.activeDate);\n }\n\n /**\n * @hidden\n */\n protected isWithinRange(date: Date, checkForRange: boolean, min?: Date, max?: Date): boolean {\n const dates = this.selectedDates;\n\n if (checkForRange && !(Array.isArray(dates) && dates.length > 1)) {\n return false;\n }\n\n min = min ? min : dates.at(0);\n max = max ? max : dates.at(-1);\n\n return isDateInRanges(date,\n [\n {\n type: DateRangeType.Between,\n dateRange: [min, max]\n }\n ]\n );\n }\n\n protected isWithinPreviewRange(date: Date): boolean {\n if (this.selection !== 'range') return false;\n\n const dates = this.selectedDates;\n\n if (!(dates.length > 0 && this.previewRangeDate)) {\n return false;\n }\n\n return isDateInRanges(date, [\n {\n type: DateRangeType.Between,\n dateRange: [dates.at(0), this.previewRangeDate],\n },\n ]);\n }\n\n /**\n * @hidden\n */\n private get isSingleSelection(): boolean {\n return this.selection !== CalendarSelection.RANGE;\n }\n\n /**\n * @hidden @internal\n */\n public changePreviewRange(date: Date) {\n const dates = this.value as Date[];\n\n if (this.selection === 'range' && dates.length === 1) {\n const first = CalendarDay.from(dates.at(0));\n\n if (!first.equalTo(date)) {\n this.setPreviewRangeDate(date);\n }\n }\n }\n\n /**\n * @hidden @internal\n */\n public clearPreviewRange() {\n if (this.previewRangeDate) {\n this.setPreviewRangeDate(undefined);\n }\n }\n\n private setPreviewRangeDate(value?: Date) {\n this.previewRangeDate = value;\n }\n}\n","<div\n role=\"row\"\n class=\"igx-days-view__row\"\n [title]=\"weekNumberHeader.long | titlecase\"\n>\n @if (showWeekNumbers) {\n <div\n role=\"columnheader\"\n class=\"igx-days-view__label igx-days-view__label--week-number\"\n >\n <span>\n <i>{{ weekNumberHeader.short | titlecase }}</i>\n </span>\n </div>\n }\n @for (dayName of weekHeaderLabels; track dayName.long) {\n <span\n role=\"columnheader\"\n [attr.aria-label]=\"dayName.long\"\n class=\"igx-days-view__label\"\n >\n <span class=\"igx-days-view__label-inner\">\n {{ dayName.formatted | titlecase }}\n </span>\n </span>\n }\n</div>\n\n@for (\n week of monthWeeks; track rowTracker(i, week);\n let isLast = $last; let i = $index\n) {\n <div\n class=\"igx-days-view__row\"\n role=\"row\"\n >\n @if (showWeekNumbers) {\n <div class=\"igx-days-view__date igx-days-view__date--week-number\">\n <span\n role=\"rowheader\"\n class=\"igx-days-view__date-inner igx-days-view__date-inner--week-number\"\n >\n {{ getWeekNumber(week[0]) }}\n </span>\n </div>\n }\n @for (day of week; track dateTracker($index, day)) {\n <igx-day-item\n #item\n class=\"igx-days-view__date\"\n role=\"gridcell\"\n [attr.id]=\"item.isCurrentMonth && day.timestamp\"\n [attr.aria-selected]=\"isSelected(day)\"\n [attr.aria-disabled]=\"isDateDisabled(day.native)\"\n [attr.aria-label]=\"\n isFirstInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_start\n : isLastInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_end\n : day.native.toDateString()\n \"\n [date]=\"day\"\n [viewDate]=\"viewDate\"\n [selection]=\"selection\"\n [selected]=\"isSelected(day)\"\n [isActive]=\"isActiveDate(day)\"\n [isLastInRange]=\"isLastInRange(day)\"\n [isFirstInRange]=\"isFirstInRange(day)\"\n [isWithinRange]=\"isWithinRange(day.native, true)\"\n [isWithinPreviewRange]=\"isWithinPreviewRange(day.native)\"\n [disabledDates]=\"disabledDates\"\n [specialDates]=\"specialDates\"\n [hideLeadingDays]=\"hideLeadingDays\"\n [hideTrailingDays]=\"hideTrailingDays\"\n [attr.tabindex]=\"-1\"\n (click)=\"handleDateClick(item)\"\n (mouseEnter)=\"changePreviewRange(day.native)\"\n (mouseLeave)=\"clearPreviewRange()\"\n >\n {{ formattedDate(day.native) }}\n </igx-day-item>\n }\n </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Calendar } from './calendar';\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'IgxMonthViewSlots',\n standalone: true\n})\nexport class IgxMonthViewSlotsCalendar implements PipeTransform {\n public transform(monthViews: number) {\n return new Array(monthViews);\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'IgxGetViewDate',\n standalone: true\n})\nexport class IgxGetViewDateCalendar implements PipeTransform {\n private calendar: Calendar;\n constructor() {\n this.calendar = new Calendar();\n }\n\n public transform(index: number, viewDate: Date): Date;\n public transform(index: number, viewDate: Date, wholeDate: false): number;\n public transform(index: number, viewDate: Date, wholeDate = true) {\n const date = this.calendar.timedelta(viewDate, 'month', index);\n return wholeDate ? date : date.getMonth();\n }\n}\n","import {\n\tComponent,\n\tContentChild,\n\tforwardRef,\n\tHostBinding,\n\tInput,\n\tViewChild,\n\tElementRef,\n\tAfterViewInit,\n\tViewChildren,\n\tQueryList,\n\tOnDestroy,\n\tbooleanAttribute,\n HostListener,\n} from '@angular/core';\nimport { NgTemplateOutlet, DatePipe } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n\tIgxCalendarHeaderTemplateDirective,\n IgxCalendarHeaderTitleTemplateDirective,\n\tIgxCalendarSubheaderTemplateDirective,\n IgxCalendarScrollPageDirective,\n} from './calendar.directives';\nimport { IgxCalendarView, ScrollDirection } from './calendar';\nimport { IgxMonthsViewComponent } from './months-view/months-view.component';\nimport { IgxYearsViewComponent } from './years-view/years-view.component';\nimport { IgxDaysViewComponent } from './days-view/days-view.component';\nimport { interval } from 'rxjs';\nimport { takeUntil, debounce, skipLast, switchMap } from 'rxjs/operators';\nimport { IgxMonthViewSlotsCalendar, IgxGetViewDateCalendar } from './months-view.pipe';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxCalendarBaseDirective } from './calendar-base';\nimport { KeyboardNavigationService } from './calendar.services';\nimport { areSameMonth, CalendarDay, formatToParts, getClosestActiveDate, isDateInRanges } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n\n/**\n * Calendar provides a way to display date information.\n *\n * @igxModule IgxCalendarModule\n *\n * @igxTheme igx-calendar-theme, igx-icon-theme\n *\n * @igxKeywords calendar, datepicker, schedule, date\n *\n * @igxGroup Scheduling\n *\n * @remarks\n * The Ignite UI Calendar provides an easy way to display a calendar and allow users to select dates using single, multiple\n * or range selection.\n *\n * @example:\n * ```html\n * <igx-calendar selection=\"range\"></igx-calendar>\n * ```\n */\n@Component({\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxCalendarComponent,\n },\n {\n multi: false,\n provide: KeyboardNavigationService,\n },\n ],\n selector: 'igx-calendar',\n templateUrl: 'calendar.component.html',\n imports: [NgTemplateOutlet, IgxCalendarScrollPageDirective, IgxIconComponent, IgxDaysViewComponent, IgxMonthsViewComponent, IgxYearsViewComponent, DatePipe, IgxMonthViewSlotsCalendar, IgxGetViewDateCalendar]\n})\nexport class IgxCalendarComponent extends IgxCalendarBaseDirective implements AfterViewInit, OnDestroy {\n /**\n * @hidden\n * @internal\n */\n private _activeDescendant: number;\n\n /**\n * @hidden\n * @internal\n */\n @ViewChild(\"wrapper\")\n public wrapper: ElementRef;\n\n\t/**\n\t * Sets/gets the `id` of the calendar.\n\t *\n\t * @remarks\n\t * If not set, the `id` will have value `\"igx-calendar-0\"`.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar id=\"my-first-calendar\"></igx-calendar>\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\t@HostBinding('attr.id')\n\t@Input()\n\tpublic id = `igx-calendar-${ NEXT_ID++ }`;\n\n /**\n * Sets/gets whether the calendar has header.\n * Default value is `true`.\n *\n * @example\n * ```html\n * <igx-calendar [hasHeader]=\"false\"></igx-calendar>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public hasHeader = true;\n\n /**\n * Sets/gets whether the calendar header will be in vertical position.\n * Default value is `false`.\n *\n * @example\n * ```html\n * <igx-calendar [vertical]=\"true\"></igx-calendar>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public vertical = false;\n\n @Input()\n public orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n @Input()\n public headerOrientation: 'horizontal' | 'vertical' = 'horizontal';\n\n\t/**\n\t * Sets/gets the number of month views displayed.\n\t * Default value is `1`.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar [monthsViewNumber]=\"2\"></igx-calendar>\n\t * ```\n\t */\n\t@Input()\n\tpublic get monthsViewNumber() {\n\t\treturn this._monthsViewNumber;\n\t}\n\n public set monthsViewNumber(val: number) {\n if (val < 1) {\n return;\n }\n\n\t\tthis._monthsViewNumber = val;\n\t}\n\n /**\n * Show/hide week numbers\n *\n * @example\n * ```html\n * <igx-calendar [showWeekNumbers]=\"true\"></igx-calendar>\n * ``\n */\n @Input({ transform: booleanAttribute })\n public showWeekNumbers = false;\n\n\t/**\n\t * The default css class applied to the component.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@HostBinding('class.igx-calendar--vertical')\n\tpublic get styleVerticalClass(): boolean {\n\t\treturn this.headerOrientation === 'vertical';\n\t}\n\n\t/**\n\t * The default css class applied to the component.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@HostBinding('class.igx-calendar')\n\tpublic styleClass = true;\n\n\t/**\n\t * Month button, that displays the months view.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChildren('monthsBtn')\n\tpublic monthsBtns: QueryList<ElementRef>;\n\n\t/**\n\t * ViewChild that represents the decade view.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('decade', { read: IgxYearsViewComponent })\n\tpublic dacadeView: IgxYearsViewComponent;\n\n\t/**\n\t * ViewChild that represents the months view.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('months', { read: IgxMonthsViewComponent })\n\tpublic monthsView: IgxMonthsViewComponent;\n\n\t/**\n\t * ViewChild that represents the days view.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('days', { read: IgxDaysViewComponent })\n\tpublic daysView: IgxDaysViewComponent;\n\n\t/**\n\t * ViewChildrenden representing all of the rendered days views.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChildren('days', { read: IgxDaysViewComponent })\n\tpublic monthViews: QueryList<IgxDaysViewComponent>;\n\n\t/**\n\t * Button for previous month.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('prevPageBtn')\n\tpublic prevPageBtn: ElementRef;\n\n\t/**\n\t * Button for next month.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('nextPageBtn')\n\tpublic nextPageBtn: ElementRef;\n\n\t/**\n\t * Denote if the year view is active.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic get isYearView(): boolean {\n\t\treturn this.activeView === IgxCalendarView.Year;\n\t}\n\n\t/**\n\t * Gets the header template.\n\t *\n\t * @example\n\t * ```typescript\n\t * let headerTitleTemplate = this.calendar.headerTitleTeamplate;\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic get headerTitleTemplate(): any {\n\t\tif (this.headerTitleTemplateDirective) {\n\t\t\treturn this.headerTitleTemplateDirective.template;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Sets the header template.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar headerTitleTemplateDirective=\"igxCalendarHeaderTitle\"></igx-calendar>\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic set headerTitleTemplate(directive: any) {\n\t\tthis.headerTitleTemplateDirective = directive;\n\t}\n\n\t/**\n\t * Gets the header template.\n\t *\n\t * @example\n\t * ```typescript\n\t * let headerTemplate = this.calendar.headerTeamplate;\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic get headerTemplate(): any {\n\t\tif (this.headerTemplateDirective) {\n\t\t\treturn this.headerTemplateDirective.template;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Sets the header template.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar headerTemplateDirective=\"igxCalendarHeader\"></igx-calendar>\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic set headerTemplate(directive: any) {\n\t\tthis.headerTemplateDirective = directive;\n\t}\n\n\t/**\n\t * Gets the subheader template.\n\t *\n\t * @example\n\t * ```typescript\n\t * let subheaderTemplate = this.calendar.subheaderTemplate;\n\t * ```\n\t */\n\tpublic get subheaderTemplate(): any {\n\t\tif (this.subheaderTemplateDirective) {\n\t\t\treturn this.subheaderTemplateDirective.template;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Sets the subheader template.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar subheaderTemplate=\"igxCalendarSubheader\"></igx-calendar>\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic set subheaderTemplate(directive: any) {\n\t\tthis.subheaderTemplateDirective = directive;\n\t}\n\n\t/**\n\t * Gets the context for the template marked with the `igxCalendarHeader` directive.\n\t *\n\t * @example\n\t * ```typescript\n\t * let headerContext = this.calendar.headerContext;\n\t * ```\n\t */\n\tpublic get headerContext() {\n\t\treturn this.generateContext(this.headerDate);\n\t}\n\n\t/**\n\t * Gets the context for the template marked with either `igxCalendarSubHeaderMonth`\n\t * or `igxCalendarSubHeaderYear` directive.\n\t *\n\t * @example\n\t * ```typescript\n\t * let context = this.calendar.context;\n\t * ```\n\t */\n\tpublic get context() {\n\t\tconst date: Date = this.viewDate;\n\t\treturn this.generateContext(date);\n\t}\n\n\t/**\n\t * Date displayed in header\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic get headerDate(): Date {\n\t\treturn this.selectedDates?.at(0) ?? new Date();\n\t}\n\n /**\n * @hidden\n * @internal\n */\n @ContentChild(forwardRef(() => IgxCalendarHeaderTemplateDirective), { read: IgxCalendarHeaderTemplateDirective, static: true })\n private headerTemplateDirective: IgxCalendarHeaderTemplateDirective;\n\n /**\n * @hidden\n * @internal\n */\n @ContentChild(forwardRef(() => IgxCalendarHeaderTitleTemplateDirective), { read: IgxCalendarHeaderTitleTemplateDirective, static: true })\n private headerTitleTemplateDirective: IgxCalendarHeaderTitleTemplateDirective;\n\n /**\n * @hidden\n * @internal\n */\n @ContentChild(forwardRef(() => IgxCalendarSubheaderTemplateDirective), { read: IgxCalendarSubheaderTemplateDirective, static: true })\n private subheaderTemplateDirective: IgxCalendarSubheaderTemplateDirective;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic activeDate = CalendarDay.today.native;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tprotected previewRangeDate: Date;\n\n\t/**\n\t * Used to apply the active date when the calendar view is changed\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic nextDate: Date;\n\n\t/**\n\t * Denote if the calendar view was changed with the keyboard\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic isKeydownTrigger = false;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tprivate _monthsViewNumber = 1;\n\n @HostListener('mousedown', ['$event'])\n protected onMouseDown(event: MouseEvent) {\n event.stopPropagation();\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n }\n\n private _showActiveDay: boolean;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n protected set showActiveDay(value: boolean) {\n this._showActiveDay = value;\n this.cdr.detectChanges();\n }\n\n protected get showActiveDay() {\n return this._showActiveDay;\n }\n\n protected get activeDescendant(): number {\n if (this.activeView === 'month') {\n return this.activeDate.getTime();\n }\n\n return this._activeDescendant ?? this.viewDate.getTime();\n }\n\n protected set activeDescendant(date: Date) {\n this._activeDescendant = date.getTime();\n }\n\n\tpublic ngAfterViewInit() {\n this.keyboardNavigation\n .attachKeyboardHandlers(this.wrapper, this)\n .set(\"ArrowUp\", this.onArrowUp)\n .set(\"ArrowDown\", this.onArrowDown)\n .set(\"ArrowLeft\", this.onArrowLeft)\n .set(\"ArrowRight\", this.onArrowRight)\n .set(\"Enter\", this.onEnter)\n .set(\" \", this.onEnter)\n .set(\"Home\", this.onHome)\n .set(\"End\", this.onEnd)\n .set(\"PageUp\", this.handlePageUp)\n .set(\"PageDown\", this.handlePageDown);\n\n this.startPageScroll$.pipe(\n takeUntil(this.stopPageScroll$),\n switchMap(() => this.scrollPage$.pipe(\n skipLast(1),\n debounce(() => interval(300)),\n takeUntil(this.stopPageScroll$)\n ))).subscribe(() => {\n switch (this.pageScrollDirection) {\n case ScrollDirection.PREV:\n this.previousPage();\n break;\n case ScrollDirection.NEXT:\n this.nextPage();\n break;\n case ScrollDirection.NONE:\n default:\n break;\n }\n });\n\n this.activeView$.subscribe((view) => {\n\t\t\tthis.activeViewChanged.emit(view);\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate\n });\n });\n }\n\n protected onWrapperFocus(_event: FocusEvent) {\n this.showActiveDay = true;\n this.monthViews.forEach(view => view.changePreviewRange(this.activeDate));\n }\n\n protected onWrapperBlur(_event: FocusEvent) {\n this.showActiveDay = false;\n this.monthViews.forEach(view => view.clearPreviewRange());\n this._onTouchedCallback();\n }\n\n private handleArrowKeydown(event: KeyboardEvent, delta: number) {\n event.preventDefault();\n\n const date = getClosestActiveDate(\n CalendarDay.from(this.activeDate),\n delta,\n this.disabledDates,\n );\n\n this.activeDate = date.native;\n\n const dates = this.viewDates;\n const isDateInView = dates.some(d => d.date.equalTo(this.activeDate));\n this.monthViews.forEach(view => view.clearPreviewRange());\n\n if (!isDateInView) {\n delta > 0 ? this.nextPage(true) : this.previousPage(true);\n }\n }\n\n private handlePageUpDown(event: KeyboardEvent, delta: number) {\n event.preventDefault();\n\n const dir = delta > 0 ? ScrollDirection.NEXT : ScrollDirection.PREV;\n\n if (this.activeView === IgxCalendarView.Month && event.shiftKey) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', delta).native;\n this.resetActiveDate(this.viewDate);\n this.cdr.detectChanges();\n } else {\n this.changePage(false, dir);\n }\n }\n\n private handlePageUp(event: KeyboardEvent) {\n this.handlePageUpDown(event, -1);\n }\n\n private handlePageDown(event: KeyboardEvent) {\n this.handlePageUpDown(event, 1);\n }\n\n private onArrowUp(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleArrowKeydown(event, -7);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownArrowUp(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownArrowUp(event);\n }\n }\n\n private onArrowDown(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleArrowKeydown(event, 7);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownArrowDown(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownArrowDown(event);\n }\n }\n\n private onArrowLeft(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleArrowKeydown(event, -1);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownArrowLeft(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownArrowLeft(event);\n }\n }\n\n private onArrowRight(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleArrowKeydown(event, 1);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownArrowRight(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownArrowRight(event);\n }\n }\n\n private onEnter(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleDateSelection(this.activeDate);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownEnter(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownEnter(event);\n }\n\n this.monthViews.forEach(view => view.clearPreviewRange());\n }\n\n private onHome(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n const dates = this.monthViews.toArray()\n .flatMap((view) => view.dates.toArray())\n .filter((d) => d.isCurrentMonth && d.isFocusable);\n\n this.activeDate = dates.at(0).date.native;\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownHome(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownHome(event);\n }\n }\n\n private onEnd(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n const dates = this.monthViews.toArray()\n .flatMap((view) => view.dates.toArray())\n .filter((d) => d.isCurrentMonth && d.isFocusable);\n\n this.activeDate = dates.at(-1).date.native;\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownEnd(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownEnd(event);\n }\n }\n\n\t/**\n\t * Returns the locale representation of the month in the month view if enabled,\n\t * otherwise returns the default `Date.getMonth()` value.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic formattedMonth(value: Date): string {\n\t\tif (this.formatViews.month) {\n\t\t\treturn this.formatterMonth.format(value);\n\t\t}\n\n\t\treturn `${ value.getMonth() }`;\n\t}\n\n\t/**\n\t * Change to previous page\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic previousPage(isKeydownTrigger = false) {\n\t\tif (isKeydownTrigger && this.pageScrollDirection === ScrollDirection.NEXT) {\n\t\t\treturn;\n\t\t}\n\n this.changePage(isKeydownTrigger, ScrollDirection.PREV);\n\t}\n\n\t/**\n\t * Change to next page\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic nextPage(isKeydownTrigger = false) {\n\t\tif (isKeydownTrigger && this.pageScrollDirection === ScrollDirection.PREV) {\n\t\t\treturn;\n\t\t}\n\n this.changePage(isKeydownTrigger, ScrollDirection.NEXT);\n\t}\n\n\t/**\n\t * Changes the current page\n\t *\n\t * @hidden\n\t * @internal\n\t */\n protected changePage(isKeydownTrigger = false, direction: ScrollDirection) {\n\t\tthis.previousViewDate = this.viewDate;\n\t\tthis.isKeydownTrigger = isKeydownTrigger;\n\n switch (this.activeView) {\n case \"month\":\n if (direction === ScrollDirection.PREV) {\n this.viewDate = CalendarDay.from(this.viewDate).add('month', -1).native;\n }\n\n if (direction === ScrollDirection.NEXT) {\n this.viewDate = CalendarDay.from(this.viewDate).add('month', 1).native;\n }\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate\n });\n\n break;\n\n case \"year\":\n if (direction === ScrollDirection.PREV) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', -1).native;\n }\n\n if (direction === ScrollDirection.NEXT) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', 1).native;\n }\n\n break;\n\n case \"decade\":\n if (direction === ScrollDirection.PREV) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', -15).native;\n }\n\n if (direction === ScrollDirection.NEXT) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', 15).native;\n }\n\n break;\n }\n\n // XXX: Why only when it's not triggered by keyboard?\n if (!this.isKeydownTrigger) this.resetActiveDate(this.viewDate);\n }\n\n\t/**\n\t * Continious navigation through the previous pages\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic startPrevPageScroll = (isKeydownTrigger = false) => {\n\t\tthis.startPageScroll$.next();\n\t\tthis.pageScrollDirection = ScrollDirection.PREV;\n\t\tthis.previousPage(isKeydownTrigger);\n\t}\n\n\t/**\n\t * Continious navigation through the next pages\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic startNextPageScroll = (isKeydownTrigger = false) => {\n\t\tthis.startPageScroll$.next();\n\t\tthis.pageScrollDirection = ScrollDirection.NEXT;\n\t\tthis.nextPage(isKeydownTrigger);\n\t}\n\n\t/**\n\t * Stop continuous navigation\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic stopPageScroll = (event: KeyboardEvent) => {\n\t\tevent.stopPropagation();\n\n\t\tthis.stopPageScroll$.next(true);\n\t\tthis.stopPageScroll$.complete();\n\n\t\tif (this.platform.isActivationKey(event)) {\n\t\t\tthis.resetActiveDate(this.viewDate);\n\t\t}\n\n\t\tthis.pageScrollDirection = ScrollDirection.NONE;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewDecade(event: MouseEvent, date: Date, activeViewIdx: number): void {\n event.preventDefault();\n\n\t\tsuper.activeViewDecade(activeViewIdx);\n this.viewDate = date;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewDecadeKB(date: Date, event: KeyboardEvent, activeViewIdx: number) {\n\t\tsuper.activeViewDecadeKB(event, activeViewIdx);\n\n\t\tif (this.platform.isActivationKey(event)) {\n this.viewDate = date;\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n\t\t}\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n public onYearsViewClick(event: MouseEvent) {\n if (!this.platform.isBrowser) {\n return;\n }\n\n const path = event.composed ? event.composedPath() : [event.target];\n const years = this.dacadeView.viewItems.toArray();\n const validTarget = years.some(year => path.includes(year.nativeElement));\n\n if (validTarget) {\n this.activeView = IgxCalendarView.Year;\n }\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n public onYearsViewKeydown(event: KeyboardEvent) {\n if (this.platform.isActivationKey(event)) {\n this.activeView = IgxCalendarView.Year;\n }\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tprotected getFormattedDate(): { weekday: string; monthday: string } {\n\t\tconst date = this.headerDate;\n const monthFormatter = new Intl.DateTimeFormat(this.locale, { month: 'short', day: 'numeric' })\n const dayFormatter = new Intl.DateTimeFormat(this.locale, { weekday: 'short' })\n\n\t\treturn {\n\t\t\tmonthday: monthFormatter.format(date),\n\t\t\tweekday: dayFormatter.format(date),\n\t\t};\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tprotected getFormattedRange(): { start: string; end: string } {\n\t\tconst dates = this.selectedDates as Date[];\n\n\t\treturn {\n\t\t\tstart: this.formatterRangeday.format(dates.at(0)),\n\t\t\tend: this.formatterRangeday.format(dates.at(-1))\n\t\t};\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n protected get viewDates() {\n return this.monthViews.toArray()\n .flatMap(view => view.dates.toArray())\n .filter(d => d.isCurrentMonth);\n }\n\n\t/**\n\t * Handles invoked on date selection\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tprotected handleDateSelection(date: Date) {\n const outOfRange = !this.viewDates.some(d => {\n return d.date.equalTo(date)\n });\n\n if (outOfRange) {\n this.viewDate = date;\n }\n\n\t\tthis.selectDate(date);\n\n // keep views in sync\n\t\tthis.monthViews.forEach((m) => {\n\t\t\tm.shiftKey = this.shiftKey;\n m.selectedDates = this.selectedDates;\n m.cdr.markForCheck();\n\t\t});\n\n if (this.selection !== 'single') {\n\t\t this.selected.emit(this.selectedDates);\n } else {\n\t\t this.selected.emit(this.selectedDates.at(0));\n }\n\t}\n\n\t/**\n\t * @hidden\n\t * @intenal\n\t */\n\tpublic changeMonth(date: Date) {\n\t\tthis.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('month', -this.activeViewIdx).native;\n\t\tthis.activeView = IgxCalendarView.Month;\n this.resetActiveDate(date);\n\t}\n\n\t/**\n\t * @hidden\n\t * @intenal\n\t */\n public override changeYear(date: Date) {\n this.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('month', -this.activeViewIdx).native;\n\t\tthis.activeView = IgxCalendarView.Year;\n }\n\n\t/**\n\t * @hidden\n\t * @intenal\n\t */\n\tpublic updateYear(date: Date) {\n\t\tthis.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('year', -this.activeViewIdx).native;\n\t}\n\n public updateActiveDescendant(date: Date) {\n this.activeDescendant = date;\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewYear(event: MouseEvent, date: Date, activeViewIdx: number): void {\n event.preventDefault();\n\n\t\tthis.activeView = IgxCalendarView.Year;\n\t\tthis.activeViewIdx = activeViewIdx;\n this.viewDate = date;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewYearKB(date: Date, event: KeyboardEvent, activeViewIdx: number): void {\n event.stopPropagation();\n\n\t\tif (this.platform.isActivationKey(event)) {\n\t\t event.preventDefault();\n this.activeView = IgxCalendarView.Year;\n this.activeViewIdx = activeViewIdx;\n this.viewDate = date;\n\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n\t\t}\n\t}\n\n\t/**\n\t * Deselects date(s) (based on the selection type).\n\t *\n\t * @example\n\t * ```typescript\n\t * this.calendar.deselectDate(new Date(`2018-06-12`));\n\t * ````\n\t */\n\tpublic override deselectDate(value?: Date | Date[] | string) {\n\t\tsuper.deselectDate(value);\n\n\t\tthis.monthViews.forEach((m) => {\n\t\t\tm.selectedDates = this.selectedDates;\n\t\t\tm.rangeStarted = false;\n m.cdr.markForCheck();\n\t\t});\n\n\t\tthis._onChangeCallback(this.selectedDates);\n\t}\n\n\n\t/**\n\t * Getter for the context object inside the calendar templates.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getContext(i: number) {\n const date = CalendarDay.from(this.viewDate).add('month', i).native;\n\t\treturn this.generateContext(date, i);\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n // TODO: See if this can be incorporated in the DaysView directly\n\tpublic resetActiveDate(date: Date) {\n const target = CalendarDay.from(this.activeDate).set({\n month: date.getMonth(),\n year: date.getFullYear(),\n });\n const outOfRange =\n !areSameMonth(date, target) ||\n isDateInRanges(target, this.disabledDates);\n\n this.activeDate = outOfRange ? date : target.native;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic ngOnDestroy(): void {\n this.keyboardNavigation.detachKeyboardHandlers();\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getPrevMonth(date: Date): Date {\n\t\treturn CalendarDay.from(date).add('month', -1).native;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getNextMonth(date: Date, viewIndex: number): Date {\n return CalendarDay.from(date).add('month', viewIndex).native;\n\t}\n\n\t/**\n\t * Helper method building and returning the context object inside the calendar templates.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tprivate generateContext(value: Date | Date[], i?: number) {\n const construct = (date: Date, index: number) => ({\n index: index,\n date,\n ...formatToParts(date, this.locale, this.formatOptions, [\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"weekday\",\n ]),\n });\n\n const formatObject = Array.isArray(value)\n ? value.map((date, index) => construct(date, index))\n : construct(value, i);\n\n return { $implicit: formatObject };\n\t}\n}\n","<ng-template let-result #defaultHeaderTitle>\n @if (selection === 'single') {\n <span>{{ resourceStrings.igx_calendar_select_date }}</span>\n }\n @if (selection === 'range') {\n <span>{{ resourceStrings.igx_calendar_range_placeholder }}</span>\n }\n</ng-template>\n\n<ng-template let-result #defaultHeaderDate>\n @if (selection === 'single') {\n <span>{{ getFormattedDate().weekday }}, </span>\n <span>{{ getFormattedDate().monthday }}</span>\n }\n @if (selection === 'range') {\n <span>{{ selectedDates.length === 0 ? 'Start' : getFormattedRange().start}}</span>\n <span> - </span>\n <span>{{ selectedDates.length <= 1 ? 'End' : getFormattedRange().end}}</span>\n }\n</ng-template>\n\n<!-- Month -->\n<ng-template #defaultMonth let-obj>\n <span\n #monthsBtn\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"(obj.date | date: 'LLLL') + ', ' + resourceStrings.igx_calendar_select_month\"\n (keydown)=\"onActiveViewYearKB(obj.date, $event, obj.index)\"\n (mousedown)=\"onActiveViewYear($event, obj.date, obj.index)\"\n class=\"igx-calendar-picker__date\">\n {{ formattedMonth(obj.date) }}\n </span>\n</ng-template>\n\n<!-- Year -->\n<ng-template #defaultYear let-obj>\n @if (activeView === 'year') {\n <span class=\"igx-calendar__aria-off-screen\" aria-live=\"polite\">{{ formattedYear(obj.date) }}</span>\n }\n <span\n #yearsBtn\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"(obj.date | date: 'yyyy') + ', ' + resourceStrings.igx_calendar_select_year\"\n (keydown)=\"onActiveViewDecadeKB(obj.date, $event, obj.index)\"\n (mousedown)=\"onActiveViewDecade($event, obj.date, obj.index)\"\n class=\"igx-calendar-picker__date\">\n {{ formattedYear(obj.date) }}\n </span>\n</ng-template>\n\n<!-- Month Year -->\n<ng-template #defaultMonthYear let-obj let-result>\n @if (monthsViewNumber < 2 || obj.index < 1) {\n <span class=\"igx-calendar__aria-off-screen\" aria-live=\"polite\">\n {{ monthsViewNumber > 1 ?\n (resourceStrings.igx_calendar_first_picker_of.replace('{0}', monthsViewNumber.toString()) + ' ' +\n (obj.date | date: 'LLLL yyyy')) :\n resourceStrings.igx_calendar_selected_month_is + (obj.date | date: 'LLLL yyyy')}}\n </span>\n }\n <ng-container *ngTemplateOutlet=\"defaultMonth; context: {$implicit: obj}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"defaultYear; context: {$implicit: obj}\"></ng-container>\n</ng-template>\n\n<!-- Decade -->\n<ng-template #defaultDecade>\n <span>{{ getDecadeRange().start }} - {{ getDecadeRange().end }}</span>\n</ng-template>\n\n<!-- Previous arrow icon -->\n<ng-template #prevArrow let-obj>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"arrow_prev\"></igx-icon>\n</ng-template>\n\n<!-- Next arrow icon -->\n<ng-template #nextArrow let-obj>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"arrow_next\"></igx-icon>\n</ng-template>\n\n<!-- Previous picker button -->\n<ng-template #prevPageButton let-obj>\n <div\n #prevPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__prev\"\n role=\"button\"\n [attr.aria-label]=\"prevNavLabel((getPrevMonth(viewDate) | date: 'LLLL'))\"\n data-action=\"prev\"\n igxCalendarScrollPage\n [startScroll]=\"startPrevPageScroll\"\n [stopScroll]=\"stopPageScroll\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <ng-container *ngTemplateOutlet=\"prevArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Next picker button -->\n<ng-template #nextPageButton let-obj>\n <div\n #nextPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__next\"\n role=\"button\"\n [attr.aria-label]=\"nextNavLabel((getNextMonth(viewDate, monthsViewNumber) | date: 'LLLL'))\"\n data-action=\"next\"\n igxCalendarScrollPage\n [startScroll]=\"startNextPageScroll\"\n [stopScroll]=\"stopPageScroll\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <ng-container *ngTemplateOutlet=\"nextArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- PICKER IN DAYS -->\n<ng-template #calendarDaysPicker let-i>\n <section class=\"igx-calendar-picker\" [style.--calendar-row-start]=\"1 + (2 * i)\">\n <div class=\"igx-calendar-picker__dates\" [attr.data-month]=\"i | IgxGetViewDate:viewDate:false\">\n <ng-container\n *ngTemplateOutlet=\"subheaderTemplate ? subheaderTemplate : defaultMonthYear; context: getContext(i)\">\n </ng-container>\n </div>\n @if (this.orientation === 'horizontal' ? i === monthsViewNumber - 1 : i === 0) {\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n }\n </section>\n</ng-template>\n\n<!-- PICKER IN MONTHS -->\n<ng-template #calendarYearPicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\">\n <ng-container\n *ngTemplateOutlet=\"subheaderTemplate ? subheaderTemplate : defaultYear; context: getContext(0)\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<!-- PICKER IN YEARS -->\n<ng-template #calendarDecadePicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\" aria-live=\"polite\">\n <ng-container\n *ngTemplateOutlet=\"subheaderTemplate ? subheaderTemplate : defaultDecade;\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n\n@if (selection === 'single' && hasHeader || selection === 'range' && hasHeader) {\n <header\n aria-labelledby=\"igx-aria-calendar-title-month igx-aria-calendar-title-year\"\n class=\"igx-calendar__header\"\n >\n <h5 id=\"igx-aria-calendar-title-year\" class=\"igx-calendar__header-year\">\n <ng-container *ngTemplateOutlet=\"headerTitleTemplate ?? defaultHeaderTitle; context: headerContext\"></ng-container>\n </h5>\n <h2 id=\"igx-aria-calendar-title-month\" class=\"igx-calendar__header-date\">\n <ng-container *ngTemplateOutlet=\"headerTemplate ? headerTemplate : defaultHeaderDate; context: headerContext\">\n </ng-container>\n </h2>\n </header>\n}\n\n\n<div\n #wrapper\n [style.--calendar-months]=\"monthsViewNumber\"\n [tabIndex]=\"0\"\n class=\"igx-calendar__wrapper\"\n [class.igx-calendar__wrapper--vertical]=\"orientation === 'vertical'\"\n [attr.aria-activedescendant]=\"activeDescendant\"\n [attr.aria-multiselectable]=\"selection !== 'single'\"\n aria-labelledby=\"calendar-desc\"\n role=\"grid\"\n (focus)=\"this.onWrapperFocus($event)\"\n (blur)=\"this.onWrapperBlur($event)\"\n >\n <div id=\"calendar-desc\" tabindex=\"-1\" class=\"igx-calendar__aria-off-screen\">\n @switch (selection) {\n @case ('multi') {\n {{ monthsViewNumber && monthsViewNumber > 1 ?\n resourceStrings.igx_calendar_multi_selection.replace('{0}', monthsViewNumber.toString()) :\n resourceStrings.igx_calendar_singular_multi_selection}}\n }\n @case ('range') {\n {{ monthsViewNumber && monthsViewNumber > 1 ?\n resourceStrings.igx_calendar_range_selection.replace('{0}', monthsViewNumber.toString()) :\n resourceStrings.igx_calendar_singular_range_selection}}\n }\n @default {\n {{ monthsViewNumber && monthsViewNumber > 1 ?\n resourceStrings.igx_calendar_single_selection.replace('{0}', monthsViewNumber.toString()) :\n resourceStrings.igx_calendar_singular_single_selection}}\n }\n }\n </div>\n <section\n class=\"igx-calendar__pickers\"\n [class.igx-calendar__pickers--days]=\"isDefaultView\"\n [class.igx-calendar__pickers--vertical]=\"orientation === 'vertical'\"\n >\n @if (isDefaultView) {\n @for (view of monthsViewNumber | IgxMonthViewSlots; track $index; let i = $index) {\n <ng-container *ngTemplateOutlet=\"calendarDaysPicker; context: {$implicit: i}\"></ng-container>\n }\n }\n\n @if (isYearView) {\n <ng-container *ngTemplateOutlet=\"calendarYearPicker\"></ng-container>\n }\n\n @if (isDecadeView) {\n <ng-container *ngTemplateOutlet=\"calendarDecadePicker\"></ng-container>\n }\n </section>\n\n <section class=\"igx-calendar__body\" [class.igx-calendar__body--vertical]=\"orientation === 'vertical'\" role=\"presentation\">\n @if (isDefaultView) {\n @for (view of monthsViewNumber | IgxMonthViewSlots; track $index; let i = $index) {\n <igx-days-view\n #days\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [selection]=\"selection\"\n [locale]=\"locale\"\n [value]=\"value\"\n [(activeDate)]=\"activeDate\"\n [(previewRangeDate)]=\"previewRangeDate\"\n [viewDate]=\"i | IgxGetViewDate: viewDate\"\n [weekStart]=\"weekStart\"\n [formatOptions]=\"formatOptions\"\n [formatViews]=\"formatViews\"\n [disabledDates]=\"disabledDates\"\n [specialDates]=\"specialDates\"\n [style.--calendar-row-start]=\"(i + 1) * 2\"\n [hideLeadingDays]=\"hideOutsideDays || i !== 0\"\n [hideTrailingDays]=\"hideOutsideDays || i !== monthsViewNumber - 1\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [showActiveDay]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (dateSelected)=\"handleDateSelection($event)\"\n (mousedown)=\"$event.preventDefault()\">\n </igx-days-view>\n }\n }\n\n @if (isYearView) {\n <igx-months-view\n #months\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.month\"\n [monthFormat]=\"formatOptions.month\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (pageChanged)=\"updateYear($event)\"\n (activeDateChanged)=\"updateActiveDescendant($event)\"\n (selected)=\"changeMonth($event)\"\n (mousedown)=\"$event.preventDefault()\">\n </igx-months-view>\n }\n\n @if (isDecadeView) {\n <igx-years-view\n #decade\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.year\"\n [yearFormat]=\"formatOptions.year\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (pageChanged)=\"updateYear($event)\"\n (activeDateChanged)=\"updateActiveDescendant($event)\"\n (selected)=\"changeYear($event)\"\n (mousedown)=\"$event.preventDefault()\">\n </igx-years-view>\n }\n </section>\n</div>\n","import {\n Component,\n HostListener,\n ViewChild,\n HostBinding,\n Input,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n OnInit,\n} from \"@angular/core\";\nimport { NgTemplateOutlet, DatePipe } from \"@angular/common\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { IgxMonthsViewComponent } from \"../months-view/months-view.component\";\nimport { IgxYearsViewComponent } from \"../years-view/years-view.component\";\nimport { IgxDaysViewComponent } from \"../days-view/days-view.component\";\nimport { IgxCalendarView } from \"../calendar\";\nimport { IgxCalendarBaseDirective } from \"../calendar-base\";\nimport { KeyboardNavigationService } from \"../calendar.services\";\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { CalendarDay, formatToParts } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n@Component({\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxMonthPickerComponent,\n },\n {\n multi: false,\n provide: KeyboardNavigationService\n },\n ],\n selector: \"igx-month-picker\",\n templateUrl: \"month-picker.component.html\",\n imports: [\n NgTemplateOutlet,\n DatePipe,\n IgxIconComponent,\n IgxMonthsViewComponent,\n IgxYearsViewComponent,\n ]\n})\nexport class IgxMonthPickerComponent extends IgxCalendarBaseDirective implements OnInit, AfterViewInit, OnDestroy {\n /**\n * Sets/gets the `id` of the month picker.\n * If not set, the `id` will have value `\"igx-month-picker-0\"`.\n */\n @HostBinding(\"attr.id\")\n @Input()\n public id = `igx-month-picker-${NEXT_ID++}`;\n\n /**\n * @hidden\n * @internal\n */\n private _activeDescendant: number;\n\n /**\n * @hidden\n * @internal\n */\n @ViewChild(\"wrapper\")\n public wrapper: ElementRef;\n\n /**\n * The default css class applied to the component.\n *\n * @hidden\n */\n @HostBinding(\"class.igx-month-picker\")\n public styleClass = true;\n\n /**\n * @hidden\n */\n @ViewChild(\"months\", { read: IgxMonthsViewComponent })\n public monthsView: IgxMonthsViewComponent;\n\n /**\n * @hidden\n */\n @ViewChild(\"decade\", { read: IgxYearsViewComponent })\n public dacadeView: IgxYearsViewComponent;\n\n /**\n * @hidden\n */\n @ViewChild(\"days\", { read: IgxDaysViewComponent })\n public daysView: IgxDaysViewComponent;\n\n /**\n * @hidden\n */\n @ViewChild(\"yearsBtn\")\n public yearsBtn: ElementRef;\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.pageup\", [\"$event\"])\n public previousPage(event?: KeyboardEvent) {\n event?.preventDefault();\n this.previousViewDate = this.viewDate;\n\n if (this.isDefaultView) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', -1).native;\n }\n\n if (this.isDecadeView) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', -15).native;\n }\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate,\n });\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.pagedown\", [\"$event\"])\n public nextPage(event?: KeyboardEvent) {\n event?.preventDefault();\n this.previousViewDate = this.viewDate;\n\n if (this.isDefaultView) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', 1).native;\n }\n\n if (this.isDecadeView) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', 15).native;\n }\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate,\n });\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewDecadeKB(date: Date, event: KeyboardEvent, activeViewIdx: number) {\n\t\tsuper.activeViewDecadeKB(event, activeViewIdx);\n\n\t\tif (this.platform.isActivationKey(event)) {\n this.viewDate = date;\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n\t\t}\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewDecade(event: MouseEvent, date: Date, activeViewIdx: number): void {\n event.preventDefault();\n\n\t\tsuper.activeViewDecade(activeViewIdx);\n this.viewDate = date;\n\t}\n\n /**\n * @hidden\n */\n public override activeViewDecadeKB(event: KeyboardEvent) {\n super.activeViewDecadeKB(event);\n\n if (event.key === this.platform.KEYMAP.ARROW_RIGHT) {\n this.nextPage(event);\n }\n\n if (event.key === this.platform.KEYMAP.ARROW_LEFT) {\n this.previousPage(event);\n }\n }\n\n /**\n * @hidden\n */\n public override activeViewDecade() {\n super.activeViewDecade();\n\n if (this.platform.isBrowser) {\n requestAnimationFrame(() => {\n if (this.dacadeView?.el?.nativeElement) {\n this.dacadeView.el.nativeElement.focus();\n }\n });\n }\n }\n\n /**\n * @hidden\n */\n public changePageKB(event: KeyboardEvent, next = true) {\n if (this.platform.isActivationKey(event)) {\n event.stopPropagation();\n\n if (next) {\n this.nextPage();\n } else {\n this.previousPage();\n }\n }\n }\n\n /**\n * @hidden\n */\n public selectYear(event: Date) {\n this.previousViewDate = this.viewDate;\n\n this.viewDate = new Date(\n event.getFullYear(),\n event.getMonth(),\n event.getDate(),\n );\n\n this.activeView = IgxCalendarView.Year;\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n }\n\n /**\n * @hidden\n */\n public selectMonth(event: Date) {\n this.selectDate(event);\n this.selected.emit(this.selectedDates);\n }\n\n /**\n * Selects a date.\n * ```typescript\n * this.monthPicker.selectDate(new Date(`2018-06-12`));\n * ```\n */\n public override selectDate(value: Date) {\n if (!value) {\n return new Date();\n }\n\n super.selectDate(value);\n this.viewDate = value;\n }\n\n /**\n * @hidden\n */\n public getNextYear() {\n return CalendarDay.from(this.viewDate).add('year', 1).year;\n }\n\n /**\n * @hidden\n */\n public getPreviousYear() {\n return CalendarDay.from(this.viewDate).add('year', -1).year;\n }\n\n /**\n * @hidden\n */\n public updateDate(date: Date) {\n this.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('year', -this.activeViewIdx).native;\n\n if (this.isDefaultView) {\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate,\n });\n }\n }\n\n @HostListener('mousedown', ['$event'])\n protected onMouseDown(event: MouseEvent) {\n event.stopPropagation();\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n }\n\n private _showActiveDay: boolean;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n protected set showActiveDay(value: boolean) {\n this._showActiveDay = value;\n this.cdr.detectChanges();\n }\n\n protected get showActiveDay() {\n return this._showActiveDay;\n }\n\n protected get activeDescendant(): number {\n if (this.activeView === 'month') {\n return (this.value as Date)?.getTime();\n }\n\n return this._activeDescendant ?? this.viewDate.getTime();\n }\n\n protected set activeDescendant(date: Date) {\n this._activeDescendant = date.getTime();\n }\n\n public override get isDefaultView(): boolean {\n return this.activeView === IgxCalendarView.Year;\n }\n\n public ngOnInit() {\n this.activeView = IgxCalendarView.Year;\n }\n\n public ngAfterViewInit() {\n this.keyboardNavigation\n .attachKeyboardHandlers(this.wrapper, this)\n .set(\"ArrowUp\", this.onArrowUp)\n .set(\"ArrowDown\", this.onArrowDown)\n .set(\"ArrowLeft\", this.onArrowLeft)\n .set(\"ArrowRight\", this.onArrowRight)\n .set(\"Enter\", this.onEnter)\n .set(\" \", this.onEnter)\n .set(\"Home\", this.onHome)\n .set(\"End\", this.onEnd)\n .set(\"PageUp\", this.handlePageUp)\n .set(\"PageDown\", this.handlePageDown);\n\n this.activeView$.subscribe((view) => {\n this.activeViewChanged.emit(view);\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate\n });\n });\n }\n\n protected onWrapperFocus(event: FocusEvent) {\n event.stopPropagation();\n this.showActiveDay = true;\n }\n\n protected onWrapperBlur(event: FocusEvent) {\n event.stopPropagation();\n\n this.showActiveDay = false;\n this._onTouchedCallback();\n }\n\n private handlePageUpDown(event: KeyboardEvent, delta: number) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isDefaultView && event.shiftKey) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', delta).native;\n this.cdr.detectChanges();\n } else {\n delta > 0 ? this.nextPage() : this.previousPage();\n }\n }\n\n private handlePageUp(event: KeyboardEvent) {\n this.handlePageUpDown(event, -1);\n }\n\n private handlePageDown(event: KeyboardEvent) {\n this.handlePageUpDown(event, 1);\n }\n\n private onArrowUp(event: KeyboardEvent) {\n if (this.isDefaultView) {\n this.monthsView.onKeydownArrowUp(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownArrowUp(event);\n }\n }\n\n private onArrowDown(event: KeyboardEvent) {\n if (this.isDefaultView) {\n this.monthsView.onKeydownArrowDown(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownArrowDown(event);\n }\n }\n\n private onArrowLeft(event: KeyboardEvent) {\n if (this.isDefaultView) {\n this.monthsView.onKeydownArrowLeft(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownArrowLeft(event);\n }\n }\n\n private onArrowRight(event: KeyboardEvent) {\n if (this.isDefaultView) {\n this.monthsView.onKeydownArrowRight(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownArrowRight(event);\n }\n }\n\n private onEnter(event: KeyboardEvent) {\n event.stopPropagation();\n\n if (this.isDefaultView) {\n this.monthsView.onKeydownEnter(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownEnter(event);\n }\n }\n\n private onHome(event: KeyboardEvent) {\n event.stopPropagation();\n if (this.isDefaultView) {\n this.monthsView.onKeydownHome(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownHome(event);\n }\n }\n\n private onEnd(event: KeyboardEvent) {\n event.stopPropagation();\n if (this.isDefaultView) {\n this.monthsView.onKeydownEnd(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownEnd(event);\n }\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic ngOnDestroy(): void {\n this.keyboardNavigation.detachKeyboardHandlers();\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getPrevYearDate(date: Date): Date {\n\t\treturn CalendarDay.from(date).add('year', -1).native;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getNextYearDate(date: Date): Date {\n return CalendarDay.from(date).add('year', 1).native;\n\t}\n\n\t/**\n\t * Getter for the context object inside the calendar templates.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getContext(i: number) {\n const date = CalendarDay.from(this.viewDate).add('month', i).native;\n\t\treturn this.generateContext(date, i);\n\t}\n\n\t/**\n\t * Helper method building and returning the context object inside the calendar templates.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tprivate generateContext(value: Date | Date[], i?: number) {\n const construct = (date: Date, index: number) => ({\n index: index,\n date,\n ...formatToParts(date, this.locale, this.formatOptions, [\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"weekday\",\n ]),\n });\n\n const formatObject = Array.isArray(value)\n ? value.map((date, index) => construct(date, index))\n : construct(value, i);\n\n return { $implicit: formatObject };\n\t}\n}\n","<!-- Previous arrow icon -->\n<ng-template #prevArrow let-obj>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"arrow_prev\"></igx-icon>\n</ng-template>\n\n<!-- Next arrow icon -->\n<ng-template #nextArrow let-obj>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"arrow_next\"></igx-icon>\n</ng-template>\n\n<!-- Previous picker button -->\n<ng-template #prevPageButton let-obj>\n <div\n #prevPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__prev\"\n role=\"button\"\n [attr.aria-label]=\"prevNavLabel((getPrevYearDate(viewDate) | date: 'yyyy'))\"\n data-action=\"prev\"\n igxCalendarScrollPage\n (mousedown)=\"previousPage()\"\n (keydown)=\"changePageKB($event, false)\"\n >\n <ng-container *ngTemplateOutlet=\"prevArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Next picker button -->\n<ng-template #nextPageButton let-obj>\n <div\n #nextPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__next\"\n role=\"button\"\n [attr.aria-label]=\"nextNavLabel((getNextYearDate(viewDate) | date: 'yyyy'))\"\n data-action=\"next\"\n igxCalendarScrollPage\n (mousedown)=\"nextPage()\"\n (keydown)=\"changePageKB($event)\"\n >\n <ng-container *ngTemplateOutlet=\"nextArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Year -->\n<ng-template #defaultYear let-obj>\n @if (activeView === 'year') {\n <span class=\"igx-calendar__aria-off-screen\" aria-live=\"polite\">{{ formattedYear(obj.date) }}</span>\n }\n <span\n #yearsBtn\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"(obj.date | date: 'yyyy') + ', ' + resourceStrings.igx_calendar_select_year\"\n (keydown)=\"onActiveViewDecadeKB(obj.date, $event, obj.index)\"\n (mousedown)=\"onActiveViewDecade($event, obj.date, obj.index)\"\n class=\"igx-calendar-picker__date\">\n {{ formattedYear(obj.date) }}\n </span>\n</ng-template>\n\n<!-- Decade -->\n<ng-template #defaultDecade>\n <span>{{ getDecadeRange().start }} - {{ getDecadeRange().end }}</span>\n</ng-template>\n\n<!-- PICKER IN MONTHS -->\n<ng-template #calendarYearPicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\">\n <ng-container\n *ngTemplateOutlet=\"defaultYear; context: getContext(0)\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<!-- PICKER IN YEARS -->\n<ng-template #calendarDecadePicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\" aria-live=\"polite\">\n <ng-container\n *ngTemplateOutlet=\"defaultDecade;\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<div\n #wrapper\n [tabIndex]=\"0\"\n class=\"igx-calendar__wrapper\"\n [attr.aria-activedescendant]=\"activeDescendant\"\n [attr.aria-multiselectable]=\"selection !== 'single'\"\n aria-labelledby=\"calendar-desc\"\n role=\"grid\"\n (focus)=\"this.onWrapperFocus($event)\"\n (blur)=\"this.onWrapperBlur($event)\"\n >\n <caption id=\"calendar-desc\" tabindex=\"-1\" class=\"igx-calendar__aria-off-screen\">\n {{ resourceStrings.igx_calendar_singular_single_selection}}\n </caption>\n\n <section class=\"igx-calendar__pickers\">\n @if (isDefaultView) {\n <ng-container *ngTemplateOutlet=\"calendarYearPicker\"></ng-container>\n }\n\n @if (isDecadeView) {\n <ng-container *ngTemplateOutlet=\"calendarDecadePicker\"></ng-container>\n }\n </section>\n\n <section class=\"igx-calendar__body\">\n @if (isDefaultView) {\n <igx-months-view\n #months\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.month\"\n [monthFormat]=\"formatOptions.month\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (selected)=\"selectMonth($event)\"\n (pageChanged)=\"updateDate($event)\"\n (mousedown)=\"$event.preventDefault()\">\n >\n </igx-months-view>\n }\n\n @if (isDecadeView) {\n <igx-years-view\n #decade\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.year\"\n [yearFormat]=\"formatOptions.year\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (selected)=\"selectYear($event)\"\n (pageChanged)=\"updateDate($event)\"\n (mousedown)=\"$event.preventDefault()\"\n >\n </igx-years-view>\n }\n </section>\n</div>\n","import { IgxCalendarComponent } from './calendar.component';\nimport { IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarMonthDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarYearDirective } from './calendar.directives';\nimport { IgxDaysViewComponent } from './days-view/days-view.component';\nimport { IgxMonthPickerComponent } from './month-picker/month-picker.component';\nimport { IgxMonthsViewComponent } from './months-view/months-view.component';\nimport { IgxYearsViewComponent } from './years-view/years-view.component';\n\nexport * from './calendar';\nexport * from './calendar.component';\nexport * from './calendar.directives';\nexport * from './days-view/days-view.component';\nexport * from './months-view/months-view.component';\nexport * from './years-view/years-view.component';\nexport * from './month-picker/month-picker.component';\n\n/* NOTE: Calendar directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_CALENDAR_DIRECTIVES = [\n IgxCalendarComponent,\n IgxDaysViewComponent,\n IgxMonthsViewComponent,\n IgxYearsViewComponent,\n IgxMonthPickerComponent,\n IgxCalendarHeaderTemplateDirective,\n IgxCalendarHeaderTitleTemplateDirective,\n IgxCalendarMonthDirective,\n IgxCalendarYearDirective,\n IgxCalendarSubheaderTemplateDirective\n] as const;\n\n","import { NgModule } from '@angular/core';\nimport { IGX_CALENDAR_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_CALENDAR_DIRECTIVES\n ],\n exports: [\n ...IGX_CALENDAR_DIRECTIVES\n ]\n})\nexport class IgxCalendarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NEXT_ID","i1.IgxCalendarComponent","i2.IgxDaysViewComponent","i3.IgxMonthsViewComponent","i4.IgxYearsViewComponent","i5.IgxMonthPickerComponent","i6.IgxCalendarHeaderTemplateDirective","i6.IgxCalendarHeaderTitleTemplateDirective","i6.IgxCalendarMonthDirective","i6.IgxCalendarYearDirective","i6.IgxCalendarSubheaderTemplateDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igniteui-angular-calendar.mjs","sources":["../../../projects/igniteui-angular/calendar/src/calendar/calendar.directives.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar.ts","../../../projects/igniteui-angular/calendar/src/calendar/common/calendar-view.directive.ts","../../../projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/months-view/months-view.component.html","../../../projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/years-view/years-view.component.html","../../../projects/igniteui-angular/calendar/src/calendar/days-view/day-item.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/days-view/day-item.component.html","../../../projects/igniteui-angular/calendar/src/calendar/calendar.services.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar-base.ts","../../../projects/igniteui-angular/calendar/src/calendar/day-digit.pipe.ts","../../../projects/igniteui-angular/calendar/src/calendar/days-view/days-view.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/days-view/days-view.component.html","../../../projects/igniteui-angular/calendar/src/calendar/months-view.pipe.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar.component.html","../../../projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.ts","../../../projects/igniteui-angular/calendar/src/calendar/month-picker/month-picker.component.html","../../../projects/igniteui-angular/calendar/src/calendar/public_api.ts","../../../projects/igniteui-angular/calendar/src/calendar/calendar.module.ts","../../../projects/igniteui-angular/calendar/src/igniteui-angular-calendar.ts"],"sourcesContent":["/**\n * This file contains all the directives used by the @link IgxCalendarComponent.\n * Except for the directives which are used for templating the calendar itself\n * you should generally not use them directly.\n *\n * @preferred\n */\nimport { Directive, EventEmitter, HostBinding, HostListener, Input, InjectionToken, Output, TemplateRef, ElementRef, AfterViewInit, OnDestroy, NgZone, inject } from '@angular/core';\nimport { fromEvent, Subject, interval } from 'rxjs';\nimport { takeUntil, debounce, tap } from 'rxjs/operators';\nimport { CalendarDay, PlatformUtil } from 'igniteui-angular/core';\n\nexport const IGX_CALENDAR_VIEW_ITEM =\n new InjectionToken<IgxCalendarMonthDirective | IgxCalendarYearDirective>('IgxCalendarViewItem');\n\n@Directive()\nexport abstract class IgxCalendarViewBaseDirective {\n public elementRef = inject(ElementRef);\n\n @Input()\n public value: Date;\n\n @Input()\n public date: Date;\n\n @Input()\n public showActive = false;\n\n @Output()\n public itemSelection = new EventEmitter<Date>();\n\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n @HostListener('mousedown', ['$event'])\n public onMouseDown(event: MouseEvent) {\n event.preventDefault();\n this.itemSelection.emit(this.value);\n }\n\n public abstract get isCurrent(): boolean;\n public abstract get isSelected(): boolean;\n public abstract get isActive(): boolean;\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarYear]',\n providers: [\n { provide: IGX_CALENDAR_VIEW_ITEM, useExisting: IgxCalendarYearDirective }\n ],\n exportAs: 'igxCalendarYear',\n standalone: true\n})\nexport class IgxCalendarYearDirective extends IgxCalendarViewBaseDirective {\n @HostBinding('class.igx-calendar-view__item--current')\n public get isCurrent(): boolean {\n return CalendarDay.today.year === this.value.getFullYear();\n }\n\n @HostBinding('class.igx-calendar-view__item--selected')\n public get isSelected(): boolean {\n return this.value.getFullYear() === this.date.getFullYear();\n }\n\n @HostBinding('class.igx-calendar-view__item--active')\n public get isActive(): boolean {\n return this.isSelected && this.showActive;\n }\n}\n\n@Directive({\n selector: '[igxCalendarMonth]',\n providers: [\n { provide: IGX_CALENDAR_VIEW_ITEM, useExisting: IgxCalendarMonthDirective }\n ],\n exportAs: 'igxCalendarMonth',\n standalone: true\n})\nexport class IgxCalendarMonthDirective extends IgxCalendarViewBaseDirective {\n @HostBinding('class.igx-calendar-view__item--current')\n public get isCurrent(): boolean {\n const today = CalendarDay.today;\n const date = CalendarDay.from(this.value);\n return date.year === today.year && date.month === today.month;\n }\n\n @HostBinding('class.igx-calendar-view__item--selected')\n public get isSelected(): boolean {\n return (this.value.getFullYear() === this.date.getFullYear() &&\n this.value.getMonth() === this.date.getMonth()\n );\n }\n\n @HostBinding('class.igx-calendar-view__item--active')\n public get isActive(): boolean {\n return this.isSelected && this.showActive;\n }\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarHeaderTitle]',\n standalone: true\n})\nexport class IgxCalendarHeaderTitleTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarHeader]',\n standalone: true\n})\nexport class IgxCalendarHeaderTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarSubheader]',\n standalone: true\n})\nexport class IgxCalendarSubheaderTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxCalendarScrollPage]',\n standalone: true\n})\nexport class IgxCalendarScrollPageDirective implements AfterViewInit, OnDestroy {\n private element = inject(ElementRef);\n private zone = inject(NgZone);\n protected platform = inject(PlatformUtil);\n\n /**\n * A callback function to be invoked when increment/decrement page is triggered.\n *\n * @hidden\n */\n @Input()\n public startScroll: (keydown?: boolean) => void;\n\n /**\n * A callback function to be invoked when increment/decrement page stops.\n *\n * @hidden\n */\n @Input()\n public stopScroll: (event: any) => void;\n\n /**\n * @hidden\n */\n private destroy$ = new Subject<boolean>();\n\n /**\n * @hidden\n */\n @HostListener('mousedown', ['$event'])\n public onMouseDown(event: MouseEvent) {\n event.preventDefault();\n this.startScroll();\n }\n\n /**\n * @hidden\n */\n @HostListener('mouseup', ['$event'])\n public onMouseUp(event: MouseEvent) {\n this.stopScroll(event);\n }\n\n /**\n * @hidden\n */\n public ngAfterViewInit() {\n fromEvent(this.element.nativeElement, 'keyup').pipe(\n debounce(() => interval(100)),\n takeUntil(this.destroy$)\n ).subscribe((event: KeyboardEvent) => {\n this.stopScroll(event);\n });\n\n this.zone.runOutsideAngular(() => {\n fromEvent(this.element.nativeElement, 'keydown').pipe(\n tap((event: KeyboardEvent) => {\n if (this.platform.isActivationKey(event)) {\n event.preventDefault();\n event.stopPropagation();\n }\n }),\n debounce(() => interval(100)),\n takeUntil(this.destroy$)\n ).subscribe((event: KeyboardEvent) => {\n if (this.platform.isActivationKey(event)) {\n this.zone.run(() => this.startScroll(true));\n }\n });\n });\n }\n\n /**\n * @hidden\n */\n public ngOnDestroy() {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","\n/**\n * Sets the selection type - single, multi or range.\n */\nexport const CalendarSelection = {\n SINGLE: 'single',\n MULTI: 'multi',\n RANGE: 'range'\n} as const;\nexport type CalendarSelection = (typeof CalendarSelection)[keyof typeof CalendarSelection];\n\nexport const enum ScrollDirection {\n PREV = 'prev',\n NEXT = 'next',\n NONE = 'none'\n}\n\nexport interface IViewDateChangeEventArgs {\n previousValue: Date;\n currentValue: Date;\n}\n\nexport const IgxCalendarView = {\n Month: 'month',\n Year: 'year',\n Decade: 'decade'\n} as const;\n\n/**\n * Determines the Calendar active view - days, months or years.\n */\nexport type IgxCalendarView = (typeof IgxCalendarView)[keyof typeof IgxCalendarView];\n\nconst MDAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst FEBRUARY = 1;\n\nexport const range = (start = 0, stop: number, step = 1) => {\n const res = [];\n const cur = (stop === undefined) ? 0 : start;\n const max = (stop === undefined) ? start : stop;\n for (let i = cur; step < 0 ? i > max : i < max; i += step) {\n res.push(i);\n }\n return res;\n};\n\n/**\n * Returns true for leap years, false for non-leap years.\n *\n * @export\n * @param year\n * @returns\n */\nexport const isLeap = (year: number): boolean => (year % 4 === 0) && ((year % 100 !== 0) || (year % 400 === 0));\n\nexport const weekDay = (year: number, month: number, day: number): number => new Date(year, month, day).getDay();\n\n/**\n * Return weekday and number of days for year, month.\n *\n * @export\n * @param year\n * @param month\n * @returns\n */\nexport const monthRange = (year: number, month: number): number[] => {\n if ((month < 0) || (month > 11)) {\n throw new Error('Invalid month specified');\n }\n const day = weekDay(year, month, 1);\n let nDays = MDAYS[month];\n if ((month === FEBRUARY) && (isLeap(year))) {\n nDays++;\n }\n return [day, nDays];\n};\n\nexport interface IFormattedParts {\n value: string;\n literal?: string;\n combined: string;\n}\n\nexport interface IFormattingOptions {\n day?: 'numeric' | '2-digit';\n month?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n weekday?: 'long' | 'short' | 'narrow';\n year?: 'numeric' | '2-digit';\n}\n\nexport interface IFormattingViews {\n day?: boolean;\n month?: boolean;\n year?: boolean;\n}\n\nexport class Calendar {\n public timedelta(date: Date, interval: string, units: number): Date {\n const ret = new Date(date);\n\n const checkRollover = () => {\n if (ret.getDate() !== date.getDate()) {\n ret.setDate(0);\n }\n };\n\n switch (interval.toLowerCase()) {\n case 'year':\n ret.setFullYear(ret.getFullYear() + units);\n checkRollover();\n break;\n case 'quarter':\n ret.setMonth(ret.getMonth() + 3 * units);\n checkRollover();\n break;\n case 'month':\n ret.setMonth(ret.getMonth() + units);\n checkRollover();\n break;\n case 'week':\n ret.setDate(ret.getDate() + 7 * units);\n break;\n case 'day':\n ret.setDate(ret.getDate() + units);\n break;\n case 'hour':\n ret.setTime(ret.getTime() + units * 3600000);\n break;\n case 'minute':\n ret.setTime(ret.getTime() + units * 60000);\n break;\n case 'second':\n ret.setTime(ret.getTime() + units * 1000);\n break;\n default:\n throw new Error('Invalid interval specifier');\n }\n\n return ret;\n }\n}\n","import {\n Output,\n EventEmitter,\n Input,\n HostListener,\n ViewChildren,\n QueryList,\n booleanAttribute,\n Directive,\n HostBinding,\n InjectionToken,\n inject,\n} from \"@angular/core\";\nimport { noop } from \"rxjs\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport {\n IGX_CALENDAR_VIEW_ITEM,\n IgxCalendarMonthDirective,\n IgxCalendarYearDirective,\n} from \"../calendar.directives\";\nimport { CalendarDay, DateRangeType, DayInterval, getNextActiveDate, isDate, isDateInRanges } from 'igniteui-angular/core';\n\n\nexport enum IgxCalendarNavDirection {\n NEXT = 1,\n PREV = -1,\n}\n\nexport const DAY_INTERVAL_TOKEN = new InjectionToken<DayInterval>(\n \"DAY_INTERVAL\",\n);\n\n@Directive({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxCalendarViewDirective,\n multi: true,\n },\n ],\n standalone: true,\n})\nexport abstract class IgxCalendarViewDirective implements ControlValueAccessor {\n protected dayInterval = inject<DayInterval>(DAY_INTERVAL_TOKEN);\n \n @HostBinding(\"attr.role\")\n @Input()\n public role = 'grid';\n\n @HostBinding(\"attr.tabIndex\")\n @Input()\n public tabIndex = 0;\n\n @HostBinding('attr.aria-activeDescendant')\n protected get activeDescendant() {\n if (this.tabIndex === -1) return;\n\n return this.date.getTime();\n }\n\n /**\n * Gets/sets whether the view should be rendered\n * according to the locale and format, if any.\n */\n @Input({ transform: booleanAttribute })\n public formatView: boolean;\n\n /**\n * Applies styles to the active item on view focus.\n */\n @Input({ transform: booleanAttribute })\n public showActive = false;\n\n /**\n * Emits an event when a selection is made in the view.\n * Provides reference the `date` property in the component.\n * @memberof IgxCalendarViewDirective\n */\n @Output()\n public selected = new EventEmitter<Date>();\n\n /**\n * Emits an event when a page changes in the view.\n * Provides reference the `date` property in the component.\n * @memberof IgxCalendarViewDirective\n * @hidden @internal\n */\n @Output()\n public pageChanged = new EventEmitter<Date>();\n\n /**\n * Emits an event when the active date has changed.\n * @memberof IgxCalendarViewDirective\n * @hidden @internal\n */\n @Output()\n public activeDateChanged = new EventEmitter<Date>();\n\n /**\n * @hidden\n * @internal\n */\n @ViewChildren(IGX_CALENDAR_VIEW_ITEM, { read: IGX_CALENDAR_VIEW_ITEM })\n public viewItems: QueryList<\n IgxCalendarMonthDirective | IgxCalendarYearDirective\n >;\n\n /**\n * @hidden\n */\n protected _formatter: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected _locale = \"en\";\n\n /**\n * @hidden\n * @internal\n */\n private _date = new Date();\n\n /**\n * @hidden\n */\n protected _onTouchedCallback: () => void = noop;\n\n /**\n * @hidden\n */\n protected _onChangeCallback: (_: Date) => void = noop;\n\n /**\n * Gets/sets the selected date of the view.\n * By default it's the current date.\n * ```typescript\n * let date = this.view.date;\n * ```\n *\n * @memberof IgxYearsViewComponent\n */\n @Input()\n public set date(value: Date) {\n if (!isDate(value)) return;\n\n this._date = value;\n }\n\n public get date() {\n return this._date;\n }\n\n /**\n * Gets the `locale` of the view.\n * Default value is `\"en\"`.\n * ```typescript\n * let locale = this.view.locale;\n * ```\n *\n * @memberof IgxCalendarViewDirective\n */\n @Input()\n public get locale(): string {\n return this._locale;\n }\n\n /**\n * Sets the `locale` of the view.\n * Expects a valid BCP 47 language tag.\n * Default value is `\"en\"`.\n *\n * @memberof IgxCalendarViewDirective\n */\n public set locale(value: string) {\n this._locale = value;\n this.initFormatter();\n }\n\n constructor() {\n this.initFormatter();\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.arrowdown\", [\"$event\"])\n public onKeydownArrowDown(event: KeyboardEvent) {\n this.navigateTo(event, IgxCalendarNavDirection.NEXT, 3);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.arrowup\", [\"$event\"])\n public onKeydownArrowUp(event: KeyboardEvent) {\n this.navigateTo(event, IgxCalendarNavDirection.PREV, 3);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.arrowright\", [\"$event\"])\n public onKeydownArrowRight(event: KeyboardEvent) {\n this.navigateTo(event, IgxCalendarNavDirection.NEXT, 1);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.arrowleft\", [\"$event\"])\n public onKeydownArrowLeft(event: KeyboardEvent) {\n this.navigateTo(event, IgxCalendarNavDirection.PREV, 1);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.home\", [\"$event\"])\n public onKeydownHome(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n this.date = this.range.at(0);\n this.activeDateChanged.emit(this.date);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.end\", [\"$event\"])\n public onKeydownEnd(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n this.date = this.range.at(-1);\n this.activeDateChanged.emit(this.date);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.enter\", [\"$event\"])\n public onKeydownEnter(event: KeyboardEvent) {\n event.stopPropagation();\n\n this.selected.emit(this.date);\n this._onChangeCallback(this.date);\n }\n\n /**\n * @hidden\n */\n @HostListener(\"focus\")\n protected handleFocus() {\n this.showActive = true;\n }\n\n /**\n * @hidden\n */\n @HostListener(\"blur\")\n protected handleBlur() {\n this.showActive = false;\n }\n\n /**\n * @hidden\n */\n public selectDate(value: Date) {\n this.date = value;\n\n this.selected.emit(this.date);\n this._onChangeCallback(this.date);\n }\n\n /**\n * @hidden\n */\n public registerOnChange(fn: (v: Date) => void) {\n this._onChangeCallback = fn;\n }\n\n /**\n * @hidden\n */\n public registerOnTouched(fn: () => void) {\n this._onTouchedCallback = fn;\n }\n\n /**\n * @hidden\n */\n public writeValue(value: Date) {\n if (value) {\n this.date = value;\n }\n }\n\n /**\n * @hidden\n */\n protected navigateTo(\n event: KeyboardEvent,\n direction: IgxCalendarNavDirection,\n delta: number,\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n const date = getNextActiveDate(\n CalendarDay.from(this.date).add(this.dayInterval, direction * delta),\n [],\n );\n\n const outOfRange = !isDateInRanges(date, [\n {\n type: DateRangeType.Between,\n dateRange: [this.range.at(0), this.range.at(-1)],\n },\n ]);\n\n if (outOfRange) {\n this.pageChanged.emit(date.native);\n }\n\n this.date = date.native;\n this.activeDateChanged.emit(this.date);\n }\n\n /**\n * @hidden\n */\n protected abstract initFormatter(): void;\n\n /**\n * @hidden\n */\n protected abstract get range(): Date[];\n}\n","import {\n Component,\n Input,\n HostBinding,\n ElementRef,\n booleanAttribute,\n inject,\n} from \"@angular/core\";\nimport { IgxCalendarMonthDirective } from \"../calendar.directives\";\nimport { TitleCasePipe } from \"@angular/common\";\nimport {\n IgxCalendarViewDirective,\n DAY_INTERVAL_TOKEN,\n} from \"../common/calendar-view.directive\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CalendarDay, calendarRange, PlatformUtil } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n\n@Component({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxMonthsViewComponent,\n multi: true,\n },\n {\n provide: DAY_INTERVAL_TOKEN,\n useValue: \"month\",\n },\n ],\n selector: \"igx-months-view\",\n templateUrl: \"months-view.component.html\",\n imports: [IgxCalendarMonthDirective, TitleCasePipe]\n})\nexport class IgxMonthsViewComponent extends IgxCalendarViewDirective implements ControlValueAccessor {\n public el = inject(ElementRef);\n\n #standalone = true;\n private platform = inject(PlatformUtil);\n\n /**\n * Sets/gets the `id` of the months view.\n * If not set, the `id` will have value `\"igx-months-view-0\"`.\n * ```html\n * <igx-months-view id=\"my-months-view\"></igx-months-view>\n * ```\n * ```typescript\n * let monthsViewId = this.monthsView.id;\n * ```\n *\n * @memberof IgxMonthsViewComponent\n */\n @HostBinding(\"attr.id\")\n @Input()\n public id = `igx-months-view-${NEXT_ID++}`;\n\n /**\n * The default css class applied to the component.\n *\n * @hidden\n */\n @HostBinding(\"class.igx-calendar-view\")\n public readonly viewClass = true;\n\n /**\n * @hidden @internal\n */\n @Input()\n @HostBinding(\"class.igx-calendar-view--standalone\")\n public get standalone() {\n return this.#standalone;\n }\n\n public set standalone(value: boolean) {\n this.#standalone = value;\n }\n\n /**\n * Gets the month format option of the months view.\n * ```typescript\n * let monthFormat = this.monthsView.monthFormat.\n * ```\n */\n @Input()\n public get monthFormat(): any {\n return this._monthFormat;\n }\n\n /**\n * Sets the month format option of the months view.\n * ```html\n * <igx-months-view> [monthFormat]=\"short'\"</igx-months-view>\n * ```\n *\n * @memberof IgxMonthsViewComponent\n */\n public set monthFormat(value: any) {\n this._monthFormat = value;\n this.initFormatter();\n }\n\n /**\n * Gets/sets whether the view should be rendered\n * according to the locale and format, if any.\n */\n @Input({ transform: booleanAttribute })\n public override formatView = true;\n\n /**\n * Returns an array of date objects which are then used to\n * properly render the month names.\n *\n * Used in the template of the component\n *\n * @hidden @internal\n */\n public get range(): Date[] {\n const start = CalendarDay.from(this.date).set({ date: 1, month: 0 });\n const end = start.add(this.dayInterval, 12);\n\n return Array.from(\n calendarRange({ start, end, unit: this.dayInterval }),\n ).map((m) => m.native);\n }\n\n /**\n * @hidden\n */\n private _monthFormat = \"short\";\n\n /**\n * @hidden\n */\n protected onMouseDown() {\n if (this.tabIndex !== -1 && this.platform.isBrowser && this.el?.nativeElement) {\n this.el.nativeElement.focus();\n }\n }\n\n /**\n * Returns the locale representation of the month in the months view.\n *\n * @hidden\n */\n public formattedMonth(value: Date): { long: string; formatted: string } {\n const rawFormatter = new Intl.DateTimeFormat(this.locale, {\n month: \"long\",\n year: \"numeric\",\n });\n\n if (this.formatView) {\n return {\n long: rawFormatter.format(value),\n formatted: this._formatter.format(value),\n };\n }\n\n return {\n long: rawFormatter.format(value),\n formatted: `${value.getMonth()}`,\n };\n }\n\n /**\n * @hidden\n */\n public monthTracker(_: number, item: Date): string {\n return `${item.getMonth()}}`;\n }\n\n /**\n * @hidden\n */\n protected initFormatter() {\n this._formatter = new Intl.DateTimeFormat(this._locale, {\n month: this.monthFormat,\n });\n }\n}\n","<div class=\"igx-calendar-view__items\" role=\"row\">\n @for (month of range; track monthTracker($index, month)) {\n <span\n igxCalendarMonth\n #item=\"igxCalendarMonth\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"month.getTime()\"\n [attr.aria-label]=\"formattedMonth(month).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [value]=\"month\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n (mousedown)=\"onMouseDown()\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedMonth(month).formatted | titlecase }}\n </span>\n </span>\n }\n</div>\n","import {\n Component,\n Input,\n HostBinding,\n ElementRef,\n inject,\n} from \"@angular/core\";\nimport { IgxCalendarYearDirective } from \"../calendar.directives\";\nimport {\n IgxCalendarViewDirective,\n DAY_INTERVAL_TOKEN,\n} from \"../common/calendar-view.directive\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { CalendarDay, calendarRange, PlatformUtil } from 'igniteui-angular/core';\n\n@Component({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxYearsViewComponent,\n multi: true,\n },\n {\n provide: DAY_INTERVAL_TOKEN,\n useValue: \"year\",\n },\n ],\n selector: \"igx-years-view\",\n templateUrl: \"years-view.component.html\",\n imports: [IgxCalendarYearDirective]\n})\nexport class IgxYearsViewComponent extends IgxCalendarViewDirective implements ControlValueAccessor {\n public el = inject(ElementRef);\n\n #standalone = true;\n private platform = inject(PlatformUtil);\n\n /**\n * The default css class applied to the component.\n *\n * @hidden\n */\n @HostBinding(\"class.igx-calendar-view\")\n public readonly viewClass = true;\n\n /**\n * @hidden @internal\n */\n @Input()\n\t@HostBinding('class.igx-calendar-view--standalone')\n\tpublic get standalone() {\n return this.#standalone;\n }\n\n\tpublic set standalone(value: boolean) {\n this.#standalone = value;\n }\n\n /**\n * @hidden\n */\n private _yearFormat = \"numeric\";\n\n /**\n * @hidden\n */\n private _yearsPerPage = 15;\n\n /**\n * Gets the year format option of the years view.\n * ```typescript\n * let yearFormat = this.yearsView.yearFormat.\n * ```\n */\n @Input()\n public get yearFormat(): any {\n return this._yearFormat;\n }\n\n /**\n * Sets the year format option of the years view.\n * ```html\n * <igx-years-view [yearFormat]=\"numeric\"></igx-years-view>\n * ```\n *\n * @memberof IgxYearsViewComponent\n */\n public set yearFormat(value: any) {\n this._yearFormat = value;\n this.initFormatter();\n }\n\n /**\n * Returns an array of date objects which are then used to properly\n * render the years.\n *\n * Used in the template of the component.\n *\n * @hidden @internal\n */\n public get range(): Date[] {\n const year = this.date.getFullYear();\n const start = new CalendarDay({\n year: Math.floor(year / this._yearsPerPage) * this._yearsPerPage,\n month: this.date.getMonth(),\n });\n const end = start.add(this.dayInterval, this._yearsPerPage);\n\n return Array.from(calendarRange({ start, end, unit: this.dayInterval })).map(\n (m) => m.native,\n );\n }\n\n /**\n * Returns the locale representation of the year in the years view.\n *\n * @hidden\n */\n public formattedYear(value: Date): {long: string, formatted: string} {\n const rawFormatter = new Intl.DateTimeFormat(this.locale, { year: 'numeric' });\n\n if (this.formatView) {\n return {\n long: rawFormatter.format(value),\n formatted: this._formatter.format(value)\n }\n }\n\n return {\n long: rawFormatter.format(value),\n formatted: `${value.getFullYear()}`\n }\n }\n\n /**\n * @hidden\n */\n public yearTracker(_: number, item: Date): string {\n return `${item.getFullYear()}}`;\n }\n\n /**\n * @hidden\n */\n protected initFormatter() {\n this._formatter = new Intl.DateTimeFormat(this._locale, {\n year: this.yearFormat,\n });\n }\n\n /**\n * @hidden\n */\n protected onMouseDown() {\n if (this.tabIndex !== -1 && this.platform.isBrowser && this.el?.nativeElement) {\n this.el.nativeElement.focus();\n }\n }\n}\n","<div class=\"igx-calendar-view__items\" role=\"row\">\n @for (year of range; track yearTracker($index, year)) {\n <span\n igxCalendarYear\n #item=\"igxCalendarYear\"\n class=\"igx-calendar-view__item\"\n role=\"gridcell\"\n [attr.id]=\"year.getTime()\"\n [attr.aria-label]=\"formattedYear(year).long\"\n [attr.aria-selected]=\"item.isSelected\"\n [attr.aria-current]=\"item.isCurrent\"\n [value]=\"year\"\n [date]=\"date\"\n [showActive]=\"showActive\"\n (itemSelection)=\"selectDate($event)\"\n (mousedown)=\"onMouseDown()\"\n >\n <span class=\"igx-calendar-view__item-inner\" aria-hidden=\"true\">\n {{ formattedYear(year).formatted }}\n </span>\n </span>\n }\n</div>\n","import { Component, Input, Output, EventEmitter, HostBinding, ElementRef, booleanAttribute, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { CalendarSelection } from '../calendar';\nimport { areSameMonth, CalendarDay, DateRangeDescriptor, isDateInRanges, isNextMonth, isPreviousMonth } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Component({\n selector: 'igx-day-item',\n templateUrl: 'day-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class IgxDayItemComponent {\n private elementRef = inject(ElementRef);\n\n @Input()\n public date: CalendarDay;\n\n @Input()\n public viewDate: Date;\n\n @Input()\n public selection: string;\n\n /**\n * Returns boolean indicating if the day is selected\n *\n */\n @Input()\n public get selected(): any {\n return this._selected;\n }\n\n /**\n * Selects the day\n */\n public set selected(value: any) {\n this._selected = value;\n }\n\n @Input()\n public disabledDates: DateRangeDescriptor[];\n\n @Input()\n public specialDates: DateRangeDescriptor[];\n\n @Input({ transform: booleanAttribute })\n public hideOutsideDays = false;\n\n @Input({ transform: booleanAttribute })\n @HostBinding('class.igx-days-view__date--last')\n public isLastInRange = false;\n\n @Input({ transform: booleanAttribute })\n @HostBinding('class.igx-days-view__date--first')\n public isFirstInRange = false;\n\n @Input({ transform: booleanAttribute })\n public isWithinRange = false;\n\n @Input({ transform: booleanAttribute })\n public isWithinPreviewRange = false;\n\n @Input({ transform: booleanAttribute })\n public hideLeadingDays = false;\n\n @Input({ transform: booleanAttribute })\n public hideTrailingDays = false;\n\n private get hideLeading() {\n return this.hideLeadingDays && this.isPreviousMonth;\n }\n\n private get hideTrailing() {\n return this.hideTrailingDays && this.isNextMonth;\n }\n\n @Output()\n public dateSelection = new EventEmitter<CalendarDay>();\n\n @Output()\n public mouseEnter = new EventEmitter<void>();\n\n @Output()\n public mouseLeave = new EventEmitter<void>();\n\n @Output()\n public mouseDown = new EventEmitter<void>();\n\n public get isCurrentMonth(): boolean {\n return areSameMonth(this.date, this.viewDate);\n }\n\n public get isPreviousMonth(): boolean {\n return isPreviousMonth(this.date, this.viewDate);\n }\n\n public get isNextMonth(): boolean {\n return isNextMonth(this.date, this.viewDate);\n }\n\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n @Input({ transform: booleanAttribute })\n @HostBinding('class.igx-days-view__date--active')\n public isActive = false;\n\n @HostBinding('class.igx-days-view__date--selected')\n public get isSelectedCSS(): boolean {\n const selectable =\n !this.isInactive || this.isWithinPreviewRange ||\n (this.isWithinRange && this.selection === \"range\");\n return !this.isDisabled && selectable && this.selected;\n }\n\n @HostBinding('class.igx-days-view__date--inactive')\n public get isInactive(): boolean {\n return !this.isCurrentMonth;\n }\n\n @HostBinding('class.igx-days-view__date--hidden')\n public get isHidden(): boolean {\n return (this.hideLeading || this.hideTrailing) && this.isInactive;\n }\n\n @HostBinding('class.igx-days-view__date--current')\n public get isToday(): boolean {\n return !this.isInactive && this.date.equalTo(CalendarDay.today);\n }\n\n @HostBinding('class.igx-days-view__date--weekend')\n public get isWeekend(): boolean {\n return this.date.weekend;\n }\n\n public get isDisabled(): boolean {\n if (!this.disabledDates) {\n return false;\n }\n\n return isDateInRanges(this.date, this.disabledDates);\n }\n\n public get isFocusable(): boolean {\n return this.isCurrentMonth && !this.isHidden && !this.isDisabled;\n }\n\n protected onMouseEnter() {\n this.mouseEnter.emit();\n }\n\n protected onMouseLeave() {\n this.mouseLeave.emit();\n }\n\n protected onMouseDown(event: MouseEvent) {\n event.preventDefault();\n this.mouseDown.emit();\n }\n\n @HostBinding('class.igx-days-view__date--range')\n public get isWithinRangeCSS(): boolean {\n return !this.isSingleSelection && this.isWithinRange;\n }\n\n @HostBinding('class.igx-days-view__date--range-preview')\n public get isWithinPreviewRangeCSS(): boolean {\n return !this.isSingleSelection && this.isWithinPreviewRange;\n }\n\n @HostBinding('class.igx-days-view__date--special')\n public get isSpecial(): boolean {\n if (!this.specialDates) {\n return false;\n }\n\n return !this.isInactive && isDateInRanges(this.date, this.specialDates);\n }\n\n @HostBinding('class.igx-days-view__date--disabled')\n public get isDisabledCSS(): boolean {\n return this.isHidden || this.isDisabled;\n }\n\n @HostBinding('class.igx-days-view__date--single')\n public get isSingleSelection(): boolean {\n return this.selection !== CalendarSelection.RANGE;\n }\n\n private _selected = false;\n}\n","<span\n aria-hidden=\"true\"\n class=\"igx-days-view__date-inner\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (mousedown)=\"onMouseDown($event)\"\n>\n <ng-content></ng-content>\n</span>\n","import { Injectable, ElementRef, NgZone, inject } from \"@angular/core\";\nimport { EventManager } from \"@angular/platform-browser\";\nimport { PlatformUtil } from 'igniteui-angular/core';\n\n@Injectable()\nexport class KeyboardNavigationService {\n private eventManager = inject(EventManager);\n private ngZone = inject(NgZone);\n\n private keyHandlers = new Map<string, (event: KeyboardEvent) => void>();\n private eventUnsubscribeFn: Function | null = null;\n private platform = inject(PlatformUtil);\n\n public attachKeyboardHandlers(elementRef: ElementRef, context: any) {\n if (!this.platform.isBrowser) {\n return this;\n }\n\n this.detachKeyboardHandlers(); // Clean up any existing listeners\n\n this.ngZone.runOutsideAngular(() => {\n this.eventUnsubscribeFn = this.eventManager.addEventListener(\n elementRef.nativeElement,\n 'keydown',\n (event: KeyboardEvent) => {\n const handler = this.keyHandlers.get(event.key);\n\n if (handler) {\n this.ngZone.run(handler.bind(context, event));\n }\n }\n );\n });\n\n return this;\n }\n\n public detachKeyboardHandlers() {\n if (this.eventUnsubscribeFn) {\n this.eventUnsubscribeFn();\n this.eventUnsubscribeFn = null;\n }\n\n this.keyHandlers.clear();\n }\n\n public set(key : string, handler: (event: KeyboardEvent) => void) {\n this.keyHandlers.set(key, handler);\n return this;\n }\n\n public unset(key: string) {\n this.keyHandlers.delete(key);\n return this;\n }\n}\n","import { Input, Output, EventEmitter, Directive, LOCALE_ID, HostListener, booleanAttribute, ViewChildren, QueryList, ElementRef, ChangeDetectorRef, inject } from '@angular/core';\nimport { IFormattingOptions, IFormattingViews, IViewDateChangeEventArgs, ScrollDirection, IgxCalendarView, CalendarSelection } from './calendar';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { noop, Subject } from 'rxjs';\nimport {\n isDate,\n isEqual,\n PlatformUtil,\n DateRangeDescriptor,\n DateTimeUtil,\n CalendarResourceStringsEN,\n ICalendarResourceStrings,\n getCurrentResourceStrings,\n CalendarDay,\n getYearRange,\n isDateInRanges,\n WEEKDAYS\n} from 'igniteui-angular/core';\nimport { getLocaleFirstDayOfWeek } from \"@angular/common\";\nimport { KeyboardNavigationService } from './calendar.services';\n\n/** @hidden @internal */\n@Directive({\n selector: '[igxCalendarBase]',\n standalone: true,\n providers: [KeyboardNavigationService]\n})\nexport class IgxCalendarBaseDirective implements ControlValueAccessor {\n protected platform = inject(PlatformUtil);\n protected _localeId = inject(LOCALE_ID);\n protected keyboardNavigation? = inject(KeyboardNavigationService);\n protected cdr? = inject(ChangeDetectorRef);\n\n /**\n * Holds month view index we are operating on.\n */\n protected activeViewIdx = 0;\n\n /**\n * @hidden\n */\n private _activeView: IgxCalendarView = IgxCalendarView.Month;\n\n /**\n * @hidden\n */\n private activeViewSubject = new Subject<IgxCalendarView>();\n\n /**\n * @hidden\n */\n protected activeView$ = this.activeViewSubject.asObservable();\n\n /**\n * Sets/gets whether the outside dates (dates that are out of the current month) will be hidden.\n * Default value is `false`.\n * ```html\n * <igx-calendar [hideOutsideDays]=\"true\"></igx-calendar>\n * ```\n * ```typescript\n * let hideOutsideDays = this.calendar.hideOutsideDays;\n * ```\n */\n\n @Input({ transform: booleanAttribute })\n public hideOutsideDays = false;\n\n /**\n * Emits an event when a date is selected.\n * Provides reference the `selectedDates` property.\n */\n @Output()\n public selected = new EventEmitter<Date | Date[]>();\n\n /**\n * Emits an event when the month in view is changed.\n * ```html\n * <igx-calendar (viewDateChanged)=\"viewDateChanged($event)\"></igx-calendar>\n * ```\n * ```typescript\n * public viewDateChanged(event: IViewDateChangeEventArgs) {\n * let viewDate = event.currentValue;\n * }\n * ```\n */\n @Output()\n public viewDateChanged = new EventEmitter<IViewDateChangeEventArgs>();\n\n /**\n * Emits an event when the active view is changed.\n * ```html\n * <igx-calendar (activeViewChanged)=\"activeViewChanged($event)\"></igx-calendar>\n * ```\n * ```typescript\n * public activeViewChanged(event: CalendarView) {\n * let activeView = event;\n * }\n * ```\n */\n @Output()\n public activeViewChanged = new EventEmitter<IgxCalendarView>();\n\n /**\n * @hidden\n */\n public rangeStarted = false;\n\n /**\n * @hidden\n */\n public pageScrollDirection = ScrollDirection.NONE;\n\n /**\n * @hidden\n */\n public scrollPage$ = new Subject<void>();\n\n /**\n * @hidden\n */\n public stopPageScroll$ = new Subject<boolean>();\n\n /**\n * @hidden\n */\n public startPageScroll$ = new Subject<void>();\n\n /**\n * @hidden\n */\n public selectedDates: Date[];\n\n /**\n * @hidden\n */\n public shiftKey = false;\n\n /**\n * @hidden\n */\n public lastSelectedDate: Date;\n\n /**\n * @hidden\n */\n protected formatterWeekday: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterDay: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterMonth: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterYear: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterMonthday: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected formatterRangeday: Intl.DateTimeFormat;\n\n /**\n * @hidden\n */\n protected _onTouchedCallback: () => void = noop;\n /**\n * @hidden\n */\n protected _onChangeCallback: (_: Date | Date[]) => void = noop;\n\n /**\n * @hidden\n */\n protected _deselectDate: boolean;\n\n /**\n * @hidden\n */\n private initialSelection: Date | Date[];\n\n /**\n * @hidden\n */\n private _locale: string;\n\n /**\n * @hidden\n */\n private _weekStart: WEEKDAYS | number;\n\n /**\n * @hidden\n */\n private _viewDate: Date;\n\n /**\n * @hidden\n */\n private _startDate: Date;\n\n /**\n * @hidden\n */\n private _endDate: Date;\n\n /**\n * @hidden\n */\n private _disabledDates: DateRangeDescriptor[] = [];\n\n /**\n * @hidden\n */\n private _specialDates: DateRangeDescriptor[] = [];\n\n /**\n * @hidden\n */\n private _selection: CalendarSelection | string = CalendarSelection.SINGLE;\n\n /** @hidden @internal */\n private _resourceStrings = getCurrentResourceStrings(CalendarResourceStringsEN);\n\n /**\n * @hidden\n */\n private _formatOptions: IFormattingOptions = {\n day: 'numeric',\n month: 'long',\n weekday: 'narrow',\n year: 'numeric'\n };\n\n /**\n * @hidden\n */\n private _formatViews: IFormattingViews = {\n day: false,\n month: true,\n year: false\n };\n\n /**\n * An accessor that sets the resource strings.\n * By default it uses EN resources.\n */\n @Input()\n public set resourceStrings(value: ICalendarResourceStrings) {\n this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n }\n\n /**\n * An accessor that returns the resource strings.\n */\n public get resourceStrings(): ICalendarResourceStrings {\n return this._resourceStrings;\n }\n\n /**\n * Gets the start day of the week.\n * Can return a numeric or an enum representation of the week day.\n * If not set, defaults to the first day of the week for the application locale.\n */\n @Input()\n public get weekStart(): WEEKDAYS | number {\n return this._weekStart;\n }\n\n /**\n * Sets the start day of the week.\n * Can be assigned to a numeric value or to `WEEKDAYS` enum value.\n */\n public set weekStart(value: WEEKDAYS | number) {\n this._weekStart = value;\n }\n\n /**\n * Gets the `locale` of the calendar.\n * If not set, defaults to application's locale.\n */\n @Input()\n public get locale(): string {\n return this._locale;\n }\n\n /**\n * Sets the `locale` of the calendar.\n * Expects a valid BCP 47 language tag.\n */\n public set locale(value: string) {\n this._locale = value;\n\n // if value is not a valid BCP 47 tag, set it back to _localeId\n try {\n getLocaleFirstDayOfWeek(this._locale);\n } catch (e) {\n this._locale = this._localeId;\n }\n\n // changing locale runtime needs to update the `weekStart` too, if `weekStart` is not explicitly set\n if (!this.weekStart) {\n this.weekStart = getLocaleFirstDayOfWeek(this._locale);\n }\n\n this.initFormatters();\n }\n\n /**\n * Gets the date format options of the views.\n */\n @Input()\n public get formatOptions(): IFormattingOptions {\n return this._formatOptions;\n }\n\n /**\n * Sets the date format options of the views.\n * Default is { day: 'numeric', month: 'short', weekday: 'short', year: 'numeric' }\n */\n public set formatOptions(formatOptions: IFormattingOptions) {\n this._formatOptions = {...this._formatOptions, ...formatOptions};\n this.initFormatters();\n }\n\n /**\n * Gets whether the `day`, `month` and `year` should be rendered\n * according to the locale and formatOptions, if any.\n */\n @Input()\n public get formatViews(): IFormattingViews {\n return this._formatViews;\n }\n\n /**\n * Sets whether the `day`, `month` and `year` should be rendered\n * according to the locale and formatOptions, if any.\n */\n public set formatViews(formatViews: IFormattingViews) {\n this._formatViews = Object.assign(this._formatViews, formatViews);\n }\n\n /**\n * Gets the current active view.\n * ```typescript\n * this.activeView = calendar.activeView;\n * ```\n */\n @Input()\n public get activeView(): IgxCalendarView {\n return this._activeView;\n }\n\n /**\n * Sets the current active view.\n * ```html\n * <igx-calendar [activeView]=\"year\" #calendar></igx-calendar>\n * ```\n * ```typescript\n * calendar.activeView = IgxCalendarView.YEAR;\n * ```\n */\n public set activeView(val: IgxCalendarView) {\n this._activeView = val;\n this.activeViewSubject.next(val);\n }\n\n /**\n * @hidden\n */\n public get isDefaultView(): boolean {\n return this._activeView === IgxCalendarView.Month;\n }\n\n /**\n * @hidden\n */\n public get isDecadeView(): boolean {\n return this._activeView === IgxCalendarView.Decade;\n }\n\n /**\n * @hidden\n */\n public activeViewDecade(activeViewIdx = 0): void {\n this.activeView = IgxCalendarView.Decade;\n this.activeViewIdx = activeViewIdx;\n }\n\n /**\n * @hidden\n */\n public activeViewDecadeKB(event: KeyboardEvent, activeViewIdx = 0) {\n event.stopPropagation();\n\n if (this.platform.isActivationKey(event)) {\n event.preventDefault();\n this.activeViewDecade(activeViewIdx);\n }\n }\n\n /**\n * @hidden\n */\n @ViewChildren('yearsBtn')\n public yearsBtns: QueryList<ElementRef>;\n\n /**\n * @hidden @internal\n */\n public previousViewDate: Date;\n\n /**\n * @hidden\n */\n public changeYear(date: Date) {\n this.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('month', -this.activeViewIdx).native;\n this.activeView = IgxCalendarView.Month;\n }\n\n /**\n * Returns the locale representation of the year in the year view if enabled,\n * otherwise returns the default `Date.getFullYear()` value.\n *\n * @hidden\n */\n public formattedYear(value: Date | Date[]): string {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn;\n\t\t}\n\n if (this.formatViews.year) {\n return this.formatterYear.format(value);\n }\n\n\t return `${value.getFullYear()}`;\n }\n\n\tpublic formattedYears(value: Date) {\n\t\tconst dates = value as unknown as Date[];\n\t\treturn dates.map(date => this.formattedYear(date)).join(' - ');\n\t}\n\n protected prevNavLabel(detail?: string): string {\n switch (this.activeView) {\n case 'month':\n return `${this.resourceStrings.igx_calendar_previous_month}, ${detail}`\n case 'year':\n return this.resourceStrings.igx_calendar_previous_year;\n case 'decade':\n return this.resourceStrings.igx_calendar_previous_years.replace('{0}', '15');\n }\n }\n\n protected nextNavLabel(detail?: string): string {\n switch (this.activeView) {\n case 'month':\n return `${this.resourceStrings.igx_calendar_next_month}, ${detail}`\n case 'year':\n return this.resourceStrings.igx_calendar_next_year;\n case 'decade':\n return this.resourceStrings.igx_calendar_next_years.replace('{0}', '15');\n }\n }\n\n\tprotected getDecadeRange(): { start: string; end: string } {\n const range = getYearRange(this.viewDate, 15);\n const start = CalendarDay.from(this.viewDate).set({ date: 1, year: range.start });\n const end = CalendarDay.from(this.viewDate).set({ date: 1, year: range.end });\n\n\t\treturn {\n\t\t\tstart: this.formatterYear.format(start.native),\n\t\t\tend: this.formatterYear.format(end.native)\n\t\t}\n\t}\n /**\n *\n * Gets the selection type.\n * Default value is `\"single\"`.\n * Changing the type of selection resets the currently\n * selected values if any.\n */\n @Input()\n public get selection(): string {\n return this._selection;\n }\n\n /**\n * Sets the selection.\n */\n public set selection(value: string) {\n switch (value) {\n case CalendarSelection.SINGLE:\n this.selectedDates = null;\n break;\n case CalendarSelection.MULTI:\n case CalendarSelection.RANGE:\n this.selectedDates = [];\n break;\n default:\n throw new Error('Invalid selection value');\n }\n this._onChangeCallback(this.selectedDates);\n this.rangeStarted = false;\n this._selection = value;\n }\n\n /**\n * Gets the date that is presented. By default it is the current date.\n */\n @Input()\n public get viewDate(): Date {\n return this._viewDate;\n }\n\n /**\n * Sets the date that will be presented in the default view when the component renders.\n */\n public set viewDate(value: Date | string) {\n if (Array.isArray(value)) {\n return;\n }\n\n if (typeof value === 'string') {\n value = DateTimeUtil.parseIsoDate(value);\n }\n\n const validDate = this.validateDate(value);\n\n if (this._viewDate) {\n this.initialSelection = validDate;\n }\n\n const date = this.getDateOnly(validDate).setDate(1);\n this._viewDate = new Date(date);\n }\n\n /**\n * Gets the disabled dates descriptors.\n */\n @Input()\n public get disabledDates(): DateRangeDescriptor[] {\n return this._disabledDates;\n }\n\n /**\n * Sets the disabled dates' descriptors.\n * ```typescript\n * @ViewChild(\"MyCalendar\")\n * public calendar: IgxCalendarComponent;\n * ngOnInit(){\n * this.calendar.disabledDates = [\n * {type: DateRangeType.Between, dateRange: [new Date(\"2020-1-1\"), new Date(\"2020-1-15\")]},\n * {type: DateRangeType.Weekends}];\n * }\n * ```\n */\n public set disabledDates(value: DateRangeDescriptor[]) {\n this._disabledDates = value;\n }\n\n /**\n * Checks whether a date is disabled.\n *\n * @hidden\n */\n public isDateDisabled(date: Date | string) {\n if (!this.disabledDates) {\n return false;\n }\n\n if (typeof date === 'string') {\n date = DateTimeUtil.parseIsoDate(date);\n }\n\n return isDateInRanges(date, this.disabledDates);\n }\n\n /**\n * Gets the special dates descriptors.\n */\n @Input()\n public get specialDates(): DateRangeDescriptor[] {\n return this._specialDates;\n }\n\n /**\n * Sets the special dates' descriptors.\n * ```typescript\n * @ViewChild(\"MyCalendar\")\n * public calendar: IgxCalendarComponent;\n * ngOnInit(){\n * this.calendar.specialDates = [\n * {type: DateRangeType.Between, dateRange: [new Date(\"2020-1-1\"), new Date(\"2020-1-15\")]},\n * {type: DateRangeType.Weekends}];\n * }\n * ```\n */\n public set specialDates(value: DateRangeDescriptor[]) {\n this._specialDates = value;\n }\n\n /**\n * Gets the selected date(s).\n *\n * When selection is set to `single`, it returns\n * a single `Date` object.\n * Otherwise it is an array of `Date` objects.\n */\n @Input()\n public get value(): Date | Date[] {\n if (this.selection === CalendarSelection.SINGLE) {\n return this.selectedDates?.at(0);\n }\n\n return this.selectedDates;\n }\n\n /**\n * Sets the selected date(s).\n *\n * When selection is set to `single`, it accepts\n * a single `Date` object.\n * Otherwise it is an array of `Date` objects.\n */\n public set value(value: Date | Date[] | string) {\n // Validate the date if it is of type string and it is IsoDate\n if (typeof value === 'string') {\n value = DateTimeUtil.parseIsoDate(value);\n }\n\n // Check if value is set initially by the user,\n // if it's not set the initial selection to the current date\n if (!value || (Array.isArray(value) && value.length === 0)) {\n this.initialSelection = new Date();\n return;\n }\n\n // Value is provided, but there's no initial selection, set the initial selection to the passed value\n if (!this.initialSelection) {\n this.viewDate = Array.isArray(value) ? new Date(Math.min(...value as unknown as number[])) : value;\n }\n\n // we then call selectDate with either a single date or an array of dates\n // we also set the initial selection to the provided value\n this.selectDate(value);\n this.initialSelection = value;\n }\n\n /**\n * @hidden\n */\n constructor() {\n const _localeId = this._localeId;\n\n this.locale = _localeId;\n this.viewDate = this.viewDate ? this.viewDate : new Date();\n this.initFormatters();\n }\n\n /**\n * Multi/Range selection with shift key\n *\n * @hidden\n * @internal\n */\n @HostListener('pointerdown', ['$event'])\n public onPointerdown(event: MouseEvent) {\n this.shiftKey = event.button === 0 && event.shiftKey;\n }\n\n /**\n * @hidden\n */\n public registerOnChange(fn: (v: Date | Date[]) => void) {\n this._onChangeCallback = fn;\n }\n\n /**\n * @hidden\n */\n public registerOnTouched(fn: () => void) {\n this._onTouchedCallback = fn;\n }\n\n /**\n * @hidden\n */\n public writeValue(value: Date | Date[]) {\n this.value = value;\n }\n\n /**\n * Selects date(s) (based on the selection type).\n */\n public selectDate(value: Date | Date[] | string) {\n if (typeof value === 'string') {\n value = DateTimeUtil.parseIsoDate(value);\n }\n\n if (value === null || value === undefined || (Array.isArray(value) && value.length === 0)) {\n return;\n }\n\n switch (this.selection) {\n case CalendarSelection.SINGLE:\n if (isDate(value)) {\n this.selectSingle(value as Date);\n }\n break;\n case CalendarSelection.MULTI:\n this.selectMultiple(value);\n break;\n case CalendarSelection.RANGE:\n this.selectRange(value);\n break;\n }\n }\n\n /**\n * Deselects date(s) (based on the selection type).\n */\n public deselectDate(value?: Date | Date[] | string) {\n if (!this.selectedDates || this.selectedDates.length === 0) {\n return;\n }\n\n if (typeof value === 'string') {\n value = DateTimeUtil.parseIsoDate(value);\n }\n\n if (value === null || value === undefined) {\n this.selectedDates = this.selection === CalendarSelection.SINGLE ? null : [];\n this.rangeStarted = false;\n this._onChangeCallback(this.selectedDates);\n return;\n }\n\n switch (this.selection) {\n case CalendarSelection.SINGLE:\n this.deselectSingle(value as Date);\n break;\n case CalendarSelection.MULTI:\n this.deselectMultiple(value as Date[]);\n break;\n case CalendarSelection.RANGE:\n this.deselectRange(value as Date[]);\n break;\n }\n }\n\n /**\n * Performs a single selection.\n *\n * @hidden\n */\n private selectSingle(value: Date) {\n if (!isEqual(this.selectedDates?.at(0), value)) {\n this.selectedDates = [this.getDateOnly(value)];\n this._onChangeCallback(this.selectedDates.at(0));\n }\n }\n\n /**\n * Performs a single deselection.\n *\n * @hidden\n */\n private deselectSingle(value: Date) {\n if (this.selectedDates !== null &&\n this.getDateOnlyInMs(value as Date) === this.getDateOnlyInMs(this.selectedDates.at(0))) {\n this.selectedDates = null;\n this._onChangeCallback(this.selectedDates);\n }\n }\n\n /**\n * Performs a multiple selection\n *\n * @hidden\n */\n private selectMultiple(value: Date | Date[]) {\n if (Array.isArray(value)) {\n const newDates = value.map(v => this.getDateOnly(v).getTime());\n const selDates = this.selectedDates.map(v => this.getDateOnly(v).getTime());\n\n if (JSON.stringify(newDates) === JSON.stringify(selDates)) {\n return;\n }\n\n if (selDates.length === 0 || selDates.length > newDates.length) {\n // deselect the dates that are part of currently selectedDates and not part of updated new values\n this.selectedDates = newDates.map(v => new Date(v));\n } else {\n this.selectedDates = Array.from(new Set([...newDates, ...selDates])).map(v => new Date(v));\n }\n } else {\n let newSelection = [];\n\n if (this.shiftKey && this.lastSelectedDate) {\n\n [this._startDate, this._endDate] = this.lastSelectedDate.getTime() < value.getTime()\n ? [this.lastSelectedDate, value]\n : [value, this.lastSelectedDate];\n\n const unselectedDates = [this._startDate, ...this.generateDateRange(this._startDate, this._endDate)]\n .filter(date => this.selectedDates.every((d: Date) => d.getTime() !== date.getTime()));\n\n // select all dates from last selected to shift clicked date\n if (this.selectedDates.some((date: Date) => date.getTime() === this.lastSelectedDate.getTime())\n && unselectedDates.length) {\n\n newSelection = unselectedDates;\n } else {\n // delesect all dates from last clicked to shift clicked date (excluding)\n this.selectedDates = this.selectedDates.filter((date: Date) =>\n date.getTime() < this._startDate.getTime() || date.getTime() > this._endDate.getTime()\n );\n\n this.selectedDates.push(value);\n this._deselectDate = true;\n }\n\n this._startDate = this._endDate = undefined;\n\n } else if (this.selectedDates.every((date: Date) => date.getTime() !== value.getTime())) {\n newSelection.push(value);\n\n } else {\n this.selectedDates = this.selectedDates.filter(\n (date: Date) => date.getTime() !== value.getTime()\n );\n\n this._deselectDate = true;\n }\n\n if (newSelection.length > 0) {\n this.selectedDates = this.selectedDates.concat(newSelection);\n this._deselectDate = false;\n }\n\n this.lastSelectedDate = value;\n }\n\n this.selectedDates = this.selectedDates.filter(d => !this.isDateDisabled(d));\n this.selectedDates.sort((a: Date, b: Date) => a.valueOf() - b.valueOf());\n this._onChangeCallback(this.selectedDates);\n }\n\n /**\n * Performs a multiple deselection.\n *\n * @hidden\n */\n private deselectMultiple(value: Date[]) {\n value = value.filter(v => v !== null);\n const selectedDatesCount = this.selectedDates.length;\n const datesInMsToDeselect: Set<number> = new Set<number>(\n value.map(v => this.getDateOnlyInMs(v)));\n\n for (let i = this.selectedDates.length - 1; i >= 0; i--) {\n if (datesInMsToDeselect.has(this.getDateOnlyInMs(this.selectedDates[i]))) {\n this.selectedDates.splice(i, 1);\n }\n }\n\n if (this.selectedDates.length !== selectedDatesCount) {\n this._onChangeCallback(this.selectedDates);\n }\n }\n\n /**\n * @hidden\n */\n private selectRange(value: Date | Date[], excludeDisabledDates = false) {\n if (Array.isArray(value)) {\n value.sort((a: Date, b: Date) => a.valueOf() - b.valueOf());\n this._startDate = this.getDateOnly(value[0]);\n this._endDate = this.getDateOnly(value[value.length - 1]);\n } else {\n\n if (this.shiftKey && this.lastSelectedDate) {\n\n if (this.lastSelectedDate.getTime() === value.getTime()) {\n this.selectedDates = this.selectedDates.length === 1 ? [] : [value];\n this.rangeStarted = !!this.selectedDates.length;\n this._onChangeCallback(this.selectedDates);\n return;\n }\n\n // shortens the range when selecting a date inside of it\n if (this.selectedDates.some((date: Date) => date.getTime() === value.getTime())) {\n\n this.lastSelectedDate.getTime() < value.getTime()\n ? this._startDate = value\n : this._endDate = value;\n\n } else {\n // extends the range when selecting a date outside of it\n // allows selection from last deselected to current selected date\n if (this.lastSelectedDate.getTime() < value.getTime()) {\n this._startDate = this._startDate ?? this.lastSelectedDate;\n this._endDate = value;\n } else {\n this._startDate = value;\n this._endDate = this._endDate ?? this.lastSelectedDate;\n }\n }\n\n this.rangeStarted = false;\n\n } else if (!this.rangeStarted) {\n this.rangeStarted = true;\n this.selectedDates = [value];\n this._startDate = this._endDate = undefined;\n } else {\n this.rangeStarted = false;\n\n if (this.selectedDates?.at(0)?.getTime() === value.getTime()) {\n this.selectedDates = [];\n this._onChangeCallback(this.selectedDates);\n return;\n }\n\n [this._startDate, this._endDate] = this.lastSelectedDate.getTime() < value.getTime()\n ? [this.lastSelectedDate, value]\n : [value, this.lastSelectedDate];\n }\n\n this.lastSelectedDate = value;\n }\n\n if (this._startDate && this._endDate) {\n this.selectedDates = [this._startDate, ...this.generateDateRange(this._startDate, this._endDate)];\n }\n\n if (excludeDisabledDates) {\n this.selectedDates = this.selectedDates.filter(d => !this.isDateDisabled(d));\n }\n\n this._onChangeCallback(this.selectedDates);\n }\n\n /**\n * Performs a range deselection.\n *\n * @hidden\n */\n private deselectRange(value: Date[]) {\n value = value.filter(v => v !== null);\n\n if (value.length < 1) {\n return;\n }\n\n value.sort((a: Date, b: Date) => a.valueOf() - b.valueOf());\n\n const valueStart = this.getDateOnlyInMs(value[0]);\n const valueEnd = this.getDateOnlyInMs(value[value.length - 1]);\n\n this.selectedDates.sort((a: Date, b: Date) => a.valueOf() - b.valueOf());\n\n const selectedDatesStart = this.getDateOnlyInMs(this.selectedDates[0]);\n const selectedDatesEnd = this.getDateOnlyInMs(this.selectedDates[this.selectedDates.length - 1]);\n\n if (!(valueEnd < selectedDatesStart) && !(valueStart > selectedDatesEnd)) {\n this.selectedDates = [];\n this.rangeStarted = false;\n this._onChangeCallback(this.selectedDates);\n }\n }\n\n /**\n * @hidden\n */\n protected initFormatters() {\n this.formatterDay = new Intl.DateTimeFormat(this._locale, { day: this._formatOptions.day });\n this.formatterWeekday = new Intl.DateTimeFormat(this._locale, { weekday: this._formatOptions.weekday });\n this.formatterMonth = new Intl.DateTimeFormat(this._locale, { month: this._formatOptions.month });\n this.formatterYear = new Intl.DateTimeFormat(this._locale, { year: this._formatOptions.year });\n this.formatterMonthday = new Intl.DateTimeFormat(this._locale, { month: this._formatOptions.month, day: this._formatOptions.day });\n\t\tthis.formatterRangeday = new Intl.DateTimeFormat(this._locale, { day: this._formatOptions.day, month: 'short' });\n }\n\n /**\n * @hidden\n */\n protected getDateOnly(date: Date) {\n const validDate = this.validateDate(date);\n return new Date(validDate.getFullYear(), validDate.getMonth(), validDate.getDate());\n }\n\n /**\n * @hidden\n */\n private getDateOnlyInMs(date: Date) {\n return this.getDateOnly(date).getTime();\n }\n\n /**\n * @hidden\n */\n private generateDateRange(start: Date, end: Date): Date[] {\n const result = [];\n start = this.getDateOnly(start);\n end = this.getDateOnly(end);\n\n while (start.getTime() < end.getTime()) {\n start = CalendarDay.from(start).add('day', 1).native;\n result.push(start);\n }\n\n return result;\n }\n\n private validateDate(value: Date) {\n return DateTimeUtil.isValidDate(value) ? value : new Date();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IFormattingViews } from \"./calendar\";\n\n@Pipe({\n name: 'dayDigit',\n standalone: true\n})\nexport class DayDigitPipe implements PipeTransform {\n public transform(value: string, formatViews: IFormattingViews): string {\n if (!value) {\n return '';\n }\n\n // strip non-numeric characters that might have been added by the locale formatter (e.g., \"25日\" -> \"25\").\n if (formatViews.day) {\n // Use regex to extract the numeric day value.\n // This handles locales that include non-numeric characters (e.g. '25日' in zh-CN).\n // match(/\\d+/) is preferred over parseInt() as it robustly finds the digits regardless\n // of their position (prefix/suffix) in the localized string.\n const match = value.match(/\\d+/);\n return match ? match[0] : value;\n }\n\n return value;\n }\n}\n","import {\n Component,\n Output,\n EventEmitter,\n Input,\n HostListener,\n ViewChildren,\n QueryList,\n HostBinding,\n booleanAttribute,\n ElementRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n inject,\n DestroyRef,\n AfterContentChecked\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TitleCasePipe } from '@angular/common';\nimport { CalendarSelection, ScrollDirection } from '../../calendar/calendar';\nimport { IgxDayItemComponent } from './day-item.component';\nimport {\n CalendarDay,\n DateRangeType,\n areSameMonth,\n generateMonth,\n getClosestActiveDate,\n getNextActiveDate,\n getPreviousActiveDate,\n intoChunks,\n isDateInRanges,\n getComponentTheme,\n IgxTheme,\n THEME_TOKEN,\n ThemeToken\n} from 'igniteui-angular/core';\nimport { IgxCalendarBaseDirective } from '../calendar-base';\nimport { IViewChangingEventArgs } from './days-view.interface';\nimport { KeyboardNavigationService } from '../calendar.services';\nimport { DayDigitPipe } from \"../day-digit.pipe\";\n\nlet NEXT_ID = 0;\n\n@Component({\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxDaysViewComponent\n },\n KeyboardNavigationService\n ],\n selector: 'igx-days-view',\n templateUrl: 'days-view.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IgxDayItemComponent, TitleCasePipe, DayDigitPipe]\n})\nexport class IgxDaysViewComponent extends IgxCalendarBaseDirective implements AfterContentChecked {\n protected el = inject(ElementRef);\n public override cdr = inject(ChangeDetectorRef);\n private themeToken: ThemeToken = inject(THEME_TOKEN);\n #standalone = true;\n\n /**\n * Sets/gets the `id` of the days view.\n * If not set, the `id` will have value `\"igx-days-view-0\"`.\n * ```html\n * <igx-days-view id=\"my-days-view\"></igx-days-view>\n * ```\n * ```typescript\n * let daysViewId = this.daysView.id;\n * ```\n */\n @HostBinding('attr.id')\n @Input()\n public id = `igx-days-view-${NEXT_ID++}`;\n\n @HostBinding('attr.tabIndex')\n @Input()\n public tabIndex = 0;\n\n @HostBinding('attr.role')\n @Input()\n public role = 'grid';\n\n\t@HostBinding('class.igx-days-view')\n\tpublic readonly viewClass = true;\n\n @Input()\n\t@HostBinding('class.igx-days-view--standalone')\n\tpublic get standalone() {\n return this.#standalone;\n }\n\n\tpublic set standalone(value: boolean) {\n this.#standalone = value;\n }\n\n @HostBinding('attr.aria-activeDescendant')\n protected get activeDescendant() {\n if (this.tabIndex === -1) return;\n\n return this.activeDate.getTime();\n }\n\n /**\n * Show/hide week numbers\n *\n * @example\n * ```html\n * <igx-days-view [showWeekNumbers]=\"true\"></igx-days-view>\n * ``\n */\n @Input({ transform: booleanAttribute })\n public showWeekNumbers: boolean;\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public set activeDate(value: Date) {\n this._activeDate = value;\n this.changePreviewRange(value);\n this.activeDateChange.emit(this._activeDate);\n }\n\n public get activeDate(): Date {\n return this._activeDate ?? this.viewDate;\n }\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public set previewRangeDate(value: Date) {\n this._previewRangeDate = value;\n this.previewRangeDateChange.emit(value);\n }\n\n public get previewRangeDate() {\n return this._previewRangeDate;\n }\n\n @Input({ transform: booleanAttribute })\n public set hideLeadingDays(value: boolean) {\n this._hideLeadingDays = value;\n this.cdr.detectChanges();\n }\n\n public get hideLeadingDays() {\n return this._hideLeadingDays ?? this.hideOutsideDays;\n }\n\n @Input({ transform: booleanAttribute })\n public set hideTrailingDays(value: boolean) {\n this._hideTrailingDays = value;\n this.cdr.detectChanges();\n }\n\n public get hideTrailingDays() {\n return this._hideTrailingDays ?? this.hideOutsideDays;\n }\n\n @Input({ transform: booleanAttribute })\n public set showActiveDay(value: boolean) {\n this._showActiveDay = value;\n }\n\n public get showActiveDay() {\n return this._showActiveDay;\n }\n\n /**\n * @hidden\n */\n @Output()\n public dateSelected = new EventEmitter<Date>();\n\n /**\n * @hidden\n */\n @Output()\n public pageChanged = new EventEmitter<IViewChangingEventArgs>();\n\n /**\n * @hidden\n */\n @Output()\n public activeDateChange = new EventEmitter<Date>();\n\n /**\n * @hidden\n */\n @Output()\n public previewRangeDateChange = new EventEmitter<any>();\n\n /**\n * @hidden\n */\n @ViewChildren(IgxDayItemComponent, { read: IgxDayItemComponent })\n public dates: QueryList<IgxDayItemComponent>;\n\n private _activeDate: Date;\n private _previewRangeDate: Date;\n private _hideLeadingDays: boolean;\n private _hideTrailingDays: boolean;\n private _showActiveDay: boolean;\n\n private _destroyRef = inject(DestroyRef);\n private _theme: IgxTheme;\n\n @HostBinding('class.igx-days-view')\n public defaultClass = true;\n\n // Theme-specific classes\n @HostBinding('class.igx-days-view--material')\n protected get isMaterial(): boolean {\n return this._theme === 'material';\n }\n\n @HostBinding('class.igx-days-view--fluent')\n protected get isFluent(): boolean {\n return this._theme === 'fluent';\n }\n\n @HostBinding('class.igx-days-view--bootstrap')\n protected get isBootstrap(): boolean {\n return this._theme === 'bootstrap';\n }\n\n @HostBinding('class.igx-days-view--indigo')\n protected get isIndigo(): boolean {\n return this._theme === 'indigo';\n }\n\n /**\n * @hidden\n */\n constructor() {\n super();\n this._theme = this.themeToken.theme;\n\n const themeChange = this.themeToken.onChange((theme) => {\n if (this._theme !== theme) {\n this._theme = theme;\n this.cdr.detectChanges();\n }\n });\n\n this._destroyRef.onDestroy(() => themeChange.unsubscribe());\n }\n\n private setComponentTheme() {\n // allow DOM theme override (same pattern as input-group)\n if (!this.themeToken.preferToken) {\n const theme = getComponentTheme(this.el.nativeElement);\n\n if (theme && theme !== this._theme) {\n this._theme = theme;\n this.cdr.markForCheck();\n }\n }\n }\n\n public ngAfterContentChecked() {\n this.setComponentTheme();\n }\n\n /**\n * @hidden\n */\n private handleArrowKeydown(event: KeyboardEvent, delta: number) {\n event.preventDefault();\n event.stopPropagation();\n\n const date = getClosestActiveDate(\n CalendarDay.from(this.activeDate),\n delta,\n this.disabledDates,\n );\n\n if (!areSameMonth(this.activeDate, date.native)) {\n this.pageChanged.emit({\n monthAction: delta > 0 ? ScrollDirection.NEXT : ScrollDirection.PREV,\n key: event.key,\n nextDate: date.native\n });\n }\n\n this.activeDate = date.native;\n this.viewDate = date.native;\n this.clearPreviewRange();\n this.changePreviewRange(date.native);\n this.cdr.detectChanges();\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.arrowright', ['$event'])\n protected onArrowRight(event: KeyboardEvent) {\n this.handleArrowKeydown(event, 1);\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.arrowleft', ['$event'])\n protected onArrowLeft(event: KeyboardEvent) {\n this.handleArrowKeydown(event, -1);\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.arrowup', ['$event'])\n protected onArrowUp(event: KeyboardEvent) {\n this.handleArrowKeydown(event, -7);\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.arrowdown', ['$event'])\n protected onArrowDown(event: KeyboardEvent) {\n this.handleArrowKeydown(event, 7);\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.space', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n protected onKeydownEnter(event: KeyboardEvent) {\n event.stopPropagation();\n this.selectActiveDate();\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.home', ['$event'])\n protected onKeydownHome(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n const first = CalendarDay.from(this.activeDate);\n this.activeDate = getNextActiveDate(\n first.set({ date: 1 }),\n this.disabledDates,\n ).native;\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.end', ['$event'])\n protected onKeydownEnd(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n const last = CalendarDay.from(this.activeDate);\n this.activeDate = getPreviousActiveDate(\n last.set({ month: last.month + 1, date: 0 }),\n this.disabledDates,\n ).native;\n }\n\n /**\n * @hidden\n */\n @HostListener('focus')\n protected handleFocus() {\n this._showActiveDay = true;\n this.changePreviewRange(this.activeDate);\n }\n\n /**\n * @hidden\n */\n @HostListener('blur')\n protected handleBlur() {\n this._showActiveDay = false;\n this.clearPreviewRange();\n }\n\n /**\n * @hidden\n */\n protected handleDateClick(item: IgxDayItemComponent) {\n const date = item.date.native;\n\n if (item.isPreviousMonth) {\n this.pageChanged.emit({\n monthAction: ScrollDirection.PREV,\n key: '',\n nextDate: date\n });\n }\n\n if (item.isNextMonth) {\n this.pageChanged.emit({\n monthAction: ScrollDirection.NEXT,\n key: '',\n nextDate: date\n });\n }\n\n if (this.tabIndex !== -1 && this.platform.isBrowser && this.el?.nativeElement) {\n this.el.nativeElement.focus();\n }\n\n this.activeDate = item.date.native;\n this.selectActiveDate();\n }\n\n private selectActiveDate() {\n this.selectDate(this.activeDate);\n this.dateSelected.emit(this.activeDate);\n this.selected.emit(this.selectedDates);\n this.clearPreviewRange();\n }\n\n protected get calendarMonth(): CalendarDay[] {\n return Array.from(generateMonth(this.viewDate, this.weekStart));\n }\n\n protected get monthWeeks(): CalendarDay[][] {\n return Array.from(intoChunks(this.calendarMonth, 7));\n }\n\n /**\n * Returns the week number by date\n *\n * @hidden\n */\n public getWeekNumber(date: CalendarDay): number {\n return date.getWeekNumber(this.weekStart);\n }\n\n /**\n * Returns the locale representation of the date in the days view.\n *\n * @hidden\n */\n public formattedDate(value: Date): string {\n if (this.formatViews.day) {\n return this.formatterDay.format(value);\n }\n\n return `${value.getDate()}`;\n }\n\n /**\n * @hidden\n */\n public get weekHeaderLabels(): {long: string, formatted: string}[] {\n const weekdays = [];\n const rawFormatter = new Intl.DateTimeFormat(this.locale, { weekday: 'long' });\n\n for (const day of this.monthWeeks.at(0)) {\n weekdays.push({\n long: rawFormatter.format(day.native),\n formatted: this.formatterWeekday.format(day.native)\n });\n }\n\n return weekdays;\n }\n\n protected get weekNumberHeader(): { short: string, long: string } {\n const weekOfYear = (style: 'narrow' | 'long') => {\n const dn = new Intl.DisplayNames(this.locale, {\n type: 'dateTimeField',\n style,\n });\n\n return dn.of('weekOfYear');\n }\n\n return {\n short: weekOfYear('narrow').substring(0, 1),\n long: weekOfYear('long'),\n }\n }\n\n /**\n * @hidden\n */\n public rowTracker(_: number, item: CalendarDay[]): string {\n return `${item[0].month}${item[0].date}`;\n }\n\n /**\n * @hidden\n */\n public dateTracker(_: number, item: CalendarDay): string {\n return `${item.month}--${item.date}`;\n }\n\n /**\n * @hidden\n */\n public isSelected(date: CalendarDay): boolean {\n const dates = this.value as Date[];\n const hasValue = this.value || (Array.isArray(this.value) && this.value.length === 1);\n\n if (isDateInRanges(date, this.disabledDates)) {\n return false;\n }\n\n if (this.selection === CalendarSelection.SINGLE) {\n return !!this.value && date.equalTo(this.value as Date);\n }\n\n if (!hasValue) {\n return false;\n }\n\n if (this.selection === CalendarSelection.MULTI && dates.length > 0) {\n return isDateInRanges(date, [\n {\n type: DateRangeType.Specific,\n dateRange: dates,\n },\n ]);\n }\n\n if (this.selection === CalendarSelection.RANGE && dates.length > 0) {\n return isDateInRanges(date, [\n {\n type: DateRangeType.Between,\n dateRange: [dates.at(0), dates.at(-1)],\n },\n ]);\n }\n }\n\n /**\n * @hidden\n */\n protected isFirstInRange(date: CalendarDay): boolean {\n const dates = this.selectedDates;\n\n if (this.isSingleSelection || dates.length === 0) {\n return false;\n }\n\n let target = dates.at(0);\n\n if (this.previewRangeDate && this.previewRangeDate < target) {\n target = this.previewRangeDate;\n }\n\n return date.equalTo(target);\n }\n\n /**\n * @hidden\n */\n protected isLastInRange(date: CalendarDay): boolean {\n const dates = this.selectedDates;\n\n if (this.isSingleSelection || dates.length === 0) {\n return false;\n }\n\n let target = dates.at(-1);\n\n if (this.previewRangeDate && this.previewRangeDate > target) {\n target = this.previewRangeDate;\n }\n\n return date.equalTo(target);\n }\n\n /**\n * @hidden\n */\n protected isActiveDate(day: CalendarDay): boolean {\n return this._showActiveDay && day.equalTo(this.activeDate);\n }\n\n /**\n * @hidden\n */\n protected isWithinRange(date: Date, checkForRange: boolean, min?: Date, max?: Date): boolean {\n const dates = this.selectedDates;\n\n if (checkForRange && !(Array.isArray(dates) && dates.length > 1)) {\n return false;\n }\n\n min = min ? min : dates.at(0);\n max = max ? max : dates.at(-1);\n\n return isDateInRanges(date,\n [\n {\n type: DateRangeType.Between,\n dateRange: [min, max]\n }\n ]\n );\n }\n\n protected isWithinPreviewRange(date: Date): boolean {\n if (this.selection !== 'range') return false;\n\n const dates = this.selectedDates;\n\n if (!(dates.length > 0 && this.previewRangeDate)) {\n return false;\n }\n\n return isDateInRanges(date, [\n {\n type: DateRangeType.Between,\n dateRange: [dates.at(0), this.previewRangeDate],\n },\n ]);\n }\n\n /**\n * @hidden\n */\n private get isSingleSelection(): boolean {\n return this.selection !== CalendarSelection.RANGE;\n }\n\n /**\n * @hidden @internal\n */\n public changePreviewRange(date: Date) {\n const dates = this.value as Date[];\n\n if (this.selection === 'range' && dates.length === 1) {\n const first = CalendarDay.from(dates.at(0));\n\n if (!first.equalTo(date)) {\n this.setPreviewRangeDate(date);\n }\n }\n }\n\n /**\n * @hidden @internal\n */\n public clearPreviewRange() {\n if (this.previewRangeDate) {\n this.setPreviewRangeDate(undefined);\n }\n }\n\n private setPreviewRangeDate(value?: Date) {\n this.previewRangeDate = value;\n }\n}\n","<div\n role=\"row\"\n class=\"igx-days-view__row\"\n [title]=\"weekNumberHeader.long | titlecase\"\n>\n @if (showWeekNumbers) {\n <div\n role=\"columnheader\"\n class=\"igx-days-view__label igx-days-view__label--week-number\"\n >\n <span>\n <i>{{ weekNumberHeader.short | titlecase }}</i>\n </span>\n </div>\n }\n @for (dayName of weekHeaderLabels; track dayName.long) {\n <span\n role=\"columnheader\"\n [attr.aria-label]=\"dayName.long\"\n class=\"igx-days-view__label\"\n >\n <span class=\"igx-days-view__label-inner\">\n {{ dayName.formatted | titlecase }}\n </span>\n </span>\n }\n</div>\n\n@for (\n week of monthWeeks; track rowTracker(i, week);\n let isLast = $last; let i = $index\n) {\n <div\n class=\"igx-days-view__row\"\n role=\"row\"\n >\n @if (showWeekNumbers) {\n <div class=\"igx-days-view__date igx-days-view__date--week-number\">\n <span\n role=\"rowheader\"\n class=\"igx-days-view__date-inner igx-days-view__date-inner--week-number\"\n >\n {{ getWeekNumber(week[0]) }}\n </span>\n </div>\n }\n @for (day of week; track dateTracker($index, day)) {\n <igx-day-item\n #item\n class=\"igx-days-view__date\"\n role=\"gridcell\"\n [attr.id]=\"item.isCurrentMonth && day.timestamp\"\n [attr.aria-selected]=\"isSelected(day)\"\n [attr.aria-disabled]=\"isDateDisabled(day.native)\"\n [attr.aria-label]=\"\n isFirstInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_start\n : isLastInRange(day)\n ? day.native.toDateString() +\n ', ' +\n resourceStrings.igx_calendar_range_end\n : day.native.toDateString()\n \"\n [date]=\"day\"\n [viewDate]=\"viewDate\"\n [selection]=\"selection\"\n [selected]=\"isSelected(day)\"\n [isActive]=\"isActiveDate(day)\"\n [isLastInRange]=\"isLastInRange(day)\"\n [isFirstInRange]=\"isFirstInRange(day)\"\n [isWithinRange]=\"isWithinRange(day.native, true)\"\n [isWithinPreviewRange]=\"isWithinPreviewRange(day.native)\"\n [disabledDates]=\"disabledDates\"\n [specialDates]=\"specialDates\"\n [hideLeadingDays]=\"hideLeadingDays\"\n [hideTrailingDays]=\"hideTrailingDays\"\n [attr.tabindex]=\"-1\"\n (click)=\"handleDateClick(item)\"\n (mouseEnter)=\"changePreviewRange(day.native)\"\n (mouseLeave)=\"clearPreviewRange()\"\n >\n {{ formattedDate(day.native) | dayDigit:formatViews }}\n </igx-day-item>\n }\n </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Calendar } from './calendar';\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'IgxMonthViewSlots',\n standalone: true\n})\nexport class IgxMonthViewSlotsCalendar implements PipeTransform {\n public transform(monthViews: number) {\n return new Array(monthViews);\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'IgxGetViewDate',\n standalone: true\n})\nexport class IgxGetViewDateCalendar implements PipeTransform {\n private calendar: Calendar;\n constructor() {\n this.calendar = new Calendar();\n }\n\n public transform(index: number, viewDate: Date): Date;\n public transform(index: number, viewDate: Date, wholeDate: false): number;\n public transform(index: number, viewDate: Date, wholeDate = true) {\n const date = this.calendar.timedelta(viewDate, 'month', index);\n return wholeDate ? date : date.getMonth();\n }\n}\n","import {\n\tComponent,\n\tContentChild,\n\tforwardRef,\n\tHostBinding,\n\tInput,\n\tViewChild,\n\tElementRef,\n\tAfterViewInit,\n\tViewChildren,\n\tQueryList,\n\tOnDestroy,\n\tbooleanAttribute,\n HostListener,\n} from '@angular/core';\nimport { NgTemplateOutlet, DatePipe } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n\tIgxCalendarHeaderTemplateDirective,\n IgxCalendarHeaderTitleTemplateDirective,\n\tIgxCalendarSubheaderTemplateDirective,\n IgxCalendarScrollPageDirective,\n} from './calendar.directives';\nimport { IgxCalendarView, ScrollDirection } from './calendar';\nimport { IgxMonthsViewComponent } from './months-view/months-view.component';\nimport { IgxYearsViewComponent } from './years-view/years-view.component';\nimport { IgxDaysViewComponent } from './days-view/days-view.component';\nimport { interval } from 'rxjs';\nimport { takeUntil, debounce, skipLast, switchMap } from 'rxjs/operators';\nimport { IgxMonthViewSlotsCalendar, IgxGetViewDateCalendar } from './months-view.pipe';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxCalendarBaseDirective } from './calendar-base';\nimport { KeyboardNavigationService } from './calendar.services';\nimport { areSameMonth, CalendarDay, formatToParts, getClosestActiveDate, isDateInRanges } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n\n/**\n * Calendar provides a way to display date information.\n *\n * @igxModule IgxCalendarModule\n *\n * @igxTheme igx-calendar-theme, igx-icon-theme\n *\n * @igxKeywords calendar, datepicker, schedule, date\n *\n * @igxGroup Scheduling\n *\n * @remarks\n * The Ignite UI Calendar provides an easy way to display a calendar and allow users to select dates using single, multiple\n * or range selection.\n *\n * @example:\n * ```html\n * <igx-calendar selection=\"range\"></igx-calendar>\n * ```\n */\n@Component({\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxCalendarComponent,\n },\n {\n multi: false,\n provide: KeyboardNavigationService,\n },\n ],\n selector: 'igx-calendar',\n templateUrl: 'calendar.component.html',\n imports: [NgTemplateOutlet, IgxCalendarScrollPageDirective, IgxIconComponent, IgxDaysViewComponent, IgxMonthsViewComponent, IgxYearsViewComponent, DatePipe, IgxMonthViewSlotsCalendar, IgxGetViewDateCalendar]\n})\nexport class IgxCalendarComponent extends IgxCalendarBaseDirective implements AfterViewInit, OnDestroy {\n /**\n * @hidden\n * @internal\n */\n private _activeDescendant: number;\n\n /**\n * @hidden\n * @internal\n */\n @ViewChild(\"wrapper\")\n public wrapper: ElementRef;\n\n\t/**\n\t * Sets/gets the `id` of the calendar.\n\t *\n\t * @remarks\n\t * If not set, the `id` will have value `\"igx-calendar-0\"`.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar id=\"my-first-calendar\"></igx-calendar>\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\t@HostBinding('attr.id')\n\t@Input()\n\tpublic id = `igx-calendar-${ NEXT_ID++ }`;\n\n /**\n * Sets/gets whether the calendar has header.\n * Default value is `true`.\n *\n * @example\n * ```html\n * <igx-calendar [hasHeader]=\"false\"></igx-calendar>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public hasHeader = true;\n\n /**\n * Sets/gets whether the calendar header will be in vertical position.\n * Default value is `false`.\n *\n * @example\n * ```html\n * <igx-calendar [vertical]=\"true\"></igx-calendar>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public vertical = false;\n\n @Input()\n public orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n @Input()\n public headerOrientation: 'horizontal' | 'vertical' = 'horizontal';\n\n\t/**\n\t * Sets/gets the number of month views displayed.\n\t * Default value is `1`.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar [monthsViewNumber]=\"2\"></igx-calendar>\n\t * ```\n\t */\n\t@Input()\n\tpublic get monthsViewNumber() {\n\t\treturn this._monthsViewNumber;\n\t}\n\n public set monthsViewNumber(val: number) {\n if (val < 1) {\n return;\n }\n\n\t\tthis._monthsViewNumber = val;\n\t}\n\n /**\n * Show/hide week numbers\n *\n * @example\n * ```html\n * <igx-calendar [showWeekNumbers]=\"true\"></igx-calendar>\n * ``\n */\n @Input({ transform: booleanAttribute })\n public showWeekNumbers = false;\n\n\t/**\n\t * The default css class applied to the component.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@HostBinding('class.igx-calendar--vertical')\n\tpublic get styleVerticalClass(): boolean {\n\t\treturn this.headerOrientation === 'vertical';\n\t}\n\n\t/**\n\t * The default css class applied to the component.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@HostBinding('class.igx-calendar')\n\tpublic styleClass = true;\n\n\t/**\n\t * Month button, that displays the months view.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChildren('monthsBtn')\n\tpublic monthsBtns: QueryList<ElementRef>;\n\n\t/**\n\t * ViewChild that represents the decade view.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('decade', { read: IgxYearsViewComponent })\n\tpublic dacadeView: IgxYearsViewComponent;\n\n\t/**\n\t * ViewChild that represents the months view.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('months', { read: IgxMonthsViewComponent })\n\tpublic monthsView: IgxMonthsViewComponent;\n\n\t/**\n\t * ViewChild that represents the days view.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('days', { read: IgxDaysViewComponent })\n\tpublic daysView: IgxDaysViewComponent;\n\n\t/**\n\t * ViewChildrenden representing all of the rendered days views.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChildren('days', { read: IgxDaysViewComponent })\n\tpublic monthViews: QueryList<IgxDaysViewComponent>;\n\n\t/**\n\t * Button for previous month.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('prevPageBtn')\n\tpublic prevPageBtn: ElementRef;\n\n\t/**\n\t * Button for next month.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\t@ViewChild('nextPageBtn')\n\tpublic nextPageBtn: ElementRef;\n\n\t/**\n\t * Denote if the year view is active.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic get isYearView(): boolean {\n\t\treturn this.activeView === IgxCalendarView.Year;\n\t}\n\n\t/**\n\t * Gets the header template.\n\t *\n\t * @example\n\t * ```typescript\n\t * let headerTitleTemplate = this.calendar.headerTitleTeamplate;\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic get headerTitleTemplate(): any {\n\t\tif (this.headerTitleTemplateDirective) {\n\t\t\treturn this.headerTitleTemplateDirective.template;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Sets the header template.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar headerTitleTemplateDirective=\"igxCalendarHeaderTitle\"></igx-calendar>\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic set headerTitleTemplate(directive: any) {\n\t\tthis.headerTitleTemplateDirective = directive;\n\t}\n\n\t/**\n\t * Gets the header template.\n\t *\n\t * @example\n\t * ```typescript\n\t * let headerTemplate = this.calendar.headerTeamplate;\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic get headerTemplate(): any {\n\t\tif (this.headerTemplateDirective) {\n\t\t\treturn this.headerTemplateDirective.template;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Sets the header template.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar headerTemplateDirective=\"igxCalendarHeader\"></igx-calendar>\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic set headerTemplate(directive: any) {\n\t\tthis.headerTemplateDirective = directive;\n\t}\n\n\t/**\n\t * Gets the subheader template.\n\t *\n\t * @example\n\t * ```typescript\n\t * let subheaderTemplate = this.calendar.subheaderTemplate;\n\t * ```\n\t */\n\tpublic get subheaderTemplate(): any {\n\t\tif (this.subheaderTemplateDirective) {\n\t\t\treturn this.subheaderTemplateDirective.template;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Sets the subheader template.\n\t *\n\t * @example\n\t * ```html\n\t * <igx-calendar subheaderTemplate=\"igxCalendarSubheader\"></igx-calendar>\n\t * ```\n\t * @memberof IgxCalendarComponent\n\t */\n\tpublic set subheaderTemplate(directive: any) {\n\t\tthis.subheaderTemplateDirective = directive;\n\t}\n\n\t/**\n\t * Gets the context for the template marked with the `igxCalendarHeader` directive.\n\t *\n\t * @example\n\t * ```typescript\n\t * let headerContext = this.calendar.headerContext;\n\t * ```\n\t */\n\tpublic get headerContext() {\n\t\treturn this.generateContext(this.headerDate);\n\t}\n\n\t/**\n\t * Gets the context for the template marked with either `igxCalendarSubHeaderMonth`\n\t * or `igxCalendarSubHeaderYear` directive.\n\t *\n\t * @example\n\t * ```typescript\n\t * let context = this.calendar.context;\n\t * ```\n\t */\n\tpublic get context() {\n\t\tconst date: Date = this.viewDate;\n\t\treturn this.generateContext(date);\n\t}\n\n\t/**\n\t * Date displayed in header\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic get headerDate(): Date {\n\t\treturn this.selectedDates?.at(0) ?? new Date();\n\t}\n\n /**\n * @hidden\n * @internal\n */\n @ContentChild(forwardRef(() => IgxCalendarHeaderTemplateDirective), { read: IgxCalendarHeaderTemplateDirective, static: true })\n private headerTemplateDirective: IgxCalendarHeaderTemplateDirective;\n\n /**\n * @hidden\n * @internal\n */\n @ContentChild(forwardRef(() => IgxCalendarHeaderTitleTemplateDirective), { read: IgxCalendarHeaderTitleTemplateDirective, static: true })\n private headerTitleTemplateDirective: IgxCalendarHeaderTitleTemplateDirective;\n\n /**\n * @hidden\n * @internal\n */\n @ContentChild(forwardRef(() => IgxCalendarSubheaderTemplateDirective), { read: IgxCalendarSubheaderTemplateDirective, static: true })\n private subheaderTemplateDirective: IgxCalendarSubheaderTemplateDirective;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic activeDate = CalendarDay.today.native;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tprotected previewRangeDate: Date;\n\n\t/**\n\t * Used to apply the active date when the calendar view is changed\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic nextDate: Date;\n\n\t/**\n\t * Denote if the calendar view was changed with the keyboard\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic isKeydownTrigger = false;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tprivate _monthsViewNumber = 1;\n\n @HostListener('mousedown', ['$event'])\n protected onMouseDown(event: MouseEvent) {\n event.stopPropagation();\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n }\n\n private _showActiveDay: boolean;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n protected set showActiveDay(value: boolean) {\n this._showActiveDay = value;\n this.cdr.detectChanges();\n }\n\n protected get showActiveDay() {\n return this._showActiveDay;\n }\n\n protected get activeDescendant(): number {\n if (this.activeView === 'month') {\n return this.activeDate.getTime();\n }\n\n return this._activeDescendant ?? this.viewDate.getTime();\n }\n\n protected set activeDescendant(date: Date) {\n this._activeDescendant = date.getTime();\n }\n\n\tpublic ngAfterViewInit() {\n this.keyboardNavigation\n .attachKeyboardHandlers(this.wrapper, this)\n .set(\"ArrowUp\", this.onArrowUp)\n .set(\"ArrowDown\", this.onArrowDown)\n .set(\"ArrowLeft\", this.onArrowLeft)\n .set(\"ArrowRight\", this.onArrowRight)\n .set(\"Enter\", this.onEnter)\n .set(\" \", this.onEnter)\n .set(\"Home\", this.onHome)\n .set(\"End\", this.onEnd)\n .set(\"PageUp\", this.handlePageUp)\n .set(\"PageDown\", this.handlePageDown);\n\n this.startPageScroll$.pipe(\n takeUntil(this.stopPageScroll$),\n switchMap(() => this.scrollPage$.pipe(\n skipLast(1),\n debounce(() => interval(300)),\n takeUntil(this.stopPageScroll$)\n ))).subscribe(() => {\n switch (this.pageScrollDirection) {\n case ScrollDirection.PREV:\n this.previousPage();\n break;\n case ScrollDirection.NEXT:\n this.nextPage();\n break;\n case ScrollDirection.NONE:\n default:\n break;\n }\n });\n\n this.activeView$.subscribe((view) => {\n\t\t\tthis.activeViewChanged.emit(view);\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate\n });\n });\n }\n\n protected onWrapperFocus(_event: FocusEvent) {\n this.showActiveDay = true;\n this.monthViews.forEach(view => view.changePreviewRange(this.activeDate));\n }\n\n protected onWrapperBlur(_event: FocusEvent) {\n this.showActiveDay = false;\n this.monthViews.forEach(view => view.clearPreviewRange());\n this._onTouchedCallback();\n }\n\n private handleArrowKeydown(event: KeyboardEvent, delta: number) {\n event.preventDefault();\n\n const date = getClosestActiveDate(\n CalendarDay.from(this.activeDate),\n delta,\n this.disabledDates,\n );\n\n this.activeDate = date.native;\n\n const dates = this.viewDates;\n const isDateInView = dates.some(d => d.date.equalTo(this.activeDate));\n this.monthViews.forEach(view => view.clearPreviewRange());\n\n if (!isDateInView) {\n delta > 0 ? this.nextPage(true) : this.previousPage(true);\n }\n }\n\n private handlePageUpDown(event: KeyboardEvent, delta: number) {\n event.preventDefault();\n\n const dir = delta > 0 ? ScrollDirection.NEXT : ScrollDirection.PREV;\n\n if (this.activeView === IgxCalendarView.Month && event.shiftKey) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', delta).native;\n this.resetActiveDate(this.viewDate);\n this.cdr.detectChanges();\n } else {\n this.changePage(false, dir);\n }\n }\n\n private handlePageUp(event: KeyboardEvent) {\n this.handlePageUpDown(event, -1);\n }\n\n private handlePageDown(event: KeyboardEvent) {\n this.handlePageUpDown(event, 1);\n }\n\n private onArrowUp(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleArrowKeydown(event, -7);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownArrowUp(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownArrowUp(event);\n }\n }\n\n private onArrowDown(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleArrowKeydown(event, 7);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownArrowDown(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownArrowDown(event);\n }\n }\n\n private onArrowLeft(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleArrowKeydown(event, -1);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownArrowLeft(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownArrowLeft(event);\n }\n }\n\n private onArrowRight(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleArrowKeydown(event, 1);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownArrowRight(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownArrowRight(event);\n }\n }\n\n private onEnter(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n this.handleDateSelection(this.activeDate);\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownEnter(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownEnter(event);\n }\n\n this.monthViews.forEach(view => view.clearPreviewRange());\n }\n\n private onHome(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n const dates = this.monthViews.toArray()\n .flatMap((view) => view.dates.toArray())\n .filter((d) => d.isCurrentMonth && d.isFocusable);\n\n this.activeDate = dates.at(0).date.native;\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownHome(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownHome(event);\n }\n }\n\n private onEnd(event: KeyboardEvent) {\n if (this.activeView === IgxCalendarView.Month) {\n const dates = this.monthViews.toArray()\n .flatMap((view) => view.dates.toArray())\n .filter((d) => d.isCurrentMonth && d.isFocusable);\n\n this.activeDate = dates.at(-1).date.native;\n this.cdr.detectChanges();\n }\n\n if (this.activeView === IgxCalendarView.Year) {\n this.monthsView.onKeydownEnd(event);\n }\n\n if (this.activeView === IgxCalendarView.Decade) {\n this.dacadeView.onKeydownEnd(event);\n }\n }\n\n\t/**\n\t * Returns the locale representation of the month in the month view if enabled,\n\t * otherwise returns the default `Date.getMonth()` value.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic formattedMonth(value: Date): string {\n\t\tif (this.formatViews.month) {\n\t\t\treturn this.formatterMonth.format(value);\n\t\t}\n\n\t\treturn `${ value.getMonth() }`;\n\t}\n\n\t/**\n\t * Change to previous page\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic previousPage(isKeydownTrigger = false) {\n\t\tif (isKeydownTrigger && this.pageScrollDirection === ScrollDirection.NEXT) {\n\t\t\treturn;\n\t\t}\n\n this.changePage(isKeydownTrigger, ScrollDirection.PREV);\n\t}\n\n\t/**\n\t * Change to next page\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic nextPage(isKeydownTrigger = false) {\n\t\tif (isKeydownTrigger && this.pageScrollDirection === ScrollDirection.PREV) {\n\t\t\treturn;\n\t\t}\n\n this.changePage(isKeydownTrigger, ScrollDirection.NEXT);\n\t}\n\n\t/**\n\t * Changes the current page\n\t *\n\t * @hidden\n\t * @internal\n\t */\n protected changePage(isKeydownTrigger = false, direction: ScrollDirection) {\n\t\tthis.previousViewDate = this.viewDate;\n\t\tthis.isKeydownTrigger = isKeydownTrigger;\n\n switch (this.activeView) {\n case \"month\":\n if (direction === ScrollDirection.PREV) {\n this.viewDate = CalendarDay.from(this.viewDate).add('month', -1).native;\n }\n\n if (direction === ScrollDirection.NEXT) {\n this.viewDate = CalendarDay.from(this.viewDate).add('month', 1).native;\n }\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate\n });\n\n break;\n\n case \"year\":\n if (direction === ScrollDirection.PREV) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', -1).native;\n }\n\n if (direction === ScrollDirection.NEXT) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', 1).native;\n }\n\n break;\n\n case \"decade\":\n if (direction === ScrollDirection.PREV) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', -15).native;\n }\n\n if (direction === ScrollDirection.NEXT) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', 15).native;\n }\n\n break;\n }\n\n // XXX: Why only when it's not triggered by keyboard?\n if (!this.isKeydownTrigger) this.resetActiveDate(this.viewDate);\n }\n\n\t/**\n\t * Continious navigation through the previous pages\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic startPrevPageScroll = (isKeydownTrigger = false) => {\n\t\tthis.startPageScroll$.next();\n\t\tthis.pageScrollDirection = ScrollDirection.PREV;\n\t\tthis.previousPage(isKeydownTrigger);\n\t}\n\n\t/**\n\t * Continious navigation through the next pages\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic startNextPageScroll = (isKeydownTrigger = false) => {\n\t\tthis.startPageScroll$.next();\n\t\tthis.pageScrollDirection = ScrollDirection.NEXT;\n\t\tthis.nextPage(isKeydownTrigger);\n\t}\n\n\t/**\n\t * Stop continuous navigation\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic stopPageScroll = (event: KeyboardEvent) => {\n\t\tevent.stopPropagation();\n\n\t\tthis.stopPageScroll$.next(true);\n\t\tthis.stopPageScroll$.complete();\n\n\t\tif (this.platform.isActivationKey(event)) {\n\t\t\tthis.resetActiveDate(this.viewDate);\n\t\t}\n\n\t\tthis.pageScrollDirection = ScrollDirection.NONE;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewDecade(event: MouseEvent, date: Date, activeViewIdx: number): void {\n event.preventDefault();\n\n\t\tsuper.activeViewDecade(activeViewIdx);\n this.viewDate = date;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewDecadeKB(date: Date, event: KeyboardEvent, activeViewIdx: number) {\n\t\tsuper.activeViewDecadeKB(event, activeViewIdx);\n\n\t\tif (this.platform.isActivationKey(event)) {\n this.viewDate = date;\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n\t\t}\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n public onYearsViewClick(event: MouseEvent) {\n if (!this.platform.isBrowser) {\n return;\n }\n\n const path = event.composed ? event.composedPath() : [event.target];\n const years = this.dacadeView.viewItems.toArray();\n const validTarget = years.some(year => path.includes(year.nativeElement));\n\n if (validTarget) {\n this.activeView = IgxCalendarView.Year;\n }\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n public onYearsViewKeydown(event: KeyboardEvent) {\n if (this.platform.isActivationKey(event)) {\n this.activeView = IgxCalendarView.Year;\n }\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tprotected getFormattedDate(): { weekday: string; monthday: string } {\n\t\tconst date = this.headerDate;\n const monthFormatter = new Intl.DateTimeFormat(this.locale, { month: 'short', day: 'numeric' })\n const dayFormatter = new Intl.DateTimeFormat(this.locale, { weekday: 'short' })\n\n\t\treturn {\n\t\t\tmonthday: monthFormatter.format(date),\n\t\t\tweekday: dayFormatter.format(date),\n\t\t};\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tprotected getFormattedRange(): { start: string; end: string } {\n\t\tconst dates = this.selectedDates as Date[];\n\n\t\treturn {\n\t\t\tstart: this.formatterRangeday.format(dates.at(0)),\n\t\t\tend: this.formatterRangeday.format(dates.at(-1))\n\t\t};\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n protected get viewDates() {\n return this.monthViews.toArray()\n .flatMap(view => view.dates.toArray())\n .filter(d => d.isCurrentMonth);\n }\n\n\t/**\n\t * Handles invoked on date selection\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tprotected handleDateSelection(date: Date) {\n const outOfRange = !this.viewDates.some(d => {\n return d.date.equalTo(date)\n });\n\n if (outOfRange) {\n this.viewDate = date;\n }\n\n\t\tthis.selectDate(date);\n\n // keep views in sync\n\t\tthis.monthViews.forEach((m) => {\n\t\t\tm.shiftKey = this.shiftKey;\n m.selectedDates = this.selectedDates;\n m.cdr.markForCheck();\n\t\t});\n\n if (this.selection !== 'single') {\n\t\t this.selected.emit(this.selectedDates);\n } else {\n\t\t this.selected.emit(this.selectedDates.at(0));\n }\n\t}\n\n\t/**\n\t * @hidden\n\t * @intenal\n\t */\n\tpublic changeMonth(date: Date) {\n\t\tthis.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('month', -this.activeViewIdx).native;\n\t\tthis.activeView = IgxCalendarView.Month;\n this.resetActiveDate(date);\n\t}\n\n\t/**\n\t * @hidden\n\t * @intenal\n\t */\n public override changeYear(date: Date) {\n this.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('month', -this.activeViewIdx).native;\n\t\tthis.activeView = IgxCalendarView.Year;\n }\n\n\t/**\n\t * @hidden\n\t * @intenal\n\t */\n\tpublic updateYear(date: Date) {\n\t\tthis.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('year', -this.activeViewIdx).native;\n\t}\n\n public updateActiveDescendant(date: Date) {\n this.activeDescendant = date;\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewYear(event: MouseEvent, date: Date, activeViewIdx: number): void {\n event.preventDefault();\n\n\t\tthis.activeView = IgxCalendarView.Year;\n\t\tthis.activeViewIdx = activeViewIdx;\n this.viewDate = date;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewYearKB(date: Date, event: KeyboardEvent, activeViewIdx: number): void {\n event.stopPropagation();\n\n\t\tif (this.platform.isActivationKey(event)) {\n\t\t event.preventDefault();\n this.activeView = IgxCalendarView.Year;\n this.activeViewIdx = activeViewIdx;\n this.viewDate = date;\n\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n\t\t}\n\t}\n\n\t/**\n\t * Deselects date(s) (based on the selection type).\n\t *\n\t * @example\n\t * ```typescript\n\t * this.calendar.deselectDate(new Date(`2018-06-12`));\n\t * ````\n\t */\n\tpublic override deselectDate(value?: Date | Date[] | string) {\n\t\tsuper.deselectDate(value);\n\n\t\tthis.monthViews.forEach((m) => {\n\t\t\tm.selectedDates = this.selectedDates;\n\t\t\tm.rangeStarted = false;\n m.cdr.markForCheck();\n\t\t});\n\n\t\tthis._onChangeCallback(this.selectedDates);\n\t}\n\n\n\t/**\n\t * Getter for the context object inside the calendar templates.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getContext(i: number) {\n const date = CalendarDay.from(this.viewDate).add('month', i).native;\n\t\treturn this.generateContext(date, i);\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n // TODO: See if this can be incorporated in the DaysView directly\n\tpublic resetActiveDate(date: Date) {\n const target = CalendarDay.from(this.activeDate).set({\n month: date.getMonth(),\n year: date.getFullYear(),\n });\n const outOfRange =\n !areSameMonth(date, target) ||\n isDateInRanges(target, this.disabledDates);\n\n this.activeDate = outOfRange ? date : target.native;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic ngOnDestroy(): void {\n this.keyboardNavigation.detachKeyboardHandlers();\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getPrevMonth(date: Date): Date {\n\t\treturn CalendarDay.from(date).add('month', -1).native;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getNextMonth(date: Date, viewIndex: number): Date {\n return CalendarDay.from(date).add('month', viewIndex).native;\n\t}\n\n\t/**\n\t * Helper method building and returning the context object inside the calendar templates.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tprivate generateContext(value: Date | Date[], i?: number) {\n const construct = (date: Date, index: number) => ({\n index: index,\n date,\n ...formatToParts(date, this.locale, this.formatOptions, [\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"weekday\",\n ]),\n });\n\n const formatObject = Array.isArray(value)\n ? value.map((date, index) => construct(date, index))\n : construct(value, i);\n\n return { $implicit: formatObject };\n\t}\n}\n","<ng-template let-result #defaultHeaderTitle>\n @if (selection === 'single') {\n <span>{{ resourceStrings.igx_calendar_select_date }}</span>\n }\n @if (selection === 'range') {\n <span>{{ resourceStrings.igx_calendar_range_placeholder }}</span>\n }\n</ng-template>\n\n<ng-template let-result #defaultHeaderDate>\n @if (selection === 'single') {\n <span>{{ getFormattedDate().weekday }}, </span>\n <span>{{ getFormattedDate().monthday }}</span>\n }\n @if (selection === 'range') {\n <span>{{ selectedDates.length === 0 ? 'Start' : getFormattedRange().start}}</span>\n <span> - </span>\n <span>{{ selectedDates.length <= 1 ? 'End' : getFormattedRange().end}}</span>\n }\n</ng-template>\n\n<!-- Month -->\n<ng-template #defaultMonth let-obj>\n <span\n #monthsBtn\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"(obj.date | date: 'LLLL') + ', ' + resourceStrings.igx_calendar_select_month\"\n (keydown)=\"onActiveViewYearKB(obj.date, $event, obj.index)\"\n (mousedown)=\"onActiveViewYear($event, obj.date, obj.index)\"\n class=\"igx-calendar-picker__date\">\n {{ formattedMonth(obj.date) }}\n </span>\n</ng-template>\n\n<!-- Year -->\n<ng-template #defaultYear let-obj>\n @if (activeView === 'year') {\n <span class=\"igx-calendar__aria-off-screen\" aria-live=\"polite\">{{ formattedYear(obj.date) }}</span>\n }\n <span\n #yearsBtn\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"(obj.date | date: 'yyyy') + ', ' + resourceStrings.igx_calendar_select_year\"\n (keydown)=\"onActiveViewDecadeKB(obj.date, $event, obj.index)\"\n (mousedown)=\"onActiveViewDecade($event, obj.date, obj.index)\"\n class=\"igx-calendar-picker__date\">\n {{ formattedYear(obj.date) }}\n </span>\n</ng-template>\n\n<!-- Month Year -->\n<ng-template #defaultMonthYear let-obj let-result>\n @if (monthsViewNumber < 2 || obj.index < 1) {\n <span class=\"igx-calendar__aria-off-screen\" aria-live=\"polite\">\n {{ monthsViewNumber > 1 ?\n (resourceStrings.igx_calendar_first_picker_of.replace('{0}', monthsViewNumber.toString()) + ' ' +\n (obj.date | date: 'LLLL yyyy')) :\n resourceStrings.igx_calendar_selected_month_is + (obj.date | date: 'LLLL yyyy')}}\n </span>\n }\n <ng-container *ngTemplateOutlet=\"defaultMonth; context: {$implicit: obj}\"></ng-container>\n <ng-container *ngTemplateOutlet=\"defaultYear; context: {$implicit: obj}\"></ng-container>\n</ng-template>\n\n<!-- Decade -->\n<ng-template #defaultDecade>\n <span>{{ getDecadeRange().start }} - {{ getDecadeRange().end }}</span>\n</ng-template>\n\n<!-- Previous arrow icon -->\n<ng-template #prevArrow let-obj>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"arrow_prev\"></igx-icon>\n</ng-template>\n\n<!-- Next arrow icon -->\n<ng-template #nextArrow let-obj>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"arrow_next\"></igx-icon>\n</ng-template>\n\n<!-- Previous picker button -->\n<ng-template #prevPageButton let-obj>\n <div\n #prevPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__prev\"\n role=\"button\"\n [attr.aria-label]=\"prevNavLabel((getPrevMonth(viewDate) | date: 'LLLL'))\"\n data-action=\"prev\"\n igxCalendarScrollPage\n [startScroll]=\"startPrevPageScroll\"\n [stopScroll]=\"stopPageScroll\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <ng-container *ngTemplateOutlet=\"prevArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Next picker button -->\n<ng-template #nextPageButton let-obj>\n <div\n #nextPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__next\"\n role=\"button\"\n [attr.aria-label]=\"nextNavLabel((getNextMonth(viewDate, monthsViewNumber) | date: 'LLLL'))\"\n data-action=\"next\"\n igxCalendarScrollPage\n [startScroll]=\"startNextPageScroll\"\n [stopScroll]=\"stopPageScroll\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <ng-container *ngTemplateOutlet=\"nextArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- PICKER IN DAYS -->\n<ng-template #calendarDaysPicker let-i>\n <section class=\"igx-calendar-picker\" [style.--calendar-row-start]=\"1 + (2 * i)\">\n <div class=\"igx-calendar-picker__dates\" [attr.data-month]=\"i | IgxGetViewDate:viewDate:false\">\n <ng-container\n *ngTemplateOutlet=\"subheaderTemplate ? subheaderTemplate : defaultMonthYear; context: getContext(i)\">\n </ng-container>\n </div>\n @if (this.orientation === 'horizontal' ? i === monthsViewNumber - 1 : i === 0) {\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n }\n </section>\n</ng-template>\n\n<!-- PICKER IN MONTHS -->\n<ng-template #calendarYearPicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\">\n <ng-container\n *ngTemplateOutlet=\"subheaderTemplate ? subheaderTemplate : defaultYear; context: getContext(0)\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<!-- PICKER IN YEARS -->\n<ng-template #calendarDecadePicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\" aria-live=\"polite\">\n <ng-container\n *ngTemplateOutlet=\"subheaderTemplate ? subheaderTemplate : defaultDecade;\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n\n@if (selection === 'single' && hasHeader || selection === 'range' && hasHeader) {\n <header\n aria-labelledby=\"igx-aria-calendar-title-month igx-aria-calendar-title-year\"\n class=\"igx-calendar__header\"\n >\n <h5 id=\"igx-aria-calendar-title-year\" class=\"igx-calendar__header-year\">\n <ng-container *ngTemplateOutlet=\"headerTitleTemplate ?? defaultHeaderTitle; context: headerContext\"></ng-container>\n </h5>\n <h2 id=\"igx-aria-calendar-title-month\" class=\"igx-calendar__header-date\">\n <ng-container *ngTemplateOutlet=\"headerTemplate ? headerTemplate : defaultHeaderDate; context: headerContext\">\n </ng-container>\n </h2>\n </header>\n}\n\n\n<div\n #wrapper\n [style.--calendar-months]=\"monthsViewNumber\"\n [tabIndex]=\"0\"\n class=\"igx-calendar__wrapper\"\n [class.igx-calendar__wrapper--vertical]=\"orientation === 'vertical'\"\n [attr.aria-activedescendant]=\"activeDescendant\"\n [attr.aria-multiselectable]=\"selection !== 'single'\"\n aria-labelledby=\"calendar-desc\"\n role=\"grid\"\n (focus)=\"this.onWrapperFocus($event)\"\n (blur)=\"this.onWrapperBlur($event)\"\n >\n <div id=\"calendar-desc\" tabindex=\"-1\" class=\"igx-calendar__aria-off-screen\">\n @switch (selection) {\n @case ('multi') {\n {{ monthsViewNumber && monthsViewNumber > 1 ?\n resourceStrings.igx_calendar_multi_selection.replace('{0}', monthsViewNumber.toString()) :\n resourceStrings.igx_calendar_singular_multi_selection}}\n }\n @case ('range') {\n {{ monthsViewNumber && monthsViewNumber > 1 ?\n resourceStrings.igx_calendar_range_selection.replace('{0}', monthsViewNumber.toString()) :\n resourceStrings.igx_calendar_singular_range_selection}}\n }\n @default {\n {{ monthsViewNumber && monthsViewNumber > 1 ?\n resourceStrings.igx_calendar_single_selection.replace('{0}', monthsViewNumber.toString()) :\n resourceStrings.igx_calendar_singular_single_selection}}\n }\n }\n </div>\n <section\n class=\"igx-calendar__pickers\"\n [class.igx-calendar__pickers--days]=\"isDefaultView\"\n [class.igx-calendar__pickers--vertical]=\"orientation === 'vertical'\"\n >\n @if (isDefaultView) {\n @for (view of monthsViewNumber | IgxMonthViewSlots; track $index; let i = $index) {\n <ng-container *ngTemplateOutlet=\"calendarDaysPicker; context: {$implicit: i}\"></ng-container>\n }\n }\n\n @if (isYearView) {\n <ng-container *ngTemplateOutlet=\"calendarYearPicker\"></ng-container>\n }\n\n @if (isDecadeView) {\n <ng-container *ngTemplateOutlet=\"calendarDecadePicker\"></ng-container>\n }\n </section>\n\n <section class=\"igx-calendar__body\" [class.igx-calendar__body--vertical]=\"orientation === 'vertical'\" role=\"presentation\">\n @if (isDefaultView) {\n @for (view of monthsViewNumber | IgxMonthViewSlots; track $index; let i = $index) {\n <igx-days-view\n #days\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [selection]=\"selection\"\n [locale]=\"locale\"\n [value]=\"value\"\n [(activeDate)]=\"activeDate\"\n [(previewRangeDate)]=\"previewRangeDate\"\n [viewDate]=\"i | IgxGetViewDate: viewDate\"\n [weekStart]=\"weekStart\"\n [formatOptions]=\"formatOptions\"\n [formatViews]=\"formatViews\"\n [disabledDates]=\"disabledDates\"\n [specialDates]=\"specialDates\"\n [style.--calendar-row-start]=\"(i + 1) * 2\"\n [hideLeadingDays]=\"hideOutsideDays || i !== 0\"\n [hideTrailingDays]=\"hideOutsideDays || i !== monthsViewNumber - 1\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [showActiveDay]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (dateSelected)=\"handleDateSelection($event)\"\n (mousedown)=\"$event.preventDefault()\">\n </igx-days-view>\n }\n }\n\n @if (isYearView) {\n <igx-months-view\n #months\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.month\"\n [monthFormat]=\"formatOptions.month\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (pageChanged)=\"updateYear($event)\"\n (activeDateChanged)=\"updateActiveDescendant($event)\"\n (selected)=\"changeMonth($event)\"\n (mousedown)=\"$event.preventDefault()\">\n </igx-months-view>\n }\n\n @if (isDecadeView) {\n <igx-years-view\n #decade\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.year\"\n [yearFormat]=\"formatOptions.year\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (pageChanged)=\"updateYear($event)\"\n (activeDateChanged)=\"updateActiveDescendant($event)\"\n (selected)=\"changeYear($event)\"\n (mousedown)=\"$event.preventDefault()\">\n </igx-years-view>\n }\n </section>\n</div>\n","import {\n Component,\n HostListener,\n ViewChild,\n HostBinding,\n Input,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n OnInit,\n} from \"@angular/core\";\nimport { NgTemplateOutlet, DatePipe } from \"@angular/common\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { IgxMonthsViewComponent } from \"../months-view/months-view.component\";\nimport { IgxYearsViewComponent } from \"../years-view/years-view.component\";\nimport { IgxDaysViewComponent } from \"../days-view/days-view.component\";\nimport { IgxCalendarView } from \"../calendar\";\nimport { IgxCalendarBaseDirective } from \"../calendar-base\";\nimport { KeyboardNavigationService } from \"../calendar.services\";\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { CalendarDay, formatToParts } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n@Component({\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: IgxMonthPickerComponent,\n },\n {\n multi: false,\n provide: KeyboardNavigationService\n },\n ],\n selector: \"igx-month-picker\",\n templateUrl: \"month-picker.component.html\",\n imports: [\n NgTemplateOutlet,\n DatePipe,\n IgxIconComponent,\n IgxMonthsViewComponent,\n IgxYearsViewComponent,\n ]\n})\nexport class IgxMonthPickerComponent extends IgxCalendarBaseDirective implements OnInit, AfterViewInit, OnDestroy {\n /**\n * Sets/gets the `id` of the month picker.\n * If not set, the `id` will have value `\"igx-month-picker-0\"`.\n */\n @HostBinding(\"attr.id\")\n @Input()\n public id = `igx-month-picker-${NEXT_ID++}`;\n\n /**\n * @hidden\n * @internal\n */\n private _activeDescendant: number;\n\n /**\n * @hidden\n * @internal\n */\n @ViewChild(\"wrapper\")\n public wrapper: ElementRef;\n\n /**\n * The default css class applied to the component.\n *\n * @hidden\n */\n @HostBinding(\"class.igx-month-picker\")\n public styleClass = true;\n\n /**\n * @hidden\n */\n @ViewChild(\"months\", { read: IgxMonthsViewComponent })\n public monthsView: IgxMonthsViewComponent;\n\n /**\n * @hidden\n */\n @ViewChild(\"decade\", { read: IgxYearsViewComponent })\n public dacadeView: IgxYearsViewComponent;\n\n /**\n * @hidden\n */\n @ViewChild(\"days\", { read: IgxDaysViewComponent })\n public daysView: IgxDaysViewComponent;\n\n /**\n * @hidden\n */\n @ViewChild(\"yearsBtn\")\n public yearsBtn: ElementRef;\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.pageup\", [\"$event\"])\n public previousPage(event?: KeyboardEvent) {\n event?.preventDefault();\n this.previousViewDate = this.viewDate;\n\n if (this.isDefaultView) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', -1).native;\n }\n\n if (this.isDecadeView) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', -15).native;\n }\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate,\n });\n }\n\n /**\n * @hidden\n */\n @HostListener(\"keydown.pagedown\", [\"$event\"])\n public nextPage(event?: KeyboardEvent) {\n event?.preventDefault();\n this.previousViewDate = this.viewDate;\n\n if (this.isDefaultView) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', 1).native;\n }\n\n if (this.isDecadeView) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', 15).native;\n }\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate,\n });\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewDecadeKB(date: Date, event: KeyboardEvent, activeViewIdx: number) {\n\t\tsuper.activeViewDecadeKB(event, activeViewIdx);\n\n\t\tif (this.platform.isActivationKey(event)) {\n this.viewDate = date;\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n\t\t}\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic onActiveViewDecade(event: MouseEvent, date: Date, activeViewIdx: number): void {\n event.preventDefault();\n\n\t\tsuper.activeViewDecade(activeViewIdx);\n this.viewDate = date;\n\t}\n\n /**\n * @hidden\n */\n public override activeViewDecadeKB(event: KeyboardEvent) {\n super.activeViewDecadeKB(event);\n\n if (event.key === this.platform.KEYMAP.ARROW_RIGHT) {\n this.nextPage(event);\n }\n\n if (event.key === this.platform.KEYMAP.ARROW_LEFT) {\n this.previousPage(event);\n }\n }\n\n /**\n * @hidden\n */\n public override activeViewDecade() {\n super.activeViewDecade();\n\n if (this.platform.isBrowser) {\n requestAnimationFrame(() => {\n if (this.dacadeView?.el?.nativeElement) {\n this.dacadeView.el.nativeElement.focus();\n }\n });\n }\n }\n\n /**\n * @hidden\n */\n public changePageKB(event: KeyboardEvent, next = true) {\n if (this.platform.isActivationKey(event)) {\n event.stopPropagation();\n\n if (next) {\n this.nextPage();\n } else {\n this.previousPage();\n }\n }\n }\n\n /**\n * @hidden\n */\n public selectYear(event: Date) {\n this.previousViewDate = this.viewDate;\n\n this.viewDate = new Date(\n event.getFullYear(),\n event.getMonth(),\n event.getDate(),\n );\n\n this.activeView = IgxCalendarView.Year;\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n }\n\n /**\n * @hidden\n */\n public selectMonth(event: Date) {\n this.selectDate(event);\n this.selected.emit(this.selectedDates);\n }\n\n /**\n * Selects a date.\n * ```typescript\n * this.monthPicker.selectDate(new Date(`2018-06-12`));\n * ```\n */\n public override selectDate(value: Date) {\n if (!value) {\n return new Date();\n }\n\n super.selectDate(value);\n this.viewDate = value;\n }\n\n /**\n * @hidden\n */\n public getNextYear() {\n return CalendarDay.from(this.viewDate).add('year', 1).year;\n }\n\n /**\n * @hidden\n */\n public getPreviousYear() {\n return CalendarDay.from(this.viewDate).add('year', -1).year;\n }\n\n /**\n * @hidden\n */\n public updateDate(date: Date) {\n this.previousViewDate = this.viewDate;\n this.viewDate = CalendarDay.from(date).add('year', -this.activeViewIdx).native;\n\n if (this.isDefaultView) {\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate,\n });\n }\n }\n\n @HostListener('mousedown', ['$event'])\n protected onMouseDown(event: MouseEvent) {\n event.stopPropagation();\n if (this.platform.isBrowser && this.wrapper?.nativeElement) {\n this.wrapper.nativeElement.focus();\n }\n }\n\n private _showActiveDay: boolean;\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n protected set showActiveDay(value: boolean) {\n this._showActiveDay = value;\n this.cdr.detectChanges();\n }\n\n protected get showActiveDay() {\n return this._showActiveDay;\n }\n\n protected get activeDescendant(): number {\n if (this.activeView === 'month') {\n return (this.value as Date)?.getTime();\n }\n\n return this._activeDescendant ?? this.viewDate.getTime();\n }\n\n protected set activeDescendant(date: Date) {\n this._activeDescendant = date.getTime();\n }\n\n public override get isDefaultView(): boolean {\n return this.activeView === IgxCalendarView.Year;\n }\n\n public ngOnInit() {\n this.activeView = IgxCalendarView.Year;\n }\n\n public ngAfterViewInit() {\n this.keyboardNavigation\n .attachKeyboardHandlers(this.wrapper, this)\n .set(\"ArrowUp\", this.onArrowUp)\n .set(\"ArrowDown\", this.onArrowDown)\n .set(\"ArrowLeft\", this.onArrowLeft)\n .set(\"ArrowRight\", this.onArrowRight)\n .set(\"Enter\", this.onEnter)\n .set(\" \", this.onEnter)\n .set(\"Home\", this.onHome)\n .set(\"End\", this.onEnd)\n .set(\"PageUp\", this.handlePageUp)\n .set(\"PageDown\", this.handlePageDown);\n\n this.activeView$.subscribe((view) => {\n this.activeViewChanged.emit(view);\n\n this.viewDateChanged.emit({\n previousValue: this.previousViewDate,\n currentValue: this.viewDate\n });\n });\n }\n\n protected onWrapperFocus(event: FocusEvent) {\n event.stopPropagation();\n this.showActiveDay = true;\n }\n\n protected onWrapperBlur(event: FocusEvent) {\n event.stopPropagation();\n\n this.showActiveDay = false;\n this._onTouchedCallback();\n }\n\n private handlePageUpDown(event: KeyboardEvent, delta: number) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isDefaultView && event.shiftKey) {\n this.viewDate = CalendarDay.from(this.viewDate).add('year', delta).native;\n this.cdr.detectChanges();\n } else {\n delta > 0 ? this.nextPage() : this.previousPage();\n }\n }\n\n private handlePageUp(event: KeyboardEvent) {\n this.handlePageUpDown(event, -1);\n }\n\n private handlePageDown(event: KeyboardEvent) {\n this.handlePageUpDown(event, 1);\n }\n\n private onArrowUp(event: KeyboardEvent) {\n if (this.isDefaultView) {\n this.monthsView.onKeydownArrowUp(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownArrowUp(event);\n }\n }\n\n private onArrowDown(event: KeyboardEvent) {\n if (this.isDefaultView) {\n this.monthsView.onKeydownArrowDown(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownArrowDown(event);\n }\n }\n\n private onArrowLeft(event: KeyboardEvent) {\n if (this.isDefaultView) {\n this.monthsView.onKeydownArrowLeft(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownArrowLeft(event);\n }\n }\n\n private onArrowRight(event: KeyboardEvent) {\n if (this.isDefaultView) {\n this.monthsView.onKeydownArrowRight(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownArrowRight(event);\n }\n }\n\n private onEnter(event: KeyboardEvent) {\n event.stopPropagation();\n\n if (this.isDefaultView) {\n this.monthsView.onKeydownEnter(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownEnter(event);\n }\n }\n\n private onHome(event: KeyboardEvent) {\n event.stopPropagation();\n if (this.isDefaultView) {\n this.monthsView.onKeydownHome(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownHome(event);\n }\n }\n\n private onEnd(event: KeyboardEvent) {\n event.stopPropagation();\n if (this.isDefaultView) {\n this.monthsView.onKeydownEnd(event);\n }\n\n if (this.isDecadeView) {\n this.dacadeView.onKeydownEnd(event);\n }\n }\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic ngOnDestroy(): void {\n this.keyboardNavigation.detachKeyboardHandlers();\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getPrevYearDate(date: Date): Date {\n\t\treturn CalendarDay.from(date).add('year', -1).native;\n\t}\n\n\t/**\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getNextYearDate(date: Date): Date {\n return CalendarDay.from(date).add('year', 1).native;\n\t}\n\n\t/**\n\t * Getter for the context object inside the calendar templates.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tpublic getContext(i: number) {\n const date = CalendarDay.from(this.viewDate).add('month', i).native;\n\t\treturn this.generateContext(date, i);\n\t}\n\n\t/**\n\t * Helper method building and returning the context object inside the calendar templates.\n\t *\n\t * @hidden\n\t * @internal\n\t */\n\tprivate generateContext(value: Date | Date[], i?: number) {\n const construct = (date: Date, index: number) => ({\n index: index,\n date,\n ...formatToParts(date, this.locale, this.formatOptions, [\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"weekday\",\n ]),\n });\n\n const formatObject = Array.isArray(value)\n ? value.map((date, index) => construct(date, index))\n : construct(value, i);\n\n return { $implicit: formatObject };\n\t}\n}\n","<!-- Previous arrow icon -->\n<ng-template #prevArrow let-obj>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"arrow_prev\"></igx-icon>\n</ng-template>\n\n<!-- Next arrow icon -->\n<ng-template #nextArrow let-obj>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"arrow_next\"></igx-icon>\n</ng-template>\n\n<!-- Previous picker button -->\n<ng-template #prevPageButton let-obj>\n <div\n #prevPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__prev\"\n role=\"button\"\n [attr.aria-label]=\"prevNavLabel((getPrevYearDate(viewDate) | date: 'yyyy'))\"\n data-action=\"prev\"\n igxCalendarScrollPage\n (mousedown)=\"previousPage()\"\n (keydown)=\"changePageKB($event, false)\"\n >\n <ng-container *ngTemplateOutlet=\"prevArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Next picker button -->\n<ng-template #nextPageButton let-obj>\n <div\n #nextPageBtn\n tabindex=\"0\"\n class=\"igx-calendar-picker__next\"\n role=\"button\"\n [attr.aria-label]=\"nextNavLabel((getNextYearDate(viewDate) | date: 'yyyy'))\"\n data-action=\"next\"\n igxCalendarScrollPage\n (mousedown)=\"nextPage()\"\n (keydown)=\"changePageKB($event)\"\n >\n <ng-container *ngTemplateOutlet=\"nextArrow\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Year -->\n<ng-template #defaultYear let-obj>\n @if (activeView === 'year') {\n <span class=\"igx-calendar__aria-off-screen\" aria-live=\"polite\">{{ formattedYear(obj.date) }}</span>\n }\n <span\n #yearsBtn\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"(obj.date | date: 'yyyy') + ', ' + resourceStrings.igx_calendar_select_year\"\n (keydown)=\"onActiveViewDecadeKB(obj.date, $event, obj.index)\"\n (mousedown)=\"onActiveViewDecade($event, obj.date, obj.index)\"\n class=\"igx-calendar-picker__date\">\n {{ formattedYear(obj.date) }}\n </span>\n</ng-template>\n\n<!-- Decade -->\n<ng-template #defaultDecade>\n <span>{{ getDecadeRange().start }} - {{ getDecadeRange().end }}</span>\n</ng-template>\n\n<!-- PICKER IN MONTHS -->\n<ng-template #calendarYearPicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\">\n <ng-container\n *ngTemplateOutlet=\"defaultYear; context: getContext(0)\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<!-- PICKER IN YEARS -->\n<ng-template #calendarDecadePicker>\n <section class=\"igx-calendar-picker\">\n <div class=\"igx-calendar-picker__dates\" aria-live=\"polite\">\n <ng-container\n *ngTemplateOutlet=\"defaultDecade;\">\n </ng-container>\n </div>\n <div class=\"igx-calendar-picker__nav\">\n <ng-container *ngTemplateOutlet=\"prevPageButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"nextPageButton\"></ng-container>\n </div>\n </section>\n</ng-template>\n\n<div\n #wrapper\n [tabIndex]=\"0\"\n class=\"igx-calendar__wrapper\"\n [attr.aria-activedescendant]=\"activeDescendant\"\n [attr.aria-multiselectable]=\"selection !== 'single'\"\n aria-labelledby=\"calendar-desc\"\n role=\"grid\"\n (focus)=\"this.onWrapperFocus($event)\"\n (blur)=\"this.onWrapperBlur($event)\"\n >\n <caption id=\"calendar-desc\" tabindex=\"-1\" class=\"igx-calendar__aria-off-screen\">\n {{ resourceStrings.igx_calendar_singular_single_selection}}\n </caption>\n\n <section class=\"igx-calendar__pickers\">\n @if (isDefaultView) {\n <ng-container *ngTemplateOutlet=\"calendarYearPicker\"></ng-container>\n }\n\n @if (isDecadeView) {\n <ng-container *ngTemplateOutlet=\"calendarDecadePicker\"></ng-container>\n }\n </section>\n\n <section class=\"igx-calendar__body\">\n @if (isDefaultView) {\n <igx-months-view\n #months\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.month\"\n [monthFormat]=\"formatOptions.month\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (selected)=\"selectMonth($event)\"\n (pageChanged)=\"updateDate($event)\"\n (mousedown)=\"$event.preventDefault()\">\n >\n </igx-months-view>\n }\n\n @if (isDecadeView) {\n <igx-years-view\n #decade\n role=\"rowgroup\"\n [tabIndex]=\"-1\"\n [date]=\"viewDate\"\n [locale]=\"locale\"\n [formatView]=\"formatViews.year\"\n [yearFormat]=\"formatOptions.year\"\n [showActive]=\"showActiveDay\"\n [standalone]=\"false\"\n (swiperight)=\"previousPage()\"\n (swipeleft)=\"nextPage()\"\n (selected)=\"selectYear($event)\"\n (pageChanged)=\"updateDate($event)\"\n (mousedown)=\"$event.preventDefault()\"\n >\n </igx-years-view>\n }\n </section>\n</div>\n","import { IgxCalendarComponent } from './calendar.component';\nimport { IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarMonthDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarYearDirective } from './calendar.directives';\nimport { IgxDaysViewComponent } from './days-view/days-view.component';\nimport { IgxMonthPickerComponent } from './month-picker/month-picker.component';\nimport { IgxMonthsViewComponent } from './months-view/months-view.component';\nimport { IgxYearsViewComponent } from './years-view/years-view.component';\n\nexport * from './calendar';\nexport * from './calendar.component';\nexport * from './calendar.directives';\nexport * from './days-view/days-view.component';\nexport * from './months-view/months-view.component';\nexport * from './years-view/years-view.component';\nexport * from './month-picker/month-picker.component';\n\n/* NOTE: Calendar directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_CALENDAR_DIRECTIVES = [\n IgxCalendarComponent,\n IgxDaysViewComponent,\n IgxMonthsViewComponent,\n IgxYearsViewComponent,\n IgxMonthPickerComponent,\n IgxCalendarHeaderTemplateDirective,\n IgxCalendarHeaderTitleTemplateDirective,\n IgxCalendarMonthDirective,\n IgxCalendarYearDirective,\n IgxCalendarSubheaderTemplateDirective\n] as const;\n\n","import { NgModule } from '@angular/core';\nimport { IGX_CALENDAR_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_CALENDAR_DIRECTIVES\n ],\n exports: [\n ...IGX_CALENDAR_DIRECTIVES\n ]\n})\nexport class IgxCalendarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NEXT_ID","i1.IgxCalendarComponent","i2.IgxDaysViewComponent","i3.IgxMonthsViewComponent","i4.IgxYearsViewComponent","i5.IgxMonthPickerComponent","i6.IgxCalendarHeaderTemplateDirective","i6.IgxCalendarHeaderTitleTemplateDirective","i6.IgxCalendarMonthDirective","i6.IgxCalendarYearDirective","i6.IgxCalendarSubheaderTemplateDirective"],"mappings":"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"}
|