A partir de la version 4.9.9
À partir de la version 4.9.9, Ametys fournit un helper JavaScript :
AmetysFront.Dialog, permettant d’ouvrir facilement des boîtes de dialogue modales.
Pré-requis CSS
Ce helper nécessite l’ajout d’un minimum de styles pour garantir une boîte de dialogue lisible.
Ajoutez au moins les règles suivantes dans une feuille CSS/SCSS chargée sur toutes les pages concernées :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement..ametys-dialog {
&-document {
color: #000; // couleur du texte
font-family: "Trebuchet MS", arial, sans-serif; // police
background: #fff; // fond pour assurer la lisibilité
padding: 20px;
}
}.ametys-dialog {
&-document {
color: #000; // couleur du texte
font-family: "Trebuchet MS", arial, sans-serif; // police
background: #fff; // fond pour assurer la lisibilité
padding: 20px;
}
}.ametys-dialog {
&-document {
color: #000; // couleur du texte
font-family: "Trebuchet MS", arial, sans-serif; // police
background: #fff; // fond pour assurer la lisibilité
padding: 20px;
}
}Ces styles assurent un rendu de base correct.
Personnalisation (optionnel)
Vous pouvez bien sur aller plus loin dans la personnalisation, par exemple:
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement..ametys-dialog {
z-index: 1200; /* pour passer au-dessus d'éléments comme un menu sticky */
&-document {
color: inherit;
font-family: inherit;
padding: 20px;
max-width: 70vh; /* largeur maximale = 70% de l'écran */
background: #fff;
border-radius: 10px; /* ajout un border-radius */
@media (max-width: 600px) {
max-width: 90wh;
}
}
&-overlay {
background-color: rgba(0, 0, 0, 0.4); /* personnalisation de l'overlay */
}
}.ametys-dialog {
z-index: 1200; /* pour passer au-dessus d'éléments comme un menu sticky */
&-document {
color: inherit;
font-family: inherit;
padding: 20px;
max-width: 70vh; /* largeur maximale = 70% de l'écran */
background: #fff;
border-radius: 10px; /* ajout un border-radius */
@media (max-width: 600px) {
max-width: 90wh;
}
}
&-overlay {
background-color: rgba(0, 0, 0, 0.4); /* personnalisation de l'overlay */
}
}.ametys-dialog {
z-index: 1200; /* pour passer au-dessus d'éléments comme un menu sticky */
&-document {
color: inherit;
font-family: inherit;
padding: 20px;
max-width: 70vh; /* largeur maximale = 70% de l'écran */
background: #fff;
border-radius: 10px; /* ajout un border-radius */
@media (max-width: 600px) {
max-width: 90wh;
}
}
&-overlay {
background-color: rgba(0, 0, 0, 0.4); /* personnalisation de l'overlay */
}
}Structure HTML générée
Toute boîte de dialogue créée via ce helper respecte la structure suivante :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.<div id="my-dialog" class="my-dialog ametys-dialog">
<div class="ametys-dialog-overlay" data-ametys-dialog-close="true"></div>
<div class="ametys-dialog-document" role="document">
<!-- Contenu de la dialogue -->
</div>
</div>
<div id="my-dialog" class="my-dialog ametys-dialog">
<div class="ametys-dialog-overlay" data-ametys-dialog-close="true"></div>
<div class="ametys-dialog-document" role="document">
<!-- Contenu de la dialogue -->
</div>
</div>
<div id="my-dialog" class="my-dialog ametys-dialog">
<div class="ametys-dialog-overlay" data-ametys-dialog-close="true"></div>
<div class="ametys-dialog-document" role="document">
<!-- Contenu de la dialogue -->
</div>
</div>
Styles fournis par le noyau
Ametys applique déjà des styles de base suivant:
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.@layer ametys-dialog {
.ametys-dialog {
position: fixed;
inset: 0;
z-index: 1001;
display: flex;
align-items: center;
justify-content: center;
&:not(.ametys-dialog-open) {
display: none;
}
&-document {
position: relative;
overflow-y: auto;
max-width: 95svw;
max-height: 95svh;
}
&-overlay {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.5);
}
}
}@layer ametys-dialog {
.ametys-dialog {
position: fixed;
inset: 0;
z-index: 1001;
display: flex;
align-items: center;
justify-content: center;
&:not(.ametys-dialog-open) {
display: none;
}
&-document {
position: relative;
overflow-y: auto;
max-width: 95svw;
max-height: 95svh;
}
&-overlay {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.5);
}
}
}@layer ametys-dialog {
.ametys-dialog {
position: fixed;
inset: 0;
z-index: 1001;
display: flex;
align-items: center;
justify-content: center;
&:not(.ametys-dialog-open) {
display: none;
}
&-document {
position: relative;
overflow-y: auto;
max-width: 95svw;
max-height: 95svh;
}
&-overlay {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.5);
}
}
}