@fuf-stack/uniform 0.6.0 → 0.8.0

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 (79) hide show
  1. package/dist/CheckboxGroup/index.cjs +13 -0
  2. package/dist/CheckboxGroup/index.cjs.map +1 -0
  3. package/dist/CheckboxGroup/index.d.cts +7 -0
  4. package/dist/CheckboxGroup/index.d.ts +7 -0
  5. package/dist/CheckboxGroup/index.js +13 -0
  6. package/dist/CheckboxGroup/index.js.map +1 -0
  7. package/dist/CheckboxGroup-BYsQ0A0q.d.cts +32 -0
  8. package/dist/CheckboxGroup-BYsQ0A0q.d.ts +32 -0
  9. package/dist/FieldArray/index.cjs +3 -3
  10. package/dist/FieldArray/index.js +2 -2
  11. package/dist/Form/index.cjs +3 -3
  12. package/dist/Form/index.js +2 -2
  13. package/dist/Input/index.cjs +3 -3
  14. package/dist/Input/index.js +2 -2
  15. package/dist/RadioGroup/index.cjs +3 -3
  16. package/dist/RadioGroup/index.js +2 -2
  17. package/dist/Select/index.cjs +3 -3
  18. package/dist/Select/index.js +2 -2
  19. package/dist/SubmitButton/index.cjs +3 -3
  20. package/dist/SubmitButton/index.js +2 -2
  21. package/dist/Switch/index.cjs +3 -3
  22. package/dist/Switch/index.js +2 -2
  23. package/dist/TextArea/index.cjs +3 -3
  24. package/dist/TextArea/index.js +2 -2
  25. package/dist/{chunk-53AGVLUG.cjs → chunk-3ROKDX67.cjs} +4 -4
  26. package/dist/{chunk-53AGVLUG.cjs.map → chunk-3ROKDX67.cjs.map} +1 -1
  27. package/dist/{chunk-57OFVPRD.js → chunk-5I5DGCXC.js} +2 -2
  28. package/dist/{chunk-XJ3JTLXZ.cjs → chunk-7HXB2552.cjs} +3 -3
  29. package/dist/{chunk-XJ3JTLXZ.cjs.map → chunk-7HXB2552.cjs.map} +1 -1
  30. package/dist/{chunk-QD6IQL6U.js → chunk-7ZIHJMDO.js} +2 -2
  31. package/dist/{chunk-FASB7HG3.cjs → chunk-AASC67WZ.cjs} +3 -3
  32. package/dist/{chunk-FASB7HG3.cjs.map → chunk-AASC67WZ.cjs.map} +1 -1
  33. package/dist/{chunk-BCMPSLSG.js → chunk-BNJP47R7.js} +58 -17
  34. package/dist/chunk-BNJP47R7.js.map +1 -0
  35. package/dist/{chunk-JFCOC5TW.cjs → chunk-C33YNBBZ.cjs} +23 -41
  36. package/dist/chunk-C33YNBBZ.cjs.map +1 -0
  37. package/dist/{chunk-WNESYY6E.cjs → chunk-DBJCKVYN.cjs} +3 -3
  38. package/dist/{chunk-WNESYY6E.cjs.map → chunk-DBJCKVYN.cjs.map} +1 -1
  39. package/dist/{chunk-WRYE2CF5.cjs → chunk-DS4ALUMK.cjs} +3 -3
  40. package/dist/{chunk-WRYE2CF5.cjs.map → chunk-DS4ALUMK.cjs.map} +1 -1
  41. package/dist/{chunk-OSEU4ZUE.cjs → chunk-DVWR5KIG.cjs} +3 -3
  42. package/dist/{chunk-OSEU4ZUE.cjs.map → chunk-DVWR5KIG.cjs.map} +1 -1
  43. package/dist/chunk-EWFS7ZAG.cjs +96 -0
  44. package/dist/chunk-EWFS7ZAG.cjs.map +1 -0
  45. package/dist/{chunk-BGSQU5EH.js → chunk-GYD46GIR.js} +2 -2
  46. package/dist/chunk-J5IMU4UG.cjs +128 -0
  47. package/dist/chunk-J5IMU4UG.cjs.map +1 -0
  48. package/dist/{chunk-KC3PZFGE.js → chunk-PHFPS7PC.js} +2 -2
  49. package/dist/{chunk-YAVU7ZYD.js → chunk-QTDKBHZP.js} +2 -2
  50. package/dist/{chunk-Y4CFVCUN.js → chunk-TFDWXKS6.js} +22 -40
  51. package/dist/chunk-TFDWXKS6.js.map +1 -0
  52. package/dist/{chunk-JR7MAHBR.cjs → chunk-UAPCZKBD.cjs} +3 -3
  53. package/dist/{chunk-JR7MAHBR.cjs.map → chunk-UAPCZKBD.cjs.map} +1 -1
  54. package/dist/{chunk-3SSUEUB5.js → chunk-UPMPPGVK.js} +2 -2
  55. package/dist/{chunk-3K4JQTPQ.js → chunk-XEX4SQAM.js} +2 -2
  56. package/dist/chunk-ZCHYXHBI.js +96 -0
  57. package/dist/chunk-ZCHYXHBI.js.map +1 -0
  58. package/dist/hooks/index.cjs +2 -2
  59. package/dist/hooks/index.d.cts +10 -9
  60. package/dist/hooks/index.d.ts +10 -9
  61. package/dist/hooks/index.js +1 -1
  62. package/dist/index.cjs +16 -12
  63. package/dist/index.cjs.map +1 -1
  64. package/dist/index.d.cts +1 -1
  65. package/dist/index.d.ts +1 -1
  66. package/dist/index.js +18 -14
  67. package/package.json +9 -4
  68. package/dist/chunk-BCMPSLSG.js.map +0 -1
  69. package/dist/chunk-JFCOC5TW.cjs.map +0 -1
  70. package/dist/chunk-WQRM7G4C.cjs +0 -87
  71. package/dist/chunk-WQRM7G4C.cjs.map +0 -1
  72. package/dist/chunk-Y4CFVCUN.js.map +0 -1
  73. /package/dist/{chunk-57OFVPRD.js.map → chunk-5I5DGCXC.js.map} +0 -0
  74. /package/dist/{chunk-QD6IQL6U.js.map → chunk-7ZIHJMDO.js.map} +0 -0
  75. /package/dist/{chunk-BGSQU5EH.js.map → chunk-GYD46GIR.js.map} +0 -0
  76. /package/dist/{chunk-KC3PZFGE.js.map → chunk-PHFPS7PC.js.map} +0 -0
  77. /package/dist/{chunk-YAVU7ZYD.js.map → chunk-QTDKBHZP.js.map} +0 -0
  78. /package/dist/{chunk-3SSUEUB5.js.map → chunk-UPMPPGVK.js.map} +0 -0
  79. /package/dist/{chunk-3K4JQTPQ.js.map → chunk-XEX4SQAM.js.map} +0 -0
package/dist/index.cjs CHANGED
@@ -1,27 +1,33 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkWRYE2CF5cjs = require('./chunk-WRYE2CF5.cjs');
3
+ var _chunk7HXB2552cjs = require('./chunk-7HXB2552.cjs');
4
4
 
5
5
 
6
- var _chunkJR7MAHBRcjs = require('./chunk-JR7MAHBR.cjs');
6
+ var _chunkUAPCZKBDcjs = require('./chunk-UAPCZKBD.cjs');
7
7
 
8
8
 
9
- var _chunk53AGVLUGcjs = require('./chunk-53AGVLUG.cjs');
9
+ var _chunkDS4ALUMKcjs = require('./chunk-DS4ALUMK.cjs');
10
10
 
11
11
 
12
- var _chunkJFCOC5TWcjs = require('./chunk-JFCOC5TW.cjs');
12
+ var _chunkEWFS7ZAGcjs = require('./chunk-EWFS7ZAG.cjs');
13
+
14
+
15
+ var _chunk3ROKDX67cjs = require('./chunk-3ROKDX67.cjs');
16
+
17
+
18
+ var _chunkC33YNBBZcjs = require('./chunk-C33YNBBZ.cjs');
13
19
 
14
20
 
15
21
  var _chunk6GN255GPcjs = require('./chunk-6GN255GP.cjs');
16
22
 
17
23
 
18
- var _chunkFASB7HG3cjs = require('./chunk-FASB7HG3.cjs');
24
+ var _chunkAASC67WZcjs = require('./chunk-AASC67WZ.cjs');
19
25
 
20
26
 
21
- var _chunkOSEU4ZUEcjs = require('./chunk-OSEU4ZUE.cjs');
27
+ var _chunkDBJCKVYNcjs = require('./chunk-DBJCKVYN.cjs');
22
28
 
23
29
 
24
- var _chunkWNESYY6Ecjs = require('./chunk-WNESYY6E.cjs');
30
+ var _chunkDVWR5KIGcjs = require('./chunk-DVWR5KIG.cjs');
25
31
 
26
32
 
27
33
  var _chunkKMMS4G7Acjs = require('./chunk-KMMS4G7A.cjs');
@@ -30,11 +36,8 @@ var _chunkKMMS4G7Acjs = require('./chunk-KMMS4G7A.cjs');
30
36
  var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
31
37
 
32
38
 
33
- var _chunkXJ3JTLXZcjs = require('./chunk-XJ3JTLXZ.cjs');
34
39
 
35
-
36
-
37
- var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
40
+ var _chunkJ5IMU4UGcjs = require('./chunk-J5IMU4UG.cjs');
38
41
 
39
42
 
40
43
  var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
@@ -53,5 +56,6 @@ var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
53
56
 
54
57
 
55
58
 
56
- exports.FieldArray = _chunk53AGVLUGcjs.FieldArray_default; exports.FieldCopyTestIdButton = _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkQTL5FREEcjs.FieldValidationError_default; exports.Form = _chunkJFCOC5TWcjs.Form_default; exports.Grid = _chunk6GN255GPcjs.Grid_default; exports.Input = _chunkFASB7HG3cjs.Input_default; exports.RadioGroup = _chunkOSEU4ZUEcjs.RadioGroup_default; exports.Select = _chunkWNESYY6Ecjs.Select_default; exports.SubmitButton = _chunkXJ3JTLXZcjs.SubmitButton_default; exports.Switch = _chunkJR7MAHBRcjs.Switch_default; exports.TextArea = _chunkWRYE2CF5cjs.TextArea_default; exports.recursiveFieldKeySearch = _chunkWQRM7G4Ccjs.recursiveFieldKeySearch; exports.slugify = _chunkBBB4FEY6cjs.slugify; exports.useFormContext = _chunkWQRM7G4Ccjs.useFormContext;
59
+
60
+ exports.CheckboxGroup = _chunkEWFS7ZAGcjs.CheckboxGroup_default; exports.FieldArray = _chunk3ROKDX67cjs.FieldArray_default; exports.FieldCopyTestIdButton = _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkQTL5FREEcjs.FieldValidationError_default; exports.Form = _chunkC33YNBBZcjs.Form_default; exports.Grid = _chunk6GN255GPcjs.Grid_default; exports.Input = _chunkAASC67WZcjs.Input_default; exports.RadioGroup = _chunkDVWR5KIGcjs.RadioGroup_default; exports.Select = _chunkDBJCKVYNcjs.Select_default; exports.SubmitButton = _chunk7HXB2552cjs.SubmitButton_default; exports.Switch = _chunkUAPCZKBDcjs.Switch_default; exports.TextArea = _chunkDS4ALUMKcjs.TextArea_default; exports.recursiveFieldKeySearch = _chunkJ5IMU4UGcjs.recursiveFieldKeySearch; exports.slugify = _chunkBBB4FEY6cjs.slugify; exports.useFormContext = _chunkJ5IMU4UGcjs.useFormContext;
57
61
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,qzBAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,s3BAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/index.cjs"}
package/dist/index.d.cts CHANGED
@@ -1,3 +1,4 @@
1
+ export { C as CheckboxGroup, b as CheckboxGroupOption, a as CheckboxGroupProps } from './CheckboxGroup-BYsQ0A0q.cjs';
1
2
  export { F as FieldArray, c as FieldArrayFieldChildren, b as FieldArrayHideOption, a as FieldArrayProps } from './FieldArray-DUvn98Fe.cjs';
2
3
  export { F as Form, a as FormProps } from './Form-nJbG1hNH.cjs';
3
4
  export { G as Grid, a as GridProps } from './Grid-DF3L9NF3.cjs';
@@ -16,6 +17,5 @@ import 'react-hook-form';
16
17
  import '@fuf-stack/veto';
17
18
  import 'react';
18
19
  import 'slug';
19
- import '@fuf-stack/veto/dist/types.d-DhQiwhXl';
20
20
  import 'react-select';
21
21
  import '@fuf-stack/pixels';
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { C as CheckboxGroup, b as CheckboxGroupOption, a as CheckboxGroupProps } from './CheckboxGroup-BYsQ0A0q.js';
1
2
  export { F as FieldArray, c as FieldArrayFieldChildren, b as FieldArrayHideOption, a as FieldArrayProps } from './FieldArray-DUvn98Fe.js';
2
3
  export { F as Form, a as FormProps } from './Form-nJbG1hNH.js';
3
4
  export { G as Grid, a as GridProps } from './Grid-DF3L9NF3.js';
@@ -16,6 +17,5 @@ import 'react-hook-form';
16
17
  import '@fuf-stack/veto';
17
18
  import 'react';
18
19
  import 'slug';
19
- import '@fuf-stack/veto/dist/types.d-DhQiwhXl';
20
20
  import 'react-select';
21
21
  import '@fuf-stack/pixels';
package/dist/index.js CHANGED
@@ -1,44 +1,48 @@
1
1
  import {
2
- TextArea_default
3
- } from "./chunk-KC3PZFGE.js";
2
+ SubmitButton_default
3
+ } from "./chunk-7ZIHJMDO.js";
4
4
  import {
5
5
  Switch_default
6
- } from "./chunk-3SSUEUB5.js";
6
+ } from "./chunk-UPMPPGVK.js";
7
+ import {
8
+ TextArea_default
9
+ } from "./chunk-PHFPS7PC.js";
10
+ import {
11
+ CheckboxGroup_default
12
+ } from "./chunk-ZCHYXHBI.js";
7
13
  import {
8
14
  FieldArray_default
9
- } from "./chunk-57OFVPRD.js";
15
+ } from "./chunk-5I5DGCXC.js";
10
16
  import {
11
17
  Form_default
12
- } from "./chunk-Y4CFVCUN.js";
18
+ } from "./chunk-TFDWXKS6.js";
13
19
  import {
14
20
  Grid_default
15
21
  } from "./chunk-PDCEKC3G.js";
16
22
  import {
17
23
  Input_default
18
- } from "./chunk-BGSQU5EH.js";
19
- import {
20
- RadioGroup_default
21
- } from "./chunk-3K4JQTPQ.js";
24
+ } from "./chunk-GYD46GIR.js";
22
25
  import {
23
26
  Select_default
24
- } from "./chunk-YAVU7ZYD.js";
27
+ } from "./chunk-QTDKBHZP.js";
28
+ import {
29
+ RadioGroup_default
30
+ } from "./chunk-XEX4SQAM.js";
25
31
  import {
26
32
  FieldCopyTestIdButton_default
27
33
  } from "./chunk-T3CCNJHK.js";
28
34
  import {
29
35
  FieldValidationError_default
30
36
  } from "./chunk-DBLODROX.js";
31
- import {
32
- SubmitButton_default
33
- } from "./chunk-QD6IQL6U.js";
34
37
  import {
35
38
  recursiveFieldKeySearch,
36
39
  useFormContext
37
- } from "./chunk-BCMPSLSG.js";
40
+ } from "./chunk-BNJP47R7.js";
38
41
  import {
39
42
  slugify
40
43
  } from "./chunk-V46BHM2U.js";
41
44
  export {
45
+ CheckboxGroup_default as CheckboxGroup,
42
46
  FieldArray_default as FieldArray,
43
47
  FieldCopyTestIdButton_default as FieldCopyTestIdButton,
44
48
  FieldValidationError_default as FieldValidationError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuf-stack/uniform",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "fuf react form library",
5
5
  "author": "Hannes Tiede",
6
6
  "homepage": "https://github.com/fuf-stack/uniform#readme",
@@ -16,6 +16,11 @@
16
16
  "require": "./dist/index.cjs",
17
17
  "types": "./dist/index.d.ts"
18
18
  },
19
+ "./CheckboxGroup": {
20
+ "import": "./dist/CheckboxGroup/index.js",
21
+ "require": "./dist/CheckboxGroup/index.cjs",
22
+ "types": "./dist/CheckboxGroup/index.d.ts"
23
+ },
19
24
  "./FieldArray": {
20
25
  "import": "./dist/FieldArray/index.js",
21
26
  "require": "./dist/FieldArray/index.cjs",
@@ -106,7 +111,7 @@
106
111
  "@dnd-kit/sortable": "8.0.0",
107
112
  "@dnd-kit/utilities": "3.2.2",
108
113
  "@nextui-org/button": "2.0.34",
109
- "@nextui-org/checkbox": "2.1.2",
114
+ "@nextui-org/checkbox": "2.1.5",
110
115
  "@nextui-org/input": "2.2.2",
111
116
  "@nextui-org/radio": "2.1.2",
112
117
  "@nextui-org/select": "2.2.2",
@@ -118,13 +123,13 @@
118
123
  "react-hook-form": "7.53.0",
119
124
  "react-select": "5.8.1",
120
125
  "slug": "9.1.0",
121
- "@fuf-stack/pixel-utils": "0.1.0",
122
126
  "@fuf-stack/pixels": "0.23.0",
127
+ "@fuf-stack/pixel-utils": "0.1.0",
123
128
  "@fuf-stack/veto": "0.5.0"
124
129
  },
125
130
  "devDependencies": {
126
131
  "@types/debug": "4.1.12",
127
- "@types/react": "18.3.10",
132
+ "@types/react": "18.3.11",
128
133
  "@types/react-dom": "18.3.0",
129
134
  "@types/slug": "5.0.9",
130
135
  "react": "18.3.1",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/useFormContext/useFormContext.ts","../src/Form/subcomponents/FormContext.tsx"],"sourcesContent":["import type { VetoSchema } from '@fuf-stack/veto';\nimport type { FieldError } from 'react-hook-form';\n\nimport { useContext } from 'react';\nimport { useFormContext as useHookFormContext } from 'react-hook-form';\n\nimport { ValidationSchemaContext } from '../../Form/subcomponents/FormContext';\nimport { slugify } from '../../helpers';\n\n// FIX: This fixes the problem that the innerType is not checked for optionals...\nconst recursiveSearchInnerType = (schema: VetoSchema): boolean => {\n if (schema?._def?.innerType) {\n if (schema?._def?.innerType?._def?.typeName === 'ZodOptional') {\n return schema?._def?.innerType?._def?.typeName !== 'ZodOptional';\n }\n return recursiveSearchInnerType(schema?._def?.innerType);\n }\n return true;\n};\n\n// TODO: Fix problem \".optional().nullable()\" is required, \".nullable().optional()\" is not required...\nexport const recursiveFieldKeySearch = (\n schema: VetoSchema,\n path: string[],\n): boolean | null => {\n const [current, ...rest] = path;\n // ignore optionals on the path to the desired field\n\n let currentSchema = schema;\n\n if (schema?._def?.typeName === 'ZodOptional') {\n // @ts-expect-error not sure here\n currentSchema = schema.unwrap();\n } else if (schema?._def?.typeName === 'ZodEffects') {\n // in case of an effect, unwrap the effect and call with schema (clould be optional) and complete path.\n return recursiveFieldKeySearch(schema._def?.schema, path);\n }\n\n // TODO: This needs further investigation. It is nor yet completely clear how to handle intersections!\n if (currentSchema?._def?.typeName === 'ZodIntersection') {\n return (\n (currentSchema._def.left?.schema\n ? recursiveFieldKeySearch(currentSchema._def.left.schema, path)\n : recursiveFieldKeySearch(currentSchema._def.left, path)) ||\n (currentSchema._def.right?.schema\n ? recursiveFieldKeySearch(currentSchema._def.right.schema, path)\n : recursiveFieldKeySearch(currentSchema._def.right, path))\n );\n }\n\n // get shape of an object or objects of an array\n // @ts-expect-error not sure here\n const shape = currentSchema?.shape ?? currentSchema?.element?.shape; // ??\n\n if (shape && shape[current]) {\n // currentSchema?._def.schema.unwrap()?.shape;\n if (rest.length === 0) {\n // At the end of the path check if the field is optional or required\n return (\n shape[current]?._def?.typeName !== 'ZodOptional' &&\n recursiveSearchInnerType(shape[current])\n );\n }\n return recursiveFieldKeySearch(shape[current], rest);\n }\n\n return null; // field not found\n};\n\n/** TODO: add description */\nexport const useFormContext = () => {\n const {\n // https://react-hook-form.com/docs/useform/getfieldstate\n // for getFieldState a subscription to formState properties is needed!\n formState,\n getFieldState: getFieldStateOrig,\n ...otherMethods\n } = useHookFormContext();\n const validation = useContext(ValidationSchemaContext);\n\n // update getFieldState\n const getFieldState = (name: string, testId?: string) => {\n const fieldPath =\n typeof name === 'string' ? name.replace(/\\[\\d+\\]/g, '').split('.') : name;\n const required =\n (validation && recursiveFieldKeySearch(validation.schema, fieldPath)) ||\n false;\n const { error, ...rest } = getFieldStateOrig(name, formState);\n return {\n ...rest,\n error: error as FieldError[] | undefined, // TODO: change to correct type @Hannes ;)\n required,\n testId: slugify(testId || name),\n };\n };\n\n return {\n ...otherMethods,\n getFieldState,\n validation,\n formState,\n };\n};\n","import type { VetoInstance } from '@fuf-stack/veto';\nimport type { FormProviderProps as HookFormProviderProps } from 'react-hook-form';\n\nimport React from 'react';\nimport { FormProvider as HookFormProvider } from 'react-hook-form';\n\nexport const ValidationSchemaContext = React.createContext<\n VetoInstance | undefined\n>(undefined);\n\ninterface FormProviderProps\n extends HookFormProviderProps<Record<string, any>, any, undefined> {\n /** veto validation schema */\n validation?: VetoInstance;\n}\n\n/** Provides the veto validation context to the form */\nconst FormProvider = ({\n children,\n validation = undefined,\n ...hookFormProps\n}: FormProviderProps) => {\n return (\n <ValidationSchemaContext.Provider value={validation}>\n <HookFormProvider {...hookFormProps}>{children}</HookFormProvider>\n </ValidationSchemaContext.Provider>\n );\n};\n\nexport default FormProvider;\n"],"mappings":";;;;;AAGA,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB,0BAA0B;;;ACDrD,OAAO,WAAW;AAClB,SAAS,gBAAgB,wBAAwB;AAoB3C;AAlBC,IAAM,0BAA0B,MAAM,cAE3C,MAAS;AASX,IAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA,aAAa;AAAA,EACb,GAAG;AACL,MAAyB;AACvB,SACE,oBAAC,wBAAwB,UAAxB,EAAiC,OAAO,YACvC,8BAAC,oBAAkB,GAAG,eAAgB,UAAS,GACjD;AAEJ;AAEA,IAAO,sBAAQ;;;ADnBf,IAAM,2BAA2B,CAAC,WAAgC;AAChE,MAAI,QAAQ,MAAM,WAAW;AAC3B,QAAI,QAAQ,MAAM,WAAW,MAAM,aAAa,eAAe;AAC7D,aAAO,QAAQ,MAAM,WAAW,MAAM,aAAa;AAAA,IACrD;AACA,WAAO,yBAAyB,QAAQ,MAAM,SAAS;AAAA,EACzD;AACA,SAAO;AACT;AAGO,IAAM,0BAA0B,CACrC,QACA,SACmB;AACnB,QAAM,CAAC,SAAS,GAAG,IAAI,IAAI;AAG3B,MAAI,gBAAgB;AAEpB,MAAI,QAAQ,MAAM,aAAa,eAAe;AAE5C,oBAAgB,OAAO,OAAO;AAAA,EAChC,WAAW,QAAQ,MAAM,aAAa,cAAc;AAElD,WAAO,wBAAwB,OAAO,MAAM,QAAQ,IAAI;AAAA,EAC1D;AAGA,MAAI,eAAe,MAAM,aAAa,mBAAmB;AACvD,YACG,cAAc,KAAK,MAAM,SACtB,wBAAwB,cAAc,KAAK,KAAK,QAAQ,IAAI,IAC5D,wBAAwB,cAAc,KAAK,MAAM,IAAI,OACxD,cAAc,KAAK,OAAO,SACvB,wBAAwB,cAAc,KAAK,MAAM,QAAQ,IAAI,IAC7D,wBAAwB,cAAc,KAAK,OAAO,IAAI;AAAA,EAE9D;AAIA,QAAM,QAAQ,eAAe,SAAS,eAAe,SAAS;AAE9D,MAAI,SAAS,MAAM,OAAO,GAAG;AAE3B,QAAI,KAAK,WAAW,GAAG;AAErB,aACE,MAAM,OAAO,GAAG,MAAM,aAAa,iBACnC,yBAAyB,MAAM,OAAO,CAAC;AAAA,IAE3C;AACA,WAAO,wBAAwB,MAAM,OAAO,GAAG,IAAI;AAAA,EACrD;AAEA,SAAO;AACT;AAGO,IAAM,iBAAiB,MAAM;AAClC,QAAM;AAAA;AAAA;AAAA,IAGJ;AAAA,IACA,eAAe;AAAA,IACf,GAAG;AAAA,EACL,IAAI,mBAAmB;AACvB,QAAM,aAAa,WAAW,uBAAuB;AAGrD,QAAM,gBAAgB,CAAC,MAAc,WAAoB;AACvD,UAAM,YACJ,OAAO,SAAS,WAAW,KAAK,QAAQ,YAAY,EAAE,EAAE,MAAM,GAAG,IAAI;AACvE,UAAM,WACH,cAAc,wBAAwB,WAAW,QAAQ,SAAS,KACnE;AACF,UAAM,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,MAAM,SAAS;AAC5D,WAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA;AAAA,MACA;AAAA,MACA,QAAQ,QAAQ,UAAU,IAAI;AAAA,IAChC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-JFCOC5TW.cjs","../src/Form/Form.tsx","../src/Form/subcomponents/FormDebugViewer.tsx","../src/Form/index.ts"],"names":["jsx","jsxs","cn","Form_default"],"mappings":"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","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-JFCOC5TW.cjs","sourcesContent":[null,"import type { VetoInstance } from '@fuf-stack/veto';\nimport type { ReactNode } from 'react';\nimport type { FieldValues, SubmitHandler } from 'react-hook-form';\n\nimport { useForm } from 'react-hook-form';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { slugify } from '../helpers';\nimport FormProvider from './subcomponents/FormContext';\nimport FormDebugViewer from './subcomponents/FormDebugViewer';\n\n/**\n * recursively removes all fields that are null or undefined before\n * the form data is passed to the veto validation function\n */\nexport const removeNullishFields = (obj: Record<string, unknown>) => {\n return JSON.parse(\n JSON.stringify(obj, (_key, value) => {\n return value === null ? undefined : value;\n }),\n );\n};\n\nexport interface FormProps {\n /** form children */\n children: ReactNode | ReactNode[];\n /** CSS class name */\n className?: string | string[];\n /** initial form values */\n initialValues?: FieldValues;\n /** name of the form */\n name?: string;\n /** form submit handler */\n onSubmit: SubmitHandler<FieldValues>;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** veto validation schema */\n validation?: VetoInstance;\n /** when the validation should be triggered */\n validationTrigger?: 'onChange' | 'onBlur' | 'onSubmit' | 'onTouched' | 'all';\n}\n\n/**\n * Form component that has to wrap every uniform\n */\nconst Form = ({\n children,\n className = undefined,\n initialValues = undefined,\n name = undefined,\n onSubmit,\n testId = undefined,\n validation = undefined,\n validationTrigger = 'all',\n}: FormProps) => {\n const methods = useForm(\n validation\n ? {\n defaultValues: initialValues,\n resolver: async (values) => {\n const { data, errors, ...rest } = await validation.validateAsync(\n removeNullishFields(values),\n );\n // https://github.com/react-hook-form/resolvers/blob/master/zod/src/zod.ts\n return { values: data || {}, errors: errors || {}, ...rest };\n },\n // set rhf mode\n // see: https://react-hook-form.com/docs/useform#mode\n mode: validationTrigger,\n }\n : {\n defaultValues: initialValues,\n },\n );\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <FormProvider {...methods} validation={validation}>\n <div className=\"flex w-full flex-row justify-between gap-6\">\n <form\n className={cn('flex-grow', className)}\n data-testid={slugify(testId || name || '')}\n name={name}\n onSubmit={methods.handleSubmit(onSubmit)}\n >\n {children}\n </form>\n <FormDebugViewer className=\"w-96 flex-shrink\" />\n </div>\n </FormProvider>\n );\n};\n\nexport default Form;\n","import type { VetoError } from '@fuf-stack/veto';\n\nimport { useEffect, useState } from 'react';\nimport { FaTimes } from 'react-icons/fa';\nimport { FaBug, FaBullseye } from 'react-icons/fa6';\n\nimport { cn } from '@fuf-stack/pixel-utils';\nimport { Button, Card, Json, useLocalStorage } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../../hooks';\n\ninterface FormDebugViewerProps {\n /** CSS class name */\n className?: string;\n}\n\nconst LOCALSTORAGE_DEBUG_KEY = 'uniform:form-debug-enabled';\nconst LOCALSTORAGE_COPY_TEST_ID_KEY = 'uniform:form-debug-copy-test-id-enabled';\n\n/** Renders a form debug panel with information about the current form state */\nconst FormDebugViewer = ({ className = undefined }: FormDebugViewerProps) => {\n const {\n watch,\n formState: { dirtyFields, isValid, isSubmitting },\n validation,\n } = useFormContext();\n\n const [debug, setDebug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);\n const [copyTestId, setCopyTestId] = useLocalStorage(\n LOCALSTORAGE_COPY_TEST_ID_KEY,\n false,\n );\n\n const [validationErrors, setValidationErrors] = useState<\n VetoError['errors'] | null\n >(null);\n\n const formValues = watch();\n\n useEffect(\n () => {\n const updateValidationErrors = async () => {\n if (validation) {\n const validateResult = await validation?.validateAsync(formValues);\n setValidationErrors(validateResult?.errors);\n }\n };\n updateValidationErrors();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(formValues)],\n );\n\n if (!debug) {\n return (\n <Button\n ariaLabel=\"Enable form debug mode\"\n onClick={() => setDebug(!debug)}\n className=\"absolute bottom-2.5 right-2.5 w-5 text-default-400\"\n variant=\"light\"\n icon={<FaBug />}\n />\n );\n }\n\n return (\n <Card\n className={cn(className)}\n header={\n <div className=\"flex w-full flex-row justify-between\">\n <span className=\"text-lg\">Debug Mode</span>\n <Button\n icon={<FaTimes className=\"text-danger\" />}\n onClick={() => setDebug(false)}\n size=\"sm\"\n variant=\"flat\"\n />\n </div>\n }\n >\n <Button\n variant={copyTestId ? 'solid' : 'light'}\n icon={<FaBullseye />}\n className=\"mb-4 ml-auto mr-auto\"\n onClick={() => setCopyTestId(!copyTestId)}\n >\n {copyTestId ? 'Hide CopyButton' : 'Show CopyButton'}\n </Button>\n <Json\n value={{\n values: formValues,\n errors: validationErrors,\n dirtyFields,\n isValid,\n isSubmitting,\n }}\n />\n </Card>\n );\n};\nexport default FormDebugViewer;\n","import Form from './Form';\n\nexport type { FormProps } from './Form';\n\nexport { Form };\n\nexport default Form;\n"]}
@@ -1,87 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
-
3
- var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
4
-
5
- // src/hooks/useFormContext/useFormContext.ts
6
- var _react = require('react'); var _react2 = _interopRequireDefault(_react);
7
- var _reacthookform = require('react-hook-form');
8
-
9
- // src/Form/subcomponents/FormContext.tsx
10
-
11
-
12
- var _jsxruntime = require('react/jsx-runtime');
13
- var ValidationSchemaContext = _react2.default.createContext(void 0);
14
- var FormProvider = ({
15
- children,
16
- validation = void 0,
17
- ...hookFormProps
18
- }) => {
19
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ValidationSchemaContext.Provider, { value: validation, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reacthookform.FormProvider, { ...hookFormProps, children }) });
20
- };
21
- var FormContext_default = FormProvider;
22
-
23
- // src/hooks/useFormContext/useFormContext.ts
24
- var recursiveSearchInnerType = (schema) => {
25
- if (_optionalChain([schema, 'optionalAccess', _ => _._def, 'optionalAccess', _2 => _2.innerType])) {
26
- if (_optionalChain([schema, 'optionalAccess', _3 => _3._def, 'optionalAccess', _4 => _4.innerType, 'optionalAccess', _5 => _5._def, 'optionalAccess', _6 => _6.typeName]) === "ZodOptional") {
27
- return _optionalChain([schema, 'optionalAccess', _7 => _7._def, 'optionalAccess', _8 => _8.innerType, 'optionalAccess', _9 => _9._def, 'optionalAccess', _10 => _10.typeName]) !== "ZodOptional";
28
- }
29
- return recursiveSearchInnerType(_optionalChain([schema, 'optionalAccess', _11 => _11._def, 'optionalAccess', _12 => _12.innerType]));
30
- }
31
- return true;
32
- };
33
- var recursiveFieldKeySearch = (schema, path) => {
34
- const [current, ...rest] = path;
35
- let currentSchema = schema;
36
- if (_optionalChain([schema, 'optionalAccess', _13 => _13._def, 'optionalAccess', _14 => _14.typeName]) === "ZodOptional") {
37
- currentSchema = schema.unwrap();
38
- } else if (_optionalChain([schema, 'optionalAccess', _15 => _15._def, 'optionalAccess', _16 => _16.typeName]) === "ZodEffects") {
39
- return recursiveFieldKeySearch(_optionalChain([schema, 'access', _17 => _17._def, 'optionalAccess', _18 => _18.schema]), path);
40
- }
41
- if (_optionalChain([currentSchema, 'optionalAccess', _19 => _19._def, 'optionalAccess', _20 => _20.typeName]) === "ZodIntersection") {
42
- return (_optionalChain([currentSchema, 'access', _21 => _21._def, 'access', _22 => _22.left, 'optionalAccess', _23 => _23.schema]) ? recursiveFieldKeySearch(currentSchema._def.left.schema, path) : recursiveFieldKeySearch(currentSchema._def.left, path)) || (_optionalChain([currentSchema, 'access', _24 => _24._def, 'access', _25 => _25.right, 'optionalAccess', _26 => _26.schema]) ? recursiveFieldKeySearch(currentSchema._def.right.schema, path) : recursiveFieldKeySearch(currentSchema._def.right, path));
43
- }
44
- const shape = _nullishCoalesce(_optionalChain([currentSchema, 'optionalAccess', _27 => _27.shape]), () => ( _optionalChain([currentSchema, 'optionalAccess', _28 => _28.element, 'optionalAccess', _29 => _29.shape])));
45
- if (shape && shape[current]) {
46
- if (rest.length === 0) {
47
- return _optionalChain([shape, 'access', _30 => _30[current], 'optionalAccess', _31 => _31._def, 'optionalAccess', _32 => _32.typeName]) !== "ZodOptional" && recursiveSearchInnerType(shape[current]);
48
- }
49
- return recursiveFieldKeySearch(shape[current], rest);
50
- }
51
- return null;
52
- };
53
- var useFormContext = () => {
54
- const {
55
- // https://react-hook-form.com/docs/useform/getfieldstate
56
- // for getFieldState a subscription to formState properties is needed!
57
- formState,
58
- getFieldState: getFieldStateOrig,
59
- ...otherMethods
60
- } = _reacthookform.useFormContext.call(void 0, );
61
- const validation = _react.useContext.call(void 0, ValidationSchemaContext);
62
- const getFieldState = (name, testId) => {
63
- const fieldPath = typeof name === "string" ? name.replace(/\[\d+\]/g, "").split(".") : name;
64
- const required = validation && recursiveFieldKeySearch(validation.schema, fieldPath) || false;
65
- const { error, ...rest } = getFieldStateOrig(name, formState);
66
- return {
67
- ...rest,
68
- error,
69
- // TODO: change to correct type @Hannes ;)
70
- required,
71
- testId: _chunkBBB4FEY6cjs.slugify.call(void 0, testId || name)
72
- };
73
- };
74
- return {
75
- ...otherMethods,
76
- getFieldState,
77
- validation,
78
- formState
79
- };
80
- };
81
-
82
-
83
-
84
-
85
-
86
- exports.FormContext_default = FormContext_default; exports.recursiveFieldKeySearch = recursiveFieldKeySearch; exports.useFormContext = useFormContext;
87
- //# sourceMappingURL=chunk-WQRM7G4C.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-WQRM7G4C.cjs","../src/hooks/useFormContext/useFormContext.ts","../src/Form/subcomponents/FormContext.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-WQRM7G4C.cjs","sourcesContent":[null,"import type { VetoSchema } from '@fuf-stack/veto';\nimport type { FieldError } from 'react-hook-form';\n\nimport { useContext } from 'react';\nimport { useFormContext as useHookFormContext } from 'react-hook-form';\n\nimport { ValidationSchemaContext } from '../../Form/subcomponents/FormContext';\nimport { slugify } from '../../helpers';\n\n// FIX: This fixes the problem that the innerType is not checked for optionals...\nconst recursiveSearchInnerType = (schema: VetoSchema): boolean => {\n if (schema?._def?.innerType) {\n if (schema?._def?.innerType?._def?.typeName === 'ZodOptional') {\n return schema?._def?.innerType?._def?.typeName !== 'ZodOptional';\n }\n return recursiveSearchInnerType(schema?._def?.innerType);\n }\n return true;\n};\n\n// TODO: Fix problem \".optional().nullable()\" is required, \".nullable().optional()\" is not required...\nexport const recursiveFieldKeySearch = (\n schema: VetoSchema,\n path: string[],\n): boolean | null => {\n const [current, ...rest] = path;\n // ignore optionals on the path to the desired field\n\n let currentSchema = schema;\n\n if (schema?._def?.typeName === 'ZodOptional') {\n // @ts-expect-error not sure here\n currentSchema = schema.unwrap();\n } else if (schema?._def?.typeName === 'ZodEffects') {\n // in case of an effect, unwrap the effect and call with schema (clould be optional) and complete path.\n return recursiveFieldKeySearch(schema._def?.schema, path);\n }\n\n // TODO: This needs further investigation. It is nor yet completely clear how to handle intersections!\n if (currentSchema?._def?.typeName === 'ZodIntersection') {\n return (\n (currentSchema._def.left?.schema\n ? recursiveFieldKeySearch(currentSchema._def.left.schema, path)\n : recursiveFieldKeySearch(currentSchema._def.left, path)) ||\n (currentSchema._def.right?.schema\n ? recursiveFieldKeySearch(currentSchema._def.right.schema, path)\n : recursiveFieldKeySearch(currentSchema._def.right, path))\n );\n }\n\n // get shape of an object or objects of an array\n // @ts-expect-error not sure here\n const shape = currentSchema?.shape ?? currentSchema?.element?.shape; // ??\n\n if (shape && shape[current]) {\n // currentSchema?._def.schema.unwrap()?.shape;\n if (rest.length === 0) {\n // At the end of the path check if the field is optional or required\n return (\n shape[current]?._def?.typeName !== 'ZodOptional' &&\n recursiveSearchInnerType(shape[current])\n );\n }\n return recursiveFieldKeySearch(shape[current], rest);\n }\n\n return null; // field not found\n};\n\n/** TODO: add description */\nexport const useFormContext = () => {\n const {\n // https://react-hook-form.com/docs/useform/getfieldstate\n // for getFieldState a subscription to formState properties is needed!\n formState,\n getFieldState: getFieldStateOrig,\n ...otherMethods\n } = useHookFormContext();\n const validation = useContext(ValidationSchemaContext);\n\n // update getFieldState\n const getFieldState = (name: string, testId?: string) => {\n const fieldPath =\n typeof name === 'string' ? name.replace(/\\[\\d+\\]/g, '').split('.') : name;\n const required =\n (validation && recursiveFieldKeySearch(validation.schema, fieldPath)) ||\n false;\n const { error, ...rest } = getFieldStateOrig(name, formState);\n return {\n ...rest,\n error: error as FieldError[] | undefined, // TODO: change to correct type @Hannes ;)\n required,\n testId: slugify(testId || name),\n };\n };\n\n return {\n ...otherMethods,\n getFieldState,\n validation,\n formState,\n };\n};\n","import type { VetoInstance } from '@fuf-stack/veto';\nimport type { FormProviderProps as HookFormProviderProps } from 'react-hook-form';\n\nimport React from 'react';\nimport { FormProvider as HookFormProvider } from 'react-hook-form';\n\nexport const ValidationSchemaContext = React.createContext<\n VetoInstance | undefined\n>(undefined);\n\ninterface FormProviderProps\n extends HookFormProviderProps<Record<string, any>, any, undefined> {\n /** veto validation schema */\n validation?: VetoInstance;\n}\n\n/** Provides the veto validation context to the form */\nconst FormProvider = ({\n children,\n validation = undefined,\n ...hookFormProps\n}: FormProviderProps) => {\n return (\n <ValidationSchemaContext.Provider value={validation}>\n <HookFormProvider {...hookFormProps}>{children}</HookFormProvider>\n </ValidationSchemaContext.Provider>\n );\n};\n\nexport default FormProvider;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/Form/Form.tsx","../src/Form/subcomponents/FormDebugViewer.tsx","../src/Form/index.ts"],"sourcesContent":["import type { VetoInstance } from '@fuf-stack/veto';\nimport type { ReactNode } from 'react';\nimport type { FieldValues, SubmitHandler } from 'react-hook-form';\n\nimport { useForm } from 'react-hook-form';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { slugify } from '../helpers';\nimport FormProvider from './subcomponents/FormContext';\nimport FormDebugViewer from './subcomponents/FormDebugViewer';\n\n/**\n * recursively removes all fields that are null or undefined before\n * the form data is passed to the veto validation function\n */\nexport const removeNullishFields = (obj: Record<string, unknown>) => {\n return JSON.parse(\n JSON.stringify(obj, (_key, value) => {\n return value === null ? undefined : value;\n }),\n );\n};\n\nexport interface FormProps {\n /** form children */\n children: ReactNode | ReactNode[];\n /** CSS class name */\n className?: string | string[];\n /** initial form values */\n initialValues?: FieldValues;\n /** name of the form */\n name?: string;\n /** form submit handler */\n onSubmit: SubmitHandler<FieldValues>;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** veto validation schema */\n validation?: VetoInstance;\n /** when the validation should be triggered */\n validationTrigger?: 'onChange' | 'onBlur' | 'onSubmit' | 'onTouched' | 'all';\n}\n\n/**\n * Form component that has to wrap every uniform\n */\nconst Form = ({\n children,\n className = undefined,\n initialValues = undefined,\n name = undefined,\n onSubmit,\n testId = undefined,\n validation = undefined,\n validationTrigger = 'all',\n}: FormProps) => {\n const methods = useForm(\n validation\n ? {\n defaultValues: initialValues,\n resolver: async (values) => {\n const { data, errors, ...rest } = await validation.validateAsync(\n removeNullishFields(values),\n );\n // https://github.com/react-hook-form/resolvers/blob/master/zod/src/zod.ts\n return { values: data || {}, errors: errors || {}, ...rest };\n },\n // set rhf mode\n // see: https://react-hook-form.com/docs/useform#mode\n mode: validationTrigger,\n }\n : {\n defaultValues: initialValues,\n },\n );\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <FormProvider {...methods} validation={validation}>\n <div className=\"flex w-full flex-row justify-between gap-6\">\n <form\n className={cn('flex-grow', className)}\n data-testid={slugify(testId || name || '')}\n name={name}\n onSubmit={methods.handleSubmit(onSubmit)}\n >\n {children}\n </form>\n <FormDebugViewer className=\"w-96 flex-shrink\" />\n </div>\n </FormProvider>\n );\n};\n\nexport default Form;\n","import type { VetoError } from '@fuf-stack/veto';\n\nimport { useEffect, useState } from 'react';\nimport { FaTimes } from 'react-icons/fa';\nimport { FaBug, FaBullseye } from 'react-icons/fa6';\n\nimport { cn } from '@fuf-stack/pixel-utils';\nimport { Button, Card, Json, useLocalStorage } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../../hooks';\n\ninterface FormDebugViewerProps {\n /** CSS class name */\n className?: string;\n}\n\nconst LOCALSTORAGE_DEBUG_KEY = 'uniform:form-debug-enabled';\nconst LOCALSTORAGE_COPY_TEST_ID_KEY = 'uniform:form-debug-copy-test-id-enabled';\n\n/** Renders a form debug panel with information about the current form state */\nconst FormDebugViewer = ({ className = undefined }: FormDebugViewerProps) => {\n const {\n watch,\n formState: { dirtyFields, isValid, isSubmitting },\n validation,\n } = useFormContext();\n\n const [debug, setDebug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);\n const [copyTestId, setCopyTestId] = useLocalStorage(\n LOCALSTORAGE_COPY_TEST_ID_KEY,\n false,\n );\n\n const [validationErrors, setValidationErrors] = useState<\n VetoError['errors'] | null\n >(null);\n\n const formValues = watch();\n\n useEffect(\n () => {\n const updateValidationErrors = async () => {\n if (validation) {\n const validateResult = await validation?.validateAsync(formValues);\n setValidationErrors(validateResult?.errors);\n }\n };\n updateValidationErrors();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(formValues)],\n );\n\n if (!debug) {\n return (\n <Button\n ariaLabel=\"Enable form debug mode\"\n onClick={() => setDebug(!debug)}\n className=\"absolute bottom-2.5 right-2.5 w-5 text-default-400\"\n variant=\"light\"\n icon={<FaBug />}\n />\n );\n }\n\n return (\n <Card\n className={cn(className)}\n header={\n <div className=\"flex w-full flex-row justify-between\">\n <span className=\"text-lg\">Debug Mode</span>\n <Button\n icon={<FaTimes className=\"text-danger\" />}\n onClick={() => setDebug(false)}\n size=\"sm\"\n variant=\"flat\"\n />\n </div>\n }\n >\n <Button\n variant={copyTestId ? 'solid' : 'light'}\n icon={<FaBullseye />}\n className=\"mb-4 ml-auto mr-auto\"\n onClick={() => setCopyTestId(!copyTestId)}\n >\n {copyTestId ? 'Hide CopyButton' : 'Show CopyButton'}\n </Button>\n <Json\n value={{\n values: formValues,\n errors: validationErrors,\n dirtyFields,\n isValid,\n isSubmitting,\n }}\n />\n </Card>\n );\n};\nexport default FormDebugViewer;\n","import Form from './Form';\n\nexport type { FormProps } from './Form';\n\nexport { Form };\n\nexport default Form;\n"],"mappings":"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","names":["cn","jsx","jsxs","cn","Form_default"]}