element/examples/docs/fr-FR/dialog.md
Simon Malesys 958efaefc3 I18n: French translation (#12153)
* Docs: add french translation (fr-FR) in "components.json".

* Docs: add french translation (fr-FR) in "page.json"

* Docs: add french translation (fr-FR) in "route.json"

* Docs: add french translation (fr-FR) in "title.json"

* Docs: remove a comma in "title.json"

* Docs: translate alert.md into french (fr-FR)

* Docs: remove a comma in "component.json"

* Docs: translate badge.md into french (fr-FR)

* * a77b5518 Docs: translate breadcrumb.md into french (fr-FR)

* * a77b5518 Docs: translate breadcrumb.md into french (fr-FR)

* Docs: translate button.md into french (fr-FR)

* Docs: translate card.md into french (fr-FR)

* Docs: translate carousel.md into french (fr-FR)

* Docs: translate cascader.md into french (fr-FR)

* Docs: translate checkbox.md into french (fr-FR)

* Docs: translate collapse.md into french (fr-FR)

* Docs: translate color-picker.md into french (fr-FR)

* Docs: translate color.md into french (fr-FR)

* Docs: translate container.md into french (fr-FR)

* Docs: translate custom-theme.md into french (fr-FR)

* Docs: translate date-picker.md into french (fr-FR)

* Docs: translate datetime-picker.md into french (fr-FR)

* Docs: translate dialog.md into french (fr-FR)

* Docs: translate form.md into french (fr-FR)

* Docs: translate i18n.md into french (fr-FR)

* Docs: translate icon.md into french (fr-FR)

* Docs: translate input-number.md into french (fr-FR)

* Docs: translate input.md into french (fr-FR)

* Docs: translate installation.md into french (fr-FR)

* Docs: translate dropdown.md into french (fr-FR)

* Docs: translate layout.md into french (fr-FR)

* Docs: translate loading.md into french (fr-FR)

* Docs: translate menu.md into french (fr-FR)

* Docs: translate message-box.md into french (fr-FR)

* Docs: translate message.md into french (fr-FR)

* Docs: translate notification.md into french (fr-FR)

* Docs: translate pagination.md into french (fr-FR)

* Docs: translate popover.md into french (fr-FR)

* Docs: translate progress.md into french (fr-FR)

* Docs: translate quickstart.md into french (fr-FR)

* Docs: translate radio.md into french (fr-FR)

* Docs: translate rate.md into french (fr-FR)

* Docs: translate select.md into french (fr-FR)

* Docs: translate slider.md into french (fr-FR)

* Docs: translate steps.md into french (fr-FR)

* Docs: translate switch.md into french (fr-FR)

* Docs: translate table.md into french (fr-FR)

* Docs: translate tabs.md into french (fr-FR)

* Docs: translate tag.md into french (fr-FR)

* Docs: translate time-picker.md into french (fr-FR)

* Docs: translate tooltip.md into french (fr-FR)

* Docs: translate transfer.md into french (fr-FR)

* Docs: translate transition.md into french (fr-FR)

* Docs: translate tree.md into french (fr-FR)

* Docs: translate typography.md into french (fr-FR)

* Docs: translate upload.md into french (fr-FR)

* Docs: update the configuration for the french translation

* Docs: update the french documentation from 2.4.4 to 2.4.11

* Changelog: translate to line 408 into french (fr-FR)

* Changelog: finish the translation into french (fr-FR)

* Changelog: update from 2.4.11 to 2.5.4

* Doc: update french translation from 2.4.11 to 2.5.4

* Changelog: fix a display bug with the subtitles

* Examples: add french language (fr-FR) in search.vue component

* Doc: change some french titles

* Doc: add the french locale to app.vue
2019-02-12 09:08:19 +08:00

10 KiB
Raw Blame History

Dialog

Informe les utilisateurs tout en préservant l'état de la page.

Usage

Le Dialog ouvre un modal personnalisable.

:::demo Configurez l'attribut visible avec un Boolean, un modal apparaîtra quand la valeur sera à true. Le Dialog possède deux parties: body et footer, ce-dernier nécessitant un slot appelé footer. L'attribut optionnel title (vide par défaut) définit le titre. Cet exemple montre également comment before-close peut être utilisé.

<el-button type="text" @click="dialogVisible = true">Cliquez pour ouvrir le modal</el-button>

<el-dialog
  title="Tips"
  :visible.sync="dialogVisible"
  width="30%"
  :before-close="handleClose">
  <span>Ceci est un message</span>
  <span slot="footer" class="dialog-footer">
    <el-button @click="dialogVisible = false">Annuler</el-button>
    <el-button type="primary" @click="dialogVisible = false">Confirmer</el-button>
  </span>
</el-dialog>

<script>
  export default {
    data() {
      return {
        dialogVisible: false
      };
    },
    methods: {
      handleClose(done) {
        this.$confirm('Voulez-vous vraiment quitter ?')
          .then(_ => {
            done();
          })
          .catch(_ => {});
      }
    }
  };
</script>

:::

:::tip before-close ne fonctionne que quand l'utilisateur clique sur l'icône de fermeture en dehors du modal. Si il y a des boutons dans le footer, vous pouvez configurer before-close grâce à leur évènement click. :::

Personalisation

Le contenu du modal peut être n'importe quoi, tableau ou formulaire compris.

:::demo

<!-- Table -->
<el-button type="text" @click="dialogTableVisible = true">Ouvir un modal avec tableau</el-button>

<el-dialog title="Adresse d'expédition" :visible.sync="dialogTableVisible">
  <el-table :data="gridData">
    <el-table-column property="date" label="Date" width="150"></el-table-column>
    <el-table-column property="name" label="Nom" width="200"></el-table-column>
    <el-table-column property="address" label="Adresse"></el-table-column>
  </el-table>
</el-dialog>

<!-- Form -->
<el-button type="text" @click="dialogFormVisible = true">Ouvrir un modal avec formulaire</el-button>

<el-dialog title="Adresse d'expédition" :visible.sync="dialogFormVisible">
  <el-form :model="form">
    <el-form-item label="Nom de promotion" :label-width="formLabelWidth">
      <el-input v-model="form.name" autocomplete="off"></el-input>
    </el-form-item>
    <el-form-item label="Zones" :label-width="formLabelWidth">
      <el-select v-model="form.region" placeholder="Sélectionnez une zone">
        <el-option label="Zone No.1" value="shanghai"></el-option>
        <el-option label="Zone No.2" value="beijing"></el-option>
      </el-select>
    </el-form-item>
  </el-form>
  <span slot="footer" class="dialog-footer">
    <el-button @click="dialogFormVisible = false">Annuler</el-button>
    <el-button type="primary" @click="dialogFormVisible = false">Confirmer</el-button>
  </span>
</el-dialog>

<script>
  export default {
    data() {
      return {
        gridData: [{
          date: '2016-05-02',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }, {
          date: '2016-05-04',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }, {
          date: '2016-05-01',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }, {
          date: '2016-05-03',
          name: 'John Smith',
          address: 'No.1518,  Jinshajiang Road, Putuo District'
        }],
        dialogTableVisible: false,
        dialogFormVisible: false,
        form: {
          name: '',
          region: '',
          date1: '',
          date2: '',
          delivery: false,
          type: [],
          resource: '',
          desc: ''
        },
        formLabelWidth: '120px'
      };
    }
  };
</script>

:::

Dialog imbriqué

Si un Dialog est imbriqué dans un autre Dialog, append-to-body est requis.

:::demo Normalement l'utilisation de Dialog imbriqué est déconseillée. Si vous avez besoin de plusieurs Dialogs sur la page, vous pouvez les aplatir afin qu'ils soit au même niveau. SI vous devez absolument utiliser un Dialog imbriqué, configurez l'attribut append-to-body du Dialog imbriqué à true et il sera ajouté au body au lieu de son noeud parent, afin d'avoir un affichage correct.

<template>
  <el-button type="text" @click="outerVisible = true">Ouvrir le modal extérieur</el-button>

  <el-dialog title="Modal extérieur" :visible.sync="outerVisible">
    <el-dialog
        width="30%"
        title="Modal intérieur"
        :visible.sync="innerVisible"
        append-to-body>
    </el-dialog>
    <div slot="footer" class="dialog-footer">
      <el-button @click="outerVisible = false">Annuler</el-button>
      <el-button type="primary" @click="innerVisible = true">Ouvrir le modal intérieur</el-button>
    </div>
  </el-dialog>
</template>

<script>
  export default {
    data() {
      return {
        outerVisible: false,
        innerVisible: false
      };
    }
  }
</script>

:::

Centrer le contenu

Le contenu du modal peut être centré.

:::demo Régler center à true centrera horizontalement le header et le footer. center n'affecte que le header et le footer. Le contenu du body pouvant être n'importe quoi, si vous désirez le centrer vous devrez ajouter des règles CSS.

<el-button type="text" @click="centerDialogVisible = true">Cliquez pour ouvrir le modal</el-button>

<el-dialog
  title="Attention"
  :visible.sync="centerDialogVisible"
  width="30%"
  center>
  <span>Le contenu du modal n'est pas centré par défaut.</span>
  <span slot="footer" class="dialog-footer">
    <el-button @click="centerDialogVisible = false">Annuler</el-button>
    <el-button type="primary" @click="centerDialogVisible = false">Confirmer</el-button>
  </span>
</el-dialog>

<script>
  export default {
    data() {
      return {
        centerDialogVisible: false
      };
    }
  };
</script>

:::

:::tip Le contenu de Dialog bénéficie du lazy loading, ce qui signifie que le slot par défaut n'est pas généré par le DOM avant la première ouverture. Si vous avez besoin de manipuler le DOM ou d'accéder à un composant via ref, vous pouvez le faire avec la callback de l'évènement open. :::

:::tip Si la variable liée à visible est gérée dans Vuex, le modificateur .sync ne peut pas fonctionner. Dans ce cas retirez-le, écouter les évènements open et close, et commité les mutations Vuex pour mettre à jour la valeur de cette variable. :::

Attributs

Attribut Description Type Valeurs acceptées Défaut
visible Visibilité du Dialog, supporte le modificateur .sync. boolean false
title Titre du Dialog. Peut aussi être passé via un slot (voir la table suivante). string
width Largeur du Dialog. string 50%
fullscreen Si le Dialog doit être en plein écran. boolean false
top Valeur du margin-top du CSS du Dialog. string 15vh
modal Si un masque est affiché. boolean true
modal-append-to-body Si il faut ajouter le modal au body. Si false, le modal sera ajouter à l'élément parent du Dialog. boolean true
append-to-body Si il faut ajouter le Dialog au body. Un Dialog imbriqué doit avoir cet attribut à true. boolean false
lock-scroll Si le défilement du body est désactivé. boolean true
custom-class Nom de classe pour le Dialog string
close-on-click-modal Si le Dialog peut être fermé en cliquant sur le masque. boolean true
close-on-press-escape Si le Dialog peut être fermé en appuyant sur Echap. boolean true
show-close Si le bouton de fermeture doit apparaître. boolean true
before-close Callback avant la fermeture du Dialog. function(done)done est utilisé pour fermer le Dialog.
center Si le header et le footer doivent être centrés. boolean false

Slot

Nom Description
Contenu du Dialog.
title Contenu du titre.
footer Contenu du footer.

Évènements

Nom Description Paramètres
open Se déclenche quand le Dialog s'ouvre.
opened Se déclenche quand l'animation d'ouverture est terminée.
close Se déclenche quand le Dialog se ferme.
closed Se déclenche quand l'animation de fermeture du Dialog est terminée.