servo/components/script_bindings/webidls/ElementInternals.webidl
Simon Wülker 04dd74dddb
script: Support custom element states (#38564)
Also adds support for `:state`.

Testing: Covered by existing tests

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-08-27 17:25:16 +00:00

52 lines
1.7 KiB
Text

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
// https://html.spec.whatwg.org/multipage/#elementinternals
[Exposed=Window]
interface ElementInternals {
// Shadow root access
readonly attribute ShadowRoot? shadowRoot;
// Form-associated custom elements
[Throws] undefined setFormValue((File or USVString or FormData)? value,
optional (File or USVString or FormData)? state);
[Throws] readonly attribute HTMLFormElement? form;
// flags shouldn't be optional here, #25704
[Throws] undefined setValidity(optional ValidityStateFlags flags = {},
optional DOMString message,
optional HTMLElement anchor);
[Throws] readonly attribute boolean willValidate;
[Throws] readonly attribute ValidityState validity;
[Throws] readonly attribute DOMString validationMessage;
[Throws] boolean checkValidity();
[Throws] boolean reportValidity();
[Throws] readonly attribute NodeList labels;
// Custom state pseudo-class
[SameObject] readonly attribute CustomStateSet states;
};
// https://html.spec.whatwg.org/multipage/#elementinternals
dictionary ValidityStateFlags {
boolean valueMissing = false;
boolean typeMismatch = false;
boolean patternMismatch = false;
boolean tooLong = false;
boolean tooShort = false;
boolean rangeUnderflow = false;
boolean rangeOverflow = false;
boolean stepMismatch = false;
boolean badInput = false;
boolean customError = false;
};
// https://html.spec.whatwg.org/multipage/#customstateset
[Exposed=Window]
interface CustomStateSet {
setlike<DOMString>;
};