v11.19
(Pour une fois, cette release n'apporte aucun breaking change 😄)
Compositions isRequired: false
Les compositions ("object"
, "list"
, et "recursive-list"
) peuvent désormais renseigner leur caractère obligatoire via isRequired
, comme les champs. Si une composition est marquée comme étant non obligatoire, alors tous ses champs seront également non obligatoires si la composition est entièrement vide (tous les champs à undefined
et toutes les listes vides). toFlatValues
retirera la composition de son résultat (au lieu de mettre {}
) dans ce cas.
isRequired
reste facultatif dans les définitions d'entité et il sera true
pour coller à l'existant sinon. Si vous utilisez TopModel, vous pouvez le générer avec l'option extendedCompositions
du générateur JS.
required()
Vous pouvez désormais utiliser la fonction required()
sur un builder de noeud de formulaire, qui fonctionne de la même manière que edit()
:
required(false)
rendra le noeud non obligatoire (comme décrit dans le paragraphe précédent)required(() => /* truc calculé */, "champ1", "champ2")
patchera les deux champs pour modifier leurisRequired
(cela appelerametadata()
).
Cette évolution a nécessité une petite refonte interne de la gestion des surcharges de metadata dans Focus, qui permet en plus de pouvoir spécifier plusieurs patch
sur le même champ sans perdre leur caractère calculé (un second patch
après un metadata calculé sortait d'ailleurs une erreur, ce qui n'est plus le cas).
Champs retirés sur Patch
Vous pouvez maintenant spécifier les champs retirés dans un formulaire avec Patch
via son nouveau troisième paramètre optionnel : Patch<MyEntity, {}, "champRetiré1" | "champRetiré2">
.