@fuf-stack/uniform 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/Form/index.cjs +5 -3
  2. package/dist/Form/index.js +4 -2
  3. package/dist/Grid/index.cjs +4 -2
  4. package/dist/Grid/index.js +3 -1
  5. package/dist/SubmitButton/index.cjs +5 -3
  6. package/dist/SubmitButton/index.js +4 -2
  7. package/dist/{chunk-TEJGV6NC.js → chunk-73CQ3KWD.js} +10 -4
  8. package/dist/{chunk-TEJGV6NC.js.map → chunk-73CQ3KWD.js.map} +1 -1
  9. package/dist/{chunk-WQRM7G4C.cjs → chunk-AAESGATO.cjs} +15 -8
  10. package/dist/chunk-AAESGATO.cjs.map +1 -0
  11. package/dist/chunk-AT5DS6MS.cjs +31 -0
  12. package/dist/chunk-AT5DS6MS.cjs.map +1 -0
  13. package/dist/{chunk-BCMPSLSG.js → chunk-BQTJHSDU.js} +14 -7
  14. package/dist/{chunk-BCMPSLSG.js.map → chunk-BQTJHSDU.js.map} +1 -1
  15. package/dist/{chunk-22AA557I.cjs → chunk-DBNZWU3T.cjs} +12 -5
  16. package/dist/chunk-DBNZWU3T.cjs.map +1 -0
  17. package/dist/{chunk-QTL5FREE.cjs → chunk-HW65ROPB.cjs} +10 -4
  18. package/dist/chunk-HW65ROPB.cjs.map +1 -0
  19. package/dist/chunk-LAHYQUKQ.cjs +27 -0
  20. package/dist/chunk-LAHYQUKQ.cjs.map +1 -0
  21. package/dist/chunk-LMMDXQ4L.cjs +3170 -0
  22. package/dist/chunk-LMMDXQ4L.cjs.map +1 -0
  23. package/dist/chunk-LQ2VYIYD.js +31 -0
  24. package/dist/chunk-LQ2VYIYD.js.map +1 -0
  25. package/dist/chunk-RBXONCYN.js +3170 -0
  26. package/dist/chunk-RBXONCYN.js.map +1 -0
  27. package/dist/{chunk-XUKBLFTR.cjs → chunk-RU72JRAY.cjs} +11 -5
  28. package/dist/chunk-RU72JRAY.cjs.map +1 -0
  29. package/dist/{chunk-4BELEHDQ.cjs → chunk-UFEO2WD4.cjs} +28 -21
  30. package/dist/chunk-UFEO2WD4.cjs.map +1 -0
  31. package/dist/{chunk-FNVT6LS4.js → chunk-WT2BR5B5.js} +11 -4
  32. package/dist/{chunk-FNVT6LS4.js.map → chunk-WT2BR5B5.js.map} +1 -1
  33. package/dist/{chunk-6XKDXQ4A.js → chunk-YMSVB2DX.js} +27 -20
  34. package/dist/{chunk-6XKDXQ4A.js.map → chunk-YMSVB2DX.js.map} +1 -1
  35. package/dist/chunk-YNN5AVDW.js +27 -0
  36. package/dist/{chunk-4MEKDDB2.js.map → chunk-YNN5AVDW.js.map} +1 -1
  37. package/dist/{chunk-DBLODROX.js → chunk-ZWSYKQT7.js} +10 -4
  38. package/dist/{chunk-DBLODROX.js.map → chunk-ZWSYKQT7.js.map} +1 -1
  39. package/dist/helpers/index.cjs +1 -0
  40. package/dist/helpers/index.js +1 -0
  41. package/dist/hooks/index.cjs +4 -2
  42. package/dist/hooks/index.js +3 -1
  43. package/dist/index.cjs +9 -7
  44. package/dist/index.js +8 -6
  45. package/dist/partials/FieldCopyTestIdButton/index.cjs +4 -2
  46. package/dist/partials/FieldCopyTestIdButton/index.js +3 -1
  47. package/dist/partials/FieldValidationError/index.cjs +4 -2
  48. package/dist/partials/FieldValidationError/index.js +3 -1
  49. package/package.json +4 -4
  50. package/dist/chunk-22AA557I.cjs.map +0 -1
  51. package/dist/chunk-4BELEHDQ.cjs.map +0 -1
  52. package/dist/chunk-4MEKDDB2.js +0 -20
  53. package/dist/chunk-QTL5FREE.cjs.map +0 -1
  54. package/dist/chunk-WQRM7G4C.cjs.map +0 -1
  55. package/dist/chunk-XUKBLFTR.cjs.map +0 -1
  56. package/dist/chunk-ZPFKVKGV.cjs +0 -20
  57. package/dist/chunk-ZPFKVKGV.cjs.map +0 -1
@@ -1,34 +1,41 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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
 
4
- var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
4
+ var _chunkAAESGATOcjs = require('./chunk-AAESGATO.cjs');
5
5
 
6
6
 
7
7
  var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
8
8
 
9
+
10
+
11
+ var _chunkLMMDXQ4Lcjs = require('./chunk-LMMDXQ4L.cjs');
12
+
13
+
14
+ var _chunkAT5DS6MScjs = require('./chunk-AT5DS6MS.cjs');
15
+
9
16
  // src/Form/Form.tsx
10
- var _react = require('react');
17
+ var import_react2 = _chunkAT5DS6MScjs.__toESM.call(void 0, _chunkLMMDXQ4Lcjs.require_react.call(void 0, ), 1);
11
18
  var _reacthookform = require('react-hook-form');
12
19
  var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames);
13
20
 
14
21
  // src/Form/subcomponents/FormDebugViewer.tsx
15
-
22
+ var import_react = _chunkAT5DS6MScjs.__toESM.call(void 0, _chunkLMMDXQ4Lcjs.require_react.call(void 0, ), 1);
16
23
  var _fa = require('react-icons/fa');
17
24
  var _fa6 = require('react-icons/fa6');
18
25
 
19
26
  var _pixels = require('@fuf-stack/pixels');
20
- var _jsxruntime = require('react/jsx-runtime');
27
+ var import_jsx_runtime = _chunkAT5DS6MScjs.__toESM.call(void 0, _chunkLMMDXQ4Lcjs.require_jsx_runtime.call(void 0, ), 1);
21
28
  var LOCALSTORAGE_DEBUG_KEY = "uniform:form-debug-enabled";
22
29
  var FormDebugViewer = ({ className = void 0 }) => {
23
30
  const {
24
31
  watch,
25
32
  formState: { dirtyFields, isValid, isSubmitting },
26
33
  validation
27
- } = _chunkWQRM7G4Ccjs.useFormContext.call(void 0, );
34
+ } = _chunkAAESGATOcjs.useFormContext.call(void 0, );
28
35
  const [debug, setDebug] = _pixels.useLocalStorage.call(void 0, LOCALSTORAGE_DEBUG_KEY, false);
29
- const [validationErrors, setValidationErrors] = _react.useState.call(void 0, null);
36
+ const [validationErrors, setValidationErrors] = (0, import_react.useState)(null);
30
37
  const formValues = watch();
31
- _react.useEffect.call(void 0,
38
+ (0, import_react.useEffect)(
32
39
  () => {
33
40
  const updateValidationErrors = async () => {
34
41
  if (validation) {
@@ -42,34 +49,34 @@ var FormDebugViewer = ({ className = void 0 }) => {
42
49
  [JSON.stringify(formValues)]
43
50
  );
44
51
  if (!debug) {
45
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
52
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
46
53
  _pixels.Button,
47
54
  {
48
55
  ariaLabel: "Enable form debug mode",
49
56
  onClick: () => setDebug(!debug),
50
57
  className: "absolute bottom-2.5 right-2.5 w-5 text-default-400",
51
58
  variant: "light",
52
- icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _fa6.FaBug, {})
59
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_fa6.FaBug, {})
53
60
  }
54
61
  );
55
62
  }
56
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
63
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57
64
  _pixels.Card,
58
65
  {
59
66
  className: _classnames2.default.call(void 0, className),
60
- header: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-row justify-between", children: [
61
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-lg", children: "Debug Mode" }),
62
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
67
+ header: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex w-full flex-row justify-between", children: [
68
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-lg", children: "Debug Mode" }),
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
63
70
  _pixels.Button,
64
71
  {
65
- icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _fa.FaTimes, { className: "text-danger" }),
72
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_fa.FaTimes, { className: "text-danger" }),
66
73
  onClick: () => setDebug(false),
67
74
  size: "sm",
68
75
  variant: "flat"
69
76
  }
70
77
  )
71
78
  ] }),
72
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
79
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
73
80
  _pixels.Json,
74
81
  {
75
82
  value: {
@@ -87,7 +94,7 @@ var FormDebugViewer = ({ className = void 0 }) => {
87
94
  var FormDebugViewer_default = FormDebugViewer;
88
95
 
89
96
  // src/Form/Form.tsx
90
-
97
+ var import_jsx_runtime2 = _chunkAT5DS6MScjs.__toESM.call(void 0, _chunkLMMDXQ4Lcjs.require_jsx_runtime.call(void 0, ), 1);
91
98
  var removeNullishFields = (obj) => {
92
99
  return JSON.parse(
93
100
  JSON.stringify(obj, (_key, value) => {
@@ -121,7 +128,7 @@ var Form = ({
121
128
  defaultValues: initialValues
122
129
  }
123
130
  );
124
- _react.useEffect.call(void 0,
131
+ (0, import_react2.useEffect)(
125
132
  () => {
126
133
  if (validationTrigger === "all-instant") {
127
134
  methods.trigger();
@@ -132,8 +139,8 @@ var Form = ({
132
139
  );
133
140
  return (
134
141
  // eslint-disable-next-line react/jsx-props-no-spreading
135
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWQRM7G4Ccjs.FormContext_default, { ...methods, validation, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-row justify-between gap-6", children: [
136
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
142
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(_chunkAAESGATOcjs.FormContext_default, { ...methods, validation, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "flex w-full flex-row justify-between gap-6", children: [
143
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
137
144
  "form",
138
145
  {
139
146
  className: _classnames2.default.call(void 0, "flex-grow", className),
@@ -143,7 +150,7 @@ var Form = ({
143
150
  children
144
151
  }
145
152
  ),
146
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FormDebugViewer_default, { className: "w-96 flex-shrink" })
153
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(FormDebugViewer_default, { className: "w-96 flex-shrink" })
147
154
  ] }) })
148
155
  );
149
156
  };
@@ -156,4 +163,4 @@ var Form_default2 = Form_default;
156
163
 
157
164
 
158
165
  exports.Form_default = Form_default; exports.Form_default2 = Form_default2;
159
- //# sourceMappingURL=chunk-4BELEHDQ.cjs.map
166
+ //# sourceMappingURL=chunk-UFEO2WD4.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Form/Form.tsx","../src/Form/subcomponents/FormDebugViewer.tsx","../src/Form/index.ts"],"names":["import_react","cn","import_jsx_runtime","Form_default"],"mappings":"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","sourcesContent":["import type { VetoInstance } from '@fuf-stack/veto';\nimport type { ReactNode } from 'react';\nimport type { FieldValues, SubmitHandler } from 'react-hook-form';\n\nimport { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport cn from 'classnames';\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?:\n | 'onChange'\n | 'onBlur'\n | 'onSubmit'\n | 'onTouched'\n | 'all'\n | 'all-instant';\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 === 'all-instant' ? 'all' : validationTrigger,\n }\n : {\n defaultValues: initialValues,\n },\n );\n\n useEffect(\n () => {\n if (validationTrigger === 'all-instant') {\n methods.trigger();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [validationTrigger],\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 } from 'react-icons/fa6';\n\nimport cn from 'classnames';\n\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';\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\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 <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,8 +1,15 @@
1
+ import {
2
+ require_jsx_runtime
3
+ } from "./chunk-RBXONCYN.js";
4
+ import {
5
+ __toESM
6
+ } from "./chunk-LQ2VYIYD.js";
7
+
1
8
  // src/partials/FieldCopyTestIdButton/FieldCopyTestIdButton.tsx
9
+ var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
2
10
  import { FaBullseye } from "react-icons/fa6";
3
11
  import cn from "classnames";
4
12
  import { Button, useLocalStorage } from "@fuf-stack/pixels";
5
- import { jsx } from "react/jsx-runtime";
6
13
  var LOCALSTORAGE_DEBUG_KEY = "uniform:form-debug-enabled";
7
14
  var FieldCopyTestIdButton = ({
8
15
  className = void 0,
@@ -17,13 +24,13 @@ var FieldCopyTestIdButton = ({
17
24
  if (!debug) {
18
25
  return null;
19
26
  }
20
- return /* @__PURE__ */ jsx(
27
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
21
28
  Button,
22
29
  {
23
30
  className: cn(className, "pointer-events-auto"),
24
31
  variant: "light",
25
32
  onClick: copyToClipboard,
26
- icon: /* @__PURE__ */ jsx(FaBullseye, {}),
33
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FaBullseye, {}),
27
34
  size: "sm"
28
35
  }
29
36
  );
@@ -37,4 +44,4 @@ export {
37
44
  FieldCopyTestIdButton_default,
38
45
  FieldCopyTestIdButton_default2
39
46
  };
40
- //# sourceMappingURL=chunk-FNVT6LS4.js.map
47
+ //# sourceMappingURL=chunk-WT2BR5B5.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":";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"]}
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,23 +1,30 @@
1
1
  import {
2
2
  FormContext_default,
3
3
  useFormContext
4
- } from "./chunk-BCMPSLSG.js";
4
+ } from "./chunk-BQTJHSDU.js";
5
5
  import {
6
6
  slugify
7
7
  } from "./chunk-V46BHM2U.js";
8
+ import {
9
+ require_jsx_runtime,
10
+ require_react
11
+ } from "./chunk-RBXONCYN.js";
12
+ import {
13
+ __toESM
14
+ } from "./chunk-LQ2VYIYD.js";
8
15
 
9
16
  // src/Form/Form.tsx
10
- import { useEffect as useEffect2 } from "react";
17
+ var import_react2 = __toESM(require_react(), 1);
11
18
  import { useForm } from "react-hook-form";
12
19
  import cn2 from "classnames";
13
20
 
14
21
  // src/Form/subcomponents/FormDebugViewer.tsx
15
- import { useEffect, useState } from "react";
22
+ var import_react = __toESM(require_react(), 1);
16
23
  import { FaTimes } from "react-icons/fa";
17
24
  import { FaBug } from "react-icons/fa6";
18
25
  import cn from "classnames";
19
26
  import { Button, Card, Json, useLocalStorage } from "@fuf-stack/pixels";
20
- import { jsx, jsxs } from "react/jsx-runtime";
27
+ var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
21
28
  var LOCALSTORAGE_DEBUG_KEY = "uniform:form-debug-enabled";
22
29
  var FormDebugViewer = ({ className = void 0 }) => {
23
30
  const {
@@ -26,9 +33,9 @@ var FormDebugViewer = ({ className = void 0 }) => {
26
33
  validation
27
34
  } = useFormContext();
28
35
  const [debug, setDebug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);
29
- const [validationErrors, setValidationErrors] = useState(null);
36
+ const [validationErrors, setValidationErrors] = (0, import_react.useState)(null);
30
37
  const formValues = watch();
31
- useEffect(
38
+ (0, import_react.useEffect)(
32
39
  () => {
33
40
  const updateValidationErrors = async () => {
34
41
  if (validation) {
@@ -42,34 +49,34 @@ var FormDebugViewer = ({ className = void 0 }) => {
42
49
  [JSON.stringify(formValues)]
43
50
  );
44
51
  if (!debug) {
45
- return /* @__PURE__ */ jsx(
52
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
46
53
  Button,
47
54
  {
48
55
  ariaLabel: "Enable form debug mode",
49
56
  onClick: () => setDebug(!debug),
50
57
  className: "absolute bottom-2.5 right-2.5 w-5 text-default-400",
51
58
  variant: "light",
52
- icon: /* @__PURE__ */ jsx(FaBug, {})
59
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FaBug, {})
53
60
  }
54
61
  );
55
62
  }
56
- return /* @__PURE__ */ jsx(
63
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57
64
  Card,
58
65
  {
59
66
  className: cn(className),
60
- header: /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-row justify-between", children: [
61
- /* @__PURE__ */ jsx("span", { className: "text-lg", children: "Debug Mode" }),
62
- /* @__PURE__ */ jsx(
67
+ header: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex w-full flex-row justify-between", children: [
68
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-lg", children: "Debug Mode" }),
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
63
70
  Button,
64
71
  {
65
- icon: /* @__PURE__ */ jsx(FaTimes, { className: "text-danger" }),
72
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FaTimes, { className: "text-danger" }),
66
73
  onClick: () => setDebug(false),
67
74
  size: "sm",
68
75
  variant: "flat"
69
76
  }
70
77
  )
71
78
  ] }),
72
- children: /* @__PURE__ */ jsx(
79
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
73
80
  Json,
74
81
  {
75
82
  value: {
@@ -87,7 +94,7 @@ var FormDebugViewer = ({ className = void 0 }) => {
87
94
  var FormDebugViewer_default = FormDebugViewer;
88
95
 
89
96
  // src/Form/Form.tsx
90
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
97
+ var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
91
98
  var removeNullishFields = (obj) => {
92
99
  return JSON.parse(
93
100
  JSON.stringify(obj, (_key, value) => {
@@ -121,7 +128,7 @@ var Form = ({
121
128
  defaultValues: initialValues
122
129
  }
123
130
  );
124
- useEffect2(
131
+ (0, import_react2.useEffect)(
125
132
  () => {
126
133
  if (validationTrigger === "all-instant") {
127
134
  methods.trigger();
@@ -132,8 +139,8 @@ var Form = ({
132
139
  );
133
140
  return (
134
141
  // eslint-disable-next-line react/jsx-props-no-spreading
135
- /* @__PURE__ */ jsx2(FormContext_default, { ...methods, validation, children: /* @__PURE__ */ jsxs2("div", { className: "flex w-full flex-row justify-between gap-6", children: [
136
- /* @__PURE__ */ jsx2(
142
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(FormContext_default, { ...methods, validation, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "flex w-full flex-row justify-between gap-6", children: [
143
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
137
144
  "form",
138
145
  {
139
146
  className: cn2("flex-grow", className),
@@ -143,7 +150,7 @@ var Form = ({
143
150
  children
144
151
  }
145
152
  ),
146
- /* @__PURE__ */ jsx2(FormDebugViewer_default, { className: "w-96 flex-shrink" })
153
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(FormDebugViewer_default, { className: "w-96 flex-shrink" })
147
154
  ] }) })
148
155
  );
149
156
  };
@@ -156,4 +163,4 @@ export {
156
163
  Form_default,
157
164
  Form_default2
158
165
  };
159
- //# sourceMappingURL=chunk-6XKDXQ4A.js.map
166
+ //# sourceMappingURL=chunk-YMSVB2DX.js.map
@@ -1 +1 @@
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 { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport cn from 'classnames';\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?:\n | 'onChange'\n | 'onBlur'\n | 'onSubmit'\n | 'onTouched'\n | 'all'\n | 'all-instant';\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 === 'all-instant' ? 'all' : validationTrigger,\n }\n : {\n defaultValues: initialValues,\n },\n );\n\n useEffect(\n () => {\n if (validationTrigger === 'all-instant') {\n methods.trigger();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [validationTrigger],\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 } from 'react-icons/fa6';\n\nimport cn from 'classnames';\n\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';\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\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 <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":["useEffect","cn","jsx","jsxs","useEffect","cn","Form_default"]}
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 { useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport cn from 'classnames';\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?:\n | 'onChange'\n | 'onBlur'\n | 'onSubmit'\n | 'onTouched'\n | 'all'\n | 'all-instant';\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 === 'all-instant' ? 'all' : validationTrigger,\n }\n : {\n defaultValues: initialValues,\n },\n );\n\n useEffect(\n () => {\n if (validationTrigger === 'all-instant') {\n methods.trigger();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [validationTrigger],\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 } from 'react-icons/fa6';\n\nimport cn from 'classnames';\n\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';\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\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 <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":["import_react","cn","import_jsx_runtime","cn","Form_default"]}
@@ -0,0 +1,27 @@
1
+ import {
2
+ require_jsx_runtime
3
+ } from "./chunk-RBXONCYN.js";
4
+ import {
5
+ __toESM
6
+ } from "./chunk-LQ2VYIYD.js";
7
+
8
+ // src/Grid/Grid.tsx
9
+ var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
10
+ import cn from "classnames";
11
+ var Grid = ({
12
+ children = null,
13
+ className = void 0,
14
+ testId = void 0
15
+ }) => {
16
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("grid gap-6", className), "data-testid": testId, children });
17
+ };
18
+ var Grid_default = Grid;
19
+
20
+ // src/Grid/index.ts
21
+ var Grid_default2 = Grid_default;
22
+
23
+ export {
24
+ Grid_default,
25
+ Grid_default2
26
+ };
27
+ //# sourceMappingURL=chunk-YNN5AVDW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Grid/Grid.tsx","../src/Grid/index.ts"],"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"],"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;","names":["Grid_default"]}
1
+ {"version":3,"sources":["../src/Grid/Grid.tsx","../src/Grid/index.ts"],"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"],"mappings":";;;;;;;;AAsBI;AApBJ,OAAO,QAAQ;AAcf,IAAM,OAAO,CAAC;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AACX,MAAiB;AACf,SACE,4CAAC,SAAI,WAAW,GAAG,cAAc,SAAS,GAAG,eAAa,QACvD,UACH;AAEJ;AAEA,IAAO,eAAQ;;;ACtBf,IAAOA,gBAAQ;","names":["Grid_default"]}
@@ -1,9 +1,15 @@
1
1
  import {
2
2
  slugify
3
3
  } from "./chunk-V46BHM2U.js";
4
+ import {
5
+ require_jsx_runtime
6
+ } from "./chunk-RBXONCYN.js";
7
+ import {
8
+ __toESM
9
+ } from "./chunk-LQ2VYIYD.js";
4
10
 
5
11
  // src/partials/FieldValidationError/FieldValidationError.tsx
6
- import { jsx } from "react/jsx-runtime";
12
+ var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
7
13
  var FieldValidationError = ({
8
14
  error,
9
15
  testId = void 0
@@ -21,14 +27,14 @@ var FieldValidationError = ({
21
27
  const errorArray = JSON.stringify(tmp_errors) !== "[]" ? tmp_errors : error;
22
28
  const errorStrings = errorArray.map((e) => e.message);
23
29
  const ariaString = `Error: ${errorStrings.join("\n")}`;
24
- return /* @__PURE__ */ jsx(
30
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
25
31
  "ul",
26
32
  {
27
33
  "data-testid": slugify(testId || errorStrings.join()),
28
34
  "aria-label": ariaString,
29
35
  children: errorStrings.map((errorString, i) => (
30
36
  // eslint-disable-next-line react/no-array-index-key
31
- /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("div", { children: errorString }) }, `error_${i}`)
37
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: errorString }) }, `error_${i}`)
32
38
  ))
33
39
  }
34
40
  );
@@ -42,4 +48,4 @@ export {
42
48
  FieldValidationError_default,
43
49
  FieldValidationError_default2
44
50
  };
45
- //# sourceMappingURL=chunk-DBLODROX.js.map
51
+ //# sourceMappingURL=chunk-ZWSYKQT7.js.map
@@ -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,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
+ {"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,6 +1,7 @@
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');
4
5
 
5
6
 
6
7
  exports.slugify = _chunkBBB4FEY6cjs.slugify;
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  slugify
3
3
  } from "../chunk-V46BHM2U.js";
4
+ import "../chunk-LQ2VYIYD.js";
4
5
  export {
5
6
  slugify
6
7
  };
@@ -1,10 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkWQRM7G4Ccjs = require('../chunk-WQRM7G4C.cjs');
4
+ var _chunkAAESGATOcjs = require('../chunk-AAESGATO.cjs');
5
5
  require('../chunk-BBB4FEY6.cjs');
6
+ require('../chunk-LMMDXQ4L.cjs');
7
+ require('../chunk-AT5DS6MS.cjs');
6
8
 
7
9
 
8
10
 
9
- exports.recursiveFieldKeySearch = _chunkWQRM7G4Ccjs.recursiveFieldKeySearch; exports.useFormContext = _chunkWQRM7G4Ccjs.useFormContext;
11
+ exports.recursiveFieldKeySearch = _chunkAAESGATOcjs.recursiveFieldKeySearch; exports.useFormContext = _chunkAAESGATOcjs.useFormContext;
10
12
  //# sourceMappingURL=index.cjs.map
@@ -1,8 +1,10 @@
1
1
  import {
2
2
  recursiveFieldKeySearch,
3
3
  useFormContext
4
- } from "../chunk-BCMPSLSG.js";
4
+ } from "../chunk-BQTJHSDU.js";
5
5
  import "../chunk-V46BHM2U.js";
6
+ import "../chunk-RBXONCYN.js";
7
+ import "../chunk-LQ2VYIYD.js";
6
8
  export {
7
9
  recursiveFieldKeySearch,
8
10
  useFormContext
package/dist/index.cjs CHANGED
@@ -1,25 +1,27 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunk4BELEHDQcjs = require('./chunk-4BELEHDQ.cjs');
3
+ var _chunkUFEO2WD4cjs = require('./chunk-UFEO2WD4.cjs');
4
4
 
5
5
 
6
- var _chunkZPFKVKGVcjs = require('./chunk-ZPFKVKGV.cjs');
6
+ var _chunkLAHYQUKQcjs = require('./chunk-LAHYQUKQ.cjs');
7
7
 
8
8
 
9
- var _chunkXUKBLFTRcjs = require('./chunk-XUKBLFTR.cjs');
9
+ var _chunkRU72JRAYcjs = require('./chunk-RU72JRAY.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
13
+ var _chunkAAESGATOcjs = require('./chunk-AAESGATO.cjs');
14
14
 
15
15
 
16
- var _chunk22AA557Icjs = require('./chunk-22AA557I.cjs');
16
+ var _chunkDBNZWU3Tcjs = require('./chunk-DBNZWU3T.cjs');
17
17
 
18
18
 
19
- var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
19
+ var _chunkHW65ROPBcjs = require('./chunk-HW65ROPB.cjs');
20
20
 
21
21
 
22
22
  var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
23
+ require('./chunk-LMMDXQ4L.cjs');
24
+ require('./chunk-AT5DS6MS.cjs');
23
25
 
24
26
 
25
27
 
@@ -29,5 +31,5 @@ var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
29
31
 
30
32
 
31
33
 
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;
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;
33
35
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,25 +1,27 @@
1
1
  import {
2
2
  Form_default
3
- } from "./chunk-6XKDXQ4A.js";
3
+ } from "./chunk-YMSVB2DX.js";
4
4
  import {
5
5
  Grid_default
6
- } from "./chunk-4MEKDDB2.js";
6
+ } from "./chunk-YNN5AVDW.js";
7
7
  import {
8
8
  SubmitButton_default
9
- } from "./chunk-TEJGV6NC.js";
9
+ } from "./chunk-73CQ3KWD.js";
10
10
  import {
11
11
  recursiveFieldKeySearch,
12
12
  useFormContext
13
- } from "./chunk-BCMPSLSG.js";
13
+ } from "./chunk-BQTJHSDU.js";
14
14
  import {
15
15
  FieldCopyTestIdButton_default
16
- } from "./chunk-FNVT6LS4.js";
16
+ } from "./chunk-WT2BR5B5.js";
17
17
  import {
18
18
  FieldValidationError_default
19
- } from "./chunk-DBLODROX.js";
19
+ } from "./chunk-ZWSYKQT7.js";
20
20
  import {
21
21
  slugify
22
22
  } from "./chunk-V46BHM2U.js";
23
+ import "./chunk-RBXONCYN.js";
24
+ import "./chunk-LQ2VYIYD.js";
23
25
  export {
24
26
  FieldCopyTestIdButton_default as FieldCopyTestIdButton,
25
27
  FieldValidationError_default as FieldValidationError,
@@ -1,9 +1,11 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunk22AA557Icjs = require('../../chunk-22AA557I.cjs');
4
+ var _chunkDBNZWU3Tcjs = require('../../chunk-DBNZWU3T.cjs');
5
+ require('../../chunk-LMMDXQ4L.cjs');
6
+ require('../../chunk-AT5DS6MS.cjs');
5
7
 
6
8
 
7
9
 
8
- exports.FieldCopyTestIdButton = _chunk22AA557Icjs.FieldCopyTestIdButton_default; exports.default = _chunk22AA557Icjs.FieldCopyTestIdButton_default2;
10
+ exports.FieldCopyTestIdButton = _chunkDBNZWU3Tcjs.FieldCopyTestIdButton_default; exports.default = _chunkDBNZWU3Tcjs.FieldCopyTestIdButton_default2;
9
11
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,9 @@
1
1
  import {
2
2
  FieldCopyTestIdButton_default,
3
3
  FieldCopyTestIdButton_default2
4
- } from "../../chunk-FNVT6LS4.js";
4
+ } from "../../chunk-WT2BR5B5.js";
5
+ import "../../chunk-RBXONCYN.js";
6
+ import "../../chunk-LQ2VYIYD.js";
5
7
  export {
6
8
  FieldCopyTestIdButton_default as FieldCopyTestIdButton,
7
9
  FieldCopyTestIdButton_default2 as default