import { EventEmitter, Injector, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { ValidationAlerts } from '../../validation-alert/validation-alert'; import { DateLikeFormFieldComponent } from '../date-like/date-like-form-field.component'; import * as i0 from "@angular/core"; export interface TimeBlock { display: string; value: number; isSelected: boolean; } export declare enum Meridiem { AM = "am", PM = "pm" } export declare type NullableMeridiem = null | Meridiem; export interface MeridiemBlock { display: string; value: Meridiem; isSelected: boolean; } export interface Spin { value: number; pivot: number; } /** * Clock Form Field Component */ export declare class ClockFormFieldComponent extends DateLikeFormFieldComponent implements OnInit { /** * Const getter for The visible number of rows for the clock component. */ private static get visibleRowCount(); /** * Returns maximum number of hours depending of the hour format */ private get maxHours(); /** * Return the maximum number of minutes in an hour */ private maxMinutes; /** * The source name to use for logging */ protected get logSourceName(): string; showConfirmation: boolean; accepted: EventEmitter; cleared: EventEmitter; /** * Internal selected time value */ viewportTime: Date; /** * Gets the selected hours */ private get viewportHour(); /** * Gets the selected minutes */ private get viewportMinute(); /** * A list of hours in the clock */ hours: TimeBlock[]; /** * A list of minutes in the clock */ minutes: TimeBlock[]; /** * A list of minutes in the clock */ meridiems: MeridiemBlock[]; /** * The initial meridian should remain at the top */ private initialMeridiem; /** * indicates the meridiem of the current time */ get viewportMeridiem(): NullableMeridiem; /** * Current spun hour and the pivot point */ private spinHour; /** * Current spun minute and the pivot point */ private spinMinute; /** * indicates if a value change is expected */ private localeDateFormat; /** * Answers, is user currently scrolling down? */ private isScrollDown; /** * indicates if a value change is expected */ private localeDateFormatOptions; private get use12HourFormat(); /** * A workaround to have Screen reader know this is a required "input" field. */ get ariaLabel(): string; /** * Initializes a new instance of the @see ClockFormFieldComponent class. * @param injector The angular injection service. required by @see SmeInjectableBase decorator in the @see BaseComponent class */ constructor(injector: Injector); /** * Implementation of angular OnInit interface */ ngOnInit(): void; /** * Indicates if a given day is selected */ isMeridiemSelected(value: Meridiem): boolean; /** * Occurs when an hour is clicked */ onHourClicked(event: MouseEvent, hour: TimeBlock): void; /** * Occurs when a key is pressed down on a hour block */ onHourKeydown(event: KeyboardEvent): void; /** * Occurs when the mouse wheel is moved on the hour column */ onHourWheel(event: WheelEvent): void; /** * Occurs when any column is scrolled */ onColumnScroll(event: Event): void; /** * Selected the previous hour block from the current one */ goToPreviousHour(): void; /** * Selected the next hour block from the current one */ goToNextHour(): void; /** * Sets the hour from a time block */ private setHour; /** * Occurs when an minute is clicked */ onMinuteClicked(event: MouseEvent, minute: TimeBlock): void; /** * Occurs when a key is pressed down on a minute block */ onMinuteKeydown(event: KeyboardEvent): void; /** * Occurs when the mouse wheel is moved on the minute column */ onMinuteWheel(event: WheelEvent): void; /** * Selected the previous minute block from the current one */ goToPreviousMinute(): void; /** * Selected the next minute block from the current one */ goToNextMinute(): void; /** * Sets the minute from a time block */ private setMinute; /** * Parse an hour depending on the current format */ private getParsedHour; /** * Convert a 12 hour system value to twenty four hour */ private convertTo24Hours; /** * Occurs when an meridiem is clicked */ onMeridiemClicked(event: MouseEvent, meridiem: Meridiem): void; /** * Occurs when a key is pressed down on a meridiem block */ onMeridiemKeydown(event: KeyboardEvent): void; /** * Occurs when the mouse wheel is moved on the meridiem column */ onMeridiemWheel(event: WheelEvent): void; /** * Toggles the meridiem between AM and PM. No-Op if meridiem is not valid in the current locale */ toggleMeridiem(meridiem?: Meridiem): void; /** * Sets the meridiem to either AM or PM. No-Op if meridiem is not valid in the current locale */ setMeridiem(meridiem: Meridiem): void; /** * Called when accept button is clicked to commit changes */ onAcceptClicked(event: Event): void; /** * Updates either the form value or the viewport value depending on whether the value should be persisted */ private updateValueOrViewPortTime; /** * Occurs every time the value of the control changes, in the UI or programmatically. * @param value the value of the form control */ protected onValueChanged(value: any): void; /** * Performs validation that is internal to this control * @param c The form control attached to this instance */ protected validate(c: FormControl): ValidationAlerts; /** * Handles the wheel spin on columns. No value selection is made mimicking the behavior in Chromium Edge */ private handleWheelSpin; /** * Applies the focus to a the hours column */ private focusOnHours; /** * Applies the focus to a the minutes column */ private focusOnMinute; /** * Applies the focus to a the meridiem column */ private focusOnMeridiem; /** * Applies the focus to a column */ private focusOnColumn; /** * Applies the focus to the current element */ focus(): void; /** * Applies the focus to the host element when the clock retracts */ private focusOnHostElement; /** * Generates the current view */ private generateTimeColumns; /** * Returns the next value after a given step in a cycle * @param currentValue current value in the cycle * @param step value of steps to move * @param maxValue max value in the cycle */ private getNextValue; /** * Returns the previous value after a given step in a cycle * @param currentValue current value in the cycle * @param step value of steps to move * @param maxValue max value in the cycle */ private getPreviousValue; /** * Generates a series of numbers representing a cyclic window in time given a center (current value) and max value */ private generateTimeWindow; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }