Drawer
Synonyme: Corner Dialog, Prompt Mithilfe der Drawer-Komponente können zusätzliche Informationen oder auch Navigationselemente in einem ausklappbaren Seitenfenster angezeigt werden. Ein offener Drawer kann via ESC geschlossen werden.
Die Drawer-Komponente ist standardmäßig versteckt. Sie wird i.d.R. erst nach Klick auf einen Button oder sonstigem Trigger angezeigt bzw. controlled mit dem Attribut _open gesteuert.
<kol-drawer _label="Drawer" _open _align="top"></kol-drawer>
Beispiel
Uncontrolled
Im Uncontrolled-Modus wird der Drawer über die Methoden open() und close() gesteuert.
<kol-drawer id="example-drawer" _align="left" _label="Drawer">
<div>
<p>Dies ist der Inhalt des Drawers. Hier können Sie beliebige HTML-Elemente einfügen.</p>
<kol-button class="close-drawer" _label="Schließen"></kol-button>
</div>
</kol-drawer>
<kol-button id="drawer-open-button" _label="Drawer öffnen"></kol-button>
<script>
const drawer = document.querySelector('#example-drawer');
const drawerOpenButton = document.querySelector('#drawer-open-button');
function openDrawer() {
drawer.open();
}
function closeDrawer() {
drawer.close();
}
document.querySelectorAll('.close-drawer').forEach((b) => (b.onclick = closeDrawer));
drawerOpenButton.onclick = openDrawer;
</script>
Controlled
Im Controlled-Modus wird der Drawer über das _open Attribut gesteuert.
<kol-drawer _open="true" _align="left" _label="Drawer">
<p>Drawer Inhalt</p>
</kol-drawer>
Verwendung
Um den Drawer programmgesteuert zu öffnen und zu schließen, verwenden Sie die Methoden open() und close(). Stellen Sie sicher, dass das _label Attribut gesetzt ist, um die Zugänglichkeit zu gewährleisten. Die Ausrichtung des Drawers können Sie mit dem _align Attribut und den Werten left, top, right oder bottom anpassen, um ihn auf der gewünschten Seite des Bildschirms anzuzeigen. Nutzen Sie das _on Attribut, um benutzerdefinierte Aktionen beim Schließen des Drawers auszuführen. Ein offener Drawer kann via ESC geschlossen werden.
Barrierefreiheit
Das _label Attribut stellt eine klare und verständliche Beschriftung für den Drawer bereit. Dies verbessert die Nutzung für Personen, die Screenreader verwenden, da das Label als aria-label fungiert und somit die Bedeutung und Funktion des Drawers erklärt.
Drawer
Beim Öffnen des Drawers wird der Fokus automatisch auf den Inhalt des Drawers gesetzt. Dies stellt sicher, dass Benutzer von Screenreadern sofort wissen, dass ein neuer Bereich geöffnet wurde, und dass sie direkt interagieren können. Beim Schließen des Drawers wird der Fokus zum vorherigen aktiven Element zurückgeführt, was eine nahtlose Benutzererfahrung bietet.
Die Drawer-Komponente unterstützt die vollständige Navigation über die Tastatur. Benutzer können mit der Tab-Taste durch die interaktiven Elemente innerhalb des Drawers navigieren. Zudem kann der Drawer mit der ESC-Taste schnell und einfach geschlossen werden, was die Bedienung erleichtert.
Während der Drawer geöffnet ist, werden alle selektierbaren Elemente außerhalb des Drawers deaktiviert. Dies verhindert ungewollte Interaktionen mit dem Hintergrundinhalt und lenkt die Aufmerksamkeit der Benutzer auf den Drawer-Inhalt.
Tastatursteuerung
| Taste | Funktion |
|---|---|
Tab | Bei geöffnetem Drawer werden alle fokussierbaren Elemente der Reihenfolge nach angesprungen. |
ESC-Taste | Schließt den Drawer. |
Animationen
Optional können Animationen mit Keyframes hinzugefügt werden. Dabei ist es wichtig, dass die Keyframes die Namen slideIn bzw. slideOut enthalten und auf der Klasse drawer__wrapper definiert werden.
Beispiel:
.drawer__wrapper {
&--left {
animation: slideInLeft $duration forwards;
&.is-closing {
animation: slideOutLeft $duration forwards !important;
}
}
&--right {
animation: slideInRight $duration forwards;
&.is-closing {
animation: slideOutRight $duration forwards;
}
}
&--top {
animation: slideInTop $duration forwards;
&.is-closing {
animation: slideOutTop $duration forwards;
}
}
&--bottom {
animation: slideInBottom $duration forwards;
&.is-closing {
animation: slideOutBottom $duration forwards;
}
}
}
Links und Referenzen
Properties
| Property | Attribute | Description | Type | Default |
|---|---|---|---|---|
_align | _align | Defines the visual orientation of the component. | "bottom" | "left" | "right" | "top" | undefined | undefined |
_hasCloser | _has-closer | Defines whether the element can be closed. | boolean | undefined | false |
_label (required) | _label | Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.). | string | undefined |
_on | -- | Specifies the EventCallback function to be called when the drawer is closing. | undefined | ({ onClose?: (() => void) | undefined; }) | undefined |
_open | _open | Opens/expands the element when truthy, closes/collapses when falsy. | boolean | undefined | undefined |
Methods
close
close() => Promise<void>
Closes the drawer.
Returns
Type: Promise<void>
open() => Promise<void>
Opens the drawer.
Returns
Type: Promise<void>
Slots
| Slot | Description |
|---|---|
| The Content of drawer. |