# Popover Component Wiederverwendbare Popover-Komponente mit nativer Popover API. ## Baseline Status **Baseline 2025**: Popover API ist Baseline Newly available. ## Verwendung ### Basis-Verwendung ```html

Popover content

``` ### Mit Positionierung ```html ``` ## Attribute | Attribut | Typ | Standard | Beschreibung | |----------|-----|----------|-------------| | `id` | string | `auto-generated` | Popover ID (erforderlich für popovertarget) | | `type` | string | `auto` | Popover-Typ: `auto` oder `manual` | | `popover` | string | `auto` | Alias für `type` | | `position` | string | `null` | Position: `bottom-start`, `bottom-end`, `top-start`, `top-end` | | `anchor` | string | `null` | CSS Anchor Element ID (für Anchor Positioning) | | `aria-label` | string | `null` | ARIA label für accessibility | | `aria-labelledby` | string | `null` | ARIA labelledby für accessibility | ## Popover-Typen ### Auto Popover (`type="auto"`) - Automatisches Dismissal beim Klick außerhalb - Automatisches Dismissal beim ESC-Key - Automatisches Dismissal beim Klick auf einen anderen Popover-Trigger - Automatisches Focus-Management ### Manual Popover (`type="manual"`) - Manuelles Management erforderlich - Kein automatisches Dismissal - Für komplexe Interaktionen geeignet ## Positionierung Die Komponente unterstützt verschiedene Positionierungen: - `bottom-start` - Unten links - `bottom-end` - Unten rechts - `top-start` - Oben links - `top-end` - Oben rechts ## Trigger-Button Der Trigger-Button benötigt das `popovertarget` Attribut: ```html ``` Das `aria-expanded` Attribut wird automatisch aktualisiert, wenn der Popover geöffnet/geschlossen wird. ## Accessibility Die Komponente ist vollständig accessibility-konform: - Native Browser-Support für Keyboard-Navigation - Automatisches Focus-Management - ESC-Key Support (native) - ARIA-Attribute unterstützt - Screen Reader Support ## JavaScript Integration Die Popover API funktioniert ohne JavaScript, aber für erweiterte Features kann JavaScript verwendet werden: ```javascript const popover = document.getElementById('my-popover'); const trigger = document.querySelector('[popovertarget="my-popover"]'); // Popover öffnen popover.showPopover(); // Popover schließen popover.hidePopover(); // Popover togglen popover.togglePopover(); // Event Listener popover.addEventListener('toggle', (e) => { const isOpen = popover.matches(':popover-open'); trigger.setAttribute('aria-expanded', isOpen ? 'true' : 'false'); }); ``` ## View Transitions Die Komponente unterstützt View Transitions für animierte Übergänge: ```css [popover].admin-popover { view-transition-name: admin-popover; } ``` ## CSS-Klassen Die Komponente verwendet folgende CSS-Klassen: - `.admin-popover` - Basis-Klasse - `.admin-popover--auto` - Auto Popover Variante - `.admin-popover--manual` - Manual Popover Variante - `.admin-popover--bottom-start` - Position bottom-start - `.admin-popover--bottom-end` - Position bottom-end - `.admin-popover--top-start` - Position top-start - `.admin-popover--top-end` - Position top-end ## Browser-Support - Chrome 125+ - Firefox 129+ - Safari 18+ - Edge 125+ ## Migration ### Von Custom Dropdown migrieren **Vorher:** ```html ``` **Nachher:** ```html ``` **JavaScript entfernen:** Das Custom Dropdown-Management JavaScript kann entfernt werden, da die Popover API native Funktionalität bietet.