@instawork/design-system
Version:
The design system for Instawork's web apps
83 lines (82 loc) • 3.86 kB
TypeScript
/// <reference types="jquery" />
import { DateTime } from 'luxon';
import { JQueryClipboardEvent, JQueryFocusEvent, JQueryKeyboardEvent, NavDirection } from '../common';
import { TemporalComponent, TemporalInputElement } from '../temporal-component';
import './time-input.component.scss';
export interface TimeInputElement extends TemporalInputElement {
}
declare global {
interface HTMLElementTagNameMap {
'iw-time-input': TimeInputElement;
}
interface JQuery {
iwTimeInput(): JQuery<TimeInputElement>;
}
}
declare type JQueryTimeInputPart = JQuery<HTMLInputElement>;
export declare class TimeInputComponent extends TemporalComponent<TimeInputElement> {
static readonly COMPONENT_SELECTOR = "iw-time-input";
static readonly TEMPLATE: string;
static loadPlugin(): void;
get placeholder(): string;
set placeholder(placeholder: string);
get disabledPlaceholder(): string | boolean;
get hasInput(): boolean;
private _displayPlaceholder;
get displayPlaceholder(): [string, string, string];
get hasDisplayPlaceholder(): boolean;
$spacer: JQuery;
$parts: JQueryTimeInputPart;
parts: HTMLInputElement[];
$hour: JQueryTimeInputPart;
$minute: JQueryTimeInputPart;
$meridian: JQueryTimeInputPart;
constructor($el: JQuery<TimeInputElement>);
/**
* Returns a jQuery selector of all tabbable elements in the document.
*
* Used to determine next/previous tab navigation targets.
*/
getTabbable(): JQuery;
protected getDisplayInput(): JQuery;
protected getDisplayPlaceholder(): JQuery;
protected getValueInput(): JQuery<HTMLInputElement>;
protected initDomRefs(): void;
protected initEvents(): void;
protected initDom(): void;
protected onInput(): void;
protected onValue(value: DateTime, isChanged: boolean, isValid: boolean): void;
protected onInputKeyDown(e: JQueryKeyboardEvent<HTMLInputElement>): boolean;
protected eventReturn(e: JQuery.TriggeredEvent, allowBubble: boolean): boolean;
protected onInputKeyUp(e: JQueryKeyboardEvent<HTMLInputElement>): void;
protected onInputFocus(e: JQueryFocusEvent<HTMLInputElement>): void;
protected onInputBlur(): void;
protected onComponentFocus(): void;
validatePart($part: JQueryTimeInputPart, value?: string): boolean;
protected getPartValue($part: JQueryTimeInputPart): string;
protected getMaxLength($part: JQueryTimeInputPart): number;
protected validatePartInput($part: JQueryTimeInputPart, newValue: string, inputValue: string): boolean;
protected onCopy(e: JQueryClipboardEvent): false;
protected onPaste(e: JQueryClipboardEvent): false;
syncValue(value?: DateTime): DateTime;
protected getValueFromInputParts(): DateTime;
protected getInputParts(): [string, string, string];
protected getInvalidValue(date: DateTime, time: DateTime): DateTime;
protected syncSpacer(): void;
protected setDisplay(value: string): JQuery;
protected setInputValues(time: DateTime): void;
protected formatInputPart(value: DateTime, format: string): string;
protected isHour($el: JQueryTimeInputPart): boolean;
protected isMinute($el: JQueryTimeInputPart): boolean;
protected isMeridian($el: JQueryTimeInputPart): boolean;
protected arrowNav($part: JQueryTimeInputPart, dir: NavDirection): boolean;
protected focusPart(part: HTMLInputElement): void;
protected incrementValue($part: JQueryTimeInputPart, amount: number, select?: boolean): void;
protected validateKeyDown($part: JQueryTimeInputPart, key: string): boolean;
protected handleKeyDown($part: JQueryTimeInputPart, key: string): boolean;
protected tabPrev(): false;
protected tabNext(): false;
private getMultipartDisplayPlaceholder;
protected syncPlaceholder(disabled: boolean): void;
}
export {};