@fuf-stack/uniform 0.2.3 → 0.2.4

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 (57) hide show
  1. package/dist/Form/index.cjs +3 -5
  2. package/dist/Form/index.js +2 -4
  3. package/dist/Grid/index.cjs +2 -4
  4. package/dist/Grid/index.js +1 -3
  5. package/dist/SubmitButton/index.cjs +3 -5
  6. package/dist/SubmitButton/index.js +2 -4
  7. package/dist/{chunk-DBNZWU3T.cjs → chunk-22AA557I.cjs} +5 -12
  8. package/dist/chunk-22AA557I.cjs.map +1 -0
  9. package/dist/{chunk-UFEO2WD4.cjs → chunk-4BELEHDQ.cjs} +21 -28
  10. package/dist/chunk-4BELEHDQ.cjs.map +1 -0
  11. package/dist/chunk-4MEKDDB2.js +20 -0
  12. package/dist/{chunk-YNN5AVDW.js.map → chunk-4MEKDDB2.js.map} +1 -1
  13. package/dist/{chunk-YMSVB2DX.js → chunk-6XKDXQ4A.js} +20 -27
  14. package/dist/{chunk-YMSVB2DX.js.map → chunk-6XKDXQ4A.js.map} +1 -1
  15. package/dist/{chunk-BQTJHSDU.js → chunk-BCMPSLSG.js} +7 -14
  16. package/dist/{chunk-BQTJHSDU.js.map → chunk-BCMPSLSG.js.map} +1 -1
  17. package/dist/{chunk-ZWSYKQT7.js → chunk-DBLODROX.js} +4 -10
  18. package/dist/{chunk-ZWSYKQT7.js.map → chunk-DBLODROX.js.map} +1 -1
  19. package/dist/{chunk-WT2BR5B5.js → chunk-FNVT6LS4.js} +4 -11
  20. package/dist/{chunk-WT2BR5B5.js.map → chunk-FNVT6LS4.js.map} +1 -1
  21. package/dist/{chunk-HW65ROPB.cjs → chunk-QTL5FREE.cjs} +4 -10
  22. package/dist/chunk-QTL5FREE.cjs.map +1 -0
  23. package/dist/{chunk-73CQ3KWD.js → chunk-TEJGV6NC.js} +4 -10
  24. package/dist/{chunk-73CQ3KWD.js.map → chunk-TEJGV6NC.js.map} +1 -1
  25. package/dist/{chunk-AAESGATO.cjs → chunk-WQRM7G4C.cjs} +8 -15
  26. package/dist/chunk-WQRM7G4C.cjs.map +1 -0
  27. package/dist/{chunk-RU72JRAY.cjs → chunk-XUKBLFTR.cjs} +5 -11
  28. package/dist/chunk-XUKBLFTR.cjs.map +1 -0
  29. package/dist/chunk-ZPFKVKGV.cjs +20 -0
  30. package/dist/chunk-ZPFKVKGV.cjs.map +1 -0
  31. package/dist/helpers/index.cjs +0 -1
  32. package/dist/helpers/index.js +0 -1
  33. package/dist/hooks/index.cjs +2 -4
  34. package/dist/hooks/index.js +1 -3
  35. package/dist/index.cjs +7 -9
  36. package/dist/index.js +6 -8
  37. package/dist/partials/FieldCopyTestIdButton/index.cjs +2 -4
  38. package/dist/partials/FieldCopyTestIdButton/index.js +1 -3
  39. package/dist/partials/FieldValidationError/index.cjs +2 -4
  40. package/dist/partials/FieldValidationError/index.js +1 -3
  41. package/package.json +11 -7
  42. package/dist/chunk-AAESGATO.cjs.map +0 -1
  43. package/dist/chunk-AT5DS6MS.cjs +0 -31
  44. package/dist/chunk-AT5DS6MS.cjs.map +0 -1
  45. package/dist/chunk-DBNZWU3T.cjs.map +0 -1
  46. package/dist/chunk-HW65ROPB.cjs.map +0 -1
  47. package/dist/chunk-LAHYQUKQ.cjs +0 -27
  48. package/dist/chunk-LAHYQUKQ.cjs.map +0 -1
  49. package/dist/chunk-LMMDXQ4L.cjs +0 -3170
  50. package/dist/chunk-LMMDXQ4L.cjs.map +0 -1
  51. package/dist/chunk-LQ2VYIYD.js +0 -31
  52. package/dist/chunk-LQ2VYIYD.js.map +0 -1
  53. package/dist/chunk-RBXONCYN.js +0 -3170
  54. package/dist/chunk-RBXONCYN.js.map +0 -1
  55. package/dist/chunk-RU72JRAY.cjs.map +0 -1
  56. package/dist/chunk-UFEO2WD4.cjs.map +0 -1
  57. package/dist/chunk-YNN5AVDW.js +0 -27
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/partials/FieldValidationError/FieldValidationError.tsx","../src/partials/FieldValidationError/index.ts"],"sourcesContent":["import type { FieldError } from 'react-hook-form';\n\nimport { slugify } from '../../helpers';\n\nexport interface FieldValidationErrorProps {\n error: FieldError[] | Record<string, FieldError[]>;\n testId?: string;\n}\n\n/**\n * Renders a validation error of a field\n */\nconst FieldValidationError = ({\n error,\n testId = undefined,\n}: FieldValidationErrorProps) => {\n if (!error) {\n return null;\n }\n\n let tmp_errors: FieldError[] = [];\n\n if (typeof error === 'object' && !(error instanceof Array)) {\n const error_object = error as Record<string, FieldError[]>;\n Object.keys(error).forEach((key) => {\n tmp_errors = [...tmp_errors, ...error_object[key]];\n });\n }\n\n const errorArray: FieldError[] =\n JSON.stringify(tmp_errors) !== '[]' ? tmp_errors : (error as FieldError[]);\n const errorStrings: string[] = errorArray.map((e) => e.message) as string[];\n const ariaString = `Error: ${errorStrings.join('\\n')}`;\n\n return (\n <ul\n data-testid={slugify(testId || errorStrings.join())}\n aria-label={ariaString} // TODO: ist das richtig @Hannes?\n >\n {errorStrings.map((errorString: string, i: number) => (\n // eslint-disable-next-line react/no-array-index-key\n <li key={`error_${i}`}>\n <div>{errorString}</div>\n </li>\n ))}\n </ul>\n );\n};\n\nexport default FieldValidationError;\n","import FieldValidationError from './FieldValidationError';\n\nexport type { FieldValidationErrorProps } from './FieldValidationError';\n\nexport { FieldValidationError };\n\nexport default FieldValidationError;\n"],"mappings":";;;;;;;;;;;AA0CU;AA9BV,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA,SAAS;AACX,MAAiC;AAC/B,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,aAA2B,CAAC;AAEhC,MAAI,OAAO,UAAU,YAAY,EAAE,iBAAiB,QAAQ;AAC1D,UAAM,eAAe;AACrB,WAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAClC,mBAAa,CAAC,GAAG,YAAY,GAAG,aAAa,GAAG,CAAC;AAAA,IACnD,CAAC;AAAA,EACH;AAEA,QAAM,aACJ,KAAK,UAAU,UAAU,MAAM,OAAO,aAAc;AACtD,QAAM,eAAyB,WAAW,IAAI,CAAC,MAAM,EAAE,OAAO;AAC9D,QAAM,aAAa,UAAU,aAAa,KAAK,IAAI,CAAC;AAEpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,QAAQ,UAAU,aAAa,KAAK,CAAC;AAAA,MAClD,cAAY;AAAA,MAEX,uBAAa,IAAI,CAAC,aAAqB;AAAA;AAAA,QAEtC,4CAAC,QACC,sDAAC,SAAK,uBAAY,KADX,SAAS,CAAC,EAEnB;AAAA,OACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,+BAAQ;;;AC3Cf,IAAOA,gCAAQ;","names":["FieldValidationError_default"]}
1
+ {"version":3,"sources":["../src/partials/FieldValidationError/FieldValidationError.tsx","../src/partials/FieldValidationError/index.ts"],"sourcesContent":["import type { FieldError } from 'react-hook-form';\n\nimport { slugify } from '../../helpers';\n\nexport interface FieldValidationErrorProps {\n error: FieldError[] | Record<string, FieldError[]>;\n testId?: string;\n}\n\n/**\n * Renders a validation error of a field\n */\nconst FieldValidationError = ({\n error,\n testId = undefined,\n}: FieldValidationErrorProps) => {\n if (!error) {\n return null;\n }\n\n let tmp_errors: FieldError[] = [];\n\n if (typeof error === 'object' && !(error instanceof Array)) {\n const error_object = error as Record<string, FieldError[]>;\n Object.keys(error).forEach((key) => {\n tmp_errors = [...tmp_errors, ...error_object[key]];\n });\n }\n\n const errorArray: FieldError[] =\n JSON.stringify(tmp_errors) !== '[]' ? tmp_errors : (error as FieldError[]);\n const errorStrings: string[] = errorArray.map((e) => e.message) as string[];\n const ariaString = `Error: ${errorStrings.join('\\n')}`;\n\n return (\n <ul\n data-testid={slugify(testId || errorStrings.join())}\n aria-label={ariaString} // TODO: ist das richtig @Hannes?\n >\n {errorStrings.map((errorString: string, i: number) => (\n // eslint-disable-next-line react/no-array-index-key\n <li key={`error_${i}`}>\n <div>{errorString}</div>\n </li>\n ))}\n </ul>\n );\n};\n\nexport default FieldValidationError;\n","import FieldValidationError from './FieldValidationError';\n\nexport type { FieldValidationErrorProps } from './FieldValidationError';\n\nexport { FieldValidationError };\n\nexport default FieldValidationError;\n"],"mappings":";;;;;AA0CU;AA9BV,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA,SAAS;AACX,MAAiC;AAC/B,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,aAA2B,CAAC;AAEhC,MAAI,OAAO,UAAU,YAAY,EAAE,iBAAiB,QAAQ;AAC1D,UAAM,eAAe;AACrB,WAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAClC,mBAAa,CAAC,GAAG,YAAY,GAAG,aAAa,GAAG,CAAC;AAAA,IACnD,CAAC;AAAA,EACH;AAEA,QAAM,aACJ,KAAK,UAAU,UAAU,MAAM,OAAO,aAAc;AACtD,QAAM,eAAyB,WAAW,IAAI,CAAC,MAAM,EAAE,OAAO;AAC9D,QAAM,aAAa,UAAU,aAAa,KAAK,IAAI,CAAC;AAEpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,QAAQ,UAAU,aAAa,KAAK,CAAC;AAAA,MAClD,cAAY;AAAA,MAEX,uBAAa,IAAI,CAAC,aAAqB;AAAA;AAAA,QAEtC,oBAAC,QACC,8BAAC,SAAK,uBAAY,KADX,SAAS,CAAC,EAEnB;AAAA,OACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,+BAAQ;;;AC3Cf,IAAOA,gCAAQ;","names":["FieldValidationError_default"]}
@@ -1,15 +1,8 @@
1
- import {
2
- require_jsx_runtime
3
- } from "./chunk-RBXONCYN.js";
4
- import {
5
- __toESM
6
- } from "./chunk-LQ2VYIYD.js";
7
-
8
1
  // src/partials/FieldCopyTestIdButton/FieldCopyTestIdButton.tsx
9
- var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
10
2
  import { FaBullseye } from "react-icons/fa6";
11
3
  import cn from "classnames";
12
4
  import { Button, useLocalStorage } from "@fuf-stack/pixels";
5
+ import { jsx } from "react/jsx-runtime";
13
6
  var LOCALSTORAGE_DEBUG_KEY = "uniform:form-debug-enabled";
14
7
  var FieldCopyTestIdButton = ({
15
8
  className = void 0,
@@ -24,13 +17,13 @@ var FieldCopyTestIdButton = ({
24
17
  if (!debug) {
25
18
  return null;
26
19
  }
27
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
20
+ return /* @__PURE__ */ jsx(
28
21
  Button,
29
22
  {
30
23
  className: cn(className, "pointer-events-auto"),
31
24
  variant: "light",
32
25
  onClick: copyToClipboard,
33
- icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FaBullseye, {}),
26
+ icon: /* @__PURE__ */ jsx(FaBullseye, {}),
34
27
  size: "sm"
35
28
  }
36
29
  );
@@ -44,4 +37,4 @@ export {
44
37
  FieldCopyTestIdButton_default,
45
38
  FieldCopyTestIdButton_default2
46
39
  };
47
- //# sourceMappingURL=chunk-WT2BR5B5.js.map
40
+ //# sourceMappingURL=chunk-FNVT6LS4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/partials/FieldCopyTestIdButton/FieldCopyTestIdButton.tsx","../src/partials/FieldCopyTestIdButton/index.ts"],"sourcesContent":["import { FaBullseye } from 'react-icons/fa6';\n\nimport cn from 'classnames';\n\nimport { Button, useLocalStorage } from '@fuf-stack/pixels';\n\nexport interface FieldCopyTestIdButtonProps {\n className?: string;\n testId: string;\n}\n\nconst LOCALSTORAGE_DEBUG_KEY = 'uniform:form-debug-enabled';\n\nconst FieldCopyTestIdButton = ({\n className = undefined,\n testId,\n}: FieldCopyTestIdButtonProps) => {\n const [debug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);\n\n const copyToClipboard = () => {\n navigator.clipboard.writeText(testId).catch((err) => {\n console.error('Error copying TestId to clipboard', err);\n });\n };\n\n if (!debug) {\n return null;\n }\n\n return (\n <Button\n className={cn(className, 'pointer-events-auto')}\n variant=\"light\"\n onClick={copyToClipboard}\n icon={<FaBullseye />}\n size=\"sm\"\n />\n );\n};\nexport default FieldCopyTestIdButton;\n","import FieldCopyTestIdButton from './FieldCopyTestIdButton';\n\nexport type { FieldCopyTestIdButtonProps } from './FieldCopyTestIdButton';\n\nexport { FieldCopyTestIdButton };\n\nexport default FieldCopyTestIdButton;\n"],"mappings":";;;;;;;;AAkCY;AAlCZ,SAAS,kBAAkB;AAE3B,OAAO,QAAQ;AAEf,SAAS,QAAQ,uBAAuB;AAOxC,IAAM,yBAAyB;AAE/B,IAAM,wBAAwB,CAAC;AAAA,EAC7B,YAAY;AAAA,EACZ;AACF,MAAkC;AAChC,QAAM,CAAC,KAAK,IAAI,gBAAgB,wBAAwB,KAAK;AAE7D,QAAM,kBAAkB,MAAM;AAC5B,cAAU,UAAU,UAAU,MAAM,EAAE,MAAM,CAAC,QAAQ;AACnD,cAAQ,MAAM,qCAAqC,GAAG;AAAA,IACxD,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,WAAW,qBAAqB;AAAA,MAC9C,SAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM,4CAAC,cAAW;AAAA,MAClB,MAAK;AAAA;AAAA,EACP;AAEJ;AACA,IAAO,gCAAQ;;;ACjCf,IAAOA,iCAAQ;","names":["FieldCopyTestIdButton_default"]}
1
+ {"version":3,"sources":["../src/partials/FieldCopyTestIdButton/FieldCopyTestIdButton.tsx","../src/partials/FieldCopyTestIdButton/index.ts"],"sourcesContent":["import { FaBullseye } from 'react-icons/fa6';\n\nimport cn from 'classnames';\n\nimport { Button, useLocalStorage } from '@fuf-stack/pixels';\n\nexport interface FieldCopyTestIdButtonProps {\n className?: string;\n testId: string;\n}\n\nconst LOCALSTORAGE_DEBUG_KEY = 'uniform:form-debug-enabled';\n\nconst FieldCopyTestIdButton = ({\n className = undefined,\n testId,\n}: FieldCopyTestIdButtonProps) => {\n const [debug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);\n\n const copyToClipboard = () => {\n navigator.clipboard.writeText(testId).catch((err) => {\n console.error('Error copying TestId to clipboard', err);\n });\n };\n\n if (!debug) {\n return null;\n }\n\n return (\n <Button\n className={cn(className, 'pointer-events-auto')}\n variant=\"light\"\n onClick={copyToClipboard}\n icon={<FaBullseye />}\n size=\"sm\"\n />\n );\n};\nexport default FieldCopyTestIdButton;\n","import FieldCopyTestIdButton from './FieldCopyTestIdButton';\n\nexport type { FieldCopyTestIdButtonProps } from './FieldCopyTestIdButton';\n\nexport { FieldCopyTestIdButton };\n\nexport default FieldCopyTestIdButton;\n"],"mappings":";AAAA,SAAS,kBAAkB;AAE3B,OAAO,QAAQ;AAEf,SAAS,QAAQ,uBAAuB;AA8B5B;AAvBZ,IAAM,yBAAyB;AAE/B,IAAM,wBAAwB,CAAC;AAAA,EAC7B,YAAY;AAAA,EACZ;AACF,MAAkC;AAChC,QAAM,CAAC,KAAK,IAAI,gBAAgB,wBAAwB,KAAK;AAE7D,QAAM,kBAAkB,MAAM;AAC5B,cAAU,UAAU,UAAU,MAAM,EAAE,MAAM,CAAC,QAAQ;AACnD,cAAQ,MAAM,qCAAqC,GAAG;AAAA,IACxD,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,WAAW,qBAAqB;AAAA,MAC9C,SAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM,oBAAC,cAAW;AAAA,MAClB,MAAK;AAAA;AAAA,EACP;AAEJ;AACA,IAAO,gCAAQ;;;ACjCf,IAAOA,iCAAQ;","names":["FieldCopyTestIdButton_default"]}
@@ -2,14 +2,8 @@
2
2
 
3
3
  var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
4
4
 
5
-
6
- var _chunkLMMDXQ4Lcjs = require('./chunk-LMMDXQ4L.cjs');
7
-
8
-
9
- var _chunkAT5DS6MScjs = require('./chunk-AT5DS6MS.cjs');
10
-
11
5
  // src/partials/FieldValidationError/FieldValidationError.tsx
12
- var import_jsx_runtime = _chunkAT5DS6MScjs.__toESM.call(void 0, _chunkLMMDXQ4Lcjs.require_jsx_runtime.call(void 0, ), 1);
6
+ var _jsxruntime = require('react/jsx-runtime');
13
7
  var FieldValidationError = ({
14
8
  error,
15
9
  testId = void 0
@@ -27,14 +21,14 @@ var FieldValidationError = ({
27
21
  const errorArray = JSON.stringify(tmp_errors) !== "[]" ? tmp_errors : error;
28
22
  const errorStrings = errorArray.map((e) => e.message);
29
23
  const ariaString = `Error: ${errorStrings.join("\n")}`;
30
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
24
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31
25
  "ul",
32
26
  {
33
27
  "data-testid": _chunkBBB4FEY6cjs.slugify.call(void 0, testId || errorStrings.join()),
34
28
  "aria-label": ariaString,
35
29
  children: errorStrings.map((errorString, i) => (
36
30
  // eslint-disable-next-line react/no-array-index-key
37
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: errorString }) }, `error_${i}`)
31
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: errorString }) }, `error_${i}`)
38
32
  ))
39
33
  }
40
34
  );
@@ -48,4 +42,4 @@ var FieldValidationError_default2 = FieldValidationError_default;
48
42
 
49
43
 
50
44
  exports.FieldValidationError_default = FieldValidationError_default; exports.FieldValidationError_default2 = FieldValidationError_default2;
51
- //# sourceMappingURL=chunk-HW65ROPB.cjs.map
45
+ //# sourceMappingURL=chunk-QTL5FREE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/partials/FieldValidationError/FieldValidationError.tsx","../src/partials/FieldValidationError/index.ts"],"names":["FieldValidationError_default"],"mappings":";;;;;AA0CU;AA9BV,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA,SAAS;AACX,MAAiC;AAC/B,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,aAA2B,CAAC;AAEhC,MAAI,OAAO,UAAU,YAAY,EAAE,iBAAiB,QAAQ;AAC1D,UAAM,eAAe;AACrB,WAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAClC,mBAAa,CAAC,GAAG,YAAY,GAAG,aAAa,GAAG,CAAC;AAAA,IACnD,CAAC;AAAA,EACH;AAEA,QAAM,aACJ,KAAK,UAAU,UAAU,MAAM,OAAO,aAAc;AACtD,QAAM,eAAyB,WAAW,IAAI,CAAC,MAAM,EAAE,OAAO;AAC9D,QAAM,aAAa,UAAU,aAAa,KAAK,IAAI,CAAC;AAEpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,QAAQ,UAAU,aAAa,KAAK,CAAC;AAAA,MAClD,cAAY;AAAA,MAEX,uBAAa,IAAI,CAAC,aAAqB;AAAA;AAAA,QAEtC,oBAAC,QACC,8BAAC,SAAK,uBAAY,KADX,SAAS,CAAC,EAEnB;AAAA,OACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,+BAAQ;;;AC3Cf,IAAOA,gCAAQ","sourcesContent":["import type { FieldError } from 'react-hook-form';\n\nimport { slugify } from '../../helpers';\n\nexport interface FieldValidationErrorProps {\n error: FieldError[] | Record<string, FieldError[]>;\n testId?: string;\n}\n\n/**\n * Renders a validation error of a field\n */\nconst FieldValidationError = ({\n error,\n testId = undefined,\n}: FieldValidationErrorProps) => {\n if (!error) {\n return null;\n }\n\n let tmp_errors: FieldError[] = [];\n\n if (typeof error === 'object' && !(error instanceof Array)) {\n const error_object = error as Record<string, FieldError[]>;\n Object.keys(error).forEach((key) => {\n tmp_errors = [...tmp_errors, ...error_object[key]];\n });\n }\n\n const errorArray: FieldError[] =\n JSON.stringify(tmp_errors) !== '[]' ? tmp_errors : (error as FieldError[]);\n const errorStrings: string[] = errorArray.map((e) => e.message) as string[];\n const ariaString = `Error: ${errorStrings.join('\\n')}`;\n\n return (\n <ul\n data-testid={slugify(testId || errorStrings.join())}\n aria-label={ariaString} // TODO: ist das richtig @Hannes?\n >\n {errorStrings.map((errorString: string, i: number) => (\n // eslint-disable-next-line react/no-array-index-key\n <li key={`error_${i}`}>\n <div>{errorString}</div>\n </li>\n ))}\n </ul>\n );\n};\n\nexport default FieldValidationError;\n","import FieldValidationError from './FieldValidationError';\n\nexport type { FieldValidationErrorProps } from './FieldValidationError';\n\nexport { FieldValidationError };\n\nexport default FieldValidationError;\n"]}
@@ -1,20 +1,14 @@
1
1
  import {
2
2
  useFormContext
3
- } from "./chunk-BQTJHSDU.js";
3
+ } from "./chunk-BCMPSLSG.js";
4
4
  import {
5
5
  slugify
6
6
  } from "./chunk-V46BHM2U.js";
7
- import {
8
- require_jsx_runtime
9
- } from "./chunk-RBXONCYN.js";
10
- import {
11
- __toESM
12
- } from "./chunk-LQ2VYIYD.js";
13
7
 
14
8
  // src/SubmitButton/SubmitButton.tsx
15
9
  import cn from "classnames";
16
10
  import { Button } from "@fuf-stack/pixels";
17
- var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
11
+ import { jsx } from "react/jsx-runtime";
18
12
  var SubmitButton = ({
19
13
  children = "Submit",
20
14
  className = void 0,
@@ -27,7 +21,7 @@ var SubmitButton = ({
27
21
  const {
28
22
  formState: { isValid, isSubmitting, isValidating }
29
23
  } = useFormContext();
30
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
24
+ return /* @__PURE__ */ jsx(
31
25
  Button,
32
26
  {
33
27
  className: cn(className),
@@ -51,4 +45,4 @@ export {
51
45
  SubmitButton_default,
52
46
  SubmitButton_default2
53
47
  };
54
- //# sourceMappingURL=chunk-73CQ3KWD.js.map
48
+ //# sourceMappingURL=chunk-TEJGV6NC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"sourcesContent":["import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport cn from 'classnames';\n\nimport { Button } from '@fuf-stack/pixels';\n\nimport { slugify } from '../helpers';\nimport { useFormContext } from '../hooks';\n\nexport interface SubmitButtonProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the button */\n color?: ButtonProps['color'];\n /** If set loading animation is shown */\n loading?: boolean;\n /** function called when the button is pressed. */\n onClick?: ButtonProps['onClick'];\n /** size of the button */\n size?: ButtonProps['size'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * From SubmitButton\n */\nconst SubmitButton = ({\n children = 'Submit',\n className = undefined,\n color = 'success',\n loading = false,\n onClick = undefined,\n size = 'md',\n testId = 'form_submit_button',\n}: SubmitButtonProps) => {\n const {\n formState: { isValid, isSubmitting, isValidating },\n } = useFormContext();\n\n return (\n <Button\n className={cn(className)}\n color={color}\n testId={slugify(testId)}\n disabled={!isValid || isSubmitting || isValidating}\n loading={loading}\n onClick={onClick}\n size={size}\n type=\"submit\"\n >\n {children}\n </Button>\n );\n};\n\nexport default SubmitButton;\n","import SubmitButton from './SubmitButton';\n\nexport type { SubmitButtonProps } from './SubmitButton';\n\nexport { SubmitButton };\n\nexport default SubmitButton;\n"],"mappings":";;;;;;;;;;;;;;AAGA,OAAO,QAAQ;AAEf,SAAS,cAAc;AAuCnB;AAdJ,IAAM,eAAe,CAAC;AAAA,EACpB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AACX,MAAyB;AACvB,QAAM;AAAA,IACJ,WAAW,EAAE,SAAS,cAAc,aAAa;AAAA,EACnD,IAAI,eAAe;AAEnB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,SAAS;AAAA,MACvB;AAAA,MACA,QAAQ,QAAQ,MAAM;AAAA,MACtB,UAAU,CAAC,WAAW,gBAAgB;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MAEJ;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,uBAAQ;;;ACrDf,IAAOA,wBAAQ;","names":["SubmitButton_default"]}
1
+ {"version":3,"sources":["../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"sourcesContent":["import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport cn from 'classnames';\n\nimport { Button } from '@fuf-stack/pixels';\n\nimport { slugify } from '../helpers';\nimport { useFormContext } from '../hooks';\n\nexport interface SubmitButtonProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the button */\n color?: ButtonProps['color'];\n /** If set loading animation is shown */\n loading?: boolean;\n /** function called when the button is pressed. */\n onClick?: ButtonProps['onClick'];\n /** size of the button */\n size?: ButtonProps['size'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * From SubmitButton\n */\nconst SubmitButton = ({\n children = 'Submit',\n className = undefined,\n color = 'success',\n loading = false,\n onClick = undefined,\n size = 'md',\n testId = 'form_submit_button',\n}: SubmitButtonProps) => {\n const {\n formState: { isValid, isSubmitting, isValidating },\n } = useFormContext();\n\n return (\n <Button\n className={cn(className)}\n color={color}\n testId={slugify(testId)}\n disabled={!isValid || isSubmitting || isValidating}\n loading={loading}\n onClick={onClick}\n size={size}\n type=\"submit\"\n >\n {children}\n </Button>\n );\n};\n\nexport default SubmitButton;\n","import SubmitButton from './SubmitButton';\n\nexport type { SubmitButtonProps } from './SubmitButton';\n\nexport { SubmitButton };\n\nexport default SubmitButton;\n"],"mappings":";;;;;;;;AAGA,OAAO,QAAQ;AAEf,SAAS,cAAc;AAuCnB;AAdJ,IAAM,eAAe,CAAC;AAAA,EACpB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AACX,MAAyB;AACvB,QAAM;AAAA,IACJ,WAAW,EAAE,SAAS,cAAc,aAAa;AAAA,EACnD,IAAI,eAAe;AAEnB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,SAAS;AAAA,MACvB;AAAA,MACA,QAAQ,QAAQ,MAAM;AAAA,MACtB,UAAU,CAAC,WAAW,gBAAgB;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MAEJ;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,uBAAQ;;;ACrDf,IAAOA,wBAAQ;","names":["SubmitButton_default"]}
@@ -1,29 +1,22 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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; }
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
2
 
3
3
  var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
4
4
 
5
-
6
-
7
- var _chunkLMMDXQ4Lcjs = require('./chunk-LMMDXQ4L.cjs');
8
-
9
-
10
- var _chunkAT5DS6MScjs = require('./chunk-AT5DS6MS.cjs');
11
-
12
5
  // src/hooks/useFormContext/useFormContext.ts
13
- var import_react2 = _chunkAT5DS6MScjs.__toESM.call(void 0, _chunkLMMDXQ4Lcjs.require_react.call(void 0, ), 1);
6
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
14
7
  var _reacthookform = require('react-hook-form');
15
8
 
16
9
  // src/Form/subcomponents/FormContext.tsx
17
- var import_react = _chunkAT5DS6MScjs.__toESM.call(void 0, _chunkLMMDXQ4Lcjs.require_react.call(void 0, ), 1);
18
- var import_jsx_runtime = _chunkAT5DS6MScjs.__toESM.call(void 0, _chunkLMMDXQ4Lcjs.require_jsx_runtime.call(void 0, ), 1);
19
10
 
20
- var ValidationSchemaContext = import_react.default.createContext(void 0);
11
+
12
+ var _jsxruntime = require('react/jsx-runtime');
13
+ var ValidationSchemaContext = _react2.default.createContext(void 0);
21
14
  var FormProvider = ({
22
15
  children,
23
16
  validation = void 0,
24
17
  ...hookFormProps
25
18
  }) => {
26
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ValidationSchemaContext.Provider, { value: validation, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_reacthookform.FormProvider, { ...hookFormProps, children }) });
19
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ValidationSchemaContext.Provider, { value: validation, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reacthookform.FormProvider, { ...hookFormProps, children }) });
27
20
  };
28
21
  var FormContext_default = FormProvider;
29
22
 
@@ -65,7 +58,7 @@ var useFormContext = () => {
65
58
  getFieldState: getFieldStateOrig,
66
59
  ...otherMethods
67
60
  } = _reacthookform.useFormContext.call(void 0, );
68
- const validation = (0, import_react2.useContext)(ValidationSchemaContext);
61
+ const validation = _react.useContext.call(void 0, ValidationSchemaContext);
69
62
  const getFieldState = (name, testId) => {
70
63
  const fieldPath = typeof name === "string" ? name.replace(/\[\d+\]/g, "").split(".") : name;
71
64
  const required = validation && recursiveFieldKeySearch(validation.schema, fieldPath) || false;
@@ -91,4 +84,4 @@ var useFormContext = () => {
91
84
 
92
85
 
93
86
  exports.FormContext_default = FormContext_default; exports.recursiveFieldKeySearch = recursiveFieldKeySearch; exports.useFormContext = useFormContext;
94
- //# sourceMappingURL=chunk-AAESGATO.cjs.map
87
+ //# sourceMappingURL=chunk-WQRM7G4C.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useFormContext/useFormContext.ts","../src/Form/subcomponents/FormContext.tsx"],"names":[],"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","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"]}
@@ -1,20 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkAAESGATOcjs = require('./chunk-AAESGATO.cjs');
3
+ var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
4
4
 
5
5
 
6
6
  var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
7
7
 
8
-
9
- var _chunkLMMDXQ4Lcjs = require('./chunk-LMMDXQ4L.cjs');
10
-
11
-
12
- var _chunkAT5DS6MScjs = require('./chunk-AT5DS6MS.cjs');
13
-
14
8
  // src/SubmitButton/SubmitButton.tsx
15
9
  var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames);
16
10
  var _pixels = require('@fuf-stack/pixels');
17
- var import_jsx_runtime = _chunkAT5DS6MScjs.__toESM.call(void 0, _chunkLMMDXQ4Lcjs.require_jsx_runtime.call(void 0, ), 1);
11
+ var _jsxruntime = require('react/jsx-runtime');
18
12
  var SubmitButton = ({
19
13
  children = "Submit",
20
14
  className = void 0,
@@ -26,8 +20,8 @@ var SubmitButton = ({
26
20
  }) => {
27
21
  const {
28
22
  formState: { isValid, isSubmitting, isValidating }
29
- } = _chunkAAESGATOcjs.useFormContext.call(void 0, );
30
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
23
+ } = _chunkWQRM7G4Ccjs.useFormContext.call(void 0, );
24
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
31
25
  _pixels.Button,
32
26
  {
33
27
  className: _classnames2.default.call(void 0, className),
@@ -51,4 +45,4 @@ var SubmitButton_default2 = SubmitButton_default;
51
45
 
52
46
 
53
47
  exports.SubmitButton_default = SubmitButton_default; exports.SubmitButton_default2 = SubmitButton_default2;
54
- //# sourceMappingURL=chunk-RU72JRAY.cjs.map
48
+ //# sourceMappingURL=chunk-XUKBLFTR.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"names":["SubmitButton_default"],"mappings":";;;;;;;;AAGA,OAAO,QAAQ;AAEf,SAAS,cAAc;AAuCnB;AAdJ,IAAM,eAAe,CAAC;AAAA,EACpB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AACX,MAAyB;AACvB,QAAM;AAAA,IACJ,WAAW,EAAE,SAAS,cAAc,aAAa;AAAA,EACnD,IAAI,eAAe;AAEnB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,SAAS;AAAA,MACvB;AAAA,MACA,QAAQ,QAAQ,MAAM;AAAA,MACtB,UAAU,CAAC,WAAW,gBAAgB;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAK;AAAA,MAEJ;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,uBAAQ;;;ACrDf,IAAOA,wBAAQ","sourcesContent":["import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport cn from 'classnames';\n\nimport { Button } from '@fuf-stack/pixels';\n\nimport { slugify } from '../helpers';\nimport { useFormContext } from '../hooks';\n\nexport interface SubmitButtonProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the button */\n color?: ButtonProps['color'];\n /** If set loading animation is shown */\n loading?: boolean;\n /** function called when the button is pressed. */\n onClick?: ButtonProps['onClick'];\n /** size of the button */\n size?: ButtonProps['size'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * From SubmitButton\n */\nconst SubmitButton = ({\n children = 'Submit',\n className = undefined,\n color = 'success',\n loading = false,\n onClick = undefined,\n size = 'md',\n testId = 'form_submit_button',\n}: SubmitButtonProps) => {\n const {\n formState: { isValid, isSubmitting, isValidating },\n } = useFormContext();\n\n return (\n <Button\n className={cn(className)}\n color={color}\n testId={slugify(testId)}\n disabled={!isValid || isSubmitting || isValidating}\n loading={loading}\n onClick={onClick}\n size={size}\n type=\"submit\"\n >\n {children}\n </Button>\n );\n};\n\nexport default SubmitButton;\n","import SubmitButton from './SubmitButton';\n\nexport type { SubmitButtonProps } from './SubmitButton';\n\nexport { SubmitButton };\n\nexport default SubmitButton;\n"]}
@@ -0,0 +1,20 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/Grid/Grid.tsx
2
+ var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames);
3
+ var _jsxruntime = require('react/jsx-runtime');
4
+ var Grid = ({
5
+ children = null,
6
+ className = void 0,
7
+ testId = void 0
8
+ }) => {
9
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _classnames2.default.call(void 0, "grid gap-6", className), "data-testid": testId, children });
10
+ };
11
+ var Grid_default = Grid;
12
+
13
+ // src/Grid/index.ts
14
+ var Grid_default2 = Grid_default;
15
+
16
+
17
+
18
+
19
+ exports.Grid_default = Grid_default; exports.Grid_default2 = Grid_default2;
20
+ //# sourceMappingURL=chunk-ZPFKVKGV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Grid/Grid.tsx","../src/Grid/index.ts"],"names":["Grid_default"],"mappings":";AAEA,OAAO,QAAQ;AAoBX;AANJ,IAAM,OAAO,CAAC;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AACX,MAAiB;AACf,SACE,oBAAC,SAAI,WAAW,GAAG,cAAc,SAAS,GAAG,eAAa,QACvD,UACH;AAEJ;AAEA,IAAO,eAAQ;;;ACtBf,IAAOA,gBAAQ","sourcesContent":["import type { ReactNode } from 'react';\n\nimport cn from 'classnames';\n\nexport interface GridProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * Defines the default grid for form components\n */\nconst Grid = ({\n children = null,\n className = undefined,\n testId = undefined,\n}: GridProps) => {\n return (\n <div className={cn('grid gap-6', className)} data-testid={testId}>\n {children}\n </div>\n );\n};\n\nexport default Grid;\n","import Grid from './Grid';\n\nexport type { GridProps } from './Grid';\n\nexport { Grid };\n\nexport default Grid;\n"]}
@@ -1,7 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
  var _chunkBBB4FEY6cjs = require('../chunk-BBB4FEY6.cjs');
4
- require('../chunk-AT5DS6MS.cjs');
5
4
 
6
5
 
7
6
  exports.slugify = _chunkBBB4FEY6cjs.slugify;
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  slugify
3
3
  } from "../chunk-V46BHM2U.js";
4
- import "../chunk-LQ2VYIYD.js";
5
4
  export {
6
5
  slugify
7
6
  };
@@ -1,12 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkAAESGATOcjs = require('../chunk-AAESGATO.cjs');
4
+ var _chunkWQRM7G4Ccjs = require('../chunk-WQRM7G4C.cjs');
5
5
  require('../chunk-BBB4FEY6.cjs');
6
- require('../chunk-LMMDXQ4L.cjs');
7
- require('../chunk-AT5DS6MS.cjs');
8
6
 
9
7
 
10
8
 
11
- exports.recursiveFieldKeySearch = _chunkAAESGATOcjs.recursiveFieldKeySearch; exports.useFormContext = _chunkAAESGATOcjs.useFormContext;
9
+ exports.recursiveFieldKeySearch = _chunkWQRM7G4Ccjs.recursiveFieldKeySearch; exports.useFormContext = _chunkWQRM7G4Ccjs.useFormContext;
12
10
  //# sourceMappingURL=index.cjs.map
@@ -1,10 +1,8 @@
1
1
  import {
2
2
  recursiveFieldKeySearch,
3
3
  useFormContext
4
- } from "../chunk-BQTJHSDU.js";
4
+ } from "../chunk-BCMPSLSG.js";
5
5
  import "../chunk-V46BHM2U.js";
6
- import "../chunk-RBXONCYN.js";
7
- import "../chunk-LQ2VYIYD.js";
8
6
  export {
9
7
  recursiveFieldKeySearch,
10
8
  useFormContext
package/dist/index.cjs CHANGED
@@ -1,27 +1,25 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkUFEO2WD4cjs = require('./chunk-UFEO2WD4.cjs');
3
+ var _chunk4BELEHDQcjs = require('./chunk-4BELEHDQ.cjs');
4
4
 
5
5
 
6
- var _chunkLAHYQUKQcjs = require('./chunk-LAHYQUKQ.cjs');
6
+ var _chunkZPFKVKGVcjs = require('./chunk-ZPFKVKGV.cjs');
7
7
 
8
8
 
9
- var _chunkRU72JRAYcjs = require('./chunk-RU72JRAY.cjs');
9
+ var _chunkXUKBLFTRcjs = require('./chunk-XUKBLFTR.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkAAESGATOcjs = require('./chunk-AAESGATO.cjs');
13
+ var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
14
14
 
15
15
 
16
- var _chunkDBNZWU3Tcjs = require('./chunk-DBNZWU3T.cjs');
16
+ var _chunk22AA557Icjs = require('./chunk-22AA557I.cjs');
17
17
 
18
18
 
19
- var _chunkHW65ROPBcjs = require('./chunk-HW65ROPB.cjs');
19
+ var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
20
20
 
21
21
 
22
22
  var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
23
- require('./chunk-LMMDXQ4L.cjs');
24
- require('./chunk-AT5DS6MS.cjs');
25
23
 
26
24
 
27
25
 
@@ -31,5 +29,5 @@ require('./chunk-AT5DS6MS.cjs');
31
29
 
32
30
 
33
31
 
34
- exports.FieldCopyTestIdButton = _chunkDBNZWU3Tcjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkHW65ROPBcjs.FieldValidationError_default; exports.Form = _chunkUFEO2WD4cjs.Form_default; exports.Grid = _chunkLAHYQUKQcjs.Grid_default; exports.SubmitButton = _chunkRU72JRAYcjs.SubmitButton_default; exports.recursiveFieldKeySearch = _chunkAAESGATOcjs.recursiveFieldKeySearch; exports.slugify = _chunkBBB4FEY6cjs.slugify; exports.useFormContext = _chunkAAESGATOcjs.useFormContext;
32
+ exports.FieldCopyTestIdButton = _chunk22AA557Icjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkQTL5FREEcjs.FieldValidationError_default; exports.Form = _chunk4BELEHDQcjs.Form_default; exports.Grid = _chunkZPFKVKGVcjs.Grid_default; exports.SubmitButton = _chunkXUKBLFTRcjs.SubmitButton_default; exports.recursiveFieldKeySearch = _chunkWQRM7G4Ccjs.recursiveFieldKeySearch; exports.slugify = _chunkBBB4FEY6cjs.slugify; exports.useFormContext = _chunkWQRM7G4Ccjs.useFormContext;
35
33
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,27 +1,25 @@
1
1
  import {
2
2
  Form_default
3
- } from "./chunk-YMSVB2DX.js";
3
+ } from "./chunk-6XKDXQ4A.js";
4
4
  import {
5
5
  Grid_default
6
- } from "./chunk-YNN5AVDW.js";
6
+ } from "./chunk-4MEKDDB2.js";
7
7
  import {
8
8
  SubmitButton_default
9
- } from "./chunk-73CQ3KWD.js";
9
+ } from "./chunk-TEJGV6NC.js";
10
10
  import {
11
11
  recursiveFieldKeySearch,
12
12
  useFormContext
13
- } from "./chunk-BQTJHSDU.js";
13
+ } from "./chunk-BCMPSLSG.js";
14
14
  import {
15
15
  FieldCopyTestIdButton_default
16
- } from "./chunk-WT2BR5B5.js";
16
+ } from "./chunk-FNVT6LS4.js";
17
17
  import {
18
18
  FieldValidationError_default
19
- } from "./chunk-ZWSYKQT7.js";
19
+ } from "./chunk-DBLODROX.js";
20
20
  import {
21
21
  slugify
22
22
  } from "./chunk-V46BHM2U.js";
23
- import "./chunk-RBXONCYN.js";
24
- import "./chunk-LQ2VYIYD.js";
25
23
  export {
26
24
  FieldCopyTestIdButton_default as FieldCopyTestIdButton,
27
25
  FieldValidationError_default as FieldValidationError,
@@ -1,11 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkDBNZWU3Tcjs = require('../../chunk-DBNZWU3T.cjs');
5
- require('../../chunk-LMMDXQ4L.cjs');
6
- require('../../chunk-AT5DS6MS.cjs');
4
+ var _chunk22AA557Icjs = require('../../chunk-22AA557I.cjs');
7
5
 
8
6
 
9
7
 
10
- exports.FieldCopyTestIdButton = _chunkDBNZWU3Tcjs.FieldCopyTestIdButton_default; exports.default = _chunkDBNZWU3Tcjs.FieldCopyTestIdButton_default2;
8
+ exports.FieldCopyTestIdButton = _chunk22AA557Icjs.FieldCopyTestIdButton_default; exports.default = _chunk22AA557Icjs.FieldCopyTestIdButton_default2;
11
9
  //# sourceMappingURL=index.cjs.map
@@ -1,9 +1,7 @@
1
1
  import {
2
2
  FieldCopyTestIdButton_default,
3
3
  FieldCopyTestIdButton_default2
4
- } from "../../chunk-WT2BR5B5.js";
5
- import "../../chunk-RBXONCYN.js";
6
- import "../../chunk-LQ2VYIYD.js";
4
+ } from "../../chunk-FNVT6LS4.js";
7
5
  export {
8
6
  FieldCopyTestIdButton_default as FieldCopyTestIdButton,
9
7
  FieldCopyTestIdButton_default2 as default
@@ -1,12 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkHW65ROPBcjs = require('../../chunk-HW65ROPB.cjs');
4
+ var _chunkQTL5FREEcjs = require('../../chunk-QTL5FREE.cjs');
5
5
  require('../../chunk-BBB4FEY6.cjs');
6
- require('../../chunk-LMMDXQ4L.cjs');
7
- require('../../chunk-AT5DS6MS.cjs');
8
6
 
9
7
 
10
8
 
11
- exports.FieldValidationError = _chunkHW65ROPBcjs.FieldValidationError_default; exports.default = _chunkHW65ROPBcjs.FieldValidationError_default2;
9
+ exports.FieldValidationError = _chunkQTL5FREEcjs.FieldValidationError_default; exports.default = _chunkQTL5FREEcjs.FieldValidationError_default2;
12
10
  //# sourceMappingURL=index.cjs.map
@@ -1,10 +1,8 @@
1
1
  import {
2
2
  FieldValidationError_default,
3
3
  FieldValidationError_default2
4
- } from "../../chunk-ZWSYKQT7.js";
4
+ } from "../../chunk-DBLODROX.js";
5
5
  import "../../chunk-V46BHM2U.js";
6
- import "../../chunk-RBXONCYN.js";
7
- import "../../chunk-LQ2VYIYD.js";
8
6
  export {
9
7
  FieldValidationError_default as FieldValidationError,
10
8
  FieldValidationError_default2 as default
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuf-stack/uniform",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "fuf react form library",
5
5
  "author": "Hannes Tiede",
6
6
  "homepage": "https://github.com/fuf-stack/uniform#readme",
@@ -66,6 +66,10 @@
66
66
  "bugs": {
67
67
  "url": "https://github.com/fuf-stack/uniform/issues"
68
68
  },
69
+ "peerDependencies": {
70
+ "react": ">=18",
71
+ "react-dom": ">=18"
72
+ },
69
73
  "dependencies": {
70
74
  "@dnd-kit/core": "6.1.0",
71
75
  "@dnd-kit/modifiers": "7.0.0",
@@ -85,20 +89,20 @@
85
89
  "react-select": "5.8.0",
86
90
  "slug": "9.0.0",
87
91
  "tailwind-variants": "0.2.1",
88
- "@fuf-stack/pixels": "0.5.6",
92
+ "@fuf-stack/pixels": "0.5.7",
89
93
  "@fuf-stack/veto": "0.2.1"
90
94
  },
91
95
  "devDependencies": {
92
96
  "@types/debug": "4.1.12",
93
- "@types/react": "18.3.0",
97
+ "@types/react": "18.3.1",
94
98
  "@types/react-dom": "18.3.0",
95
99
  "@types/slug": "5.0.8",
96
- "react": "18.3.0",
97
- "react-dom": "18.3.0",
100
+ "react": "18.3.1",
101
+ "react-dom": "18.3.1",
98
102
  "@repo/storybook-config": "0.0.1",
99
- "@repo/tailwind-config": "0.0.1",
100
103
  "@repo/tsup-config": "0.0.1",
101
- "@repo/vite-config": "0.0.1"
104
+ "@repo/vite-config": "0.0.1",
105
+ "@repo/tailwind-config": "0.0.1"
102
106
  },
103
107
  "scripts": {
104
108
  "build": "tsup --config node_modules/@repo/tsup-config/config.ts",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/useFormContext/useFormContext.ts","../src/Form/subcomponents/FormContext.tsx"],"names":["import_react","React"],"mappings":";;;;;;;;;;;;AAGA,IAAAA,gBAA2B;AAC3B,SAAS,kBAAkB,0BAA0B;;;ACDrD,mBAAkB;AAqBZ;AApBN,SAAS,gBAAgB,wBAAwB;AAE1C,IAAM,0BAA0B,aAAAC,QAAM,cAE3C,MAAS;AASX,IAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA,aAAa;AAAA,EACb,GAAG;AACL,MAAyB;AACvB,SACE,4CAAC,wBAAwB,UAAxB,EAAiC,OAAO,YACvC,sDAAC,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,iBAAa,0BAAW,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","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"]}
@@ -1,31 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __commonJS = (cb, mod) => function __require() {
8
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
- // If the importer is in node compatibility mode or this is not an ESM
20
- // file that has been converted to a CommonJS file using a Babel-
21
- // compatible transform (i.e. "__esModule" has not been set), then set
22
- // "default" to the CommonJS "module.exports" for node compatibility.
23
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
- mod
25
- ));
26
-
27
-
28
-
29
-
30
- exports.__commonJS = __commonJS; exports.__toESM = __toESM;
31
- //# sourceMappingURL=chunk-AT5DS6MS.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/partials/FieldCopyTestIdButton/FieldCopyTestIdButton.tsx","../src/partials/FieldCopyTestIdButton/index.ts"],"names":["FieldCopyTestIdButton_default"],"mappings":";;;;;;;;AAkCY;AAlCZ,SAAS,kBAAkB;AAE3B,OAAO,QAAQ;AAEf,SAAS,QAAQ,uBAAuB;AAOxC,IAAM,yBAAyB;AAE/B,IAAM,wBAAwB,CAAC;AAAA,EAC7B,YAAY;AAAA,EACZ;AACF,MAAkC;AAChC,QAAM,CAAC,KAAK,IAAI,gBAAgB,wBAAwB,KAAK;AAE7D,QAAM,kBAAkB,MAAM;AAC5B,cAAU,UAAU,UAAU,MAAM,EAAE,MAAM,CAAC,QAAQ;AACnD,cAAQ,MAAM,qCAAqC,GAAG;AAAA,IACxD,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,WAAW,qBAAqB;AAAA,MAC9C,SAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM,4CAAC,cAAW;AAAA,MAClB,MAAK;AAAA;AAAA,EACP;AAEJ;AACA,IAAO,gCAAQ;;;ACjCf,IAAOA,iCAAQ","sourcesContent":["import { FaBullseye } from 'react-icons/fa6';\n\nimport cn from 'classnames';\n\nimport { Button, useLocalStorage } from '@fuf-stack/pixels';\n\nexport interface FieldCopyTestIdButtonProps {\n className?: string;\n testId: string;\n}\n\nconst LOCALSTORAGE_DEBUG_KEY = 'uniform:form-debug-enabled';\n\nconst FieldCopyTestIdButton = ({\n className = undefined,\n testId,\n}: FieldCopyTestIdButtonProps) => {\n const [debug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);\n\n const copyToClipboard = () => {\n navigator.clipboard.writeText(testId).catch((err) => {\n console.error('Error copying TestId to clipboard', err);\n });\n };\n\n if (!debug) {\n return null;\n }\n\n return (\n <Button\n className={cn(className, 'pointer-events-auto')}\n variant=\"light\"\n onClick={copyToClipboard}\n icon={<FaBullseye />}\n size=\"sm\"\n />\n );\n};\nexport default FieldCopyTestIdButton;\n","import FieldCopyTestIdButton from './FieldCopyTestIdButton';\n\nexport type { FieldCopyTestIdButtonProps } from './FieldCopyTestIdButton';\n\nexport { FieldCopyTestIdButton };\n\nexport default FieldCopyTestIdButton;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/partials/FieldValidationError/FieldValidationError.tsx","../src/partials/FieldValidationError/index.ts"],"names":["FieldValidationError_default"],"mappings":";;;;;;;;;;;AA0CU;AA9BV,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA,SAAS;AACX,MAAiC;AAC/B,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,aAA2B,CAAC;AAEhC,MAAI,OAAO,UAAU,YAAY,EAAE,iBAAiB,QAAQ;AAC1D,UAAM,eAAe;AACrB,WAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAClC,mBAAa,CAAC,GAAG,YAAY,GAAG,aAAa,GAAG,CAAC;AAAA,IACnD,CAAC;AAAA,EACH;AAEA,QAAM,aACJ,KAAK,UAAU,UAAU,MAAM,OAAO,aAAc;AACtD,QAAM,eAAyB,WAAW,IAAI,CAAC,MAAM,EAAE,OAAO;AAC9D,QAAM,aAAa,UAAU,aAAa,KAAK,IAAI,CAAC;AAEpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,QAAQ,UAAU,aAAa,KAAK,CAAC;AAAA,MAClD,cAAY;AAAA,MAEX,uBAAa,IAAI,CAAC,aAAqB;AAAA;AAAA,QAEtC,4CAAC,QACC,sDAAC,SAAK,uBAAY,KADX,SAAS,CAAC,EAEnB;AAAA,OACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,+BAAQ;;;AC3Cf,IAAOA,gCAAQ","sourcesContent":["import type { FieldError } from 'react-hook-form';\n\nimport { slugify } from '../../helpers';\n\nexport interface FieldValidationErrorProps {\n error: FieldError[] | Record<string, FieldError[]>;\n testId?: string;\n}\n\n/**\n * Renders a validation error of a field\n */\nconst FieldValidationError = ({\n error,\n testId = undefined,\n}: FieldValidationErrorProps) => {\n if (!error) {\n return null;\n }\n\n let tmp_errors: FieldError[] = [];\n\n if (typeof error === 'object' && !(error instanceof Array)) {\n const error_object = error as Record<string, FieldError[]>;\n Object.keys(error).forEach((key) => {\n tmp_errors = [...tmp_errors, ...error_object[key]];\n });\n }\n\n const errorArray: FieldError[] =\n JSON.stringify(tmp_errors) !== '[]' ? tmp_errors : (error as FieldError[]);\n const errorStrings: string[] = errorArray.map((e) => e.message) as string[];\n const ariaString = `Error: ${errorStrings.join('\\n')}`;\n\n return (\n <ul\n data-testid={slugify(testId || errorStrings.join())}\n aria-label={ariaString} // TODO: ist das richtig @Hannes?\n >\n {errorStrings.map((errorString: string, i: number) => (\n // eslint-disable-next-line react/no-array-index-key\n <li key={`error_${i}`}>\n <div>{errorString}</div>\n </li>\n ))}\n </ul>\n );\n};\n\nexport default FieldValidationError;\n","import FieldValidationError from './FieldValidationError';\n\nexport type { FieldValidationErrorProps } from './FieldValidationError';\n\nexport { FieldValidationError };\n\nexport default FieldValidationError;\n"]}