Dans Dokos, les composants Skeleton et Divider permettent d'améliorer l'expérience utilisateur en ajoutant des indicateurs visuels de chargement et des séparateurs dans les interfaces. Ces éléments sont particulièrement utiles pour les tableaux de bord, les formulaires et les listes où une structure claire et une rétroaction visuelle sont nécessaires.
Le composant Skeleton est utilisé pour afficher un placeholder pendant le chargement des données. Il simule la structure du contenu final, réduisant ainsi la perception du temps de chargement pour l'utilisateur.
Pour intégrer un composant Skeleton dans une page Dokos, utilisez le code suivant dans un script JavaScript personnalisé :
// Exemple d'utilisation dans un tableau de bord
frappe.ui.make_app_page({
title: 'Tableau de bord Client',
parent: cur_page,
single_column: true
});
// Ajouter un skeleton pendant le chargement des données
const skeleton = frappe.ui.add_skeleton({
parent: $('.layout-main-section'),
count: 3, // Nombre de placeholders
type: 'card' // Type de skeleton (card, list, form)
});
// Simuler un chargement de données
setTimeout(() => {
skeleton.remove(); // Supprimer le skeleton une fois les données chargées
$('.layout-main-section').append('<div class=\"alert alert-success\">Données chargées avec succès !</div>');
}, 2000);
Vous pouvez personnaliser l'apparence des skeletons en modifiant les classes CSS associées. Voici un exemple de personnalisation :
/* Personnalisation du skeleton */
.skeleton {
background-color: #f0f0f0;
border-radius: 4px;
margin-bottom: 10px;
}
.skeleton.shine {
animation: shine 1.5s infinite;
}
@keyframes shine {
0% { opacity: 0.6; }
50% { opacity: 1; }
100% { opacity: 0.6; }
}
Le composant Divider est utilisé pour séparer visuellement des sections dans une interface. Il permet de structurer le contenu et d'améliorer la lisibilité.
Pour ajouter un Divider dans une page Dokos, utilisez le code suivant :
// Ajouter un divider dans un formulaire
const divider = frappe.ui.add_divider({
parent: $('.form-section'),
text: 'Détails de la commande', // Texte optionnel
orientation: 'horizontal' // Orientation (horizontal ou vertical)
});
Vous pouvez personnaliser l'apparence des dividers en modifiant les classes CSS associées :
/* Personnalisation du divider */
.divider {
border-top: 1px solid #e0e0e0;
margin: 20px 0;
}
.divider-text {
color: #666;
font-weight: bold;
}
Voici un exemple complet d'intégration des deux composants dans un tableau de bord Dokos :
frappe.ui.make_app_page({
title: 'Tableau de bord Fournisseur',
parent: cur_page,
single_column: true
});
// Ajouter un skeleton pendant le chargement
const skeleton = frappe.ui.add_skeleton({
parent: $('.layout-main-section'),
count: 2,
type: 'card'
});
// Simuler un chargement de données
setTimeout(() => {
skeleton.remove();
// Ajouter un divider pour séparer les sections
frappe.ui.add_divider({
parent: $('.layout-main-section'),
text: 'Statistiques du fournisseur',
orientation: 'horizontal'
});
// Ajouter du contenu
$('.layout-main-section').append(
'<div class=\"card\">' +
' <div class=\"card-body\">' +
' <h5>Commandes en cours</h5>' +
' <p>12 commandes en attente de livraison.</p>' +
' </div>' +
'</div>'
);
frappe.ui.add_divider({
parent: $('.layout-main-section'),
text: 'Dernières activités',
orientation: 'horizontal'
});
$('.layout-main-section').append(
'<div class=\"card\">' +
' <div class=\"card-body\">' +
' <ul>' +
' <li>Nouvelle commande reçue de <strong>Maison Verte SARL</strong></li>' +
' <li>Facture payée par <strong>Bureau Moderne</strong></li>' +
' </ul>' +
' </div>' +
'</div>'
);
}, 2000);
Les composants Skeleton et Divider sont des outils puissants pour améliorer l'expérience utilisateur dans Dokos. En les intégrant de manière stratégique, vous pouvez rendre vos interfaces plus intuitives et agréables à utiliser.
Pour aller plus loin, consultez la documentation officielle de Frappe UI pour découvrir d'autres composants et fonctionnalités.