Skip to content

Modal

Le composant Modal affiche une boîte modale centrée ou positionnée sur l’écran. Il supporte différentes tailles, placements, et peut être ouvert ou fermé programmatiquement via les méthodes exposées (show() et hide()).


Props

PropTypeDefaultDescription
placementString'center'Définit l’alignement de la modale sur l’écran (center, top-left, bottom-right, etc.).
sizeString'md'Définit la largeur maximale de la modale selon les clés définies dans sizes.

Tailles disponibles

Les tailles correspondent aux clés définies dans sizes (xs, sm, md, lg, xl). Elles influencent la largeur maximale de la modale.


Placements disponibles

PlacementDescription
centerCentré verticalement et horizontalement (par défaut)
middle-leftCentré verticalement, aligné à gauche
middle-rightCentré verticalement, aligné à droite
top-centerEn haut, centré horizontalement
bottom-centerEn bas, centré horizontalement
top-leftEn haut à gauche
top-rightEn haut à droite
bottom-leftEn bas à gauche
bottom-rightEn bas à droite

Slots

  • Header : <slot name="header" /> pour le titre ou éléments en haut de la modale.
  • Default : <slot /> pour le contenu principal de la modale.
  • Footer : <slot name="footer" /> pour boutons ou actions en bas de la modale.

Utilisation

vue
<script setup>
import { ref } from 'vue'

const modal = ref(null)
const open = () => modal.value.show()
</script>

<Modal ref="modal">
  <p>Contenu de la modale</p>
</Modal>

<Button @click="open">Ouvrir</Button>
vue
<Modal ref="modal">
  <template #header>
    Titre de la modale
  </template>

  <p>Contenu principal de la modale</p>

  <template #footer>
    <Button @click="modal.value.hide()">Fermer</Button>
    <Button variant="primary">Confirmer</Button>
  </template>
</Modal>
vue
<Modal ref="modal" placement="top-right">
  <p>Contenu en haut à droite</p>
</Modal>

Méthodes exposées

MéthodeDescription
show()Ouvre la modale.
hide()Ferme la modale.

Ces méthodes sont accessibles via ref grâce à :

vue
defineExpose({ show, hide })

Fonctionnement interne

  • isOpen est un ref interne qui contrôle l’affichage de la modale et du backdrop.
  • show() et hide() modifient isOpen.