14 KiB
MessageBox
Un ensemble de fenĂȘtres modales pour afficher des messages systĂšme, tels que des alertes, des demandes de confirmation ou des informations importantes.
:::tip
MessageBox est avant tout conçue pour Ă©muler des alert, confirm ou prompt, son contenu devrait donc ĂȘtre simple. Pour afficher un contenu plus riche, utilisez plutĂŽt Dialog.
:::
Alert
Alert interrompt l'action de l'utilisateur jusqu'Ă ce qu'il confirme.
:::demo Ouvrez un alert en appelant la mĂ©thode $alert. Elle simule une alert systĂšme et ne peut ĂȘtre fermĂ©e en pressant ESC ou en cliquant hors de la boite. Dans cet exemple, deux paramĂštres message et title sont reçus. Notez que lorsque la boite est fermĂ©e, elle retourne un objet Promise. Si vous n'ĂȘtes pas certains que tout vos navigateurs cibles supportent Promise, utilisez un polyfill ou utilisez des callbacks comme dans l'exemple qui suit.
<template>
<el-button type="text" @click="open">Cliquez pour ouvrir la MessageBox</el-button>
</template>
<script>
export default {
methods: {
open() {
this.$alert('Ceci est un message', 'Titre', {
confirmButtonText: 'OK',
callback: action => {
this.$message({
type: 'info',
message: `action: ${ action }`
});
}
});
}
}
}
</script>
:::
Confirm
Confirm est utilisé pour demander une confirmation à l'utilisateur.
:::demo Appelez la mĂ©thode $confirm pour ouvrir une confirm, qui simule le confirm systĂšme. Vous pouvez aussi personnaliser MessageBox en passant un objet Ă l'attribut options. L'attribut type indique le type de message (voir en bas de la page pour la liste des valeurs possibles). Notez que l'attribut title doit ĂȘtre de type string. S'il se trouve ĂȘtre un object, il sera considĂ©rĂ© comme Ă©tant l'attribut options. Cet exemple utilise une Promise pour gĂ©rer la suite du processus.
<template>
<el-button type="text" @click="open">Cliquez pour ouvrir la MessageBox</el-button>
</template>
<script>
export default {
methods: {
open() {
this.$confirm('Ceci effacera le fichier. Continuer?', 'Warning', {
confirmButtonText: 'OK',
cancelButtonText: 'Annuler',
type: 'warning'
}).then(() => {
this.$message({
type: 'success',
message: 'Fichier supprimé'
});
}).catch(() => {
this.$message({
type: 'info',
message: 'Suppression annulée'
});
});
}
}
}
</script>
:::
Prompt
Prompt est utilisé lorsqu'un utilisateur.
:::demo Appellez la méthode $prompt pour ouvrir un prompt simulant le prompt systÚme. Vous pouvez utiliser le paramÚtre inputPattern pour spécifier un pattern à l'aide d'une RegExp. Utilisez inputValidator pour indiquer la méthode de validation, qui devra retourner un Boolean ou un String. Retourner false ou un String veut dire que la validation a échouée, et la string ainsi fournie sera le inputErrorMessage. De plus, vous pouvez personnaliser le placeholder du champs avec le paramÚtre inputPlaceholder.
<template>
<el-button type="text" @click="open">Cliquez pour ouvrir la MessageBox</el-button>
</template>
<script>
export default {
methods: {
open() {
this.$prompt('Entrez votre e-mail', 'Astuce', {
confirmButtonText: 'OK',
cancelButtonText: 'Annuler',
inputPattern: /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,
inputErrorMessage: 'E-mail invalide'
}).then(({ value }) => {
this.$message({
type: 'success',
message: 'Votre e-mail est: ' + value
});
}).catch(() => {
this.$message({
type: 'info',
message: 'Annulé'
});
});
}
}
}
</script>
:::
Personnalisation
Il est possible d'afficher du contenu un peu plus varié et personnalisé.
:::demo les trois prĂ©cĂ©dentes mĂ©thodes sont des repackagings de la mĂ©thode $msgbox. cet exemple appelle directement $msgbox en utilisant l'attribut showCancelButton pour indiquer si un bouton annuler doit ĂȘtre affichĂ©. De plus, vous pouvez utiliser cancelButtonClass pour ajouter du style et cancelButtonText pour personnaliser le bouton texte (voir la liste complĂšte en fin de page). La mĂ©thode beforeCloseest appelĂ©e quand la MessageBox va ĂȘtre fermĂ©e et prĂ©vient sa fermeture. Elle prend trois paramĂštres: action, instance et done. Elle vous permet ainsi d'effectuer des actions avant la fermeture, e.g. activer loading pour le bouton de confirmation. Appelez done pour fermer la MessageBox, sinon l'instance ne sera jamais fermĂ©e.
<template>
<el-button type="text" @click="open">Cliquez pour ouvrir la MessageBox</el-button>
</template>
<script>
export default {
methods: {
open() {
const h = this.$createElement;
this.$msgbox({
title: 'Message',
message: h('p', null, [
h('span', null, 'Le message peut ĂȘtre '),
h('i', { style: 'color: teal' }, 'VNode')
]),
showCancelButton: true,
confirmButtonText: 'OK',
cancelButtonText: 'Annuler',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = 'Chargement...';
setTimeout(() => {
done();
setTimeout(() => {
instance.confirmButtonLoading = false;
}, 300);
}, 3000);
} else {
done();
}
}
}).then(action => {
this.$message({
type: 'info',
message: 'Action: ' + action
});
});
},
}
}
</script>
:::
:::tip
Le contenu de MessageBox peut ĂȘtre VNode, Vous permettant de passer des composants personnalisĂ©s. Lorsque vous ouvrer MessageBox, Vue compare le nouveau VNode avec l'ancien VNode, puis dĂ©termine comment rafraĂźchir efficacement l'UI, le composant peut donc ne pas ĂȘtre totalement re-rendu (#8931). Dans ce cas, Vous pouvez ajouter une clĂ© unique Ă VNode Ă chaque fois que MessageBox s'ouvre: exemple.
:::
Utiliser du HTML
message supporte le HTML.
:::demo Mettez dangerouslyUseHTMLString à true et message sera traité comme du HTML.
<template>
<el-button type="text" @click="open">Cliquez pour ouvrir la MessageBox</el-button>
</template>
<script>
export default {
methods: {
open() {
this.$alert('<strong>Ceci est du <i>HTML</i></strong>', 'HTML', {
dangerouslyUseHTMLString: true
});
}
}
}
</script>
:::
:::warning
Bien que la propriĂ©tĂ© message supporte le HTML, gĂ©nĂ©rer du contenu HTML dynamiquement peut ĂȘtre trĂšs dangereux, car cela permet des attaques XSS. Donc lorsque dangerouslyUseHTMLString est prĂ©sent, soyez certain de sĂ©curiser le contenu de message, et n'assignez jamais Ă message du contenu fournit par l'utilisateur.
:::
Distinguer 'annuler' de 'fermer'
Dans certains cas, les boutons fermer et annuler peuvent avoir des sens différents.
:::demo Par dĂ©faut, le paramĂštre de la callback et de la promesse rejetĂ©e est 'cancel' lorsque l'utilisateur annule (clique sur le bouton annuler) ou lorsqu'il ferme la fenĂȘtre (clique sur le bouton fermer, hors de la fenĂȘtre, ou presse ESC). Si distinguishCancelAndClose est Ă true, le dernier cas prĂ©cĂ©dent renvoie 'close' au lieu de 'cancel' afin de pouvoir gĂ©rer les deux actions diffĂ©remment.
<template>
<el-button type="text" @click="open">Cliquez pour ouvrir la MessageBox</el-button>
</template>
<script>
export default {
methods: {
open() {
this.$confirm('Vous avez du travail non enregistré, enregistrer et quitter?', 'Confirm', {
distinguishCancelAndClose: true,
confirmButtonText: 'Enregistrer',
cancelButtonText: 'Ne pas enregistrer'
})
.then(() => {
this.$message({
type: 'info',
message: 'Enregistré. Passage a une nouvelle route.'
});
})
.catch(action => {
this.$message({
type: 'info',
message: action === 'cancel'
? 'Changements annulés. Passage sur une nouvelle route.'
: 'Reste sur la mĂȘme route'
})
});
}
}
}
</script>
:::
Contenu centré
le contenu de MessageBox peut ĂȘtre centrĂ©.
:::demo Mettre center Ă true centrera le contenu
<template>
<el-button type="text" @click="open">Cliquez pour ouvrir la MessageBox</el-button>
</template>
<script>
export default {
methods: {
open() {
this.$confirm('Ceci effacera le fichier, continuer?' , 'Warning', {
confirmButtonText: 'OK',
cancelButtonText: 'Annuler',
type: 'warning',
center: true
}).then(() => {
this.$message({
type: 'success',
message: 'Fichier supprimé'
});
}).catch(() => {
this.$message({
type: 'info',
message: 'Annulé'
});
});
}
}
}
</script>
:::
Méthode globale
Si Element Plus est importé entiÚrement, il ajoutera les méthodes suivantes à Vue.prototype: $msgbox, $alert, $confirm et $prompt. Dans ce cas vous pouvez appeler MessageBox comme nous l'avons fait dans cette page. Les paramÚtres sont:
$msgbox(options)$alert(message, title, options)ou$alert(message, options)$confirm(message, title, options)ou$confirm(message, options)$prompt(message, title, options)ou$prompt(message, options)
Import Ă la demande
Si vous préférer importer MessageBox à la demande:
import { MessageBox } from 'element-plus';
Les mĂ©thodes correspondantes sont: MessageBox, MessageBox.alert, MessageBox.confirm et MessageBox.prompt. Les paramĂštres sont les mĂȘmes que prĂ©cĂ©demment.
Options
| Attribut | Description | Type | Valeurs acceptées | Défaut |
|---|---|---|---|---|
| title | Titre de la MessageBox. | string | â | â |
| message | Contenu de la MessageBox. | string | â | â |
| dangerouslyUseHTMLString | Si message doit ĂȘtre traitĂ© comme du HTML. |
boolean | â | false |
| type | Type du message, utilisĂ© pour le choix d'icĂŽne. | string | success / info / warning / error | â |
| iconClass | Classe d'icÎne personnalisée, écrase type. |
string | â | â |
| customClass | Nom de classe pour MessageBox. | string | â | â |
| callback | La callback de fermeture de MessageBox si vous n'utilisez pas les promesses. | function(action, instance), ou action peut ĂȘtre 'confirm', 'cancel' ou 'close', et instance est l'instance MessageBox. |
â | â |
| showClose | Si l'icĂŽne de fermeture doit ĂȘtre affichĂ©e. | boolean | â | true |
| beforeClose | La callback de prĂ©-fermeture qui empĂšchera MessageBox de se fermer. | function(action, instance, done), ou action peut-ĂȘtre 'confirm', 'cancel' ou 'close'; instance est l'instance de MessageBox; done est la mĂ©thode pour fermer l'instance. |
â | â |
| distinguishCancelAndClose | S'il doit y avoir une diffĂ©rence entre l'annulation et la fermeture de la MessageBox. | boolean | â | false |
| lockScroll | Si le dĂ©filement de la page doit ĂȘtre bloquĂ© lorsque la MessageBox est active. | boolean | â | true |
| showCancelButton | Si le bouton annuler doit ĂȘtre affichĂ©. | boolean | â | false (true dans le cas de confirm ou prompt). |
| showConfirmButton | Si le bouton confirmer doit ĂȘtre affichĂ©. | boolean | â | true |
| cancelButtonText | Le texte du bouton annuler. | string | â | Cancel |
| confirmButtonText | Le texte du bouton confirmer. | string | â | OK |
| cancelButtonClass | Classe du bouton annuler. | string | â | â |
| confirmButtonClass | Classe du bouton confirmer. | string | â | â |
| closeOnClickModal | Si MessageBox peut ĂȘtre fermĂ©e en cliquant en dehors. | boolean | â | true (false dans le cas de alert). |
| closeOnPressEscape | Si MessageBox peut ĂȘtre fermĂ©e en pressant ESC. | boolean | â | true (false dans le cas de alert) |
| closeOnHashChange | Si MessageBox doit ĂȘtre fermĂ©e quand le hash change. | boolean | â | true |
| showInput | Si un champs d'input doit ĂȘtre affichĂ©. | boolean | â | false (true dans le cas de prompt). |
| inputPlaceholder | Placeholder du champs d'input. | string | â | â |
| inputType | Type du champs d'input. | string | â | text |
| inputValue | Valeur initiale du champs d'input. | string | â | â |
| inputPattern | RegExp du champs d'input. | regexp | â | â |
| inputValidator | Fonction de validation du champs d'input. Doit retourner un boolean ou un string. Si c'est un string, il sera assignĂ© Ă inputErrorMessage. | function | â | â |
| inputErrorMessage | Message d'erreur lorsque la validation Ă©choue. | string | â | Illegal input |
| center | Si le contenu doit ĂȘtre centrĂ©. | boolean | â | false |
| roundButton | Si le bouton doit ĂȘtre rond. | boolean | â | false |