@lstz/reusable-form
Version:
A reusable React component for creating simple, flexible forms.
43 lines • 2.53 kB
TypeScript
/**
* Composant FormInput : Champ de formulaire réutilisable
* - Affiche un champ `<input>` avec un libellé `label`
* - Applique des classes dynamiques basées sur `formattedTitle`
* - Affiche un message d'erreur `error` si nécessaire
* - Utilise `register` pour enregistrer le champ dans `react-hook-form`
* - Accepte toutes les propriétés HTML natives des `<input>` via `...inputProps`
*
* @template T - Type générique représentant les valeurs du formulaire (ex: `RegisterCredentials`)
* @param {Object} props - Les propriétés du composant
* @param {string} props.formattedTitle - Titre du formulaire formaté pour les classNames CSS
* @param {string} props.label - Libellé du champ de formulaire
* @param {Path<T>} props.id - Clé de l'objet `T`, utilisée pour identifier l'input dans `react-hook-form`
* @param {boolean} [props.required] - Indique si le champ est requis (optionnel)
* @param {string} [props.error] - Message d'erreur à afficher (optionnel)
* @param {UseFormRegister<T>} props.register - Fonction `register` de `react-hook-form`
* @param {InputHTMLAttributes<HTMLInputElement>} props.inputProps - Toutes les autres propriétés HTML natives de l'input
*/
import { FieldValues, Path, UseFormRegister } from 'react-hook-form';
import { InputHTMLAttributes } from 'react';
/**
* Props pour le composant FormInput (utilisé par le composant `FormInputs`, sous-composant de `ReusableForm`)
* - `T` assure que `register`, `errors` et `id` sont correctement typés en fonction du formulaire utilisé.
* - formattedTitle : titre du formulaire formaté pour les classNames CSS
* - label : texte du libellé affiché
* - id : clé de l'objet `T`, utilisée pour identifier l'input dans `react-hook-form`.
* - error : message d'erreur à afficher (optionnel).
* - register : méthode `register` fournie par `react-hook-form` pour enregistrer les champs de formulaire.
*/
export interface FormInputProps<T extends FieldValues> extends InputHTMLAttributes<HTMLInputElement | HTMLSelectElement> {
formattedTitle: string;
label: string;
id: Path<T>;
options?: readonly {
readonly value: string;
readonly label: string;
}[];
error?: string | null;
register: UseFormRegister<T>;
}
declare function FormInput<T extends FieldValues>({ formattedTitle, label, id, type, options, required, error, register, ...inputProps }: FormInputProps<T>): import("react/jsx-runtime").JSX.Element;
export default FormInput;
//# sourceMappingURL=FormInput.d.ts.map