2020-08-13 15:18:26 +08:00
## Message
Utilisé pour avoir un retour après une action particulière. La différence avec Notification est que ce dernier est surtout utilisé pour afficher des notifications système passives.
### Usage
S'affiche en haut de la page et disparaît après trois secondes.
2020-10-16 11:14:34 +08:00
:::demo L'utilisation de Message est très similaire à Notification, la plupart des options ne sont donc pas expliquées ici. Référez-vous à la table en fin de page et celle de Notification pour en savoir plus. Element Plus affecte la méthode `$message` pour appeler Message. Il peut prendre en paramètre un string ou un VNode, qui sera affiché en tant que body principal.
2020-08-13 15:18:26 +08:00
```html
< template >
< el-button :plain = "true" @click =" open " > Afficher le message</ el-button >
< el-button :plain = "true" @click =" openVn " > VNode</ el-button >
< / template >
< script >
2021-09-04 19:29:28 +08:00
import { h } from 'vue'
2020-10-28 13:52:27 +08:00
2020-08-13 15:18:26 +08:00
export default {
methods: {
open() {
2021-09-04 19:29:28 +08:00
this.$message('Ceci est un message.')
2020-08-13 15:18:26 +08:00
},
openVn() {
this.$message({
message: h('p', null, [
h('span', null, 'Message peut être '),
2021-09-04 19:29:28 +08:00
h('i', { style: 'color: teal' }, 'VNode'),
]),
})
},
},
2020-08-13 15:18:26 +08:00
}
< / script >
2021-06-19 02:25:38 +08:00
<!--
< setup >
import { defineComponent, h } from 'vue';
import { ElMessage } from 'element-plus';
export default defineComponent({
setup() {
const open = () => {
ElMessage('Ceci est un message.');
};
const openVn = () => {
ElMessage({
message: h('p', null, [
h('span', null, 'Message peut être '),
h('i', { style: 'color: teal' }, 'VNode'),
]),
});
};
return {
open,
openVn,
};
},
});
< / setup >
-->
2020-08-13 15:18:26 +08:00
```
2021-09-04 19:29:28 +08:00
2020-08-13 15:18:26 +08:00
:::
### Types
Utilisé pour montrer un retour d'activités Success, Warning, Message ou Error.
:::demo Lorsque vous avez besoin de plus de personnalisation, Message peut aussi accepter un objet en paramètre. Par exemple, le paramètre `type` définit différents types, son défaut étant `info` . Dans ce cas le body est passé comme valeur de `message` . De plus, il existe des méthodes pour chaque type, afin que vous puissiez vous passer de la propriété `type` comme dans `open4` .
2021-09-04 19:29:28 +08:00
2020-08-13 15:18:26 +08:00
```html
< template >
< el-button :plain = "true" @click =" open2 " > success</ el-button >
< el-button :plain = "true" @click =" open3 " > warning</ el-button >
< el-button :plain = "true" @click =" open1 " > message</ el-button >
< el-button :plain = "true" @click =" open4 " > error</ el-button >
< / template >
< script >
export default {
methods: {
open1() {
2021-09-04 19:29:28 +08:00
this.$message('Ceci est un message.')
2020-08-13 15:18:26 +08:00
},
open2() {
this.$message({
message: 'Félicitations, ceci est un message de succès.',
2021-09-04 19:29:28 +08:00
type: 'success',
})
2020-08-13 15:18:26 +08:00
},
open3() {
this.$message({
message: 'Attention, ceci est un avertissement.',
2021-09-04 19:29:28 +08:00
type: 'warning',
})
2020-08-13 15:18:26 +08:00
},
open4() {
2021-09-04 19:29:28 +08:00
this.$message.error('Ouups, ceci est une erreur.')
},
},
2020-08-13 15:18:26 +08:00
}
< / script >
2021-06-19 02:25:38 +08:00
<!--
< setup >
import { defineComponent } from 'vue';
import { ElMessage } from 'element-plus';
export default defineComponent({
setup() {
const open1 = () => {
ElMessage('Ceci est un message.');
};
const open2 = () => {
ElMessage({
message: 'Félicitations, ceci est un message de succès.',
type: 'success',
});
};
const open3 = () => {
ElMessage({
message: 'Attention, ceci est un avertissement.',
type: 'warning',
});
};
const open4 = () => {
ElMessage.error('Ouups, ceci est une erreur.');
};
return {
open1,
open2,
open3,
open4,
};
},
});
< / setup >
-->
2020-08-13 15:18:26 +08:00
```
2021-09-04 19:29:28 +08:00
2020-08-13 15:18:26 +08:00
:::
### Fermeture
Un bouton de fermeture peut être ajouté.
:::demo Un Message ne peut être fermé par défaut. Utiliséez `showClose` si vous avez besoin de pouvoir le fermer. De plus, tout comme Notification, Message possède une `duration` réglable. La durée par défaut est de 3000 ms, et infinie si à `0` .
2021-09-04 19:29:28 +08:00
2020-08-13 15:18:26 +08:00
```html
< template >
< el-button :plain = "true" @click =" open1 " > message</ el-button >
< el-button :plain = "true" @click =" open2 " > success</ el-button >
< el-button :plain = "true" @click =" open3 " > warning</ el-button >
< el-button :plain = "true" @click =" open4 " > error</ el-button >
< / template >
< script >
export default {
methods: {
open1() {
this.$message({
showClose: true,
2021-09-04 19:29:28 +08:00
message: 'Ceci est un message.',
})
2020-08-13 15:18:26 +08:00
},
open2() {
this.$message({
showClose: true,
message: 'Félicitations, ceci est un message de succès.',
2021-09-04 19:29:28 +08:00
type: 'success',
})
2020-08-13 15:18:26 +08:00
},
open3() {
this.$message({
showClose: true,
message: 'Attention, ceci est un avertissement.',
2021-09-04 19:29:28 +08:00
type: 'warning',
})
2020-08-13 15:18:26 +08:00
},
open4() {
this.$message({
showClose: true,
message: 'Ouups, ceci est une erreur.',
2021-09-04 19:29:28 +08:00
type: 'error',
})
},
},
2020-08-13 15:18:26 +08:00
}
< / script >
2021-06-19 02:25:38 +08:00
<!--
< setup >
import { defineComponent } from 'vue';
import { ElMessage } from 'element-plus';
export default defineComponent({
setup() {
const open1 = () => {
ElMessage({
showClose: true,
message: 'Ceci est un message.',
});
};
const open2 = () => {
ElMessage({
showClose: true,
message: 'Félicitations, ceci est un message de succès.',
type: 'success',
});
};
const open3 = () => {
ElMessage({
showClose: true,
message: 'Attention, ceci est un avertissement.',
type: 'warning',
});
};
const open4 = () => {
ElMessage({
showClose: true,
message: 'Ouups, ceci est une erreur.',
type: 'error',
});
};
return {
open1,
open2,
open3,
open4,
};
},
});
< / setup >
-->
2020-08-13 15:18:26 +08:00
```
2021-09-04 19:29:28 +08:00
2020-08-13 15:18:26 +08:00
:::
### Texte centré
Utilisez l'attribut `center` pour centrer le texte.
:::demo
```html
< template >
< el-button :plain = "true" @click =" openCenter " > Texte centré</ el-button >
< / template >
< script >
export default {
methods: {
openCenter() {
this.$message({
message: 'Texte centré',
2021-09-04 19:29:28 +08:00
center: true,
})
},
},
2020-08-13 15:18:26 +08:00
}
< / script >
2021-06-19 02:25:38 +08:00
<!--
< setup >
import { defineComponent } from 'vue';
import { ElMessage } from 'element-plus';
export default defineComponent({
setup() {
const openCenter = () => {
ElMessage({
message: 'Texte centré',
center: true,
});
};
return {
openCenter,
};
},
});
< / setup >
-->
2020-08-13 15:18:26 +08:00
```
2021-09-04 19:29:28 +08:00
2020-08-13 15:18:26 +08:00
:::
### Utiliser du HTML
`message` supporte le HTML.
:::demo Mettez `dangerouslyUseHTMLString` à true et `message` sera traité comme du HTML.
```html
< template >
< el-button :plain = "true" @click =" openHTML " > Utiliser du HTML</ el-button >
< / template >
< script >
export default {
methods: {
openHTML() {
this.$message({
dangerouslyUseHTMLString: true,
2021-09-04 19:29:28 +08:00
message: '< strong > Ceci est du < i > HTML< / i > < / strong > ',
})
},
},
2020-08-13 15:18:26 +08:00
}
< / script >
2021-06-19 02:25:38 +08:00
<!--
< setup >
import { defineComponent } from 'vue';
import { ElMessage } from 'element-plus';
export default defineComponent({
setup() {
const openHTML = () => {
ElMessage({
dangerouslyUseHTMLString: true,
message: '< strong > Ceci est du < i > HTML< / i > < / strong > ',
});
};
return {
openHTML,
};
},
});
< / setup >
-->
2020-08-13 15:18:26 +08:00
```
2021-09-04 19:29:28 +08:00
2020-08-13 15:18:26 +08:00
:::
:::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 ](https://en.wikipedia.org/wiki/Cross-site_scripting ). 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.
:::
### Méthode globale
2020-11-23 16:28:06 +08:00
Element Plus ajoute une méthode `$message` à `app.config.globalProperties` . Vous pouvez donc appeler `Message` dans l'instance de Vue comme dans cette page.
2020-08-13 15:18:26 +08:00
### Import à la demande
```javascript
2021-09-04 19:29:28 +08:00
import { ElMessage } from 'element-plus'
2020-08-13 15:18:26 +08:00
```
2020-11-23 16:28:06 +08:00
Dans ce cas il faudra appeler `ElMessage(options)` . Les méthodes des différents types sont aussi ajoutées, e.g. `ElMessage.success(options)` . Vous pouvez appeler `ElMessage.closeAll()` pour fermer manuellement toutes les instances.
2020-08-13 15:18:26 +08:00
### Options
2021-09-04 19:29:28 +08:00
| Attribut | Description | Type | Valeurs acceptées | Défaut |
| ------------------------ | ------------------------------------------------------------------- | -------------- | -------------------------- | ------ |
| message | Texte du message. | string / VNode | — | — |
| type | Type du message. | string | success/warning/info/error | info |
| iconClass | Classe de l'icône, écrase `type` . | string | — | — |
| dangerouslyUseHTMLString | Si `message` doit être traité comme du HTML. | boolean | — | false |
| customClass | Nom de classe pour Message. | string | — | — |
| duration | La durée d'affichage, en millisecondes. Si 0, la durée est infinie. | number | — | 3000 |
| showClose | Si un bouton de fermeture doit être affiché. | boolean | — | false |
| center | Si le texte doit être centré. | boolean | — | false |
| onClose | Callback de fermeture avec en paramètre l'instance de Message. | function | — | — |
| offset | set the distance to the top of viewport | number | — | 20 |
2020-08-13 15:18:26 +08:00
### Méthodes
`Message` et `this.$message` retourne l'instance actuelle. Pour fermer manuellement cette instance, appelez sa méthode `close` .
2021-09-04 19:29:28 +08:00
| Méthode | Description |
| ------- | ---------------------------- |
| close | Ferme l'instance de Message. |