Skip to content

v11.16

Compare
Choose a tag to compare
@JabX JabX released this 04 Mar 22:56
· 141 commits to master since this release

Cette release adresse essentiellement l'issue #191.

errorDisplay

La nouvelle propriété errorDisplay, disponible dans les options de champ (fieldFor/selectFor/autocompleteFor), le <Form> et les actions de formulaires (a.errorDisplay() dans useFormActions), permet de renseigner le mode d'affichage des erreurs des champs. Elle remplace forceErrorDisplay (sur actions et <Form>) et noError sur les champs. Elle peut avoir 3 valeurs :

  • always => les erreurs sont toujours affichées
  • after-focus => les erreurs sont affichées après avoir focus le champ en question au moins une fois
  • never => les erreurs ne sont jamais affichées

(Les erreurs ne sont quand même jamais affichées sur un champ quand il a le focus)

Dans les actions de formulaires :

  • after-focus passera le mode à always après l'appel de save(), et reviendra à after-focus une fois la sauvegarde effectuée (ou un cancel)
  • Si le mode n'est pas renseigné, il sera égal à after-focus si le formulaire est initialement en édition, et always sinon

Ce fonctionnement correspond presque exactement au fonctionnement précédent, mais implémenté de manière plus simple, claire, et flexible (en particulier parce qu'on peut surcharger l'affichage champ par champ).

breaking change: forceErrorDisplay n'existe plus, vous pouvez remplacer vos éventuelles assignations manuelles à false par errorDisplay: "after-focus" et à true par errorDisplay: "always".

a.successMessage()

Vous pouvez désormais surcharger le message de succès d'un formulaire directement via successMessage(), au lieu de passer i18nPrefix() pour que le message pointe sur {i18nPrefix}.detail.saved. Cela implique aussi que vous pouvez appeler successMessage("") pour désactiver le message. C'est un breaking change évidemment... que vous pouvez résoudre soit en changeant i18nPrefix(prefix) par successMessage(prefix + ".detail.saved"), ou en simplifiant.

Réécriture useLoad/useFormActions

Les deux hooks ont été réécrits pour qu'ils soient effectivement conçus de la même façon. Cela a permis de :

  • Autoriser le changement de node sur useLoad et useFormActions
  • Autoriser un array de dépendances sur useFormActions

Toute modification de node ou des dépendances va mettre à jour toutes les fonctions définies dans useLoad et useFormActions (params, load, save, on...), et relancer la fonction de chargement. Si c'est probablement toujours souhaitable pour useLoad (et c'était déjà le cas de toute façon), ça l'est peut être moins pour useFormActions si les dépendances sont utilisées dans le save ou un on, mais pas dans le load. Dans ce cas, il vaut mieux séparer le load dans un useLoad sans dépendances. Il y a un exemple dans la doc.

De plus, useFormActions ne supportent plus d'avoir plusieurs services de sauvagarde, une fonctionnalité qui n'a jamais été utilisée... (théoriquement un breaking change aussi mais bon...)

Réécriture Input (gestion des masques)

Le composant Input a été réécrit, en internalisant la gestion des masques de saisie (au lieu de dépendre d'une librairie externe inchangée depuis 7 ans et difficile à utiliser). S'il est fonctionnellement identique au composant précédent, certains bugs ont été corrigés (en particulier liés aux couper/copier/coller), et il est entièrement documenté dans la doc Focus 😉.