Site officiel en chinois : https://www.bootboxjs.cn/
Documentation officielle réorganisée pour référence personnelle
Inclusion dans HTML
Pour commencer, inclure les ressources nécessaires. Puisque Bootbox est une encapsulation de Bootstrap, l'ordre d'inclusion est important :
- jQuery (version minimale requise : 1.9.1)
- Popper.js (optionnel)
- Bootstrap (version actuelle 5, prend en charge Bootstrap 3 et 4)
- Bootbox
- Bootbox Locales (optionnel - à omettre si seul l'anglais est nécessaire)
Utilisation
Boîte de dialogue Alert
Une boîte de dialogue d'alerte simple avec un seul bouton. Appuyez sur ESC ou cliquez sur le bouton de fermeture pour fermer la boîte de dialogue.
Afficher un message qui peut contenir du texte HTML :
bootbox.alert("Votre message ici...");
bootbox.alert("Votre message <b>ici...</b>");
Ajouter un rappel (callback) :
bootbox.alert("Votre message ici...", function(){
/* votre code de rappel */
});
Personnalisation détaillée via les options :
bootbox.alert({
size: "small",
title: "Votre Titre",
message: "Votre message ici...",
callback: function(){ /* fonction de rappel */ }
});
Boîte de dialogue Confirm
Une boîte de dialogue de confirmasion avec des boutons Annuler et Confirmer. Appuyez sur ESC ou cliquez sur Fermer() pour fermer la boîte de dialogue et appeler le rappel, comme si l'utilisateur avait cliqué sur "Annuler".
La boîte de dialogue de confirmation nécessite une fonction de rappel
Les modaux Bootstarp sont non-bloquants, contrairement aux boîtes de dialogue du BOM
Informations avec choix ok : le rappel reçoit true, fermeture : false
boiteConfirmation("Êtes-vous sûr?", function(resultat){
/* votre code de rappel */
});
Autres options :
boiteConfirmation({
size: "small",
message: "Êtes-vous sûr?",
callback: function(resultat){ /* resultat est un booléen; true = OK, false = Annuler */ }
});
Boîte de dialogue Prompt
Une boîte de dialogue demandant une saisie utilisateur. Appuyez sur ESC ou cliquez sur Fermer() pour fermer la boîte de dialogue et appeler le rappel, comme si l'utilisateur avait cliqué sur "Annuler".
Requiert Bootstrap 3.1.0 ou une version supérieure
La boîte de dialogue prompt nécessite une fonction de rappel
Informations avec champ de saisie : si annulé ou fermé, le rappel reçoit null, sinon le texte saisi
boiteInvite("Quel est votre nom?", function(resultat){
/* votre code de rappel */
});
valeur : définit la valeur initiale du prompt. Pour présélectionner plusieurs valeurs (avec cases à cocher ou sélection multiple), utilisez un tableau comme option valeur. Par défaut null
typeSaisie : type de saisie. Options possibles : text, password, textarea, email, select, checkbox, radio, date, time, number, range
optionsSaisie : si select, checkbox, ou radio est spécifié comme type de saisie, un tableau de valeurs valide au format suivant doit être fourni
{
texte: '',
valeur: '',
groupe: ''
}
Boîte de dialogue personnalisée Custom
Une méthode de boîte de dialogue entièrement personnalisable, prenant un seul paramètre : l'objet options.
Appuyer sur la touche ESC ne ferme pas automatiquement la boîte de dialogue personnalisée. Vous devez implémenter ce comportement vous-même avec l'option onEscape.
Le minimum requis pour créer une boîte de dialogue personnalisée est l'option message, qui crée une boîte de dialogue non fermable (comme une superposition "chargement").
boiteDialogue({
message: '<div class="text-center"><i class="fa fa-spin fa-spinner"></i> Chargement...</div>',
boutonFermer: false
});
Exemple d'utilisation complexe :
boiteDialogue({
titre: 'Exemple de Dialogue Personnalisé',
message: '<p>Cet dialogue démontre de nombreuses options disponibles lors de l\'utilisation de la bibliothèque Bootbox</p>',
taille: 'large',
onEscape: true,
arrierePlan: true,
boutons: {
premier: {
etiquette: 'Premier',
classe: 'btn-primary',
rappel: function(){
}
},
deuxieme: {
etiquette: 'Deuxième',
classe: 'btn-info',
rappel: function(){
}
},
troisieme: {
etiquette: 'Troisième',
classe: 'btn-success',
rappel: function(){
}
},
quatrieme: {
etiquette: 'Quatrième',
classe: 'btn-danger',
rappel: function(){
}
}
}
});
Options de la boîte de dialogue
message
Type : String | Element
Détermine et personnalise le contenu obligatoire de la boîte de dialogue
Texte (ou balisage) affiché dans la boîte de dialogue.
titre
Type : String | Element
Ajoute un titre à la boîte de dialogue et place ce texte (ou balisage) dans un élément `
` ### rappel
Type : Function
Nécessaire pour les boîtes de dialogue de confirmation et de prompt
Le rappel d'alerte ne doit pas fournir d'arguments. Si c'est le cas, ils seront ignorés :
boiteAlerte({
message: "Je suis une alerte!",
rappel: function() {
}
});
Les rappels de confirmation et de prompt doivent fournir un arguement pour le résultat. Pour une confirmation, ce sera une valeur true ou false, tandis que le résultat du prompt conservera la valeur saisie par l'utilisateur :
boiteConfirmation("Êtes-vous sûr?", function(resultat) {
// resultat sera true ou false
});
boiteInvite("Quel est votre nom?", function(resultat) {
if (resultat === null) {
// Prompt annulé
} else {
// resultat a une valeur
}
});
Pour tout rappel, si vous ne souhaitez pas que la boîte de dialogue se ferme lorsque le rappel est terminé, ajoutez return false; comme dernière ligne du rappel. Ensuite, vous devez utiliser modal() ou la fonction boiteMasquerTout() pour fermer manuellement la boîte de dialogue :
var dialogue = boiteInvite("Quel est votre nom?", function(resultat) {
if (resultat === null) {
// Prompt annulé
} else {
// resultat a une valeur
dialogue.modal('masquer');
}
return false;
});
onEscape
Type : Boolean | Function
Permet à l'utilisateur de fermer la boîte de dialogue en appuyant sur ESC, ce qui appellera cette fonction.
undefined,null: pas de fonction de rappel fournietrue: appuyer sur ESC ferme la boîte de dialoguefalse: appuyer sur ESC ne ferme pas la boîte de dialogue
Valeur par défaut : true pour les alertes, confirmations et prompts ; null pour les boîtes de dialogue personnalisées.
afficher
Type : Boolean
La boîte de dialogue doit-elle être affichée immédiatement. Par défaut : true
arrierePlan
Type : Boolean
La boîte de dialogue doit-elle avoir un arrière-plan. Détermine également si un clic sur l'arrière-plan ferme le modal.
undefined,null: affiche l'arrière-plan, mais le clic est sans effettrue: affiche l'arrière-plan, clic ferme la boîte de dialoguefalse: n'affiche pas l'arrière-plan
Par défaut : null
boutonFermer
Type : Boolean
La boîte de dialogue doit-elle avoir un bouton de fermeture
Par défaut : true
animer
Type : Boolean
Animer la boîte de dialogue (nécessite un navigateur prenant en charge les animations CSS).
Par défaut : true
classe
Type : String
Classes supplémentaires à appliquer au wrapper de la boîte de dialogue.
Par défaut : null
taille
Type : String
Ajoute les classes de taille de modal Bootstrap appropriées au wrapper de la boîte de dialogue.
Valeurs valides :
- Petit :
small,sm - Grand :
large,lg - Très grand :
extra-large,xl
Requiert Bootstrap 3.1.0 ou une version supérieure. Très grand nécessite Bootstrap 4.2.0 ou une version supérieure.
Par défaut : null
locale
Type : String
Définit la locale à utiliser pour chaque boîte de dialogue - cette option ne remplace pas la locale par défaut. Les autres boîtes de dialogue continueront à utiliser la locale par défaut.
La configuration de la locale est utilisée pour traduire les trois étiquettes de bouton standard : OK, CONFIRM, ANNULER
boutons
Type : Object
Les boutons sont définis comme un objet JavaScript. La définition minimale requise est :
"Votre texte de bouton": function() { }
Définition complète :
nomBouton : {
etiquette: 'Votre texte de bouton',
classe: 'une-classe',
rappel: function() { }
}
Options :
- alerte :
ok - confirmation :
annuler,confirmer - prompt :
annuler,confirmer
Peut remplacer chaque option de bouton disponible pour utiliser un contenu et des styles CSS personnalisés :
boiteConfirmation({
message: "Ceci est une confirmation avec du texte de bouton personnalisé et des couleurs ! Vous aimez ça ?",
boutons: {
confirmer: {
etiquette: 'Oui',
classe: 'btn-success'
},
annuler: {
etiquette: 'Non',
classe: 'btn-danger'
}
},
rappel: function (resultat) {
// ...
}
});
Locales disponibles
Les locales sont utilisées pour fournir des traductions pour chaque bouton de commande intégré (OK, ANNULER et CONFIRMER).
Voici les locales disponibles (voir le tableau ci-dessous). Vous pouvez trouver chaque locale rendue sur la page "Exemples".
| Clé | Nom | Clé | Nom |
|---|---|---|---|
ar |
Arabe | az |
Azerbaïdjanais |
bg\_BG |
Bulgare | br |
Portugais-Brésil |
cs |
Tchèque | da |
Danois |
de |
Allemand | el |
Grec |
en |
Anglais | es |
Espagnol/Espagne |
et |
Estonien | eu |
Basque |
fa |
Perse | fi |
Finlandais |
fr |
Français | he |
Hébreu |
hr |
Croate | hu |
|
id |
Indonésien | it |
|
ja |
ka |
Géorgien | |
ko |
Coréen | lt |
Lituanien |
lv |
nl |
Néerlandais | |
no |
Norvégien | pl |
Polonais |
pt |
Portugais | ru |
Russe |
sk |
Slovaque | sl |
Slovène |
sq |
Albanais | sv |
Suédois |
sw |
Souahéli | ta |
Tamoul |
th |
Thaï | tr |
Turc |
uk |
Ukrainien | zh\_CN |
Chinois (République populaire de Chine) |
zh\_TW |
Chinois (Taïwan) |
Pour utiliser une locale autre que 'en', vous devez effectuer l'une des opérations suivantes :
- Utiliser le fichier
bootbox.all.jsoubootbox.all.min.jsqui inclut toutes les locales - Ajouter une référence à
bootbox.locales.jsoubootbox.locales.min.jsaprèsbootbox.js - Ajouter une référence au fichier de la locale cible (par exemple
fr.jspour la locale française) dans le dossiersrc/locales - Utiliser la fonction
ajouterLocalepour ajouter manuellement une locale
Utilisation des fonctions jQuery avec Bootbox
L'objet Bootbox retourné par chaque fonction de boîte de dialogue est un objet jQuery.
Ainsi, vous pouvez chaîner la plupart des fonctions jQuery au résultat d'une boîte de dialogue Bootbox.
Exemple de traitement de l'événement Bootstrap shown.bs.modal en utilisant .on() :
var dialogue = boiteDialogue({
/* Vos options... */
});
dialogue.on('shown.bs.modal', function(e){
// Faites quelque chose avec la boîte de dialogue juste après qu'elle ait été montrée à l'utilisateur...
});
Si vous définissez l'option afficher sur false, vous pouvez également utiliser la fonction Bootstrap modal() pour afficher et masquer manuellement la boîte de dialogue :
var dialogue = boiteDialogue({
afficher: false,
/* Vos options... */
});
dialogue.modal('afficher');
dialogue.modal('masquer');
Fonctions d'instance
boiteInit(function)
Permet de fournir une fonction à appeler lors de l'initialisation de la boîte de dialogue.
var dialogue = boiteDialogue({
/* Vos options... */
});
dialogue.init(function(){
// Faites quelque chose avec la boîte de dialogue...
});
init peut être appelé sur n'importe quelle fonction wrapper, car elles retournent toutes un objet Bootbox/jQuery
Fonctions globales
boiteDefauts(object **options**)
Cette méthode permet à l'utilisateur de définir de nombreuses options par défaut affichées dans les exemples de boîtes de dialogue.
Beaucoup de ces options s'appliquent également aux méthodes wrapper de base et peuvent être remplacées si la méthode wrapper est appelée avec un seul paramètre d'options :
boiteDefauts({
/**
* @optional String
* @default: en
* paramètres de locale à utiliser pour traduire les trois
* étiquettes de bouton standard : OK, CONFIRMER, ANNULER
*/
locale: "fr",
/**
* @optional Boolean
* @default: true
* si la boîte de dialogue doit être affichée immédiatement
*/
afficher: true,
/**
* @optional Boolean
* @default: true
* si la boîte de dialogue doit avoir un arrière-plan ou non
*/
arrierePlan: true,
/**
* @optional Boolean
* @default: true
* afficher un bouton de fermeture
*/
boutonFermer: true,
/**
* @optional Boolean
* @default: true
* animer la boîte de dialogue en entrée et en sortie (non pris en charge dans < IE 10)
*/
animer: true,
/**
* @optional String
* @default: null
* une classe supplémentaire à appliquer au wrapper de la boîte de dialogue
*/
classe: "mon-modal"
});
boiteDefinirLocale(String nom)
Permet à l'utilisateur de sélectionner une locale au lieu d'utiliser boiteDefauts("locale", ...).
La configuration de la locale est utilisée pour traduire les trois étiquettes de bouton standard : OK, CONFIRMER, ANNULER
Par défaut : en
boiteAjouterLocale(String nom, object valeurs)
Permet à l'utilisateur d'ajouter des traductions personnalisées pour chaque bouton de commande intégré. L'objet valeurs doit être au format suivant :
{
OK : '',
ANNULER : '',
CONFIRMER : ''
}
boiteSupprimerLocale(String nom)
Permet à l'utilisateur de supprimer une locale des paramètres de locale disponibles.
boiteLocales(String nom)
Permet à l'utilisateur d'obtenir un objet de locale à partir des paramètres de locale disponibles. Si nom est vide, toutes les locales seront retournées.
boiteMasquerTout()
Cache toutes les boîtes de dialogue Bootbox actuellement actives. Vous pouvez fermer individuellement les boîtes de dialogue Bootstrap normales comme suit :
dialogue.modal('masquer')
Limitations connues
Le code de la boîte de dialogue ne bloque pas l'exécution du code
Contrairement aux alertes, confirmations ou prompts natifs, tous les modals Bootstrap (et donc les modals Bootbox) sont asynchrones ; c'est-à-dire que les événements générés par Bootstrap sont des événements non bloquants. En raison de cette limitation, le code qui ne doit pas être évalué avant que l'utilisateur ne ferme la boîte de dialogue doit être appelé dans la fonction de rappel de la boîte de dialogue.
Pas de support pour plusieurs modals ouverts
Comme indiqué dans la documentation officielle de Bootstrap, il s'agit d'une limitation du plugin modal de Bootstrap. Bien qu'il soit fonctionnellement possible de déclencher plusieurs modals, un CSS et/ou un code JavaScript personnalisé sont nécessaires pour chaque couche de modal afin de les afficher correctement.
Valeur du prompt non nettoyée
La valeur retournée par le prompt Bootbox n'est pas nettoyée d'aucune manière.
Chaînes de contenu non nettoyées
Vous pouvez utiliser du texte brut ou du HTML pour toute option de Bootbox qui définit l'apparence d'affichage, telle que titre, message et étiquettes de bouton. Bootbox ne nettoie aucune de ces valeurs. Comme nous utilisons la fonction .html() de jQuery pour construire la boîte de dialogue, cela constitue un vecteur XSS potentiel. Le nettoyage du contenu est de votre responsabilité.