# 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.