@becklyn/forms 2.0.1 → 2.0.3

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.
Files changed (128) hide show
  1. package/README.md +31 -7
  2. package/dist/cjs/components/FormBuilder.d.ts +2 -2
  3. package/dist/cjs/components/FormBuilder.d.ts.map +1 -1
  4. package/dist/cjs/components/FormBuilder.js +9 -2
  5. package/dist/cjs/components/FormCustom.d.ts +3 -3
  6. package/dist/cjs/components/FormCustom.d.ts.map +1 -1
  7. package/dist/cjs/components/FormCustom.js +1 -0
  8. package/dist/cjs/components/FormEntry.d.ts +5 -6
  9. package/dist/cjs/components/FormEntry.d.ts.map +1 -1
  10. package/dist/cjs/components/FormEntry.js +3 -2
  11. package/dist/cjs/components/FormField.d.ts +4 -5
  12. package/dist/cjs/components/FormField.d.ts.map +1 -1
  13. package/dist/cjs/components/FormField.js +2 -1
  14. package/dist/cjs/components/FormRow.d.ts +3 -3
  15. package/dist/cjs/components/FormRow.d.ts.map +1 -1
  16. package/dist/cjs/components/FormRow.js +1 -0
  17. package/dist/cjs/components/FormSection.d.ts +3 -3
  18. package/dist/cjs/components/FormSection.d.ts.map +1 -1
  19. package/dist/cjs/components/FormSection.js +1 -0
  20. package/dist/cjs/condition/index.d.ts +1 -1
  21. package/dist/cjs/condition/index.d.ts.map +1 -1
  22. package/dist/cjs/context/FormProvider.d.ts +2 -1
  23. package/dist/cjs/context/FormProvider.d.ts.map +1 -1
  24. package/dist/cjs/context/FormProvider.js +1 -0
  25. package/dist/cjs/context/context.d.ts +7 -5
  26. package/dist/cjs/context/context.d.ts.map +1 -1
  27. package/dist/cjs/context/context.js +1 -0
  28. package/dist/cjs/context/data/FormDataProvider.d.ts +10 -10
  29. package/dist/cjs/context/data/FormDataProvider.d.ts.map +1 -1
  30. package/dist/cjs/context/data/FormDataProvider.js +1 -0
  31. package/dist/cjs/context/data/context.d.ts +8 -8
  32. package/dist/cjs/context/data/context.d.ts.map +1 -1
  33. package/dist/cjs/context/data/context.js +1 -0
  34. package/dist/cjs/guard/index.d.ts +4 -4
  35. package/dist/cjs/guard/index.d.ts.map +1 -1
  36. package/dist/cjs/hoc/withForm.d.ts +3 -2
  37. package/dist/cjs/hoc/withForm.d.ts.map +1 -1
  38. package/dist/cjs/hoc/withForm.js +4 -1
  39. package/dist/cjs/hoc/withFormData.d.ts +3 -2
  40. package/dist/cjs/hoc/withFormData.d.ts.map +1 -1
  41. package/dist/cjs/hoc/withFormData.js +1 -0
  42. package/dist/cjs/hook/useFormData.d.ts +2 -2
  43. package/dist/cjs/hook/useFormData.d.ts.map +1 -1
  44. package/dist/cjs/hook/useFormData.js +1 -0
  45. package/dist/cjs/hook/useFormValidations.d.ts +3 -3
  46. package/dist/cjs/hook/useFormValidations.d.ts.map +1 -1
  47. package/dist/cjs/hook/useFormValidations.js +1 -0
  48. package/dist/cjs/type/config.d.ts +5 -5
  49. package/dist/cjs/type/config.d.ts.map +1 -1
  50. package/dist/cjs/type/extract.d.ts +5 -8
  51. package/dist/cjs/type/extract.d.ts.map +1 -1
  52. package/dist/cjs/type/field.d.ts +9 -8
  53. package/dist/cjs/type/field.d.ts.map +1 -1
  54. package/dist/cjs/type/form.d.ts +13 -11
  55. package/dist/cjs/type/form.d.ts.map +1 -1
  56. package/dist/cjs/type/form.js +9 -0
  57. package/dist/cjs/type/validation.d.ts +6 -5
  58. package/dist/cjs/type/validation.d.ts.map +1 -1
  59. package/dist/cjs/util/index.d.ts +10 -8
  60. package/dist/cjs/util/index.d.ts.map +1 -1
  61. package/dist/cjs/util/index.js +3 -1
  62. package/dist/cjs/validation/index.d.ts +2 -2
  63. package/dist/cjs/validation/index.d.ts.map +1 -1
  64. package/dist/cjs/validation/index.js +2 -1
  65. package/dist/es/components/FormBuilder.d.ts +2 -2
  66. package/dist/es/components/FormBuilder.d.ts.map +1 -1
  67. package/dist/es/components/FormBuilder.js +9 -2
  68. package/dist/es/components/FormCustom.d.ts +3 -3
  69. package/dist/es/components/FormCustom.d.ts.map +1 -1
  70. package/dist/es/components/FormCustom.js +1 -0
  71. package/dist/es/components/FormEntry.d.ts +5 -6
  72. package/dist/es/components/FormEntry.d.ts.map +1 -1
  73. package/dist/es/components/FormEntry.js +3 -2
  74. package/dist/es/components/FormField.d.ts +4 -5
  75. package/dist/es/components/FormField.d.ts.map +1 -1
  76. package/dist/es/components/FormField.js +2 -1
  77. package/dist/es/components/FormRow.d.ts +3 -3
  78. package/dist/es/components/FormRow.d.ts.map +1 -1
  79. package/dist/es/components/FormRow.js +1 -0
  80. package/dist/es/components/FormSection.d.ts +3 -3
  81. package/dist/es/components/FormSection.d.ts.map +1 -1
  82. package/dist/es/components/FormSection.js +1 -0
  83. package/dist/es/condition/index.d.ts +1 -1
  84. package/dist/es/condition/index.d.ts.map +1 -1
  85. package/dist/es/context/FormProvider.d.ts +2 -1
  86. package/dist/es/context/FormProvider.d.ts.map +1 -1
  87. package/dist/es/context/FormProvider.js +1 -0
  88. package/dist/es/context/context.d.ts +7 -5
  89. package/dist/es/context/context.d.ts.map +1 -1
  90. package/dist/es/context/context.js +1 -0
  91. package/dist/es/context/data/FormDataProvider.d.ts +10 -10
  92. package/dist/es/context/data/FormDataProvider.d.ts.map +1 -1
  93. package/dist/es/context/data/FormDataProvider.js +1 -0
  94. package/dist/es/context/data/context.d.ts +8 -8
  95. package/dist/es/context/data/context.d.ts.map +1 -1
  96. package/dist/es/context/data/context.js +1 -0
  97. package/dist/es/guard/index.d.ts +4 -4
  98. package/dist/es/guard/index.d.ts.map +1 -1
  99. package/dist/es/hoc/withForm.d.ts +3 -2
  100. package/dist/es/hoc/withForm.d.ts.map +1 -1
  101. package/dist/es/hoc/withForm.js +4 -1
  102. package/dist/es/hoc/withFormData.d.ts +3 -2
  103. package/dist/es/hoc/withFormData.d.ts.map +1 -1
  104. package/dist/es/hoc/withFormData.js +1 -0
  105. package/dist/es/hook/useFormData.d.ts +2 -2
  106. package/dist/es/hook/useFormData.d.ts.map +1 -1
  107. package/dist/es/hook/useFormData.js +1 -0
  108. package/dist/es/hook/useFormValidations.d.ts +3 -3
  109. package/dist/es/hook/useFormValidations.d.ts.map +1 -1
  110. package/dist/es/hook/useFormValidations.js +1 -0
  111. package/dist/es/type/config.d.ts +5 -5
  112. package/dist/es/type/config.d.ts.map +1 -1
  113. package/dist/es/type/extract.d.ts +5 -8
  114. package/dist/es/type/extract.d.ts.map +1 -1
  115. package/dist/es/type/field.d.ts +9 -8
  116. package/dist/es/type/field.d.ts.map +1 -1
  117. package/dist/es/type/form.d.ts +13 -11
  118. package/dist/es/type/form.d.ts.map +1 -1
  119. package/dist/es/type/form.js +9 -0
  120. package/dist/es/type/validation.d.ts +6 -5
  121. package/dist/es/type/validation.d.ts.map +1 -1
  122. package/dist/es/util/index.d.ts +10 -8
  123. package/dist/es/util/index.d.ts.map +1 -1
  124. package/dist/es/util/index.js +3 -1
  125. package/dist/es/validation/index.d.ts +2 -2
  126. package/dist/es/validation/index.d.ts.map +1 -1
  127. package/dist/es/validation/index.js +2 -1
  128. package/package.json +1 -1
@@ -1,18 +1,18 @@
1
1
  import { ReactNode } from "react";
2
2
  import { FormFieldConfig } from "./field";
3
- export interface FormRowConfig<T extends FormFieldConfig> {
3
+ export interface FormRowConfig<T extends FormFieldConfig<string, any, any>> {
4
4
  type: "row";
5
5
  content: readonly FormEntryConfig<T>[];
6
6
  }
7
- export interface FormSectionConfig<T extends FormFieldConfig> {
7
+ export interface FormSectionConfig<T extends FormFieldConfig<string, any, any>> {
8
8
  type: "section";
9
9
  content: readonly FormEntryConfig<T>[];
10
10
  }
11
- export interface FormCustomConfig<T extends FormFieldConfig> {
11
+ export interface FormCustomConfig<T extends FormFieldConfig<string, any, any>> {
12
12
  type: "custom";
13
13
  wrapper: (children: ReactNode) => ReactNode;
14
14
  content: readonly FormEntryConfig<T>[];
15
15
  }
16
- export type FormEntryConfig<T extends FormFieldConfig = FormFieldConfig> = FormCustomConfig<T> | FormSectionConfig<T> | FormRowConfig<T> | T;
17
- export type FormConfig<T extends FormFieldConfig = FormFieldConfig> = readonly FormEntryConfig<T>[];
16
+ export type FormEntryConfig<T extends FormFieldConfig<string, any, any>> = FormCustomConfig<T> | FormSectionConfig<T> | FormRowConfig<T> | T;
17
+ export type FormConfig<T extends FormFieldConfig<string, any, any>> = readonly FormEntryConfig<T>[];
18
18
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../type/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,eAAe;IACpD,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,eAAe;IACxD,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,eAAe;IACvD,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC;IAC5C,OAAO,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IACjE,gBAAgB,CAAC,CAAC,CAAC,GACnB,iBAAiB,CAAC,CAAC,CAAC,GACpB,aAAa,CAAC,CAAC,CAAC,GAChB,CAAC,CAAC;AAER,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../type/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACtE,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IAC1E,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACzE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC;IAC5C,OAAO,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IACjE,gBAAgB,CAAC,CAAC,CAAC,GACnB,iBAAiB,CAAC,CAAC,CAAC,GACpB,aAAa,CAAC,CAAC,CAAC,GAChB,CAAC,CAAC;AAER,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC"}
@@ -3,23 +3,20 @@ import { FormFieldConfig } from "./field";
3
3
  export type Prettify<T> = {
4
4
  [K in keyof T]: T[K];
5
5
  } & unknown;
6
- export type FormFieldInfer<Type, Config = FormFieldConfig> = Config extends {
6
+ export type FormFieldInfer<Type, Config = FormFieldConfig<string, any, any>> = Config extends {
7
7
  type: Type;
8
8
  initialValue?: infer InitialValue;
9
9
  } ? InitialValue : never;
10
10
  export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
11
- export type FormInfer<Config extends FormConfig, Acc = object> = Config extends readonly [
12
- infer Entry,
13
- ...infer Rest
14
- ] ? Entry extends {
11
+ export type FormInfer<Config extends FormConfig<AllConfigs>, AllConfigs extends FormFieldConfig<string, any, any>, Acc = object> = Config extends readonly [infer Entry, ...infer Rest] ? Entry extends {
15
12
  content: infer Content;
16
- } ? Prettify<UnionToIntersection<FormInfer<Extract<Content, FormConfig>, Acc> & FormInfer<Extract<Rest, FormConfig>, Acc>>> : Entry extends {
13
+ } ? Prettify<UnionToIntersection<FormInfer<Extract<Content, FormConfig<AllConfigs>>, AllConfigs, Acc> & FormInfer<Extract<Rest, FormConfig<AllConfigs>>, AllConfigs, Acc>>> : Entry extends {
17
14
  type: infer Type;
18
15
  name: infer Name;
19
16
  onInput?: infer InputFn;
20
- } ? InputFn extends (...args: any) => infer Input ? FormInfer<Extract<Rest, FormConfig>, Prettify<UnionToIntersection<{
17
+ } ? InputFn extends (...args: any) => infer Input ? FormInfer<Extract<Rest, FormConfig<AllConfigs>>, AllConfigs, Prettify<UnionToIntersection<{
21
18
  [key in keyof Input]?: FormFieldInfer<Type>;
22
- } & Acc>>> : FormInfer<Extract<Rest, FormConfig>, Prettify<UnionToIntersection<{
19
+ } & Acc>>> : FormInfer<Extract<Rest, FormConfig<AllConfigs>>, AllConfigs, Prettify<UnionToIntersection<{
23
20
  [key in Extract<Name, string>]?: FormFieldInfer<Type>;
24
21
  } & Acc>>> : Acc : Acc;
25
22
  //# sourceMappingURL=extract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../type/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvB,GAAG,OAAO,CAAC;AAEZ,MAAM,MAAM,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,IAAI,MAAM,SAAS;IACxE,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,YAAY,CAAC;CACrC,GACK,YAAY,GACZ,KAAK,CAAC;AAGZ,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAClF,CAAC,EAAE,MAAM,CAAC,KACT,IAAI,GACH,CAAC,GACD,KAAK,CAAC;AAEZ,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,UAAU,EAAE,GAAG,GAAG,MAAM,IAAI,MAAM,SAAS,SAAS;IACrF,MAAM,KAAK;IACX,GAAG,MAAM,IAAI;CAChB,GACK,KAAK,SAAS;IAAE,OAAO,EAAE,MAAM,OAAO,CAAA;CAAE,GACpC,QAAQ,CACJ,mBAAmB,CACf,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,GACxC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAChD,CACJ,GACD,KAAK,SAAS;IAAE,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;CAAE,GAE3E,OAAO,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,KAAK,GACzC,SAAS,CACL,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,EACzB,QAAQ,CACJ,mBAAmB,CACf;KACK,GAAG,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC;CAC9C,GAAG,GAAG,CACV,CACJ,CACJ,GACD,SAAS,CACL,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,EACzB,QAAQ,CACJ,mBAAmB,CACf;KACK,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC;CACxD,GAAG,GAAG,CACV,CACJ,CACJ,GACL,GAAG,GACT,GAAG,CAAC"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../type/extract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvB,GAAG,OAAO,CAAC;AAEZ,MAAM,MAAM,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,SAAS;IAC1F,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,YAAY,CAAC;CACrC,GACK,YAAY,GACZ,KAAK,CAAC;AAEZ,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAClF,CAAC,EAAE,MAAM,CAAC,KACT,IAAI,GACH,CAAC,GACD,KAAK,CAAC;AAEZ,MAAM,MAAM,SAAS,CACjB,MAAM,SAAS,UAAU,CAAC,UAAU,CAAC,EACrC,UAAU,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EACpD,GAAG,GAAG,MAAM,IACZ,MAAM,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAClD,KAAK,SAAS;IAAE,OAAO,EAAE,MAAM,OAAO,CAAA;CAAE,GACpC,QAAQ,CACJ,mBAAmB,CACf,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,GAChE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CACxE,CACJ,GACD,KAAK,SAAS;IAAE,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;CAAE,GAC3E,OAAO,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,KAAK,GACzC,SAAS,CACL,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EACrC,UAAU,EACV,QAAQ,CACJ,mBAAmB,CACf;KACK,GAAG,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC;CAC9C,GAAG,GAAG,CACV,CACJ,CACJ,GACD,SAAS,CACL,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EACrC,UAAU,EACV,QAAQ,CACJ,mBAAmB,CACf;KACK,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC;CACxD,GAAG,GAAG,CACV,CACJ,CACJ,GACL,GAAG,GACT,GAAG,CAAC"}
@@ -1,24 +1,25 @@
1
1
  import { FormFieldConditions } from "./condition";
2
2
  import { FormData, FormInputFunc } from "./form";
3
3
  import { FieldValidations, FormValidationStrategy } from "./validation";
4
- export type FormFieldConfig<Type extends string = string, FieldConfig = unknown, InitialValue = any> = {
5
- type: Type;
4
+ export type FormFieldConfig<Type extends string, FieldConfig, InitialValue> = {
5
+ type: Type extends infer U ? U : never;
6
6
  name: string;
7
- initialValue?: InitialValue;
7
+ initialValue?: InitialValue extends infer U ? U : never;
8
8
  conditions?: FormFieldConditions;
9
9
  validationStrategy?: FormValidationStrategy;
10
- validations?: readonly FieldValidations[];
10
+ validations?: readonly FieldValidations<FormFieldConfig<Type extends infer U ? U : never, FieldConfig extends infer U ? U : never, InitialValue extends infer U ? U : never>>[];
11
11
  columns?: number;
12
12
  categories?: readonly string[];
13
- valueFn?: (data: FormData) => any;
14
- onInput?: FormInputFunc<FormFieldConfig<Type, FieldConfig, InitialValue extends infer U ? U : never>>;
13
+ valueFn?: (data: FormData<FormFieldConfig<string, any, any>>) => any;
14
+ onInput?: FormInputFunc<FormFieldConfig<Type extends infer U ? U : never, FieldConfig extends infer U ? U : never, InitialValue extends infer U ? U : never>, InitialValue extends infer U ? U : never>;
15
15
  fieldConfig: FormFieldConfigFunc<FieldConfig>;
16
+ editStep?: number;
16
17
  };
17
18
  export type FormFieldConfigFunc<FieldConfig = unknown> = FieldConfig | ((props: {
18
19
  value: any;
19
- data: FormData;
20
+ data: FormData<FormFieldConfig<string, any, any>>;
20
21
  }) => FieldConfig);
21
- export type ResolveFieldConfigFunc<T extends FormFieldConfig> = T extends {
22
+ export type ResolveFieldConfigFunc<T extends FormFieldConfig<string, any, any>> = T extends {
22
23
  fieldConfig: infer U;
23
24
  } ? U extends (...args: any[]) => any ? never : T & {
24
25
  fieldConfig: U;
@@ -1 +1 @@
1
- {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../type/field.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,MAAM,eAAe,CACvB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,WAAW,GAAG,OAAO,EACrB,YAAY,GAAG,GAAG,IAClB;IACA,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,WAAW,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,GAAG,CAAC;IAClC,OAAO,CAAC,EAAE,aAAa,CACnB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAC/E,CAAC;IACF,WAAW,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,WAAW,GAAG,OAAO,IAC/C,WAAW,GACX,CAAC,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,KAAK,WAAW,CAAC,CAAC;AAE/D,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,SAAS;IACtE,WAAW,EAAE,MAAM,CAAC,CAAC;CACxB,GACK,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAC7B,KAAK,GACL,CAAC,GAAG;IAAE,WAAW,EAAE,CAAC,CAAA;CAAE,GAC1B,KAAK,CAAC"}
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../type/field.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,MAAM,eAAe,CAAC,IAAI,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,IAAI;IAC1E,IAAI,EAAE,IAAI,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,YAAY,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACxD,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,WAAW,CAAC,EAAE,SAAS,gBAAgB,CACnC,eAAe,CACX,IAAI,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,EAChC,WAAW,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,EACvC,YAAY,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAC3C,CACJ,EAAE,CAAC;IACJ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;IACrE,OAAO,CAAC,EAAE,aAAa,CACnB,eAAe,CACX,IAAI,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,EAChC,WAAW,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,EACvC,YAAY,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAC3C,EACD,YAAY,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAC3C,CAAC;IACF,WAAW,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,WAAW,GAAG,OAAO,IAC/C,WAAW,GACX,CAAC,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;CAAE,KAAK,WAAW,CAAC,CAAC;AAElG,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS;IACxF,WAAW,EAAE,MAAM,CAAC,CAAC;CACxB,GACK,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAC7B,KAAK,GACL,CAAC,GAAG;IAAE,WAAW,EAAE,CAAC,CAAA;CAAE,GAC1B,KAAK,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { JSXElementConstructor, PropsWithChildren, ReactNode } from "react";
2
- import { FormFieldConfig, ResolveFieldConfigFunc } from "./field";
2
+ import { FormFieldConfig } from "./field";
3
3
  import { FormError } from "./validation";
4
- export type FormData = Record<string, any>;
4
+ export type FormData<T extends FormFieldConfig<string, any, any>> = Record<string, T extends {
5
+ initialValue?: infer K;
6
+ } ? K : never>;
5
7
  export interface FormBuilderComponents {
6
8
  BuilderWrapper: JSXElementConstructor<PropsWithChildren>;
7
9
  SectionWrapper: JSXElementConstructor<PropsWithChildren>;
@@ -10,21 +12,21 @@ export interface FormBuilderComponents {
10
12
  columns?: number;
11
13
  }>>;
12
14
  }
13
- export interface FormBuilderChildrenProps {
15
+ export interface FormBuilderChildrenProps<T extends FormFieldConfig<string, any, any>> {
14
16
  value: any;
15
17
  error: FormError | undefined;
16
18
  onInput: (value: any) => void;
17
19
  onBlur: () => void;
18
- field: ResolveFieldConfigFunc<FormFieldConfig>;
20
+ field: T;
19
21
  }
20
- export interface FormBuilderProps {
22
+ export interface FormBuilderProps<T extends FormFieldConfig<string, any, any>> {
21
23
  Components?: Partial<FormBuilderComponents>;
22
- children(props: FormBuilderChildrenProps): ReactNode;
24
+ children(props: FormBuilderChildrenProps<T>): ReactNode;
23
25
  }
24
- export interface FormInputFuncProps<T extends FormFieldConfig> {
25
- value: T extends FormFieldConfig<any, any, infer V> ? V : any;
26
- field: T;
27
- previousData: FormData;
26
+ export interface FormInputFuncProps<Field extends FormFieldConfig<string, any, any>, InitialValue> {
27
+ value: InitialValue;
28
+ field: Field;
29
+ previousData: FormData<Field>;
28
30
  }
29
- export type FormInputFunc<T extends FormFieldConfig = FormFieldConfig> = (props: FormInputFuncProps<T>) => FormData;
31
+ export type FormInputFunc<Field extends FormFieldConfig<string, any, any>, InitialValue> = (props: FormInputFuncProps<Field, InitialValue>) => FormData<FormFieldConfig<string, any, any>>;
30
32
  //# sourceMappingURL=form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../type/form.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IAClC,cAAc,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACzD,cAAc,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACzD,UAAU,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACrD,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAChF;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,gBAAgB;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,wBAAwB,GAAG,SAAS,CAAC;CACxD;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,eAAe;IACzD,KAAK,EAAE,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC9D,KAAK,EAAE,CAAC,CAAC;IACT,YAAY,EAAE,QAAQ,CAAC;CAC1B;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI,CACrE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAC3B,QAAQ,CAAC"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../type/form.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CACtE,MAAM,EACN,CAAC,SAAS;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CACnD,CAAC;AAEF,MAAM,WAAW,qBAAqB;IAClC,cAAc,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACzD,cAAc,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACzD,UAAU,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACrD,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAChF;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACjF,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACzE,UAAU,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC3D;AAED,MAAM,WAAW,kBAAkB,CAAC,KAAK,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY;IAC7F,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY,IAAI,CACvF,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,KAC7C,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC"}
@@ -1,2 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Type 'FormFieldText' is not assignable to type 'FormEntryConfig<FormFieldConfig<string, unknown, unknown, FormFieldText | FormFieldNumber>>'.
4
+ // Type 'FormFieldText' is not assignable to type 'FormFieldConfig<string, unknown, unknown, FormFieldText | FormFieldNumber>'.
5
+ // Types of property 'onInput' are incompatible.
6
+ // Type 'FormInputFunc<FormFieldConfig<"text", { label: string; }, string, never>, never, string> | undefined' is not assignable to type 'FormInputFunc<FormFieldConfig<string, unknown, unknown, FormFieldText | FormFieldNumber>, FormFieldText | FormFieldNumber, unknown> | undefined'.
7
+ // Type 'FormInputFunc<FormFieldConfig<"text", { label: string; }, string, never>, never, string>' is not assignable to type 'FormInputFunc<FormFieldConfig<string, unknown, unknown, FormFieldText | FormFieldNumber>, FormFieldText | FormFieldNumber, unknown>'.
8
+ // Types of parameters 'props' and 'props' are incompatible.
9
+ // Type 'FormInputFuncProps<FormFieldConfig<string, unknown, unknown, FormFieldText | FormFieldNumber>, FormFieldText | FormFieldNumber, unknown>' is not assignable to type 'FormInputFuncProps<FormFieldConfig<"text", { label: string; }, string, never>, never, string>'.
10
+ // Types of property 'value' are incompatible.
11
+ // Type 'unknown' is not assignable to type 'string'.ts(2322)
@@ -1,14 +1,15 @@
1
+ import { FormFieldConfig } from "./field";
1
2
  import { FormData } from "./form";
2
3
  export type FormValidationStrategy = "blur" | "input" | "manual";
3
4
  export type FormError = string | boolean;
4
5
  export type FormErrors = Record<string, FormError>;
5
- export type FormFieldValidationFunction = (props: {
6
+ export type FormFieldValidationFunction<T extends FormFieldConfig<string, any, any>> = (props: {
6
7
  value: any;
7
- data: FormData;
8
+ data: FormData<T>;
8
9
  }) => boolean;
9
- export type FormFieldValidation = boolean | RegExp | FormFieldValidationFunction;
10
- export interface FieldValidations {
11
- validation: FormFieldValidation;
10
+ export type FormFieldValidation<T extends FormFieldConfig<string, any, any>> = boolean | RegExp | FormFieldValidationFunction<T>;
11
+ export interface FieldValidations<T extends FormFieldConfig<string, any, any>> {
12
+ validation: FormFieldValidation<T>;
12
13
  message?: string;
13
14
  }
14
15
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../type/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAGnD,MAAM,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,KAAK,OAAO,CAAC;AAE7F,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,2BAA2B,CAAC;AAEjF,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../type/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;IAC3F,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CACrB,KAAK,OAAO,CAAC;AAEd,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IACrE,OAAO,GACP,MAAM,GACN,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAErC,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACzE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -1,11 +1,13 @@
1
- import { FormConfig, FormData, FormEntryConfig, FormFieldConfig, ResolveFieldConfigFunc } from "../type";
1
+ import { FormConfig, FormData, FormEntryConfig, FormFieldConfig } from "../type";
2
2
  export declare function eitherOr<const T>(config: T | false | undefined | null | 0 | ""): T;
3
3
  export declare function eitherOr<const Either, const Or>(condition: boolean, either: Either, or: Or): Either | Or;
4
- export declare const createFormConfig: <const T extends FormConfig>(config: T) => T;
5
- export declare const fieldConfigFromFormField: <T extends FormFieldConfig>({ name, fieldConfig }: T, data: FormData) => ResolveFieldConfigFunc<T>["fieldConfig"];
6
- export declare const fieldsFromConfig: (config: FormConfig) => Record<string, FormFieldConfig>;
7
- export declare const initialValuesFromConfig: (config: FormConfig) => FormData;
8
- export declare const mapFieldConfigs: (entries: FormConfig, callbackFn: <T extends FormFieldConfig>(field: T, index: number) => T) => FormConfig;
9
- export declare const reduceFieldConfigs: <T extends Record<string | number, unknown>>(entries: readonly FormEntryConfig[], callbackFn: <F extends FormFieldConfig>(acc: T, field: F, index: number) => T) => T;
10
- export declare const someFieldConfigs: (entries: readonly FormEntryConfig[], callbackFn: <T extends FormFieldConfig>(field: T, index: number) => boolean) => boolean;
4
+ export declare const createFormConfig: <const T extends FormFieldConfig<string, any, any>>(config: FormConfig<T>) => FormConfig<T>;
5
+ export declare const fieldConfigFromFormField: <T extends FormFieldConfig<string, any, any>>({ name, fieldConfig }: T, data: FormData<T>) => T["fieldConfig"];
6
+ export declare const fieldsFromConfig: <T extends FormFieldConfig<string, any, any>>(config: FormConfig<T>) => { [K in T["name"]]: Extract<T, {
7
+ name: K;
8
+ }>; };
9
+ export declare const initialValuesFromConfig: <T extends FormFieldConfig<string, any, any>>(config: FormConfig<T>) => FormData<T>;
10
+ export declare const mapFieldConfigs: <T extends FormFieldConfig<string, any, any>>(entries: FormConfig<T>, callbackFn: (field: T, index: number) => T) => FormConfig<T>;
11
+ export declare const reduceFieldConfigs: <T extends Record<string | number, any>, U extends FormFieldConfig<string, any, any>>(entries: FormConfig<U>, callbackFn: (acc: T, field: U, index: number) => T) => T;
12
+ export declare const someFieldConfigs: (entries: readonly FormEntryConfig<any>[], callbackFn: <T extends FormFieldConfig<string, any, any>>(field: T, index: number) => boolean) => boolean;
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../util/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,UAAU,EACV,QAAQ,EACR,eAAe,EACf,eAAe,EACf,sBAAsB,EACzB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpF,wBAAgB,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAC3C,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE,GACP,MAAM,GAAG,EAAE,CAAC;AAaf,eAAO,MAAM,gBAAgB,SAAU,CAAC,SAAS,UAAU,UAAU,CAAC,KACZ,CAAC,CAAC;AAE5D,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,eAAe,yBACvC,CAAC,QAClB,QAAQ,KACf,sBAAsB,CAAC,CAAC,CAAC,CAAC,aAAa,CAIzC,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAY,UAAU,KAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAKnF,CAAC;AAEF,eAAO,MAAM,uBAAuB,WAAY,UAAU,KAAG,QAe5D,CAAC;AAEF,eAAO,MAAM,eAAe,YACf,UAAU,cACP,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,KACtE,UAkBF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,WAChE,SAAS,eAAe,EAAE,cACvB,CAAC,CAAC,SAAS,eAAe,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,KAC9E,CAeF,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAChB,SAAS,eAAe,EAAE,cACvB,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,KAC5E,OAWF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../util/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEjF,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpF,wBAAgB,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAC3C,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE,GACP,MAAM,GAAG,EAAE,CAAC;AAaf,eAAO,MAAM,gBAAgB,SAAU,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,UACtE,UAAU,CAAC,CAAC,CAAC,kBACmB,CAAC;AAE7C,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,yBACzD,CAAC,QAClB,QAAQ,CAAC,CAAC,CAAC,KAClB,CAAC,CAAC,aAAa,CAIjB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,UAChE,UAAU,CAAC,CAAC,CAAC,KACtB,GACE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,GAY5C,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,UACvE,UAAU,CAAC,CAAC,CAAC,KACtB,QAAQ,CAAC,CAAC,CAeZ,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,WAC9D,UAAU,CAAC,CAAC,CAAC,cACV,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,KAC3C,UAAU,CAAC,CAAC,CAkBd,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC3B,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EACtC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,WAElC,UAAU,CAAC,CAAC,CAAC,cACV,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,KACnD,CAeF,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAChB,SAAS,eAAe,CAAC,GAAG,CAAC,EAAE,cAC5B,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,KAC9F,OAWF,CAAC"}
@@ -5,8 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.someFieldConfigs = exports.reduceFieldConfigs = exports.mapFieldConfigs = exports.initialValuesFromConfig = exports.fieldsFromConfig = exports.fieldConfigFromFormField = exports.createFormConfig = void 0;
7
7
  exports.eitherOr = eitherOr;
8
- const guard_1 = require("guard");
8
+ /* eslint-disable @typescript-eslint/no-explicit-any */
9
9
  const lodash_merge_1 = __importDefault(require("lodash.merge"));
10
+ const guard_1 = require("../guard");
10
11
  function eitherOr(configOrCondition, either, or) {
11
12
  if (typeof configOrCondition === "boolean") {
12
13
  return configOrCondition ? either : or;
@@ -25,6 +26,7 @@ const fieldConfigFromFormField = ({ name, fieldConfig }, data) => {
25
26
  exports.fieldConfigFromFormField = fieldConfigFromFormField;
26
27
  const fieldsFromConfig = (config) => {
27
28
  return (0, exports.reduceFieldConfigs)(config, (acc, field) => {
29
+ // @ts-expect-error: ts does not understand this
28
30
  acc[field.name] = field;
29
31
  return acc;
30
32
  });
@@ -1,4 +1,4 @@
1
1
  import { FormConfig, FormData, FormErrors, FormFieldConfig } from "../type";
2
- export declare const handleValidateConfig: (config: FormConfig, fieldConfigs: Record<string, FormFieldConfig>, data: FormData) => FormErrors;
3
- export declare const handleValidateField: ({ name, validations, conditions, valueFn }: FormFieldConfig, fieldConfigs: Record<string, FormFieldConfig>, data: FormData) => FormErrors;
2
+ export declare const handleValidateConfig: (config: FormConfig<FormFieldConfig<string, any, any>>, fieldConfigs: Record<string, FormFieldConfig<string, any, any>>, data: FormData<FormFieldConfig<string, any, any>>) => FormErrors;
3
+ export declare const handleValidateField: ({ name, validations, conditions, valueFn }: FormFieldConfig<string, any, any>, fieldConfigs: Record<string, FormFieldConfig<string, any, any>>, data: FormData<FormFieldConfig<string, any, any>>) => FormErrors;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../validation/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAmB,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE7F,eAAO,MAAM,oBAAoB,WACrB,UAAU,gBACJ,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,QACvC,QAAQ,KACf,UAYF,CAAC;AAiBF,eAAO,MAAM,mBAAmB,+CACgB,eAAe,gBAC7C,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,QACvC,QAAQ,KACf,UA8BF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../validation/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAmB,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE7F,eAAO,MAAM,oBAAoB,WACrB,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,gBACvC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QACzD,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAClD,UAYF,CAAC;AAiBF,eAAO,MAAM,mBAAmB,+CACgB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,gBAC/D,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QACzD,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAClD,UA8BF,CAAC"}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handleValidateField = exports.handleValidateConfig = void 0;
4
- const guard_1 = require("guard");
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
5
  const condition_1 = require("../condition");
6
+ const guard_1 = require("../guard");
6
7
  const handleValidateConfig = (config, fieldConfigs, data) => {
7
8
  const errors = {};
8
9
  config.forEach(entry => {
@@ -1,3 +1,3 @@
1
- import { FormBuilderProps } from "../type";
2
- export declare const FormBuilder: import("react").NamedExoticComponent<FormBuilderProps>;
1
+ import { FormBuilderProps, FormFieldConfig } from "../type";
2
+ export declare const FormBuilder: <T extends FormFieldConfig<string, any, any>>({ Components, children, }: FormBuilderProps<T>) => import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=FormBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../../../components/FormBuilder.tsx"],"names":[],"mappings":"AASA,OAAO,EAAyB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAUlE,eAAO,MAAM,WAAW,wDAoBvB,CAAC"}
1
+ {"version":3,"file":"FormBuilder.d.ts","sourceRoot":"","sources":["../../../components/FormBuilder.tsx"],"names":[],"mappings":"AASA,OAAO,EAAyB,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAWnF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,6BAGpE,gBAAgB,CAAC,CAAC,CAAC,4CAErB,CAAC"}
@@ -13,10 +13,17 @@ const DefaultComponents = {
13
13
  RowWrapper: style_1.DefaultRowWrapper,
14
14
  FieldWrapper: style_1.DefaultFieldWrapper,
15
15
  };
16
- exports.FormBuilder = (0, react_1.memo)(({ Components = DefaultComponents, children }) => {
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ const FormBuilder = ({ Components = DefaultComponents, children, }) => {
18
+ return (0, jsx_runtime_1.jsx)(FormBuilderComponent, { Components: Components, children: children });
19
+ };
20
+ exports.FormBuilder = FormBuilder;
21
+ const FormBuilderComponent = (0, react_1.memo)(
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ ({ Components = DefaultComponents, children, }) => {
17
24
  const { BuilderWrapper } = Components;
18
25
  const { config } = (0, react_1.useContext)(context_1.FormConfigContext);
19
26
  const Wrapper = BuilderWrapper ?? style_1.DefaultBuilderWrapper;
20
27
  return ((0, jsx_runtime_1.jsx)(Wrapper, { children: config.map((entry, index) => ((0, jsx_runtime_1.jsx)(FormEntry_1.FormEntry, { entry: entry, Components: { ...DefaultComponents, ...Components }, children: children }, index + ((0, guard_1.isFormFieldConfig)(entry) ? entry.name : "")))) }));
21
28
  });
22
- exports.FormBuilder.displayName = "FormBuilder";
29
+ FormBuilderComponent.displayName = "FormBuilderComponent";
@@ -1,9 +1,9 @@
1
1
  import { FormBuilderComponents, FormBuilderProps, FormCustomConfig, FormFieldConfig } from "../type";
2
- interface FormCustomProps<T extends FormFieldConfig> {
2
+ interface FormCustomProps<T extends FormFieldConfig<string, any, any>> {
3
3
  Components: FormBuilderComponents;
4
4
  custom: FormCustomConfig<T>;
5
- children: FormBuilderProps["children"];
5
+ children: FormBuilderProps<T>["children"];
6
6
  }
7
- export declare const FormCustom: <T extends FormFieldConfig>({ Components, custom, children, }: FormCustomProps<T>) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const FormCustom: <T extends FormFieldConfig<string, any, any>>({ Components, custom, children, }: FormCustomProps<T>) => import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=FormCustom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormCustom.d.ts","sourceRoot":"","sources":["../../../components/FormCustom.tsx"],"names":[],"mappings":"AACA,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAClB,MAAM,SAAS,CAAC;AAGjB,UAAU,eAAe,CAAC,CAAC,SAAS,eAAe;IAC/C,UAAU,EAAE,qBAAqB,CAAC;IAClC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,eAAe,qCAIjD,eAAe,CAAC,CAAC,CAAC,4CAYpB,CAAC"}
1
+ {"version":3,"file":"FormCustom.d.ts","sourceRoot":"","sources":["../../../components/FormCustom.tsx"],"names":[],"mappings":"AACA,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAClB,MAAM,SAAS,CAAC;AAIjB,UAAU,eAAe,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACjE,UAAU,EAAE,qBAAqB,CAAC;IAClC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC7C;AAGD,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,qCAInE,eAAe,CAAC,CAAC,CAAC,4CAYpB,CAAC"}
@@ -7,6 +7,7 @@ exports.FormCustom = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const react_1 = __importDefault(require("react"));
9
9
  const FormEntry_1 = require("./FormEntry");
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
11
  const FormCustom = ({ Components, custom, children, }) => {
11
12
  return ((0, jsx_runtime_1.jsx)(react_1.default.Fragment, { children: custom.wrapper(custom.content.map((entry, index) => ((0, jsx_runtime_1.jsx)(FormEntry_1.FormEntry, { entry: entry, Components: Components, children: children }, index)))) }));
12
13
  };
@@ -1,10 +1,9 @@
1
- import { FC } from "react";
2
- import { FormBuilderComponents, FormBuilderProps, FormEntryConfig } from "../type";
3
- interface FormEntryProps {
1
+ import { FormBuilderComponents, FormBuilderProps, FormEntryConfig, FormFieldConfig } from "../type";
2
+ interface FormEntryProps<T extends FormFieldConfig<string, any, any>> {
4
3
  Components: FormBuilderComponents;
5
- entry: FormEntryConfig;
6
- children: FormBuilderProps["children"];
4
+ entry: FormEntryConfig<T>;
5
+ children: FormBuilderProps<T>["children"];
7
6
  }
8
- export declare const FormEntry: FC<FormEntryProps>;
7
+ export declare const FormEntry: <T extends FormFieldConfig<string, any, any>>({ Components, entry, children, }: FormEntryProps<T>) => import("react/jsx-runtime").JSX.Element | null;
9
8
  export {};
10
9
  //# sourceMappingURL=FormEntry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormEntry.d.ts","sourceRoot":"","sources":["../../../components/FormEntry.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAoC,MAAM,OAAO,CAAC;AAI7D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAY,eAAe,EAAE,MAAM,SAAS,CAAC;AAO7F,UAAU,cAAc;IACpB,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA2DxC,CAAC"}
1
+ {"version":3,"file":"FormEntry.d.ts","sourceRoot":"","sources":["../../../components/FormEntry.tsx"],"names":[],"mappings":"AAIA,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAEhB,eAAe,EACf,eAAe,EAClB,MAAM,SAAS,CAAC;AAQjB,UAAU,cAAc,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IAChE,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC7C;AAGD,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,oCAIlE,cAAc,CAAC,CAAC,CAAC,mDA2DnB,CAAC"}
@@ -3,15 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FormEntry = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
- const guard_1 = require("guard");
7
6
  const condition_1 = require("../condition");
8
7
  const context_1 = require("../context");
8
+ const guard_1 = require("../guard");
9
9
  const util_1 = require("../util");
10
10
  const FormCustom_1 = require("./FormCustom");
11
11
  const FormField_1 = require("./FormField");
12
12
  const FormRow_1 = require("./FormRow");
13
13
  const FormSection_1 = require("./FormSection");
14
- const FormEntry = ({ Components, entry, children }) => {
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ const FormEntry = ({ Components, entry, children, }) => {
15
16
  const { data, fieldConfigs } = (0, context_1.useForm)();
16
17
  const getHasChildren = (0, react_1.useCallback)((formData) => {
17
18
  switch (true) {
@@ -1,10 +1,9 @@
1
- import React from "react";
2
1
  import { FormBuilderComponents, FormBuilderProps, FormFieldConfig } from "../type";
3
- interface FormFieldProps {
2
+ interface FormFieldProps<T extends FormFieldConfig<string, any, any>> {
4
3
  Components: FormBuilderComponents;
5
- field: FormFieldConfig;
6
- children: FormBuilderProps["children"];
4
+ field: T;
5
+ children: FormBuilderProps<T>["children"];
7
6
  }
8
- export declare const FormField: React.FC<FormFieldProps>;
7
+ export declare const FormField: <T extends FormFieldConfig<string, any, any>>({ Components, field, children, }: FormFieldProps<T>) => import("react/jsx-runtime").JSX.Element;
9
8
  export {};
10
9
  //# sourceMappingURL=FormField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormField.d.ts","sourceRoot":"","sources":["../../../components/FormField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAIpD,OAAO,EAEH,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EAClB,MAAM,SAAS,CAAC;AAEjB,UAAU,cAAc;IACpB,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA4G9C,CAAC"}
1
+ {"version":3,"file":"FormField.d.ts","sourceRoot":"","sources":["../../../components/FormField.tsx"],"names":[],"mappings":"AAIA,OAAO,EAEH,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EAClB,MAAM,SAAS,CAAC;AAGjB,UAAU,cAAc,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IAChE,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC7C;AAGD,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,oCAIlE,cAAc,CAAC,CAAC,CAAC,4CA4GnB,CAAC"}
@@ -6,7 +6,8 @@ const react_1 = require("react");
6
6
  const context_1 = require("../context");
7
7
  const useFormData_1 = require("../hook/useFormData");
8
8
  const useFormErrors_1 = require("../hook/useFormErrors");
9
- const FormField = ({ Components, field, children }) => {
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ const FormField = ({ Components, field, children, }) => {
10
11
  const { editData, validationStrategy: contextValidationStrategy, validateField, onInput, } = (0, context_1.useForm)();
11
12
  const { name, columns, conditions, validations, valueFn, validationStrategy: fieldValidationStrategy, onInput: onFieldInput, fieldConfig: fieldConfigFunc, } = field;
12
13
  const validationStrategy = (0, react_1.useMemo)(() => [fieldValidationStrategy, contextValidationStrategy], [fieldValidationStrategy, contextValidationStrategy]);
@@ -1,9 +1,9 @@
1
1
  import { FormBuilderComponents, FormBuilderProps, FormFieldConfig, FormRowConfig } from "../type";
2
- interface FormRowProps<T extends FormFieldConfig> {
2
+ interface FormRowProps<T extends FormFieldConfig<string, any, any>> {
3
3
  Components: FormBuilderComponents;
4
4
  row: FormRowConfig<T>;
5
- children: FormBuilderProps["children"];
5
+ children: FormBuilderProps<T>["children"];
6
6
  }
7
- export declare const FormRow: <T extends FormFieldConfig>({ Components, row, children, }: FormRowProps<T>) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const FormRow: <T extends FormFieldConfig<string, any, any>>({ Components, row, children, }: FormRowProps<T>) => import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=FormRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormRow.d.ts","sourceRoot":"","sources":["../../../components/FormRow.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGlG,UAAU,YAAY,CAAC,CAAC,SAAS,eAAe;IAC5C,UAAU,EAAE,qBAAqB,CAAC;IAClC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,eAAe,kCAI9C,YAAY,CAAC,CAAC,CAAC,4CAgBjB,CAAC"}
1
+ {"version":3,"file":"FormRow.d.ts","sourceRoot":"","sources":["../../../components/FormRow.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIlG,UAAU,YAAY,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IAC9D,UAAU,EAAE,qBAAqB,CAAC;IAClC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACtB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC7C;AAGD,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,kCAIhE,YAAY,CAAC,CAAC,CAAC,4CAgBjB,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FormRow = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const FormEntry_1 = require("./FormEntry");
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
7
  const FormRow = ({ Components, row, children, }) => {
7
8
  const { RowWrapper } = Components;
8
9
  if (!RowWrapper) {
@@ -1,9 +1,9 @@
1
1
  import { FormBuilderComponents, FormBuilderProps, FormFieldConfig, FormSectionConfig } from "../type";
2
- interface FormSectionProps<T extends FormFieldConfig> {
2
+ interface FormSectionProps<T extends FormFieldConfig<string, any, any>> {
3
3
  Components: FormBuilderComponents;
4
4
  section: FormSectionConfig<T>;
5
- children: FormBuilderProps["children"];
5
+ children: FormBuilderProps<T>["children"];
6
6
  }
7
- export declare const FormSection: <T extends FormFieldConfig>({ Components, section, children, }: FormSectionProps<T>) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const FormSection: <T extends FormFieldConfig<string, any, any>>({ Components, section, children, }: FormSectionProps<T>) => import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=FormSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormSection.d.ts","sourceRoot":"","sources":["../../../components/FormSection.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAGjB,UAAU,gBAAgB,CAAC,CAAC,SAAS,eAAe;IAChD,UAAU,EAAE,qBAAqB,CAAC;IAClC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,eAAe,sCAIlD,gBAAgB,CAAC,CAAC,CAAC,4CAgBrB,CAAC"}
1
+ {"version":3,"file":"FormSection.d.ts","sourceRoot":"","sources":["../../../components/FormSection.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAIjB,UAAU,gBAAgB,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IAClE,UAAU,EAAE,qBAAqB,CAAC;IAClC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;CAC7C;AAGD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,sCAIpE,gBAAgB,CAAC,CAAC,CAAC,4CAgBrB,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FormSection = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const FormEntry_1 = require("./FormEntry");
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
7
  const FormSection = ({ Components, section, children, }) => {
7
8
  const { SectionWrapper } = Components;
8
9
  if (!SectionWrapper) {
@@ -1,3 +1,3 @@
1
1
  import { FormData, FormFieldConfig } from "../type";
2
- export declare const fieldFulfillsConditions: ({ conditions }: Pick<FormFieldConfig, "conditions">, fieldConfigs: Record<string, FormFieldConfig>, data: FormData) => boolean;
2
+ export declare const fieldFulfillsConditions: <T extends FormFieldConfig<string, any, any>>({ conditions }: Pick<T, "conditions">, fieldConfigs: Record<string, T>, data: FormData<T>) => boolean;
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../condition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEpE,eAAO,MAAM,uBAAuB,mBAChB,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,gBACrC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,QACvC,QAAQ,KACf,OAUF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../condition/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,QAAQ,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEpE,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,kBAC/D,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,gBACvB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,QACzB,QAAQ,CAAC,CAAC,CAAC,KAClB,OAUF,CAAC"}
@@ -1,5 +1,6 @@
1
+ import { FormFieldConfig } from "type";
1
2
  export declare const FormProvider: {
2
- (props: import("./data").FormProviderProps & {
3
+ (props: import("./data").FormProviderProps<FormFieldConfig<string, any, any>> & {
3
4
  children?: import("react").ReactNode | undefined;
4
5
  }): import("react/jsx-runtime").JSX.Element;
5
6
  displayName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"FormProvider.d.ts","sourceRoot":"","sources":["../../../context/FormProvider.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY;;;;;CA2BxB,CAAC"}
1
+ {"version":3,"file":"FormProvider.d.ts","sourceRoot":"","sources":["../../../context/FormProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAQvC,eAAO,MAAM,YAAY;;;;;CA2BxB,CAAC"}
@@ -8,6 +8,7 @@ const useFormValidations_1 = require("../hook/useFormValidations");
8
8
  const util_1 = require("../util");
9
9
  const context_1 = require("./context");
10
10
  const context_2 = require("./data/context");
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
12
  exports.FormProvider = (0, withFormData_1.withFormData)(({ config, validationStrategy = "blur", onInput: internalOnInput, inheritData, children }) => {
12
13
  const externalForm = (0, context_1.useForm)();
13
14
  const { data, editData } = (0, react_1.useContext)(context_2.FormDataContext);
@@ -2,14 +2,16 @@ import { Context } from "react";
2
2
  import { FormStore } from "../hook/useFormStore";
3
3
  import { FormValidations } from "../hook/useFormValidations";
4
4
  import { DeepPartial, FormData, FormFieldConfig, FormInputFunc, FormValidationStrategy } from "../type";
5
- interface FormContext<TData = FormData> extends FormValidations {
5
+ interface FormContextProps<U extends FormFieldConfig<string, any, any>, TData = FormData<U>> extends FormValidations {
6
6
  data: FormStore<TData>;
7
7
  editData: FormStore<DeepPartial<TData>>;
8
- fieldConfigs: Record<string, FormFieldConfig>;
8
+ fieldConfigs: Record<string, U>;
9
9
  validationStrategy: FormValidationStrategy;
10
- onInput?: FormInputFunc;
10
+ onInput?: FormInputFunc<U, U extends {
11
+ initialValue?: infer V;
12
+ } ? V : never>;
11
13
  }
12
- export declare const FormContext: Context<FormContext<FormData>>;
13
- export declare const useForm: <T = FormData>() => FormContext<T>;
14
+ export declare const FormContext: Context<FormContextProps<FormFieldConfig<string, any, any>, FormData<FormFieldConfig<string, any, any>>>>;
15
+ export declare const useForm: <U extends FormFieldConfig<string, any, any>, TData = FormData<U>>() => FormContextProps<U, TData>;
14
16
  export {};
15
17
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../context/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA6B,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACH,WAAW,EACX,QAAQ,EACR,eAAe,EACf,aAAa,EACb,sBAAsB,EACzB,MAAM,SAAS,CAAC;AAEjB,UAAU,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAE,SAAQ,eAAe;IAC3D,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,eAAO,MAAM,WAAW,gCAAkE,CAAC;AAE3F,eAAO,MAAM,OAAO,GAAI,CAAC,gCAAoE,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../context/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA6B,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACH,WAAW,EACX,QAAQ,EACR,eAAe,EACf,aAAa,EACb,sBAAsB,EACzB,MAAM,SAAS,CAAC;AAEjB,UAAU,gBAAgB,CAAC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CACvF,SAAQ,eAAe;IACvB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChC,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;CAChF;AAED,eAAO,MAAM,WAAW,2GAEvB,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,+CACG,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useForm = exports.FormContext = void 0;
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
5
  const react_1 = require("react");
5
6
  exports.FormContext = (0, react_1.createContext)(undefined);
6
7
  const useForm = () => (0, react_1.useContext)(exports.FormContext);