igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
436 lines (435 loc) • 15.5 kB
TypeScript
import { ElementRef, EventEmitter, OnDestroy, OnInit, AfterViewInit, Injector, PipeTransform, ChangeDetectorRef, QueryList } from '@angular/core';
import { ControlValueAccessor, AbstractControl, ValidationErrors, Validator } from '@angular/forms';
import { IgxInputGroupType } from '../input-group/public_api';
import { IgxTimePickerBase } from './time-picker.common';
import { OverlaySettings } from '../services/overlay/utilities';
import { ITimePickerResourceStrings } from '../core/i18n/time-picker-resources';
import { IBaseEventArgs, PlatformUtil } from '../core/utils';
import { PickerInteractionMode } from '../date-common/types';
import { IgxLabelDirective } from '../directives/label/label.directive';
import { PickerBaseDirective } from '../date-common/picker-base.directive';
import { DatePart, DatePartDeltas } from '../directives/date-time-editor/public_api';
import { PickerHeaderOrientation } from '../date-common/types';
import { IgxPickerActionsDirective, IgxPickerClearComponent } from '../date-common/picker-icons.common';
import * as i0 from "@angular/core";
export interface IgxTimePickerValidationFailedEventArgs extends IBaseEventArgs {
previousValue: Date | string;
currentValue: Date | string;
}
export declare class IgxTimePickerComponent extends PickerBaseDirective implements IgxTimePickerBase, ControlValueAccessor, OnInit, OnDestroy, AfterViewInit, Validator {
private _injector;
private platform;
private cdr;
/**
* Sets the value of the `id` attribute.
* ```html
* <igx-time-picker [id]="'igx-time-picker-5'" [displayFormat]="h:mm tt" ></igx-time-picker>
* ```
*/
id: string;
/**
* The format used when editable input is not focused. Defaults to the `inputFormat` if not set.
*
* @remarks
* Uses Angular's `DatePipe`.
*
* @example
* ```html
* <igx-time-picker displayFormat="mm:ss"></igx-time-picker>
* ```
*
*/
displayFormat: string;
/**
* The expected user input format and placeholder.
*
* @remarks
* Default is `hh:mm tt`
*
* @example
* ```html
* <igx-time-picker inputFormat="HH:mm"></igx-time-picker>
* ```
*/
inputFormat: string;
/**
* Gets/Sets the interaction mode - dialog or drop down.
*
* @example
* ```html
* <igx-time-picker mode="dialog"></igx-time-picker>
* ```
*/
mode: PickerInteractionMode;
/**
* The minimum value the picker will accept.
*
* @remarks
* If a `string` value is passed in, it must be in ISO format.
*
* @example
* ```html
* <igx-time-picker [minValue]="18:00:00"></igx-time-picker>
* ```
*/
set minValue(value: Date | string);
get minValue(): Date | string;
/**
* Gets if the dropdown/dialog is collapsed
*
* ```typescript
* let isCollapsed = this.timePicker.collapsed;
* ```
*/
get collapsed(): boolean;
/**
* The maximum value the picker will accept.
*
* @remarks
* If a `string` value is passed in, it must be in ISO format.
*
* @example
* ```html
* <igx-time-picker [maxValue]="20:30:00"></igx-time-picker>
* ```
*/
set maxValue(value: Date | string);
get maxValue(): Date | string;
/**
* Sets whether the seconds, minutes and hour spinning will loop back around when end value is reached.
* By default it's set to true.
* ```html
* <igx-time-picker [spinLoop]="false"></igx-time-picker>
* ```
*/
spinLoop: boolean;
/**
* Gets/Sets a custom formatter function on the selected or passed date.
*
* @example
* ```html
* <igx-time-picker [value]="date" [formatter]="formatter"></igx-time-picker>
* ```
*/
formatter: (val: Date) => string;
/**
* Sets the orientation of the picker's header.
*
* @remarks
* Available in dialog mode only. Default value is `horizontal`.
*
* ```html
* <igx-time-picker [headerOrientation]="'vertical'"></igx-time-picker>
* ```
*/
headerOrientation: PickerHeaderOrientation;
/** @hidden @internal */
readOnly: boolean;
/**
* Emitted after a selection has been done.
*
* @example
* ```html
* <igx-time-picker (selected)="onSelection($event)"></igx-time-picker>
* ```
*/
selected: EventEmitter<Date>;
/**
* Emitted when the picker's value changes.
*
* @remarks
* Used for `two-way` bindings.
*
* @example
* ```html
* <igx-time-picker [(value)]="date"></igx-time-picker>
* ```
*/
valueChange: EventEmitter<string | Date>;
/**
* Emitted when the user types/spins invalid time in the time-picker editor.
*
* @example
* ```html
* <igx-time-picker (validationFailed)="onValidationFailed($event)"></igx-time-picker>
* ```
*/
validationFailed: EventEmitter<IgxTimePickerValidationFailedEventArgs>;
/** @hidden */
hourList: ElementRef;
/** @hidden */
minuteList: ElementRef;
/** @hidden */
secondsList: ElementRef;
/** @hidden */
ampmList: ElementRef;
/** @hidden @internal */
clearComponents: QueryList<IgxPickerClearComponent>;
/** @hidden @internal */
label: IgxLabelDirective;
/** @hidden @internal */
timePickerActionsDirective: IgxPickerActionsDirective;
private inputDirective;
private _inputGroup;
private dateTimeEditor;
private toggleRef;
/** @hidden */
cleared: boolean;
/** @hidden */
isNotEmpty: boolean;
/** @hidden */
currentHour: number;
/** @hidden */
currentMinutes: number;
/** @hidden */
get showClearButton(): boolean;
/** @hidden */
get showHoursList(): boolean;
/** @hidden */
get showMinutesList(): boolean;
/** @hidden */
get showSecondsList(): boolean;
/** @hidden */
get showAmPmList(): boolean;
/** @hidden */
get isTwelveHourFormat(): boolean;
/** @hidden @internal */
get isVertical(): boolean;
/** @hidden @internal */
get selectedDate(): Date;
/** @hidden @internal */
get minDateValue(): Date;
/** @hidden @internal */
get maxDateValue(): Date;
/** @hidden @internal */
get appliedFormat(): string;
protected get toggleContainer(): HTMLElement | undefined;
private get required();
private get dialogOverlaySettings();
private get dropDownOverlaySettings();
/** @hidden @internal */
displayValue: PipeTransform;
/** @hidden @internal */
minDropdownValue: Date;
/** @hidden @internal */
maxDropdownValue: Date;
/** @hidden @internal */
hourItems: any[];
/** @hidden @internal */
minuteItems: any[];
/** @hidden @internal */
secondsItems: any[];
/** @hidden @internal */
ampmItems: any[];
private _value;
private _dateValue;
private _dateMinValue;
private _dateMaxValue;
private _selectedDate;
private _resourceStrings;
private _okButtonLabel;
private _cancelButtonLabel;
private _itemsDelta;
private _statusChanges$;
private _ngControl;
private _onChangeCallback;
private _onTouchedCallback;
private _onValidatorChange;
private _defaultDialogOverlaySettings;
private _defaultDropDownOverlaySettings;
/**
* The currently selected value / time from the drop-down/dialog
*
* @remarks
* The current value is of type `Date`
*
* @example
* ```typescript
* const newValue: Date = new Date(2000, 2, 2, 10, 15, 15);
* this.timePicker.value = newValue;
* ```
*/
get value(): Date | string;
/**
* An accessor that allows you to set a time using the `value` input.
* ```html
* public date: Date = new Date(Date.now());
* //...
* <igx-time-picker [value]="date" format="h:mm tt"></igx-time-picker>
* ```
*/
set value(value: Date | string);
/**
* An accessor that sets the resource strings.
* By default it uses EN resources.
*/
set resourceStrings(value: ITimePickerResourceStrings);
/**
* An accessor that returns the resource strings.
*/
get resourceStrings(): ITimePickerResourceStrings;
/**
* Overrides the default text of the **OK** button.
*
* @remarks
* Defaults to the value from resource strings, `"OK"` for the built-in EN.
*
* ```html
* <igx-time-picker okButtonLabel='SET' [value]="date" format="h:mm tt"></igx-time-picker>
* ```
*/
set okButtonLabel(value: string);
/**
* An accessor that returns the label of ok button.
*/
get okButtonLabel(): string;
/**
* Overrides the default text of the **Cancel** button.
* @remarks
* Defaults to the value from resource strings, `"Cancel"` for the built-in EN.
* ```html
* <igx-time-picker cancelButtonLabel='Exit' [value]="date" format="h:mm tt"></igx-time-picker>
* ```
*/
set cancelButtonLabel(value: string);
/**
* An accessor that returns the label of cancel button.
*/
get cancelButtonLabel(): string;
/**
* Delta values used to increment or decrement each editor date part on spin actions and
* to display time portions in the dropdown/dialog.
* By default `itemsDelta` is set to `{hour: 1, minute: 1, second: 1}`
* ```html
* <igx-time-picker [itemsDelta]="{hour:3, minute:5, second:10}" id="time-picker"></igx-time-picker>
* ```
*/
set itemsDelta(value: Pick<DatePartDeltas, 'hours' | 'minutes' | 'seconds' | 'fractionalSeconds'>);
get itemsDelta(): Pick<DatePartDeltas, 'hours' | 'minutes' | 'seconds' | 'fractionalSeconds'>;
constructor(element: ElementRef, _localeId: string, _inputGroupType: IgxInputGroupType, _injector: Injector, platform: PlatformUtil, cdr: ChangeDetectorRef);
/** @hidden @internal */
onKeyDown(event: KeyboardEvent): void;
/** @hidden @internal */
getPartValue(value: Date, type: string): string;
/** @hidden @internal */
toISOString(value: Date): string;
/** @hidden @internal */
writeValue(value: Date | string): void;
/** @hidden @internal */
registerOnChange(fn: (_: Date | string) => void): void;
/** @hidden @internal */
registerOnTouched(fn: () => void): void;
/** @hidden @internal */
registerOnValidatorChange(fn: any): void;
/** @hidden @internal */
validate(control: AbstractControl): ValidationErrors | null;
/** @hidden @internal */
setDisabledState(isDisabled: boolean): void;
/** @hidden */
ngOnInit(): void;
/** @hidden */
ngAfterViewInit(): void;
/** @hidden */
ngOnDestroy(): void;
/** @hidden */
getEditElement(): HTMLInputElement;
/**
* Opens the picker's dialog UI.
*
* @param settings OverlaySettings - the overlay settings to use for positioning the drop down or dialog container according to
* ```html
* <igx-time-picker #picker [value]="date"></igx-time-picker>
* <button type="button" igxButton (click)="picker.open()">Open Dialog</button>
* ```
*/
open(settings?: OverlaySettings): void;
/**
* Closes the dropdown/dialog.
* ```html
* <igx-time-picker #timePicker></igx-time-picker>
* ```
* ```typescript
* @ViewChild('timePicker', { read: IgxTimePickerComponent }) picker: IgxTimePickerComponent;
* picker.close();
* ```
*/
close(): void;
toggle(settings?: OverlaySettings): void;
/**
* 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.
*
* @example
* ```typescript
* this.timePicker.clear();
* ```
*/
clear(): void;
/**
* Selects time from the igxTimePicker.
*
* @example
* ```typescript
* this.timePicker.select(date);
*
* @param date Date object containing the time to be selected.
*/
select(date: Date | string): void;
/**
* Increment a specified `DatePart`.
*
* @param datePart The optional DatePart to increment. Defaults to Hour.
* @param delta The optional delta to increment by. Overrides `itemsDelta`.
* @example
* ```typescript
* this.timePicker.increment(DatePart.Hours);
* ```
*/
increment(datePart?: DatePart, delta?: number): void;
/**
* Decrement a specified `DatePart`
*
* @param datePart The optional DatePart to decrement. Defaults to Hour.
* @param delta The optional delta to decrement by. Overrides `itemsDelta`.
* @example
* ```typescript
* this.timePicker.decrement(DatePart.Seconds);
* ```
*/
decrement(datePart?: DatePart, delta?: number): void;
/** @hidden @internal */
cancelButtonClick(): void;
/** @hidden @internal */
okButtonClick(): void;
/** @hidden @internal */
onItemClick(item: string, dateType: string): void;
/** @hidden @internal */
nextHour(delta: number): void;
/** @hidden @internal */
nextMinute(delta: number): void;
/** @hidden @internal */
nextSeconds(delta: number): void;
/** @hidden @internal */
nextAmPm(delta?: number): void;
/** @hidden @internal */
setSelectedValue(value: Date): void;
protected onStatusChanged(): void;
private get isTouchedOrDirty();
private get hasValidators();
private setMinMaxDropdownValue;
private initializeContainer;
private validateDropdownValue;
private emitValueChange;
private emitValidationFailedEvent;
private updateValidityOnBlur;
private valueInRange;
private parseToDate;
private toTwentyFourHourFormat;
private updateValue;
private updateEditorValue;
private subscribeToDateEditorEvents;
private subscribeToToggleDirectiveEvents;
static ɵfac: i0.ɵɵFactoryDeclaration<IgxTimePickerComponent, [null, null, { optional: true; }, null, null, null]>;
static ɵcmp: i0.ɵɵComponentDeclaration<IgxTimePickerComponent, "igx-time-picker", never, { "id": { "alias": "id"; "required": false; }; "displayFormat": { "alias": "displayFormat"; "required": false; }; "inputFormat": { "alias": "inputFormat"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "minValue": { "alias": "minValue"; "required": false; }; "maxValue": { "alias": "maxValue"; "required": false; }; "spinLoop": { "alias": "spinLoop"; "required": false; }; "formatter": { "alias": "formatter"; "required": false; }; "headerOrientation": { "alias": "headerOrientation"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "value": { "alias": "value"; "required": false; }; "resourceStrings": { "alias": "resourceStrings"; "required": false; }; "okButtonLabel": { "alias": "okButtonLabel"; "required": false; }; "cancelButtonLabel": { "alias": "cancelButtonLabel"; "required": false; }; "itemsDelta": { "alias": "itemsDelta"; "required": false; }; }, { "selected": "selected"; "valueChange": "valueChange"; "validationFailed": "validationFailed"; }, ["label", "timePickerActionsDirective", "clearComponents"], ["[igxLabel]", "igx-prefix,[igxPrefix]", "igx-suffix,[igxSuffix]", "igx-hint,[igxHint]"], true, never>;
static ngAcceptInputType_spinLoop: unknown;
static ngAcceptInputType_readOnly: unknown;
}