MessageView
Message, alerte ou confirmation, avec actions.
Description
Le composant MessageView affiche à l'utilisateur un message, une notification, une alerte ou une confirmation. Il prend en charge plusieurs niveaux de gravité (info, success, warning, error) et peut porter une action principale et une action secondaire. Les boutons disent tout : une boîte a toujours exactement une sortie, et lorsqu'aucune action déclarée ne ferme, l'utilisateur doit trancher — un tap maladroit hors du cadre ne peut pas escamoter la décision.
Cas d'usage courants :
- Message de succès après l'envoi d'un formulaire
- Notification d'erreur
- Alerte d'information
- Boîte de dialogue de confirmation
- Message de bienvenue
Description des champs
idstringrequistypestringrequis"Message"contentMessageContentrequiscontent.titlestringrequiscontent.introstringoptionnelcontent.bodystringrequiscontent.severitystringoptionnel"info", "success", "warning", "error" (par défaut : "info")content.actionsMessageAction[]optionnelcontent.actions[].labelstringrequiscontent.actions[].gostringoptionnelback, le bouton se contente de fermercontent.actions[].methodHttpMethodoptionnelgo seulement (défaut : GET)content.actions[].backnumber | 'root'optionnel'root' ramène à votre vue de base. Exclusif avec goprocessIdstringoptionnelmetadataobjectoptionnelMéthodes
setIntro(intro)→ thisintro- Texte d'introduction
setBody(body)→ thisbody- Texte du corps du message
setSeverity(severity)→ thisseverity- Niveau de gravité ('info', 'success', 'warning', 'error')
addAction(label, options?)→ thisgo ni back, il se contente de fermerlabel- Texte du boutonoptions.go- Chemin ou URL à chargeroptions.method- Méthode HTTP, avecgoseulementoptions.back- Nombre d'écrans à reculer, ou'root'
clearActions()→ thissetPrimaryAction(text, method?, confirmMessage?)→ thisconfirmMessage portait la destination et devient go- voir
addAction
setSecondaryAction(text, method?, confirmMessage?)→ this- voir
addAction
submitButton(text, method?, confirmMessage?)→ thisaddAction- voir
addAction
clearSecondaryAction()→ thissetMetadata(metadata)→ thismetadata- Objet de métadonnées
serve()→ Record<string, unknown>toJSON()→ Record<string, unknown>setState(key, value)→ voidkey- Clé d'étatvalue- Valeur d'état
getState(key)→ unknownkey- Clé d'état
setNext(url)→ thisurl- URL ou chemin de la vue suivante
setPrev(url)→ thisurl- URL ou chemin de la vue précédente
setEntry(entry)→ thispush) — voir Navigationentry-'push','replace', ou un entier <= 1
setPage(current, total?)→ thiscurrent- position, à partir de 1total- longueur de la séquence, si connue
setProcess(processId, context?)→ thisprocessId- Identifiant du processuscontext- Contexte du processus
Exemples de code JavaScript
Un avis, sans rien à décider
Ne déclarez aucune action et le client dessine un unique bouton de fermeture. Une boîte a toujours exactement une sortie.
1const message = YeriaUI
2 .createMessageView('saved', 'Données reçues')
3 .setSeverity('success')
4 .setBody('Vos réponses ont bien été enregistrées.');Un avis, avec une suite
back revient sur un écran déjà dans la pile, sans rien charger — il retrouve l'état où l'utilisateur l'avait laissé. Le second bouton ferme et le laisse où il est.
1const message = YeriaUI
2 .createMessageView('saved', 'Données reçues')
3 .setSeverity('success')
4 .setBody('Vos réponses ont bien été enregistrées.')
5 .addAction('Retour à la liste', { back: 1 })
6 .addAction('Rester ici');Une décision
Deux actions, chacune avec son issue. Aucune ne fermant, la boîte ne se referme pas sur un tap maladroit : il faut trancher.
1const message = YeriaUI
2 .createMessageView('confirm-delete', 'Supprimer définitivement ?')
3 .setSeverity('warning')
4 .setBody('Cette action est irréversible.')
5 .addAction('Supprimer', { go: '/items/4718/delete', method: 'DELETE' })
6 .addAction('Annuler');Clore un parcours
'root' ramène à la vue servie par votre URL de base, quel que soit le chemin parcouru — la seule position que vous connaissiez à coup sûr.
1const message = YeriaUI
2 .createMessageView('order-placed', 'Commande confirmée')
3 .setSeverity('success')
4 .setBody('La commande 4718 a bien été enregistrée.')
5 .addAction('Retour à l\'accueil', { back: 'root' });Exemple JSON complet
1{
2 "id": "welcome-message",
3 "type": "Message",
4 "content": {
5 "title": "Welcome!",
6 "intro": "Thank you for joining us",
7 "body": "We're excited to have you on board. Get started by completing your profile.",
8 "severity": "info",
9 "actions": [
10 { "label": "Get Started", "go": "/profile", "method": "GET" },
11 { "label": "Maybe Later" }
12 ],
13 "meta": {
14 "campaign": "onboarding-2025"
15 }
16 },
17 "process": {
18 "processId": "onboarding",
19 "processName": "User Onboarding",
20 "currentStep": 1,
21 "totalSteps": 3,
22 "stepName": "Welcome"
23 },
24 "metadata": {
25 "version": "1.0.0",
26 "createdAt": "2025-01-28T10:00:00.000Z"
27 }
28}