@nuralyui/timepicker
Version:
NuralyUI TimePicker - A comprehensive time selection component with clock interface, multiple formats, and validation
117 lines • 4.05 kB
TypeScript
import { LitElement, TemplateResult } from 'lit';
import '../input/input.component.js';
import '../button/button.component.js';
import { DropdownHost } from '../../shared/controllers/dropdown.interface.js';
import { TimeValue, TimeFormat, TimePickerConfig, TimePickerPlacement } from './timepicker.types.js';
export interface TimePickerHost extends LitElement, DropdownHost {
getCurrentTime(): TimeValue;
setTime(time: TimeValue): void;
formatTime(time: TimeValue): string;
parseTime(timeString: string): TimeValue | null;
getConfig(): TimePickerConfig;
validateTime(time: TimeValue): boolean;
requestUpdate(): void;
}
declare const NrTimePickerElement_base: (new (...args: any[]) => import("../../shared/dependency-mixin.js").DependencyAware) & (new (...args: any[]) => import("../../shared/theme-mixin.js").ThemeAware) & (new (...args: any[]) => import("../../shared/event-handler-mixin.js").EventHandlerCapable) & typeof LitElement;
/**
* A comprehensive time picker component that supports both 12-hour and 24-hour formats,
* with optional seconds display and extensive customization options.
*
* @example
* ```html
* <nr-timepicker
* value="14:30:00"
* format="24h"
* show-seconds
* placeholder="Select time">
* </nr-timepicker>
* ```
*/
export declare class NrTimePickerElement extends NrTimePickerElement_base implements TimePickerHost {
static styles: import("lit").CSSResult[];
value: string;
name: string;
placeholder: string;
format: TimeFormat;
showSeconds: boolean;
disabled: boolean;
readonly: boolean;
required: boolean;
minTime?: string;
maxTime?: string;
disabledTimes?: string[];
enabledTimes?: string[];
helperText: string;
label: string;
size: 'small' | 'medium' | 'large';
variant: 'outlined' | 'filled' | 'standard';
placement: TimePickerPlacement;
/** Scroll behavior for dropdown navigation - 'instant' for immediate, 'smooth' for animated, 'auto' for browser default */
scrollBehavior: 'auto' | 'instant' | 'smooth';
private inputValue;
private state;
private validationMessage;
private dropdownController;
private selectionController;
private validationController;
private formattingController;
constructor();
connectedCallback(): void;
disconnectedCallback(): void;
updated(changedProperties: Map<string, any>): void;
private setupDropdownElements;
render(): TemplateResult;
open(): void;
close(): void;
clear(): void;
setToNow(): void;
validate(): boolean;
validateTime(time: TimeValue): boolean;
private isHourValid;
private isMinuteValid;
private isSecondValid;
private renderLabel;
private renderInput;
private renderDropdown;
private renderColumnPicker;
private renderHourColumn;
private renderMinuteColumn;
private renderSecondColumn;
private renderActions;
private renderHelperText;
private scrollToSelectedTime;
private scrollToSelectedHour;
private scrollToSelectedMinute;
private scrollToSelectedSecond;
private getHourIndex;
private handleComponentClick;
private handleDocumentClick;
private handleDropdownClick;
private handleOkClick;
private handleInputBlur;
private handleInputClick;
private handleInputChange;
private handleHourSelect;
private handleMinuteSelect;
private handleSecondSelect;
private shouldUpdateConstraints;
private updateConstraints;
private setTimeFromValue;
private updateInputValue;
getConfig(): TimePickerConfig;
getCurrentTime(): TimeValue;
setTime(time: TimeValue): void;
formatTime(time: TimeValue): string;
/**
* Get appropriate placeholder text based on format
*/
private getFormatPlaceholder;
parseTime(timeString: string): TimeValue | null;
}
declare global {
interface HTMLElementTagNameMap {
'nr-timepicker': NrTimePickerElement;
}
}
export {};
//# sourceMappingURL=timepicker.component.d.ts.map