@fuf-stack/uniform 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/CheckboxGroup/index.cjs +13 -0
  2. package/dist/CheckboxGroup/index.cjs.map +1 -0
  3. package/dist/CheckboxGroup/index.d.cts +7 -0
  4. package/dist/CheckboxGroup/index.d.ts +7 -0
  5. package/dist/CheckboxGroup/index.js +13 -0
  6. package/dist/CheckboxGroup/index.js.map +1 -0
  7. package/dist/CheckboxGroup-BYsQ0A0q.d.cts +32 -0
  8. package/dist/CheckboxGroup-BYsQ0A0q.d.ts +32 -0
  9. package/dist/FieldArray/index.cjs +3 -3
  10. package/dist/FieldArray/index.cjs.map +1 -1
  11. package/dist/FieldArray/index.js +2 -2
  12. package/dist/Form/index.cjs +2 -2
  13. package/dist/Form/index.cjs.map +1 -1
  14. package/dist/Form/index.d.cts +2 -2
  15. package/dist/Form/index.d.ts +2 -2
  16. package/dist/Form/index.js +1 -1
  17. package/dist/{Form-Bv0R3QNk.d.cts → Form-nJbG1hNH.d.cts} +1 -1
  18. package/dist/{Form-Bv0R3QNk.d.ts → Form-nJbG1hNH.d.ts} +1 -1
  19. package/dist/Grid/index.cjs.map +1 -1
  20. package/dist/Input/index.cjs +3 -3
  21. package/dist/Input/index.cjs.map +1 -1
  22. package/dist/Input/index.js +2 -2
  23. package/dist/RadioGroup/index.cjs +3 -3
  24. package/dist/RadioGroup/index.cjs.map +1 -1
  25. package/dist/RadioGroup/index.js +2 -2
  26. package/dist/Select/index.cjs +3 -3
  27. package/dist/Select/index.cjs.map +1 -1
  28. package/dist/Select/index.js +2 -2
  29. package/dist/SubmitButton/index.cjs +2 -2
  30. package/dist/SubmitButton/index.cjs.map +1 -1
  31. package/dist/SubmitButton/index.js +1 -1
  32. package/dist/Switch/index.cjs +3 -3
  33. package/dist/Switch/index.cjs.map +1 -1
  34. package/dist/Switch/index.js +2 -2
  35. package/dist/TextArea/index.cjs +3 -3
  36. package/dist/TextArea/index.cjs.map +1 -1
  37. package/dist/TextArea/index.js +2 -2
  38. package/dist/{chunk-VO7ZM3KY.cjs → chunk-2BQWUW2F.cjs} +4 -4
  39. package/dist/chunk-2BQWUW2F.cjs.map +1 -0
  40. package/dist/{chunk-BIJVBXOG.js → chunk-36F7BWKL.js} +4 -4
  41. package/dist/chunk-6GN255GP.cjs.map +1 -1
  42. package/dist/{chunk-XY7ZZARS.cjs → chunk-6NDSWWW7.cjs} +4 -4
  43. package/dist/chunk-6NDSWWW7.cjs.map +1 -0
  44. package/dist/chunk-BBB4FEY6.cjs.map +1 -1
  45. package/dist/{chunk-CRKMTDKU.js → chunk-EHPYBNHC.js} +4 -4
  46. package/dist/{chunk-NVJKXQ5W.cjs → chunk-G7FQPNDQ.cjs} +4 -4
  47. package/dist/chunk-G7FQPNDQ.cjs.map +1 -0
  48. package/dist/{chunk-BNTEIMNY.cjs → chunk-JFCOC5TW.cjs} +32 -25
  49. package/dist/chunk-JFCOC5TW.cjs.map +1 -0
  50. package/dist/chunk-KGHLS6DM.js +96 -0
  51. package/dist/chunk-KGHLS6DM.js.map +1 -0
  52. package/dist/{chunk-HT3LKDHX.cjs → chunk-KMMS4G7A.cjs} +4 -2
  53. package/dist/chunk-KMMS4G7A.cjs.map +1 -0
  54. package/dist/{chunk-EXYTFHEJ.js → chunk-LIKSUWSM.js} +4 -4
  55. package/dist/chunk-MV4JFCOJ.cjs +96 -0
  56. package/dist/chunk-MV4JFCOJ.cjs.map +1 -0
  57. package/dist/{chunk-I22ICCUC.cjs → chunk-OFKYZAVG.cjs} +4 -4
  58. package/dist/chunk-OFKYZAVG.cjs.map +1 -0
  59. package/dist/{chunk-5FMJUJ7H.js → chunk-QD6IQL6U.js} +3 -3
  60. package/dist/{chunk-5FMJUJ7H.js.map → chunk-QD6IQL6U.js.map} +1 -1
  61. package/dist/chunk-QTL5FREE.cjs.map +1 -1
  62. package/dist/{chunk-I26DVRVR.js → chunk-R7XP72I5.js} +4 -4
  63. package/dist/{chunk-OV5RMSYD.js → chunk-T3CCNJHK.js} +4 -2
  64. package/dist/chunk-T3CCNJHK.js.map +1 -0
  65. package/dist/{chunk-6NZVSPFX.js → chunk-UDRSTJBU.js} +4 -4
  66. package/dist/{chunk-4IT2WVQK.cjs → chunk-VXVDNHDV.cjs} +4 -4
  67. package/dist/chunk-VXVDNHDV.cjs.map +1 -0
  68. package/dist/chunk-WQRM7G4C.cjs.map +1 -1
  69. package/dist/{chunk-AGAYQTFD.cjs → chunk-XJ3JTLXZ.cjs} +3 -3
  70. package/dist/chunk-XJ3JTLXZ.cjs.map +1 -0
  71. package/dist/{chunk-KFRKKWZT.js → chunk-Y4CFVCUN.js} +32 -25
  72. package/dist/chunk-Y4CFVCUN.js.map +1 -0
  73. package/dist/{chunk-2Z3YMYNN.js → chunk-Y5JGQJI7.js} +4 -4
  74. package/dist/{chunk-OS4SMYPO.cjs → chunk-ZVBX5EKB.cjs} +4 -4
  75. package/dist/chunk-ZVBX5EKB.cjs.map +1 -0
  76. package/dist/helpers/index.cjs.map +1 -1
  77. package/dist/hooks/index.cjs.map +1 -1
  78. package/dist/hooks/index.d.cts +4 -4
  79. package/dist/hooks/index.d.ts +4 -4
  80. package/dist/index.cjs +16 -12
  81. package/dist/index.cjs.map +1 -1
  82. package/dist/index.d.cts +3 -2
  83. package/dist/index.d.ts +3 -2
  84. package/dist/index.js +20 -16
  85. package/dist/partials/FieldCopyTestIdButton/index.cjs +2 -2
  86. package/dist/partials/FieldCopyTestIdButton/index.cjs.map +1 -1
  87. package/dist/partials/FieldCopyTestIdButton/index.js +1 -1
  88. package/dist/partials/FieldValidationError/index.cjs.map +1 -1
  89. package/package.json +16 -11
  90. package/dist/chunk-4IT2WVQK.cjs.map +0 -1
  91. package/dist/chunk-AGAYQTFD.cjs.map +0 -1
  92. package/dist/chunk-BNTEIMNY.cjs.map +0 -1
  93. package/dist/chunk-HT3LKDHX.cjs.map +0 -1
  94. package/dist/chunk-I22ICCUC.cjs.map +0 -1
  95. package/dist/chunk-KFRKKWZT.js.map +0 -1
  96. package/dist/chunk-NVJKXQ5W.cjs.map +0 -1
  97. package/dist/chunk-OS4SMYPO.cjs.map +0 -1
  98. package/dist/chunk-OV5RMSYD.js.map +0 -1
  99. package/dist/chunk-VO7ZM3KY.cjs.map +0 -1
  100. package/dist/chunk-XY7ZZARS.cjs.map +0 -1
  101. /package/dist/{chunk-BIJVBXOG.js.map → chunk-36F7BWKL.js.map} +0 -0
  102. /package/dist/{chunk-CRKMTDKU.js.map → chunk-EHPYBNHC.js.map} +0 -0
  103. /package/dist/{chunk-EXYTFHEJ.js.map → chunk-LIKSUWSM.js.map} +0 -0
  104. /package/dist/{chunk-I26DVRVR.js.map → chunk-R7XP72I5.js.map} +0 -0
  105. /package/dist/{chunk-6NZVSPFX.js.map → chunk-UDRSTJBU.js.map} +0 -0
  106. /package/dist/{chunk-2Z3YMYNN.js.map → chunk-Y5JGQJI7.js.map} +0 -0
@@ -1,9 +1,9 @@
1
- import {
2
- FieldCopyTestIdButton_default
3
- } from "./chunk-OV5RMSYD.js";
4
1
  import {
5
2
  FieldValidationError_default
6
3
  } from "./chunk-DBLODROX.js";
4
+ import {
5
+ FieldCopyTestIdButton_default
6
+ } from "./chunk-T3CCNJHK.js";
7
7
  import {
8
8
  useFormContext
9
9
  } from "./chunk-BCMPSLSG.js";
@@ -73,4 +73,4 @@ export {
73
73
  TextArea_default,
74
74
  TextArea_default2
75
75
  };
76
- //# sourceMappingURL=chunk-6NZVSPFX.js.map
76
+ //# sourceMappingURL=chunk-UDRSTJBU.js.map
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkHT3LKDHXcjs = require('./chunk-HT3LKDHX.cjs');
3
+ var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
4
4
 
5
5
 
6
- var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
6
+ var _chunkKMMS4G7Acjs = require('./chunk-KMMS4G7A.cjs');
7
7
 
8
8
 
9
9
  var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
@@ -47,7 +47,7 @@ var TextArea = ({
47
47
  isInvalid: invalid,
48
48
  label: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
49
49
  label,
50
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHT3LKDHXcjs.FieldCopyTestIdButton_default, { testId })
50
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default, { testId })
51
51
  ] }),
52
52
  labelPlacement: "outside",
53
53
  placeholder,
@@ -73,4 +73,4 @@ var TextArea_default2 = TextArea_default;
73
73
 
74
74
 
75
75
  exports.TextArea_default = TextArea_default; exports.TextArea_default2 = TextArea_default2;
76
- //# sourceMappingURL=chunk-4IT2WVQK.cjs.map
76
+ //# sourceMappingURL=chunk-VXVDNHDV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-VXVDNHDV.cjs","../src/TextArea/TextArea.tsx","../src/TextArea/index.ts"],"names":["TextArea_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACRA,gDAA2B;AAE3B,0CAAyC;AAEzC,oDAAmB;AAqDgB,+CAAA;AA3BnC,IAAM,SAAA,EAAW,CAAC;AAAA,EAChB,SAAA,EAAW,IAAA;AAAA,EACX,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,SAAA,EAAW,KAAA;AAAA,EACX,MAAA,EAAQ,KAAA,CAAA;AAAA,EACR,IAAA;AAAA,EACA,YAAA,EAAc,GAAA;AAAA,EACd,MAAA,EAAQ,QAAA,EAAU,KAAA;AACpB,CAAA,EAAA,GAAqB;AACnB,EAAA,MAAM,EAAE,OAAA,EAAS,cAAc,EAAA,EAAI,8CAAA,CAAe;AAClD,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,OAAO,EAAA,EAAI,aAAA,CAAc,IAAA,EAAM,OAAO,CAAA;AAExE,EAAA,uBACE,6BAAA;AAAA,IAAC,yBAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA,EAAQ,CAAC;AAAA,QACP,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,IAAI;AAAA,MAC9D,CAAA,EAAA,GAAM;AACJ,QAAA,uBACE,6BAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,4BAAA,SAAY,CAAA;AAAA,YACvB,UAAA,EAAY;AAAA,cACV,YAAA,EAAc;AAAA,YAChB,CAAA;AAAA,YACA,aAAA,EAAa,MAAA;AAAA,YACb,YAAA,EAAc,MAAA,mBAAS,6BAAA,8CAAC,EAAA,EAAqB,MAAA,CAAc,CAAA;AAAA,YAC3D,UAAA;AAAA,YACA,UAAA,EAAY,QAAA;AAAA,YACZ,SAAA,EAAW,OAAA;AAAA,YACX,KAAA,kBACE,8BAAA,oBAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,8BACD,6BAAA,+CAAC,EAAA,EAAsB,OAAA,CAAgB;AAAA,YAAA,EAAA,CACzC,CAAA;AAAA,YAEF,cAAA,EAAe,SAAA;AAAA,YACf,WAAA;AAAA,YACA,IAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA;AAAA,YACA,MAAA;AAAA,YACA,GAAA;AAAA,YACA,OAAA,EAAQ,UAAA;AAAA,YAEP;AAAA,UAAA;AAAA,QACH,CAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACF,CAAA;AAEJ,CAAA;AAEA,IAAO,iBAAA,EAAQ,QAAA;ADnBf;AACA;AE9DA,IAAOA,kBAAAA,EAAQ,gBAAA;AFgEf;AACA;AACE;AACA;AACF,2FAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-VXVDNHDV.cjs","sourcesContent":[null,"import type { ReactNode } from 'react';\n\nimport { Controller } from 'react-hook-form';\n\nimport { Textarea as NextTextArea } from '@nextui-org/input';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport interface TextAreaProps {\n /** Child components. The content of the textarea. */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** Determines if the TextArea is disabled or not. */\n disabled?: boolean;\n /** Label displayed above the TextArea. */\n label?: ReactNode;\n /** Name the TextArea is registered at in HTML forms (react-hook-form). */\n name: string;\n /** placeholder for the textArea content. */\n placeholder?: string;\n /** Id to grab element in internal tests. */\n testId?: string;\n}\n\n/**\n * TextArea component based on [NextUI TextArea](https://nextui.org/docs/components/textarea)\n */\nconst TextArea = ({\n children = null,\n className = undefined,\n disabled = false,\n label = undefined,\n name,\n placeholder = ' ',\n testId: _testId = undefined,\n}: TextAreaProps) => {\n const { control, getFieldState } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n return (\n <Controller\n control={control}\n name={name}\n disabled={disabled}\n render={({\n field: { disabled: isDisabled, onChange, onBlur, value, ref },\n }) => {\n return (\n <NextTextArea\n className={cn(className)}\n classNames={{\n inputWrapper: 'group-data-[focus=true]:border-primary',\n }}\n data-testid={testId}\n errorMessage={error && <FieldValidationError error={error} />}\n isDisabled={isDisabled}\n isRequired={required}\n isInvalid={invalid}\n label={\n <>\n {label}\n <FieldCopyTestIdButton testId={testId} />\n </>\n }\n labelPlacement=\"outside\"\n placeholder={placeholder}\n name={name}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n ref={ref}\n variant=\"bordered\"\n >\n {children}\n </NextTextArea>\n );\n }}\n />\n );\n};\n\nexport default TextArea;\n","import TextArea from './TextArea';\n\nexport type { TextAreaProps } from './TextArea';\n\nexport { TextArea };\n\nexport default TextArea;\n"]}
@@ -1 +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
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-WQRM7G4C.cjs","../src/hooks/useFormContext/useFormContext.ts","../src/Form/subcomponents/FormContext.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-WQRM7G4C.cjs","sourcesContent":[null,"import type { VetoSchema } from '@fuf-stack/veto';\nimport type { FieldError } from 'react-hook-form';\n\nimport { useContext } from 'react';\nimport { useFormContext as useHookFormContext } from 'react-hook-form';\n\nimport { ValidationSchemaContext } from '../../Form/subcomponents/FormContext';\nimport { slugify } from '../../helpers';\n\n// FIX: This fixes the problem that the innerType is not checked for optionals...\nconst recursiveSearchInnerType = (schema: VetoSchema): boolean => {\n if (schema?._def?.innerType) {\n if (schema?._def?.innerType?._def?.typeName === 'ZodOptional') {\n return schema?._def?.innerType?._def?.typeName !== 'ZodOptional';\n }\n return recursiveSearchInnerType(schema?._def?.innerType);\n }\n return true;\n};\n\n// TODO: Fix problem \".optional().nullable()\" is required, \".nullable().optional()\" is not required...\nexport const recursiveFieldKeySearch = (\n schema: VetoSchema,\n path: string[],\n): boolean | null => {\n const [current, ...rest] = path;\n // ignore optionals on the path to the desired field\n\n let currentSchema = schema;\n\n if (schema?._def?.typeName === 'ZodOptional') {\n // @ts-expect-error not sure here\n currentSchema = schema.unwrap();\n } else if (schema?._def?.typeName === 'ZodEffects') {\n // in case of an effect, unwrap the effect and call with schema (clould be optional) and complete path.\n return recursiveFieldKeySearch(schema._def?.schema, path);\n }\n\n // TODO: This needs further investigation. It is nor yet completely clear how to handle intersections!\n if (currentSchema?._def?.typeName === 'ZodIntersection') {\n return (\n (currentSchema._def.left?.schema\n ? recursiveFieldKeySearch(currentSchema._def.left.schema, path)\n : recursiveFieldKeySearch(currentSchema._def.left, path)) ||\n (currentSchema._def.right?.schema\n ? recursiveFieldKeySearch(currentSchema._def.right.schema, path)\n : recursiveFieldKeySearch(currentSchema._def.right, path))\n );\n }\n\n // get shape of an object or objects of an array\n // @ts-expect-error not sure here\n const shape = currentSchema?.shape ?? currentSchema?.element?.shape; // ??\n\n if (shape && shape[current]) {\n // currentSchema?._def.schema.unwrap()?.shape;\n if (rest.length === 0) {\n // At the end of the path check if the field is optional or required\n return (\n shape[current]?._def?.typeName !== 'ZodOptional' &&\n recursiveSearchInnerType(shape[current])\n );\n }\n return recursiveFieldKeySearch(shape[current], rest);\n }\n\n return null; // field not found\n};\n\n/** TODO: add description */\nexport const useFormContext = () => {\n const {\n // https://react-hook-form.com/docs/useform/getfieldstate\n // for getFieldState a subscription to formState properties is needed!\n formState,\n getFieldState: getFieldStateOrig,\n ...otherMethods\n } = useHookFormContext();\n const validation = useContext(ValidationSchemaContext);\n\n // update getFieldState\n const getFieldState = (name: string, testId?: string) => {\n const fieldPath =\n typeof name === 'string' ? name.replace(/\\[\\d+\\]/g, '').split('.') : name;\n const required =\n (validation && recursiveFieldKeySearch(validation.schema, fieldPath)) ||\n false;\n const { error, ...rest } = getFieldStateOrig(name, formState);\n return {\n ...rest,\n error: error as FieldError[] | undefined, // TODO: change to correct type @Hannes ;)\n required,\n testId: slugify(testId || name),\n };\n };\n\n return {\n ...otherMethods,\n getFieldState,\n validation,\n formState,\n };\n};\n","import type { VetoInstance } from '@fuf-stack/veto';\nimport type { FormProviderProps as HookFormProviderProps } from 'react-hook-form';\n\nimport React from 'react';\nimport { FormProvider as HookFormProvider } from 'react-hook-form';\n\nexport const ValidationSchemaContext = React.createContext<\n VetoInstance | undefined\n>(undefined);\n\ninterface FormProviderProps\n extends HookFormProviderProps<Record<string, any>, any, undefined> {\n /** veto validation schema */\n validation?: VetoInstance;\n}\n\n/** Provides the veto validation context to the form */\nconst FormProvider = ({\n children,\n validation = undefined,\n ...hookFormProps\n}: FormProviderProps) => {\n return (\n <ValidationSchemaContext.Provider value={validation}>\n <HookFormProvider {...hookFormProps}>{children}</HookFormProvider>\n </ValidationSchemaContext.Provider>\n );\n};\n\nexport default FormProvider;\n"]}
@@ -19,7 +19,7 @@ var SubmitButton = ({
19
19
  testId = "form_submit_button"
20
20
  }) => {
21
21
  const {
22
- formState: { isValid, isSubmitting, isValidating }
22
+ formState: { isSubmitting, isValidating }
23
23
  } = _chunkWQRM7G4Ccjs.useFormContext.call(void 0, );
24
24
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25
25
  _pixels.Button,
@@ -27,7 +27,7 @@ var SubmitButton = ({
27
27
  className: _pixelutils.cn.call(void 0, className),
28
28
  color,
29
29
  testId: _chunkBBB4FEY6cjs.slugify.call(void 0, testId),
30
- disabled: !isValid || isSubmitting || isValidating,
30
+ disabled: isSubmitting || isValidating,
31
31
  loading,
32
32
  onClick,
33
33
  size,
@@ -45,4 +45,4 @@ var SubmitButton_default2 = SubmitButton_default;
45
45
 
46
46
 
47
47
  exports.SubmitButton_default = SubmitButton_default; exports.SubmitButton_default2 = SubmitButton_default2;
48
- //# sourceMappingURL=chunk-AGAYQTFD.cjs.map
48
+ //# sourceMappingURL=chunk-XJ3JTLXZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-XJ3JTLXZ.cjs","../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"names":["SubmitButton_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACJA,oDAAmB;AACnB,2CAAuB;AAsCnB,+CAAA;AAbJ,IAAM,aAAA,EAAe,CAAC;AAAA,EACpB,SAAA,EAAW,QAAA;AAAA,EACX,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,QAAA,EAAU,KAAA;AAAA,EACV,QAAA,EAAU,KAAA,CAAA;AAAA,EACV,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA,EAAA,GAAyB;AACvB,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,EAAE,YAAA,EAAc,aAAa;AAAA,EAC1C,EAAA,EAAI,8CAAA,CAAe;AACnB,EAAA,uBACE,6BAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,4BAAA,SAAY,CAAA;AAAA,MACvB,KAAA;AAAA,MACA,MAAA,EAAQ,uCAAA,MAAc,CAAA;AAAA,MACtB,QAAA,EAAU,aAAA,GAAgB,YAAA;AAAA,MAC1B,OAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACH,CAAA;AAEJ,CAAA;AAEA,IAAO,qBAAA,EAAQ,YAAA;ADlBf;AACA;AElCA,IAAOA,sBAAAA,EAAQ,oBAAA;AFoCf;AACA;AACE;AACA;AACF,2GAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-XJ3JTLXZ.cjs","sourcesContent":[null,"import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@fuf-stack/pixel-utils';\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: { isSubmitting, isValidating },\n } = useFormContext();\n return (\n <Button\n className={cn(className)}\n color={color}\n testId={slugify(testId)}\n disabled={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"]}
@@ -7,18 +7,18 @@ import {
7
7
  } from "./chunk-V46BHM2U.js";
8
8
 
9
9
  // src/Form/Form.tsx
10
- import { useEffect as useEffect2 } from "react";
11
10
  import { useForm } from "react-hook-form";
12
11
  import { cn as cn2 } from "@fuf-stack/pixel-utils";
13
12
 
14
13
  // src/Form/subcomponents/FormDebugViewer.tsx
15
14
  import { useEffect, useState } from "react";
16
15
  import { FaTimes } from "react-icons/fa";
17
- import { FaBug } from "react-icons/fa6";
16
+ import { FaBug, FaBullseye } from "react-icons/fa6";
18
17
  import { cn } from "@fuf-stack/pixel-utils";
19
18
  import { Button, Card, Json, useLocalStorage } from "@fuf-stack/pixels";
20
19
  import { jsx, jsxs } from "react/jsx-runtime";
21
20
  var LOCALSTORAGE_DEBUG_KEY = "uniform:form-debug-enabled";
21
+ var LOCALSTORAGE_COPY_TEST_ID_KEY = "uniform:form-debug-copy-test-id-enabled";
22
22
  var FormDebugViewer = ({ className = void 0 }) => {
23
23
  const {
24
24
  watch,
@@ -26,6 +26,10 @@ var FormDebugViewer = ({ className = void 0 }) => {
26
26
  validation
27
27
  } = useFormContext();
28
28
  const [debug, setDebug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);
29
+ const [copyTestId, setCopyTestId] = useLocalStorage(
30
+ LOCALSTORAGE_COPY_TEST_ID_KEY,
31
+ false
32
+ );
29
33
  const [validationErrors, setValidationErrors] = useState(null);
30
34
  const formValues = watch();
31
35
  useEffect(
@@ -53,7 +57,7 @@ var FormDebugViewer = ({ className = void 0 }) => {
53
57
  }
54
58
  );
55
59
  }
56
- return /* @__PURE__ */ jsx(
60
+ return /* @__PURE__ */ jsxs(
57
61
  Card,
58
62
  {
59
63
  className: cn(className),
@@ -69,18 +73,30 @@ var FormDebugViewer = ({ className = void 0 }) => {
69
73
  }
70
74
  )
71
75
  ] }),
72
- children: /* @__PURE__ */ jsx(
73
- Json,
74
- {
75
- value: {
76
- values: formValues,
77
- errors: validationErrors,
78
- dirtyFields,
79
- isValid,
80
- isSubmitting
76
+ children: [
77
+ /* @__PURE__ */ jsx(
78
+ Button,
79
+ {
80
+ variant: copyTestId ? "solid" : "light",
81
+ icon: /* @__PURE__ */ jsx(FaBullseye, {}),
82
+ className: "mb-4 ml-auto mr-auto",
83
+ onClick: () => setCopyTestId(!copyTestId),
84
+ children: copyTestId ? "Hide CopyButton" : "Show CopyButton"
81
85
  }
82
- }
83
- )
86
+ ),
87
+ /* @__PURE__ */ jsx(
88
+ Json,
89
+ {
90
+ value: {
91
+ values: formValues,
92
+ errors: validationErrors,
93
+ dirtyFields,
94
+ isValid,
95
+ isSubmitting
96
+ }
97
+ }
98
+ )
99
+ ]
84
100
  }
85
101
  );
86
102
  };
@@ -116,20 +132,11 @@ var Form = ({
116
132
  },
117
133
  // set rhf mode
118
134
  // see: https://react-hook-form.com/docs/useform#mode
119
- mode: validationTrigger === "all-instant" ? "all" : validationTrigger
135
+ mode: validationTrigger
120
136
  } : {
121
137
  defaultValues: initialValues
122
138
  }
123
139
  );
124
- useEffect2(
125
- () => {
126
- if (validationTrigger === "all-instant") {
127
- methods.trigger();
128
- }
129
- },
130
- // eslint-disable-next-line react-hooks/exhaustive-deps
131
- [validationTrigger]
132
- );
133
140
  return (
134
141
  // eslint-disable-next-line react/jsx-props-no-spreading
135
142
  /* @__PURE__ */ jsx2(FormContext_default, { ...methods, validation, children: /* @__PURE__ */ jsxs2("div", { className: "flex w-full flex-row justify-between gap-6", children: [
@@ -156,4 +163,4 @@ export {
156
163
  Form_default,
157
164
  Form_default2
158
165
  };
159
- //# sourceMappingURL=chunk-KFRKKWZT.js.map
166
+ //# sourceMappingURL=chunk-Y4CFVCUN.js.map
@@ -0,0 +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 { useForm } from 'react-hook-form';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { slugify } from '../helpers';\nimport FormProvider from './subcomponents/FormContext';\nimport FormDebugViewer from './subcomponents/FormDebugViewer';\n\n/**\n * recursively removes all fields that are null or undefined before\n * the form data is passed to the veto validation function\n */\nexport const removeNullishFields = (obj: Record<string, unknown>) => {\n return JSON.parse(\n JSON.stringify(obj, (_key, value) => {\n return value === null ? undefined : value;\n }),\n );\n};\n\nexport interface FormProps {\n /** form children */\n children: ReactNode | ReactNode[];\n /** CSS class name */\n className?: string | string[];\n /** initial form values */\n initialValues?: FieldValues;\n /** name of the form */\n name?: string;\n /** form submit handler */\n onSubmit: SubmitHandler<FieldValues>;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** veto validation schema */\n validation?: VetoInstance;\n /** when the validation should be triggered */\n validationTrigger?: 'onChange' | 'onBlur' | 'onSubmit' | 'onTouched' | 'all';\n}\n\n/**\n * Form component that has to wrap every uniform\n */\nconst Form = ({\n children,\n className = undefined,\n initialValues = undefined,\n name = undefined,\n onSubmit,\n testId = undefined,\n validation = undefined,\n validationTrigger = 'all',\n}: FormProps) => {\n const methods = useForm(\n validation\n ? {\n defaultValues: initialValues,\n resolver: async (values) => {\n const { data, errors, ...rest } = await validation.validateAsync(\n removeNullishFields(values),\n );\n // https://github.com/react-hook-form/resolvers/blob/master/zod/src/zod.ts\n return { values: data || {}, errors: errors || {}, ...rest };\n },\n // set rhf mode\n // see: https://react-hook-form.com/docs/useform#mode\n mode: validationTrigger,\n }\n : {\n defaultValues: initialValues,\n },\n );\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <FormProvider {...methods} validation={validation}>\n <div className=\"flex w-full flex-row justify-between gap-6\">\n <form\n className={cn('flex-grow', className)}\n data-testid={slugify(testId || name || '')}\n name={name}\n onSubmit={methods.handleSubmit(onSubmit)}\n >\n {children}\n </form>\n <FormDebugViewer className=\"w-96 flex-shrink\" />\n </div>\n </FormProvider>\n );\n};\n\nexport default Form;\n","import type { VetoError } from '@fuf-stack/veto';\n\nimport { useEffect, useState } from 'react';\nimport { FaTimes } from 'react-icons/fa';\nimport { FaBug, FaBullseye } from 'react-icons/fa6';\n\nimport { cn } from '@fuf-stack/pixel-utils';\nimport { Button, Card, Json, useLocalStorage } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../../hooks';\n\ninterface FormDebugViewerProps {\n /** CSS class name */\n className?: string;\n}\n\nconst LOCALSTORAGE_DEBUG_KEY = 'uniform:form-debug-enabled';\nconst LOCALSTORAGE_COPY_TEST_ID_KEY = 'uniform:form-debug-copy-test-id-enabled';\n\n/** Renders a form debug panel with information about the current form state */\nconst FormDebugViewer = ({ className = undefined }: FormDebugViewerProps) => {\n const {\n watch,\n formState: { dirtyFields, isValid, isSubmitting },\n validation,\n } = useFormContext();\n\n const [debug, setDebug] = useLocalStorage(LOCALSTORAGE_DEBUG_KEY, false);\n const [copyTestId, setCopyTestId] = useLocalStorage(\n LOCALSTORAGE_COPY_TEST_ID_KEY,\n false,\n );\n\n const [validationErrors, setValidationErrors] = useState<\n VetoError['errors'] | null\n >(null);\n\n const formValues = watch();\n\n useEffect(\n () => {\n const updateValidationErrors = async () => {\n if (validation) {\n const validateResult = await validation?.validateAsync(formValues);\n setValidationErrors(validateResult?.errors);\n }\n };\n updateValidationErrors();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(formValues)],\n );\n\n if (!debug) {\n return (\n <Button\n ariaLabel=\"Enable form debug mode\"\n onClick={() => setDebug(!debug)}\n className=\"absolute bottom-2.5 right-2.5 w-5 text-default-400\"\n variant=\"light\"\n icon={<FaBug />}\n />\n );\n }\n\n return (\n <Card\n className={cn(className)}\n header={\n <div className=\"flex w-full flex-row justify-between\">\n <span className=\"text-lg\">Debug Mode</span>\n <Button\n icon={<FaTimes className=\"text-danger\" />}\n onClick={() => setDebug(false)}\n size=\"sm\"\n variant=\"flat\"\n />\n </div>\n }\n >\n <Button\n variant={copyTestId ? 'solid' : 'light'}\n icon={<FaBullseye />}\n className=\"mb-4 ml-auto mr-auto\"\n onClick={() => setCopyTestId(!copyTestId)}\n >\n {copyTestId ? 'Hide CopyButton' : 'Show CopyButton'}\n </Button>\n <Json\n value={{\n values: formValues,\n errors: validationErrors,\n dirtyFields,\n isValid,\n isSubmitting,\n }}\n />\n </Card>\n );\n};\nexport default FormDebugViewer;\n","import Form from './Form';\n\nexport type { FormProps } from './Form';\n\nexport { Form };\n\nexport default Form;\n"],"mappings":";;;;;;;;;AAIA,SAAS,eAAe;AAExB,SAAS,MAAAA,WAAU;;;ACJnB,SAAS,WAAW,gBAAgB;AACpC,SAAS,eAAe;AACxB,SAAS,OAAO,kBAAkB;AAElC,SAAS,UAAU;AACnB,SAAS,QAAQ,MAAM,MAAM,uBAAuB;AAqDtC,cASN,YATM;AA5Cd,IAAM,yBAAyB;AAC/B,IAAM,gCAAgC;AAGtC,IAAM,kBAAkB,CAAC,EAAE,YAAY,OAAU,MAA4B;AAC3E,QAAM;AAAA,IACJ;AAAA,IACA,WAAW,EAAE,aAAa,SAAS,aAAa;AAAA,IAChD;AAAA,EACF,IAAI,eAAe;AAEnB,QAAM,CAAC,OAAO,QAAQ,IAAI,gBAAgB,wBAAwB,KAAK;AACvE,QAAM,CAAC,YAAY,aAAa,IAAI;AAAA,IAClC;AAAA,IACA;AAAA,EACF;AAEA,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAE9C,IAAI;AAEN,QAAM,aAAa,MAAM;AAEzB;AAAA,IACE,MAAM;AACJ,YAAM,yBAAyB,YAAY;AACzC,YAAI,YAAY;AACd,gBAAM,iBAAiB,MAAM,YAAY,cAAc,UAAU;AACjE,8BAAoB,gBAAgB,MAAM;AAAA,QAC5C;AAAA,MACF;AACA,6BAAuB;AAAA,IACzB;AAAA;AAAA,IAEA,CAAC,KAAK,UAAU,UAAU,CAAC;AAAA,EAC7B;AAEA,MAAI,CAAC,OAAO;AACV,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM,SAAS,CAAC,KAAK;AAAA,QAC9B,WAAU;AAAA,QACV,SAAQ;AAAA,QACR,MAAM,oBAAC,SAAM;AAAA;AAAA,IACf;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,SAAS;AAAA,MACvB,QACE,qBAAC,SAAI,WAAU,wCACb;AAAA,4BAAC,UAAK,WAAU,WAAU,wBAAU;AAAA,QACpC;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,oBAAC,WAAQ,WAAU,eAAc;AAAA,YACvC,SAAS,MAAM,SAAS,KAAK;AAAA,YAC7B,MAAK;AAAA,YACL,SAAQ;AAAA;AAAA,QACV;AAAA,SACF;AAAA,MAGF;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,aAAa,UAAU;AAAA,YAChC,MAAM,oBAAC,cAAW;AAAA,YAClB,WAAU;AAAA,YACV,SAAS,MAAM,cAAc,CAAC,UAAU;AAAA,YAEvC,uBAAa,oBAAoB;AAAA;AAAA,QACpC;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AACA,IAAO,0BAAQ;;;ADrBT,SACE,OAAAC,MADF,QAAAC,aAAA;AA/DC,IAAM,sBAAsB,CAAC,QAAiC;AACnE,SAAO,KAAK;AAAA,IACV,KAAK,UAAU,KAAK,CAAC,MAAM,UAAU;AACnC,aAAO,UAAU,OAAO,SAAY;AAAA,IACtC,CAAC;AAAA,EACH;AACF;AAwBA,IAAM,OAAO,CAAC;AAAA,EACZ;AAAA,EACA,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,OAAO;AAAA,EACP;AAAA,EACA,SAAS;AAAA,EACT,aAAa;AAAA,EACb,oBAAoB;AACtB,MAAiB;AACf,QAAM,UAAU;AAAA,IACd,aACI;AAAA,MACE,eAAe;AAAA,MACf,UAAU,OAAO,WAAW;AAC1B,cAAM,EAAE,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,WAAW;AAAA,UACjD,oBAAoB,MAAM;AAAA,QAC5B;AAEA,eAAO,EAAE,QAAQ,QAAQ,CAAC,GAAG,QAAQ,UAAU,CAAC,GAAG,GAAG,KAAK;AAAA,MAC7D;AAAA;AAAA;AAAA,MAGA,MAAM;AAAA,IACR,IACA;AAAA,MACE,eAAe;AAAA,IACjB;AAAA,EACN;AAEA;AAAA;AAAA,IAEE,gBAAAD,KAAC,uBAAc,GAAG,SAAS,YACzB,0BAAAC,MAAC,SAAI,WAAU,8CACb;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,WAAWE,IAAG,aAAa,SAAS;AAAA,UACpC,eAAa,QAAQ,UAAU,QAAQ,EAAE;AAAA,UACzC;AAAA,UACA,UAAU,QAAQ,aAAa,QAAQ;AAAA,UAEtC;AAAA;AAAA,MACH;AAAA,MACA,gBAAAF,KAAC,2BAAgB,WAAU,oBAAmB;AAAA,OAChD,GACF;AAAA;AAEJ;AAEA,IAAO,eAAQ;;;AExFf,IAAOG,gBAAQ;","names":["cn","jsx","jsxs","cn","Form_default"]}
@@ -1,9 +1,9 @@
1
- import {
2
- FieldCopyTestIdButton_default
3
- } from "./chunk-OV5RMSYD.js";
4
1
  import {
5
2
  FieldValidationError_default
6
3
  } from "./chunk-DBLODROX.js";
4
+ import {
5
+ FieldCopyTestIdButton_default
6
+ } from "./chunk-T3CCNJHK.js";
7
7
  import {
8
8
  useFormContext
9
9
  } from "./chunk-BCMPSLSG.js";
@@ -78,4 +78,4 @@ export {
78
78
  Input_default,
79
79
  Input_default2
80
80
  };
81
- //# sourceMappingURL=chunk-2Z3YMYNN.js.map
81
+ //# sourceMappingURL=chunk-Y5JGQJI7.js.map
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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
- var _chunkHT3LKDHXcjs = require('./chunk-HT3LKDHX.cjs');
3
+ var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
4
4
 
5
5
 
6
- var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
6
+ var _chunkKMMS4G7Acjs = require('./chunk-KMMS4G7A.cjs');
7
7
 
8
8
 
9
9
  var _chunkWQRM7G4Ccjs = require('./chunk-WQRM7G4C.cjs');
@@ -223,7 +223,7 @@ var FieldArray = ({
223
223
  children: label
224
224
  }
225
225
  ),
226
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHT3LKDHXcjs.FieldCopyTestIdButton_default, { testId }),
226
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default, { testId }),
227
227
  fields.map((field, index) => {
228
228
  const duplicate = (i) => {
229
229
  const values = getValues(name);
@@ -284,4 +284,4 @@ var FieldArray_default2 = FieldArray_default;
284
284
 
285
285
 
286
286
  exports.FieldArray_default = FieldArray_default; exports.FieldArray_default2 = FieldArray_default2;
287
- //# sourceMappingURL=chunk-OS4SMYPO.cjs.map
287
+ //# sourceMappingURL=chunk-ZVBX5EKB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-ZVBX5EKB.cjs","../src/FieldArray/FieldArray.tsx","../src/FieldArray/FieldArrayField.tsx","../src/FieldArray/index.ts"],"names":["jsx","Button"],"mappings":"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","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/chunk-ZVBX5EKB.cjs","sourcesContent":[null,"import type { DragEndEvent } from '@dnd-kit/core';\nimport type {\n FieldValues,\n UseFieldArrayInsert,\n UseFieldArrayMove,\n UseFieldArrayRemove,\n} from 'react-hook-form';\n\nimport { useEffect } from 'react';\nimport { useFieldArray } from 'react-hook-form';\n\nimport {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n restrictToVerticalAxis,\n restrictToWindowEdges,\n} from '@dnd-kit/modifiers';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { useInput } from '@nextui-org/input';\n\nimport { Button } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\nimport FieldArrayField from './FieldArrayField';\n\nexport type FieldArrayHideOption = 'add' | 'remove' | 'move' | 'insert' | 'all';\nexport type FieldArrayFieldChildren = (\n name: string,\n index: number,\n length: number,\n move: UseFieldArrayMove,\n insert: UseFieldArrayInsert<FieldValues, string>,\n remove: UseFieldArrayRemove,\n duplicate: (i: number) => void,\n) => JSX.Element;\n\nexport type MoveField = 'drag-drop' | 'button';\n\nexport interface FieldArrayProps {\n /** function that renders the children with provided Properties. */\n children: FieldArrayFieldChildren;\n /** Hide a set of buttons. */\n hideButtons?: FieldArrayHideOption[];\n /** label of the FieldArray. */\n label?: React.ReactNode;\n /** stops user from deleting all items. */\n lastNotDeletable?: boolean;\n /** name the FieldArray is registered in RHF */\n name: string;\n /** ID for test purposes. */\n testId?: string;\n /* how the fields can be moved */\n moveField: MoveField[];\n}\n\n/**\n * FieldArray component using react-hook-form\n */\nconst FieldArray = ({\n children,\n hideButtons = [],\n label: _label = undefined,\n lastNotDeletable = true,\n name,\n testId: _testId = undefined,\n moveField = ['button'],\n}: FieldArrayProps) => {\n const { control, getValues, getFieldState, register, trigger, watch } =\n useFormContext();\n\n const { fields, append, remove, insert, move } = useFieldArray({\n control,\n name,\n });\n\n const { error, testId, invalid, required } = getFieldState(name, _testId);\n\n register(`${name}._errors`);\n\n const formValues = watch();\n\n useEffect(() => {\n trigger(`${name}._errors`);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(formValues)]);\n\n // TODO: what about input props?\n const { label, getLabelProps, getHelperWrapperProps, getErrorMessageProps } =\n useInput({\n isInvalid: invalid,\n isRequired: required,\n errorMessage: JSON.stringify(error),\n label: _label,\n labelPlacement: 'inside',\n placeholder: ' ',\n classNames: { helperWrapper: 'block' },\n });\n\n if (lastNotDeletable && fields.length === 0) {\n append({});\n }\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor),\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (active.id !== over?.id) {\n const oldIndex = fields.findIndex((field) => field.id === active.id);\n const newIndex = fields.findIndex((field) => field.id === over?.id);\n move(oldIndex, newIndex);\n }\n };\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToVerticalAxis, restrictToWindowEdges]}\n >\n <SortableContext\n items={fields.map((field) => field.id)}\n strategy={verticalListSortingStrategy}\n >\n <ul data-testid={testId}>\n {label && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n <label\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...getLabelProps()}\n className={`${getLabelProps().className} !pointer-events-auto !static !z-0 -mb-1 ml-1 !inline-block`}\n >\n {label}\n </label>\n )}\n <FieldCopyTestIdButton testId={testId} />\n\n {fields.map((field, index) => {\n const duplicate = (i: number) => {\n const values = getValues(name);\n insert(i + 1, { ...values[i], id: null });\n };\n\n return (\n <FieldArrayField\n id={field.id}\n key={field.id}\n testId={`${testId}_${index}`}\n className=\"mb-3 mt-5 flex flex-row items-center\"\n field={field}\n fields={fields}\n hideButtons={hideButtons}\n index={index}\n insert={insert}\n lastNotDeletable={lastNotDeletable}\n move={move}\n moveField={moveField}\n name={name}\n remove={remove}\n >\n {children(\n `${name}[${index}]`,\n index,\n fields.length,\n move,\n insert,\n remove,\n duplicate,\n )}\n </FieldArrayField>\n );\n })}\n\n {!hideButtons.includes('add') && !hideButtons.includes('all') && (\n <Button\n testId={`${testId}_append`}\n size=\"sm\"\n onClick={() => append({})}\n >\n Add\n </Button>\n )}\n {/* @ts-expect-error rhf incompatibility */}\n {error?._errors && (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <div {...getHelperWrapperProps()}>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <div {...getErrorMessageProps()}>\n {/* @ts-expect-error rhf incompatibility */}\n <FieldValidationError error={error?._errors} />\n </div>\n </div>\n )}\n </ul>\n </SortableContext>\n </DndContext>\n );\n};\n\nexport default FieldArray;\n","import type {\n FieldValues,\n UseFieldArrayInsert,\n UseFieldArrayMove,\n UseFieldArrayRemove,\n} from 'react-hook-form';\nimport type { FieldArrayHideOption, MoveField } from './FieldArray';\n\nimport { useEffect } from 'react';\nimport { FaAngleDown, FaAngleUp, FaGripLines } from 'react-icons/fa';\n\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { useInput } from '@nextui-org/input';\n\nimport { Button } from '@fuf-stack/pixels';\n\nimport { slugify } from '../helpers';\nimport { useFormContext } from '../hooks';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\ninterface FieldArrayFieldProps {\n children: React.ReactNode;\n className?: string;\n field: Record<'id', string>;\n fields: Record<'id', string>[];\n hideButtons?: FieldArrayHideOption[];\n id: string | number;\n index: number;\n insert: UseFieldArrayInsert<FieldValues, string>;\n lastNotDeletable?: boolean;\n move: UseFieldArrayMove;\n moveField: MoveField[];\n testId?: string;\n name: string;\n remove: UseFieldArrayRemove;\n}\n\n/**\n * FieldArrayField component using react-hook-form\n */\nconst FieldArrayField = ({\n children,\n className = undefined,\n field,\n fields,\n hideButtons = [],\n id,\n index,\n insert,\n lastNotDeletable = true,\n move,\n moveField,\n name,\n remove,\n testId = undefined,\n}: FieldArrayFieldProps) => {\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({ id });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition,\n };\n\n const { getFieldState, register, watch, trigger } = useFormContext();\n const { error, invalid } = getFieldState(`${name}`, undefined);\n\n // TODO: what about input props? and label props? Do we need a label?\n const { getHelperWrapperProps, getErrorMessageProps } = useInput({\n isInvalid: invalid,\n errorMessage: JSON.stringify(error),\n labelPlacement: 'inside',\n placeholder: ' ',\n classNames: { helperWrapper: 'block' },\n });\n\n // TODO: Check if this is a current issue: _error gets kicked out of the formValidation if no other errors exist. validationError exists, but the structure changes.\n register(`${name}.${index}._errors`);\n\n const formValues = watch();\n useEffect(() => {\n trigger(`${name}.${index}._errors`);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(formValues)]);\n\n return (\n <>\n <li ref={setNodeRef} style={style} className={className}>\n {/** Start Button up/down */}\n {!hideButtons.includes('move') && !hideButtons.includes('all') && (\n <div className=\"mr-6 flex flex-row items-center\">\n {moveField.includes('drag-drop') && (\n <div\n className=\"mr-2 text-base text-xl\"\n data-testid={slugify(`${name}_${index}_movebutton`)}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...attributes}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...listeners}\n >\n <FaGripLines />\n </div>\n )}\n {moveField.includes('button') && (\n <div className=\"flex flex-col\">\n <Button\n testId={`${name}.${index}.up`}\n disabled={index === 0}\n onClick={() => move(index, index - 1)}\n className=\"flex rounded-b-none rounded-t-md border border-gray-300 px-2 py-2 shadow-sm\"\n >\n <FaAngleUp />\n </Button>\n <Button\n testId={`${name}.${index}.down`}\n disabled={index === fields.length - 1}\n onClick={() => move(index, index + 1)}\n className=\"flex rounded-b-md rounded-t-none border border-gray-300 px-2 py-2 shadow-sm\"\n >\n <FaAngleDown />\n </Button>\n </div>\n )}\n </div>\n )}\n {/** End Button up/down */}\n <div key={`rest-${field.id}`} className=\"w-full\">\n <div className=\"mb-2 flex items-center\">\n {/** RENDER CHILDREN */}\n <div className=\"flex-grow\" data-testid={testId}>\n {children}\n </div>\n {!hideButtons.includes('remove') &&\n !hideButtons.includes('all') &&\n (lastNotDeletable && fields.length === 1 ? null : (\n <Button onClick={() => remove(index)} className=\"ml-1\">\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </Button>\n ))}\n </div>\n\n {!hideButtons.includes('insert') &&\n !hideButtons.includes('all') &&\n index !== fields.length - 1 ? (\n <Button\n className=\"text-xs font-medium\"\n testId={`add-harbor-button-${index}`}\n onClick={() => {\n insert(index + 1, {});\n }}\n >\n insert\n </Button>\n ) : null}\n </div>\n </li>\n {error &&\n typeof error[index] !== 'undefined' &&\n // @ts-expect-error rhf incompatibility\n error[Number(index)]?._errors && ( // TODO: was String(). Check if Number is correct. (same below in FieldValidationError)\n // eslint-disable-next-line react/jsx-props-no-spreading\n <div {...getHelperWrapperProps()}>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <div {...getErrorMessageProps()}>\n {/* @ts-expect-error rhf incompatibility */}\n <FieldValidationError error={error[Number(index)]?._errors} />\n </div>\n </div>\n )}\n </>\n );\n};\nexport default FieldArrayField;\n","import FieldArray from './FieldArray';\n\nexport type {\n FieldArrayProps,\n FieldArrayHideOption,\n FieldArrayFieldChildren,\n} from './FieldArray';\n\nexport { FieldArray };\n\nexport default FieldArray;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
1
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/helpers/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,yDAA8B;AAC9B;AACE;AACF,4CAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/helpers/index.cjs"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
1
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/hooks/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,yDAA8B;AAC9B,iCAA8B;AAC9B;AACE;AACA;AACF,uIAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/hooks/index.cjs"}
@@ -2,7 +2,7 @@ import * as react_hook_form from 'react-hook-form';
2
2
  import { FieldError } from 'react-hook-form';
3
3
  import * as _fuf_stack_veto from '@fuf-stack/veto';
4
4
  import { VetoSchema } from '@fuf-stack/veto';
5
- import * as _fuf_stack_veto_dist_types_d_DhQiwhXl from '@fuf-stack/veto/dist/types.d-DhQiwhXl';
5
+ import * as _fuf_stack_veto_dist_types_d_2kF2Yz_2 from '@fuf-stack/veto/dist/types.d-2kF2Yz_2';
6
6
 
7
7
  declare const recursiveFieldKeySearch: (schema: VetoSchema, path: string[]) => boolean | null;
8
8
  /** TODO: add description */
@@ -17,9 +17,9 @@ declare const useFormContext: () => {
17
17
  isValidating: boolean;
18
18
  };
19
19
  validation: {
20
- schema: _fuf_stack_veto_dist_types_d_DhQiwhXl.a;
21
- validate: <InputType extends _fuf_stack_veto.VetoInput>(input: InputType) => _fuf_stack_veto.VetoError | _fuf_stack_veto.VetoSuccess<_fuf_stack_veto.vInfer<VetoSchema>>;
22
- validateAsync: <InputType extends _fuf_stack_veto.VetoInput>(input: InputType) => Promise<_fuf_stack_veto.VetoError | _fuf_stack_veto.VetoSuccess<_fuf_stack_veto.vInfer<VetoSchema>>>;
20
+ schema: _fuf_stack_veto_dist_types_d_2kF2Yz_2.a;
21
+ validate: <InputType extends _fuf_stack_veto.VetoInput>(input: InputType) => _fuf_stack_veto.VetoError | _fuf_stack_veto.VetoSuccess<any>;
22
+ validateAsync: <InputType extends _fuf_stack_veto.VetoInput>(input: InputType) => Promise<_fuf_stack_veto.VetoError | _fuf_stack_veto.VetoSuccess<any>>;
23
23
  } | undefined;
24
24
  formState: react_hook_form.FormState<react_hook_form.FieldValues>;
25
25
  watch: react_hook_form.UseFormWatch<react_hook_form.FieldValues>;
@@ -2,7 +2,7 @@ import * as react_hook_form from 'react-hook-form';
2
2
  import { FieldError } from 'react-hook-form';
3
3
  import * as _fuf_stack_veto from '@fuf-stack/veto';
4
4
  import { VetoSchema } from '@fuf-stack/veto';
5
- import * as _fuf_stack_veto_dist_types_d_DhQiwhXl from '@fuf-stack/veto/dist/types.d-DhQiwhXl';
5
+ import * as _fuf_stack_veto_dist_types_d_2kF2Yz_2 from '@fuf-stack/veto/dist/types.d-2kF2Yz_2';
6
6
 
7
7
  declare const recursiveFieldKeySearch: (schema: VetoSchema, path: string[]) => boolean | null;
8
8
  /** TODO: add description */
@@ -17,9 +17,9 @@ declare const useFormContext: () => {
17
17
  isValidating: boolean;
18
18
  };
19
19
  validation: {
20
- schema: _fuf_stack_veto_dist_types_d_DhQiwhXl.a;
21
- validate: <InputType extends _fuf_stack_veto.VetoInput>(input: InputType) => _fuf_stack_veto.VetoError | _fuf_stack_veto.VetoSuccess<_fuf_stack_veto.vInfer<VetoSchema>>;
22
- validateAsync: <InputType extends _fuf_stack_veto.VetoInput>(input: InputType) => Promise<_fuf_stack_veto.VetoError | _fuf_stack_veto.VetoSuccess<_fuf_stack_veto.vInfer<VetoSchema>>>;
20
+ schema: _fuf_stack_veto_dist_types_d_2kF2Yz_2.a;
21
+ validate: <InputType extends _fuf_stack_veto.VetoInput>(input: InputType) => _fuf_stack_veto.VetoError | _fuf_stack_veto.VetoSuccess<any>;
22
+ validateAsync: <InputType extends _fuf_stack_veto.VetoInput>(input: InputType) => Promise<_fuf_stack_veto.VetoError | _fuf_stack_veto.VetoSuccess<any>>;
23
23
  } | undefined;
24
24
  formState: react_hook_form.FormState<react_hook_form.FieldValues>;
25
25
  watch: react_hook_form.UseFormWatch<react_hook_form.FieldValues>;
package/dist/index.cjs CHANGED
@@ -1,36 +1,39 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunk4IT2WVQKcjs = require('./chunk-4IT2WVQK.cjs');
3
+ var _chunk2BQWUW2Fcjs = require('./chunk-2BQWUW2F.cjs');
4
4
 
5
5
 
6
- var _chunkOS4SMYPOcjs = require('./chunk-OS4SMYPO.cjs');
6
+ var _chunk6NDSWWW7cjs = require('./chunk-6NDSWWW7.cjs');
7
7
 
8
8
 
9
- var _chunkBNTEIMNYcjs = require('./chunk-BNTEIMNY.cjs');
9
+ var _chunkVXVDNHDVcjs = require('./chunk-VXVDNHDV.cjs');
10
10
 
11
11
 
12
- var _chunk6GN255GPcjs = require('./chunk-6GN255GP.cjs');
12
+ var _chunkMV4JFCOJcjs = require('./chunk-MV4JFCOJ.cjs');
13
13
 
14
14
 
15
- var _chunkVO7ZM3KYcjs = require('./chunk-VO7ZM3KY.cjs');
15
+ var _chunkZVBX5EKBcjs = require('./chunk-ZVBX5EKB.cjs');
16
16
 
17
17
 
18
- var _chunkI22ICCUCcjs = require('./chunk-I22ICCUC.cjs');
18
+ var _chunkJFCOC5TWcjs = require('./chunk-JFCOC5TW.cjs');
19
19
 
20
20
 
21
- var _chunkNVJKXQ5Wcjs = require('./chunk-NVJKXQ5W.cjs');
21
+ var _chunk6GN255GPcjs = require('./chunk-6GN255GP.cjs');
22
22
 
23
23
 
24
- var _chunkAGAYQTFDcjs = require('./chunk-AGAYQTFD.cjs');
24
+ var _chunkOFKYZAVGcjs = require('./chunk-OFKYZAVG.cjs');
25
25
 
26
26
 
27
- var _chunkXY7ZZARScjs = require('./chunk-XY7ZZARS.cjs');
27
+ var _chunkG7FQPNDQcjs = require('./chunk-G7FQPNDQ.cjs');
28
28
 
29
29
 
30
- var _chunkHT3LKDHXcjs = require('./chunk-HT3LKDHX.cjs');
30
+ var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
31
31
 
32
32
 
33
- var _chunkQTL5FREEcjs = require('./chunk-QTL5FREE.cjs');
33
+ var _chunkKMMS4G7Acjs = require('./chunk-KMMS4G7A.cjs');
34
+
35
+
36
+ var _chunkXJ3JTLXZcjs = require('./chunk-XJ3JTLXZ.cjs');
34
37
 
35
38
 
36
39
 
@@ -53,5 +56,6 @@ var _chunkBBB4FEY6cjs = require('./chunk-BBB4FEY6.cjs');
53
56
 
54
57
 
55
58
 
56
- exports.FieldArray = _chunkOS4SMYPOcjs.FieldArray_default; exports.FieldCopyTestIdButton = _chunkHT3LKDHXcjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkQTL5FREEcjs.FieldValidationError_default; exports.Form = _chunkBNTEIMNYcjs.Form_default; exports.Grid = _chunk6GN255GPcjs.Grid_default; exports.Input = _chunkVO7ZM3KYcjs.Input_default; exports.RadioGroup = _chunkI22ICCUCcjs.RadioGroup_default; exports.Select = _chunkNVJKXQ5Wcjs.Select_default; exports.SubmitButton = _chunkAGAYQTFDcjs.SubmitButton_default; exports.Switch = _chunkXY7ZZARScjs.Switch_default; exports.TextArea = _chunk4IT2WVQKcjs.TextArea_default; exports.recursiveFieldKeySearch = _chunkWQRM7G4Ccjs.recursiveFieldKeySearch; exports.slugify = _chunkBBB4FEY6cjs.slugify; exports.useFormContext = _chunkWQRM7G4Ccjs.useFormContext;
59
+
60
+ exports.CheckboxGroup = _chunkMV4JFCOJcjs.CheckboxGroup_default; exports.FieldArray = _chunkZVBX5EKBcjs.FieldArray_default; exports.FieldCopyTestIdButton = _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkQTL5FREEcjs.FieldValidationError_default; exports.Form = _chunkJFCOC5TWcjs.Form_default; exports.Grid = _chunk6GN255GPcjs.Grid_default; exports.Input = _chunk2BQWUW2Fcjs.Input_default; exports.RadioGroup = _chunkOFKYZAVGcjs.RadioGroup_default; exports.Select = _chunkG7FQPNDQcjs.Select_default; exports.SubmitButton = _chunkXJ3JTLXZcjs.SubmitButton_default; exports.Switch = _chunk6NDSWWW7cjs.Switch_default; exports.TextArea = _chunkVXVDNHDVcjs.TextArea_default; exports.recursiveFieldKeySearch = _chunkWQRM7G4Ccjs.recursiveFieldKeySearch; exports.slugify = _chunkBBB4FEY6cjs.slugify; exports.useFormContext = _chunkWQRM7G4Ccjs.useFormContext;
57
61
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
1
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,s3BAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/index.cjs"}
package/dist/index.d.cts CHANGED
@@ -1,5 +1,6 @@
1
+ export { C as CheckboxGroup, b as CheckboxGroupOption, a as CheckboxGroupProps } from './CheckboxGroup-BYsQ0A0q.cjs';
1
2
  export { F as FieldArray, c as FieldArrayFieldChildren, b as FieldArrayHideOption, a as FieldArrayProps } from './FieldArray-DUvn98Fe.cjs';
2
- export { F as Form, a as FormProps } from './Form-Bv0R3QNk.cjs';
3
+ export { F as Form, a as FormProps } from './Form-nJbG1hNH.cjs';
3
4
  export { G as Grid, a as GridProps } from './Grid-DF3L9NF3.cjs';
4
5
  export { slugify } from './helpers/index.cjs';
5
6
  export { recursiveFieldKeySearch, useFormContext } from './hooks/index.cjs';
@@ -16,6 +17,6 @@ import 'react-hook-form';
16
17
  import '@fuf-stack/veto';
17
18
  import 'react';
18
19
  import 'slug';
19
- import '@fuf-stack/veto/dist/types.d-DhQiwhXl';
20
+ import '@fuf-stack/veto/dist/types.d-2kF2Yz_2';
20
21
  import 'react-select';
21
22
  import '@fuf-stack/pixels';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
+ export { C as CheckboxGroup, b as CheckboxGroupOption, a as CheckboxGroupProps } from './CheckboxGroup-BYsQ0A0q.js';
1
2
  export { F as FieldArray, c as FieldArrayFieldChildren, b as FieldArrayHideOption, a as FieldArrayProps } from './FieldArray-DUvn98Fe.js';
2
- export { F as Form, a as FormProps } from './Form-Bv0R3QNk.js';
3
+ export { F as Form, a as FormProps } from './Form-nJbG1hNH.js';
3
4
  export { G as Grid, a as GridProps } from './Grid-DF3L9NF3.js';
4
5
  export { slugify } from './helpers/index.js';
5
6
  export { recursiveFieldKeySearch, useFormContext } from './hooks/index.js';
@@ -16,6 +17,6 @@ import 'react-hook-form';
16
17
  import '@fuf-stack/veto';
17
18
  import 'react';
18
19
  import 'slug';
19
- import '@fuf-stack/veto/dist/types.d-DhQiwhXl';
20
+ import '@fuf-stack/veto/dist/types.d-2kF2Yz_2';
20
21
  import 'react-select';
21
22
  import '@fuf-stack/pixels';
package/dist/index.js CHANGED
@@ -1,36 +1,39 @@
1
+ import {
2
+ Input_default
3
+ } from "./chunk-Y5JGQJI7.js";
4
+ import {
5
+ Switch_default
6
+ } from "./chunk-LIKSUWSM.js";
1
7
  import {
2
8
  TextArea_default
3
- } from "./chunk-6NZVSPFX.js";
9
+ } from "./chunk-UDRSTJBU.js";
10
+ import {
11
+ CheckboxGroup_default
12
+ } from "./chunk-KGHLS6DM.js";
4
13
  import {
5
14
  FieldArray_default
6
- } from "./chunk-I26DVRVR.js";
15
+ } from "./chunk-R7XP72I5.js";
7
16
  import {
8
17
  Form_default
9
- } from "./chunk-KFRKKWZT.js";
18
+ } from "./chunk-Y4CFVCUN.js";
10
19
  import {
11
20
  Grid_default
12
21
  } from "./chunk-PDCEKC3G.js";
13
- import {
14
- Input_default
15
- } from "./chunk-2Z3YMYNN.js";
16
22
  import {
17
23
  RadioGroup_default
18
- } from "./chunk-BIJVBXOG.js";
24
+ } from "./chunk-36F7BWKL.js";
19
25
  import {
20
26
  Select_default
21
- } from "./chunk-CRKMTDKU.js";
27
+ } from "./chunk-EHPYBNHC.js";
22
28
  import {
23
- SubmitButton_default
24
- } from "./chunk-5FMJUJ7H.js";
25
- import {
26
- Switch_default
27
- } from "./chunk-EXYTFHEJ.js";
29
+ FieldValidationError_default
30
+ } from "./chunk-DBLODROX.js";
28
31
  import {
29
32
  FieldCopyTestIdButton_default
30
- } from "./chunk-OV5RMSYD.js";
33
+ } from "./chunk-T3CCNJHK.js";
31
34
  import {
32
- FieldValidationError_default
33
- } from "./chunk-DBLODROX.js";
35
+ SubmitButton_default
36
+ } from "./chunk-QD6IQL6U.js";
34
37
  import {
35
38
  recursiveFieldKeySearch,
36
39
  useFormContext
@@ -39,6 +42,7 @@ import {
39
42
  slugify
40
43
  } from "./chunk-V46BHM2U.js";
41
44
  export {
45
+ CheckboxGroup_default as CheckboxGroup,
42
46
  FieldArray_default as FieldArray,
43
47
  FieldCopyTestIdButton_default as FieldCopyTestIdButton,
44
48
  FieldValidationError_default as FieldValidationError,
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkHT3LKDHXcjs = require('../../chunk-HT3LKDHX.cjs');
4
+ var _chunkKMMS4G7Acjs = require('../../chunk-KMMS4G7A.cjs');
5
5
 
6
6
 
7
7
 
8
- exports.FieldCopyTestIdButton = _chunkHT3LKDHXcjs.FieldCopyTestIdButton_default; exports.default = _chunkHT3LKDHXcjs.FieldCopyTestIdButton_default2;
8
+ exports.FieldCopyTestIdButton = _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default; exports.default = _chunkKMMS4G7Acjs.FieldCopyTestIdButton_default2;
9
9
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
1
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/partials/FieldCopyTestIdButton/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,4DAAiC;AACjC;AACE;AACA;AACF,oJAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/partials/FieldCopyTestIdButton/index.cjs"}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  FieldCopyTestIdButton_default,
3
3
  FieldCopyTestIdButton_default2
4
- } from "../../chunk-OV5RMSYD.js";
4
+ } from "../../chunk-T3CCNJHK.js";
5
5
  export {
6
6
  FieldCopyTestIdButton_default as FieldCopyTestIdButton,
7
7
  FieldCopyTestIdButton_default2 as default
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
1
+ {"version":3,"sources":["/home/runner/work/uniform/uniform/packages/uniform/dist/partials/FieldValidationError/index.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,4DAAiC;AACjC,oCAAiC;AACjC;AACE;AACA;AACF,iJAAC","file":"/home/runner/work/uniform/uniform/packages/uniform/dist/partials/FieldValidationError/index.cjs"}