@m4l/components 9.3.30-JA.beta-1 → 9.3.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.DS_Store ADDED
Binary file
@@ -6,26 +6,9 @@ import { CustomFormArguments, FormProviderCustomProps, RHFormProviderProps, RHFo
6
6
  * Cuando statusLoad es 'ready' se actualiza el statusLoad del formulario a 'ready', para que los que useWatch puedan ser efectivos despues de la carga de los datos.
7
7
  * Se recomienda usar useFormReadyForUpdate que se nutre de statusLoad e indica que el formulario esta listo para ser usado.
8
8
  */
9
- export declare function useCustomForm<T extends RHFormValues>({ validationSchema, values, statusLoad, mode, }: CustomFormArguments<T>): import('react-hook-form').UseFormReturn<T, any, undefined>;
9
+ export declare function useCustomForm<T extends RHFormValues>({ validationSchema, values, statusLoad, mode, }: CustomFormArguments<T>): import('react-hook-form').UseFormReturn<T, undefined, T>;
10
10
  /**
11
11
  * Componente que extiende FormProviderCustomBase para poder ser usado dentro del forwardRef garantizando el tipado.
12
12
  */
13
13
  export declare const FormProviderCustom: <T extends RHFormValues>(props: FormProviderCustomProps<T> & RefAttributes<RHFormProviderRef<T>>) => ReactElement;
14
- /**
15
- * Componente principal que gestiona el `Provider` de `react-hook-form` y encapsula el formulario para la creación de formularios personalizados.
16
- *
17
- * Este componente utiliza internamente `useCustomForm` para inicializar todos los métodos necesarios para la manipulación del formulario,
18
- * incluyendo validación con Yup, protegida con ValidationSchema<T> para garantizar que solo se usen claves declaradas en el tipo del formulario sean las que participen
19
- *
20
- *
21
- * **Características principales:**
22
- * - Integración completa con React Hook Form
23
- * - Validación automática usando esquemas de Yup
24
- * - Gestión de estados de carga para actualización de valores
25
- * - Exposición de métodos del formulario a través de refs
26
- * - Soporte para diferentes modos de validación
27
- *
28
- * Si necesitas acceso directo a los métodos de `useForm`, puedes utilizar el `Provider` y el hook por separado mediante
29
- * `FormProviderCustom` y `useCustomForm`, respectivamente.
30
- */
31
- export declare const RHFormProvider: import('react').ForwardRefExoticComponent<RHFormProviderProps<RHFormValues> & RefAttributes<RHFormProviderRef<RHFormValues>>>;
14
+ export declare const RHFormProvider: <T extends RHFormValues>(props: RHFormProviderProps<T> & RefAttributes<RHFormProviderRef<T>>) => ReactElement;
@@ -45,7 +45,7 @@ function useCustomForm({
45
45
  return formMethods;
46
46
  }
47
47
  const FormProviderCustomBase = (props, ref) => {
48
- const { children, onSubmit, className, formMethods } = props;
48
+ const { children, onSubmit, onSubmitError, className, formMethods } = props;
49
49
  useImperativeHandle(
50
50
  ref,
51
51
  () => ({
@@ -58,7 +58,10 @@ const FormProviderCustomBase = (props, ref) => {
58
58
  FormProviderRoot,
59
59
  {
60
60
  className: clsx(classes.root, className),
61
- onSubmit: formMethods.handleSubmit(onSubmit),
61
+ onSubmit: formMethods.handleSubmit(
62
+ onSubmit,
63
+ onSubmitError
64
+ ),
62
65
  children
63
66
  }
64
67
  ) });
@@ -66,9 +69,9 @@ const FormProviderCustomBase = (props, ref) => {
66
69
  const FormProviderCustomForward = forwardRef(FormProviderCustomBase);
67
70
  FormProviderCustomForward.displayName = "FormProviderCustom";
68
71
  const FormProviderCustom = FormProviderCustomForward;
69
- const RHFormProvider = forwardRef(
72
+ const RHFormProviderBase = forwardRef(
70
73
  (props, ref) => {
71
- const { children, onSubmit, values, validationSchema, statusLoad = "ready", className, mode } = props;
74
+ const { children, onSubmit, onSubmitError, values, validationSchema, statusLoad = "ready", className, mode } = props;
72
75
  const formMethods = useCustomForm({ validationSchema, statusLoad, values, mode });
73
76
  return /* @__PURE__ */ jsx(
74
77
  FormProviderCustom,
@@ -79,13 +82,15 @@ const RHFormProvider = forwardRef(
79
82
  validationSchema,
80
83
  statusLoad,
81
84
  onSubmit,
85
+ onSubmitError,
82
86
  formMethods,
83
87
  children
84
88
  }
85
89
  );
86
90
  }
87
91
  );
88
- RHFormProvider.displayName = "RHFormProvider";
92
+ RHFormProviderBase.displayName = "RHFormProvider";
93
+ const RHFormProvider = RHFormProviderBase;
89
94
  export {
90
95
  FormProviderCustom as F,
91
96
  RHFormProvider as R,
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { Mode, UseFormReturn } from 'react-hook-form';
2
+ import { Mode, SubmitErrorHandler, UseFormReturn } from 'react-hook-form';
3
3
  import { ObjectSchema } from 'yup';
4
4
  import { ObjectShape } from 'yup/lib/object';
5
5
  /**
@@ -84,7 +84,11 @@ export interface RHFormProviderProps<T extends RHFormValues> {
84
84
  /** Elementos hijos del formulario */
85
85
  children: ReactNode;
86
86
  /** Función que se ejecuta al enviar el formulario con los datos validados */
87
- onSubmit: (data: T) => void;
87
+ onSubmit: ((data: T) => void) | ((data: T) => Promise<void>);
88
+ /**
89
+ * Cuando hay un error en la validación del formulario, se ejecuta esta función.
90
+ */
91
+ onSubmitError?: SubmitErrorHandler<T>;
88
92
  /** Valores iniciales del formulario si es un new o cargados del backend si son edit */
89
93
  values: RHFormInitialValues<T>;
90
94
  /** Esquema de validación de Yup */
@@ -101,7 +105,7 @@ export interface RHFormProviderProps<T extends RHFormValues> {
101
105
  * Combina las propiedades de React Hook Form con las propiedades personalizadas del formulario.
102
106
  */
103
107
  export interface FormProviderCustomProps<T extends RHFormValues> extends RHFormProviderProps<T> {
104
- formMethods: UseFormReturn<T, any, undefined>;
108
+ formMethods: UseFormReturn<T, undefined, T>;
105
109
  }
106
110
  /**
107
111
  * Argumentos para el hook useCustomForm.
@@ -123,7 +127,7 @@ export interface CustomFormArguments<T extends RHFormValues> {
123
127
  */
124
128
  export interface RHFormProviderRef<T extends RHFormValues> {
125
129
  /** Objeto completo con todos los métodos de React Hook Form */
126
- formMethods: UseFormReturn<T, any, undefined>;
130
+ formMethods: UseFormReturn<T, undefined, T>;
127
131
  onSubmit: (data: T) => void;
128
132
  }
129
133
  export {};
package/hooks/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { useFormAddEdit } from './useFormAddEdit';
1
+ export { useFormAddEdit } from './useFormAddEdit/useFormAddEdit';
2
2
  export { useModal } from './useModal';
3
3
  export { useTab } from './useTab';
4
4
  export { getformAddEditDictionary } from './useFormAddEdit/dictionary';
@@ -2,7 +2,8 @@ import { FormStatusLoad } from '../../components/hook-form/RHFormProvider/types'
2
2
  import { UseFormAddEditProps } from './types';
3
3
  import { FieldValues } from 'react-hook-form';
4
4
  /**
5
- * TODO: Documentar
5
+ * Hook to add or edit a form
6
+ * @deprecated Use useFormAddEdit from @m4l/layouts instead
6
7
  */
7
8
  export declare function useFormAddEdit<TValues extends FieldValues = FieldValues, TEndpointValues extends FieldValues = FieldValues>(props: UseFormAddEditProps<TValues, TEndpointValues>): {
8
9
  formValues: TValues;
package/index.js CHANGED
@@ -224,7 +224,7 @@ import { g as g30 } from "./components/hook-form/RHFormProvider/dictionary.js";
224
224
  import { u as u22 } from "./contexts/AppearanceComponentContext/useAppearanceComponentStore.js";
225
225
  import { A as A16 } from "./contexts/AppearanceComponentContext/AppearanceComponentContext.js";
226
226
  import { a as a17, M as M10 } from "./contexts/ModalContext/index.js";
227
- import { u as u23 } from "./hooks/useFormAddEdit/index.js";
227
+ import { u as u23 } from "./hooks/useFormAddEdit/useFormAddEdit.js";
228
228
  import { u as u24 } from "./hooks/useModal/index.js";
229
229
  import { u as u25 } from "./hooks/useTab/index.js";
230
230
  import { g as g31 } from "./hooks/useFormAddEdit/dictionary.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m4l/components",
3
- "version": "9.3.30-JA.beta-1",
3
+ "version": "9.3.30",
4
4
  "license": "UNLICENSED",
5
5
  "description": "M4L Components",
6
6
  "lint-staged": {