UNPKG

@lstz/reusable-form

Version:

A reusable React component for creating simple, flexible forms.

43 lines 2.53 kB
/** * 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