Dialog
Einführung
Ein überlagerndes Modalfenster, das die normale Benutzerinteraktion mit der Seite unterbricht, um explizite Eingaben zu erfassen, wichtige Dashboard-Werkzeuge anzuzeigen oder Aktionsbestätigungen anzufordern.
Die Dialog-Komponente ist vollständig als dialog-Block in den Page Builder integriert und ermöglicht es Content-Managern, strukturelle Auslöser (z. B. das Klicken auf eine Aktionsschaltfläche), Titel, benutzerdefinierte Fußzeilen-Menüs und Modaltexte direkt in Sveltia CMS zu definieren.
Hydration & Interaktives Verhalten
Ein Dialog benötigt eine clientseitige JavaScript-Engine, um kritisches Barrierefreiheitsverhalten, Fokus-Einfangen und Tastatursteuerung zu verwalten. Daher hydriert sich der Dialog standardmäßig als aktive Client-Insel. Wenn eine statische, schreibgeschützte Präsentationshülle gewünscht ist, setzen Sie "interactive": false, um das Laden clientseitiger Skriptressourcen zu verhindern.
| JSON-Eigenschaft | Hydration-Modus | Beschreibung |
|---|---|---|
"interactive": true | Interaktive Insel (Standard) | Vollständig reaktionsfähiges Modal mit Fokus-Einfangen, Escape-Schließung und Überlagerungsabschattung. |
"interactive": false | Statisches HTML-Template | Eine serverseitig gerenderte statische Layout-Hülle ohne interaktives JavaScript-Verhalten. |
Verwendung
Diese Konfigurationen zeigen genau, wie Page-Builder-Block-Elemente konstruiert werden.
1. Aktionsbestätigungs-Modal
Ein Standard-Bestätigungsdialog, der über eine Aktionsschaltfläche ausgelöst wird und über Abbrechen- und Akzeptieren-Optionen verfügt. Ideal für einfache Entscheidungen wie das Überprüfen von Einstellungen oder das Bestätigen von Elementen.
{
"type": "dialog",
"title": "Confirm Account Sync",
"description": "Are you sure you want to merge workspace details?",
"body": "This syncs configurations across devices. Unsaved local changes might be overridden.",
"confirmText": "Synchronize",
"cancelText": "Dismiss",
"trigger": [
{
"type": "button",
"text": "Trigger Action Modal",
"colorPalette": "blue"
}
]
}
Confirm Account Sync
Confirm Account Sync
2. Warnung bei Destruktiver Aktion (Alertdialog-Rolle)
Verwenden Sie dieses Format für folgenschwere, irreversible destruktive Bestätigungen (z. B. das Löschen einer Datenbank oder das Verwerfen nicht gespeicherter Arbeit). Diese Konfiguration ändert die semantische Bildschirmrolle des Dialogs in alertdialog.
{
"type": "dialog",
"role": "alertdialog",
"title": "Destroy Database",
"description": "You are about to permanently erase production server nodes.",
"body": "This operation is immediate and completely irreversible. All live connections will instantly shut down.",
"confirmText": "Erase Forever",
"cancelText": "Keep Database",
"trigger": [
{
"type": "button",
"text": "Delete Database",
"colorPalette": "red"
}
]
}
Destroy Database
Destroy Database
Props
| Eigenschaft | CMS-Feldtyp | Standard | Beschreibung / Unterstützte Optionen |
|---|---|---|---|
Auslöserelement (trigger) | list | - | Blockelemente (wie Schaltflächen oder Links), die auf der Seite gerendert werden und beim Klick den Dialog öffnen. |
Überschrift (title) | string | - | Der fettgedruckte Titelkopftext, der oben auf der Dialogkarte angezeigt wird. |
Unterüberschrift (description) | string | - | Ergänzender Untertiteltext, der sekundären Erklärungskontext bietet. |
Hauptinhalt (body) | string | - | Der primäre beschreibende Text oder Layoutinhaltsblöcke, die im mittleren Bereich der Karte gerendert werden. |
Bestätigungstext (confirmText) | string | - | Optional. Textbeschriftung für die Hauptaktions-Bestätigungsschaltfläche. |
Abbruchtext (cancelText) | string | - | Optional. Textbeschriftung für die Schließen/Abbrechen-Schaltfläche. |
Rolle (role) | select | "dialog" | Semantische Rolle des Modals. • "dialog" — Standard interaktives Fenster.• "alertdialog" — Destruktive Warnungen. |
Benutzerdefinierte Fußzeile (footer) | list | - | Liste von Blöcken, die am unteren Rand gerendert werden. Ideal für benutzerdefinierte Steuerelemente oder zusätzliche Schaltflächenkürzel. |
Hydration aktivieren (interactive) | boolean | true | Wenn true, hydriert die Komponente als Client-Insel, um Überlagerungen, Fokus-Einfangen und Escape-Schließungen zu ermöglichen. |
Barrierefreiheit & Entwicklerhinweise
Entspricht dem Dialog (Modal) WAI-ARIA-Designmuster. Bei Hydration implementiert die Komponente die folgenden kritischen Barrierefreiheitsschichten:
- Anfänglicher Fokus-Trap: Der Fokus wechselt beim Öffnen in den Dialog (wobei zuerst die Abbrechen/Sicherheitsaktion ausgewählt wird, um versehentliche Auslöser zu vermeiden) und bleibt intern gefangen, während mit
Tab/Shift + Tabgescrollt wird. - Hintergrund-Trägheit: Interaktive Elemente außerhalb des geöffneten Modal-Containers werden automatisch mit dem HTML-Attribut
inertmarkiert, um zu verhindern, dass Bildschirmlesegeräte oder Tastatursteuerungen Elemente hinter dem Hintergrund fokussieren. - Escape-Schließung: Durch Drücken der
Escape-Tastaturtaste wird der aktive Dialog-Container automatisch geschlossen (soferncloseOnEscapenicht anders konfiguriert ist). - Body-Scroll-Sperre: Das Scrollen des Dokumentenkörpers wird eingefroren, solange eine Modal aktiv ist, und nach Abschluss der Schließanimation des Dialogs automatisch wiederhergestellt.