Skip to content

Form ​

Un formulaire décrit par ses champs.

Il ne connaît aucune bibliothèque de formulaires : il reçoit un FormAdapter, ou en monte un lui-même. C'est ce qui lui permet de servir un projet sous react-hook-form et un projet sans rien, avec le même code.

Installation ​

bash
sia-ui add form

Ou par le paquet, sans rien copier :

tsx
import { Form, formFieldNames } from "@sia-ui/react-web";

Utilisation ​

tsx
<Form
  columns={2}
  defaultValues={{ nom: "", email: "" }}
  validate={createValidator({ nom: [required()], email: [required(), email()] })}
  onSubmit={(values) => api.post("/clients", { body: values })}
  fields={[
    { name: "nom", label: "Nom du client", required: true },
    { name: "email", label: "Adresse e-mail", type: "email", required: true },
  ]}
/>

Props de Form ​

PropTypeDéfautDescription
* fieldsFormEntry[]—
actionsReactNode—Remplace entièrement la barre de boutons.
alertPropsPartial&lt;Omit&lt;AlertProps, "children" | "onDismiss"&gt;&gt;—Les props de l'Alert qui annonce un échec d'envoi. Sans children, le message d'échec, ni onDismiss, qui l'efface.
asyncValidationDelaynumber400Millisecondes sans frappe avant une vérification validateAsync. 400 par défaut.
classNamestring—
clearTextReactNode—Le texte du bouton de remise à zéro. Par défaut, reset de la locale.
columnsnumber1
defaultValuesFormShape—
fieldPropsPartial&lt;Omit&lt;FieldProps, "name" | "value" | "defaultValue" | "onValueChange" | "error" | "onBlur" | "success" | "field" | "message"&gt;&gt;—Les props communes à tous les champs — orientation, libellé « facultatif », controlProps. Chaque champ déclaré dans fields l'emporte sur elles. Sans ce que le formulaire branche lui-même : le nom, la valeur, le changement et la sortie de champ (field), ni les messages d'erreur et de validation, qui sont propres à chaque champ.
formFormAdapter&lt;TValues&gt;—L'adaptateur de formulaire. Sans lui, un useLocalForm est monté en interne à partir de defaultValues, validate et onSubmit. Avec lui — react-hook-form, Formik, votre propre magasin — le formulaire ne fait plus que rendre.
loadingbooleanfalse
onSubmit(values: TValues) =&gt; any—L'envoi. Rendre des erreurs par champ les pose sous les champs. Lever une erreur l'affiche dans une alerte en tête des boutons — et une HttpError de @sia-ui/api voit en plus ses erreurs de champ posées à leur place.
requireDirtybooleantrueDésactive l'envoi tant que rien n'a changé.
requireValidbooleantrueDésactive l'envoi tant qu'une erreur est en vigueur.
showClearbooleanfalse
spinnerPropsPartial&lt;Omit&lt;SpinnerProps, "label"&gt;&gt;—Les props du Spinner d'une vérification validateAsync en cours. Sans label, repris de la locale comme le texte qui l'accompagne.
submitPropsButtonProps—Les props du bouton d'envoi. disabled s'ajoute aux conditions du formulaire au lieu d'être remplacé par elles.
submitTextReactNode—Le texte du bouton d'envoi. Par défaut, save de la locale.
validateFormValidator&lt;TValues&gt;—La validation. Un schéma Zod s'y branche en cinq lignes.

* obligatoire.

Voir aussi ​

Publié sous licence MIT.