import { NumberFormatter, NumberParser } from '@internationalized/number'; import { CSSResultArray, PropertyValues, TemplateResult } from 'lit'; import './../infield-button'; import { LuzmoTextFieldBase } from './../text-field/text-field'; export declare const FRAMES_PER_CHANGE = 5; export declare const CHANGE_DEBOUNCE_MS = 100; export declare const indeterminatePlaceholder = "-"; export declare const remapMultiByteCharacters: Record; /** * @element luzmo-number-field * @slot help-text - default or non-negative help text to associate to your form element * @slot negative-help-text - negative help text to associate to your form element when `invalid` */ export declare class LuzmoNumberField extends LuzmoTextFieldBase { /** * The styles for the number field. * @internal */ static get styles(): CSSResultArray; /** * The buttons for the number field. * @internal */ private buttons; /** * Whether the number field is focused. * @default false * @type {boolean} */ focused: boolean; /** * The forced unit for the number field. * @internal */ _forcedUnit: string; /** * An `` element will process its numeric value with * `new Intl.NumberFormat(this.resolvedLanguage, this.formatOptions).format(this.valueAsNumber)` * in order to prepare it for visual delivery in the input. In order to customize this * processing supply your own `Intl.NumberFormatOptions` object here. * * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat */ formatOptions: Intl.NumberFormatOptions; /** * Whether the stepper UI is hidden or not. * @attribute {boolean} hide-stepper * @default false * @type {boolean} */ hideStepper: boolean; /** * Whether the number field should grow to fit the content. * @default false * @type {boolean} */ grows: boolean; /** * Whether the number field is indeterminate (temporary UI state) * @default false * @type {boolean} */ indeterminate: boolean; /** * Whether the number field is keyboard focused. * @default false * @type {boolean} */ keyboardFocused: boolean; /** * The maximum value for the number field. * @default undefined * @type {number} */ max?: number; /** * The minimum value for the number field. * @default undefined * @type {number} */ min?: number; /** * The distance by which to alter the value of the element when taking a "step". * * When `this.formatOptions.style === 'percentage'` the default step will be * set to 0.01 unless otherwise supplied to the element. * @default undefined * @type {number} */ step?: number; /** * Whether the number field is managed input. * @internal */ managedInput: boolean; /** * The modifier for the step. * @default 10 * @type {number} */ stepModifier: number; set value(rawValue: number); get value(): number; private get inputValue(); /** * The value of the number field. * @internal */ _value: number; /** * The value of the number field being tracked. * @internal */ private _trackingValue; /** * The last committed value of the number field. * @internal */ private lastCommitedValue?; /** * Set the value of the number field. * @internal */ private setValue; /** * Retreive the value of the element parsed to a Number. * @internal */ get valueAsString(): string; /** * Set the value of the number field as a string. * @internal */ set valueAsString(value: string); /** * The formatted value of the number field. */ get formattedValue(): string; /** * The decimals characters for the number field. * @internal */ private decimalsChars; /** * The value before focus of the number field. * @internal */ private valueBeforeFocus; /** * Whether the number field is intenting to use a decimal separator. * @internal */ private isIntentDecimal; /** * Convert the input value to a number. * @internal */ private convertValueToNumber; /** * The step for the number field. * @internal */ private get _step(); /** * The next change for the number field. * @internal */ private nextChange; /** * The change count for the number field. * @internal */ private changeCount; /** * The find change for the number field. * @internal */ private findChange; /** * The change for the number field. * @internal */ private change; /** * The safty for the number field. * @internal */ private safty; private languageResolver; private handlePointerdown; private startChange; private doChange; private handlePointermove; private handlePointerup; private doNextChange; private stepBy; private increment; private decrement; private handleKeydown; private queuedChangeEvent; protected onScroll(event: WheelEvent): void; protected onFocus(): void; protected onBlur(_event: FocusEvent): void; private handleFocusin; private handleFocusout; private wasIndeterminate; private indeterminateValue?; protected handleChange(): void; protected handleCompositionStart(): void; protected handleCompositionEnd(): void; private hasRecentlyReceivedPointerDown; protected handleInputElementPointerdown(): void; protected handleInput(event: InputEvent): void; private valueWithLimits; private validateInput; protected get displayValue(): string; protected clearNumberFormatterCache(): void; protected get numberFormatter(): NumberFormatter; protected clearValueFormatterCache(): void; protected get valueFormatter(): NumberFormatter; /** * The number formatter for the number field. * @internal */ private _numberFormatter?; /** * The number formatter for the number field when focused. * @internal */ private _numberFormatterFocused?; /** * The value formatter for the number field. * @internal */ private _valueFormatter?; /** * The number parser for the number field. * @internal */ protected get numberParser(): NumberParser; applyFocusElementLabel: (value?: string) => void; /** * The number parser for the number field. * @internal */ private _numberParser?; /** * The number parser for the number field when focused. * @internal */ private _numberParserFocused?; protected renderField(): TemplateResult; protected update(changes: PropertyValues): void; willUpdate(changes: PropertyValues): void; private isComposing; protected firstUpdated(changes: PropertyValues): void; protected updated(changes: PropertyValues): void; }