{"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    DestroyRef,\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 { getCurrentI18n, getDateFormatter, IResourceChangeEventArgs } from 'igniteui-i18n-core';\nimport {\n    CalendarDay,\n    DateRangeType,\n    DayInterval,\n    getNextActiveDate,\n    isDate,\n    isDateInRanges,\n    onResourceChangeHandle\n} 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 get formatter(): Intl.DateTimeFormat {\n        return getDateFormatter().getIntlFormatter(this.locale);\n    }\n\n    /**\n     * @hidden\n     */\n    protected _locale;\n\n    /**\n     * @hidden\n     */\n    protected _defaultLocale;\n\n   private _date = new Date();\n   private _destroyRef = inject(DestroyRef);\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 || this._defaultLocale;\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    }\n\n    constructor() {\n        this.initLocale();\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 get range(): Date[];\n\n    private initLocale() {\n        this._defaultLocale = getCurrentI18n();\n        onResourceChangeHandle(this._destroyRef, (args: CustomEvent<IResourceChangeEventArgs>) => {\n            this._defaultLocale = args.detail.newLocale;\n        }, this);\n    }\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 { getDateFormatter } from 'igniteui-i18n-core';\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    }\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    protected override get formatter() {\n        return getDateFormatter().getIntlFormatter(this.locale, { month: this.monthFormat });\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 = getDateFormatter().getIntlFormatter(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","<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 { getDateFormatter } from 'igniteui-i18n-core';\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    protected override get formatter(): Intl.DateTimeFormat {\n        return getDateFormatter().getIntlFormatter(this.locale, { year: this.yearFormat});\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    }\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 = getDateFormatter().getIntlFormatter(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 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, DestroyRef } from '@angular/core';\nimport { IFormattingOptions, IFormattingViews, IViewDateChangeEventArgs, ScrollDirection, IgxCalendarView, CalendarSelection } from './calendar';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { noop, Subject } from 'rxjs';\nimport { getCurrentI18n, getDateFormatter, IResourceChangeEventArgs } from 'igniteui-i18n-core';\nimport {\n    isDate,\n    isEqual,\n    PlatformUtil,\n    DateRangeDescriptor,\n    DateTimeUtil,\n    CalendarResourceStringsEN,\n    ICalendarResourceStrings,\n    DEFAULT_LOCALE,\n    getCurrentResourceStrings,\n    onResourceChangeHandle,\n    CalendarDay,\n    getYearRange,\n    isDateInRanges,\n    WEEKDAYS,\n    I18N_FORMATTER\n} from 'igniteui-angular/core';\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 _destroyRef = inject(DestroyRef);\n    protected platform = inject(PlatformUtil);\n    protected _localeId = inject(LOCALE_ID);\n    protected keyboardNavigation? = inject(KeyboardNavigationService);\n    protected cdr? = inject(ChangeDetectorRef);\n    protected i18nFormatter = inject(I18N_FORMATTER);\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 get formatterWeekday(): Intl.DateTimeFormat {\n        return getDateFormatter().getIntlFormatter(this.locale, { weekday: this._formatOptions.weekday });\n    }\n\n    /**\n     * @hidden\n     */\n    protected get formatterDay(): Intl.DateTimeFormat {\n        return getDateFormatter().getIntlFormatter(this.locale, { day: this._formatOptions.day });\n    }\n\n    /**\n     * @hidden\n     */\n    protected get formatterMonth(): Intl.DateTimeFormat {\n        return getDateFormatter().getIntlFormatter(this.locale, { month: this._formatOptions.month });\n    }\n\n    /**\n     * @hidden\n     */\n    protected get formatterYear(): Intl.DateTimeFormat {\n        return getDateFormatter().getIntlFormatter(this.locale, { year: this._formatOptions.year });\n    }\n\n    /**\n     * @hidden\n     */\n    protected get formatterMonthDay(): Intl.DateTimeFormat {\n        return getDateFormatter().getIntlFormatter(this.locale, { month: this._formatOptions.month, day: this._formatOptions.day });\n    }\n\n    /**\n     * @hidden\n     */\n    protected get formatterRangeDay(): Intl.DateTimeFormat {\n        return getDateFormatter().getIntlFormatter(this.locale, { day: this._formatOptions.day, month: 'short' });\n    }\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 _defaultLocale: string;\n\n    /**\n     * @hidden\n     */\n    private _weekStart: WEEKDAYS | number;\n\n    /**\n     * @hidden\n     */\n    private _localeWeekStart: 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    private _resourceStrings: ICalendarResourceStrings = null;\n    private _defaultResourceStrings = 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 || this._defaultResourceStrings;\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 || this._localeWeekStart;\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 || this._defaultLocale;\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 = this.i18nFormatter.verifyLocale(value);\n        // changing locale runtime needs to update the `weekStart` too\n        this._localeWeekStart = this.i18nFormatter.getLocaleFirstDayOfWeek(this._locale);\n        this._defaultResourceStrings = getCurrentResourceStrings(CalendarResourceStringsEN, false, this._locale);\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    }\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        this.initLocale();\n        this.viewDate = this.viewDate ? this.viewDate : new Date();\n    }\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 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    private initLocale() {\n        this._defaultLocale = getCurrentI18n();\n        this._locale = this._localeId !== DEFAULT_LOCALE ? this._localeId : this._locale;\n        this._localeWeekStart = this.i18nFormatter.getLocaleFirstDayOfWeek(this.locale);\n        onResourceChangeHandle(this._destroyRef, this.onResourceChange, this);\n    }\n\n    private onResourceChange(args: CustomEvent<IResourceChangeEventArgs>) {\n        this._defaultLocale = args.detail.newLocale;\n        if (!this._locale) {\n            this._defaultResourceStrings = getCurrentResourceStrings(CalendarResourceStringsEN, false);\n        }\n        this._localeWeekStart = this.i18nFormatter.getLocaleFirstDayOfWeek(this.locale);\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    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\";\nimport { getDateFormatter } from 'igniteui-i18n-core';\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    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 = getDateFormatter().getIntlFormatter(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\tbooleanAttribute,\n    HostListener,\n} from '@angular/core';\nimport { NgTemplateOutlet } 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 { getDateFormatter } from 'igniteui-i18n-core';\nimport { areSameMonth, CalendarDay, formatToParts, getClosestActiveDate, isDateInRanges, IgxDateFormatterPipe } 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, IgxDateFormatterPipe, IgxMonthViewSlotsCalendar, IgxGetViewDateCalendar]\n})\nexport class IgxCalendarComponent extends IgxCalendarBaseDirective implements AfterViewInit {\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        this._destroyRef.onDestroy(() => {\n            this.keyboardNavigation.detachKeyboardHandlers();\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 monthFormatted = getDateFormatter().formatDateTime(date, this.locale, { month: 'short', day: 'numeric' });\n        const dayFormatted = getDateFormatter().formatDateTime(date, this.locale,{ weekday: 'short' });\n\n\t\treturn {\n\t\t\tmonthday: monthFormatted,\n\t\t\tweekday: dayFormatted,\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 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 }},&nbsp;</span>\n        <span>{{ getFormattedDate().monthday }}</span>\n    }\n    @if (selection === 'range') {\n        <span>{{ selectedDates.length === 0 ? 'Start' : getFormattedRange().start}}</span>\n        <span>&nbsp;-&nbsp;</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    OnInit,\n} from \"@angular/core\";\nimport { NgTemplateOutlet } 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, IgxDateFormatterPipe } 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        IgxDateFormatterPipe,\n        IgxIconComponent,\n        IgxMonthsViewComponent,\n        IgxYearsViewComponent,\n    ]\n})\nexport class IgxMonthPickerComponent extends IgxCalendarBaseDirective implements OnInit, AfterViewInit {\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        this._destroyRef.onDestroy(() => {\n            this.keyboardNavigation.detachKeyboardHandlers();\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 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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"}