@umbraco-ui/uui-base
Version:
This is a base dependency for Umbraco UI components. It contains mixins, animations, abstract base classes, UUIEvent base class, and universal types for properties shared by different components
56 lines (55 loc) • 2.56 kB
TypeScript
import { LitElement } from 'lit';
type HTMLElementConstructor<T = HTMLElement> = new (...args: any[]) => T;
type NativeFormControlElement = HTMLInputElement;
type FlagTypes = 'badInput' | 'customError' | 'patternMismatch' | 'rangeOverflow' | 'rangeUnderflow' | 'stepMismatch' | 'tooLong' | 'tooShort' | 'typeMismatch' | 'valueMissing' | 'badInput' | 'valid';
interface UUIFormControlValidatorConfig {
flagKey: FlagTypes;
getMessageMethod: () => string;
checkMethod: () => boolean;
weight: number;
}
export interface UUIFormControlMixinInterface<ValueType> extends LitElement {
addValidator: (flagKey: FlagTypes, getMessageMethod: () => string, checkMethod: () => boolean) => void;
removeValidator: (obj: UUIFormControlValidatorConfig) => void;
focusFirstInvalidElement(): void;
get value(): ValueType;
set value(newValue: ValueType);
formResetCallback(): void;
checkValidity(): boolean;
get validationMessage(): string;
get validity(): ValidityState;
setCustomValidity(error?: string): void;
submit(): void;
pristine: boolean;
}
export declare abstract class UUIFormControlMixinElement<ValueType> extends LitElement implements UUIFormControlMixinInterface<ValueType> {
protected _internals: ElementInternals;
protected _runValidators(): void;
addValidator: (flagKey: FlagTypes, getMessageMethod: () => string, checkMethod: () => boolean) => void;
removeValidator: (obj: UUIFormControlValidatorConfig) => void;
protected addFormControlElement(element: NativeFormControlElement): void;
protected abstract getFormElement(): HTMLElement | undefined | null;
focusFirstInvalidElement(): void;
get value(): ValueType;
set value(newValue: ValueType);
formResetCallback(): void;
checkValidity(): boolean;
get validationMessage(): string;
get validity(): ValidityState;
setCustomValidity(error: string): void;
submit(): void;
pristine: boolean;
name: string;
required: boolean;
requiredMessage: string;
error: boolean;
errorMessage: string;
}
/**
* The mixin allows a custom element to participate in HTML forms.
*
* @param {Object} superClass - superclass to be extended.
* @mixin
*/
export declare const UUIFormControlMixin: <ValueType = FormDataEntryValue | FormData, T extends HTMLElementConstructor<LitElement> = typeof LitElement, DefaultValueType = undefined>(superClass: T, defaultValue?: DefaultValueType) => HTMLElementConstructor<UUIFormControlMixinElement<ValueType | DefaultValueType>> & T;
export {};