@oslokommune/punkt-elements
Version:
Komponentbiblioteket til Punkt, et designsystem laget av Oslo Origo
95 lines (94 loc) • 3.36 kB
TypeScript
import { PropertyValues } from 'lit';
import { Ref } from 'lit/directives/ref.js';
import { PktInputElement } from '../../base-elements/input-element';
import { ElementProps } from '../../types/typeUtils';
type Props = ElementProps<PktTimepicker, 'value' | 'hidePicker' | 'stepArrows'>;
export interface IPktTimepicker {
value?: string;
min?: string;
max?: string;
step?: number;
name?: string;
id?: string;
disabled?: boolean;
required?: boolean;
hidePicker?: boolean;
stepArrows?: boolean;
fullwidth?: boolean;
label?: string | null;
helptext?: string;
helptextDropdown?: string;
helptextDropdownButton?: string | null;
hasError?: boolean;
errorMessage?: string;
requiredTag?: boolean;
requiredText?: string;
optionalTag?: boolean;
optionalText?: string;
tagText?: string | null;
inline?: boolean;
}
export declare class PktTimepicker extends PktInputElement<Props> {
hiddenInputRef: Ref<HTMLInputElement>;
hoursInputRef: Ref<HTMLInputElement>;
minutesInputRef: Ref<HTMLInputElement>;
buttonRef: Ref<HTMLButtonElement>;
/**
* Exposes hiddenInputRef as inputRef so the base class validate() method
* triggers our manageValidity override automatically after every onChange call.
* The hidden input itself is never used for reporting — see manageValidity below.
*/
get inputRef(): Ref<HTMLInputElement>;
/**
* Overrides the base class manageValidity to solve a focusability problem:
* the browser requires the third argument to setValidity (the "anchor") to be
* a visible, focusable element — it focuses that element when navigating to an
* invalid field. Our hidden input[type=time] cannot receive focus, so passing it
* as the anchor would silently fail with "form control is not focusable".
*/
protected manageValidity(_input?: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement): void;
value: string;
hidePicker: boolean;
stepArrows: boolean;
private _hours;
private _minutes;
private _isOpen;
private _hoursDigitCount;
private _hoursFirstDigit;
private _minutesDigitCount;
private _minutesFirstDigit;
private _hasFocus;
private _setAriaInvalid;
private _outsideClickHandler;
private _handleComponentFocusIn;
private _handleComponentFocusOut;
connectedCallback(): void;
disconnectedCallback(): void;
protected willUpdate(changedProperties: PropertyValues): void;
protected updated(changedProperties: PropertyValues): void;
protected formResetCallback(): void;
private _isValidStep;
private _syncDisplayFromValue;
private _syncValueFromDisplay;
private get _minuteStep();
private get _hourOptions();
private get _minuteOptions();
private _openPopup;
private _closePopup;
private _togglePopup;
private _scrollToSelected;
private _focusSelectedOrFirst;
private _handleHoursKeydown;
private _handleHoursBlur;
private _handleMinutesKeydown;
private _handleMinutesBlur;
private _handleOptionClick;
private _focusOptionAndSync;
private _handlePopupKeydown;
private _stepTime;
private _renderOption;
private _renderPopup;
private _renderContainer;
render(): import('lit-html').TemplateResult<1>;
}
export {};