Skip to content

v11.20

Compare
Choose a tag to compare
@JabX JabX released this 30 Sep 18:51
· 53 commits to master since this release

Cette release contient un grand nombre de petites évolutions suite à des demandes utilisateurs diverses :

Composants par défaut sur les domaines

Les composants par défaut (InputComponent, SelectComponent, DisplayComponent...) sont désormais portés par le domaine au lieu d'être définis dans le composant de champ (Field, posé par fieldFor/selectFor/autocompleteFor). Cette évolution est accompagnée d'un renforcement des types de composants que l'on peut passer aux domaines, afin de pouvoir être sûr que le composant passé corresponde bien au type de domaine (exemple : utiliser une Checkbox sur un domaine de type "boolean" uniquement).

Cela implique les changements (potentiellement breaking changes) suivants :

  • Si vous utilisez makeField ou .add() pour créer un champ sans domaine, alors vous n'aurez plus de composants d'affichage ou de saisie par défaut. Il est donc impératif de renseigner un domaine ou les composants d'affichage dont vous avez besoin.

  • Les composants génériques, ceux qui fonctionnent pour plusieurs types comme SelectAutocomplete par exemple, doivent spécifier le type dans la définition, car il ne peut pas être inféré automatiquement 🥺

    Cela veut dire qu'écrire domain({type: "number", SelectComponent: SelectAutocomplete}) est désormais une erreur et que vous devez écrire domain({type: "number", SelectComponent: SelectAutocomplete<"number">}) pour que ça fonctionne. En contrepartie, vous aurez bien le bon type partout dans selectProps, ce qui n'était pas forcément le cas avant.

  • Les domaines multiples ("boolean-array", "number-array" et "string-array") utilisent désormais SelectChips et AutocompleteChips comme composants par défaut (et aucun InputComponent), puisque les composants doivent désormais correspondre au type du domaine. Les domaines de type "object" n'ont plus aucun composant de saisie par défaut. Cela ne devrait casser personne puisqu'il fallait de toute façon impérativement renseigner d'autres composants pour utiliser ces domaines, vous pouvez en revanche maintenant vous en abstenir si les composants par défaut vous conviennent.

  • Vous devez désormais impérativement utiliser la fonction domain() pour créer un domaine. Si vous utilisiez simplement {type: "string"} à certains endroits par exemple, vous devrez le wrapper, ou bien spécifier manuellement les 5 composants de champs.

Autres évolutions

  • b4768c7 - showIfNoData sur les operationList de ActionBar/tableFor
    Vous pouvez renseigner cette propriété (à true) dans une définition d'action dans une ActionBar ou dans un tableFor pour qu'elle soit affichée en permanence, au lieu d'être conditionnée au fait d'avoir sélectionné au moins un élément. A noter que dans l'action est toujours appelée avec les éléments sélectionnés, donc ici ça serait une liste vide. Cette propriété doit être renseignée même s'il n'y a pas de sélection du tout (ce qui est un breaking change pour tableFor).

  • 6743d7a - noSuggestionsOnEmptyQuery sur Autocomplete
    Le composant d'Autocomplete (et donc SelectAutocomplete également) peuvent désormais ne pas afficher les suggestions tant que la query est vide, à la manière de AutocompleteSearch (dont le comportement inverse pouvait déjà être activé avec searchOnEmptyQuery)

  • 34827f3 - noBlurOnClick => noFocusOnClick
    Dans la définition d'un "trailing button" dans un dérivé de TextField, la propriété noBlurOnClick a été renommée en noFocusOnClick puisqu'elle n'effectue plus de "blur" (l'implémentation précédente le faisait à tort, ce qui pouvait entraîner des effets secondaires indésirables, comme dans l'InputDate par exemple)

  • 0775e83 - Conservation des modifications de criteriaBuilder dans le type de CollectionStore
    Le type d'un CollectionStore qui a patché son critère (comme avec useFormNode, via criteriaBuilder), prend désormais en compte le type résultant de ces modifications, au lieu de l'ignorer silencieusement.

  • c39d60e - Fix critères "vides" affichés quand même dans le Summary
    En particulier pour les listes vides.

  • d05d66c - Ajout mouseEvent sur onLineClick sur tableFor
    Il est passé en deuxième paramètre.

  • ab3eddd - Extraction de useInput de Input
    Le comportement du composant Input qui gère le masque de saisie et la saisie de nombres (décimaux) a été extrait dans un hook, si vous voulez l'utiliser dans un autre composant que le TextField.