Message
Komponente für globale Rückmeldungen zu Aktionsergebnissen, imperativ über die message-API aufgerufen und als schließbarer Toast gerendert.
Nimm sie, wenn du eine kurzlebige, sich selbst schließende Meldung brauchst, die ein Aktionsergebnis bestätigt. Rufe die imperative API
message.info/success/warning/error/toastauf, statt Markup zu platzieren.
Schnellstart
<r-button type="primary" onclick="message.info('Das ist ein Hinweis')">Meldung zeigen</r-button>Message wird normalerweise aus JavaScript aufgerufen. Das globale Objekt message wird an window registriert (auch als window.ranui.message erreichbar), sobald das Komponentenmodul geladen ist.
message.info('Das ist ein Hinweis');
message.success('Projekt gelöscht');API-Referenz
Globale Methoden
Jede Methode hängt einen Toast an und schließt ihn nach duration Millisekunden von selbst (Standard 3000). Alle fünf haben dieselbe Signatur.
| Methode | Beschreibung |
|---|---|
message.info() | Neutraler Hinweis-Toast (blaues Info-Icon) |
message.success() | Erfolgs-Toast (grünes Häkchen-Icon) |
message.warning() | Warnungs-Toast (bernsteinfarbenes Icon), bestimmt angesagt |
message.error() | Fehler-Toast (rotes Icon), bestimmt angesagt |
message.toast() | Schlichter dunkler Toast ohne Icon |
Signatur der Methoden
Jede Methode nimmt entweder eine string (den Inhalt) oder ein Optionsobjekt.
// 1. Eine Zeichenkette übergeben — nur Inhalt, schließt nach 3000 ms
message.info('Das ist ein Hinweis');
// 2. Ein Optionsobjekt übergeben
message.info({
content: 'Das ist ein Hinweis',
duration: 2000,
close: () => console.log('closed'),
});Optionen
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
content | string | — | Anzuzeigender Text (Pflicht, wenn ein Objekt übergeben wird) |
duration | number | 3000 | Verzögerung in Millisekunden bis zum automatischen Schließen |
close | () => void | — | Callback, das nach dem Entfernen des Toasts läuft |
top | number | string | 8 | Abstand des Toast-Stapels vom oberen Rand des Containers (Zahl = px) |
zIndex | number | string | 1200 | Stapelreihenfolge des Toast-Containers |
getContainer | () => HTMLElement | null | document.body | Liefert das Element, in das der Toast-Stapel eingehängt wird |
null,undefinedoder gar kein Argument bewirken nichts: Es wird nichts angezeigt.
Attribute des Elements r-message
Jeder Toast ist ein Custom Element <r-message>. Die globale API setzt diese Attribute für dich, sie lassen sich aber auch direkt verwenden.
| Attribut | Typ | Standard | Beschreibung |
|---|---|---|---|
type | string | — | Eines von info, success, warning, error, toast. Wählt Icon/Farbe und die ARIA-Live-Rolle |
content | string | — | Text, der im Toast gerendert wird |
sheet | string | '' | CSS, das in das Shadow DOM der Komponente injiziert wird |
Meldungsarten type
<r-button onclick="message.info('Das ist ein Hinweis')">Hinweis</r-button>
<r-button onclick="message.success('Das ist ein Hinweis')">Erfolg</r-button>
<r-button onclick="message.warning('Das ist ein Hinweis')">Warnung</r-button>
<r-button onclick="message.error('Das ist ein Hinweis')">Fehler</r-button>
<r-button onclick="message.toast('Das ist ein Hinweis')">Toast</r-button>Eigene Dauer duration
<r-button onclick="message.info({ content: 'Bleibt 6 s', duration: 6000 })">6-Sekunden-Toast</r-button>
<r-button onclick="message.info({ content: 'Bleibt 1 s', duration: 1000 })">1-Sekunden-Toast</r-button>Callback beim Schließen close
Das Callback close läuft, nachdem der Toast aus dem DOM entfernt wurde.
<r-button onclick="message.success({ content: 'Gespeichert', close: () => message.info('Toast geschlossen') })"
>Verkettete Meldung</r-button
>message.success({
content: 'Gespeichert',
close: () => {
// läuft, sobald der Toast verschwunden ist
console.log('toast closed');
},
});Eigene Platzierung top / zIndex / getContainer
message.info({
content: 'Nach unten geschoben',
top: 120, // Abstand vom oberen Rand des Containers
zIndex: 1300, // Stapelreihenfolge
getContainer: () => document.querySelector('#app'), // eigener Einhängepunkt
});Styling
Der Toast-Stapel liegt in einem an den Body portalierten Container; jedes <r-message> rendert seinen Inhalt in ein Shadow DOM, dessen Fläche sich über CSS-Variablen gestalten lässt (alle mit sinnvollen Rückfallwerten).
| CSS-Variable | Standard | Beschreibung |
|---|---|---|
--ran-message-content-background | var(--ran-color-bg-elevated) | Hintergrund der Toast-Fläche |
--ran-message-content-border-radius | var(--ran-radius-md) | Eckenradius des Toasts |
--ran-message-content-box-shadow | var(--ran-shadow-menu) | Erhebung des Toasts |
--ran-message-text-color | var(--ran-color-text) | Textfarbe des Toasts |
--ran-message-z-index | var(--ran-z-message, 1200) | z-index des Stapels |
--ran-message-top | 8px | Abstand des Stapels von oben |
Bewährte Praxis
- Benenne die Änderung: Formuliere den Toast-Text als Ergebnis, etwa „Projekt gelöscht“ oder „Änderungen gespeichert“, nicht als vages „Erfolg“.
- Erfolg / Hinweis: Nimm
message.success/message.infofür Bestätigungen, die nicht blockieren. - Fehler / Warnungen: Nimm
message.error/message.warning; sie steigen in eine bestimmte ARIA-Live-Region auf, sodass Screenreader unterbrechen. - Halte es kurz: Ein Toast verschwindet von selbst — hebe lange oder handlungsbedürftige Inhalte für einen Dialog auf.
- Dauer sparsam anpassen: Erhöhe
durationfür längere Meldungen, mache eine kurzlebige Rückmeldung aber nicht dauerhaft.