export function useCommonForm()

in experimenter/experimenter/nimbus-ui/src/hooks/useCommonForm/index.tsx [12:65]


export function useCommonForm<FieldNames extends string>(
  defaultValues: Record<string, any>,
  isServerValid: boolean,
  submitErrors: SerializerMessages,
  setSubmitErrors: React.Dispatch<React.SetStateAction<Record<string, any>>>,
  reviewMessages?: SerializerMessages,
  reviewWarnings?: SerializerMessages,
) {
  const formMethods = useForm(defaultValues);
  const {
    handleSubmit,
    register,
    reset,
    getValues,
    setValue,
    errors,
    control,
    formState: { isSubmitted, isDirty, touched, isValid: isClientValid },
    watch,
  } = formMethods;

  const isDirtyUnsaved = IsDirtyUnsaved(isDirty, isClientValid, isSubmitted);
  const isValid = isServerValid && isClientValid;

  const { FormErrors, formControlAttrs, formSelectAttrs } =
    useCommonFormMethods<FieldNames>(
      defaultValues,
      setSubmitErrors,
      submitErrors,
      register,
      errors,
      touched,
      reviewMessages,
      reviewWarnings,
    );

  return {
    FormErrors,
    formControlAttrs,
    formSelectAttrs,
    handleSubmit,
    reset,
    getValues,
    setValue,
    errors,
    touched,
    isValid,
    isDirtyUnsaved,
    isSubmitted,
    formMethods,
    control,
    watch,
  };
}