// Rôle : centralise les petits formulaires contrôlés avec brouillon local.
// Fournit helpers de champs, submit preventDefault et reset, sans porter de validation métier.
// À utiliser quand plusieurs champs sont simplement saisis puis nettoyés au submit.
import { useState } from "react";

export function useDraftForm(initialValues) {
  const [values, setValues] = useState(initialValues);

  function setField(name, value) {
    setValues((current) => ({ ...current, [name]: value }));
  }

  function updateValues(patch) {
    setValues((current) => ({ ...current, ...patch }));
  }

  function reset(nextValues = initialValues) {
    setValues(nextValues);
  }

  function getFieldProps(name, props = {}) {
    return {
      ...props,
      name: props.name || name,
      value: values[name] ?? "",
      onChange: (event) => {
        setField(name, event.target.value);
        props.onChange?.(event);
      }
    };
  }

  function handleSubmit(event, onSubmit) {
    event.preventDefault();
    onSubmit(values, { reset, setField, setValues, updateValues });
  }

  return {
    values,
    setField,
    setValues,
    updateValues,
    reset,
    getFieldProps,
    handleSubmit
  };
}
