{"version":3,"file":"igniteui-angular-date-picker.mjs","sources":["../../../projects/igniteui-angular/date-picker/src/date-picker/picker-base.directive.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/predefined-ranges/predefined-ranges-area.component.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/predefined-ranges/predefined-ranges-area-component.html","../../../projects/igniteui-angular/date-picker/src/date-picker/calendar-container/calendar-container.component.ts","../../../projects/igniteui-angular/date-picker/src/date-picker/calendar-container/calendar-container.component.html","../../../projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts","../../../projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.html","../../../projects/igniteui-angular/date-picker/src/date-picker/public_api.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker-inputs.common.ts","../../../projects/igniteui-angular/input-group/src/input-group/input-group.component.html","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.html","../../../projects/igniteui-angular/date-picker/src/date-range-picker/public_api.ts","../../../projects/igniteui-angular/date-picker/src/date-picker/date-picker.module.ts","../../../projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.module.ts","../../../projects/igniteui-angular/date-picker/src/igniteui-angular-date-picker.ts"],"sourcesContent":["import {\n    AfterContentChecked,\n    AfterViewInit, booleanAttribute, ContentChildren, Directive, ElementRef, EventEmitter,\n    inject,\n    Input, LOCALE_ID, OnDestroy, Output, QueryList, ViewChild\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IGX_INPUT_GROUP_TYPE, IgxInputGroupComponent, IgxInputGroupType, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport {\n    DateRange,\n    EditorProvider,\n    IBaseCancelableBrowserEventArgs,\n    IBaseEventArgs,\n    IgxOverlayOutletDirective,\n    IgxPickerClearComponent,\n    IgxPickerToggleComponent,\n    IToggleView,\n    OverlaySettings,\n    PickerHeaderOrientation,\n    PickerInteractionMode,\n    WEEKDAYS,\n    DEFAULT_LOCALE,\n    onResourceChangeHandle,\n    I18N_FORMATTER\n} from 'igniteui-angular/core';\nimport { getCurrentI18n, IResourceChangeEventArgs } from 'igniteui-i18n-core';\n\n@Directive()\nexport abstract class PickerBaseDirective implements IToggleView, EditorProvider, AfterViewInit, AfterContentChecked, OnDestroy {\n    public element = inject(ElementRef);\n    protected _localeId = inject<string>(LOCALE_ID);\n    protected _inputGroupType = inject<IgxInputGroupType>(IGX_INPUT_GROUP_TYPE, { optional: true });\n    protected i18nFormatter = inject(I18N_FORMATTER);\n\n    /**\n     * The editor's input mask.\n     *\n     * @remarks\n     * Also used as a placeholder when none is provided.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker inputFormat=\"dd/MM/yy\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public set inputFormat(value: string) {\n        this._inputFormat = value;\n    };\n\n    public get inputFormat(): string {\n        return this._inputFormat;\n    }\n\n    /**\n     * The format used to display the picker's value when it's not being edited.\n     *\n     * @remarks\n     * Uses Angular's DatePipe.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker displayFormat=\"EE/M/yy\"></igx-date-picker>\n     * ```\n     *\n     */\n    @Input()\n    public set displayFormat(value: string) {\n        this._displayFormat = value;\n    };\n\n    public get displayFormat(): string {\n        return this._displayFormat ?? this._inputFormat;\n    };\n\n    /**\n     * Sets the `placeholder` of the picker's input.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [placeholder]=\"'Choose your date'\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public placeholder = '';\n\n    /**\n     * Can be `dropdown` with editable input field or `dialog` with readonly input field.\n     *\n     * @remarks\n     * Default mode is `dropdown`\n     *\n     * @example\n     * ```html\n     * <igx-date-picker mode=\"dialog\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public mode: PickerInteractionMode = PickerInteractionMode.DropDown;\n\n    /**\n     * Gets/Sets the orientation of the `IgxDatePickerComponent` header.\n     *\n     *  @example\n     * ```html\n     * <igx-date-picker headerOrientation=\"vertical\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public headerOrientation: PickerHeaderOrientation = PickerHeaderOrientation.Horizontal;\n\n    /**\n     * Gets/Sets whether the header is hidden in dialog mode.\n     *\n     *  @example\n     * ```html\n     * <igx-date-picker mode=\"dialog\" [hideHeader]=\"true\"></igx-date-picker>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public hideHeader = false;\n\n    /**\n     * Overlay settings used to display the pop-up element.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [overlaySettings]=\"customOverlaySettings\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public overlaySettings: OverlaySettings;\n\n    /**\n     * Enables or disables the picker.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [disabled]=\"'true'\"></igx-date-picker>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public disabled = false;\n\n    /**\n     * @example\n     * ```html\n     * <igx-date-picker locale=\"jp\"></igx-date-picker>\n     * ```\n     */\n    /**\n     * Gets the `locale` of the date-picker.\n     * If not set, defaults to applciation'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 date-picker.\n     * Expects a valid BCP 47 language tag.\n     */\n    public set locale(value: string) {\n        this._locale = this.i18nFormatter.verifyLocale(value);\n        this.updateResources();\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.i18nFormatter.getLocaleFirstDayOfWeek(this.locale);\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     * The container used for the pop-up element.\n     *\n     * @example\n     * ```html\n     * <div igxOverlayOutlet #outlet=\"overlay-outlet\"></div>\n     * <!-- ... -->\n     * <igx-date-picker [outlet]=\"outlet\"></igx-date-picker>\n     * <!-- ... -->\n     * ```\n     */\n    @Input()\n    public outlet: IgxOverlayOutletDirective | ElementRef;\n\n    /**\n     * Determines how the picker's input will be styled.\n     *\n     * @remarks\n     * Default is `box`.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [type]=\"'line'\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public set type(val: IgxInputGroupType) {\n        this._type = val;\n    }\n    public get type(): IgxInputGroupType {\n        return this._type || this._inputGroupType;\n    }\n\n    /**\n     * Gets/Sets the default template editor's tabindex.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [tabIndex]=\"1\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public tabIndex: number | string;\n\n    /**\n     * Emitted when the calendar has started opening, cancelable.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker (opening)=\"handleOpening($event)\"></igx-date-picker>\n     * ```\n     */\n    @Output()\n    public opening = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n    /**\n     * Emitted after the calendar has opened.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker (opened)=\"handleOpened($event)\"></igx-date-picker>\n     * ```\n     */\n    @Output()\n    public opened = new EventEmitter<IBaseEventArgs>();\n\n    /**\n     * Emitted when the calendar has started closing, cancelable.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker (closing)=\"handleClosing($event)\"></igx-date-picker>\n     * ```\n     */\n    @Output()\n    public closing = new EventEmitter<IBaseCancelableBrowserEventArgs>();\n\n    /**\n     * Emitted after the calendar has closed.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker (closed)=\"handleClosed($event)\"></igx-date-picker>\n     * ```\n     */\n    @Output()\n    public closed = new EventEmitter<IBaseEventArgs>();\n\n    /** @hidden @internal */\n    @ContentChildren(IgxPickerToggleComponent, { descendants: true })\n    public toggleComponents: QueryList<IgxPickerToggleComponent>;\n\n    /** @hidden @internal */\n    @ContentChildren(IgxPickerClearComponent, { descendants: true })\n    public clearComponents: QueryList<IgxPickerClearComponent>;\n\n    @ContentChildren(IgxPrefixDirective, { descendants: true })\n    protected prefixes: QueryList<IgxPrefixDirective>;\n\n    @ContentChildren(IgxSuffixDirective, { descendants: true })\n    protected suffixes: QueryList<IgxSuffixDirective>;\n\n    @ViewChild(IgxInputGroupComponent)\n    protected inputGroup: IgxInputGroupComponent;\n\n    protected _locale: string;\n    protected _defaultLocale: string;\n    protected _inputFormat: string;\n    protected _displayFormat: string;\n    protected _collapsed = true;\n    protected _type: IgxInputGroupType;\n    protected _minValue: Date | string;\n    protected _maxValue: Date | string;\n    protected _weekStart: WEEKDAYS | number;\n    protected abstract get toggleContainer(): HTMLElement | undefined;\n\n    /**\n     * Gets the picker's pop-up state.\n     *\n     * @example\n     * ```typescript\n     * const state = this.picker.collapsed;\n     * ```\n     */\n    public get collapsed(): boolean {\n        return this._collapsed;\n    }\n\n    /** @hidden @internal */\n    public get isDropdown(): boolean {\n        return this.mode === PickerInteractionMode.DropDown;\n    }\n\n    /**\n     * Returns if there's focus within the picker's element OR popup container\n     * @hidden @internal\n     */\n    public get isFocused(): boolean {\n        const document = this.element.nativeElement?.getRootNode() as Document | ShadowRoot;\n        if (!document?.activeElement) return false;\n\n        return this.element.nativeElement.contains(document.activeElement)\n            || !this.collapsed && this.toggleContainer.contains(document.activeElement);\n    }\n\n    protected _destroy$ = new Subject<void>();\n\n    // D.P. EventEmitter<string | Date | DateRange | null> throws on strict checks for more restrictive overrides\n    // w/ TS2416 Type 'string | Date ...' not assignable to type 'DateRange' due to observer method check\n    public abstract valueChange: EventEmitter<any>;\n\n    constructor() {\n        this.initLocale();\n    }\n\n    /** @hidden @internal */\n    public ngAfterViewInit(): void {\n        this.subToIconsClicked(this.toggleComponents, () => this.toggle());\n        this.subToIconsClicked(this.clearComponents, () => this.clear());\n    }\n\n    /** @hidden @internal */\n    public ngAfterContentChecked(): void {\n        if (this.inputGroup && this.prefixes?.length > 0) {\n            this.inputGroup.prefixes = this.prefixes;\n        }\n\n        if (this.inputGroup && this.suffixes?.length > 0) {\n            this.inputGroup.suffixes = this.suffixes;\n        }\n    }\n\n    /** @hidden @internal */\n    public ngOnDestroy(): void {\n        this._destroy$.next();\n        this._destroy$.complete();\n    }\n\n    /** Subscribes to the click events of toggle/clear icons in a query */\n    private subToIconsClicked(\n        components: QueryList<IgxPickerToggleComponent | IgxPickerClearComponent>,\n        handler: () => void\n    ): void {\n        const subscribeToClick = componentList => {\n            componentList.forEach(component => {\n                component.clicked\n                    .pipe(takeUntil(merge(componentList.changes, this._destroy$)))\n                    .subscribe(handler);\n            });\n        };\n\n        subscribeToClick(components);\n\n        components.changes.pipe(takeUntil(this._destroy$))\n            .subscribe(() => subscribeToClick(components));\n    }\n\n    protected initLocale() {\n        this._defaultLocale = getCurrentI18n();\n        this._locale = this._localeId !== DEFAULT_LOCALE ? this._localeId : this._locale;\n        onResourceChangeHandle(this._destroy$, this.onResourceChange, this);\n    }\n\n    protected onResourceChange(args: CustomEvent<IResourceChangeEventArgs>) {\n        this._defaultLocale = args.detail.newLocale;\n        this.updateResources();\n    }\n\n    protected updateResources() { }\n\n    public abstract select(value: Date | DateRange | string): void;\n    public abstract open(settings?: OverlaySettings): void;\n    public abstract toggle(settings?: OverlaySettings): void;\n    public abstract close(): void;\n    public abstract clear(): void;\n    public abstract getEditElement(): HTMLInputElement;\n}\n","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { IgxChipComponent } from 'igniteui-angular/chips';\nimport { CalendarDay, CustomDateRange, DateRange, DateRangePickerResourceStringsEN, IDateRangePickerResourceStrings } from 'igniteui-angular/core';\n\n\ntype PredefinedRangeKey = 'last7Days' | 'currentMonth' | 'last30Days' | 'yearToDate';\n\n@Component({\n    selector: 'igx-predefined-ranges-area',\n    standalone: true,\n    imports: [IgxChipComponent],\n    templateUrl: './predefined-ranges-area-component.html',\n    styles: [`\n    :host { display:block; }\n    .igx-predefined-ranges {\n      display:flex; flex-wrap:wrap; gap:.5rem; padding:.5rem .75rem;\n    }\n  `],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IgxPredefinedRangesAreaComponent {\n    @Input() public usePredefinedRanges = false;\n    @Input() public customRanges: CustomDateRange[] = [];\n    @Input() public resourceStrings: IDateRangePickerResourceStrings = DateRangePickerResourceStringsEN as any;\n\n    @Output() public rangeSelect = new EventEmitter<DateRange>();\n\n    public get ranges(): CustomDateRange[] {\n        const base = this.usePredefinedRanges ? this.getPredefinedRanges() : [];\n        return [...base, ...(this.customRanges ?? [])];\n    }\n\n    public trackByLabel = (i: number, r: CustomDateRange) => r.label;\n\n    public onSelect(range: DateRange) {\n        this.rangeSelect.emit(range);\n    }\n\n    private getLabel(rs: any, shortKey: string, prefixedKey: string, fallback: string): string {\n        return rs?.[shortKey] ?? rs?.[prefixedKey] ?? fallback;\n    }\n\n    private getPredefinedRanges(): CustomDateRange[] {\n        const today = CalendarDay.today;\n        const rs: any = this.resourceStrings ?? {};\n\n        const labels = {\n            last7Days: this.getLabel(rs, 'last7Days', 'igx_date_range_picker_last7Days', 'Last 7 Days'),\n            currentMonth: this.getLabel(rs, 'currentMonth', 'igx_date_range_picker_currentMonth', 'Current Month'),\n            last30Days: this.getLabel(rs, 'last30Days', 'igx_date_range_picker_last30Days', 'Last 30 Days'),\n            yearToDate: this.getLabel(rs, 'yearToDate', 'igx_date_range_picker_yearToDate', 'Year to Date')\n        };\n\n        const startOfMonth = new Date(today.native.getFullYear(), today.native.getMonth(), 1);\n        const endOfMonth = new Date(today.native.getFullYear(), today.native.getMonth() + 1, 0);\n        const startOfYear = new Date(today.native.getFullYear(), 0, 1);\n\n        const predefinedRanges: { key: PredefinedRangeKey; get: () => { start: Date; end: Date } }[] = [\n            { key: 'last7Days', get: () => ({ start: today.add('day', -7).native, end: today.native }) },\n            { key: 'currentMonth', get: () => ({ start: startOfMonth, end: endOfMonth }) },\n            { key: 'last30Days', get: () => ({ start: today.add('day', -29).native, end: today.native }) },\n            { key: 'yearToDate', get: () => ({ start: startOfYear, end: today.native }) },\n        ];\n\n        return predefinedRanges.map(range => ({\n            label: labels[range.key],\n            dateRange: range.get()\n        }));\n    }\n}\n","<div class=\"igx-predefined-ranges\" role=\"group\" aria-label=\"Predefined ranges\">\n  @for (r of ranges; track r.label) {\n    <igx-chip (click)=\"onSelect(r.dateRange)\">\n      {{ r.label }}\n    </igx-chip>\n  }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n    Component,\n    ViewChild,\n    Output, EventEmitter,\n    HostListener,\n    HostBinding\n} from '@angular/core';\nimport { IgxButtonDirective, IgxRippleDirective } from 'igniteui-angular/directives';\nimport { IgxCalendarComponent } from 'igniteui-angular/calendar';\nimport { IgxDividerDirective } from 'igniteui-angular/directives';\nimport { IBaseEventArgs, DateRange, CustomDateRange, PickerInteractionMode, IDateRangePickerResourceStrings, IgxPickerActionsDirective } from 'igniteui-angular/core';\nimport { IgxPredefinedRangesAreaComponent } from '../../date-range-picker/predefined-ranges/predefined-ranges-area.component';\n\n/** @hidden */\n@Component({\n    selector: 'igx-calendar-container',\n    styles: [':host {display: block;}'],\n    templateUrl: 'calendar-container.component.html',\n    imports: [\n        IgxButtonDirective,\n        IgxRippleDirective,\n        IgxCalendarComponent,\n        NgTemplateOutlet,\n        IgxDividerDirective,\n        IgxPredefinedRangesAreaComponent\n    ]\n})\nexport class IgxCalendarContainerComponent {\n    @ViewChild(IgxCalendarComponent, { static: true })\n    public calendar: IgxCalendarComponent;\n\n    @Output()\n    public calendarClose = new EventEmitter<IBaseEventArgs>();\n\n    @Output()\n    public calendarCancel = new EventEmitter<IBaseEventArgs>();\n\n    @Output()\n    public todaySelection = new EventEmitter<IBaseEventArgs>();\n\n    @Output()\n    public rangeSelected = new EventEmitter<DateRange>();\n\n\n    @HostBinding('class.igx-date-picker')\n    public styleClass = 'igx-date-picker';\n\n    @HostBinding('class.igx-date-picker--dropdown')\n    public get dropdownCSS(): boolean {\n        return this.mode === PickerInteractionMode.DropDown;\n    }\n\n    public usePredefinedRanges = false;\n    public customRanges: CustomDateRange[] = [];\n    public resourceStrings!: IDateRangePickerResourceStrings;\n    public vertical = false;\n    public closeButtonLabel: string;\n    public cancelButtonLabel: string;\n    public todayButtonLabel: string;\n    public mode: PickerInteractionMode = PickerInteractionMode.DropDown;\n    public pickerActions: IgxPickerActionsDirective;\n\n    @HostListener('keydown.alt.arrowup', ['$event'])\n    public onEscape(event) {\n        event.preventDefault();\n        this.calendarClose.emit();\n    }\n\n    public get isReadonly() {\n        return this.mode === PickerInteractionMode.Dialog;\n    }\n}\n\n/** @hidden */\n\n","<ng-template #defaultPickerActions>\n    @if (closeButtonLabel || cancelButtonLabel || todayButtonLabel) {\n        <div class=\"igx-date-picker__buttons\">\n            @if (cancelButtonLabel) {\n            <button\n            #cancelButton type=\"button\"\n            igxButton=\"flat\" igxRipple\n            (click)=\"calendarCancel.emit({ owner: this})\"\n            >\n                {{ cancelButtonLabel }}\n            </button>\n            }\n            @if (closeButtonLabel) {\n                <button\n                    #closeButton\n                    type=\"button\"\n                    igxButton=\"flat\"\n                    igxRipple\n                    (click)=\"calendarClose.emit({ owner: this})\"\n                >\n                    {{ closeButtonLabel }}\n                </button>\n            }\n            @if (todayButtonLabel) {\n                <button\n                    #todayButton\n                    type=\"button\"\n                    igxButton=\"flat\"\n                    igxRipple\n                    (click)=\"todaySelection.emit({ owner: this })\"\n                >\n                    {{ todayButtonLabel }}\n                </button>\n            }\n        </div>\n    }\n</ng-template>\n\n<igx-calendar></igx-calendar>\n @if( usePredefinedRanges || (customRanges?.length || 0) > 0 ){\n        <igx-predefined-ranges-area\n            [usePredefinedRanges]=\"usePredefinedRanges\"\n            [customRanges]=\"customRanges\"\n            [resourceStrings]=\"resourceStrings\"\n            (rangeSelect)=\"rangeSelected.emit($event)\">\n        </igx-predefined-ranges-area>\n    }\n@if (pickerActions?.template || (closeButtonLabel || todayButtonLabel)) {\n    <igx-divider></igx-divider>\n}\n@if (pickerActions?.template || (closeButtonLabel || cancelButtonLabel || todayButtonLabel)) {\n    <div class=\"igx-date-picker__actions\">\n        <ng-container\n            *ngTemplateOutlet=\"\n                pickerActions?.template || defaultPickerActions;\n                context: { $implicit: calendar }\n            \"\n        >\n        </ng-container>\n    </div>\n}\n","import {\n    AfterViewChecked,\n    AfterViewInit,\n    AfterContentChecked,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    PipeTransform,\n    Renderer2,\n    ViewChild,\n    ViewContainerRef,\n    booleanAttribute,\n    inject\n} from '@angular/core';\nimport {\n    AbstractControl,\n    ControlValueAccessor,\n    NgControl,\n    NG_VALIDATORS,\n    NG_VALUE_ACCESSOR,\n    ValidationErrors,\n    Validator\n} from '@angular/forms';\nimport {\n    IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective,\n     IFormattingViews, IFormattingOptions\n} from 'igniteui-angular/calendar';\nimport {\n    IgxLabelDirective, IgxInputState, IgxInputGroupComponent, IgxPrefixDirective, IgxInputDirective, IgxSuffixDirective,\n    IgxReadOnlyInputDirective\n} from 'igniteui-angular/input-group';\nimport { fromEvent, Subscription, noop, MonoTypeOperatorFunction } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { IgxDateTimeEditorDirective, IgxTextSelectionDirective } from 'igniteui-angular/directives';\nimport {\n    AbsoluteScrollStrategy,\n    AutoPositionStrategy,\n    IgxOverlayService,\n    OverlayCancelableEventArgs,\n    OverlayEventArgs,\n    OverlaySettings,\n    IgxPickerActionsDirective,\n    DatePickerResourceStringsEN,\n    IDatePickerResourceStrings,\n    DateRangeDescriptor,\n    DateRangeType,\n    IBaseCancelableBrowserEventArgs,\n    isDate,\n    PlatformUtil,\n    getCurrentResourceStrings,\n    PickerCalendarOrientation,\n    DateTimeUtil,\n    DatePartDeltas,\n    DatePart,\n    isDateInRanges,\n    IgxOverlayOutletDirective,\n    I18N_FORMATTER\n} from 'igniteui-angular/core';\nimport { IDatePickerValidationFailedEventArgs } from './date-picker.common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\nimport { PickerBaseDirective } from './picker-base.directive';\nimport { IgxCalendarContainerComponent } from './calendar-container/calendar-container.component';\n\nlet NEXT_ID = 0;\n\n/**\n * Date Picker displays a popup calendar that lets users select a single date.\n *\n * @igxModule IgxDatePickerModule\n * @igxTheme igx-calendar-theme, igx-icon-theme\n * @igxGroup Scheduling\n * @igxKeywords datepicker, calendar, schedule, date\n * @example\n * ```html\n * <igx-date-picker [(ngModel)]=\"selectedDate\"></igx-date-picker>\n * ```\n */\n@Component({\n    providers: [\n        { provide: NG_VALUE_ACCESSOR, useExisting: IgxDatePickerComponent, multi: true },\n        { provide: NG_VALIDATORS, useExisting: IgxDatePickerComponent, multi: true }\n    ],\n    selector: 'igx-date-picker',\n    templateUrl: 'date-picker.component.html',\n    styles: [':host { display: block; }'],\n    imports: [\n        IgxInputGroupComponent,\n        IgxPrefixDirective,\n        IgxIconComponent,\n        IgxInputDirective,\n        IgxReadOnlyInputDirective,\n        IgxDateTimeEditorDirective,\n        IgxTextSelectionDirective,\n        IgxSuffixDirective\n    ]\n})\nexport class IgxDatePickerComponent extends PickerBaseDirective implements ControlValueAccessor, Validator,\n    OnInit, AfterViewInit, OnDestroy, AfterViewChecked, AfterContentChecked {\n    private _overlayService = inject<IgxOverlayService>(IgxOverlayService);\n    private _injector = inject(Injector);\n    private _renderer = inject(Renderer2);\n    private platform = inject(PlatformUtil);\n    private cdr = inject(ChangeDetectorRef);\n    private _i18nFormatter = inject(I18N_FORMATTER);\n\n\n    /**\n     * Gets/Sets whether the inactive dates will be hidden.\n     *\n     * @remarks\n     * Applies to dates that are out of the current month.\n     * Default value is `false`.\n     * @example\n     * ```html\n     * <igx-date-picker [hideOutsideDays]=\"true\"></igx-date-picker>\n     * ```\n     * @example\n     * ```typescript\n     * let hideOutsideDays = this.datePicker.hideOutsideDays;\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public hideOutsideDays: boolean;\n\n    /**\n     * Gets/Sets the number of month views displayed.\n     *\n     * @remarks\n     * Default value is `1`.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [displayMonthsCount]=\"2\"></igx-date-picker>\n     * ```\n     * @example\n     * ```typescript\n     * let monthViewsDisplayed = this.datePicker.displayMonthsCount;\n     * ```\n     */\n    @Input()\n    public displayMonthsCount = 1;\n\n    /**\n    * Gets/Sets the orientation of the multiple months displayed in the picker's calendar's days view.\n    *\n    * @example\n    * <igx-date-picker orientation=\"vertical\"></igx-date-picker>\n    */\n    @Input()\n    public orientation: PickerCalendarOrientation = PickerCalendarOrientation.Horizontal;\n\n    /**\n     * Show/hide week numbers\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [showWeekNumbers]=\"true\"></igx-date-picker>\n     * ``\n     */\n    @Input({ transform: booleanAttribute })\n    public showWeekNumbers: boolean;\n\n\n    /**\n     * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n     * By default it is the current date, or the value of the picker, if set.\n     */\n    @Input()\n    public get activeDate(): Date {\n        const today = new Date(new Date().setHours(0, 0, 0, 0));\n        const dateValue = DateTimeUtil.isValidDate(this._dateValue) ? new Date(this._dateValue.setHours(0, 0, 0, 0)) : null;\n        return this._activeDate ?? dateValue ?? this._calendar?.activeDate ?? today;\n    }\n\n    public set activeDate(value: Date) {\n        this._activeDate = value;\n    }\n\n    /**\n     * Gets/Sets a custom formatter function on the selected or passed date.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [value]=\"date\" [formatter]=\"formatter\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public formatter: (val: Date) => string;\n\n    /**\n     * Gets/Sets the today button's label.\n     *\n     *  @example\n     * ```html\n     * <igx-date-picker todayButtonLabel=\"Today\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public todayButtonLabel: string;\n\n    /**\n     * Gets/Sets the cancel button's label.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker cancelButtonLabel=\"Cancel\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public cancelButtonLabel: string;\n\n    /**\n     * Specify if the currently spun date segment should loop over.\n     *\n     *  @example\n     * ```html\n     * <igx-date-picker [spinLoop]=\"false\"></igx-date-picker>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public spinLoop = true;\n\n    /**\n     * Delta values used to increment or decrement each editor date part on spin actions.\n     * All values default to `1`.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [spinDelta]=\"{ date: 5, month: 2 }\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public spinDelta: Pick<DatePartDeltas, 'date' | 'month' | 'year'>;\n\n    /**\n     * Gets/Sets the container used for the popup element.\n     *\n     * @remarks\n     *  `outlet` is an instance of `IgxOverlayOutletDirective` or an `ElementRef`.\n     * @example\n     * ```html\n     * <div igxOverlayOutlet #outlet=\"overlay-outlet\"></div>\n     * //..\n     * <igx-date-picker [outlet]=\"outlet\"></igx-date-picker>\n     * //..\n     * ```\n     */\n    @Input()\n    public override outlet: IgxOverlayOutletDirective | ElementRef;\n\n    /**\n     * Gets/Sets the value of `id` attribute.\n     *\n     * @remarks If not provided it will be automatically generated.\n     * @example\n     * ```html\n     * <igx-date-picker [id]=\"'igx-date-picker-3'\" cancelButtonLabel=\"cancel\" todayButtonLabel=\"today\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    @HostBinding('attr.id')\n    public id = `igx-date-picker-${NEXT_ID++}`;\n\n    //#region calendar members\n\n    /**\n     * Gets/Sets the format views of the `IgxDatePickerComponent`.\n     *\n     * @example\n     * ```typescript\n     * let formatViews = this.datePicker.formatViews;\n     *  this.datePicker.formatViews = {day:false, month: false, year:false};\n     * ```\n     */\n    @Input()\n    public formatViews: IFormattingViews;\n\n    /**\n     * Gets/Sets the disabled dates descriptors.\n     *\n     * @example\n     * ```typescript\n     * let disabledDates = this.datepicker.disabledDates;\n     * this.datePicker.disabledDates = [ {type: DateRangeType.Weekends}, ...];\n     * ```\n     */\n    @Input()\n    public get disabledDates(): DateRangeDescriptor[] {\n        return this._disabledDates;\n    }\n    public set disabledDates(value: DateRangeDescriptor[]) {\n        this._disabledDates = value;\n        this._onValidatorChange();\n    }\n\n    /**\n     * Gets/Sets the special dates descriptors.\n     *\n     * @example\n     * ```typescript\n     * let specialDates = this.datepicker.specialDates;\n     * this.datePicker.specialDates = [ {type: DateRangeType.Weekends}, ... ];\n     * ```\n     */\n    @Input()\n    public get specialDates(): DateRangeDescriptor[] {\n        return this._specialDates;\n    }\n    public set specialDates(value: DateRangeDescriptor[]) {\n        this._specialDates = value;\n    }\n\n\n    /**\n     * Gets/Sets the format options of the `IgxDatePickerComponent`.\n     *\n     * @example\n     * ```typescript\n     * this.datePicker.calendarFormat = {day: \"numeric\",  month: \"long\", weekday: \"long\", year: \"numeric\"};\n     * ```\n     */\n    @Input()\n    public calendarFormat: IFormattingOptions;\n\n    //#endregion\n\n    /**\n     * Gets/Sets the selected date.\n     *\n     *  @example\n     * ```html\n     * <igx-date-picker [value]=\"date\"></igx-date-picker>\n     * ```\n     */\n    @Input()\n    public get value(): Date | string {\n        return this._value;\n    }\n    public set value(date: Date | string) {\n        this._value = date;\n        this.setDateValue(date);\n        if (this.dateTimeEditor.value !== date) {\n            this.dateTimeEditor.value = this._dateValue;\n        }\n        this.valueChange.emit(this.dateValue);\n        this._onChangeCallback(this.dateValue);\n    }\n\n    /**\n     * The minimum value the picker will accept.\n     *\n     * @example\n     * <igx-date-picker [minValue]=\"minDate\"></igx-date-picker>\n     */\n    @Input()\n    public set minValue(value: Date | string) {\n        this._minValue = value;\n        this._onValidatorChange();\n    }\n\n    public get minValue(): Date | string {\n        return this._minValue;\n    }\n\n    /**\n     * The maximum value the picker will accept.\n     *\n     * @example\n     * <igx-date-picker [maxValue]=\"maxDate\"></igx-date-picker>\n     */\n    @Input()\n    public set maxValue(value: Date | string) {\n        this._maxValue = value;\n        this._onValidatorChange();\n    }\n\n    public get maxValue(): Date | string {\n        return this._maxValue;\n    }\n\n    /**\n     * Gets/Sets the resource strings for the picker's default toggle icon.\n     * By default it uses EN resources.\n     */\n    @Input()\n    public resourceStrings: IDatePickerResourceStrings;\n\n    /** @hidden @internal */\n    @Input({ transform: booleanAttribute })\n    public readOnly = false;\n\n    /**\n     * Emitted when the picker's value changes.\n     *\n     * @remarks\n     * Used for `two-way` bindings.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker [(value)]=\"date\"></igx-date-picker>\n     * ```\n     */\n    @Output()\n    public valueChange = new EventEmitter<Date>();\n\n    /**\n     * Emitted when the user types/spins invalid date in the date-picker editor.\n     *\n     *  @example\n     * ```html\n     * <igx-date-picker (validationFailed)=\"onValidationFailed($event)\"></igx-date-picker>\n     * ```\n     */\n    @Output()\n    public validationFailed = new EventEmitter<IDatePickerValidationFailedEventArgs>();\n\n    /** @hidden @internal */\n    @ContentChild(IgxLabelDirective)\n    public label: IgxLabelDirective;\n\n    @ContentChild(IgxCalendarHeaderTitleTemplateDirective)\n    private headerTitleTemplate: IgxCalendarHeaderTitleTemplateDirective;\n\n    @ContentChild(IgxCalendarHeaderTemplateDirective)\n    private headerTemplate: IgxCalendarHeaderTemplateDirective;\n\n    @ViewChild(IgxDateTimeEditorDirective, { static: true })\n    private dateTimeEditor: IgxDateTimeEditorDirective;\n\n    @ViewChild(IgxInputGroupComponent, { read: ViewContainerRef })\n    private viewContainerRef: ViewContainerRef;\n\n    @ViewChild(IgxLabelDirective)\n    private labelDirective: IgxLabelDirective;\n\n    @ViewChild(IgxInputDirective)\n    private inputDirective: IgxInputDirective;\n\n    @ContentChild(IgxCalendarSubheaderTemplateDirective)\n    private subheaderTemplate: IgxCalendarSubheaderTemplateDirective;\n\n    @ContentChild(IgxPickerActionsDirective)\n    private pickerActions: IgxPickerActionsDirective;\n\n    private get dialogOverlaySettings(): OverlaySettings {\n        return Object.assign({}, this._dialogOverlaySettings, this.overlaySettings);\n    }\n\n    private get dropDownOverlaySettings(): OverlaySettings {\n        return Object.assign({}, this._dropDownOverlaySettings, this.overlaySettings);\n    }\n\n    private get inputGroupElement(): HTMLElement {\n        return this.inputGroup?.element.nativeElement.querySelector('.igx-input-group__bundle');\n    }\n\n    private get dateValue(): Date {\n        return this._dateValue;\n    }\n\n    private get pickerFormatViews(): IFormattingViews {\n        return Object.assign({}, this._defFormatViews, this.formatViews);\n    }\n\n    private get pickerCalendarFormat(): IFormattingOptions {\n        return Object.assign({}, this._calendarFormat, this.calendarFormat);\n    }\n\n    /** @hidden @internal */\n    public displayValue: PipeTransform = { transform: (date: Date) => this.formatter(date) };\n\n    private _resourceStrings = getCurrentResourceStrings(DatePickerResourceStringsEN);\n    private _dateValue: Date;\n    private _overlayId: string;\n    private _value: Date | string;\n    private _ngControl: NgControl = null;\n    private _statusChanges$: Subscription;\n    private _calendar: IgxCalendarComponent;\n    private _calendarContainer?: HTMLElement;\n    private _specialDates: DateRangeDescriptor[] = null;\n    private _disabledDates: DateRangeDescriptor[] = null;\n    private _activeDate: Date = null;\n    private _overlaySubFilter:\n        [MonoTypeOperatorFunction<OverlayEventArgs>,\n            MonoTypeOperatorFunction<OverlayEventArgs | OverlayCancelableEventArgs>] = [\n            filter(x => x.id === this._overlayId),\n            takeUntil(this._destroy$)\n        ];\n    private _dropDownOverlaySettings: OverlaySettings = {\n        target: this.inputGroupElement,\n        closeOnOutsideClick: true,\n        modal: false,\n        closeOnEscape: true,\n        scrollStrategy: new AbsoluteScrollStrategy(),\n        positionStrategy: new AutoPositionStrategy({\n            openAnimation: fadeIn,\n            closeAnimation: fadeOut\n        })\n    };\n    private _dialogOverlaySettings: OverlaySettings = {\n        closeOnOutsideClick: true,\n        modal: true,\n        closeOnEscape: true\n    };\n    private _calendarFormat: IFormattingOptions = {\n        day: 'numeric',\n        month: 'short',\n        weekday: 'short',\n        year: 'numeric'\n    };\n    private _defFormatViews: IFormattingViews = {\n        day: false,\n        month: true,\n        year: false\n    };\n    private _onChangeCallback: (_: Date) => void = noop;\n    private _onTouchedCallback: () => void = noop;\n    private _onValidatorChange: () => void = noop;\n\n    constructor() {\n        super();\n        this.initLocale();\n    }\n\n    /** @hidden @internal */\n    public get required(): boolean {\n        if (this._ngControl && this._ngControl.control && this._ngControl.control.validator) {\n            // Run the validation with empty object to check if required is enabled.\n            const error = this._ngControl.control.validator({} as AbstractControl);\n            return error && error.required;\n        }\n\n        return false;\n    }\n\n    /** @hidden @internal */\n    public get pickerResourceStrings(): IDatePickerResourceStrings {\n        return Object.assign({}, this._resourceStrings, this.resourceStrings);\n    }\n\n    protected override get toggleContainer(): HTMLElement | undefined {\n        return this._calendarContainer;\n    }\n\n    /** @hidden @internal */\n    @HostListener('keydown', ['$event'])\n    public onKeyDown(event: KeyboardEvent) {\n        switch (event.key) {\n            case this.platform.KEYMAP.ARROW_UP:\n                if (event.altKey) {\n                    this.close();\n                }\n                break;\n            case this.platform.KEYMAP.ARROW_DOWN:\n                if (event.altKey) {\n                    this.open();\n                }\n                break;\n            case this.platform.KEYMAP.SPACE:\n                event.preventDefault();\n                this.open();\n                break;\n        }\n    }\n\n    /**\n     * Opens the picker's dropdown or dialog.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker #picker></igx-date-picker>\n     *\n     * <button type=\"button\" igxButton (click)=\"picker.open()\">Open Dialog</button>\n     * ```\n     */\n    public open(settings?: OverlaySettings): void {\n        if (!this.collapsed || this.disabled || this.readOnly) {\n            return;\n        }\n\n        const overlaySettings = Object.assign({}, this.isDropdown\n            ? this.dropDownOverlaySettings\n            : this.dialogOverlaySettings\n            , settings);\n\n        if (this.isDropdown && this.inputGroupElement) {\n            overlaySettings.target = this.inputGroupElement;\n        }\n        if (this.outlet) {\n            overlaySettings.outlet = this.outlet;\n        }\n        this._overlayId = this._overlayService\n            .attach(IgxCalendarContainerComponent, this.viewContainerRef, overlaySettings);\n        this._overlayService.show(this._overlayId);\n    }\n\n    /**\n     * Toggles the picker's dropdown or dialog\n     *\n     * @example\n     * ```html\n     * <igx-date-picker #picker></igx-date-picker>\n     *\n     * <button type=\"button\" igxButton (click)=\"picker.toggle()\">Toggle Dialog</button>\n     * ```\n     */\n    public toggle(settings?: OverlaySettings): void {\n        if (this.collapsed) {\n            this.open(settings);\n        } else {\n            this.close();\n        }\n    }\n\n    /**\n     * Closes the picker's dropdown or dialog.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker #picker></igx-date-picker>\n     *\n     * <button type=\"button\" igxButton (click)=\"picker.close()\">Close Dialog</button>\n     * ```\n     */\n    public close(): void {\n        if (!this.collapsed) {\n            this._overlayService.hide(this._overlayId);\n        }\n    }\n\n    /**\n     * Selects a date.\n     *\n     * @remarks Updates the value in the input field.\n     *\n     * @example\n     * ```typescript\n     * this.datePicker.select(date);\n     * ```\n     * @param date passed date that has to be set to the calendar.\n     */\n    public select(value: Date): void {\n        this.value = value;\n    }\n\n    /**\n     * Selects today's date and closes the picker.\n     *\n     * @example\n     * ```html\n     * <igx-date-picker #picker></igx-date-picker>\n     *\n     * <button type=\"button\" igxButton (click)=\"picker.selectToday()\">Select Today</button>\n     * ```\n     * */\n    public selectToday(): void {\n        const today = new Date();\n        today.setHours(0);\n        today.setMinutes(0);\n        today.setSeconds(0);\n        today.setMilliseconds(0);\n        this.select(today);\n        this.close();\n    }\n\n    /**\n     * Clears the input field and the picker's value.\n     *\n     * @example\n     * ```typescript\n     * this.datePicker.clear();\n     * ```\n     */\n    public clear(): void {\n        if (!this.disabled || !this.readOnly) {\n            this._calendar?.deselectDate();\n            this.dateTimeEditor.clear();\n        }\n    }\n\n    /**\n     * Increment a specified `DatePart`.\n     *\n     * @param datePart The optional DatePart to increment. Defaults to Date.\n     * @param delta The optional delta to increment by. Overrides `spinDelta`.\n     * @example\n     * ```typescript\n     * this.datePicker.increment(DatePart.Date);\n     * ```\n     */\n    public increment(datePart?: DatePart, delta?: number): void {\n        this.dateTimeEditor.increment(datePart, delta);\n    }\n\n    /**\n     * Decrement a specified `DatePart`\n     *\n     * @param datePart The optional DatePart to decrement. Defaults to Date.\n     * @param delta The optional delta to decrement by. Overrides `spinDelta`.\n     * @example\n     * ```typescript\n     * this.datePicker.decrement(DatePart.Date);\n     * ```\n     */\n    public decrement(datePart?: DatePart, delta?: number): void {\n        this.dateTimeEditor.decrement(datePart, delta);\n    }\n\n    //#region Control Value Accessor\n    /** @hidden @internal */\n    public writeValue(value: Date | string) {\n        this._value = value;\n        this.setDateValue(value);\n        if (this.dateTimeEditor.value !== value) {\n            this.dateTimeEditor.value = this._dateValue;\n        }\n    }\n\n    /** @hidden @internal */\n    public registerOnChange(fn: any) {\n        this._onChangeCallback = fn;\n    }\n\n    /** @hidden @internal */\n    public registerOnTouched(fn: any) {\n        this._onTouchedCallback = fn;\n    }\n\n    /** @hidden @internal */\n    public setDisabledState?(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n    //#endregion\n\n    //#region Validator\n    /** @hidden @internal */\n    public registerOnValidatorChange(fn: any) {\n        this._onValidatorChange = fn;\n    }\n\n    /** @hidden @internal */\n    public validate(control: AbstractControl): ValidationErrors | null {\n        if (!control.value) {\n            return null;\n        }\n        // InvalidDate handling\n        if (isDate(control.value) && !DateTimeUtil.isValidDate(control.value)) {\n            return { value: true };\n        }\n\n        const errors = {};\n        const value = DateTimeUtil.isValidDate(control.value) ? control.value : DateTimeUtil.parseIsoDate(control.value);\n        if (value && this.disabledDates && isDateInRanges(value, this.disabledDates)) {\n            Object.assign(errors, { dateIsDisabled: true });\n        }\n        Object.assign(errors, DateTimeUtil.validateMinMax(value, this.minValue, this.maxValue, false));\n\n        return Object.keys(errors).length > 0 ? errors : null;\n    }\n    //#endregion\n\n    /** @hidden @internal */\n    public ngOnInit(): void {\n        this._ngControl = this._injector.get<NgControl>(NgControl, null);\n    }\n\n    /** @hidden @internal */\n    public override ngAfterViewInit() {\n        super.ngAfterViewInit();\n        this.subscribeToClick();\n        this.subscribeToOverlayEvents();\n        this.subscribeToDateEditorEvents();\n\n        this._dropDownOverlaySettings.excludeFromOutsideClick = [this.inputGroup.element.nativeElement];\n\n        fromEvent(this.inputDirective.nativeElement, 'blur')\n            .pipe(takeUntil(this._destroy$))\n            .subscribe(() => {\n                if (this.collapsed) {\n                    this._onTouchedCallback();\n                    this.updateValidity();\n                }\n            });\n\n        if (this._ngControl) {\n            this._statusChanges$ =\n                this._ngControl.statusChanges.subscribe(this.onStatusChanged.bind(this));\n            if (this._ngControl.control.validator) {\n                this.inputGroup.isRequired = this.required;\n                this.cdr.detectChanges();\n            }\n        }\n    }\n\n    /** @hidden @internal */\n    public ngAfterViewChecked() {\n        if (this.labelDirective) {\n            this._renderer.setAttribute(this.inputDirective.nativeElement, 'aria-labelledby', this.labelDirective.id);\n        }\n    }\n\n    /** @hidden @internal */\n    public override ngOnDestroy(): void {\n        super.ngOnDestroy();\n        if (this._statusChanges$) {\n            this._statusChanges$.unsubscribe();\n        }\n        if (this._overlayId) {\n            this._overlayService.detach(this._overlayId);\n            delete this._overlayId;\n        }\n    }\n\n    /** @hidden @internal */\n    public getEditElement(): HTMLInputElement {\n        return this.inputDirective.nativeElement;\n    }\n\n    private subscribeToClick() {\n        fromEvent(this.getEditElement(), 'click')\n            .pipe(takeUntil(this._destroy$))\n            .subscribe(() => {\n                if (!this.isDropdown) {\n                    this.toggle();\n                }\n            });\n    }\n\n    private setDateValue(value: Date | string) {\n        if (isDate(value) && isNaN(value.getTime())) {\n            this._dateValue = value;\n            return;\n        }\n        this._dateValue = DateTimeUtil.isValidDate(value) ? value : DateTimeUtil.parseIsoDate(value);\n        if (this._calendar) {\n            this._calendar.selectDate(this._dateValue);\n            this._calendar.activeDate = this.activeDate;\n            this._calendar.viewDate = this.activeDate;\n            this.cdr.detectChanges();\n        }\n    }\n\n    private updateValidity() {\n        // B.P. 18 May 2021: IgxDatePicker does not reset its state upon resetForm #9526\n        if (this._ngControl && !this.disabled && this.isTouchedOrDirty) {\n            if (this.hasValidators && this.inputGroup.isFocused) {\n                this.inputDirective.valid = this._ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n            } else {\n                this.inputDirective.valid = this._ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n            }\n        } else {\n            this.inputDirective.valid = IgxInputState.INITIAL;\n        }\n    }\n\n    private get isTouchedOrDirty(): boolean {\n        return (this._ngControl.control.touched || this._ngControl.control.dirty);\n    }\n\n    private get hasValidators(): boolean {\n        return (!!this._ngControl.control.validator || !!this._ngControl.control.asyncValidator);\n    }\n\n    private onStatusChanged = () => {\n        this.disabled = this._ngControl.disabled;\n        this.updateValidity();\n        this.inputGroup.isRequired = this.required;\n    };\n\n    private handleSelection(date: Date): void {\n        if (this.dateValue && DateTimeUtil.isValidDate(this.dateValue)) {\n            date.setHours(this.dateValue.getHours());\n            date.setMinutes(this.dateValue.getMinutes());\n            date.setSeconds(this.dateValue.getSeconds());\n            date.setMilliseconds(this.dateValue.getMilliseconds());\n        }\n        this.value = date;\n        if (this._calendar) {\n            this._calendar.activeDate = this.activeDate;\n            this._calendar.viewDate = this.activeDate;\n        }\n        this.close();\n    }\n\n    private subscribeToDateEditorEvents(): void {\n        this.dateTimeEditor.valueChange.pipe(\n            takeUntil(this._destroy$)).subscribe(val => {\n                this.value = val;\n            });\n        this.dateTimeEditor.validationFailed.pipe(\n            takeUntil(this._destroy$)).subscribe((event) => {\n                this.validationFailed.emit({\n                    owner: this,\n                    prevValue: event.oldValue,\n                    currentValue: this.value\n                });\n            });\n    }\n\n    private subscribeToOverlayEvents() {\n        this._overlayService.opening.pipe(...this._overlaySubFilter).subscribe((e: OverlayCancelableEventArgs) => {\n            const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n            this.opening.emit(args);\n            e.cancel = args.cancel;\n            if (args.cancel) {\n                this._overlayService.detach(this._overlayId);\n                return;\n            }\n\n            this._initializeCalendarContainer(e.componentRef.instance);\n            this._calendarContainer = e.componentRef.location.nativeElement;\n            this._collapsed = false;\n        });\n\n        this._overlayService.opened.pipe(...this._overlaySubFilter).subscribe(() => {\n            this.opened.emit({ owner: this });\n\n            this._calendar.wrapper?.nativeElement?.focus();\n        });\n\n        this._overlayService.closing.pipe(...this._overlaySubFilter).subscribe((e: OverlayCancelableEventArgs) => {\n            const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: e.cancel };\n            this.closing.emit(args);\n            e.cancel = args.cancel;\n            if (args.cancel) {\n                return;\n            }\n            // do not focus the input if clicking outside in dropdown mode\n            const outsideEvent = args.event && (args.event as KeyboardEvent).key !== this.platform.KEYMAP.ESCAPE;\n            if (this.getEditElement() && !(outsideEvent && this.isDropdown)) {\n                this.inputDirective.focus();\n            } else {\n                this._onTouchedCallback();\n                this.updateValidity();\n            }\n        });\n\n        this._overlayService.closed.pipe(...this._overlaySubFilter).subscribe(() => {\n            this.closed.emit({ owner: this });\n            this._overlayService.detach(this._overlayId);\n            this._collapsed = true;\n            this._overlayId = null;\n            this._calendar = null;\n            this._calendarContainer = undefined;\n        });\n    }\n\n    private getMinMaxDates() {\n        const minValue = DateTimeUtil.isValidDate(this.minValue) ? this.minValue : DateTimeUtil.parseIsoDate(this.minValue);\n        const maxValue = DateTimeUtil.isValidDate(this.maxValue) ? this.maxValue : DateTimeUtil.parseIsoDate(this.maxValue);\n        return { minValue, maxValue };\n    }\n\n    private setDisabledDates(): void {\n        this._calendar.disabledDates = this.disabledDates ? [...this.disabledDates] : [];\n        const { minValue, maxValue } = this.getMinMaxDates();\n        if (minValue) {\n            this._calendar.disabledDates.push({ type: DateRangeType.Before, dateRange: [minValue] });\n        }\n        if (maxValue) {\n            this._calendar.disabledDates.push({ type: DateRangeType.After, dateRange: [maxValue] });\n        }\n    }\n\n    private _initializeCalendarContainer(componentInstance: IgxCalendarContainerComponent) {\n        this._calendar = componentInstance.calendar;\n        this._calendar.hasHeader = !this.isDropdown && !this.hideHeader;\n        this._calendar.formatOptions = this.pickerCalendarFormat;\n        this._calendar.formatViews = this.pickerFormatViews;\n        this._calendar.locale = this.locale;\n        this._calendar.weekStart = this.weekStart;\n        this._calendar.specialDates = this.specialDates;\n        this._calendar.headerTitleTemplate = this.headerTitleTemplate;\n        this._calendar.headerTemplate = this.headerTemplate;\n        this._calendar.subheaderTemplate = this.subheaderTemplate;\n        this._calendar.headerOrientation = this.headerOrientation;\n        this._calendar.hideOutsideDays = this.hideOutsideDays;\n        this._calendar.monthsViewNumber = this.displayMonthsCount;\n        this._calendar.showWeekNumbers = this.showWeekNumbers;\n        this._calendar.orientation = this.orientation;\n        this._calendar.selected.pipe(takeUntil(this._destroy$)).subscribe((ev: Date) => this.handleSelection(ev));\n        this.setDisabledDates();\n\n        if (DateTimeUtil.isValidDate(this.dateValue)) {\n            // calendar will throw if the picker's value is InvalidDate #9208\n            this._calendar.value = this.dateValue;\n        }\n        this._calendar.activeDate = this.activeDate;\n        this._calendar.viewDate = this.activeDate;\n\n        componentInstance.mode = this.mode;\n        componentInstance.closeButtonLabel = this.cancelButtonLabel;\n        componentInstance.todayButtonLabel = this.todayButtonLabel;\n        componentInstance.pickerActions = this.pickerActions;\n\n        componentInstance.calendarClose.pipe(takeUntil(this._destroy$)).subscribe(() => this.close());\n        componentInstance.todaySelection.pipe(takeUntil(this._destroy$)).subscribe(() => this.selectToday());\n    }\n\n    protected override updateResources(): void {\n        this._resourceStrings = getCurrentResourceStrings(DatePickerResourceStringsEN, false, this._locale);\n    }\n}\n","<igx-input-group [type]=\"type\">\n    @if (!toggleComponents.length) {\n        <igx-prefix (click)=\"toggle()\">\n            <igx-icon\n                [title]=\"\n                    value\n                        ? pickerResourceStrings.igx_date_picker_change_date\n                        : pickerResourceStrings.igx_date_picker_choose_date\n                \"\n                family=\"default\"\n                name=\"today\"\n            >\n            </igx-icon>\n        </igx-prefix>\n    }\n\n    <input class=\"igx-date-picker__input-date\"\n        [igxReadOnlyInput]=\"readOnly\"\n        [displayValuePipe]=\"formatter ? displayValue : null\" igxInput\n        [igxDateTimeEditor]=\"inputFormat\" [displayFormat]=\"displayFormat\"\n        [minValue]=\"minValue\" [maxValue]=\"maxValue\" [spinDelta]=\"spinDelta\" [spinLoop]=\"spinLoop\"\n        [disabled]=\"disabled\" [placeholder]=\"placeholder\" [readonly]=\"!isDropdown || readOnly\"\n        [igxTextSelection]=\"isDropdown && !readOnly\" [locale]=\"locale\" [attr.aria-expanded]=\"!collapsed\"\n        [attr.aria-labelledby]=\"label?.id\" aria-haspopup=\"dialog\" aria-autocomplete=\"none\" role=\"combobox\">\n\n    @if (!clearComponents.length && value) {\n        <igx-suffix (click)=\"clear()\">\n            <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n        </igx-suffix>\n    }\n\n    <ng-container ngProjectAs=\"[igxLabel]\">\n        <ng-content select=\"[igxLabel]\"></ng-content>\n    </ng-container>\n    <ng-container ngProjectAs=\"igx-prefix\">\n        <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n    </ng-container>\n    <ng-container ngProjectAs=\"igx-suffix\">\n        <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n    </ng-container>\n    <ng-container ngProjectAs=\"igx-hint\">\n        <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n    </ng-container>\n</igx-input-group>\n","import { IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent } from 'igniteui-angular/core';\nimport { IgxDatePickerComponent } from './date-picker.component';\nimport { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxCalendarHeaderTemplateDirective, IgxCalendarSubheaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective } from 'igniteui-angular/calendar';\n\nexport * from './date-picker.common';\nexport * from './date-picker.component';\nexport * from './calendar-container/calendar-container.component';\nexport * from './picker-base.directive';\n\n/* NOTE: Date picker directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_DATE_PICKER_DIRECTIVES = [\n    IgxDatePickerComponent,\n    IgxPickerToggleComponent,\n    IgxPickerClearComponent,\n    IgxPickerActionsDirective,\n    IgxLabelDirective,\n    IgxPrefixDirective,\n    IgxSuffixDirective,\n    IgxHintDirective,\n    IgxCalendarHeaderTemplateDirective,\n    IgxCalendarSubheaderTemplateDirective,\n    IgxCalendarHeaderTitleTemplateDirective\n] as const;\n","import { Component, ContentChild, Pipe, PipeTransform, Directive, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { IgxInputDirective, IgxInputGroupBase, IgxInputGroupComponent, IgxInputState, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxButtonDirective, IgxDateTimeEditorDirective } from 'igniteui-angular/directives';\nimport { isDate, DateRange, DateTimeUtil, BaseFormatter, I18N_FORMATTER } from 'igniteui-angular/core';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/** @hidden @internal */\n@Pipe({\n    name: 'dateRange',\n    standalone: true\n})\nexport class DateRangePickerFormatPipe implements PipeTransform {\n    private i18nFormatter: BaseFormatter = inject(I18N_FORMATTER);\n\n    public transform(values: DateRange, appliedFormat?: string,\n        locale?: string, formatter?: (_: DateRange) => string): string {\n        if (!values || !values.start && !values.end) {\n            return '';\n        }\n        if (formatter) {\n            return formatter(values);\n        }\n        let { start, end } = values;\n        if (!isDate(start)) {\n            start = DateTimeUtil.parseIsoDate(start);\n        }\n        if (!isDate(end)) {\n            end = DateTimeUtil.parseIsoDate(end);\n        }\n        const startDate = this.i18nFormatter.formatDate(start, appliedFormat, locale);\n        const endDate = this.i18nFormatter.formatDate(end, appliedFormat, locale);\n        let formatted;\n        if (start) {\n            formatted = `${startDate} - `;\n            if (end) {\n                formatted += endDate;\n            }\n        }\n\n        return formatted ? formatted : '';\n    }\n}\n\n/** @hidden @internal */\n@Component({\n    template: ``,\n    selector: `igx-date-range-base`,\n    providers: [{ provide: IgxInputGroupBase, useExisting: IgxDateRangeInputsBaseComponent }],\n    standalone: true\n})\nexport class IgxDateRangeInputsBaseComponent extends IgxInputGroupComponent {\n    @ContentChild(IgxDateTimeEditorDirective)\n    public dateTimeEditor: IgxDateTimeEditorDirective;\n\n    @ContentChild(IgxInputDirective)\n    public inputDirective: IgxInputDirective;\n\n    @ContentChild(NgControl)\n    protected ngControl: NgControl;\n\n    /** @hidden @internal */\n    public get nativeElement() {\n        return this.element.nativeElement;\n    }\n\n    /** @hidden @internal */\n    public setFocus(): void {\n        this.input.focus();\n    }\n\n    /** @hidden @internal */\n    public updateInputValue(value: Date) {\n        if (this.ngControl) {\n            this.ngControl.control.setValue(value);\n        } else {\n            this.dateTimeEditor.value = value;\n        }\n    }\n\n    /** @hidden @internal */\n    public updateInputValidity(state: IgxInputState) {\n        this.inputDirective.valid = state;\n    }\n}\n\n/**\n * Defines the start input for a date range picker\n *\n * @igxModule IgxDateRangePickerModule\n *\n * @igxTheme igx-input-group-theme, igx-calendar-theme, igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @remarks\n * When templating, start input has to be templated separately\n *\n * @example\n * ```html\n * <igx-date-range-picker mode=\"dropdown\">\n *      <igx-date-range-start>\n *          <input igxInput igxDateTimeEditor type=\"text\">\n *      </igx-date-range-start>\n *      ...\n * </igx-date-range-picker>\n * ```\n */\n@Component({\n    selector: 'igx-date-range-start',\n    templateUrl: '../../../input-group/src/input-group/input-group.component.html',\n    providers: [\n        { provide: IgxInputGroupBase, useExisting: IgxDateRangeStartComponent },\n        { provide: IgxDateRangeInputsBaseComponent, useExisting: IgxDateRangeStartComponent }\n    ],\n    imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent]\n})\nexport class IgxDateRangeStartComponent extends IgxDateRangeInputsBaseComponent { }\n\n/**\n * Defines the end input for a date range picker\n *\n * @igxModule IgxDateRangePickerModule\n *\n * @igxTheme igx-input-group-theme, igx-calendar-theme, igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @remarks\n * When templating, end input has to be template separately\n *\n * @example\n * ```html\n * <igx-date-range-picker mode=\"dropdown\">\n *      ...\n *      <igx-date-range-end>\n *          <input igxInput igxDateTimeEditor type=\"text\">\n *      </igx-date-range-end>\n * </igx-date-range-picker>\n * ```\n */\n@Component({\n    selector: 'igx-date-range-end',\n    templateUrl: '../../../input-group/src/input-group/input-group.component.html',\n    providers: [\n        { provide: IgxInputGroupBase, useExisting: IgxDateRangeEndComponent },\n        { provide: IgxDateRangeInputsBaseComponent, useExisting: IgxDateRangeEndComponent }\n    ],\n    imports: [NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, IgxSuffixDirective, IgxIconComponent]\n})\nexport class IgxDateRangeEndComponent extends IgxDateRangeInputsBaseComponent { }\n\n/**\n * Replaces the default separator `to` with the provided value\n *\n * @igxModule IgxDateRangePickerModule\n *\n * @igxTheme igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @example\n * ```html\n * <igx-date-range-picker>\n *      <igx-date-range-start>\n *          <input igxInput igxDateTimeEditor type=\"text\">\n *      </igx-date-range-start>\n *\n *      <ng-template igxDateRangeSeparator>-</ng-template>\n *\n *      <igx-date-range-end>\n *          <input igxInput igxDateTimeEditor type=\"text\">\n *      </igx-date-range-end>\n *      ...\n * </igx-date-range-picker>\n * ```\n */\n@Directive({\n    selector: '[igxDateRangeSeparator]',\n    standalone: true\n})\nexport class IgxDateRangeSeparatorDirective { }\n","@if (isTypeBox) {\n    <div class=\"igx-input-group__wrapper\">\n        <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n    </div>\n} @else {\n    <ng-container *ngTemplateOutlet=\"bundle\"></ng-container>\n}\n\n<div class=\"igx-input-group__hint\" (click)=\"hintClickHandler($event)\">\n    <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n</div>\n\n<ng-template #label>\n    <ng-content select=\"[igxLabel]\"></ng-content>\n</ng-template>\n\n<ng-template #input>\n    <ng-content select=\"[igxInput]\"></ng-content>\n</ng-template>\n\n<ng-template #prefix>\n    <ng-content select=\"igx-prefix, [igxPrefix]\"></ng-content>\n</ng-template>\n\n<!-- Dummy usage to satisfy Angular compiler -->\n<ng-template #dummy><span igxPrefix hidden></span></ng-template>\n\n<ng-template #uploadButton>\n    @if (isFileType) {\n        <div class=\"igx-input-group__upload-button igx-file-input__upload-button-wrapper\">\n            <button\n                igxButton=\"flat\"\n                type=\"button\"\n                tabindex=\"-1\"\n                [disabled]=\"disabled\"\n                class=\"igx-file-input__upload-button\"\n            >\n                {{ resourceStrings.igx_input_upload_button }}\n            </button>\n        </div>\n    }\n</ng-template>\n\n<ng-template #files>\n    @if (isFileType) {\n        <div\n            class=\"igx-input-group__file-input igx-file-input__file-names\"\n            [title]=\"fileNames\"\n        >\n            <span>{{ fileNames }}</span>\n        </div>\n    }\n</ng-template>\n\n<ng-template #clear>\n    @if (isFileType && isFilled) {\n        <igx-suffix\n            class=\"igx-input-group__clear-icon igx-file-input__clear-icon\"\n            (click)=\"clearValueHandler()\"\n            (keydown.Enter)=\"clearValueHandler()\"\n            title=\"clear files\"\n            tabindex=\"0\"\n        >\n            <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n        </igx-suffix>\n    }\n</ng-template>\n\n<ng-template #suffix>\n    <ng-content select=\"igx-suffix, [igxSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #materialBundle>\n    <div class=\"igx-input-group__bundle\">\n        <div class=\"igx-input-group__bundle-start\">\n            <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n        </div>\n\n        <ng-container>\n            <div class=\"igx-input-group__notch\">\n                <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n            </div>\n        </ng-container>\n\n        <div class=\"igx-input-group__bundle-main\">\n            <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n        </div>\n\n        <div class=\"igx-input-group__filler\"></div>\n\n        <div class=\"igx-input-group__bundle-end\">\n            <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n        </div>\n\n        @if (hasBorder) {\n            <div class=\"igx-input-group__line\"></div>\n        }\n    </div>\n</ng-template>\n\n<ng-template #fluentBundle>\n    <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n    <div class=\"igx-input-group__bundle\">\n        <div class=\"igx-input-group__bundle-start\">\n            <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n        </div>\n\n\n        <div class=\"igx-input-group__bundle-main\">\n            <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n        </div>\n\n        <div class=\"igx-input-group__bundle-end\">\n            <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n        </div>\n\n        @if (hasBorder) {\n            <div class=\"igx-input-group__line\"></div>\n        }\n    </div>\n</ng-template>\n\n<ng-template #bootstrapBundle>\n    <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n\n    <div class=\"igx-input-group__bundle\">\n        <div class=\"igx-input-group__bundle-start\">\n            <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\n        </div>\n\n        <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"files\"></ng-container>\n\n        <div class=\"igx-input-group__bundle-end\">\n            <ng-container *ngTemplateOutlet=\"clear\"></ng-container>\n            <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #bundle>\n    @switch (theme) {\n        @case ('bootstrap') {\n            <ng-container *ngTemplateOutlet=\"bootstrapBundle\"></ng-container>\n        }\n        @case ('fluent') {\n            <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n        }\n        @case ('indigo') {\n            <ng-container *ngTemplateOutlet=\"fluentBundle\"></ng-container>\n        }\n        @default {\n            <ng-container *ngTemplateOutlet=\"materialBundle\"></ng-container>\n        }\n    }\n</ng-template>\n","import {\n    AfterViewInit, booleanAttribute, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef,\n    EventEmitter, HostBinding, HostListener, Injector, Input,\n    OnChanges, OnDestroy, OnInit, Output, QueryList,\n    SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, inject\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n    AbstractControl, ControlValueAccessor, NgControl,\n    NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator\n} from '@angular/forms';\n\nimport { fromEvent, merge, MonoTypeOperatorFunction, noop, Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { CalendarSelection, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective } from 'igniteui-angular/calendar';\nimport {\n    DateRangeDescriptor,\n    DateRangeType,\n    DateRangePickerResourceStringsEN,\n    IDateRangePickerResourceStrings,\n    clamp,\n    IBaseCancelableBrowserEventArgs,\n    isDate,\n    parseDate,\n    PlatformUtil,\n    getCurrentResourceStrings,\n    AutoPositionStrategy,\n    IgxOverlayService,\n    OverlayCancelableEventArgs,\n    OverlayEventArgs,\n    OverlaySettings,\n    PositionSettings,\n    calendarRange,\n    CustomDateRange,\n    DateRange,\n    DateTimeUtil,\n    IgxPickerActionsDirective,\n    isDateInRanges,\n    PickerCalendarOrientation,\n    IgxOverlayOutletDirective\n} from 'igniteui-angular/core';\nimport { IgxCalendarContainerComponent } from '../date-picker/calendar-container/calendar-container.component';\nimport { PickerBaseDirective } from '../date-picker/picker-base.directive';\nimport {\n    IgxInputDirective,\n    IgxInputGroupComponent,\n    IgxInputState,\n    IgxLabelDirective,\n    IgxSuffixDirective,\n    IgxPrefixDirective,\n    IgxReadOnlyInputDirective,\n    IgxHintDirective\n} from 'igniteui-angular/input-group';\nimport {\n    IgxDateRangeEndComponent,\n    IgxDateRangeInputsBaseComponent,\n    IgxDateRangeSeparatorDirective,\n    IgxDateRangeStartComponent,\n    DateRangePickerFormatPipe,\n} from './date-range-picker-inputs.common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\nimport { IResourceChangeEventArgs } from 'igniteui-i18n-core';\n\nconst SingleInputDatesConcatenationString = ' - ';\n\n/**\n * Provides the ability to select a range of dates from a calendar UI or editable inputs.\n *\n * @igxModule IgxDateRangeModule\n *\n * @igxTheme igx-input-group-theme, igx-calendar-theme, igx-date-range-picker-theme\n *\n * @igxKeywords date, range, date range, date picker\n *\n * @igxGroup scheduling\n *\n * @remarks\n * It displays the range selection in a single or two input fields.\n * The default template displays a single *readonly* input field\n * while projecting `igx-date-range-start` and `igx-date-range-end`\n * displays two *editable* input fields.\n *\n * @example\n * ```html\n * <igx-date-range-picker mode=\"dropdown\"></igx-date-range-picker>\n * ```\n */\n@Component({\n    selector: 'igx-date-range-picker',\n    templateUrl: './date-range-picker.component.html',\n    providers: [\n        { provide: NG_VALUE_ACCESSOR, useExisting: IgxDateRangePickerComponent, multi: true },\n        { provide: NG_VALIDATORS, useExisting: IgxDateRangePickerComponent, multi: true }\n    ],\n    imports: [\n        NgTemplateOutlet,\n        IgxIconComponent,\n        IgxInputGroupComponent,\n        IgxInputDirective,\n        IgxPrefixDirective,\n        IgxSuffixDirective,\n        IgxReadOnlyInputDirective,\n        DateRangePickerFormatPipe\n    ]\n})\nexport class IgxDateRangePickerComponent extends PickerBaseDirective\n    implements OnChanges, OnInit, AfterViewInit, OnDestroy, ControlValueAccessor, Validator {\n    protected platform = inject(PlatformUtil);\n    private _injector = inject(Injector);\n    private _cdr = inject(ChangeDetectorRef);\n    private _overlayService = inject<IgxOverlayService>(IgxOverlayService);\n\n\n    /**\n     * The number of displayed month views.\n     *\n     * @remarks\n     * Default is `2`.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker [displayMonthsCount]=\"3\"></igx-date-range-picker>\n     * ```\n     */\n    @Input()\n    public get displayMonthsCount(): number {\n        return this._displayMonthsCount;\n    }\n\n    public set displayMonthsCount(value: number) {\n        this._displayMonthsCount = clamp(value, 1, 2);\n    }\n\n    /**\n     * Gets/Sets the orientation of the multiple months displayed in the picker's calendar's days view.\n     *\n     * @example\n     * <igx-date-range-picker orientation=\"vertical\"></igx-date-range-picker>\n     */\n    @Input()\n    public orientation: PickerCalendarOrientation = PickerCalendarOrientation.Horizontal;\n\n    /**\n     * Gets/Sets whether dates that are not part of the current month will be displayed.\n     *\n     * @remarks\n     * Default value is `false`.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker [hideOutsideDays]=\"true\"></igx-date-range-picker>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public hideOutsideDays: boolean;\n\n    /**\n     * A custom formatter function, applied on the selected or passed in date.\n     *\n     * @example\n     * ```typescript\n     * private dayFormatter = new Intl.DateTimeFormat(\"en\", { weekday: \"long\" });\n     * private monthFormatter = new Intl.DateTimeFormat(\"en\", { month: \"long\" });\n     *\n     * public formatter(date: Date): string {\n     *  return `${this.dayFormatter.format(date)} - ${this.monthFormatter.format(date)} - ${date.getFullYear()}`;\n     * }\n     * ```\n     * ```html\n     * <igx-date-range-picker [formatter]=\"formatter\"></igx-date-range-picker>\n     * ```\n     */\n    @Input()\n    public formatter: (val: DateRange) => string;\n\n    /**\n     * Overrides the default text of the calendar dialog **Done** button.\n     *\n     * @remarks\n     * Defaults to the value from resource strings, `\"Done\"` for the built-in EN.\n     * The button will only show up in `dialog` mode.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker doneButtonText=\"完了\"></igx-date-range-picker>\n     * ```\n     */\n    @Input()\n    public set doneButtonText(value: string) {\n        this._doneButtonText = value;\n    }\n\n    public get doneButtonText(): string {\n        if (this._doneButtonText === null) {\n            return this.resourceStrings.igx_date_range_picker_done_button;\n        }\n        return this._doneButtonText;\n    }\n    /**\n     * Overrides the default text of the calendar dialog **Cancel** button.\n     *\n     * @remarks\n     * Defaults to the value from resource strings, `\"Cancel\"` for the built-in EN.\n     * The button will only show up in `dialog` mode.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker cancelButtonText=\"取消\"></igx-date-range-picker>\n     * ```\n     */\n    @Input()\n    public set cancelButtonText(value: string) {\n        this._cancelButtonText = value;\n    }\n\n    public get cancelButtonText(): string {\n        if (this._cancelButtonText === null) {\n            return this.resourceStrings.igx_date_range_picker_cancel_button;\n        }\n        return this._cancelButtonText;\n    }\n    /**\n     * Custom overlay settings that should be used to display the calendar.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker [overlaySettings]=\"customOverlaySettings\"></igx-date-range-picker>\n     * ```\n     */\n    @Input()\n    public override overlaySettings: OverlaySettings;\n\n    /**\n     * The format used when editable inputs are not focused.\n     *\n     * @remarks\n     * Uses Angular's DatePipe.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker displayFormat=\"EE/M/yy\"></igx-date-range-picker>\n     * ```\n     *\n     */\n    @Input()\n    public override set displayFormat(value: string) {\n        super.displayFormat = value;\n    }\n\n    public override get displayFormat(): string {\n        return super.displayFormat;\n    }\n\n    /**\n     * The expected user input format and placeholder.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker inputFormat=\"dd/MM/yy\"></igx-date-range-picker>\n     * ```\n     */\n    @Input()\n    public override set inputFormat(value: string) {\n        super.inputFormat = value;\n    };\n\n    public override get inputFormat(): string {\n        // We need to get default input format because igxDateRangePicker is not using igxDateTimeEditor, but a plain input ???\n        return this._inputFormat ?? DateTimeUtil.getDefaultInputFormat(this.locale, this.i18nFormatter);\n    }\n\n    /**\n     * The minimum value in a valid range.\n     *\n     * @example\n     * <igx-date-range-picker [minValue]=\"minDate\"></igx-date-range-picker>\n     */\n    @Input()\n    public set minValue(value: Date | string) {\n        this._minValue = value;\n        this.onValidatorChange();\n    }\n\n    public get minValue(): Date | string {\n        return this._minValue;\n    }\n\n    /**\n     * The maximum value in a valid range.\n     *\n     * @example\n     * <igx-date-range-picker [maxValue]=\"maxDate\"></igx-date-range-picker>\n     */\n    @Input()\n    public set maxValue(value: Date | string) {\n        this._maxValue = value;\n        this.onValidatorChange();\n    }\n\n    public get maxValue(): Date | string {\n        return this._maxValue;\n    }\n\n    /**\n     * Gets/Sets the disabled dates descriptors.\n     *\n     * @example\n     * ```typescript\n     * let disabledDates = this.dateRangePicker.disabledDates;\n     * this.dateRangePicker.disabledDates = [ {type: DateRangeType.Weekends}, ...];\n     * ```\n     */\n    @Input()\n    public get disabledDates(): DateRangeDescriptor[] {\n        return this._disabledDates;\n    }\n    public set disabledDates(value: DateRangeDescriptor[]) {\n        this._disabledDates = value;\n        this.onValidatorChange();\n    }\n\n    /**\n     * Gets/Sets the special dates descriptors.\n     *\n     * @example\n     * ```typescript\n     * let specialDates = this.dateRangePicker.specialDates;\n     * this.dateRangePicker.specialDates = [ {type: DateRangeType.Weekends}, ... ];\n     * ```\n     */\n    @Input()\n    public get specialDates(): DateRangeDescriptor[] {\n        return this._specialDates;\n    }\n    public set specialDates(value: DateRangeDescriptor[]) {\n        this._specialDates = value;\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: IDateRangePickerResourceStrings) {\n        this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n    }\n\n    /**\n     * An accessor that returns the resource strings.\n     */\n    public get resourceStrings(): IDateRangePickerResourceStrings {\n        return this._resourceStrings || this._defaultResourceStrings;\n    }\n\n    /**\n     * Sets the `placeholder` for single-input `IgxDateRangePickerComponent`.\n     *\n     *   @example\n     * ```html\n     * <igx-date-range-picker [placeholder]=\"'Choose your dates'\"></igx-date-range-picker>\n     * ```\n     */\n    @Input()\n    public override placeholder = '';\n\n    /**\n     * Gets/Sets the container used for the popup element.\n     *\n     * @remarks\n     *  `outlet` is an instance of `IgxOverlayOutletDirective` or an `ElementRef`.\n     * @example\n     * ```html\n     * <div igxOverlayOutlet #outlet=\"overlay-outlet\"></div>\n     * //..\n     * <igx-date-range-picker [outlet]=\"outlet\"></igx-date-range-picker>\n     * //..\n     * ```\n     */\n    @Input()\n    public override outlet: IgxOverlayOutletDirective | ElementRef<any>;\n\n    /**\n     * Show/hide week numbers\n     *\n     * @remarks\n     * Default is `false`.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker [showWeekNumbers]=\"true\"></igx-date-range-picker>\n     * ``\n     */\n    @Input({ transform: booleanAttribute })\n    public showWeekNumbers = false;\n\n    /** @hidden @internal */\n    @Input({ transform: booleanAttribute })\n    public readOnly = false;\n\n    /**\n     * Emitted when the picker's value changes. Used for two-way binding.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker [(value)]=\"date\"></igx-date-range-picker>\n     * ```\n     */\n\n     /**\n      * Whether to render built-in predefined ranges.\n      *\n      * @example\n      * ```html\n      * <igx-date-range-picker [(usePredefinedRanges)]=\"true\"></igx-date-range-picker>\n      * ``\n      *  */\n    @Input() public usePredefinedRanges = false;\n\n    /**\n     *  Custom ranges rendered as chips.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker [(usePredefinedRanges)]=\"true\"></igx-date-range-picker>\n     * ``\n    */\n    @Input() public customRanges: CustomDateRange[] = [];\n\n    @Output()\n    public valueChange = new EventEmitter<DateRange>();\n\n    /** @hidden @internal */\n    @HostBinding('class.igx-date-range-picker')\n    public cssClass = 'igx-date-range-picker';\n\n    @ViewChild(IgxInputGroupComponent, { read: ViewContainerRef })\n    private viewContainerRef: ViewContainerRef;\n\n    /** @hidden @internal */\n    @ViewChild(IgxInputDirective)\n    public inputDirective: IgxInputDirective;\n\n    /** @hidden @internal */\n    @ContentChildren(IgxDateRangeInputsBaseComponent)\n    public projectedInputs: QueryList<IgxDateRangeInputsBaseComponent>;\n\n    @ContentChild(IgxLabelDirective)\n    public label: IgxLabelDirective;\n\n    @ContentChild(IgxHintDirective)\n    public hint: IgxHintDirective;\n\n    @ContentChild(IgxPickerActionsDirective)\n    public pickerActions: IgxPickerActionsDirective;\n\n    /** @hidden @internal */\n    @ContentChild(IgxDateRangeSeparatorDirective, { read: TemplateRef })\n    public dateSeparatorTemplate: TemplateRef<any>;\n\n\n    @ContentChild(IgxCalendarHeaderTitleTemplateDirective)\n    private headerTitleTemplate: IgxCalendarHeaderTitleTemplateDirective;\n\n    @ContentChild(IgxCalendarHeaderTemplateDirective)\n    private headerTemplate: IgxCalendarHeaderTemplateDirective;\n\n    @ContentChild(IgxCalendarSubheaderTemplateDirective)\n    private subheaderTemplate: IgxCalendarSubheaderTemplateDirective;\n\n    /** @hidden @internal */\n    public get dateSeparator(): string {\n        if (this._dateSeparator === null) {\n            return this.resourceStrings.igx_date_range_picker_date_separator;\n        }\n        return this._dateSeparator;\n    }\n\n    /** @hidden @internal */\n    public get appliedFormat(): string {\n        // Resolve display format since it can be custom specified one like short, long, shortDate, longDate and etc.\n        const formatOptions = this.i18nFormatter.getFormatOptions(this.displayFormat);\n        return formatOptions\n            ? this.i18nFormatter.getLocaleDateTimeFormat(this.locale, false, formatOptions)\n            : this.displayFormat ?? this.inputFormat;\n    }\n\n    /**\n     * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n     * By default it is the current date, or the value of the picker, if set.\n    */\n    @Input()\n    public get activeDate(): Date {\n        const today = new Date(new Date().setHours(0, 0, 0, 0));\n        const dateValue = DateTimeUtil.isValidDate(this._firstDefinedInRange) ? new Date(this._firstDefinedInRange.setHours(0, 0, 0, 0)) : null;\n        return this._activeDate ?? dateValue ?? this._calendar?.activeDate ?? today;\n    }\n\n    public set activeDate(value: Date) {\n        this._activeDate = value;\n    }\n\n    /**\n     * @example\n     * ```html\n     * <igx-date-range-picker locale=\"jp\"></igx-date-range-picker>\n     * ```\n     */\n    /**\n     * Gets the `locale` of the date-range-picker.\n     * If not set, defaults to application's locale.\n     */\n    @Input()\n    public override get locale(): string {\n        return this._locale || this._defaultLocale;\n    }\n\n    /**\n     * Sets the `locale` of the date-picker.\n     * Expects a valid BCP 47 language tag.\n     */\n    public override set locale(value: string) {\n        this._locale = this.i18nFormatter.verifyLocale(value);\n        this.updateResources();\n        if (this.hasProjectedInputs) {\n            this.updateInputLocale();\n            this.updateDisplayFormat();\n        }\n    }\n\n    /** @hidden @internal */\n    public get singleInputFormat(): string {\n        if (this.placeholder !== '') {\n            return this.placeholder;\n        }\n\n        const format = this.appliedFormat;\n        return `${format}${SingleInputDatesConcatenationString}${format}`;\n    }\n\n    /**\n     * Gets calendar state.\n     *\n     * ```typescript\n     * let state = this.dateRange.collapsed;\n     * ```\n     */\n    public override get collapsed(): boolean {\n        return this._collapsed;\n    }\n\n    /**\n     * The currently selected value / range from the calendar\n     *\n     * @remarks\n     * The current value is of type `DateRange`\n     *\n     * @example\n     * ```typescript\n     * const newValue: DateRange = { start: new Date(\"2/2/2012\"), end: new Date(\"3/3/2013\")};\n     * this.dateRangePicker.value = newValue;\n     * ```\n     */\n    public get value(): DateRange | null {\n        return this._value;\n    }\n\n    @Input()\n    public set value(value: DateRange | null) {\n        this.updateValue(value);\n        this.onChangeCallback(value);\n        this.valueChange.emit(value);\n    }\n\n    /** @hidden @internal */\n    public get hasProjectedInputs(): boolean {\n        return this.projectedInputs?.length > 0;\n    }\n\n    /** @hidden @internal */\n    public get separatorClass(): string {\n        const classes = ['igx-date-range-picker__label'];\n        if (this.hint) classes.push('input-has-hint');\n        return classes.join(' ');\n    }\n\n    protected override get toggleContainer(): HTMLElement | undefined {\n        return this._calendarContainer;\n    }\n\n    private get required(): boolean {\n        if (this._ngControl && this._ngControl.control && this._ngControl.control.validator) {\n            const error = this._ngControl.control.validator({} as AbstractControl);\n            return (error && error.required) ? true : false;\n        }\n\n        return false;\n    }\n\n    private get calendar(): IgxCalendarComponent {\n        return this._calendar;\n    }\n\n    private get dropdownOverlaySettings(): OverlaySettings {\n        return Object.assign({}, this._dropDownOverlaySettings, this.overlaySettings);\n    }\n\n    private get dialogOverlaySettings(): OverlaySettings {\n        return Object.assign({}, this._dialogOverlaySettings, this.overlaySettings);\n    }\n\n    private get _firstDefinedInRange(): Date | null {\n        if (!this.value) {\n            return null;\n        }\n        const range = this.toRangeOfDates(this.value);\n        return range?.start ?? range?.end ?? null;\n    }\n\n    private _resourceStrings: IDateRangePickerResourceStrings = null;\n    private _defaultResourceStrings = getCurrentResourceStrings(DateRangePickerResourceStringsEN);\n    private _doneButtonText = null;\n    private _cancelButtonText = null;\n    private _dateSeparator = null;\n    private _value: DateRange | null;\n    private _originalValue: DateRange | null;\n    private _overlayId: string;\n    private _ngControl: NgControl;\n    private _statusChanges$: Subscription;\n    private _calendar: IgxCalendarComponent;\n    private _calendarContainer?: HTMLElement;\n    private _positionSettings: PositionSettings;\n    private _focusedInput: IgxDateRangeInputsBaseComponent;\n    private _displayMonthsCount = 2;\n    private _specialDates: DateRangeDescriptor[] = null;\n    private _disabledDates: DateRangeDescriptor[] = null;\n    private _activeDate: Date | null = null;\n    private _overlaySubFilter:\n        [MonoTypeOperatorFunction<OverlayEventArgs>, MonoTypeOperatorFunction<OverlayEventArgs | OverlayCancelableEventArgs>] = [\n            filter(x => x.id === this._overlayId),\n            takeUntil(merge(this._destroy$, this.closed))\n        ];\n    private _dialogOverlaySettings: OverlaySettings = {\n        closeOnOutsideClick: true,\n        modal: true,\n        closeOnEscape: true\n    };\n    private _dropDownOverlaySettings: OverlaySettings = {\n        closeOnOutsideClick: true,\n        modal: false,\n        closeOnEscape: true\n    };\n    private onChangeCallback: (dateRange: DateRange) => void = noop;\n    private onTouchCallback: () => void = noop;\n    private onValidatorChange: () => void = noop;\n\n    constructor() {\n        super();\n        this.initLocale();\n    }\n\n    /** @hidden @internal */\n    @HostListener('keydown', ['$event'])\n    /** @hidden @internal */\n    public onKeyDown(event: KeyboardEvent): void {\n        switch (event.key) {\n            case this.platform.KEYMAP.ARROW_UP:\n                if (event.altKey) {\n                    this.close();\n                }\n                break;\n            case this.platform.KEYMAP.ARROW_DOWN:\n                if (event.altKey) {\n                    this.open();\n                }\n                break;\n        }\n    }\n\n    /**\n     * Opens the date range picker's dropdown or dialog.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker #dateRange></igx-date-range-picker>\n     *\n     * <button type=\"button\" igxButton (click)=\"dateRange.open()\">Open Dialog</button\n     * ```\n     */\n    public open(overlaySettings?: OverlaySettings): void {\n        if (!this.collapsed || this.disabled || this.readOnly) {\n            return;\n        }\n\n        this._originalValue = this._value\n            ? { start: new Date(this._value.start), end: new Date(this._value.end) }\n            : null;\n\n        const settings = Object.assign({}, this.isDropdown\n            ? this.dropdownOverlaySettings\n            : this.dialogOverlaySettings\n            , overlaySettings);\n\n        this._overlayId = this._overlayService\n            .attach(IgxCalendarContainerComponent, this.viewContainerRef, settings);\n        this.subscribeToOverlayEvents();\n        this._overlayService.show(this._overlayId);\n    }\n\n    /**\n     * Closes the date range picker's dropdown or dialog.\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker #dateRange></igx-date-range-picker>\n     *\n     * <button type=\"button\" igxButton (click)=\"dateRange.close()\">Close Dialog</button>\n     * ```\n     */\n    public close(): void {\n        if (!this.collapsed) {\n            this._overlayService.hide(this._overlayId);\n        }\n    }\n\n    /**\n     * Toggles the date range picker's dropdown or dialog\n     *\n     * @example\n     * ```html\n     * <igx-date-range-picker #dateRange></igx-date-range-picker>\n     *\n     * <button type=\"button\" igxButton (click)=\"dateRange.toggle()\">Toggle Dialog</button>\n     * ```\n     */\n    public toggle(overlaySettings?: OverlaySettings): void {\n        if (!this.collapsed) {\n            this.close();\n        } else {\n            this.open(overlaySettings);\n        }\n    }\n\n    /**\n     * Selects a range of dates. If no `endDate` is passed, range is 1 day (only `startDate`)\n     *\n     * @example\n     * ```typescript\n     * public selectFiveDayRange() {\n     *  const today = new Date();\n     *  const inFiveDays = new Date(new Date().setDate(today.getDate() + 5));\n     *  this.dateRange.select(today, inFiveDays);\n     * }\n     * ```\n     */\n    public select(startDate: Date, endDate?: Date): void {\n        endDate = endDate ?? startDate;\n        const dateRange = [startDate, endDate];\n        this.handleSelection(dateRange);\n    }\n\n    /**\n     * Clears the input field(s) and the picker's value.\n     *\n     * @example\n     * ```typescript\n     * this.dateRangePicker.clear();\n     * ```\n     */\n    public clear(): void {\n        if (this.disabled) {\n            return;\n        }\n\n        this.value = null;\n        this._calendar?.deselectDate();\n        if (this.hasProjectedInputs) {\n            this.projectedInputs.forEach((i) => {\n                i.inputDirective.clear();\n            });\n        } else {\n            this.inputDirective.clear();\n        }\n    }\n\n    /** @hidden @internal */\n    public writeValue(value: DateRange): void {\n        this.updateValue(value);\n    }\n\n    /** @hidden @internal */\n    public registerOnChange(fn: any): void {\n        this.onChangeCallback = fn;\n    }\n\n    /** @hidden @internal */\n    public registerOnTouched(fn: any): void {\n        this.onTouchCallback = fn;\n    }\n\n    /** @hidden @internal */\n    public validate(control: AbstractControl): ValidationErrors | null {\n        const value: DateRange = control.value;\n        const errors = {};\n        if (value) {\n            if (this.hasProjectedInputs) {\n                const startInput = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n                const endInput = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n                if (!startInput.dateTimeEditor.value) {\n                    Object.assign(errors, { startValue: true });\n                }\n                if (!endInput.dateTimeEditor.value) {\n                    Object.assign(errors, { endValue: true });\n                }\n            }\n\n            if (this._isValueInDisabledRange(value)) {\n                Object.assign(errors, { dateIsDisabled: true });\n            }\n\n            const { minValue, maxValue } = this._getMinMaxDates();\n            const start = parseDate(value.start);\n            const end = parseDate(value.end);\n            if ((minValue && start && DateTimeUtil.lessThanMinValue(start, minValue, false))\n                || (minValue && end && DateTimeUtil.lessThanMinValue(end, minValue, false))) {\n                Object.assign(errors, { minValue: true });\n            }\n            if ((maxValue && start && DateTimeUtil.greaterThanMaxValue(start, maxValue, false))\n                || (maxValue && end && DateTimeUtil.greaterThanMaxValue(end, maxValue, false))) {\n                Object.assign(errors, { maxValue: true });\n            }\n        }\n\n        return Object.keys(errors).length > 0 ? errors : null;\n    }\n\n    /** @hidden @internal */\n    public registerOnValidatorChange?(fn: any): void {\n        this.onValidatorChange = fn;\n    }\n\n    /** @hidden @internal */\n    public setDisabledState?(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    /** @hidden */\n    public ngOnInit(): void {\n        this._ngControl = this._injector.get<NgControl>(NgControl, null);\n    }\n\n    /** @hidden */\n    public override ngAfterViewInit(): void {\n        super.ngAfterViewInit();\n        this.subscribeToDateEditorEvents();\n        this.subscribeToClick();\n        this.configPositionStrategy();\n        this.configOverlaySettings();\n        this.cacheFocusedInput();\n        this.attachOnTouched();\n\n        this.setRequiredToInputs();\n\n        if (this._ngControl) {\n            this._statusChanges$ = this._ngControl.statusChanges.subscribe(this.onStatusChanged.bind(this));\n        }\n\n        // delay invocations until the current change detection cycle has completed\n        Promise.resolve().then(() => {\n            this.updateDisabledState();\n            this.initialSetValue();\n            this.updateInputs();\n            // B.P. 07 July 2021 - IgxDateRangePicker not showing initial disabled state with ChangeDetectionStrategy.OnPush #9776\n            /**\n             * if disabled is placed on the range picker element and there are projected inputs\n             * run change detection since igxInput will initially set the projected inputs' disabled to false\n             */\n            if (this.hasProjectedInputs && this.disabled) {\n                this._cdr.markForCheck();\n            }\n        });\n        this.updateDisplayFormat();\n        this.updateInputFormat();\n    }\n\n    /** @hidden @internal */\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes['displayFormat'] && this.hasProjectedInputs) {\n            this.updateDisplayFormat();\n        }\n        if (changes['inputFormat'] && this.hasProjectedInputs) {\n            this.updateInputFormat();\n        }\n        if (changes['disabled']) {\n            this.updateDisabledState();\n        }\n    }\n\n    /** @hidden @internal */\n    public override ngOnDestroy(): void {\n        super.ngOnDestroy();\n        if (this._statusChanges$) {\n            this._statusChanges$.unsubscribe();\n        }\n        if (this._overlayId) {\n            this._overlayService.detach(this._overlayId);\n        }\n    }\n\n    /** @hidden @internal */\n    public getEditElement(): HTMLInputElement {\n        return this.inputDirective!.nativeElement;\n    }\n\n    protected onStatusChanged = () => {\n        if (this.inputGroup) {\n            this.setValidityState(this.inputDirective, this.inputGroup.isFocused);\n        } else if (this.hasProjectedInputs) {\n            this.projectedInputs\n                .forEach((i) => {\n                    this.setValidityState(i.inputDirective, i.isFocused);\n                });\n        }\n        this.setRequiredToInputs();\n    };\n\n    private setValidityState(inputDirective: IgxInputDirective, isFocused: boolean) {\n        if (this._ngControl && !this._ngControl.disabled && this.isTouchedOrDirty) {\n            if (this.hasValidators && isFocused) {\n                inputDirective.valid = this._ngControl.valid ? IgxInputState.VALID : IgxInputState.INVALID;\n            } else {\n                inputDirective.valid = this._ngControl.valid ? IgxInputState.INITIAL : IgxInputState.INVALID;\n            }\n        } else {\n            inputDirective.valid = IgxInputState.INITIAL;\n        }\n    }\n\n    private get isTouchedOrDirty(): boolean {\n        return (this._ngControl.control.touched || this._ngControl.control.dirty);\n    }\n\n    private get hasValidators(): boolean {\n        return (!!this._ngControl.control.validator || !!this._ngControl.control.asyncValidator);\n    }\n\n    private handleSelection(selectionData: Date[]): void {\n        let newValue = this.extractRange(selectionData);\n        if (!newValue.start && !newValue.end) {\n            newValue = null;\n        }\n        this.value = newValue;\n        if (this.isDropdown && selectionData?.length > 1) {\n            this.close();\n        }\n        this._setCalendarActiveDate();\n    }\n\n    private handleClosing(e: IBaseCancelableBrowserEventArgs): void {\n        const args = { owner: this, cancel: e?.cancel, event: e?.event };\n        this.closing.emit(args);\n        e.cancel = args.cancel;\n        if (args.cancel) {\n            return;\n        }\n\n        if (this.isDropdown && e?.event && !this.isFocused) {\n            // outside click\n            this.updateValidityOnBlur();\n        } else {\n            this.onTouchCallback();\n            // input click\n            if (this.hasProjectedInputs && this._focusedInput) {\n                this._focusedInput.setFocus();\n            }\n            if (this.inputDirective) {\n                this.inputDirective.focus();\n            }\n        }\n    }\n\n    private subscribeToOverlayEvents() {\n        this._overlayService.opening.pipe(...this._overlaySubFilter).subscribe((e) => {\n            const overlayEvent = e as OverlayCancelableEventArgs;\n            const args = { owner: this, cancel: overlayEvent?.cancel, event: e.event };\n            this.opening.emit(args);\n            if (args.cancel) {\n                this._overlayService.detach(this._overlayId);\n                overlayEvent.cancel = true;\n                return;\n            }\n\n            this._initializeCalendarContainer(e.componentRef.instance);\n            this._calendarContainer = e.componentRef.location.nativeElement;\n            this._collapsed = false;\n            this.updateCalendar();\n        });\n\n        this._overlayService.opened.pipe(...this._overlaySubFilter).subscribe(() => {\n            this.calendar.wrapper.nativeElement.focus();\n            this.opened.emit({ owner: this });\n        });\n\n        this._overlayService.closing.pipe(...this._overlaySubFilter).subscribe((e: OverlayCancelableEventArgs) => {\n            const isEscape = e.event && (e.event as KeyboardEvent).key === this.platform.KEYMAP.ESCAPE;\n            if (this.isProjectedInputTarget(e.event) && !isEscape) {\n                e.cancel = true;\n            }\n            this.handleClosing(e as OverlayCancelableEventArgs);\n        });\n\n        this._overlayService.closed.pipe(...this._overlaySubFilter).subscribe(() => {\n            this._overlayService.detach(this._overlayId);\n            this._collapsed = true;\n            this._overlayId = null;\n            this._calendar = null;\n            this._calendarContainer = undefined;\n            this.closed.emit({ owner: this });\n        });\n    }\n\n    private isProjectedInputTarget(event: Event): boolean {\n        if (!this.hasProjectedInputs || !event) {\n            return false;\n        }\n        const path = event.composed ? event.composedPath() : [event.target];\n        return this.projectedInputs.some(i =>\n            path.includes(i.dateTimeEditor.nativeElement)\n        );\n    }\n\n    private updateValue(value: DateRange) {\n        this._value = value ? value : null;\n        this.updateInputs();\n        this.updateCalendar();\n    }\n\n    private updateValidityOnBlur() {\n        this._focusedInput = null;\n        this.onTouchCallback();\n        if (this._ngControl) {\n            if (this.hasProjectedInputs) {\n                this.projectedInputs.forEach(i => {\n                    if (!this._ngControl.valid) {\n                        i.updateInputValidity(IgxInputState.INVALID);\n                    } else {\n                        i.updateInputValidity(IgxInputState.INITIAL);\n                    }\n                });\n            }\n\n            if (this.inputDirective) {\n                if (!this._ngControl.valid) {\n                    this.inputDirective.valid = IgxInputState.INVALID;\n                } else {\n                    this.inputDirective.valid = IgxInputState.INITIAL;\n                }\n            }\n        }\n    }\n\n    private updateDisabledState() {\n        if (this.hasProjectedInputs) {\n            const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n            const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n            start.inputDirective.disabled = this.disabled;\n            end.inputDirective.disabled = this.disabled;\n            return;\n        }\n    }\n\n    private setRequiredToInputs(): void {\n        // workaround for igxInput setting required\n        Promise.resolve().then(() => {\n            const isRequired = this.required;\n            if (this.inputGroup && this.inputGroup.isRequired !== isRequired) {\n                this.inputGroup.isRequired = isRequired;\n            } else if (this.hasProjectedInputs && this._ngControl) {\n                this.projectedInputs.forEach(i => i.isRequired = isRequired);\n            }\n        });\n    }\n\n    private parseMinValue(value: string | Date): Date | null {\n        let minValue: Date = parseDate(value);\n        if (!minValue && this.hasProjectedInputs) {\n            const start = this.projectedInputs.filter(i => i instanceof IgxDateRangeStartComponent)[0];\n            if (start) {\n                minValue = parseDate(start.dateTimeEditor.minValue);\n            }\n        }\n\n        return minValue;\n    }\n\n    private parseMaxValue(value: string | Date): Date | null {\n        let maxValue: Date = parseDate(value);\n        if (!maxValue && this.projectedInputs) {\n            const end = this.projectedInputs.filter(i => i instanceof IgxDateRangeEndComponent)[0];\n            if (end) {\n                maxValue = parseDate(end.dateTimeEditor.maxValue);\n            }\n        }\n\n        return maxValue;\n    }\n\n    private updateCalendar(): void {\n        if (!this.calendar) {\n            return;\n        }\n        this._setDisabledDates();\n\n        const range: Date[] = [];\n        if (this.value) {\n            const _value = this.toRangeOfDates(this.value);\n            if (_value.start && _value.end) {\n                if (DateTimeUtil.greaterThanMaxValue(_value.start, _value.end)) {\n                    this.swapEditorDates();\n                }\n            }\n            if (_value.start) {\n                range.push(_value.start);\n            }\n            if (_value.end) {\n                range.push(_value.end);\n            }\n        }\n\n        if (range.length > 0) {\n            this.calendar.selectDate(range);\n        } else if (range.length === 0 && this.calendar.monthViews) {\n            this.calendar.deselectDate();\n        }\n        this._setCalendarActiveDate();\n        this._cdr.detectChanges();\n    }\n\n    private swapEditorDates(): void {\n        if (this.hasProjectedInputs) {\n            const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n            const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n            [start.dateTimeEditor.value, end.dateTimeEditor.value] = [end.dateTimeEditor.value, start.dateTimeEditor.value];\n            [this.value.start, this.value.end] = [this.value.end, this.value.start];\n        }\n    }\n\n    private extractRange(selection: Date[]): DateRange {\n        return {\n            start: selection[0] || null,\n            end: selection.length > 0 ? selection[selection.length - 1] : null\n        };\n    }\n\n    private toRangeOfDates(range: DateRange): { start: Date; end: Date } {\n        let start;\n        let end;\n        if (!isDate(range.start)) {\n            start = DateTimeUtil.parseIsoDate(range.start);\n        }\n        if (!isDate(range.end)) {\n            end = DateTimeUtil.parseIsoDate(range.end);\n        }\n\n        if (start || end) {\n            return { start, end };\n        }\n\n        return { start: range.start as Date, end: range.end as Date };\n    }\n\n    private subscribeToClick() {\n        const inputs = this.hasProjectedInputs\n            ? this.projectedInputs.map(i => i.inputDirective.nativeElement)\n            : [this.getEditElement()];\n        inputs.forEach(input => {\n            fromEvent(input, 'click')\n                .pipe(takeUntil(this._destroy$))\n                .subscribe(() => {\n                    if (!this.isDropdown) {\n                        this.toggle();\n                    }\n                });\n        });\n    }\n\n    private subscribeToDateEditorEvents(): void {\n        if (this.hasProjectedInputs) {\n            const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n            const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n            if (start && end) {\n                start.dateTimeEditor.valueChange\n                    .pipe(takeUntil(this._destroy$))\n                    .subscribe(value => {\n                        if (this.value) {\n                            this.value = { start: value, end: this.value.end };\n                        } else {\n                            this.value = { start: value, end: null };\n                        }\n                        if (this.calendar) {\n                            this._setCalendarActiveDate(parseDate(value));\n                            this._cdr.detectChanges();\n                        }\n                    });\n                end.dateTimeEditor.valueChange\n                    .pipe(takeUntil(this._destroy$))\n                    .subscribe(value => {\n                        if (this.value) {\n                            this.value = { start: this.value.start, end: value as Date };\n                        } else {\n                            this.value = { start: null, end: value as Date };\n                        }\n                        if (this.calendar) {\n                            this._setCalendarActiveDate(parseDate(value));\n                            this._cdr.detectChanges();\n                        }\n                    });\n            }\n        }\n    }\n\n    private attachOnTouched(): void {\n        if (this.hasProjectedInputs) {\n            this.projectedInputs.forEach(i => {\n                fromEvent(i.dateTimeEditor.nativeElement, 'blur')\n                    .pipe(takeUntil(this._destroy$))\n                    .subscribe(() => {\n                        if (this.collapsed) {\n                            this.updateValidityOnBlur();\n                        }\n                    });\n            });\n        } else {\n            fromEvent(this.inputDirective.nativeElement, 'blur')\n                .pipe(takeUntil(this._destroy$))\n                .subscribe(() => {\n                    if (this.collapsed) {\n                        this.updateValidityOnBlur();\n                    }\n                });\n        }\n    }\n\n    private cacheFocusedInput(): void {\n        if (this.hasProjectedInputs) {\n            this.projectedInputs.forEach(i => {\n                fromEvent(i.dateTimeEditor.nativeElement, 'focus')\n                    .pipe(takeUntil(this._destroy$))\n                    .subscribe(() => this._focusedInput = i);\n            });\n        }\n    }\n\n    private configPositionStrategy(): void {\n        this._positionSettings = {\n            openAnimation: fadeIn,\n            closeAnimation: fadeOut,\n            offset: 1\n        };\n        this._dropDownOverlaySettings.positionStrategy = new AutoPositionStrategy(this._positionSettings);\n\n        const bundle = this.hasProjectedInputs\n            ? this.projectedInputs.first?.nativeElement.querySelector('.igx-input-group__bundle')\n            : this.element.nativeElement.querySelector('.igx-input-group__bundle');\n        this._dropDownOverlaySettings.target = bundle || this.element.nativeElement;\n    }\n\n    private configOverlaySettings(): void {\n        if (this.overlaySettings !== null) {\n            this._dropDownOverlaySettings = Object.assign({}, this._dropDownOverlaySettings, this.overlaySettings);\n            this._dialogOverlaySettings = Object.assign({}, this._dialogOverlaySettings, this.overlaySettings);\n        }\n    }\n\n    private initialSetValue() {\n        // if there is no value and no ngControl on the picker but we have inputs we may have value set through\n        // their ngModels - we should generate our initial control value\n        if ((!this.value || (!this.value.start && !this.value.end)) && this.hasProjectedInputs && !this._ngControl) {\n            const start = this.projectedInputs.find(i => i instanceof IgxDateRangeStartComponent);\n            const end = this.projectedInputs.find(i => i instanceof IgxDateRangeEndComponent);\n            this._value = {\n                start: start.dateTimeEditor.value as Date,\n                end: end.dateTimeEditor.value as Date\n            };\n        }\n    }\n\n    private updateInputs(): void {\n        const start = this.projectedInputs?.find(i => i instanceof IgxDateRangeStartComponent) as IgxDateRangeStartComponent;\n        const end = this.projectedInputs?.find(i => i instanceof IgxDateRangeEndComponent) as IgxDateRangeEndComponent;\n        if (start && end) {\n            const _value = this.value ? this.toRangeOfDates(this.value) : null;\n            start.updateInputValue(_value?.start || null);\n            end.updateInputValue(_value?.end || null);\n        }\n    }\n\n    private updateDisplayFormat(): void {\n        this.projectedInputs.forEach(i => {\n            const input = i as IgxDateRangeInputsBaseComponent;\n            input.dateTimeEditor.displayFormat = this.displayFormat;\n        });\n    }\n\n    private updateInputFormat(): void {\n        this.projectedInputs.forEach(i => {\n            const input = i as IgxDateRangeInputsBaseComponent;\n            if (input.dateTimeEditor.inputFormat !== this.inputFormat) {\n                input.dateTimeEditor.inputFormat = this.inputFormat;\n            }\n        });\n    }\n\n    private updateInputLocale(): void {\n        this.projectedInputs.forEach(i => {\n            const input = i as IgxDateRangeInputsBaseComponent;\n            input.dateTimeEditor.locale = this.locale;\n            input.dateTimeEditor.updateMask();\n        });\n    }\n\n    protected override onResourceChange(args: CustomEvent<IResourceChangeEventArgs>) {\n        super.onResourceChange(args);\n        if (args.detail.oldLocale !== args.detail.newLocale && this.hasProjectedInputs) {\n            this.updateInputLocale();\n            this.updateDisplayFormat();\n        }\n    }\n\n    protected override updateResources(): void {\n        this._defaultResourceStrings = getCurrentResourceStrings(DateRangePickerResourceStringsEN, false, this._locale);\n    }\n\n    private _initializeCalendarContainer(componentInstance: IgxCalendarContainerComponent) {\n        this._calendar = componentInstance.calendar;\n        this._calendar.hasHeader = !this.isDropdown && !this.hideHeader;\n        this._calendar.locale = this.locale;\n        this._calendar.selection = CalendarSelection.RANGE;\n        this._calendar.weekStart = this.weekStart;\n        this._calendar.hideOutsideDays = this.hideOutsideDays;\n        this._calendar.monthsViewNumber = this._displayMonthsCount;\n        this._calendar.showWeekNumbers = this.showWeekNumbers;\n        this._calendar.headerTitleTemplate = this.headerTitleTemplate;\n        this._calendar.headerTemplate = this.headerTemplate;\n        this._calendar.subheaderTemplate = this.subheaderTemplate;\n        this._calendar.headerOrientation = this.headerOrientation;\n        this._calendar.orientation = this.orientation;\n        this._calendar.specialDates = this.specialDates;\n        this._calendar.selected.pipe(takeUntil(this._destroy$)).subscribe((ev: Date[]) => this.handleSelection(ev));\n\n        this._setDisabledDates();\n        this._setCalendarActiveDate();\n\n        componentInstance.mode = this.mode;\n        componentInstance.closeButtonLabel = !this.isDropdown ? this.doneButtonText : null;\n        componentInstance.cancelButtonLabel = !this.isDropdown ? this.cancelButtonText : null;\n        componentInstance.pickerActions = this.pickerActions;\n        componentInstance.usePredefinedRanges = this.usePredefinedRanges;\n        componentInstance.customRanges = this.customRanges;\n        componentInstance.resourceStrings = this.resourceStrings;\n        componentInstance.calendarClose.pipe(takeUntil(this._destroy$)).subscribe(() => this.close());\n        componentInstance.calendarCancel.pipe(takeUntil(this._destroy$)).subscribe(() => {\n            this._value = this._originalValue;\n            this.close()\n        });\n        componentInstance.rangeSelected\n        .pipe(takeUntil(this._destroy$))\n        .subscribe((r: DateRange) => {\n            if (r?.start && r?.end) {\n            this.select(new Date(r.start), new Date(r.end));\n            }\n\n            if (this.isDropdown) {\n            this.close();\n            }\n        });\n    }\n\n    private _setDisabledDates(): void {\n        if (!this.calendar) {\n            return;\n        }\n        this.calendar.disabledDates = this.disabledDates ? [...this.disabledDates] : [];\n        const { minValue, maxValue } = this._getMinMaxDates();\n        if (minValue) {\n            this.calendar.disabledDates.push({ type: DateRangeType.Before, dateRange: [minValue] });\n        }\n        if (maxValue) {\n            this.calendar.disabledDates.push({ type: DateRangeType.After, dateRange: [maxValue] });\n        }\n    }\n\n    private _getMinMaxDates() {\n        const minValue = this.parseMinValue(this.minValue);\n        const maxValue = this.parseMaxValue(this.maxValue);\n        return { minValue, maxValue };\n    }\n\n    private _isValueInDisabledRange(value: DateRange) {\n        if (value && value.start && value.end && this.disabledDates) {\n            const isOutsideDisabledRange = Array.from(\n                calendarRange({\n                    start: parseDate(this.value.start),\n                    end: parseDate(this.value.end),\n                    inclusive: true\n                })).every((date) => !isDateInRanges(date, this.disabledDates));\n            return !isOutsideDisabledRange;\n        }\n        return false;\n    }\n\n    private _setCalendarActiveDate(value = null): void {\n        if (this._calendar) {\n            this._calendar.activeDate = value ?? this.activeDate;\n            this._calendar.viewDate = value ?? this.activeDate;\n        }\n    }\n}\n","<ng-container *ngTemplateOutlet=\"hasProjectedInputs ? startEndTemplate : defTemplate\"></ng-container>\n\n<ng-template #singleTemplate>\n    <div (click)=\"open()\" class=\"content-wrap\">\n        <ng-content select=\"igx-date-single\"></ng-content>\n    </div>\n</ng-template>\n\n<ng-template #startEndTemplate>\n    <ng-content select=\"igx-date-range-start\"></ng-content>\n    <div [className]=\"separatorClass\">\n        <ng-container *ngTemplateOutlet=\"dateSeparatorTemplate || defDateSeparatorTemplate;\">\n        </ng-container>\n    </div>\n    <ng-content select=\"igx-date-range-end\"></ng-content>\n</ng-template>\n\n<ng-template #defIcon>\n    <igx-icon family=\"default\" name=\"date_range\"></igx-icon>\n</ng-template>\n\n<ng-template #clearIcon>\n    <igx-icon family=\"default\" name=\"input_clear\" [attr.aria-hidden]=\"true\"></igx-icon>\n</ng-template>\n\n<ng-template #defDateSeparatorTemplate>{{ dateSeparator }}</ng-template>\n\n<ng-template #defTemplate>\n    <igx-input-group [type]=\"type\">\n        <!-- only set mask placeholder when empty, otherwise input group might use it as label if none is set -->\n        <input #singleInput igxInput type=\"text\" [igxReadOnlyInput]=\"readOnly\" readonly [disabled]=\"disabled\" [placeholder]=\"value ? '' : singleInputFormat\"\n            role=\"combobox\" aria-haspopup=\"grid\" [attr.aria-expanded]=\"!collapsed\" [attr.aria-labelledby]=\"label?.id\"\n            [value]=\"value | dateRange: appliedFormat : locale : formatter\" />\n\n        @if (!toggleComponents.length) {\n            <igx-prefix (click)=\"toggle()\">\n                <ng-container *ngTemplateOutlet=\"defIcon\"></ng-container>\n            </igx-prefix>\n        }\n\n        @if (!clearComponents.length && value) {\n            <igx-suffix (click)=\"clear()\">\n                <ng-container *ngTemplateOutlet=\"clearIcon\"></ng-container>\n            </igx-suffix>\n        }\n\n        <ng-container ngProjectAs=\"[igxLabel]\">\n            <ng-content select=\"[igxLabel]\"></ng-content>\n        </ng-container>\n        <ng-container ngProjectAs=\"igx-prefix\">\n            <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n        </ng-container>\n        <ng-container ngProjectAs=\"igx-suffix\">\n            <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n        </ng-container>\n        <ng-container ngProjectAs=\"igx-hint\">\n            <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n        </ng-container>\n    </igx-input-group>\n</ng-template>\n","import { IgxPickerClearComponent, IgxPickerToggleComponent } from 'igniteui-angular/core';\nimport { IgxDateRangeEndComponent, IgxDateRangeSeparatorDirective, IgxDateRangeStartComponent } from './date-range-picker-inputs.common';\nimport { IgxDateRangePickerComponent } from './date-range-picker.component';\nimport { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective } from 'igniteui-angular/calendar';\n\nexport * from './date-range-picker-inputs.common';\nexport * from './date-range-picker.component';\n\n/* NOTE: Date-range picker directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_DATE_RANGE_PICKER_DIRECTIVES = [\n    IgxDateRangePickerComponent,\n    IgxPickerToggleComponent,\n    IgxPickerClearComponent,\n    IgxDateRangeStartComponent,\n    IgxDateRangeEndComponent,\n    IgxDateRangeSeparatorDirective,\n    IgxLabelDirective,\n    IgxPrefixDirective,\n    IgxSuffixDirective,\n    IgxHintDirective,\n    IgxCalendarHeaderTemplateDirective,\n    IgxCalendarSubheaderTemplateDirective,\n    IgxCalendarHeaderTitleTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_DATE_PICKER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_DATE_PICKER_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_DATE_PICKER_DIRECTIVES\n    ]\n})\nexport class IgxDatePickerModule { }\n","import { NgModule } from '@angular/core';\nimport { IGX_DATE_RANGE_PICKER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_DATE_RANGE_PICKER_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_DATE_RANGE_PICKER_DIRECTIVES\n    ]\n})\nexport class IgxDateRangePickerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxDatePickerComponent","i1.IgxDateRangePickerComponent","i3.IgxDateRangeStartComponent","i3.IgxDateRangeEndComponent","i3.IgxDateRangeSeparatorDirective","i4","i5"],"mappings":"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"}