Zum Hauptinhalt springen

Ihre Meinung ist uns wichtig! Gemeinsam mit Ihnen möchten wir KoliBri stetig verbessern. Teilen Sie uns Ihre Ideen, Wünsche oder Anregungen mit – schnell und unkompliziert.

Drawer

Synonyme: Seitenpanel, Navigationsschublade, Side Panel

Beschreibung: Die Drawer-Komponente ist ein ausklappbares Seitenfenster, das zusätzliche Informationen oder Navigationselemente anzeigt. Sie wird typischerweise von der Seite in den Viewportbereich eingeklappt und kann durch Benutzer oder programmgesteuert geöffnet und geschlossen werden.

Beispiel​

Standard-Drawer mit Label und Inhalt:

Dies ist der Inhalt des Drawers.

<KolDrawer _align="left" _hasCloser={true} _label="Drawer" ><p>Dies ist der Inhalt des Drawers.</p></KolDrawer>

Barrierefreiheit​

  • Das _label-Attribut bietet eine semantische Beschriftung für die Komponente, die von Screenreadern als aria-label verwendet wird.
  • Beim Öffnen des Drawers wird der Fokus automatisch in den Drawer-Inhalt verschoben, um Screenreader-Nutzer zu benachrichtigen, dass ein neuer UI-Bereich verfügbar ist.
  • Beim Schließen wird der Fokus zum ursprünglichen Element zurückgeführt.
  • Alle fokussierbaren Elemente außerhalb des Drawers werden deaktiviert, um unbeabsichtigte Interaktionen mit dem Hintergrund zu verhindern.
  • Die Komponente unterstützt vollständige Tastaturnavigation.

Verwendung​

Tastatursteuerung​

TasteFunktion
TabNavigiert durch die fokussierbaren Elemente innerhalb des Drawers.
Shift + TabNavigiert rückwärts durch die fokussierbaren Elemente.
ESCSchließt den geöffneten Drawer.

Best Practices / Empfehlungen​

  • Setzen Sie immer das _label-Attribut, um die Komponente zugänglich und für Benutzer verständlich zu machen.
  • Verwenden Sie die _align-Option zur Ausrichtung, um den Drawer an den Kontext anzupassen (z.B. left für Navigationsmenüs, right für sekundäre Inhalte).
  • Aktivieren Sie _hasCloser, um Benutzern einen visuellen Schließ-Button anzubieten.
  • Nutzen Sie die Methoden open() und close() oder das Attribut _open zur programmgesteuerten Steuerung.
  • Verwenden Sie _on mit onClose-Callback, um Aktionen nach dem Schließen auszuführen.
  • Der Drawer sollte nicht für kritische Primärinhalte genutzt werden, sondern für sekundäre Informationen oder Navigationshilfen.
  • Begrenzen Sie die Inhalte auf wesentliche Informationen, um Ablenkung zu vermeiden.

Anwendungsfälle​

  • Navigationsmenüs und Menü-Toggle in responsiven Designs
  • Filter- und Suchoptionen in Listen oder Tabellen
  • Zusätzliche Aktionen und Einstellungen
  • Kontextabhängige Informationen und Details
  • Seitliche Navigationshilfen (z.B. Inhaltsverzeichnis, Kategorien)

Playground​

Dies ist der Inhalt des Drawers.

Align
<KolDrawer _align="left" _hasCloser={true} _label="Drawer" ><p>Dies ist der Inhalt des Drawers.</p></KolDrawer>

Funktionalitäten​

Basis-Drawer mit Label und Inhalt​

Der Drawer zeigt einen definierten Inhaltsbereich über den Slot an:

Dies ist der Inhalt des Drawers.

<KolDrawer _align="left" _hasCloser={true} _label="Drawer Titel" ><p>Dies ist der Inhalt des Drawers.</p></KolDrawer>

Ausrichtung​

Die Position des Drawers wird über das _align-Attribut gesteuert:

Dies ist der Inhalt des Drawers.

Align
<KolDrawer _align="left" _hasCloser={true} _label="Drawer" ><p>Dies ist der Inhalt des Drawers.</p></KolDrawer>

Schließ-Button​

Aktivieren Sie _hasCloser, um einen visuellen Schließ-Button anzuzeigen:

Dies ist der Inhalt des Drawers.

<KolDrawer _align="left" _hasCloser={true} _label="Drawer" ><p>Dies ist der Inhalt des Drawers.</p></KolDrawer>

Programmgesteuerte Kontrolle​

Verwenden Sie das _open-Attribut zur React-State-basierten Steuerung oder die Methoden open() und close():

Events​

Zur Behandlung von Events bzw. Callbacks siehe .

EventAuslöserValue
closeDer Drawer wird geschlossen (durch Benutzer oder Programm)undefined

Animationen​

Optional können Animationen mit Keyframes hinzugefügt werden. Dabei ist es wichtig, dass die Keyframe-Namen slideIn bzw. slideOut enthalten und auf der Klasse drawer__wrapper definiert sind.

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;
}
}
}

API​

Properties​

PropertyAttributeDescriptionTypeDefault
_align_alignDefines the visual orientation of the component."bottom" | "left" | "right" | "top" | undefinedundefined
_hasCloser_has-closerDefines whether the element can be closed.boolean | undefinedfalse
_label (required)_labelDefines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.).stringundefined
_level_levelDefines which H-level from 1-6 the heading has. 0 specifies no heading and is shown as bold text.0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined0
_on--Specifies the EventCallback function to be called when the drawer is closing.undefined | ({ onCancel?: ((event: Event) => void) | undefined; onClose?: (() => void) | undefined; onToggle?: ((open: boolean) => void) | undefined; })undefined
_open_openOpens/expands the element when truthy, closes/collapses when falsy.boolean | undefinedundefined

Methods​

close​

close() => Promise<void>

Closes the drawer.

Returns​

Type: Promise<void>

open() => Promise<void>​

[DEPRECATED] Use show() or showModal() instead.

Opens the drawer.

Returns​

Type: Promise<void>

show(modal?: boolean) => Promise<void>​

Opens the drawer. Pass true to open as a modal drawer.

Parameters​
NameTypeDescription
modalboolean
Returns​

Type: Promise<void>

showModal() => Promise<void>​

Opens the drawer as a modal.

Returns​

Type: Promise<void>

Slots​

SlotDescription
The Content of drawer.

Beispiele​