Dokos introduit une nouvelle boîte de dialogue des paramètres (frappe.ui.SettingsDialog) qui permet de regrouper et d'organiser les options de configuration de manière intuitive. Cette fonctionnalité est particulièrement utile pour les modules nécessitant plusieurs sections de configuration.
La boîte de dialogue des paramètres se présente sous la forme d'un panneau latéral avec deux sections principales :
Pour ouvrir une boîte de dialogue des paramètres, utilisez le code suivant :
new frappe.ui.SettingsDialog({
title: __('Paramètres'),
default_tab: "preferences",
tabs: [{
group: __('Configuration'),
items: [{
id: "preferences",
label: __('Préférences'),
icon: "sliders-vertical",
title: __('Préférences'),
description: __('Gérez vos préférences'),
fields: [
{
label: __('Thème sombre'),
fieldname: "dark_mode",
fieldtype: "Switch"
}
],
actions: [{
label: __('Sauvegarder'),
primary: true,
click(panel) {
const values = panel.get_values();
// Logique de sauvegarde
}
}]
}]
}]
}).show();
Le contrôle Switch (fieldtype: "Switch") est un nouvel élément d'interface qui permet d'activer ou de désactiver une option de manière visuelle. Il est utilisable dans n'importe quel formulaire ou boîte de dialogue.
{
label: __('Activer la fonctionnalité'),
fieldname: "enable_feature",
fieldtype: "Switch",
default: 1
}
get_values() est 1 (activé) ou 0 (désactivé).Chaque panneau (SettingsDialogPanel) peut être mis à jour dynamiquement avec panel.set_view() :
panel.set_view({
title: __('Nouveau titre'),
description: __('Nouvelle description'),
fields: [ /* nouveaux champs */ ],
actions: [ /* nouvelles actions */ ]
});
| Méthode | Description |
|---|---|
panel.get_values() | Récupère les valeurs du formulaire |
panel.set_values(values) | Définit les valeurs du formulaire |
panel.refresh() | Réinitialise le panneau à sa vue par défaut |
panel.set_header(title, description) | Met à jour le titre et la description |
Voici un exemple complet de configuration pour un module de gestion des notifications :
new frappe.ui.SettingsDialog({
title: __('Paramètres des notifications'),
default_tab: "email",
tabs: [{
group: __('Canaux'),
items: [
{
id: "email",
label: __('Email'),
icon: "envelope",
title: __('Notifications par email'),
description: __('Configurez les notifications envoyées par email'),
fields: [
{
label: __('Activer les emails'),
fieldname: "enable_emails",
fieldtype: "Switch",
default: 1
},
{
label: __('Fréquence'),
fieldname: "email_frequency",
fieldtype: "Select",
options: ["Immédiat", "Quotidien", "Hebdomadaire"],
depends_on: "eval:doc.enable_emails"
}
],
actions: [
{
label: __('Sauvegarder'),
primary: true,
click(panel) {
const values = panel.get_values();
frappe.call({
method: "module.api.save_settings",
args: { values },
callback: () => {
frappe.show_alert({
message: __('Paramètres sauvegardés'),
indicator: 'green'
});
}
});
}
}
]
}
]
}]
}).show();
::: tip Pour les développeurs, ces primitives sont réutilisables dans n'importe quel module Dokos. Consultez la documentation technique pour plus de détails sur l'API. :::