Extraire la couche d'adaptation entre les composants standards (toolbox
) et les composants pour les formulaires (forms
)
#192
Labels
Effort: important
Peut être fait en plusieurs semaines
Priorité: moyenne
On peut contourner si c'est pas fait mais c'est bof
Les composants de champs doivent tous répondre à une API fixe Focus pour être utilisés comme Input/Select/Autocomplete... et implémenter des comportements associés. Par exemple :
type
qui correspond au type du domaine (string
,number
,string-array
...), et le composant doit avoir un couplevalue
/onChange
qui correspond au type TS correspondant (ex:type="string-array"
impliquevalue: string[]
etonChange: (value: string[]) => void
), et implémenter une conversion de type si nécessaire.error: string
qui correspond au message d'erreur éventuel à afficher.values: ReferenceList
(sans information de type d'ailleurs)De plus, ce n'est pas forcément une erreur d'affecter un composant à
InputComponent
par exemple qui ne respecte pas cette API, ce qui peut amener des comportements étranges non anticipés.Cela force Focus a redéfinir des composants pré-existants avec les bonnes APIs et les bons comportements (exemples :
TextField
/Input
,Dropdown
/Select
,Autocomplete
/AutocompleteSearch
), et force les utilisateurs à recopier les implémentations de ces composants redéfinis dans les leurs lorsqu'ils veulent faire des composants personnalisés.La solution envisagée serait d'extraire la logique de surcharge des composants de
forms
pour la rendre disponible plus globalement, afin de pouvoir directement utiliser un composant pré-existant dans un champ sans avoir à systématiquement créer un composant wrapper manuel. L'idée serait de ne plus avoir aucun composant de champ dansforms
, remplacés par des "adapters". Dans l'idée, remplacerInputComponent: Input
par quelque chose commeInputComponent: props => <TextField {...props} {...valueAdapter(props)} {...errorAdapter(props)} />
.The text was updated successfully, but these errors were encountered: