{"version":3,"file":"igniteui-angular-time-picker.mjs","sources":["../../../projects/igniteui-angular/time-picker/src/time-picker/time-picker.common.ts","../../../projects/igniteui-angular/time-picker/src/time-picker/time-picker.directives.ts","../../../projects/igniteui-angular/time-picker/src/time-picker/time-picker.pipes.ts","../../../projects/igniteui-angular/time-picker/src/time-picker/time-picker.component.ts","../../../projects/igniteui-angular/time-picker/src/time-picker/time-picker.component.html","../../../projects/igniteui-angular/time-picker/src/time-picker/public_api.ts","../../../projects/igniteui-angular/time-picker/src/time-picker/time-picker.module.ts","../../../projects/igniteui-angular/time-picker/src/igniteui-angular-time-picker.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\nimport { DatePartDeltas } from 'igniteui-angular/core';\n\n/** @hidden */\nexport const IGX_TIME_PICKER_COMPONENT = new InjectionToken<IgxTimePickerBase>('IgxTimePickerComponentToken');\n\n/** @hidden */\nexport interface IgxTimePickerBase {\n    hourList: ElementRef;\n    locale: string;\n    minuteList: ElementRef;\n    secondsList: ElementRef;\n    ampmList: ElementRef;\n    inputFormat: string;\n    itemsDelta: Pick<DatePartDeltas, 'hours' | 'minutes' | 'seconds' | 'fractionalSeconds'>;\n\tspinLoop: boolean;\n    selectedDate: Date;\n    maxDropdownValue: Date;\n    minDropdownValue: Date;\n    isTwelveHourFormat: boolean;\n    showHoursList: boolean;\n    showMinutesList: boolean;\n    showSecondsList: boolean;\n    showAmPmList: boolean;\n    minDateValue: Date;\n    maxDateValue: Date;\n    /** @hidden @internal */\n    appliedFormat: string;\n    nextHour(delta: number);\n    nextMinute(delta: number);\n    nextSeconds(delta: number);\n    nextAmPm(delta: number);\n    close(): void;\n    cancelButtonClick(): void;\n    okButtonClick(): void;\n    onItemClick(item: string, dateType: string): void;\n    getPartValue(value: Date, type: string): string;\n    toISOString(value: Date): string;\n}\n","/**\n * This file contains all the directives used by the @link IgxTimePickerComponent.\n * You should generally not use them directly.\n *\n * @preferred\n */\nimport {\n    Directive,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit\n} from '@angular/core';\nimport { DateTimeUtil, HammerGesturesManager, HammerInput, HammerOptions, I18N_FORMATTER } from 'igniteui-angular/core';\nimport { IgxTimePickerBase, IGX_TIME_PICKER_COMPONENT } from './time-picker.common';\n\n/** @hidden */\n@Directive({\n    selector: '[igxItemList]',\n    providers: [HammerGesturesManager],\n    standalone: true\n})\nexport class IgxItemListDirective implements OnInit, OnDestroy {\n    public timePicker = inject<IgxTimePickerBase>(IGX_TIME_PICKER_COMPONENT);\n    private elementRef = inject(ElementRef);\n    private touchManager = inject(HammerGesturesManager);\n\n    @HostBinding('attr.tabindex')\n    public tabindex = 0;\n\n    @Input('igxItemList')\n    public type: string;\n\n    public isActive: boolean;\n\n    private readonly SCROLL_THRESHOLD = 50;\n    private readonly PAN_THRESHOLD = 10;\n\n    /**\n     * accumulates wheel scrolls and triggers a change action above SCROLL_THRESHOLD\n     */\n    private scrollAccumulator = 0;\n\n    @HostBinding('class.igx-time-picker__column')\n    public get defaultCSS(): boolean {\n        return true;\n    }\n\n    @HostBinding('class.igx-time-picker__hourList')\n    public get hourCSS(): boolean {\n        return this.type === 'hourList';\n    }\n\n    @HostBinding('class.igx-time-picker__minuteList')\n    public get minuteCSS(): boolean {\n        return this.type === 'minuteList';\n    }\n\n    @HostBinding('class.igx-time-picker__secondsList')\n    public get secondsCSS(): boolean {\n        return this.type === 'secondsList';\n    }\n\n    @HostBinding('class.igx-time-picker__ampmList')\n    public get ampmCSS(): boolean {\n        return this.type === 'ampmList';\n    }\n\n    @HostListener('focus')\n    public onFocus() {\n        this.isActive = true;\n    }\n\n    @HostListener('blur')\n    public onBlur() {\n        this.isActive = false;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('keydown.arrowdown', ['$event'])\n    public onKeydownArrowDown(event: KeyboardEvent) {\n        event.preventDefault();\n\n        this.nextItem(1);\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('keydown.arrowup', ['$event'])\n    public onKeydownArrowUp(event: KeyboardEvent) {\n        event.preventDefault();\n\n        this.nextItem(-1);\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('keydown.arrowright', ['$event'])\n    public onKeydownArrowRight(event: KeyboardEvent) {\n        event.preventDefault();\n\n        const listName = (event.target as HTMLElement).className;\n\n        if (listName.indexOf('hourList') !== -1 && this.timePicker.minuteList) {\n            this.timePicker.minuteList.nativeElement.focus();\n        } else if ((listName.indexOf('hourList') !== -1 || listName.indexOf('minuteList') !== -1) && this.timePicker.secondsList) {\n            this.timePicker.secondsList.nativeElement.focus();\n        } else if ((listName.indexOf('hourList') !== -1 || listName.indexOf('minuteList') !== -1 ||\n            listName.indexOf('secondsList') !== -1) && this.timePicker.ampmList) {\n            this.timePicker.ampmList.nativeElement.focus();\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('keydown.arrowleft', ['$event'])\n    public onKeydownArrowLeft(event: KeyboardEvent) {\n        event.preventDefault();\n        const listName = (event.target as HTMLElement).className;\n\n        if (listName.indexOf('ampmList') !== -1 && this.timePicker.secondsList) {\n            this.timePicker.secondsList.nativeElement.focus();\n        } else if (listName.indexOf('secondsList') !== -1 && this.timePicker.secondsList\n            && listName.indexOf('minutesList') && this.timePicker.minuteList) {\n            this.timePicker.minuteList.nativeElement.focus();\n        } else if (listName.indexOf('ampmList') !== -1 && this.timePicker.minuteList) {\n            this.timePicker.minuteList.nativeElement.focus();\n        } else if ((listName.indexOf('ampmList') !== -1 || listName.indexOf('secondsList') !== -1 ||\n            listName.indexOf('minuteList') !== -1) && this.timePicker.hourList) {\n            this.timePicker.hourList.nativeElement.focus();\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('keydown.enter', ['$event'])\n    public onKeydownEnter(event: KeyboardEvent) {\n        event.preventDefault();\n        this.timePicker.okButtonClick();\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('keydown.escape', ['$event'])\n    public onKeydownEscape(event: KeyboardEvent) {\n        event.preventDefault();\n\n        this.timePicker.cancelButtonClick();\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('mouseover')\n    public onHover() {\n        this.elementRef.nativeElement.focus();\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('wheel', ['$event'])\n    public onScroll(event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        this.scrollAccumulator += event.deltaY;\n        if (Math.abs(this.scrollAccumulator) > this.SCROLL_THRESHOLD) {\n            this.nextItem(this.scrollAccumulator);\n            this.scrollAccumulator = 0;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public ngOnInit() {\n        const hammerOptions: HammerOptions = {\n            recognizers: [\n                [\n                    HammerGesturesManager.Hammer?.Pan,\n                    {\n                        direction: HammerGesturesManager.Hammer?.DIRECTION_VERTICAL,\n                        threshold: this.PAN_THRESHOLD\n                    }\n                ]\n            ]\n        };\n        this.touchManager.addEventListener(this.elementRef.nativeElement, 'pan', this.onPanMove, hammerOptions);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public ngOnDestroy() {\n        this.touchManager.destroy();\n    }\n\n    private onPanMove = (event: HammerInput) => {\n        const delta = event.deltaY < 0 ? -1 : event.deltaY > 0 ? 1 : 0;\n        if (delta !== 0) {\n            this.nextItem(delta);\n        }\n    };\n\n    private nextItem(delta: number): void {\n        switch (this.type) {\n            case 'hourList': {\n                this.timePicker.nextHour(delta);\n                break;\n            }\n            case 'minuteList': {\n                this.timePicker.nextMinute(delta);\n                break;\n            }\n            case 'secondsList': {\n                this.timePicker.nextSeconds(delta);\n                break;\n            }\n            case 'ampmList': {\n                this.timePicker.nextAmPm(delta);\n                break;\n            }\n        }\n    }\n}\n\n/**\n * @hidden\n */\n@Directive({\n    selector: '[igxTimeItem]',\n    exportAs: 'timeItem',\n    standalone: true\n})\nexport class IgxTimeItemDirective {\n    public timePicker = inject<IgxTimePickerBase>(IGX_TIME_PICKER_COMPONENT);\n    private itemList = inject(IgxItemListDirective);\n    private _i18nFormatter = inject(I18N_FORMATTER);\n\n    @Input('igxTimeItem')\n    public value: string;\n\n    @HostBinding('class.igx-time-picker__item')\n    public get defaultCSS(): boolean {\n        return true;\n    }\n\n    @HostBinding('class.igx-time-picker__item--selected')\n    public get selectedCSS(): boolean {\n        return this.isSelectedTime;\n    }\n\n    @HostBinding('class.igx-time-picker__item--active')\n    public get activeCSS(): boolean {\n        return this.isSelectedTime && this.itemList.isActive;\n    }\n\n    public get isSelectedTime(): boolean {\n        const currentValue = this.value.length < 2 ? `0${this.value}` : this.value;\n        const dateType = this.itemList.type;\n        const inputDateParts = DateTimeUtil.parseDateTimeFormat(this.timePicker.appliedFormat, this._i18nFormatter);\n        switch (dateType) {\n            case 'hourList':\n                const hourPart = inputDateParts.find(element => element.type === 'hours');\n                return DateTimeUtil.getPartValue(this.timePicker.selectedDate, hourPart, hourPart.format.length) === currentValue;\n            case 'minuteList':\n                const minutePart = inputDateParts.find(element => element.type === 'minutes');\n                return DateTimeUtil.getPartValue(this.timePicker.selectedDate, minutePart, minutePart.format.length) === currentValue;\n            case 'secondsList':\n                const secondsPart = inputDateParts.find(element => element.type === 'seconds');\n                return DateTimeUtil.getPartValue(this.timePicker.selectedDate, secondsPart, secondsPart.format.length) === currentValue;\n            case 'ampmList':\n                const ampmPart = inputDateParts.find(element => element.format.indexOf('a') !== -1 || element.format === 'tt');\n                return DateTimeUtil.getPartValue(this.timePicker.selectedDate, ampmPart, ampmPart.format.length) === this.value;\n        }\n    }\n\n    public get minValue(): string {\n        const dateType = this.itemList.type;\n        const inputDateParts = DateTimeUtil.parseDateTimeFormat(this.timePicker.appliedFormat, this._i18nFormatter);\n        switch (dateType) {\n            case 'hourList':\n                return this.getHourPart(this.timePicker.minDropdownValue);\n            case 'minuteList':\n                if (this.timePicker.selectedDate.getHours() === this.timePicker.minDropdownValue.getHours()) {\n                    const minutePart = inputDateParts.find(element => element.type === 'minutes');\n                    return DateTimeUtil.getPartValue(this.timePicker.minDropdownValue, minutePart, minutePart.format.length);\n                }\n                return '00';\n            case 'secondsList':\n                const date = new Date(this.timePicker.selectedDate);\n                const min = new Date(this.timePicker.minDropdownValue);\n                date.setSeconds(0);\n                min.setSeconds(0);\n                if (date.getTime() === min.getTime()) {\n                    const secondsPart = inputDateParts.find(element => element.type === 'seconds');\n                    return DateTimeUtil.getPartValue(this.timePicker.minDropdownValue, secondsPart, secondsPart.format.length);\n                }\n                return '00';\n            case 'ampmList':\n                const ampmPart = inputDateParts.find(element => element.format.indexOf('a') !== -1 || element.format === 'tt');\n                return DateTimeUtil.getPartValue(this.timePicker.minDropdownValue, ampmPart, ampmPart.format.length);\n        }\n    }\n\n    public get maxValue(): string {\n        const dateType = this.itemList.type;\n        const inputDateParts = DateTimeUtil.parseDateTimeFormat(this.timePicker.appliedFormat, this._i18nFormatter);\n        switch (dateType) {\n            case 'hourList':\n                return this.getHourPart(this.timePicker.maxDropdownValue);\n            case 'minuteList':\n                if (this.timePicker.selectedDate.getHours() === this.timePicker.maxDropdownValue.getHours()) {\n                    const minutePart = inputDateParts.find(element => element.type === 'minutes');\n                    return DateTimeUtil.getPartValue(this.timePicker.maxDropdownValue, minutePart, minutePart.format.length);\n                } else {\n                    const currentTime = new Date(this.timePicker.selectedDate);\n                    const minDelta = this.timePicker.itemsDelta.minutes;\n                    const remainder = 60 % minDelta;\n                    const delta = remainder === 0 ? 60 - minDelta : 60 - remainder;\n                    currentTime.setMinutes(delta);\n                    const minutePart = inputDateParts.find(element => element.type === 'minutes');\n                    return DateTimeUtil.getPartValue(currentTime, minutePart, minutePart.format.length);\n                }\n            case 'secondsList':\n                const date = new Date(this.timePicker.selectedDate);\n                const max = new Date(this.timePicker.maxDropdownValue);\n                date.setSeconds(0);\n                max.setSeconds(0);\n                if (date.getTime() === max.getTime()) {\n                    const secondsPart = inputDateParts.find(element => element.type === 'seconds');\n                    return DateTimeUtil.getPartValue(this.timePicker.maxDropdownValue, secondsPart, secondsPart.format.length);\n                } else {\n                    const secDelta = this.timePicker.itemsDelta.seconds;\n                    const remainder = 60 % secDelta;\n                    const delta = remainder === 0 ? 60 - secDelta : 60 - remainder;\n                    date.setSeconds(delta);\n                    const secondsPart = inputDateParts.find(element => element.type === 'seconds');\n                    return DateTimeUtil.getPartValue(date, secondsPart, secondsPart.format.length);\n                }\n            case 'ampmList':\n                const ampmPart = inputDateParts.find(element => element.format.indexOf('a') !== -1 || element.format === 'tt');\n                return DateTimeUtil.getPartValue(this.timePicker.maxDropdownValue, ampmPart, ampmPart.format.length);\n        }\n    }\n\n    public get hourValue(): string {\n        return this.getHourPart(this.timePicker.selectedDate);\n    }\n\n    @HostListener('click', ['value'])\n    public onClick(item) {\n        if (item !== '') {\n            const dateType = this.itemList.type;\n            this.timePicker.onItemClick(item, dateType);\n        }\n    }\n\n    private getHourPart(date: Date): string {\n        const inputDateParts = DateTimeUtil.parseDateTimeFormat(this.timePicker.appliedFormat, this._i18nFormatter);\n        const hourPart = inputDateParts.find(element => element.type === 'hours');\n        const ampmPart = inputDateParts.find(element => element.format.indexOf('a') !== -1 || element.format === 'tt');\n        const hour = DateTimeUtil.getPartValue(date, hourPart, hourPart.format.length);\n        if (ampmPart) {\n            const ampm = DateTimeUtil.getPartValue(date, ampmPart, ampmPart.format.length);\n            return `${hour} ${ampm}`;\n        }\n        return hour;\n    }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { IGX_TIME_PICKER_COMPONENT, IgxTimePickerBase } from './time-picker.common';\nimport { DatePart, DateTimeUtil } from 'igniteui-angular/core';\n\nconst ITEMS_COUNT = 7;\n\n@Pipe({\n    name: 'timeFormatPipe',\n    standalone: true\n})\nexport class TimeFormatPipe implements PipeTransform {\n    private timePicker = inject<IgxTimePickerBase>(IGX_TIME_PICKER_COMPONENT);\n\n\n    public transform(value: Date): string {\n        const format = this.timePicker.appliedFormat.replace('tt', 'aa');\n        const datePipe = new DatePipe(this.timePicker.locale);\n        return datePipe.transform(value, format);\n    }\n}\n\n@Pipe({\n    name: 'timeItemPipe',\n    standalone: true\n})\nexport class TimeItemPipe implements PipeTransform {\n    private timePicker = inject<IgxTimePickerBase>(IGX_TIME_PICKER_COMPONENT);\n\n\n    public transform(_collection: any[], timePart: string, selectedDate: Date, min: Date, max: Date) {\n        let list;\n        let part;\n        switch (timePart) {\n            case 'hour':\n                list = this.generateHours(min, max);\n                const hours = this.timePicker.isTwelveHourFormat ? this.toTwelveHourFormat(selectedDate.getHours())\n                    : selectedDate.getHours();\n                list = this.scrollListItem(hours, list);\n                part = DatePart.Hours;\n                break;\n            case 'minutes':\n                list = this.generateMinutes(selectedDate, min, max);\n                list = this.scrollListItem(selectedDate.getMinutes(), list);\n                part = DatePart.Minutes;\n                break;\n            case 'seconds':\n                list = this.generateSeconds(selectedDate, min, max);\n                list = this.scrollListItem(selectedDate.getSeconds(), list);\n                part = DatePart.Seconds;\n                break;\n            case 'ampm':\n                const selectedAmPm = this.timePicker.getPartValue(selectedDate, 'ampm');\n                list = this.generateAmPm(min, max, selectedAmPm);\n                list = this.scrollListItem(selectedAmPm, list);\n                part = DatePart.AmPm;\n                break;\n        }\n        return this.getListView(list, part);\n    }\n\n    private getListView(view: any, dateType: DatePart): any {\n        for (let i = 0; i < view.length; i++) {\n            view[i] = this.getItemView(view[i], dateType);\n        }\n        return view;\n    }\n\n    private getItemView(item: any, dateType: DatePart): string {\n        if (item === null) {\n            item = '';\n        } else if (dateType && typeof (item) !== 'string') {\n            const leadZeroHour = (item < 10 && (this.timePicker.appliedFormat?.indexOf('hh') !== -1\n                || this.timePicker.appliedFormat?.indexOf('HH') !== -1));\n            const leadZeroMinute = (item < 10 && this.timePicker.appliedFormat?.indexOf('mm') !== -1);\n            const leadZeroSeconds = (item < 10 && this.timePicker.appliedFormat?.indexOf('ss') !== -1);\n\n            const leadZero = {\n                hours: leadZeroHour,\n                minutes: leadZeroMinute,\n                seconds: leadZeroSeconds\n            }[dateType];\n\n            item = (leadZero) ? '0' + item : `${item}`;\n        }\n        return item;\n    }\n\n    private scrollListItem(item: number | string, items: any[]): any[] {\n        const itemsCount = items.length;\n        let view;\n        if (items) {\n            const index = items.indexOf(item);\n            if (index < 3) {\n                view = items.slice(itemsCount - (3 - index), itemsCount);\n                view = view.concat(items.slice(0, index + 4));\n            } else if (index + 4 > itemsCount) {\n                view = items.slice(index - 3, itemsCount);\n                view = view.concat(items.slice(0, index + 4 - itemsCount));\n            } else {\n                view = items.slice(index - 3, index + 4);\n            }\n        }\n        return view;\n    }\n\n    private generateHours(min: Date, max: Date): any[] {\n        const hourItems = [];\n        let hoursCount = this.timePicker.isTwelveHourFormat ? 13 : 24;\n        hoursCount /= this.timePicker.itemsDelta.hours;\n        const minHours = min.getHours();\n        const maxHours = max.getHours();\n\n        if (hoursCount > 1) {\n            for (let hourIndex = 0; hourIndex < 24; hourIndex++) {\n                let hours = hourIndex * this.timePicker.itemsDelta.hours;\n                if (hours >= minHours && hours <= maxHours) {\n                    hours = this.timePicker.isTwelveHourFormat ? this.toTwelveHourFormat(hours) : hours;\n                    if (!hourItems.find((element => element === hours))) {\n                        hourItems.push(hours);\n                    }\n                }\n            }\n        } else {\n            hourItems.push(0);\n        }\n\n        if (hourItems.length < ITEMS_COUNT || hoursCount < ITEMS_COUNT || !this.timePicker.spinLoop) {\n            const index = !this.timePicker.spinLoop || (hourItems.length < ITEMS_COUNT && hoursCount < ITEMS_COUNT) ? 6 : 3;\n            for (let i = 0; i < index; i++) {\n                hourItems.push(null);\n            }\n        }\n\n        return hourItems;\n    }\n\n    private generateMinutes(time: Date, min: Date, max: Date): any[] {\n        const minuteItems = [];\n        const minuteItemsCount = 60 / this.timePicker.itemsDelta.minutes;\n        time = new Date(time);\n\n        for (let i = 0; i < minuteItemsCount; i++) {\n            const minutes = i * this.timePicker.itemsDelta.minutes;\n            time.setMinutes(minutes);\n            if (time >= min && time <= max) {\n                minuteItems.push(i * this.timePicker.itemsDelta.minutes);\n            }\n        }\n\n        if (minuteItems.length < ITEMS_COUNT || minuteItemsCount < ITEMS_COUNT || !this.timePicker.spinLoop) {\n            const index = !this.timePicker.spinLoop || (minuteItems.length < ITEMS_COUNT && minuteItemsCount < ITEMS_COUNT) ? 6 : 3;\n            for (let i = 0; i < index; i++) {\n                minuteItems.push(null);\n            }\n        }\n\n        return minuteItems;\n    }\n\n    private generateSeconds(time: Date, min: Date, max: Date): any[] {\n        const secondsItems = [];\n        const secondsItemsCount = 60 / this.timePicker.itemsDelta.seconds;\n        time = new Date(time);\n\n        for (let i = 0; i < secondsItemsCount; i++) {\n            const seconds = i * this.timePicker.itemsDelta.seconds;\n            time.setSeconds(seconds);\n            if (time.getTime() >= min.getTime()\n                && time.getTime() <= max.getTime()) {\n                secondsItems.push(i * this.timePicker.itemsDelta.seconds);\n            }\n        }\n\n        if (secondsItems.length < ITEMS_COUNT || secondsItemsCount < ITEMS_COUNT || !this.timePicker.spinLoop) {\n            const index = !this.timePicker.spinLoop || (secondsItems.length < ITEMS_COUNT && secondsItemsCount < ITEMS_COUNT) ? 6 : 3;\n            for (let i = 0; i < index; i++) {\n                secondsItems.push(null);\n            }\n        }\n\n        return secondsItems;\n    }\n\n    private generateAmPm(min: Date, max: Date, selectedAmPm: string): any[] {\n        const ampmItems = [];\n        const minHour = min.getHours();\n        const maxHour = max.getHours();\n\n        if (minHour < 12) {\n            ampmItems.push(DateTimeUtil.getAmPmValue(selectedAmPm.length, true));\n        }\n\n        if (minHour >= 12 || maxHour >= 12) {\n            ampmItems.push(DateTimeUtil.getAmPmValue(selectedAmPm.length, false));\n        }\n\n        for (let i = 0; i < 5; i++) {\n            ampmItems.push(null);\n        }\n\n        return ampmItems;\n    }\n\n    private toTwelveHourFormat(hour: number): number {\n        if (hour > 12) {\n            hour -= 12;\n        } else if (hour === 0) {\n            hour = 12;\n        }\n\n        return hour;\n    }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild,\n    ContentChild,\n    AfterViewInit,\n    Injector,\n    PipeTransform,\n    ChangeDetectorRef,\n    HostListener,\n    booleanAttribute,\n    inject\n} from '@angular/core';\nimport {\n    ControlValueAccessor,\n    NG_VALUE_ACCESSOR,\n    NgControl,\n    AbstractControl,\n    ValidationErrors,\n    Validator,\n    NG_VALIDATORS\n} from '@angular/forms';\n\nimport { IgxInputDirective, IgxInputGroupComponent, IgxInputState, IgxLabelDirective, IgxPrefixDirective, IgxReadOnlyInputDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport {\n    IgxItemListDirective,\n    IgxTimeItemDirective\n} from './time-picker.directives';\nimport { Subscription, noop, fromEvent } from 'rxjs';\nimport { IgxTimePickerBase, IGX_TIME_PICKER_COMPONENT } from './time-picker.common';\nimport { AbsoluteScrollStrategy, DatePart, DatePartDeltas, DateTimeUtil, GridColumnDataType, IgxPickerActionsDirective, PickerHeaderOrientation, PickerInteractionMode, getCurrentResourceStrings } from 'igniteui-angular/core';\nimport { AutoPositionStrategy } from 'igniteui-angular/core';\nimport { OverlaySettings } from 'igniteui-angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { IgxButtonDirective } from 'igniteui-angular/directives';\n\nimport { IgxDateTimeEditorDirective } from 'igniteui-angular/directives';\nimport { IgxToggleDirective } from 'igniteui-angular/directives';\nimport { ITimePickerResourceStrings, TimePickerResourceStringsEN } from 'igniteui-angular/core';\nimport { IBaseEventArgs, isEqual, isDate, PlatformUtil, IBaseCancelableBrowserEventArgs } from 'igniteui-angular/core';\n\nimport { IgxTextSelectionDirective } from 'igniteui-angular/directives';\nimport { TimeFormatPipe, TimeItemPipe } from './time-picker.pipes';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxDividerDirective } from 'igniteui-angular/directives';\nimport { PickerBaseDirective } from 'igniteui-angular/date-picker';\n\nlet NEXT_ID = 0;\nexport interface IgxTimePickerValidationFailedEventArgs extends IBaseEventArgs {\n    previousValue: Date | string;\n    currentValue: Date | string;\n}\n\n@Component({\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: IgxTimePickerComponent,\n            multi: true\n        },\n        {\n            provide: IGX_TIME_PICKER_COMPONENT,\n            useExisting: IgxTimePickerComponent\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: IgxTimePickerComponent,\n            multi: true\n        }\n    ],\n    selector: 'igx-time-picker',\n    templateUrl: 'time-picker.component.html',\n    styles: [\n        `:host {\n            display: block;\n        }`\n    ],\n    imports: [IgxInputGroupComponent, IgxInputDirective, IgxDateTimeEditorDirective, IgxTextSelectionDirective, IgxPrefixDirective, IgxIconComponent, IgxSuffixDirective, IgxButtonDirective, IgxToggleDirective, NgClass, IgxItemListDirective, IgxTimeItemDirective, NgTemplateOutlet, TimeFormatPipe, TimeItemPipe, IgxDividerDirective, IgxReadOnlyInputDirective]\n})\nexport class IgxTimePickerComponent extends PickerBaseDirective\n    implements\n    IgxTimePickerBase,\n    ControlValueAccessor,\n    OnInit,\n    OnDestroy,\n    AfterViewInit,\n    Validator {\n    private _injector = inject(Injector);\n    private platform = inject(PlatformUtil);\n    private cdr = inject(ChangeDetectorRef);\n\n    /**\n     * Sets the value of the `id` attribute.\n     * ```html\n     * <igx-time-picker [id]=\"'igx-time-picker-5'\" [displayFormat]=\"h:mm tt\" ></igx-time-picker>\n     * ```\n     */\n    @HostBinding('attr.id')\n    @Input()\n    public id = `igx-time-picker-${NEXT_ID++}`;\n\n    /**\n     * The format used when editable input is not focused. Defaults to the `inputFormat` if not set.\n     *\n     * @remarks\n     * Uses Angular's `DatePipe`.\n     *\n     * @example\n     * ```html\n     * <igx-time-picker displayFormat=\"mm:ss\"></igx-time-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 this._displayFormat ?? this.inputFormat ?? DateTimeUtil.getDefaultInputFormat(this.locale, this.i18nFormatter, GridColumnDataType.Time);\n    };\n\n    /**\n     * The expected user input format and placeholder.\n     *\n     * @remarks\n     * Default is `hh:mm tt`\n     *\n     * @example\n     * ```html\n     * <igx-time-picker inputFormat=\"HH:mm\"></igx-time-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        return super.inputFormat;\n    }\n\n    /**\n     * Gets/Sets the interaction mode - dialog or drop down.\n     *\n     * @example\n     * ```html\n     * <igx-time-picker mode=\"dialog\"></igx-time-picker>\n     * ```\n     */\n    @Input()\n    public override mode: PickerInteractionMode = PickerInteractionMode.DropDown;\n\n    /**\n     * The minimum value the picker will accept.\n     *\n     * @remarks\n     * If a `string` value is passed in, it must be in ISO format.\n     *\n     * @example\n     * ```html\n     * <igx-time-picker [minValue]=\"18:00:00\"></igx-time-picker>\n     * ```\n     */\n    @Input()\n    public set minValue(value: Date | string) {\n        this._minValue = value;\n        const date = this.parseToDate(value);\n        if (date) {\n            this._dateMinValue = new Date();\n            this._dateMinValue.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n            this.minDropdownValue = this.setMinMaxDropdownValue('min', this._dateMinValue);\n        }\n        this.setSelectedValue(this._selectedDate);\n        this._onValidatorChange();\n    }\n\n    public get minValue(): Date | string {\n        return this._minValue;\n    }\n\n    /**\n     * Gets if the dropdown/dialog is collapsed\n     *\n     * ```typescript\n     * let isCollapsed = this.timePicker.collapsed;\n     * ```\n     */\n    public override get collapsed(): boolean {\n        return this.toggleRef?.collapsed;\n    }\n\n    /**\n     * The maximum value the picker will accept.\n     *\n     * @remarks\n     * If a `string` value is passed in, it must be in ISO format.\n     *\n     * @example\n     * ```html\n     * <igx-time-picker [maxValue]=\"20:30:00\"></igx-time-picker>\n     * ```\n     */\n    @Input()\n    public set maxValue(value: Date | string) {\n        this._maxValue = value;\n        const date = this.parseToDate(value);\n        if (date) {\n            this._dateMaxValue = new Date();\n            this._dateMaxValue.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n            this.maxDropdownValue = this.setMinMaxDropdownValue('max', this._dateMaxValue);\n        }\n        this.setSelectedValue(this._selectedDate);\n        this._onValidatorChange();\n    }\n\n    public get maxValue(): Date | string {\n        return this._maxValue;\n    }\n\n    /**\n     * Sets whether the seconds, minutes and hour spinning will loop back around when end value is reached.\n     * By default it's set to true.\n     * ```html\n     * <igx-time-picker [spinLoop]=\"false\"></igx-time-picker>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public spinLoop = true;\n\n    /**\n     * Gets/Sets a custom formatter function on the selected or passed date.\n     *\n     * @example\n     * ```html\n     * <igx-time-picker [value]=\"date\" [formatter]=\"formatter\"></igx-time-picker>\n     * ```\n     */\n    @Input()\n    public formatter: (val: Date) => string;\n\n    /** @hidden @internal */\n    @Input({ transform: booleanAttribute })\n    public readOnly = false;\n\n    /**\n     * Emitted after a selection has been done.\n     *\n     * @example\n     * ```html\n     * <igx-time-picker (selected)=\"onSelection($event)\"></igx-time-picker>\n     * ```\n     */\n    @Output()\n    public selected = new EventEmitter<Date>();\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-time-picker [(value)]=\"date\"></igx-time-picker>\n     * ```\n     */\n    @Output()\n    public valueChange = new EventEmitter<Date | string>();\n\n    /**\n     * Emitted when the user types/spins invalid time in the time-picker editor.\n     *\n     *  @example\n     * ```html\n     * <igx-time-picker (validationFailed)=\"onValidationFailed($event)\"></igx-time-picker>\n     * ```\n     */\n    @Output()\n    public validationFailed = new EventEmitter<IgxTimePickerValidationFailedEventArgs>();\n\n    /** @hidden */\n    @ViewChild('hourList')\n    public hourList: ElementRef;\n\n    /** @hidden */\n    @ViewChild('minuteList')\n    public minuteList: ElementRef;\n\n    /** @hidden */\n    @ViewChild('secondsList')\n    public secondsList: ElementRef;\n\n    /** @hidden */\n    @ViewChild('ampmList')\n    public ampmList: ElementRef;\n\n\n    /** @hidden @internal */\n    @ContentChild(IgxLabelDirective)\n    public label: IgxLabelDirective;\n\n    /** @hidden @internal */\n    @ContentChild(IgxPickerActionsDirective)\n    public timePickerActionsDirective: IgxPickerActionsDirective;\n\n    @ViewChild(IgxInputDirective, { read: IgxInputDirective })\n    private inputDirective: IgxInputDirective;\n\n    @ViewChild('inputGroup', { read: IgxInputGroupComponent, static: true })\n    private _inputGroup: IgxInputGroupComponent;\n\n    @ViewChild(IgxDateTimeEditorDirective, { static: true })\n    private dateTimeEditor: IgxDateTimeEditorDirective;\n\n    @ViewChild(IgxToggleDirective)\n    private toggleRef: IgxToggleDirective;\n\n    /** @hidden */\n    public cleared = false;\n\n    /** @hidden */\n    public isNotEmpty = false;\n\n    /** @hidden */\n    public currentHour: number;\n\n    /** @hidden */\n    public currentMinutes: number;\n\n    /** @hidden */\n    public get showClearButton(): boolean {\n        if (this.clearComponents.length) {\n            return false;\n        }\n        if (DateTimeUtil.isValidDate(this.value)) {\n            // TODO: Update w/ clear behavior\n            return this.value.getHours() !== 0 || this.value.getMinutes() !== 0 ||\n                   this.value.getSeconds() !== 0 || this.value.getMilliseconds() !== 0;\n        }\n        return !!this.dateTimeEditor.value;\n    }\n\n    /** @hidden */\n    public get showHoursList(): boolean {\n        return this.appliedFormat?.indexOf('h') !== - 1 || this.appliedFormat?.indexOf('H') !== - 1;\n    }\n\n    /** @hidden */\n    public get showMinutesList(): boolean {\n        return this.appliedFormat?.indexOf('m') !== - 1;\n    }\n\n    /** @hidden */\n    public get showSecondsList(): boolean {\n        return this.appliedFormat?.indexOf('s') !== - 1;\n    }\n\n    /** @hidden */\n    public get showAmPmList(): boolean {\n        return this.appliedFormat?.indexOf('t') !== - 1 || this.appliedFormat?.indexOf('a') !== - 1;\n    }\n\n    /** @hidden */\n    public get isTwelveHourFormat(): boolean {\n        return this.appliedFormat?.indexOf('h') !== - 1;\n    }\n\n    /** @hidden @internal */\n    public get isVertical(): boolean {\n        return this.headerOrientation === PickerHeaderOrientation.Vertical;\n    }\n\n    /** @hidden @internal */\n    public get selectedDate(): Date {\n        return this._selectedDate;\n    }\n\n    /** @hidden @internal */\n    public get minDateValue(): Date {\n        if (!this._dateMinValue) {\n            const minDate = new Date();\n            minDate.setHours(0, 0, 0, 0);\n            return minDate;\n        }\n\n        return this._dateMinValue;\n    }\n\n    /** @hidden @internal */\n    public get maxDateValue(): Date {\n        if (!this._dateMaxValue) {\n            const maxDate = new Date();\n            maxDate.setHours(23, 59, 59, 999);\n            return maxDate;\n        }\n\n        return this._dateMaxValue;\n    }\n\n    /** @hidden @internal */\n    public get appliedFormat(): string {\n        return this.inputFormat || this.dateTimeEditor?.inputFormat;\n    }\n\n    protected override get toggleContainer(): HTMLElement | undefined {\n        return this.toggleRef?.element;\n    }\n\n    private 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    private get dialogOverlaySettings(): OverlaySettings {\n        return Object.assign({}, this._defaultDialogOverlaySettings, this.overlaySettings);\n    }\n\n    private get dropDownOverlaySettings(): OverlaySettings {\n        return Object.assign({}, this._defaultDropDownOverlaySettings, this.overlaySettings);\n    }\n\n    private get inputGroupElement(): HTMLElement {\n        return this.inputGroup?.element.nativeElement.querySelector('.igx-input-group__bundle');\n    }\n\n    /** @hidden @internal */\n    public displayValue: PipeTransform = { transform: (date: Date) => this.formatter(date) };\n    /** @hidden @internal */\n    public minDropdownValue: Date;\n    /** @hidden @internal */\n    public maxDropdownValue: Date;\n    /** @hidden @internal */\n    public hourItems = [];\n    /** @hidden @internal */\n    public minuteItems = [];\n    /** @hidden @internal */\n    public secondsItems = [];\n    /** @hidden @internal */\n    public ampmItems = [];\n\n    private _value: Date | string;\n    private _dateValue: Date;\n    private _dateMinValue: Date;\n    private _dateMaxValue: Date;\n    private _selectedDate: Date;\n    private _resourceStrings: ITimePickerResourceStrings = null;\n    private _defaultResourceStrings = getCurrentResourceStrings(TimePickerResourceStringsEN);\n    private _okButtonLabel = null;\n    private _cancelButtonLabel = null;\n    private _itemsDelta: Pick<DatePartDeltas, 'hours' | 'minutes' | 'seconds' | 'fractionalSeconds'> =\n                                             { hours: 1, minutes: 1, seconds: 1, fractionalSeconds: 1 };\n\n    private _statusChanges$: Subscription;\n    private _ngControl: NgControl = null;\n    private _onChangeCallback: (_: Date | string) => void = noop;\n    private _onTouchedCallback: () => void = noop;\n    private _onValidatorChange: () => void = noop;\n\n    private _defaultDialogOverlaySettings: OverlaySettings = {\n        closeOnOutsideClick: true,\n        modal: true,\n        closeOnEscape: true,\n        outlet: this.outlet\n    };\n    private _defaultDropDownOverlaySettings: OverlaySettings = {\n        modal: false,\n        closeOnOutsideClick: true,\n        scrollStrategy: new AbsoluteScrollStrategy(),\n        positionStrategy: new AutoPositionStrategy(),\n        outlet: this.outlet\n    };\n\n\n    /**\n     * The currently selected value / time from the drop-down/dialog\n     *\n     * @remarks\n     * The current value is of type `Date`\n     *\n     * @example\n     * ```typescript\n     * const newValue: Date = new Date(2000, 2, 2, 10, 15, 15);\n     * this.timePicker.value = newValue;\n     * ```\n     */\n    public get value(): Date | string {\n        return this._value;\n    }\n\n    /**\n     * An accessor that allows you to set a time using the `value` input.\n     * ```html\n     * public date: Date = new Date(Date.now());\n     *  //...\n     * <igx-time-picker [value]=\"date\" format=\"h:mm tt\"></igx-time-picker>\n     * ```\n     */\n    @Input()\n    public set value(value: Date | string) {\n        const oldValue = this._value;\n        this._value = value;\n        const date = this.parseToDate(value);\n        if (date) {\n            this._dateValue = new Date();\n            this._dateValue.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n            this.setSelectedValue(this._dateValue);\n        } else {\n            this._dateValue = null;\n            this.setSelectedValue(null);\n        }\n        if (this.dateTimeEditor) {\n            this.dateTimeEditor.value = date;\n        }\n        this.emitValueChange(oldValue, this._value);\n        this._onChangeCallback(this._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: ITimePickerResourceStrings) {\n        this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n    }\n\n    /**\n     * An accessor that returns the resource strings.\n     */\n    public get resourceStrings(): ITimePickerResourceStrings {\n        return this._resourceStrings || this._defaultResourceStrings;\n    }\n\n    /**\n     * Overrides the default text of the **OK** button.\n     *\n     * @remarks\n     * Defaults to the value from resource strings, `\"OK\"` for the built-in EN.\n     *\n     * ```html\n     * <igx-time-picker okButtonLabel='SET' [value]=\"date\" format=\"h:mm tt\"></igx-time-picker>\n     * ```\n     */\n    @Input()\n    public set okButtonLabel(value: string) {\n        this._okButtonLabel = value;\n    }\n\n    /**\n     * An accessor that returns the label of ok button.\n     */\n    public get okButtonLabel(): string {\n        if (this._okButtonLabel === null) {\n            return this.resourceStrings.igx_time_picker_ok;\n        }\n        return this._okButtonLabel;\n    }\n\n    /**\n     * Overrides the default text of the **Cancel** button.\n     * @remarks\n     * Defaults to the value from resource strings, `\"Cancel\"` for the built-in EN.\n     * ```html\n     * <igx-time-picker cancelButtonLabel='Exit' [value]=\"date\" format=\"h:mm tt\"></igx-time-picker>\n     * ```\n     */\n    @Input()\n    public set cancelButtonLabel(value: string) {\n        this._cancelButtonLabel = value;\n    }\n\n    /**\n     * An accessor that returns the label of cancel button.\n     */\n    public get cancelButtonLabel(): string {\n        if (this._cancelButtonLabel === null) {\n            return this.resourceStrings.igx_time_picker_cancel;\n        }\n        return this._cancelButtonLabel;\n    }\n\n    /**\n     * Delta values used to increment or decrement each editor date part on spin actions and\n     * to display time portions in the dropdown/dialog.\n     * By default `itemsDelta` is set to `{hour: 1, minute: 1, second: 1}`\n     * ```html\n     * <igx-time-picker [itemsDelta]=\"{hour:3, minute:5, second:10}\" id=\"time-picker\"></igx-time-picker>\n     * ```\n     */\n    @Input()\n    public set itemsDelta(value: Pick<DatePartDeltas, 'hours' | 'minutes' | 'seconds' | 'fractionalSeconds'>) {\n        Object.assign(this._itemsDelta, value);\n    }\n\n    public get itemsDelta(): Pick<DatePartDeltas, 'hours' | 'minutes' | 'seconds' | 'fractionalSeconds'> {\n        return this._itemsDelta;\n    }\n\n    constructor() {\n        super();\n        this.locale = this.locale || this._localeId;\n    }\n\n    /** @hidden @internal */\n    @HostListener('keydown', ['$event'])\n    public onKeyDown(event: KeyboardEvent): void {\n        switch (event.key) {\n            case this.platform.KEYMAP.ARROW_UP:\n                if (event.altKey && this.isDropdown) {\n                    this.close();\n                }\n                break;\n            case this.platform.KEYMAP.ARROW_DOWN:\n                if (event.altKey && this.isDropdown) {\n                    this.open();\n                }\n                break;\n            case this.platform.KEYMAP.ESCAPE:\n                this.cancelButtonClick();\n                break;\n            case this.platform.KEYMAP.SPACE:\n                this.open();\n                event.preventDefault();\n                break;\n        }\n    }\n\n    /** @hidden @internal */\n    public getPartValue(value: Date, type: string): string {\n        const inputDateParts = DateTimeUtil.parseDateTimeFormat(this.appliedFormat, this.i18nFormatter);\n        const part = inputDateParts.find(element => element.type === type);\n        return DateTimeUtil.getPartValue(value, part, part.format?.length);\n    }\n\n    /** @hidden @internal */\n    public toISOString(value: Date): string {\n        return value.toLocaleTimeString('en-GB', {\n            hour: '2-digit',\n            minute: '2-digit',\n            second: '2-digit',\n            fractionalSecondDigits: 3\n        });\n    }\n\n    // #region ControlValueAccessor\n\n    /** @hidden @internal */\n    public writeValue(value: Date | string) {\n        this._value = value;\n        const date = this.parseToDate(value);\n        if (date) {\n            this._dateValue = new Date();\n            this._dateValue.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n            this.setSelectedValue(this._dateValue);\n        } else {\n            this.setSelectedValue(null);\n        }\n        if (this.dateTimeEditor) {\n            this.dateTimeEditor.value = date;\n        }\n    }\n\n    /** @hidden @internal */\n    public registerOnChange(fn: (_: Date | string) => void) {\n        this._onChangeCallback = fn;\n    }\n\n    /** @hidden @internal */\n    public registerOnTouched(fn: () => void) {\n        this._onTouchedCallback = fn;\n    }\n\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        Object.assign(errors, DateTimeUtil.validateMinMax(value, this.minValue, this.maxValue, true, false));\n        return Object.keys(errors).length > 0 ? errors : null;\n    }\n\n    /** @hidden @internal */\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n    //#endregion\n\n    /** @hidden */\n    public ngOnInit(): void {\n        this._ngControl = this._injector.get<NgControl>(NgControl, null);\n        this.minDropdownValue = this.setMinMaxDropdownValue('min', this.minDateValue);\n        this.maxDropdownValue = this.setMinMaxDropdownValue('max', this.maxDateValue);\n        this.setSelectedValue(this._dateValue);\n    }\n\n    /** @hidden */\n    public override ngAfterViewInit(): void {\n        super.ngAfterViewInit();\n        this.subscribeToDateEditorEvents();\n        this.subscribeToToggleDirectiveEvents();\n\n        this._defaultDropDownOverlaySettings.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.updateValidityOnBlur();\n                }\n            });\n\n        if (this._ngControl) {\n            this._statusChanges$ = this._ngControl.statusChanges.subscribe(this.onStatusChanged.bind(this));\n            this._inputGroup.isRequired = this.required;\n            this.cdr.detectChanges();\n        }\n    }\n\n    /** @hidden */\n    public override ngOnDestroy(): void {\n        super.ngOnDestroy();\n        if (this._statusChanges$) {\n            this._statusChanges$.unsubscribe();\n        }\n    }\n\n    /** @hidden */\n    public getEditElement(): HTMLInputElement {\n        return this.dateTimeEditor.nativeElement;\n    }\n\n    /**\n     * Opens the picker's dialog UI.\n     *\n     * @param settings OverlaySettings - the overlay settings to use for positioning the drop down or dialog container according to\n     * ```html\n     * <igx-time-picker #picker [value]=\"date\"></igx-time-picker>\n     * <button type=\"button\" igxButton (click)=\"picker.open()\">Open Dialog</button>\n     * ```\n     */\n    public open(settings?: OverlaySettings): void {\n        if (this.disabled || !this.toggleRef.collapsed || this.readOnly) {\n            return;\n        }\n\n        this.setSelectedValue(this._dateValue);\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\n        this.toggleRef.open(overlaySettings);\n    }\n\n    /**\n     * Closes the dropdown/dialog.\n     * ```html\n     * <igx-time-picker #timePicker></igx-time-picker>\n     * ```\n     * ```typescript\n     * @ViewChild('timePicker', { read: IgxTimePickerComponent }) picker: IgxTimePickerComponent;\n     * picker.close();\n     * ```\n     */\n    public close(): void {\n        this.toggleRef.close();\n    }\n\n    public toggle(settings?: OverlaySettings): void {\n        if (this.toggleRef.collapsed) {\n            this.open(settings);\n        } else {\n            this.close();\n        }\n    }\n\n    /**\n     * Clears the time picker value if it is a `string` or resets the time to `00:00:00` if the value is a Date object.\n     *\n     * @example\n     * ```typescript\n     * this.timePicker.clear();\n     * ```\n     */\n    public clear(): void {\n        if (this.disabled || this.readOnly) {\n            return;\n        }\n\n        if (!this.toggleRef.collapsed) {\n            this.close();\n        }\n\n        if (DateTimeUtil.isValidDate(this.value)) {\n            const oldValue = new Date(this.value);\n            this.value.setHours(0, 0, 0, 0);\n            if (this.value.getTime() !== oldValue.getTime()) {\n                this.emitValueChange(oldValue, this.value);\n                this._dateValue.setHours(0, 0, 0, 0);\n                this.dateTimeEditor.value = new Date(this.value);\n                this.setSelectedValue(this._dateValue);\n            }\n        } else {\n            this.value = null;\n        }\n    }\n\n    /**\n     * Selects time from the igxTimePicker.\n     *\n     * @example\n     * ```typescript\n     * this.timePicker.select(date);\n     *\n     * @param date Date object containing the time to be selected.\n     */\n    public select(date: Date | string): void {\n        this.value = date;\n    }\n\n    /**\n     * Increment a specified `DatePart`.\n     *\n     * @param datePart The optional DatePart to increment. Defaults to Hour.\n     * @param delta The optional delta to increment by. Overrides `itemsDelta`.\n     * @example\n     * ```typescript\n     * this.timePicker.increment(DatePart.Hours);\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 Hour.\n     * @param delta The optional delta to decrement by. Overrides `itemsDelta`.\n     * @example\n     * ```typescript\n     * this.timePicker.decrement(DatePart.Seconds);\n     * ```\n     */\n    public decrement(datePart?: DatePart, delta?: number): void {\n        this.dateTimeEditor.decrement(datePart, delta);\n    }\n\n    /** @hidden @internal */\n    public cancelButtonClick(): void {\n        this.setSelectedValue(this._dateValue);\n        this.dateTimeEditor.value = this.parseToDate(this.value);\n        this.close();\n    }\n\n    /** @hidden @internal */\n    public okButtonClick(): void {\n        this.updateValue(this._selectedDate);\n        this.close();\n    }\n\n    /** @hidden @internal */\n    public onItemClick(item: string, dateType: string): void {\n        let date = new Date(this._selectedDate);\n        switch (dateType) {\n            case 'hourList': {\n                let ampm: string;\n                const selectedHour = parseInt(item, 10);\n                let hours = selectedHour;\n\n                if (this.showAmPmList) {\n                    ampm = this.getPartValue(date, 'ampm');\n                    hours = this.toTwentyFourHourFormat(hours, ampm);\n                    const minHours = this.minDropdownValue?.getHours() || 0;\n                    const maxHours = this.maxDropdownValue?.getHours() || 24;\n                    if (hours < minHours || hours > maxHours) {\n                        hours = hours < 12 ? hours + 12 : hours - 12;\n                    }\n                }\n\n                date.setHours(hours);\n                date = this.validateDropdownValue(date);\n\n                if (this.valueInRange(date, this.minDropdownValue, this.maxDropdownValue)) {\n                    this.setSelectedValue(date);\n                }\n                break;\n            }\n            case 'minuteList': {\n                const minutes = parseInt(item, 10);\n                date.setMinutes(minutes);\n                date = this.validateDropdownValue(date);\n                this.setSelectedValue(date);\n                break;\n            }\n            case 'secondsList': {\n                const seconds = parseInt(item, 10);\n                date.setSeconds(seconds);\n                if (this.valueInRange(date, this.minDropdownValue, this.maxDropdownValue)) {\n                    this.setSelectedValue(date);\n                }\n                break;\n            }\n            case 'ampmList': {\n                let hour = this._selectedDate.getHours();\n                hour = DateTimeUtil.isAm(item)\n                    ? hour % 12\n                    : (hour % 12) + 12;\n\n                date.setHours(hour);\n                date = this.validateDropdownValue(date, true);\n                this.setSelectedValue(date);\n                break;\n            }\n        }\n        this.updateEditorValue();\n    }\n\n    /** @hidden @internal */\n    public nextHour(delta: number) {\n        delta = delta > 0 ? 1 : -1;\n        const previousDate = new Date(this._selectedDate);\n        const minHours = this.minDropdownValue?.getHours();\n        const maxHours = this.maxDropdownValue?.getHours();\n        const previousHours = previousDate.getHours();\n        let hours = previousHours + delta * this.itemsDelta.hours;\n        if ((previousHours === maxHours && delta > 0) || (previousHours === minHours && delta < 0)) {\n            hours = !this.spinLoop ? previousHours : delta > 0 ? minHours : maxHours;\n        }\n\n        this._selectedDate.setHours(hours);\n        this._selectedDate = this.validateDropdownValue(this._selectedDate);\n        this._selectedDate = new Date(this._selectedDate);\n        this.updateEditorValue();\n    }\n\n    /** @hidden @internal */\n    public nextMinute(delta: number) {\n        delta = delta > 0 ? 1 : -1;\n        const minHours = this.minDropdownValue.getHours();\n        const maxHours = this.maxDropdownValue.getHours();\n        const hours = this._selectedDate.getHours();\n        let minutes = this._selectedDate.getMinutes();\n        const minMinutes = hours === minHours ? this.minDropdownValue.getMinutes() : 0;\n        const maxMinutes = hours === maxHours ? this.maxDropdownValue.getMinutes() :\n            60 % this.itemsDelta.minutes > 0 ? 60 - (60 % this.itemsDelta.minutes) :\n                60 - this.itemsDelta.minutes;\n\n        if ((delta < 0 && minutes === minMinutes) || (delta > 0 && minutes === maxMinutes)) {\n            minutes = this.spinLoop && minutes === minMinutes ? maxMinutes : this.spinLoop && minutes === maxMinutes ? minMinutes : minutes;\n        } else {\n            minutes = minutes + delta * this.itemsDelta.minutes;\n        }\n\n        this._selectedDate.setMinutes(minutes);\n        this._selectedDate = this.validateDropdownValue(this._selectedDate);\n        this._selectedDate = new Date(this._selectedDate);\n        this.updateEditorValue();\n    }\n\n    /** @hidden @internal */\n    public nextSeconds(delta: number) {\n        delta = delta > 0 ? 1 : -1;\n        const minHours = this.minDropdownValue.getHours();\n        const maxHours = this.maxDropdownValue.getHours();\n        const hours = this._selectedDate.getHours();\n        const minutes = this._selectedDate.getMinutes();\n        const minMinutes = this.minDropdownValue.getMinutes();\n        const maxMinutes = this.maxDropdownValue.getMinutes();\n        let seconds = this._selectedDate.getSeconds();\n        const minSeconds = (hours === minHours && minutes === minMinutes) ? this.minDropdownValue.getSeconds() : 0;\n        const maxSeconds = (hours === maxHours && minutes === maxMinutes) ? this.maxDropdownValue.getSeconds() :\n            60 % this.itemsDelta.seconds > 0 ? 60 - (60 % this.itemsDelta.seconds) :\n                60 - this.itemsDelta.seconds;\n\n        if ((delta < 0 && seconds === minSeconds) || (delta > 0 && seconds === maxSeconds)) {\n            seconds = this.spinLoop && seconds === minSeconds ? maxSeconds : this.spinLoop && seconds === maxSeconds ? minSeconds : seconds;\n        } else {\n            seconds = seconds + delta * this.itemsDelta.seconds;\n        }\n\n        this._selectedDate.setSeconds(seconds);\n        this._selectedDate = this.validateDropdownValue(this._selectedDate);\n        this._selectedDate = new Date(this._selectedDate);\n        this.updateEditorValue();\n    }\n\n    /** @hidden @internal */\n    public nextAmPm(delta?: number) {\n        const ampm = this.getPartValue(this._selectedDate, 'ampm');\n        if (!delta || (DateTimeUtil.isAm(ampm) && delta > 0)\n                   || (DateTimeUtil.isPm(ampm) && delta < 0)) {\n            let hours = this._selectedDate.getHours();\n            const sign = hours < 12 ? 1 : -1;\n            hours = hours + sign * 12;\n            this._selectedDate.setHours(hours);\n            this._selectedDate = this.validateDropdownValue(this._selectedDate, true);\n            this._selectedDate = new Date(this._selectedDate);\n            this.updateEditorValue();\n        }\n    }\n\n    /** @hidden @internal */\n    public setSelectedValue(value: Date) {\n        this._selectedDate = value ? new Date(value) : null;\n        if (!DateTimeUtil.isValidDate(this._selectedDate)) {\n            this._selectedDate = new Date(this.minDropdownValue);\n            return;\n        }\n        if (this.minValue && DateTimeUtil.lessThanMinValue(this._selectedDate, this.minDropdownValue, true, false)) {\n            this._selectedDate = new Date(this.minDropdownValue);\n            return;\n        }\n        if (this.maxValue && DateTimeUtil.greaterThanMaxValue(this._selectedDate, this.maxDropdownValue, true, false)) {\n            this._selectedDate = new Date(this.maxDropdownValue);\n            return;\n        }\n\n        if (this._selectedDate.getHours() % this.itemsDelta.hours > 0) {\n            this._selectedDate.setHours(\n                this._selectedDate.getHours() + this.itemsDelta.hours - this._selectedDate.getHours() % this.itemsDelta.hours,\n                0,\n                0\n            );\n        }\n\n        if (this._selectedDate.getMinutes() % this.itemsDelta.minutes > 0) {\n            this._selectedDate.setHours(\n                this._selectedDate.getHours(),\n                this._selectedDate.getMinutes() + this.itemsDelta.minutes - this._selectedDate.getMinutes() % this.itemsDelta.minutes,\n                0\n            );\n        }\n\n        if (this._selectedDate.getSeconds() % this.itemsDelta.seconds > 0) {\n            this._selectedDate.setSeconds(\n                this._selectedDate.getSeconds() + this.itemsDelta.seconds - this._selectedDate.getSeconds() % this.itemsDelta.seconds\n            );\n        }\n    }\n\n    protected onStatusChanged() {\n        if (this._ngControl && !this._ngControl.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            // B.P. 18 May 2021: IgxDatePicker does not reset its state upon resetForm #9526\n            this.inputDirective.valid = IgxInputState.INITIAL;\n        }\n\n        if (this._inputGroup && this._inputGroup.isRequired !== this.required) {\n            this._inputGroup.isRequired = this.required;\n        }\n    }\n\n    protected override updateResources() {\n        this._defaultResourceStrings = getCurrentResourceStrings(TimePickerResourceStringsEN, false, this._locale);\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 setMinMaxDropdownValue(type: string, time: Date): Date {\n        let delta: number;\n\n        const sign = type === 'min' ? 1 : -1;\n\n        const hours = time.getHours();\n        let minutes = time.getMinutes();\n        let seconds = time.getSeconds();\n\n        if (this.showHoursList && hours % this.itemsDelta.hours > 0) {\n            delta = type === 'min' ? this.itemsDelta.hours - hours % this.itemsDelta.hours\n                : hours % this.itemsDelta.hours;\n            minutes = type === 'min' ? 0\n                : 60 % this.itemsDelta.minutes > 0 ? 60 - 60 % this.itemsDelta.minutes\n                    : 60 - this.itemsDelta.minutes;\n            seconds = type === 'min' ? 0\n                : 60 % this.itemsDelta.seconds > 0 ? 60 - 60 % this.itemsDelta.seconds\n                    : 60 - this.itemsDelta.seconds;\n            time.setHours(hours + sign * delta, minutes, seconds);\n        } else if (this.showMinutesList && minutes % this.itemsDelta.minutes > 0) {\n            delta = type === 'min' ? this.itemsDelta.minutes - minutes % this.itemsDelta.minutes\n                : minutes % this.itemsDelta.minutes;\n            seconds = type === 'min' ? 0\n                : 60 % this.itemsDelta.seconds > 0 ? 60 - 60 % this.itemsDelta.seconds\n                    : 60 - this.itemsDelta.seconds;\n            time.setHours(hours, minutes + sign * delta, seconds);\n        } else if (this.showSecondsList && seconds % this.itemsDelta.seconds > 0) {\n            delta = type === 'min' ? this.itemsDelta.seconds - seconds % this.itemsDelta.seconds\n                : seconds % this.itemsDelta.seconds;\n            time.setHours(hours, minutes, seconds + sign * delta);\n        }\n\n        return time;\n    }\n\n    private initializeContainer() {\n        requestAnimationFrame(() => {\n            if (this.hourList) {\n                this.hourList.nativeElement.focus();\n            } else if (this.minuteList) {\n                this.minuteList.nativeElement.focus();\n            } else if (this.secondsList) {\n                this.secondsList.nativeElement.focus();\n            }\n        });\n    }\n\n    private validateDropdownValue(date: Date, isAmPm = false): Date {\n        if (date > this.maxDropdownValue) {\n            if (isAmPm && date.getHours() !== this.maxDropdownValue.getHours()) {\n                date.setHours(12);\n            } else {\n                date = new Date(this.maxDropdownValue);\n            }\n        }\n\n        if (date < this.minDropdownValue) {\n            date = new Date(this.minDropdownValue);\n        }\n\n        return date;\n    }\n\n    private emitValueChange(oldValue: Date | string, newValue: Date | string) {\n        if (!isEqual(oldValue, newValue)) {\n            this.valueChange.emit(newValue);\n        }\n    }\n\n    private emitValidationFailedEvent(previousValue: Date | string) {\n        const args: IgxTimePickerValidationFailedEventArgs = {\n            owner: this,\n            previousValue,\n            currentValue: this.value\n        };\n        this.validationFailed.emit(args);\n    }\n\n    private updateValidityOnBlur() {\n        this._onTouchedCallback();\n        if (this._ngControl) {\n            if (!this._ngControl.valid) {\n                this.inputDirective.valid = IgxInputState.INVALID;\n            } else {\n                this.inputDirective.valid = IgxInputState.INITIAL;\n            }\n        }\n    }\n\n    private valueInRange(value: Date, minValue: Date, maxValue: Date): boolean {\n        if (minValue && DateTimeUtil.lessThanMinValue(value, minValue, true, false)) {\n            return false;\n        }\n        if (maxValue && DateTimeUtil.greaterThanMaxValue(value, maxValue, true, false)) {\n            return false;\n        }\n\n        return true;\n    }\n\n    private parseToDate(value: Date | string): Date | null {\n        return DateTimeUtil.isValidDate(value) ? value : DateTimeUtil.parseIsoDate(value);\n    }\n\n    private toTwentyFourHourFormat(hour: number, ampm: string): number {\n        if (DateTimeUtil.isPm(ampm) && hour < 12) {\n            hour += 12;\n        } else if (DateTimeUtil.isAm(ampm) && hour === 12) {\n            hour = 0;\n        }\n\n        return hour;\n    }\n\n    private updateValue(newValue: Date | null): void {\n        if (!this.value) {\n            this.value = newValue ? new Date(newValue) : newValue;\n        } else if (isDate(this.value)) {\n            const date = new Date(this.value);\n            date.setHours(newValue?.getHours() || 0, newValue?.getMinutes() || 0, newValue?.getSeconds() || 0, newValue?.getMilliseconds() || 0);\n            this.value = date;\n        } else {\n            this.value = newValue ? this.toISOString(newValue) : newValue;\n        }\n    }\n\n    private updateEditorValue(): void {\n        const date = this.dateTimeEditor.value ? new Date(this.dateTimeEditor.value) : new Date();\n        date.setHours(this._selectedDate.getHours(), this._selectedDate.getMinutes(), this._selectedDate.getSeconds(), this._selectedDate.getMilliseconds());\n        this.dateTimeEditor.value = date;\n    }\n\n    private subscribeToDateEditorEvents(): void {\n        this.dateTimeEditor.valueChange.pipe(\n            // internal date editor directive is only used w/ Date object values:\n            takeUntil(this._destroy$)).subscribe((date: Date | null) => {\n                this.updateValue(date);\n            });\n\n        this.dateTimeEditor.validationFailed.pipe(\n            takeUntil(this._destroy$)).subscribe((event) => {\n                this.emitValidationFailedEvent(event.oldValue);\n            });\n    }\n\n    private subscribeToToggleDirectiveEvents(): void {\n        if (this.toggleRef) {\n            if (this._inputGroup && this.platform.isBrowser) {\n                this.toggleRef.element.style.width = this._inputGroup.element.nativeElement.getBoundingClientRect().width + 'px';\n            }\n\n            this.toggleRef.opening.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n                const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: false };\n                this.opening.emit(args);\n                e.cancel = args.cancel;\n                if (args.cancel) {\n                    return;\n                }\n                this.initializeContainer();\n            });\n\n            this.toggleRef.opened.pipe(takeUntil(this._destroy$)).subscribe(() => {\n                this.opened.emit({ owner: this });\n            });\n\n            this.toggleRef.closed.pipe(takeUntil(this._destroy$)).subscribe(() => {\n                this.closed.emit({ owner: this });\n            });\n\n            this.toggleRef.closing.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n                const args: IBaseCancelableBrowserEventArgs = { owner: this, event: e.event, cancel: false };\n                this.closing.emit(args);\n                e.cancel = args.cancel;\n                if (args.cancel) {\n                    return;\n                }\n                const value = this.parseToDate(this.value);\n                if ((this.dateTimeEditor.value as Date)?.getTime() !== value?.getTime()) {\n                    this.updateValue(this._selectedDate);\n                }\n                // Do not focus the input if clicking outside in dropdown mode\n                const input = this.getEditElement();\n                if (input && !(e.event && this.isDropdown)) {\n                    input.focus();\n                } else {\n                    this.updateValidityOnBlur();\n                }\n            });\n        }\n    }\n}\n","<igx-input-group #inputGroup [type]=\"type\">\n    <input [igxReadOnlyInput]=\"readOnly\" [displayValuePipe]=\"formatter ? displayValue : null\" igxInput [igxDateTimeEditor]=\"inputFormat\"\n        type=\"text\" [readonly]=\"!isDropdown || readOnly\" [minValue]=\"minValue\" [maxValue]=\"maxValue\"\n        [locale]=\"locale\" [spinDelta]=\"itemsDelta\" [spinLoop]=\"spinLoop\" [placeholder]=\"placeholder\"\n        [disabled]=\"disabled\" [displayFormat]=\"displayFormat\" defaultFormatType=\"time\"\n        [igxTextSelection]=\"isDropdown && !readOnly\" role=\"combobox\" aria-haspopup=\"dialog\"\n        [attr.aria-expanded]=\"!toggleDirective.collapsed\" [attr.aria-labelledby]=\"label?.id\"\n        (click)=\"!isDropdown && toggle()\"/>\n\n    @if (!toggleComponents.length) {\n        <igx-prefix (click)=\"toggle()\">\n            <igx-icon\n                [title]=\"\n                    value\n                        ? resourceStrings.igx_time_picker_change_time\n                        : resourceStrings.igx_time_picker_choose_time\n                \"\n                family=\"default\"\n                name=\"clock\"\n            ></igx-icon>\n        </igx-prefix>\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\n    @if (showClearButton) {\n        <igx-suffix (click)=\"clear(); $event.stopPropagation()\">\n            <igx-icon family=\"default\" name=\"input_clear\"></igx-icon>\n        </igx-suffix>\n    }\n\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\n<ng-template #defaultTimePickerActions>\n    @if (cancelButtonLabel || okButtonLabel) {\n        <div class=\"igx-time-picker__buttons\">\n            @if (cancelButtonLabel) {\n                <button type=\"button\" igxButton=\"flat\" (click)=\"cancelButtonClick()\">\n                    {{cancelButtonLabel}}\n                </button>\n            }\n            @if (okButtonLabel) {\n                <button type=\"button\" igxButton=\"flat\" (click)=\"okButtonClick()\">\n                    {{okButtonLabel}}\n                </button>\n            }\n        </div>\n    }\n</ng-template>\n\n<div #toggleDirective=\"toggle\" igxToggle role=\"dialog\" class=\"igx-time-picker\"\n    [ngClass]=\"{'igx-time-picker--dropdown': isDropdown, 'igx-time-picker--vertical': isVertical && !isDropdown}\">\n    <div class=\"igx-time-picker__main\">\n        @if (!this.isDropdown && !this.hideHeader) {\n            <div class=\"igx-time-picker__header\">\n                <h2 class=\"igx-time-picker__header-hour\">\n                    <span>{{ selectedDate | timeFormatPipe }}</span>\n                </h2>\n            </div>\n        }\n        <div class=\"igx-time-picker__body\">\n            @if (showHoursList) {\n                <div #hourList [igxItemList]=\"'hourList'\">\n                    @for (hour of hourItems | timeItemPipe:'hour':selectedDate:minDropdownValue:maxDropdownValue; track hour+$index) {\n                        <span [igxTimeItem]=\"hour\" #timeItem=\"timeItem\" aria-label=\"hour\"\n                            [attr.role]=\"timeItem.isSelectedTime ? 'spinbutton' : null\"\n                            [attr.aria-valuenow]=\"timeItem.isSelectedTime ? timeItem.hourValue : null\"\n                            [attr.aria-valuemin]=\"timeItem.isSelectedTime ? timeItem.minValue : null\"\n                            [attr.aria-valuemax]=\"timeItem.isSelectedTime ? timeItem.maxValue : null\"\n                        >{{ hour }}</span>\n                    }\n                </div>\n            }\n            @if (showMinutesList) {\n                <div #minuteList [igxItemList]=\"'minuteList'\">\n                    @for (minute of minuteItems | timeItemPipe:'minutes':selectedDate:minDropdownValue:maxDropdownValue; track minute+$index) {\n                        <span [igxTimeItem]=\"minute\" #timeItem=\"timeItem\" aria-label=\"minutes\"\n                            [attr.role]=\"timeItem.isSelectedTime ? 'spinbutton' : null\"\n                            [attr.aria-valuenow]=\"timeItem.isSelectedTime ? minute : null\"\n                            [attr.aria-valuemin]=\"timeItem.isSelectedTime ? timeItem.minValue : null\"\n                            [attr.aria-valuemax]=\"timeItem.isSelectedTime ? timeItem.maxValue : null\"\n                        >{{ minute }}</span>\n                    }\n                </div>\n            }\n            @if (showSecondsList) {\n                <div #secondsList [igxItemList]=\"'secondsList'\">\n                    @for (seconds of secondsItems | timeItemPipe:'seconds':selectedDate:minDropdownValue:maxDropdownValue; track seconds+$index) {\n                        <span [igxTimeItem]=\"seconds\" #timeItem=\"timeItem\" aria-label=\"seconds\"\n                            [attr.role]=\"timeItem.isSelectedTime ? 'spinbutton' : null\"\n                            [attr.aria-valuenow]=\"timeItem.isSelectedTime ? seconds : null\"\n                            [attr.aria-valuemin]=\"timeItem.isSelectedTime ? timeItem.minValue : null\"\n                            [attr.aria-valuemax]=\"timeItem.isSelectedTime ? timeItem.maxValue : null\"\n                        >{{ seconds }}</span>\n                    }\n                </div>\n            }\n            @if (showAmPmList) {\n                <div #ampmList [igxItemList]=\"'ampmList'\">\n                    @for (ampm of ampmItems | timeItemPipe:'ampm':selectedDate:minDropdownValue:maxDropdownValue; track ampm+$index) {\n                        <span [igxTimeItem]=\"ampm\" #timeItem=\"timeItem\" aria-label=\"ampm\"\n                            [attr.role]=\"timeItem.isSelectedTime ? 'spinbutton' : null\"\n                            [attr.aria-valuenow]=\"timeItem.isSelectedTime ? ampm : null\"\n                            [attr.aria-valuemin]=\"timeItem.isSelectedTime ? timeItem.minValue : null\"\n                            [attr.aria-valuemax]=\"timeItem.isSelectedTime ? timeItem.maxValue : null\"\n                        >{{ ampm }}</span>\n                    }\n                </div>\n            }\n        </div>\n    </div>\n    <igx-divider></igx-divider>\n    <ng-container\n            *ngTemplateOutlet=\"timePickerActionsDirective ? timePickerActionsDirective.template : defaultTimePickerActions\">\n    </ng-container>\n</div>\n","import { IgxPickerActionsDirective, IgxPickerClearComponent, IgxPickerToggleComponent } from 'igniteui-angular/core';\nimport { IgxTimePickerComponent } from './time-picker.component';\nimport { IgxHintDirective, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\n\nexport * from './time-picker.component';\nexport * from './time-picker.directives';\n\n/* NOTE: Time picker directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_TIME_PICKER_DIRECTIVES = [\n    IgxTimePickerComponent,\n    IgxPickerActionsDirective,\n    IgxPickerToggleComponent,\n    IgxPickerClearComponent,\n    IgxLabelDirective,\n    IgxPrefixDirective,\n    IgxSuffixDirective,\n    IgxHintDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_TIME_PICKER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_TIME_PICKER_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_TIME_PICKER_DIRECTIVES\n    ]\n})\nexport class IgxTimePickerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxTimePickerComponent"],"mappings":"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"}