Dodock propose désormais des helpers pour personnaliser facilement les boutons et badges dans l'interface utilisateur. Ces outils permettent aux développeurs et administrateurs d'améliorer l'expérience utilisateur en adaptant l'apparence des éléments interactifs.
Les boutons dans Dodock peuvent être personnalisés avec des styles, des icônes et des comportements spécifiques grâce aux nouveaux helpers.
Vous pouvez appliquer différents styles à vos boutons pour indiquer leur fonction ou leur importance :
Les boutons peuvent être enrichis avec des icônes pour améliorer leur visibilité et leur compréhension :
// Exemple d'utilisation dans un script client
frappe.ui.form.on('Mon Doctype', {
refresh(frm) {
frm.add_custom_button(__('Envoyer'), () => {
// Action du bouton
}, 'i-mdi-send', 'btn-primary');
}
});
Bon à savoir : Utilisez des icônes de la bibliothèque Material Design Icons pour rester cohérent avec l'interface de Dokos.
Pour indiquer qu'une action est en cours de traitement, vous pouvez activer un état de chargement sur les boutons :
// Exemple d'utilisation
let button = frm.add_custom_button(__('Traiter'), () => {
button.set_working(); // Active l'état de chargement
frappe.call({
method: 'ma_methode',
args: { docname: frm.doc.name },
callback: (r) => {
button.done_working(); // Désactive l'état de chargement
}
});
});
Les badges sont des éléments visuels utilisés pour afficher des informations compactes, comme des statuts ou des notifications. Dodock propose des helpers pour créer et personnaliser ces badges.
Les badges peuvent être personnalisés avec différents styles pour refléter leur signification :
Voici comment créer un badge dans un script client :
// Exemple de création d'un badge
let badge = frappe.ui.add_badge({
text: __('En attente'),
color: 'orange',
icon: 'i-mdi-clock-outline'
});
// Ajouter le badge à un conteneur
frm.get_field('status').$wrapper.append(badge);
Les badges peuvent être mis à jour dynamiquement en fonction des données du document :
frappe.ui.form.on('Mon Doctype', {
status(frm) {
let badge_color = frm.doc.status === 'Validé' ? 'green' : 'orange';
let badge_text = frm.doc.status === 'Validé' ? __('Validé') : __('En attente');
frm.get_field('status').$wrapper.empty();
frm.get_field('status').$wrapper.append(
frappe.ui.add_badge({
text: badge_text,
color: badge_color,
icon: frm.doc.status === 'Validé' ? 'i-mdi-check' : 'i-mdi-clock-outline'
})
);
}
});
Les helpers pour boutons et badges sont particulièrement utiles dans les scripts clients pour personnaliser l'interface en fonction des besoins métiers.
Voici un exemple complet d'utilisation des helpers dans un script client pour un type de document personnalisé :
frappe.ui.form.on('Commande Client', {
refresh(frm) {
// Ajout d'un bouton personnalisé
frm.add_custom_button(__('Envoyer pour validation'), () => {
frappe.call({
method: 'ma_methode_de_validation',
args: { docname: frm.doc.name },
callback: (r) => {
frappe.show_alert({
message: __('Commande envoyée pour validation'),
indicator: 'green'
});
frm.reload_doc();
}
});
}, 'i-mdi-send', 'btn-primary');
// Ajout d'un badge dynamique
let badge_color = frm.doc.workflow_state === 'Validé' ? 'green' : 'orange';
let badge_text = frm.doc.workflow_state === 'Validé' ? __('Validé') : __('En attente');
frm.get_field('workflow_state').$wrapper.empty();
frm.get_field('workflow_state').$wrapper.append(
frappe.ui.add_badge({
text: badge_text,
color: badge_color,
icon: frm.doc.workflow_state === 'Validé' ? 'i-mdi-check' : 'i-mdi-clock-outline'
})
);
}
});
Pour les développeurs
Les helpers pour boutons et badges sont disponibles dans les modules suivants :
frappe/public/js/frappe/ui/components/badge.jsfrappe/public/js/frappe/ui/components/button.jsfrappe/public/js/frappe/ui/components/utils.jsVous pouvez étendre ces helpers pour répondre à des besoins spécifiques en créant des composants personnalisés.
Retour à la personnalisation de l'interface