ElementInternals
Die API, mit der sich ein selbstgebauter Elementtyp wie ein echtes eingebautes Element verhält — statt wie ein verkleidetes div.
Drei Dinge werden dadurch möglich. Formularassoziation: setFormValue() sorgt dafür, dass der Wert der Komponente beim Absenden mitgeschickt wird, und setValidity() klinkt sie in die normale Formularvalidierung ein, sodass :invalid und Fehlermeldungen funktionieren — früher brauchte es dafür ein verstecktes input-Element im Hintergrund. Barrierefreiheit: Rolle und ARIA-Eigenschaften werden am Internals-Objekt gesetzt statt als Attribut, wodurch sie zu Standardwerten werden, die die Seite überschreiben kann, statt mit ihr zu konkurrieren. Und eigene Zustände über internals.states, die CSS als :state(loading) zugänglich sind. Seit 2023 breit unterstützt.