form-associated-helpers
Version:
A collection of reusable mixins + helpers for working with form associated custom elements.
35 lines (34 loc) • 1.66 kB
TypeScript
/**
* This file is purely for adding getters to `VanillaFormAssociatedMixin`. It's a hacky workaround until this gets resolved in TypeScript:
* <https://github.com/microsoft/TypeScript/issues/58790>
*/
import type { Validator } from "../exports/types.js";
/**
* Defines getters for VanillaFormAssociated.
*/
export type AbstractGetters<T extends typeof HTMLElement> = {
get allValidators(): Array<Validator<HTMLElement & InstanceType<T>>>;
get labels(): NodeListOf<HTMLLabelElement>;
get validity(): ElementInternals["validity"];
get validationMessage(): ElementInternals["validationMessage"];
get willValidate(): ElementInternals["willValidate"];
/**
* `validationTarget` is used for displaying native validation popups as the "anchor".
* override this to choose what to "anchor" your validation popups from.
*/
get validationTarget(): null | undefined | HTMLElement;
/**
* Returns the form element attached to the element
*/
get form(): ElementInternals["form"];
/**
* Tracks whether or not an element meets custom criteria for `:user-invalid`. NOTE: this will not set `:user-invalid`, but instead set `:state(user-invalid)`. `:user-invalid` is inconsistent and has not been specced for Form Associated Custom Elements.
* By default this getter will always returns false. It is up to you to add logic.
*/
get isUserInvalid(): boolean;
/**
* We use a `isDisabled` that checks both `matches(":disabled")` and `this.disabled` which
* accounts for if the element is wrapped in a `<fieldset disabled>`
*/
get isDisabled(): boolean;
};