igniteui-angular 21.0.12 → 21.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
- package/fesm2022/igniteui-angular-date-picker.mjs +7 -3
- package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-core.mjs +7 -3
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-time-picker.mjs +6 -1
- package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
- package/package.json +1 -1
- package/types/igniteui-angular-time-picker.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 } 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\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);\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);\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);\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);\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, 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, IgxPickerActionsDirective, PickerHeaderOrientation, PickerInteractionMode } 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 { getCurrentResourceStrings } from 'igniteui-angular/core';\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 displayFormat: string;\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 inputFormat: string;\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 /** @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 = 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 target: this.element.nativeElement,\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;\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);\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 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 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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"}
|
|
1
|
+
{"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 } 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\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);\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);\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);\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);\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, 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, IgxPickerActionsDirective, PickerHeaderOrientation, PickerInteractionMode } 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 { getCurrentResourceStrings } from 'igniteui-angular/core';\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 displayFormat: string;\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 inputFormat: string;\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 = 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;\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);\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 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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"}
|