--- title: "Utiliser les composants d'interface" description: "Guide pour intégrer et personnaliser les composants UI standard dans Dokos" icon: i-mdi-puzzle ---
Dokos fournit des composants d'interface standardisés pour simplifier le développement et garantir une expérience utilisateur cohérente. Ces composants sont accessibles via des helpers JavaScript et peuvent être utilisés dans les formulaires, les listes et les dialogues.
frappe.ui.buttonLe helper frappe.ui.button permet de créer des boutons au style Espresso de manière programmatique, sans avoir à écrire manuellement le balisage HTML. Ce helper gère automatiquement :
aria-busy)frappe.utils.iconconst button = frappe.ui.button({
label: "Enregistrer",
variant: "primary",
onclick: () => {
return frappe.call({
method: "ma_methode",
args: { docname: cur_frm.doc.name }
}).then(r => {
frappe.show_alert({ message: "Enregistré !", indicator: "green" });
});
}
});
// Ajouter au DOM
$(document.body).append(button);
const buttonHtml = frappe.ui.button.html({
label: "Annuler",
variant: "secondary",
icon: "i-mdi-close"
});
// Utiliser dans un template
const template = `
<div class="form-actions">
${buttonHtml}
</div>
`;
| Option | Type | Description | Valeur par défaut |
|---|---|---|---|
label | string | Texte du bouton | "" |
variant | string | Style du bouton (primary, secondary, tertiary, danger, warning, success) | "secondary" |
icon | string | Icône à afficher (format i-mdi-nom-icone ou nom d'icône Frappe) | null |
iconRight | boolean | Affiche l'icône à droite du texte | false |
onclick | function | Fonction appelée au clic (peut retourner une Promise pour gérer l'état de chargement) | null |
title | string | Infobulle (obligatoire pour les boutons icône) | null |
disabled | boolean | Désactive le bouton | false |
className | string | Classes CSS supplémentaires | "" |
dataAttr | object | Attributs data-* personnalisés | {} |
frappe.ui.button({
label: "Traiter les commandes",
variant: "primary",
onclick: () => {
return new Promise(resolve => {
setTimeout(() => {
frappe.show_alert("Traitement terminé !");
resolve();
}, 2000);
});
}
});
frappe.ui.button({
icon: "i-mdi-printer",
variant: "tertiary",
title: "Imprimer le document",
onclick: () => window.print()
});
const d = new frappe.ui.Dialog({
title: "Confirmation",
fields: [
{ fieldtype: "HTML", fieldname: "message", options: "Voulez-vous vraiment supprimer ?" }
]
});
d.add_button(frappe.ui.button({
label: "Supprimer",
variant: "danger",
onclick: () => {
// Logique de suppression
d.hide();
}
}));
title pour les boutons icôneon* (utiliser onclick à la place)primary, secondary) pour les actions principalesdanger uniquement pour les actions irréversiblesfrappe.ui.button.html() puis injecter en une seule opérationRemplacez les balises <button> ou <a class="btn"> existantes par le helper :
Avant :
<button class="btn btn-primary" onclick="soumettre()">
<i class="octicon octicon-check"></i> Soumettre
</button>
Après :
frappe.ui.button({
label: "Soumettre",
variant: "primary",
icon: "i-mdi-check",
onclick: soumettre
});
Dokos fournit également d'autres helpers pour les composants courants :
frappe.ui.badge()frappe.show_alert()frappe.ui.Dialogfrappe.ui.EmbeddedListPour plus de détails sur ces composants, consultez la documentation technique de Frappe.
::: tip Bon à savoir Les composants Espresso sont conçus pour s'adapter automatiquement au thème clair/sombre de Dokos. :::