Files
element-plus/website/docs/fr-FR/message-box.md
2020-10-16 11:26:39 +08:00

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