@axdspub/axiom-ui-forms 0.2.10 → 0.3.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 (100) hide show
  1. package/README.md +272 -272
  2. package/library/axiom-ui-forms.d.ts +107 -33
  3. package/library/esm/_virtual/index10.js +2 -2
  4. package/library/esm/_virtual/index12.js +2 -6
  5. package/library/esm/_virtual/index12.js.map +1 -1
  6. package/library/esm/_virtual/index13.js +2 -6
  7. package/library/esm/_virtual/index13.js.map +1 -1
  8. package/library/esm/_virtual/index14.js +2 -2
  9. package/library/esm/_virtual/index15.js +2 -2
  10. package/library/esm/_virtual/index3.js +2 -2
  11. package/library/esm/_virtual/index3.js.map +1 -1
  12. package/library/esm/_virtual/index4.js +2 -2
  13. package/library/esm/_virtual/index6.js +2 -2
  14. package/library/esm/_virtual/index7.js +6 -2
  15. package/library/esm/_virtual/index7.js.map +1 -1
  16. package/library/esm/_virtual/index8.js +6 -2
  17. package/library/esm/_virtual/index8.js.map +1 -1
  18. package/library/esm/_virtual/index9.js +2 -2
  19. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js +1 -1
  20. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -1
  21. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js +23 -1
  22. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js.map +1 -1
  23. package/library/esm/node_modules/ajv/dist/compile/codegen/index.js +1 -1
  24. package/library/esm/node_modules/ajv/dist/compile/index.js +1 -1
  25. package/library/esm/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -1
  26. package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
  27. package/library/esm/node_modules/ajv/dist/vocabularies/discriminator/index.js +1 -1
  28. package/library/esm/node_modules/ajv/dist/vocabularies/format/index.js +1 -1
  29. package/library/esm/node_modules/fast-uri/index.js +1 -1
  30. package/library/esm/node_modules/hast-util-to-jsx-runtime/lib/index.js +1 -1
  31. package/library/esm/node_modules/jotai/esm/react.js +135 -0
  32. package/library/esm/node_modules/jotai/esm/react.js.map +1 -0
  33. package/library/esm/node_modules/jotai/esm/vanilla/internals.js +551 -0
  34. package/library/esm/node_modules/jotai/esm/vanilla/internals.js.map +1 -0
  35. package/library/esm/node_modules/jotai/esm/vanilla.js +111 -0
  36. package/library/esm/node_modules/jotai/esm/vanilla.js.map +1 -0
  37. package/library/esm/node_modules/json-schema-traverse/index.js +1 -1
  38. package/library/esm/node_modules/react-router/dist/development/chunk-HA7DTUK3.js +1 -1
  39. package/library/esm/node_modules/unified/lib/index.js +1 -1
  40. package/library/esm/src/Form/Components/FieldCreator.js +19 -4
  41. package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
  42. package/library/esm/src/Form/Components/FieldLabel.js +1 -1
  43. package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
  44. package/library/esm/src/Form/Components/InlineMarkdown.js.map +1 -1
  45. package/library/esm/src/Form/Components/Inputs/Boolean.js.map +1 -1
  46. package/library/esm/src/Form/Components/Inputs/Constant.js.map +1 -1
  47. package/library/esm/src/Form/Components/Inputs/Date.js.map +1 -1
  48. package/library/esm/src/Form/Components/Inputs/DateTime.js.map +1 -1
  49. package/library/esm/src/Form/Components/Inputs/GeoJSON.js.map +1 -1
  50. package/library/esm/src/Form/Components/Inputs/GeoJSONInputLoader.js.map +1 -1
  51. package/library/esm/src/Form/Components/Inputs/Geometry.js +1 -1
  52. package/library/esm/src/Form/Components/Inputs/Geometry.js.map +1 -1
  53. package/library/esm/src/Form/Components/Inputs/GeometryInputLoader.js.map +1 -1
  54. package/library/esm/src/Form/Components/Inputs/JSON.js +64 -33
  55. package/library/esm/src/Form/Components/Inputs/JSON.js.map +1 -1
  56. package/library/esm/src/Form/Components/Inputs/JSONInputLoader.js.map +1 -1
  57. package/library/esm/src/Form/Components/Inputs/LongString.js.map +1 -1
  58. package/library/esm/src/Form/Components/Inputs/Number.js +34 -9
  59. package/library/esm/src/Form/Components/Inputs/Number.js.map +1 -1
  60. package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
  61. package/library/esm/src/Form/Components/Inputs/OneOfInput.js.map +1 -1
  62. package/library/esm/src/Form/Components/Inputs/RadioGroup.js.map +1 -1
  63. package/library/esm/src/Form/Components/Inputs/SingleSelect.js +2 -1
  64. package/library/esm/src/Form/Components/Inputs/SingleSelect.js.map +1 -1
  65. package/library/esm/src/Form/Components/Inputs/String.js.map +1 -1
  66. package/library/esm/src/Form/Components/Inputs/Time.js.map +1 -1
  67. package/library/esm/src/Form/Components/Inputs/index.js +11 -0
  68. package/library/esm/src/Form/Components/Inputs/index.js.map +1 -0
  69. package/library/esm/src/Form/Components/Inputs/inputMap.js.map +1 -1
  70. package/library/esm/src/Form/Creator/FormContextProvider.js.map +1 -1
  71. package/library/esm/src/Form/Creator/FormCreator.js +17 -8
  72. package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
  73. package/library/esm/src/Form/Creator/FormFields.js.map +1 -1
  74. package/library/esm/src/Form/Creator/FormHeader.js.map +1 -1
  75. package/library/esm/src/Form/Creator/FormSection.js.map +1 -1
  76. package/library/esm/src/Form/Creator/FormSectionContextProvider.js.map +1 -1
  77. package/library/esm/src/Form/Creator/NavElement.js.map +1 -1
  78. package/library/esm/src/Form/Creator/Page.js +39 -6
  79. package/library/esm/src/Form/Creator/Page.js.map +1 -1
  80. package/library/esm/src/Form/Creator/Wizard.js +78 -21
  81. package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
  82. package/library/esm/src/Form/Manage/CopyableJSONOutput.js +3 -3
  83. package/library/esm/src/Form/Manage/CopyableJSONOutput.js.map +1 -1
  84. package/library/esm/src/library.js +9 -14
  85. package/library/esm/src/library.js.map +1 -1
  86. package/library/esm/src/utils/getters.js +33 -3
  87. package/library/esm/src/utils/getters.js.map +1 -1
  88. package/library/esm/src/utils/manipulators.js +80 -3
  89. package/library/esm/src/utils/manipulators.js.map +1 -1
  90. package/library/esm/src/utils/resolveRefs.js +44 -0
  91. package/library/esm/src/utils/resolveRefs.js.map +1 -0
  92. package/library/esm/src/utils/responsive/layoutState.js +18 -0
  93. package/library/esm/src/utils/responsive/layoutState.js.map +1 -0
  94. package/library/esm/src/utils/schemaToFormHelpers.js +157 -39
  95. package/library/esm/src/utils/schemaToFormHelpers.js.map +1 -1
  96. package/library/esm/src/utils/validators.js +4 -2
  97. package/library/esm/src/utils/validators.js.map +1 -1
  98. package/package.json +131 -129
  99. package/library/esm/src/Form/resolveRefs.js +0 -26
  100. package/library/esm/src/Form/resolveRefs.js.map +0 -1
@@ -1,39 +1,96 @@
1
1
  import { __assign } from '../../../node_modules/tslib/tslib.es6.js';
2
2
  import { calculateSectionStatus } from '../../utils/validators.js';
3
3
  import { ActivePage } from './Page.js';
4
- import { utils as index$1 } from '../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
5
- import { CaretRightIcon, CaretLeftIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
4
+ import { utils as index$1, SelectInput as Select } from '../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
5
+ import { CaretLeftIcon, CaretRightIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
6
6
  import React__default from 'react';
7
7
  import NavElement from './NavElement.js';
8
8
  import { FormSectionContextProvider, useFormSectionContext } from './FormSectionContextProvider.js';
9
9
  import { useFormContext } from './FormContextProvider.js';
10
+ import layoutAtom from '../../utils/responsive/layoutState.js';
11
+ import { useAtomValue } from '../../../node_modules/jotai/esm/react.js';
10
12
  import { useParams } from '../../../node_modules/react-router/dist/development/chunk-HA7DTUK3.js';
11
13
 
12
- var WizardNav = function (_a) {
14
+ var sortByOrder = function (a, b) {
15
+ var _a, _b;
16
+ var aOrder = (_a = a.order) !== null && _a !== void 0 ? _a : Infinity;
17
+ var bOrder = (_b = b.order) !== null && _b !== void 0 ? _b : Infinity;
18
+ return aOrder - bOrder;
19
+ };
20
+ var WizardNavMobile = function (_a) {
21
+ var _b;
22
+ var sections = _a.sections; _a.sectionStatus; _a.level;
23
+ var _c = useFormSectionContext(), activeId = _c.activeId, setActiveId = _c.setActiveId, path = _c.path;
24
+ var urlNavigable = useFormContext().urlNavigable;
25
+ var steps = (sections !== null && sections !== void 0 ? sections : []).sort(sortByOrder);
26
+ var stepsMap = Object.fromEntries(steps.map(function (p) { return [p.id, p]; }));
27
+ var currentStep = (_b = stepsMap[activeId !== null && activeId !== void 0 ? activeId : '']) !== null && _b !== void 0 ? _b : steps[0];
28
+ var currentIndex = steps.indexOf(currentStep);
29
+ var nextIndex = currentIndex + 1;
30
+ var prevIndex = currentIndex - 1;
31
+ // const params = (useParams()['*'] ?? '').split('/')
32
+ // const path = params.slice(0, level).join('/')
33
+ return (React__default.createElement("div", { className: 'flex flex-row gap-4 justify-center items-center' },
34
+ prevIndex >= 0
35
+ ? React__default.createElement(NavElement, { className: 'p-2 bg-none border-none text-sm hover:bg-slate-none', path: path, id: steps[prevIndex].id, navigable: urlNavigable !== null && urlNavigable !== void 0 ? urlNavigable : true, onClick: function () { setActiveId(steps[prevIndex].id); } },
36
+ React__default.createElement(CaretLeftIcon, { className: 'inline w-8 h-8' }))
37
+ : React__default.createElement("span", { className: index$1.createButtonClass({
38
+ className: 'p-2 bg-none border-none text-sm text-slate-400 '
39
+ }) },
40
+ React__default.createElement(CaretLeftIcon, { className: 'inline w-8 h-8' })),
41
+ React__default.createElement("div", { className: 'flex-grow' },
42
+ React__default.createElement(Select, { includePrompt: false, id: 'wizard-step-select', testId: 'wizard-step-select', className: 'shadow-lg', value: activeId !== null && activeId !== void 0 ? activeId : '', onChange: function (e) {
43
+ setActiveId(e === null || e === void 0 ? void 0 : e.value);
44
+ }, options: steps.map(function (p) {
45
+ var _a;
46
+ return ({
47
+ value: p.id,
48
+ label: (_a = p.label) !== null && _a !== void 0 ? _a : p.id
49
+ });
50
+ }) })),
51
+ nextIndex < steps.length
52
+ ? React__default.createElement(NavElement, { path: path, id: steps[nextIndex].id, navigable: urlNavigable !== null && urlNavigable !== void 0 ? urlNavigable : true, className: 'p-2 bg-none border-none text-sm hover:bg-none', onClick: function () { setActiveId(steps[nextIndex].id); } },
53
+ React__default.createElement(CaretRightIcon, { className: 'inline w-8 h-8' }))
54
+ : React__default.createElement("span", { className: index$1.createButtonClass({
55
+ className: 'p-2 bg-none border-none text-sm text-slate-400'
56
+ }) },
57
+ React__default.createElement(CaretRightIcon, { className: 'inline w-8 h-8' }))));
58
+ };
59
+ var WizardNav = function (props) {
60
+ var layout = useAtomValue(layoutAtom);
61
+ return layout.size === 'sm'
62
+ ? React__default.createElement(WizardNavMobile, __assign({}, props))
63
+ : React__default.createElement(WizardNavLargeScreen, __assign({}, props));
64
+ };
65
+ var WizardNavLargeScreen = function (_a) {
13
66
  var sections = _a.sections, sectionStatus = _a.sectionStatus; _a.level;
14
- var steps = (sections !== null && sections !== void 0 ? sections : []).sort(function (a, b) { return a.order - b.order; });
67
+ var form = useFormContext().form;
68
+ var steps = (sections !== null && sections !== void 0 ? sections : []).sort(sortByOrder);
15
69
  var _b = useFormSectionContext(), activeId = _b.activeId, setActiveId = _b.setActiveId, path = _b.path;
16
70
  var urlNavigable = useFormContext().urlNavigable;
17
71
  return (React__default.createElement("div", { className: 'relative' },
18
- React__default.createElement("div", { className: 'h-[2px] top-5 bg-slate-300 absolute left-0 right-0 z-0' }),
19
- React__default.createElement("div", { className: 'flex flex-row gap-1' }, steps.map(function (p, i) {
20
- var _a, _b, _c, _d;
72
+ React__default.createElement("div", { className: 'h-[2px] top-8 bg-slate-300 absolute left-0 right-0 z-0' }),
73
+ React__default.createElement("div", { className: 'flex flex-row gap-4 py-4 max-w-full overflow-x-auto overflow-y-visible' }, steps.map(function (p, i) {
74
+ var _a, _b, _c, _d, _e;
21
75
  return (React__default.createElement("div", { key: p.id, className: 'flex-grow first:flex-shrink last:flex-shrink text-center first:text-left first:ml-4 last:text-right last:mr-4 z-10 relative' },
22
- React__default.createElement(NavElement, { path: path, id: p.id, navigable: urlNavigable !== null && urlNavigable !== void 0 ? urlNavigable : true, className: "px-8 bg-white z-20 border-none text-sm ".concat(activeId === p.id ? 'bg-slate-600 text-white' : 'hover:bg-slate-100'), onClick: function () { setActiveId(p.id); } }, p.label),
76
+ React__default.createElement(NavElement, { path: path, id: p.id, navigable: urlNavigable !== null && urlNavigable !== void 0 ? urlNavigable : true, className: "whitespace-nowrap px-8 bg-white z-20 border-none text-sm ".concat(activeId === p.id ? 'bg-slate-600 text-white' : 'hover:bg-slate-100'), onClick: function () { setActiveId(p.id); } }, p.label),
23
77
  i < steps.length - 1 && steps.length > 1
24
78
  ? React__default.createElement("span", { className: 'hidden absolute right-0 top-2 w-4 h-full bg-white' },
25
79
  React__default.createElement(CaretRightIcon, { className: 'w-4 h-6 fill-slate-300 stroke-slate-300' }))
26
80
  : '',
27
- React__default.createElement("p", { className: 'text-xs mt-4' }, (_a = sectionStatus[p.id]) === null || _a === void 0 ? void 0 :
28
- _a.completed,
29
- " of ", (_b = sectionStatus[p.id]) === null || _b === void 0 ? void 0 :
30
- _b.total,
31
- " total"),
32
- React__default.createElement("p", { className: 'text-xs mt-2' }, (_c = sectionStatus[p.id]) === null || _c === void 0 ? void 0 :
33
- _c.requiredCompleted,
34
- " of ", (_d = sectionStatus[p.id]) === null || _d === void 0 ? void 0 :
35
- _d.requiredTotal,
36
- " required")));
81
+ ((_a = form === null || form === void 0 ? void 0 : form.settings) === null || _a === void 0 ? void 0 : _a.show_progress)
82
+ ? React__default.createElement(React__default.Fragment, null,
83
+ React__default.createElement("p", { className: 'text-xs mt-4' }, (_b = sectionStatus[p.id]) === null || _b === void 0 ? void 0 :
84
+ _b.completed,
85
+ " of ", (_c = sectionStatus[p.id]) === null || _c === void 0 ? void 0 :
86
+ _c.total,
87
+ " total"),
88
+ React__default.createElement("p", { className: 'text-xs mt-2' }, (_d = sectionStatus[p.id]) === null || _d === void 0 ? void 0 :
89
+ _d.requiredCompleted,
90
+ " of ", (_e = sectionStatus[p.id]) === null || _e === void 0 ? void 0 :
91
+ _e.requiredTotal,
92
+ " required"))
93
+ : ''));
37
94
  }))));
38
95
  };
39
96
  var WizardNavSmall = function (_a) {
@@ -41,7 +98,7 @@ var WizardNavSmall = function (_a) {
41
98
  var sections = _a.sections; _a.sectionStatus; _a.level;
42
99
  var _c = useFormSectionContext(), activeId = _c.activeId, setActiveId = _c.setActiveId, path = _c.path;
43
100
  var urlNavigable = useFormContext().urlNavigable;
44
- var steps = (sections !== null && sections !== void 0 ? sections : []).sort(function (a, b) { return a.order - b.order; });
101
+ var steps = (sections !== null && sections !== void 0 ? sections : []).sort(sortByOrder);
45
102
  var stepsMap = Object.fromEntries(steps.map(function (p) { return [p.id, p]; }));
46
103
  var currentStep = (_b = stepsMap[activeId !== null && activeId !== void 0 ? activeId : '']) !== null && _b !== void 0 ? _b : steps[0];
47
104
  var currentIndex = steps.indexOf(currentStep);
@@ -81,7 +138,7 @@ var WizardLayout = function (props) {
81
138
  };
82
139
  var WizardLayoutContent = function (_a) {
83
140
  var _b;
84
- var sections = _a.sections, onChange = _a.onChange, _c = _a.ContentComponent, ContentComponent = _c === void 0 ? ActivePage : _c, _d = _a.NavComponent, NavComponent = _d === void 0 ? WizardNav : _d, _e = _a.SmallNavComponent, SmallNavComponent = _e === void 0 ? WizardNavSmall : _e, _f = _a.className, className = _f === void 0 ? 'flex flex-col gap-16 pt-8' : _f, level = _a.level;
141
+ var sections = _a.sections, onChange = _a.onChange, _c = _a.ContentComponent, ContentComponent = _c === void 0 ? ActivePage : _c, _d = _a.NavComponent, NavComponent = _d === void 0 ? WizardNav : _d, _e = _a.SmallNavComponent, SmallNavComponent = _e === void 0 ? WizardNavSmall : _e, _f = _a.className, className = _f === void 0 ? 'flex flex-col gap-4 pt-8' : _f, level = _a.level;
85
142
  if (sections === undefined) {
86
143
  return React__default.createElement(React__default.Fragment, null);
87
144
  }
@@ -95,5 +152,5 @@ var WizardLayoutContent = function (_a) {
95
152
  React__default.createElement(SmallNavComponent, { sections: sections, sectionStatus: sectionStatus, level: level })));
96
153
  };
97
154
 
98
- export { WizardNav, WizardNavSmall, WizardLayout as default };
155
+ export { WizardNav, WizardNavLargeScreen, WizardNavMobile, WizardNavSmall, WizardLayout as default };
99
156
  //# sourceMappingURL=Wizard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Wizard.js","sources":["../../../../../src/Form/Creator/Wizard.tsx"],"sourcesContent":["import { calculateSectionStatus } from '@/utils/validators'\nimport { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\nimport { type IFormSection, type IWizardStep } from '@/Form/Creator/FormCreatorTypes'\nimport { type IPageLayoutProps, ActivePage } from '@/Form/Creator/Page'\nimport { utils } from '@axdspub/axiom-ui-utilities'\nimport { CaretRightIcon, CaretLeftIcon } from '@radix-ui/react-icons'\nimport React, { type ReactElement } from 'react'\nimport { useParams } from 'react-router-dom'\nimport NavElement from '@/Form/Creator/NavElement'\nimport { FormSectionContextProvider, useFormSectionContext } from '@/Form/Creator/FormSectionContextProvider'\nimport { useFormContext } from '@/Form/Creator/FormContextProvider'\n\nexport const WizardNav = ({\n sections,\n sectionStatus,\n level\n}: {\n sections?: IFormSection[]\n sectionStatus: IFormSectionStatus\n level: number\n}): ReactElement => {\n const steps = ((sections ?? []) as IWizardStep[]).sort((a, b) => a.order - b.order)\n const { activeId, setActiveId, path } = useFormSectionContext()\n const { urlNavigable } = useFormContext()\n\n return (\n <div className='relative'>\n <div className='h-[2px] top-5 bg-slate-300 absolute left-0 right-0 z-0' />\n <div className='flex flex-row gap-1'>\n {\n steps.map((p, i) => {\n return (\n <div key={p.id} className='flex-grow first:flex-shrink last:flex-shrink text-center first:text-left first:ml-4 last:text-right last:mr-4 z-10 relative'>\n <NavElement\n path={path}\n id={p.id}\n navigable={urlNavigable ?? true}\n className={`px-8 bg-white z-20 border-none text-sm ${activeId === p.id ? 'bg-slate-600 text-white' : 'hover:bg-slate-100'}`}\n onClick={() => { setActiveId(p.id) }}\n >\n {p.label}\n </NavElement>\n {\n i < steps.length - 1 && steps.length > 1\n ? <span className='hidden absolute right-0 top-2 w-4 h-full bg-white'><CaretRightIcon className='w-4 h-6 fill-slate-300 stroke-slate-300' /></span>\n : ''\n }\n <p className='text-xs mt-4'>{sectionStatus[p.id]?.completed} of {sectionStatus[p.id]?.total} total</p>\n <p className='text-xs mt-2'>{sectionStatus[p.id]?.requiredCompleted} of {sectionStatus[p.id]?.requiredTotal} required</p>\n </div>\n )\n })\n }</div>\n </div>\n )\n}\n\nexport const WizardNavSmall = ({\n sections,\n sectionStatus,\n level\n}: {\n sections?: IFormSection[]\n sectionStatus: IFormSectionStatus\n level: number\n}): ReactElement => {\n const { activeId, setActiveId, path } = useFormSectionContext()\n const { urlNavigable } = useFormContext()\n const steps = ((sections ?? []) as IWizardStep[]).sort((a, b) => a.order - b.order)\n const stepsMap = Object.fromEntries(steps.map(p => [p.id, p]))\n const currentStep = stepsMap[activeId ?? ''] ?? steps[0]\n const currentIndex = steps.indexOf(currentStep)\n const nextIndex = currentIndex + 1\n const prevIndex = currentIndex - 1\n // const params = (useParams()['*'] ?? '').split('/')\n // const path = params.slice(0, level).join('/')\n return (\n <div className='flex flex-row gap-4 justify-end'>{\n prevIndex >= 0\n ? <NavElement\n className='px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700'\n path={path}\n id={steps[prevIndex].id}\n navigable={urlNavigable ?? true}\n onClick={() => { setActiveId(steps[prevIndex].id) }}\n >\n <CaretLeftIcon className='inline' /> Previous\n </NavElement>\n : <span className={utils.createButtonClass({\n className: 'px-4 bg-white border-none text-sm text-slate-400'\n })}>Previous</span>\n }\n {\n nextIndex < steps.length\n ? <NavElement\n path={path}\n id={steps[nextIndex].id}\n navigable={urlNavigable ?? true}\n className='px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700'\n onClick={() => { setActiveId(steps[nextIndex].id) }}\n >\n Next <CaretRightIcon className='inline' />\n </NavElement>\n : <span className={utils.createButtonClass({\n className: 'px-4 bg-white border-none text-sm text-slate-400'\n })}>Next</span>\n }\n </div>\n )\n}\n\nexport interface IWizardLayoutProps extends IPageLayoutProps {\n SmallNavComponent?: React.FC<{\n level: number\n sections?: IFormSection[]\n sectionStatus: IFormSectionStatus\n className?: string\n }>\n}\n\nconst WizardLayout = (props: IPageLayoutProps): ReactElement => {\n if (props.sections === undefined) {\n return <></>\n }\n const { urlNavigable } = useFormContext()\n const params = (useParams()['*'] ?? '').split('/')\n const path = params.slice(0, props.level).join('/')\n const id = urlNavigable\n ? (params[props.level] && params[props.level] !== '') ? params[props.level] : (props.sections[0]?.id ?? null)\n : props.sections[0]?.id ?? null\n\n return (\n <FormSectionContextProvider path={path} id={id}>\n <WizardLayoutContent {...props} />\n </FormSectionContextProvider>\n )\n}\n\nconst WizardLayoutContent = ({\n sections,\n onChange,\n ContentComponent = ActivePage,\n NavComponent = WizardNav,\n SmallNavComponent = WizardNavSmall,\n className = 'flex flex-col gap-16 pt-8',\n level\n}: IWizardLayoutProps): ReactElement => {\n if (sections === undefined) {\n return <></>\n }\n const { formValues, setFormValues } = useFormContext()\n const { activeId } = useFormSectionContext()\n const formSection = sections?.find(s => s.id === activeId) ?? sections?.[0]\n const sectionStatus = calculateSectionStatus(sections, [formValues, setFormValues])\n\n return (\n\n <div className={className}>\n <NavComponent\n sections={sections}\n sectionStatus={sectionStatus}\n level={level}\n />\n <ContentComponent\n formSection={formSection}\n sectionStatus={sectionStatus}\n onChange={onChange}\n level={level}\n />\n <SmallNavComponent\n sections={sections}\n sectionStatus={sectionStatus}\n level={level}\n />\n </div>\n )\n}\n\nexport default WizardLayout\n"],"names":["React","utils"],"mappings":"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"}
1
+ {"version":3,"file":"Wizard.js","sources":["../../../../../src/Form/Creator/Wizard.tsx"],"sourcesContent":["import { calculateSectionStatus } from '@/utils/validators'\r\nimport { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\r\nimport { type IFormSection, type IWizardStep } from '@/Form/Creator/FormCreatorTypes'\r\nimport { type IPageLayoutProps, ActivePage, type INavProps } from '@/Form/Creator/Page'\r\nimport { SelectInput, utils } from '@axdspub/axiom-ui-utilities'\r\nimport { CaretRightIcon, CaretLeftIcon } from '@radix-ui/react-icons'\r\nimport React, { type ReactElement } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport NavElement from '@/Form/Creator/NavElement'\r\nimport { FormSectionContextProvider, useFormSectionContext } from '@/Form/Creator/FormSectionContextProvider'\r\nimport { useFormContext } from '@/Form/Creator/FormContextProvider'\r\nimport { useAtomValue } from 'jotai'\r\nimport layoutAtom from '@/utils/responsive/layoutState'\r\n\r\nconst sortByOrder = (a: IWizardStep, b: IWizardStep): number => {\r\n const aOrder = a.order ?? Infinity\r\n const bOrder = b.order ?? Infinity\r\n return aOrder - bOrder\r\n}\r\n\r\nexport const WizardNavMobile = ({\r\n sections,\r\n sectionStatus,\r\n level\r\n}: INavProps): ReactElement => {\r\n const { activeId, setActiveId, path } = useFormSectionContext()\r\n const { urlNavigable } = useFormContext()\r\n const steps = ((sections ?? []) as IWizardStep[]).sort(sortByOrder)\r\n const stepsMap = Object.fromEntries(steps.map(p => [p.id, p]))\r\n const currentStep = stepsMap[activeId ?? ''] ?? steps[0]\r\n const currentIndex = steps.indexOf(currentStep)\r\n const nextIndex = currentIndex + 1\r\n const prevIndex = currentIndex - 1\r\n // const params = (useParams()['*'] ?? '').split('/')\r\n // const path = params.slice(0, level).join('/')\r\n return (\r\n <div className='flex flex-row gap-4 justify-center items-center'>{\r\n prevIndex >= 0\r\n ? <NavElement\r\n className='p-2 bg-none border-none text-sm hover:bg-slate-none'\r\n path={path}\r\n id={steps[prevIndex].id}\r\n navigable={urlNavigable ?? true}\r\n onClick={() => { setActiveId(steps[prevIndex].id) }}\r\n >\r\n <CaretLeftIcon className='inline w-8 h-8' />\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'p-2 bg-none border-none text-sm text-slate-400 '\r\n })}><CaretLeftIcon className='inline w-8 h-8' /></span>\r\n }\r\n <div className='flex-grow'>\r\n <SelectInput\r\n includePrompt={false}\r\n id='wizard-step-select'\r\n testId='wizard-step-select'\r\n className='shadow-lg'\r\n value={activeId ?? ''}\r\n onChange={(e) => {\r\n setActiveId(e?.value)\r\n }}\r\n options={steps.map(p => ({\r\n value: p.id,\r\n label: p.label ?? p.id\r\n }))}\r\n />\r\n </div>\r\n\r\n {\r\n nextIndex < steps.length\r\n ? <NavElement\r\n path={path}\r\n id={steps[nextIndex].id}\r\n navigable={urlNavigable ?? true}\r\n className='p-2 bg-none border-none text-sm hover:bg-none'\r\n onClick={() => { setActiveId(steps[nextIndex].id) }}\r\n >\r\n <CaretRightIcon className='inline w-8 h-8' />\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'p-2 bg-none border-none text-sm text-slate-400'\r\n })}><CaretRightIcon className='inline w-8 h-8' /></span>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport const WizardNav = (props: INavProps): ReactElement => {\r\n const layout = useAtomValue(layoutAtom)\r\n return layout.size === 'sm'\r\n ? <WizardNavMobile {...props} />\r\n : <WizardNavLargeScreen {...props} />\r\n}\r\n\r\nexport const WizardNavLargeScreen = ({\r\n sections,\r\n sectionStatus,\r\n level\r\n}: INavProps): ReactElement => {\r\n const { form } = useFormContext()\r\n const steps = ((sections ?? []) as IWizardStep[]).sort(sortByOrder)\r\n const { activeId, setActiveId, path } = useFormSectionContext()\r\n const { urlNavigable } = useFormContext()\r\n\r\n return (\r\n <div className='relative'>\r\n <div className='h-[2px] top-8 bg-slate-300 absolute left-0 right-0 z-0' />\r\n <div className='flex flex-row gap-4 py-4 max-w-full overflow-x-auto overflow-y-visible'>\r\n {\r\n steps.map((p, i) => {\r\n return (\r\n <div key={p.id} className='flex-grow first:flex-shrink last:flex-shrink text-center first:text-left first:ml-4 last:text-right last:mr-4 z-10 relative'>\r\n <NavElement\r\n\r\n path={path}\r\n id={p.id}\r\n navigable={urlNavigable ?? true}\r\n className={`whitespace-nowrap px-8 bg-white z-20 border-none text-sm ${activeId === p.id ? 'bg-slate-600 text-white' : 'hover:bg-slate-100'}`}\r\n onClick={() => { setActiveId(p.id) }}\r\n >\r\n {p.label}\r\n </NavElement>\r\n {\r\n i < steps.length - 1 && steps.length > 1\r\n ? <span className='hidden absolute right-0 top-2 w-4 h-full bg-white'><CaretRightIcon className='w-4 h-6 fill-slate-300 stroke-slate-300' /></span>\r\n : ''\r\n }\r\n {\r\n form?.settings?.show_progress\r\n ? <>\r\n <p className='text-xs mt-4'>{sectionStatus[p.id]?.completed} of {sectionStatus[p.id]?.total} total</p>\r\n <p className='text-xs mt-2'>{sectionStatus[p.id]?.requiredCompleted} of {sectionStatus[p.id]?.requiredTotal} required</p>\r\n </>\r\n : ''\r\n }\r\n\r\n </div>\r\n )\r\n })\r\n }</div>\r\n </div>\r\n )\r\n}\r\n\r\nexport const WizardNavSmall = ({\r\n sections,\r\n sectionStatus,\r\n level\r\n}: {\r\n sections?: IFormSection[]\r\n sectionStatus: IFormSectionStatus\r\n level: number\r\n}): ReactElement => {\r\n const { activeId, setActiveId, path } = useFormSectionContext()\r\n const { urlNavigable } = useFormContext()\r\n const steps = ((sections ?? []) as IWizardStep[]).sort(sortByOrder)\r\n const stepsMap = Object.fromEntries(steps.map(p => [p.id, p]))\r\n const currentStep = stepsMap[activeId ?? ''] ?? steps[0]\r\n const currentIndex = steps.indexOf(currentStep)\r\n const nextIndex = currentIndex + 1\r\n const prevIndex = currentIndex - 1\r\n // const params = (useParams()['*'] ?? '').split('/')\r\n // const path = params.slice(0, level).join('/')\r\n return (\r\n <div className='flex flex-row gap-4 justify-end'>{\r\n prevIndex >= 0\r\n ? <NavElement\r\n className='px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700'\r\n path={path}\r\n id={steps[prevIndex].id}\r\n navigable={urlNavigable ?? true}\r\n onClick={() => { setActiveId(steps[prevIndex].id) }}\r\n >\r\n <CaretLeftIcon className='inline' /> Previous\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'px-4 bg-white border-none text-sm text-slate-400'\r\n })}>Previous</span>\r\n }\r\n {\r\n nextIndex < steps.length\r\n ? <NavElement\r\n path={path}\r\n id={steps[nextIndex].id}\r\n navigable={urlNavigable ?? true}\r\n className='px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700'\r\n onClick={() => { setActiveId(steps[nextIndex].id) }}\r\n >\r\n Next <CaretRightIcon className='inline' />\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'px-4 bg-white border-none text-sm text-slate-400'\r\n })}>Next</span>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport interface IWizardLayoutProps extends IPageLayoutProps {\r\n SmallNavComponent?: React.FC<{\r\n level: number\r\n sections?: IFormSection[]\r\n sectionStatus: IFormSectionStatus\r\n className?: string\r\n }>\r\n}\r\n\r\nconst WizardLayout = (props: IPageLayoutProps): ReactElement => {\r\n if (props.sections === undefined) {\r\n return <></>\r\n }\r\n const { urlNavigable } = useFormContext()\r\n const params = (useParams()['*'] ?? '').split('/')\r\n const path = params.slice(0, props.level).join('/')\r\n const id = urlNavigable\r\n ? (params[props.level] && params[props.level] !== '') ? params[props.level] : (props.sections[0]?.id ?? null)\r\n : props.sections[0]?.id ?? null\r\n\r\n return (\r\n <FormSectionContextProvider path={path} id={id}>\r\n <WizardLayoutContent {...props} />\r\n </FormSectionContextProvider>\r\n )\r\n}\r\n\r\nconst WizardLayoutContent = ({\r\n sections,\r\n onChange,\r\n ContentComponent = ActivePage,\r\n NavComponent = WizardNav,\r\n SmallNavComponent = WizardNavSmall,\r\n className = 'flex flex-col gap-4 pt-8',\r\n level\r\n}: IWizardLayoutProps): ReactElement => {\r\n if (sections === undefined) {\r\n return <></>\r\n }\r\n const { formValues, setFormValues } = useFormContext()\r\n const { activeId } = useFormSectionContext()\r\n const formSection = sections?.find(s => s.id === activeId) ?? sections?.[0]\r\n const sectionStatus = calculateSectionStatus(sections, [formValues, setFormValues])\r\n\r\n return (\r\n\r\n <div className={className}>\r\n <NavComponent\r\n sections={sections}\r\n sectionStatus={sectionStatus}\r\n level={level}\r\n />\r\n <ContentComponent\r\n formSection={formSection}\r\n sectionStatus={sectionStatus}\r\n onChange={onChange}\r\n level={level}\r\n />\r\n <SmallNavComponent\r\n sections={sections}\r\n sectionStatus={sectionStatus}\r\n level={level}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default WizardLayout\r\n"],"names":["React","utils","SelectInput"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { CheckIcon, CopyIcon } from '../../../node_modules/@radix-ui/react-icons
3
3
  import React__default, { useState } from 'react';
4
4
 
5
5
  var CopyButton = function (_a) {
6
- var string = _a.string, _b = _a.size, size = _b === void 0 ? 'med' : _b, _c = _a.defaultClassName, defaultClassName = _c === void 0 ? 'text-lg text-slate-400 pointer-events-none' : _c, className = _a.className, defaultWrapperClassName = _a.defaultWrapperClassName, wrapperClassName = _a.wrapperClassName;
6
+ var string = _a.string, _b = _a.size, size = _b === void 0 ? 'med' : _b, _c = _a.defaultClassName, defaultClassName = _c === void 0 ? 'text-lg text-slate-400 pointer-events-none' : _c, className = _a.className, defaultWrapperClassName = _a.defaultWrapperClassName, wrapperClassName = _a.wrapperClassName, ToCopyElement = _a.ToCopyElement, OnCopiedElement = _a.OnCopiedElement;
7
7
  var _d = useState(false), copied = _d[0], setCopied = _d[1];
8
8
  return (React__default.createElement("button", { className: index$1.makeClassName({
9
9
  className: wrapperClassName,
@@ -21,7 +21,7 @@ var CopyButton = function (_a) {
21
21
  });
22
22
  } },
23
23
  copied
24
- ? React__default.createElement("span", { className: index$1.makeClassName({
24
+ ? OnCopiedElement !== null && OnCopiedElement !== void 0 ? OnCopiedElement : React__default.createElement("span", { className: index$1.makeClassName({
25
25
  className: className,
26
26
  defaultClassName: defaultClassName
27
27
  }) },
@@ -29,7 +29,7 @@ var CopyButton = function (_a) {
29
29
  className: 'bg-slate-600 text-white rounded-full',
30
30
  extras: [index$1.getIconClassForSize(size)]
31
31
  }) }))
32
- : React__default.createElement(CopyIcon, { className: index$1.makeClassName({
32
+ : ToCopyElement !== null && ToCopyElement !== void 0 ? ToCopyElement : React__default.createElement(CopyIcon, { className: index$1.makeClassName({
33
33
  className: className,
34
34
  defaultClassName: defaultClassName,
35
35
  extras: [index$1.getIconClassForSize(size)]
@@ -1 +1 @@
1
- {"version":3,"file":"CopyableJSONOutput.js","sources":["../../../../../src/Form/Manage/CopyableJSONOutput.tsx"],"sourcesContent":["import { utils } from '@axdspub/axiom-ui-utilities'\nimport { CheckIcon, CopyIcon } from '@radix-ui/react-icons'\nimport React, { type ReactElement, useState } from 'react'\n\nexport const CopyButton = ({\n string,\n size = 'med',\n defaultClassName = 'text-lg text-slate-400 pointer-events-none',\n className,\n defaultWrapperClassName,\n wrapperClassName\n}: {\n string: string\n defaultClassName?: string\n className?: string\n defaultWrapperClassName?: string\n wrapperClassName?: string\n size?: 'sm' | 'med' | 'lg' | 'xlg'\n}): ReactElement => {\n const [copied, setCopied] = useState(false)\n return (\n <button className={utils.makeClassName({\n className: wrapperClassName,\n defaultClassName: defaultWrapperClassName\n })} onClick={() => {\n navigator.clipboard.writeText(string)\n .then(() => {\n setCopied(true)\n setTimeout(() => {\n setCopied(false)\n }, 1000)\n })\n .catch(e => {\n console.log('Error!')\n })\n }}>\n {copied\n ? <span className={utils.makeClassName({\n className,\n defaultClassName\n })}><CheckIcon className={utils.makeClassName({\n className: 'bg-slate-600 text-white rounded-full',\n extras: [utils.getIconClassForSize(size)]\n })} /></span>\n : <CopyIcon className={utils.makeClassName({\n className,\n defaultClassName,\n extras: [utils.getIconClassForSize(size)]\n })} />}\n\n <span className='sr-only'>Copy</span>\n </button>\n )\n}\nexport const CopyableJSONOutput = ({ string, label }: { string: string, label?: string }): ReactElement => {\n return <div>\n {label !== undefined\n ? <h2 className='text-lg pb-4 font-bold'>{label}</h2>\n : ''}\n <div className='relative' onClick={() => {\n navigator.clipboard.writeText(string)\n .then(() => {\n console.log('Copied!')\n })\n .catch(e => {\n console.log('Error!')\n })\n }}>\n <CopyButton string={string} className='text-slate-400 absolute top-4 right-4' wrapperClassName='absolute top-0 right-0 bottom-0 left-0' />\n <pre className='p-10 bg-slate-200 hover:bg-slate-300 text-slate-600 select-none cursor-pointer font-mono text-xs'>\n {string}\n </pre>\n </div>\n </div>\n}\n"],"names":["React","utils"],"mappings":";;;;AAIO,IAAM,UAAU,GAAG,UAAC,EAc1B,EAAA;QAbC,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAY,GAAA,EAAA,CAAA,IAAA,EAAZ,IAAI,GAAG,EAAA,KAAA,MAAA,GAAA,KAAK,GAAA,EAAA,EACZ,EAA+D,GAAA,EAAA,CAAA,gBAAA,EAA/D,gBAAgB,GAAG,EAAA,KAAA,MAAA,GAAA,4CAA4C,GAAA,EAAA,EAC/D,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,uBAAuB,GAAA,EAAA,CAAA,uBAAA,EACvB,gBAAgB,GAAA,EAAA,CAAA,gBAAA;IASV,IAAA,EAAA,GAAsB,QAAQ,CAAC,KAAK,CAAC,EAApC,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAmB;AAC3C,IAAA,QACEA,cAAQ,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AACrC,YAAA,SAAS,EAAE,gBAAgB;AAC3B,YAAA,gBAAgB,EAAE;SACnB,CAAC,EAAE,OAAO,EAAE,YAAA;AACX,YAAA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM;AACjC,iBAAA,IAAI,CAAC,YAAA;gBACJ,SAAS,CAAC,IAAI,CAAC;AACf,gBAAA,UAAU,CAAC,YAAA;oBACT,SAAS,CAAC,KAAK,CAAC;iBACjB,EAAE,IAAI,CAAC;AACV,aAAC;iBACA,KAAK,CAAC,UAAA,CAAC,EAAA;AACN,gBAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvB,aAAC,CAAC;SACL,EAAA;QACE;AACC,cAAED,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AACrC,oBAAA,SAAS,EAAA,SAAA;AACT,oBAAA,gBAAgB,EAAA;iBACjB,CAAC,EAAA;AAAE,gBAAAD,cAAA,CAAA,aAAA,CAAC,SAAS,EAAC,EAAA,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AAC5C,wBAAA,SAAS,EAAE,sCAAsC;wBACjD,MAAM,EAAE,CAACA,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC;AACzC,qBAAA,CAAC,GAAI;cACJD,6BAAC,QAAQ,EAAA,EAAC,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AACzC,oBAAA,SAAS,EAAA,SAAA;AACT,oBAAA,gBAAgB,EAAA,gBAAA;oBAChB,MAAM,EAAE,CAACA,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC;AACzC,iBAAA,CAAC,EAAI,CAAA;AAER,QAAAD,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAY,EAAA,MAAA,CAAA,CAC9B;AAEb;;;;"}
1
+ {"version":3,"file":"CopyableJSONOutput.js","sources":["../../../../../src/Form/Manage/CopyableJSONOutput.tsx"],"sourcesContent":["import { utils } from '@axdspub/axiom-ui-utilities'\r\nimport { CheckIcon, CopyIcon } from '@radix-ui/react-icons'\r\nimport React, { type ReactElement, type ReactNode, useState } from 'react'\r\n\r\nexport const CopyButton = ({\r\n string,\r\n size = 'med',\r\n defaultClassName = 'text-lg text-slate-400 pointer-events-none',\r\n className,\r\n defaultWrapperClassName,\r\n wrapperClassName,\r\n ToCopyElement,\r\n OnCopiedElement\r\n\r\n}: {\r\n string: string\r\n defaultClassName?: string\r\n className?: string\r\n defaultWrapperClassName?: string\r\n wrapperClassName?: string\r\n size?: 'sm' | 'med' | 'lg' | 'xlg'\r\n ToCopyElement?: ReactNode\r\n OnCopiedElement?: ReactNode\r\n}): ReactElement => {\r\n const [copied, setCopied] = useState(false)\r\n return (\r\n <button className={utils.makeClassName({\r\n className: wrapperClassName,\r\n defaultClassName: defaultWrapperClassName\r\n })} onClick={() => {\r\n navigator.clipboard.writeText(string)\r\n .then(() => {\r\n setCopied(true)\r\n setTimeout(() => {\r\n setCopied(false)\r\n }, 1000)\r\n })\r\n .catch(e => {\r\n console.log('Error!')\r\n })\r\n }}>\r\n {copied\r\n ? OnCopiedElement ?? <span className={utils.makeClassName({\r\n className,\r\n defaultClassName\r\n })}><CheckIcon className={utils.makeClassName({\r\n className: 'bg-slate-600 text-white rounded-full',\r\n extras: [utils.getIconClassForSize(size)]\r\n })} /></span>\r\n : ToCopyElement ?? <CopyIcon className={utils.makeClassName({\r\n className,\r\n defaultClassName,\r\n extras: [utils.getIconClassForSize(size)]\r\n })} />}\r\n\r\n <span className='sr-only'>Copy</span>\r\n </button>\r\n )\r\n}\r\nexport const CopyableJSONOutput = ({ string, label }: { string: string, label?: string }): ReactElement => {\r\n return <div>\r\n {label !== undefined\r\n ? <h2 className='text-lg pb-4 font-bold'>{label}</h2>\r\n : ''}\r\n <div className='relative' onClick={() => {\r\n navigator.clipboard.writeText(string)\r\n .then(() => {\r\n console.log('Copied!')\r\n })\r\n .catch(e => {\r\n console.log('Error!')\r\n })\r\n }}>\r\n <CopyButton string={string} className='text-slate-400 absolute top-4 right-4' wrapperClassName='absolute top-0 right-0 bottom-0 left-0' />\r\n <pre className='p-10 bg-slate-200 hover:bg-slate-300 text-slate-600 select-none cursor-pointer font-mono text-xs'>\r\n {string}\r\n </pre>\r\n </div>\r\n </div>\r\n}\r\n"],"names":["React","utils"],"mappings":";;;;AAIO,IAAM,UAAU,GAAG,UAAC,EAmB1B,EAAA;AAlBC,IAAA,IAAA,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAY,GAAA,EAAA,CAAA,IAAA,EAAZ,IAAI,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EACZ,EAAA,GAAA,EAAA,CAAA,gBAA+D,EAA/D,gBAAgB,GAAG,EAAA,KAAA,MAAA,GAAA,4CAA4C,GAAA,EAAA,EAC/D,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,uBAAuB,GAAA,EAAA,CAAA,uBAAA,EACvB,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,eAAe,GAAA,EAAA,CAAA,eAAA;IAYT,IAAA,EAAA,GAAsB,QAAQ,CAAC,KAAK,CAAC,EAApC,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAmB;AAC3C,IAAA,QACEA,cAAQ,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AACrC,YAAA,SAAS,EAAE,gBAAgB;AAC3B,YAAA,gBAAgB,EAAE;SACnB,CAAC,EAAE,OAAO,EAAE,YAAA;AACX,YAAA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM;AACjC,iBAAA,IAAI,CAAC,YAAA;gBACJ,SAAS,CAAC,IAAI,CAAC;AACf,gBAAA,UAAU,CAAC,YAAA;oBACT,SAAS,CAAC,KAAK,CAAC;iBACjB,EAAE,IAAI,CAAC;AACV,aAAC;iBACA,KAAK,CAAC,UAAA,CAAC,EAAA;AACN,gBAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvB,aAAC,CAAC;SACL,EAAA;QACE;AACC,cAAE,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,MAAA,GAAA,eAAe,GAAID,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AACxD,oBAAA,SAAS,EAAA,SAAA;AACT,oBAAA,gBAAgB,EAAA;iBACjB,CAAC,EAAA;AAAE,gBAAAD,cAAA,CAAA,aAAA,CAAC,SAAS,EAAC,EAAA,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AAC5C,wBAAA,SAAS,EAAE,sCAAsC;wBACjD,MAAM,EAAE,CAACA,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC;AACzC,qBAAA,CAAC,GAAI;AACN,cAAE,aAAa,KAAb,IAAA,IAAA,aAAa,cAAb,aAAa,GAAID,cAAC,CAAA,aAAA,CAAA,QAAQ,IAAC,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AAC1D,oBAAA,SAAS,EAAA,SAAA;AACT,oBAAA,gBAAgB,EAAA,gBAAA;oBAChB,MAAM,EAAE,CAACA,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC;AACzC,iBAAA,CAAC,EAAI,CAAA;AAER,QAAAD,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAY,EAAA,MAAA,CAAA,CAC9B;AAEb;;;;"}
@@ -1,19 +1,14 @@
1
- export { getChildFields, getFieldValue, getFields, getFieldsFromFormSection, getPathFromField, getValueFromPath, makeJsonPath } from './utils/getters.js';
2
- export { addFieldPath, assignDefaultValuesToFormValues, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, updateFormValuesWithFieldValue, updateFormValuesWithFieldValueInPlace } from './utils/manipulators.js';
3
- export { calculateSectionStatus, checkCondition } from './utils/validators.js';
1
+ import * as getters from './utils/getters.js';
2
+ export { getters };
3
+ import * as manipulators from './utils/manipulators.js';
4
+ export { manipulators };
5
+ import * as validators from './utils/validators.js';
6
+ export { validators };
4
7
  import * as schemaToFormHelpers from './utils/schemaToFormHelpers.js';
5
8
  export { schemaToFormHelpers as schemToFormHelpers };
6
- export { buildFormObject, getLabelFromSchema, getSchemaPaths, getValueFromSchema, mergeObjects, overridesAndSchemaToFormObject, schemaToFormObject, validateAgainstSchema, validateSchema } from './utils/schemaToFormHelpers.js';
9
+ export { schemaToFormHelpers as schemaToFormUtils };
7
10
  export { default as FormCreator } from './Form/Creator/FormCreator.js';
8
11
  export { default as FieldCreator } from './Form/Components/FieldCreator.js';
9
- export { default as BooleanInput } from './Form/Components/Inputs/Boolean.js';
10
- export { default as JSONInput } from './Form/Components/Inputs/JSONInputLoader.js';
11
- export { default as NumberInput } from './Form/Components/Inputs/Number.js';
12
- export { default as TextInput } from './Form/Components/Inputs/String.js';
13
- export { default as LongTextInput } from './Form/Components/Inputs/LongString.js';
14
- export { default as SelectInput } from './Form/Components/Inputs/SingleSelect.js';
15
- export { default as GeoJSONInput } from './Form/Components/Inputs/GeoJSONInputLoader.js';
16
- export { default as DateTimeInput } from './Form/Components/Inputs/DateTime.js';
17
- export { default as DateInput } from './Form/Components/Inputs/Date.js';
18
- export { default as TimeInput } from './Form/Components/Inputs/Time.js';
12
+ import * as index from './Form/Components/Inputs/index.js';
13
+ export { index as Inputs };
19
14
  //# sourceMappingURL=library.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"library.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"library.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -8,11 +8,15 @@ import get from '../../_virtual/get.js';
8
8
  * @returns The JSON path for the given field
9
9
  */
10
10
  var makeJsonPath = function (field, index) {
11
+ if (field.type === 'object' && field.skip_path === true) {
12
+ return undefined;
13
+ }
14
+ var fieldExtra = "".concat(field.multiple && (field.index !== undefined || index !== undefined) ? "[".concat(index !== null && index !== void 0 ? index : field.index, "]") : '');
11
15
  if (field.destPath !== undefined) {
12
- return "".concat(field.destPath).concat(field.multiple && (field.index !== undefined || index !== undefined) ? "[".concat(index !== null && index !== void 0 ? index : field.index, "]") : '');
16
+ return "".concat(field.destPath).concat(fieldExtra);
13
17
  }
14
18
  else if (field.path === undefined) {
15
- return field.id;
19
+ return "".concat(field.id).concat(fieldExtra);
16
20
  }
17
21
  else {
18
22
  var path = field.path;
@@ -60,6 +64,21 @@ var getFields = function (fields) {
60
64
  function getValueFromPath(path, formValues) {
61
65
  return get(formValues, path);
62
66
  }
67
+ function getObjectFieldValue(field, formValues, index) {
68
+ var vals = field.fields.map(function (f) {
69
+ var p = makeJsonPath(f, index);
70
+ var val = getFieldValue(f, formValues, index);
71
+ return p !== undefined
72
+ ? { key: p, val: val }
73
+ : typeof val === 'object' && val !== null
74
+ ? Object.entries(val).map(function (_a) {
75
+ var k = _a[0], v = _a[1];
76
+ return ({ key: k, val: v });
77
+ })
78
+ : undefined;
79
+ }).flat(Infinity).filter(function (d) { return d !== undefined; });
80
+ return Object.fromEntries(vals.map(function (v) { return [v.key, v.val]; }));
81
+ }
63
82
  /**
64
83
  * Returns the value of a given field from the form values
65
84
  *
@@ -70,6 +89,12 @@ function getValueFromPath(path, formValues) {
70
89
  */
71
90
  function getFieldValue(field, formValues, index) {
72
91
  var path = makeJsonPath(field, index);
92
+ if (field.type === 'object' && field.fields !== undefined && path === undefined) {
93
+ return getObjectFieldValue(field, formValues, index);
94
+ }
95
+ else if (path === undefined) {
96
+ return undefined;
97
+ }
73
98
  var val = getValueFromPath(path, formValues); // formValues[field.id]
74
99
  return val;
75
100
  }
@@ -81,10 +106,15 @@ function getFieldValue(field, formValues, index) {
81
106
  */
82
107
  function getPathFromField(field) {
83
108
  // console.log(`${field.path !== undefined ? field.path.join('.') : 'nopath'} = ${field.id}`)
109
+ if (field.type === 'object' && field.skip_path === true) {
110
+ return undefined;
111
+ }
84
112
  if (field.destPath) {
85
113
  return field.destPath;
86
114
  }
87
- return field.path !== undefined ? field.path.filter(function (f) { return !(f.type === 'object' && f.skip_path === true); }).map(function (f) { return f.id; }).join('.') : field.id;
115
+ return field.path !== undefined
116
+ ? field.path.filter(function (f) { return !(f.type === 'object' && f.skip_path === true); }).map(function (f) { return f.id; }).join('.')
117
+ : field.id;
88
118
  // return makeJsonPath(field)
89
119
  }
90
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"getters.js","sources":["../../../../src/utils/getters.ts"],"sourcesContent":["import { type IFormSection, type IFormValues, type IValueType, type IFormField } from '@/Form/Creator/FormCreatorTypes'\nimport get from 'lodash/get'\n\n/**\n * Returns the JSON path for a given field\n *\n * @param field - The field to get the JSON path for\n * @param index - The index of the field in the array (optional)\n * @returns The JSON path for the given field\n */\nexport const makeJsonPath = (field: IFormField, index?: number): string => {\n if (field.destPath !== undefined) {\n return `${field.destPath}${field.multiple && (field.index !== undefined || index !== undefined) ? `[${index ?? field.index}]` : ''}`\n } else if (field.path === undefined) {\n return field.id\n } else {\n const path = field.path\n const pathLen = path.length\n return field.path.map((f, i) => (f.multiple && (i < (pathLen - 1) || index !== undefined || f.index !== undefined)) ? `${f.id}${`[${index ?? f.index ?? 0}]`}` : f.id).join('.')\n }\n}\n\n/**\n * Returns the child fields of a given field\n *\n * @param field - The field to get the child fields from\n * @returns The child fields of the given field\n */\nexport const getChildFields = (field: { id: string, fields?: IFormField[] }): IFormField[] => {\n return field?.fields ?? []\n}\n\n/**\n * Recursively gets all fields from a given array of fields\n *\n * @param fields - The array of fields to get the fields from\n * @returns An array of all fields\n */\n\nexport const getFields = (fields?: Array<{ id: string, fields?: IFormField[] }>): IFormField[] => {\n if (fields === undefined) {\n return []\n }\n const all = fields.map(field => {\n let fields = [field]\n const children = getChildFields(field)\n children.forEach(c => {\n fields = fields.concat(getFields([c]))\n })\n return fields\n }).flat(Infinity) as IFormField[]\n return all\n}\n\n/**\n * Wrapper for lodash `get` function to get the value from a given path in the form values\n *\n * @param path - The path to get the value from\n * @param formValues - The form values to get the value from\n * @returns The value from the given path in the form values or undefined\n */\n\nexport function getValueFromPath (path: string, formValues: IFormValues): IValueType | IValueType[] | undefined {\n return get(formValues, path)\n}\n\n/**\n * Returns the value of a given field from the form values\n *\n * @param field - The field to get the value from\n * @param formValues - The form values to get the value from\n * @param index - The index of the field in the array (optional). If undefined, the last value will be returned as an array if it is one\n * @returns The value of the given field from the form values or undefined\n */\n\nexport function getFieldValue (field: IFormField, formValues: IFormValues, index?: number): IValueType | IValueType[] | undefined {\n const path = makeJsonPath(field, index)\n const val = getValueFromPath(path, formValues) // formValues[field.id]\n return val\n}\n\n/**\n * Returns the path of a given field. Used for writing to form values\n *\n * @param field - The field to get the path from\n * @returns The path of the given field or the id of the field if no path is defined\n */\nexport function getPathFromField (field: IFormField): string {\n // console.log(`${field.path !== undefined ? field.path.join('.') : 'nopath'} = ${field.id}`)\n if (field.destPath) {\n return field.destPath\n }\n return field.path !== undefined ? field.path.filter(f => !(f.type === 'object' && f.skip_path === true)).map(f => f.id).join('.') : field.id\n // return makeJsonPath(field)\n}\n\n/**\n * Returns all fields and child from a given form section. A form can be a form section or a wizard step or a page. This will recursively find child fields in pages, wizard steps and object fields\n *\n * @param formSection - The form section to get the fields from\n * @returns An array of fields from the given form section\n */\nexport function getFieldsFromFormSection (formSection: IFormSection): IFormField[] {\n const pageFields = formSection?.pages?.map(p => getFieldsFromFormSection(p)).flat(1)\n const wizardFields = formSection?.wizard_steps?.map(p => getFieldsFromFormSection(p)).flat(1)\n const fields = getFields((formSection?.fields ?? [])).concat(pageFields ?? []).concat(wizardFields ?? [])\n return fields\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getters.js","sources":["../../../../src/utils/getters.ts"],"sourcesContent":["import { type IFormSection, type IFormValues, type IValueType, type IFormField, type IObjectField } from '@/Form/Creator/FormCreatorTypes'\r\nimport get from 'lodash/get'\r\n\r\n/**\r\n * Returns the JSON path for a given field\r\n *\r\n * @param field - The field to get the JSON path for\r\n * @param index - The index of the field in the array (optional)\r\n * @returns The JSON path for the given field\r\n */\r\nexport const makeJsonPath = (field: IFormField, index?: number): string | undefined => {\r\n if (field.type === 'object' && field.skip_path === true) {\r\n return undefined\r\n }\r\n const fieldExtra = `${field.multiple && (field.index !== undefined || index !== undefined) ? `[${index ?? field.index}]` : ''}`\r\n if (field.destPath !== undefined) {\r\n return `${field.destPath}${fieldExtra}`\r\n } else if (field.path === undefined) {\r\n return `${field.id}${fieldExtra}`\r\n } else {\r\n const path = field.path\r\n const pathLen = path.length\r\n return field.path.map((f, i) => (f.multiple && (i < (pathLen - 1) || index !== undefined || f.index !== undefined)) ? `${f.id}${`[${index ?? f.index ?? 0}]`}` : f.id).join('.')\r\n }\r\n}\r\n\r\n/**\r\n * Returns the child fields of a given field\r\n *\r\n * @param field - The field to get the child fields from\r\n * @returns The child fields of the given field\r\n */\r\nexport const getChildFields = (field: { id: string, fields?: IFormField[] }): IFormField[] => {\r\n return field?.fields ?? []\r\n}\r\n\r\n/**\r\n * Recursively gets all fields from a given array of fields\r\n *\r\n * @param fields - The array of fields to get the fields from\r\n * @returns An array of all fields\r\n */\r\n\r\nexport const getFields = (fields?: Array<{ id: string, fields?: IFormField[] }>): IFormField[] => {\r\n if (fields === undefined) {\r\n return []\r\n }\r\n const all = fields.map(field => {\r\n let fields = [field]\r\n const children = getChildFields(field)\r\n children.forEach(c => {\r\n fields = fields.concat(getFields([c]))\r\n })\r\n return fields\r\n }).flat(Infinity) as IFormField[]\r\n return all\r\n}\r\n\r\n/**\r\n * Wrapper for lodash `get` function to get the value from a given path in the form values\r\n *\r\n * @param path - The path to get the value from\r\n * @param formValues - The form values to get the value from\r\n * @returns The value from the given path in the form values or undefined\r\n */\r\n\r\nexport function getValueFromPath (path: string, formValues: IFormValues): IValueType | IValueType[] | undefined {\r\n return get(formValues, path)\r\n}\r\n\r\nfunction getObjectFieldValue (field: IObjectField, formValues: IFormValues, index?: number): IValueType | IValueType[] | undefined {\r\n const vals = field.fields.map(f => {\r\n const p = makeJsonPath(f, index)\r\n const val = getFieldValue(f, formValues, index)\r\n return p !== undefined\r\n ? { key: p, val }\r\n : typeof val === 'object' && val !== null\r\n ? Object.entries(val).map(([k, v]) => ({ key: k, val: v }))\r\n : undefined\r\n }).flat(Infinity).filter(d => d !== undefined) as Array<{ key: string, val: IValueType | IValueType[] | undefined }>\r\n return Object.fromEntries(vals.map(v => [v.key, v.val]))\r\n}\r\n\r\n/**\r\n * Returns the value of a given field from the form values\r\n *\r\n * @param field - The field to get the value from\r\n * @param formValues - The form values to get the value from\r\n * @param index - The index of the field in the array (optional). If undefined, the last value will be returned as an array if it is one\r\n * @returns The value of the given field from the form values or undefined\r\n */\r\n\r\nexport function getFieldValue (field: IFormField, formValues: IFormValues, index?: number): IValueType | IValueType[] | undefined {\r\n const path = makeJsonPath(field, index)\r\n if (field.type === 'object' && field.fields !== undefined && path === undefined) {\r\n return getObjectFieldValue(field, formValues, index)\r\n } else if (path === undefined) {\r\n return undefined\r\n }\r\n const val = getValueFromPath(path, formValues) // formValues[field.id]\r\n return val\r\n}\r\n\r\n/**\r\n * Returns the path of a given field. Used for writing to form values\r\n *\r\n * @param field - The field to get the path from\r\n * @returns The path of the given field or the id of the field if no path is defined\r\n */\r\nexport function getPathFromField (field: IFormField): string | undefined {\r\n // console.log(`${field.path !== undefined ? field.path.join('.') : 'nopath'} = ${field.id}`)\r\n if (field.type === 'object' && field.skip_path === true) {\r\n return undefined\r\n }\r\n if (field.destPath) {\r\n return field.destPath\r\n }\r\n return field.path !== undefined\r\n ? field.path.filter(f => !(f.type === 'object' && f.skip_path === true)).map(f => f.id).join('.')\r\n : field.id\r\n // return makeJsonPath(field)\r\n}\r\n\r\n/**\r\n * Returns all fields and child from a given form section. A form can be a form section or a wizard step or a page. This will recursively find child fields in pages, wizard steps and object fields\r\n *\r\n * @param formSection - The form section to get the fields from\r\n * @returns An array of fields from the given form section\r\n */\r\nexport function getFieldsFromFormSection (formSection: IFormSection): IFormField[] {\r\n const pageFields = formSection?.pages?.map(p => getFieldsFromFormSection(p)).flat(1)\r\n const wizardFields = formSection?.wizard_steps?.map(p => getFieldsFromFormSection(p)).flat(1)\r\n const fields = getFields((formSection?.fields ?? [])).concat(pageFields ?? []).concat(wizardFields ?? [])\r\n return fields\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
+ import { __assign } from '../../node_modules/tslib/tslib.es6.js';
1
2
  import { getFieldsFromFormSection, getPathFromField, getFieldValue } from './getters.js';
2
3
  import { checkCondition } from './validators.js';
4
+ import { merge } from 'lodash';
3
5
  import set from '../../_virtual/set.js';
4
6
 
5
7
  var addFieldPath = function (field, parentPath) {
@@ -42,10 +44,43 @@ function copyAndAddPathToFields(formOrContainer) {
42
44
  var form = addPathsToFormSections(structuredClone(formOrContainer));
43
45
  return form;
44
46
  }
47
+ function removeFieldPath(field) {
48
+ field.path = undefined;
49
+ field.level = undefined;
50
+ if (field.type === 'object' && field.fields !== undefined) {
51
+ field.fields = field.fields.map(function (childField) {
52
+ return removeFieldPath(childField);
53
+ });
54
+ }
55
+ return field;
56
+ }
57
+ function removePathsFromFormSections(section) {
58
+ if (section.pages !== undefined) {
59
+ section.pages = section.pages.map(function (page) {
60
+ return removePathsFromFormSections(page);
61
+ });
62
+ }
63
+ if (section.wizard_steps !== undefined) {
64
+ section.wizard_steps = section.wizard_steps.map(function (wizardStep) {
65
+ return removePathsFromFormSections(wizardStep);
66
+ });
67
+ }
68
+ if (section.fields !== undefined) {
69
+ section.fields = section.fields.map(function (field) {
70
+ return removeFieldPath(field);
71
+ });
72
+ }
73
+ return section;
74
+ }
75
+ function copyAndRemovePathFromFields(formOrContainer) {
76
+ var form = removePathsFromFormSections(structuredClone(formOrContainer));
77
+ return form;
78
+ }
45
79
  function cleanFormValuesLevel(formValues, fields, formValuesPath) {
46
80
  if (formValuesPath === void 0) { formValuesPath = ''; }
47
81
  var formValuesCopy = structuredClone(formValues);
48
82
  Object.keys(formValues).forEach(function (key) {
83
+ var _a;
49
84
  var path = formValuesPath !== '' ? "".concat(formValuesPath, ".").concat(key) : key;
50
85
  var field = fields === null || fields === void 0 ? void 0 : fields.find(function (f) { return getPathFromField(f) === path; });
51
86
  if (field !== undefined && !checkCondition(field, formValues)) {
@@ -55,7 +90,7 @@ function cleanFormValuesLevel(formValues, fields, formValuesPath) {
55
90
  // are not checked (geom, json, etc)
56
91
  }
57
92
  else if (typeof formValuesCopy[key] === 'object' && ((field === null || field === void 0 ? void 0 : field.type) === 'object' || field === undefined)) {
58
- formValuesCopy[key] = cleanFormValuesLevel(formValuesCopy[key], fields, path);
93
+ formValuesCopy[key] = cleanFormValuesLevel(((_a = formValuesCopy[key]) !== null && _a !== void 0 ? _a : {}), fields, path);
59
94
  }
60
95
  else if (field === undefined) {
61
96
  formValuesCopy[key] = undefined;
@@ -72,13 +107,27 @@ function cleanUnusedDependenciesFromFormValues(form, formValues) {
72
107
  }
73
108
  function updateFormValuesWithFieldValueInPlace(field, newValue, formValues) {
74
109
  var fieldPath = getPathFromField(field);
75
- set(formValues, fieldPath, newValue);
110
+ if (fieldPath === undefined) {
111
+ merge(formValues, newValue);
112
+ }
113
+ else {
114
+ set(formValues, fieldPath !== null && fieldPath !== void 0 ? fieldPath : '', newValue);
115
+ }
76
116
  }
77
117
  function updateFormValuesWithFieldValue(field, newValue, formValues) {
78
118
  var formValuesCopy = structuredClone(formValues);
79
119
  updateFormValuesWithFieldValueInPlace(field, newValue, formValuesCopy);
80
120
  return formValuesCopy;
81
121
  }
122
+ function cleanAndUpdateFormValuesWithFieldValue(_a) {
123
+ var field = _a.field, form = _a.form, value = _a.value, formValues = _a.formValues;
124
+ var updatedFormValuesCopyPreClean = updateFormValuesWithFieldValue(field, value, formValues);
125
+ var cleanedFormValues = cleanUnusedDependenciesFromFormValues(form, updatedFormValuesCopyPreClean);
126
+ // re-assigning the form values lets it be cleaned above, and re-assigned below if the value is uses the same path as a removed value
127
+ // initial use case: multiple geometry fields with each shape type as pre-set draw type and a second field that determines the draw type
128
+ var formValuesCopyClean = updateFormValuesWithFieldValue(field, value, cleanedFormValues);
129
+ return formValuesCopyClean;
130
+ }
82
131
  var assignDefaultValuesToFormValues = function (form, formValues) {
83
132
  var formValuesCopy = structuredClone(formValues);
84
133
  var formWithPaths = copyAndAddPathToFields(form);
@@ -89,6 +138,34 @@ var assignDefaultValuesToFormValues = function (form, formValues) {
89
138
  });
90
139
  return formValuesCopy;
91
140
  };
141
+ var assignIndexToField = function (field, index) {
142
+ return __assign(__assign({}, field), { index: index });
143
+ };
144
+ var assignIndexToFields = function (parentField, index) {
145
+ return parentField.fields.map(function (f) {
146
+ if (f.path !== undefined && parentField.level !== undefined && f.path[parentField.level - 1] !== undefined) {
147
+ var newPath = f.path.slice();
148
+ newPath[parentField.level - 1] = __assign(__assign({}, parentField), { index: index });
149
+ f.path = newPath;
150
+ }
151
+ return __assign({}, f);
152
+ });
153
+ };
154
+ var createOneOfMultipleField = function (field, index) {
155
+ var path = field.path ? field.path.slice() : undefined;
156
+ if (path !== undefined) {
157
+ var last = assignIndexToField(path[path.length - 1], index);
158
+ path[path.length - 1] = last;
159
+ if (last.type === 'object' && last.fields !== undefined) {
160
+ last.fields = assignIndexToFields(last, index);
161
+ }
162
+ }
163
+ var out = __assign(__assign({}, field), { path: path, index: index, required: false, label: index > 0 ? null : field.label, id: "".concat(field.id, "-").concat(index) });
164
+ if (field.type === 'object' && field.fields !== undefined && out.type === 'object') {
165
+ out.fields = assignIndexToFields(field, index);
166
+ }
167
+ return out;
168
+ };
92
169
 
93
- export { addFieldPath, assignDefaultValuesToFormValues, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, updateFormValuesWithFieldValue, updateFormValuesWithFieldValueInPlace };
170
+ export { addFieldPath, assignDefaultValuesToFormValues, cleanAndUpdateFormValuesWithFieldValue, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, copyAndRemovePathFromFields, createOneOfMultipleField, updateFormValuesWithFieldValue, updateFormValuesWithFieldValueInPlace };
94
171
  //# sourceMappingURL=manipulators.js.map