Dans le cadre de l’amélioration de l’expérience utilisateur, nous souhaiterions savoir s’il existe une solution pour rendre les boutons “Enregistrer” et “Enregistrer & Fermer” visibles uniquement lorsque des modifications sont apportées dans un formulaire.
Nous avons eu des retours utilisateurs et voici ce qu’il en ressort pour l’optimisation lié à cette demande :
Clarifier l’interface utilisateur en affichant uniquement les actions pertinentes.
Réduire les clics inutiles sur les boutons lorsqu’aucune modification n’a été apportée.
Améliorer l’ergonomie et fluidifier le parcours utilisateur.
Nous apprécierons toute piste ou recommandation pour mettre en place cette fonctionnalité. Et l’avoir directement en natif serait top !
Le flag hasChanged positionné sur l’objet pourrait conditionner l’affichage des actions “save” et “save & close”. Attention masquer le bouton signifie = ouverture en lecture seule ou pas les droits de mise à jour, donc il faudrait plutôt désactiver le bouton mais le laisser visible.
Cela n’a pas été fait car il est possible de forcer un “save” même sans avoir rien modifié pour recalculer/actualiser des valeurs non modifiables, générer un document ou exécuter du code dans les hooks (pre/postValidate, pre/postSave…).
En 6.2, une évolution a été faite pour ne pas afficher de dialogue confirmation au “quitter sans sauver” si rien n’a été modifié ou surtout si tout est revenu à sa valeur initiale après N modifs.
Pour rester compatible ascendant, on peut ajouter une classe “active” sur les boutons si qq choses a changé (mais pas un disable ou hidden) :
pour changer le style “grisé ou pas” pour ne pas attirer l’oeil
pour toujours permettre de faire un save “forcé” même si rien de visible n’a été modifié, car il peut y avoir des choses “invisibles” à faire au save
Ou alors ajouter une propriété à l’objet pour choisir le mode d’affichage en conception :
“save always active” : comme aujourd’hui si habilité
“active/inactive on change” : clickable mais grisé si pas de modifs
“enable/disable on change” : non clickable si aucune modif
Une autre évolution simple serait d’ajouter une class CSS has-changed sur les champs modifiés pour leur ajouter des styles.
Bien sur tout est déjà faisable par code en ajoutant des onchange sur les input/select/textarea au form.onload mais autant le faire en natif.