Checkbox
Checkbox-Komponente für eine einzelne Ja/Nein-Entscheidung, mit optionaler Beschriftung und nativer Formularunterstützung.
Nimm sie, wenn du einen einzelnen Ja/Nein-Schalter mit Beschriftung brauchst, der an nativen Formularen teilnimmt:
<r-checkbox>meldet seinen Zustand anFormDataund ist per Tastatur bedienbar.
Schnellstart
Grundlegende Verwendung
<r-checkbox>Angemeldet bleiben</r-checkbox>Der Inhalt des Standard-Slots wird zur Beschriftung der Checkbox.
API-Referenz
Eigenschaften
| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
checked | boolean | false | Ob die Checkbox angehakt ist |
value | string | 'false' | Formularwert; spiegelt den Zustand als 'true' / 'false' |
disabled | boolean | false | Ob die Checkbox deaktiviert ist |
required | boolean | false | Ob sie angehakt sein muss, damit das Formular abgeschickt werden kann |
sheet | string | '' | CSS, das für eigenes Styling ins Shadow DOM injiziert wird |
Die Attribute
checkedundvaluebleiben synchron: Setzt du eines, aktualisiert sich das andere. Angehakt istvalue'true', sonst'false'.
Zustand checked
<r-checkbox checked="true">Angehakt</r-checkbox> <r-checkbox checked="false">Nicht angehakt</r-checkbox>Wert value
<r-checkbox value="true">Wert true</r-checkbox> <r-checkbox value="false">Wert false</r-checkbox>Deaktiviert disabled
<r-checkbox checked="true" disabled>Angehakt</r-checkbox>
<r-checkbox checked="false" disabled>Nicht angehakt</r-checkbox>Eigenes Styling sheet
Das Attribut sheet injiziert CSS ins Shadow DOM und lässt dich interne Teile über ihre Klassennamen ansprechen.
<r-checkbox checked="true" sheet=".ran-checkbox-label { color: #006bff; }">Beschriftung mit Theme</r-checkbox>Events
change
Wird ausgelöst, wenn die Checkbox umgeschaltet wird (per Klick oder mit Leertaste/Enter). Das Event ist ein CustomEvent, dessen detail den neuen Zustand trägt:
detail: {
checked: boolean; // der Zustand der Checkbox nach dem Umschalten
}Eine deaktivierte Checkbox löst kein change aus.
<r-checkbox onchange="handleChange(event)">Schalt mich um</r-checkbox>
<script>
function handleChange(event) {
console.log('checked:', event.detail.checked);
}
</script>Slots
| Slot | Beschreibung |
|---|---|
| (Standard) | Die Beschriftung, gerendert neben dem Kästchen |
Formularanbindung
r-checkbox ist ein formularassoziiertes Custom Element (formAssociated = true). Es reicht seinen Zustand über ElementInternals.setFormValue weiter, nimmt also an nativen Formularen teil und wird von new FormData(form) erfasst, wenn es ein echter Nachfahre eines nativen <form> ist. Der nativen Checkbox-Semantik folgend steuert es seinen value nur bei, wenn es angehakt ist.
Der Host selbst trägt die zugängliche Checkbox-Semantik: role="checkbox", aria-checked, aria-disabled und Tastaturbedienung (Umschalten mit Leertaste oder Enter).
Zurücksetzen: Ein natives form.reset() stellt über formResetCallback() den Zustand wieder her, den das Kästchen beim ersten Verbinden hatte.
Validierung: required macht ein nicht angehaktes Kästchen über ElementInternals.setValidity() ungültig — sichtbar für form.checkValidity()/form.reportValidity(); ein disabled-Kästchen blockiert die Validierung nie. checkValidity(), reportValidity(), validity und validationMessage stehen am Element bereit, wie bei einem nativen Feld.
<form>
<r-checkbox name="terms" required>Ich stimme den Bedingungen zu</r-checkbox>
<button type="submit">Absenden</button>
</form>CSS-Parts
Gestalte die interne Struktur über den ::part()-Selektor:
| Part | Element |
|---|---|
wrapper | Der äußere Flex-Container mit Kästchen und Beschriftung |
checkbox | Der Container des Kästchens |
input | Das visuell verborgene <input type="checkbox"> |
inner | Das gezeichnete Kästchen (Rahmen, Füllung, Häkchen) |
label | Die Beschriftung um den Standard-Slot |
r-checkbox::part(inner) {
border-radius: 50%;
}
r-checkbox::part(label) {
font-weight: 600;
}Styling
<r-checkbox> stellt 32 eigene CSS-Custom-Properties bereit, dazu die semantischen Tokens, die es aus dem Theme liest. Setze eine dort, wo sie vererbt wird — :root, ein Wrapper oder das Element selbst:
r-checkbox {
--ran-checkbox-color: var(--ran-color-text-secondary);
}Parts: checkbox · inner · input · label · wrapper
Die vollständige Liste steht in den Style-Tokens; welches Token du wählst, klärt das Designsystem.
Bewährte Praxis
- Beschrifte deine Checkboxen: Gib Text in den Slot, damit das Bedienelement einen zugänglichen Namen hat.
checkedvs.value: Nimmcheckedfür den booleschen Zustand; liesvalue('true'/'false'), wenn du Formulardaten einsammelst.- Deaktiviert: Nimm
disabled, wenn die Wahl nicht verfügbar ist. - Auf
changehören: Liesevent.detail.checked, statt das DOM erneut abzufragen. - Formulare: Setze
r-checkboxeinfach in ein<form>; der Wert wird automatisch erfasst, wenn es angehakt ist. Zum HelferserializeForm(), der ein Absenden in ein schlichtes Objekt verwandelt, siehe Forms.