Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Composants UI

Modales et boutons dans Dokos

Choisir entre frappe.confirm et frappe.warn pour demander une confirmation, et comprendre le bouton rouge des actions destructives comme Supprimer et Annuler.

Modales et boutons dans Dokos

Une modale de confirmation demande à l'utilisateur de valider une action avant son exécution. Dodock propose deux fonctions. Leur différence est la couleur du bouton principal.

FonctionBouton principalUsage
frappe.confirmNeutre (« Oui »)Action réversible ou sans risque.
frappe.warnRougeAction destructive : suppression, annulation.

Ce que voit l'utilisateur

Les actions destructives standard ouvrent une modale frappe.warn :

ActionTitreMessageBouton rougeBouton secondaire
Supprimer un document« Confirmation »« Validez-vous la suppression du document {0} ? »« Supprimer »« Annuler »
Annuler un document validé« Confirmation »« Validez-vous l'annulation du document {0} ? »« Oui »« Non »

Pour l'annulation, le bouton secondaire est « Non ». Un bouton « Annuler » serait ambigu quand l'action est elle-même une annulation.

La touche Entrée valide le bouton principal. Échap ou la croix ferme la modale sans exécuter l'action.

Demander une confirmation dans un script

frappe.confirm(
    __("Recalculer les prix de toutes les lignes ?"),
    () => frm.call("recalculer_prix"),   // Oui
    () => frappe.ui.toast({ message: __("Prix inchangés") })  // Non ou fermeture
);

Signature : frappe.confirm(message, confirm_action, reject_action, primary_label, secondary_label, opts). opts est passé à frappe.ui.Dialog.

Avertir avant une action destructive

frappe.warn(
    __("Confirmation"),
    __("Supprimer les {0} lignes sélectionnées ?", [selected.length]),
    () => supprimer_lignes(selected),
    __("Supprimer")
);

Signature : frappe.warn(title, message_html, proceed_action, primary_label, is_minimizable, secondary_label). Le bouton secondaire vaut « Annuler » par défaut. Les deux fonctions renvoient la modale (frappe.ui.Dialog).

Exemple fictif : recalculer_prix et supprimer_lignes sont des méthodes de votre application.

message_html est inséré comme HTML. Échappez toute valeur saisie par un utilisateur avec frappe.utils.escape_html avant de l'insérer.