@axdspub/axiom-ui-forms 0.2.4 → 0.2.5

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 (43) hide show
  1. package/library/axiom-ui-forms.d.ts +12 -17
  2. package/library/esm/_virtual/index2.js +2 -2
  3. package/library/esm/_virtual/index3.js +2 -2
  4. package/library/esm/_virtual/index6.js +2 -2
  5. package/library/esm/_virtual/index8.js +2 -2
  6. package/library/esm/_virtual/index9.js +2 -2
  7. package/library/esm/node_modules/ajv/dist/compile/codegen/index.js +1 -1
  8. package/library/esm/node_modules/ajv/dist/compile/validate/index.js +1 -1
  9. package/library/esm/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -1
  10. package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
  11. package/library/esm/node_modules/ajv/dist/vocabularies/format/index.js +1 -1
  12. package/library/esm/src/Form/Components/FieldCreator.js +10 -9
  13. package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
  14. package/library/esm/src/Form/Components/FieldLabel.js +6 -6
  15. package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
  16. package/library/esm/src/Form/Components/Inputs/Date.js +8 -12
  17. package/library/esm/src/Form/Components/Inputs/Date.js.map +1 -1
  18. package/library/esm/src/Form/Components/Inputs/GeoJSON.js +49 -48
  19. package/library/esm/src/Form/Components/Inputs/GeoJSON.js.map +1 -1
  20. package/library/esm/src/Form/Components/Inputs/Geometry.js +81 -59
  21. package/library/esm/src/Form/Components/Inputs/Geometry.js.map +1 -1
  22. package/library/esm/src/Form/Components/Inputs/Object.js +3 -3
  23. package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
  24. package/library/esm/src/Form/Creator/FormContextProvider.js +17 -0
  25. package/library/esm/src/Form/Creator/FormContextProvider.js.map +1 -0
  26. package/library/esm/src/Form/Creator/FormCreator.js +22 -23
  27. package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
  28. package/library/esm/src/Form/Creator/FormFields.js +2 -2
  29. package/library/esm/src/Form/Creator/FormFields.js.map +1 -1
  30. package/library/esm/src/Form/Creator/FormSection.js +4 -4
  31. package/library/esm/src/Form/Creator/FormSection.js.map +1 -1
  32. package/library/esm/src/Form/Creator/FormSectionContextProvider.js +23 -0
  33. package/library/esm/src/Form/Creator/FormSectionContextProvider.js.map +1 -0
  34. package/library/esm/src/Form/Creator/Page.js +23 -34
  35. package/library/esm/src/Form/Creator/Page.js.map +1 -1
  36. package/library/esm/src/Form/Creator/Wizard.js +38 -48
  37. package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
  38. package/library/esm/src/Form/helpers.js +14 -6
  39. package/library/esm/src/Form/helpers.js.map +1 -1
  40. package/library/esm/src/Form/resolveRefs.js.map +1 -1
  41. package/library/esm/src/Form/schemaToFormHelpers.js +45 -25
  42. package/library/esm/src/Form/schemaToFormHelpers.js.map +1 -1
  43. package/package.json +14 -7
@@ -5,7 +5,7 @@ import { utils as index$1 } from '../../../../node_modules/@axdspub/axiom-ui-uti
5
5
  import React__default from 'react';
6
6
 
7
7
  var ObjectInput = function (_a) {
8
- var form = _a.form, field = _a.field, onChange = _a.onChange, value = _a.value, formValueState = _a.formValueState;
8
+ var field = _a.field, onChange = _a.onChange, value = _a.value;
9
9
  var initialValue = (typeof value === 'object' ? value !== null && value !== void 0 ? value : {} : {});
10
10
  if (field.type === 'object' && field.fields !== undefined) {
11
11
  var cl = "".concat(field.layout === 'horizontal' ? "flex flex-row gap-4 ".concat(field.label !== undefined ? 'px-0' : '') : 'flex flex-col gap-4');
@@ -17,7 +17,7 @@ var ObjectInput = function (_a) {
17
17
  React__default.createElement("div", { className: "p-4 bg-slate-100 ".concat(cl) }, field.fields.map(function (childField) {
18
18
  var _a;
19
19
  var key = ((_a = field.path) !== null && _a !== void 0 ? _a : [field.id]).concat(childField.id).join('.');
20
- return (React__default.createElement(FieldCreator, { formValueState: formValueState, onChange: function (e) {
20
+ return (React__default.createElement(FieldCreator, { onChange: function (e) {
21
21
  if (childField.type === 'object' && childField.skip_path === true) {
22
22
  onChange(e);
23
23
  }
@@ -28,7 +28,7 @@ var ObjectInput = function (_a) {
28
28
  }, className: index$1.makeClassName({
29
29
  defaultClassName: 'p-0',
30
30
  className: fc_1
31
- }), value: initialValue[childField.id], field: childField, form: form, key: key }));
31
+ }), value: initialValue[childField.id], field: childField, key: key }));
32
32
  }))));
33
33
  }
34
34
  return React__default.createElement("p", null,
@@ -1 +1 @@
1
- {"version":3,"file":"Object.js","sources":["../../../../../../src/Form/Components/Inputs/Object.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\nimport FieldLabel from '@/Form/Components/FieldLabel'\nimport { type ICompositeValueType, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport { utils } from '@axdspub/axiom-ui-utilities'\nimport React, { type ReactElement } from 'react'\n\nconst ObjectInput = ({ form, field, onChange, value, formValueState }: IFieldInputProps): ReactElement => {\n const initialValue = (typeof value === 'object' ? value ?? {} : {}) as ICompositeValueType\n if (field.type === 'object' && field.fields !== undefined) {\n const cl = `${field.layout === 'horizontal' ? `flex flex-row gap-4 ${field.label !== undefined ? 'px-0' : ''}` : 'flex flex-col gap-4'}`\n const fc = field.layout === 'horizontal' ? 'flex-1' : ''\n return (\n <div>\n {\n field.label !== undefined\n ? <FieldLabel {...field} />\n : null\n }\n <div className={`p-4 bg-slate-100 ${cl}`}>\n {\n field.fields.map((childField) => {\n const key = (field.path ?? [field.id]).concat(childField.id).join('.')\n\n return (\n <FieldCreator\n formValueState={formValueState}\n onChange={(e) => {\n if (childField.type === 'object' && childField.skip_path === true) {\n onChange(e)\n } else {\n initialValue[childField.id] = e\n onChange({ ...initialValue })\n }\n }}\n className={utils.makeClassName({\n defaultClassName: 'p-0',\n className: fc\n })}\n value={initialValue[childField.id]}\n field={childField}\n form={form}\n key={key}\n />\n )\n })\n }\n </div>\n </div>\n )\n }\n return <p>Field config for {field.id} is missing &apos;fields&apos;</p>\n}\n\nexport default ObjectInput\n"],"names":["React","utils"],"mappings":";;;;;;AAMM,IAAA,WAAW,GAAG,UAAC,EAAkE,EAAA;AAAhE,IAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,cAAc,GAAA,EAAA,CAAA,cAAA;IACjE,IAAM,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,aAAL,KAAK,KAAA,MAAA,GAAL,KAAK,GAAI,EAAE,GAAG,EAAE,CAAwB;AAC1F,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AACzD,QAAA,IAAM,EAAE,GAAG,EAAG,CAAA,MAAA,CAAA,KAAK,CAAC,MAAM,KAAK,YAAY,GAAG,uBAAA,CAAA,MAAA,CAAwB,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,MAAM,GAAG,EAAE,CAAE,GAAG,qBAAqB,CAAE;AACzI,QAAA,IAAM,IAAE,GAAG,KAAK,CAAC,MAAM,KAAK,YAAY,GAAG,QAAQ,GAAG,EAAE;AACxD,QAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;YAEE,KAAK,CAAC,KAAK,KAAK;AACd,kBAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAI;AAC3B,kBAAE,IAAI;AAEV,YAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,oBAAqB,CAAA,MAAA,CAAA,EAAE,CAAE,EAAA,EAEvC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,UAAU,EAAA;;gBAC1B,IAAM,GAAG,GAAG,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAEtE,QACEA,cAAC,CAAA,aAAA,CAAA,YAAY,EACX,EAAA,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,UAAC,CAAC,EAAA;AACV,wBAAA,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,KAAK,IAAI,EAAE;4BACjE,QAAQ,CAAC,CAAC,CAAC;;6BACN;AACL,4BAAA,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC;4BAC/B,QAAQ,CAAA,QAAA,CAAA,EAAA,EAAM,YAAY,CAAA,CAAG;;AAEjC,qBAAC,EACD,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AAC7B,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,SAAS,EAAE;qBACZ,CAAC,EACF,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,EAClC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,GAAG,EACR,CAAA;AAEN,aAAC,CAAC,CAEA,CACA;;IAGV,OAAOD,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAAqB,QAAA,KAAK,CAAC,EAAE;+BAAmC;AACzE;;;;"}
1
+ {"version":3,"file":"Object.js","sources":["../../../../../../src/Form/Components/Inputs/Object.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\nimport FieldLabel from '@/Form/Components/FieldLabel'\nimport { type ICompositeValueType, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport { utils } from '@axdspub/axiom-ui-utilities'\nimport React, { type ReactElement } from 'react'\n\nconst ObjectInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\n const initialValue = (typeof value === 'object' ? value ?? {} : {}) as ICompositeValueType\n if (field.type === 'object' && field.fields !== undefined) {\n const cl = `${field.layout === 'horizontal' ? `flex flex-row gap-4 ${field.label !== undefined ? 'px-0' : ''}` : 'flex flex-col gap-4'}`\n const fc = field.layout === 'horizontal' ? 'flex-1' : ''\n return (\n <div>\n {\n field.label !== undefined\n ? <FieldLabel {...field} />\n : null\n }\n <div className={`p-4 bg-slate-100 ${cl}`}>\n {\n field.fields.map((childField) => {\n const key = (field.path ?? [field.id]).concat(childField.id).join('.')\n\n return (\n <FieldCreator\n onChange={(e) => {\n if (childField.type === 'object' && childField.skip_path === true) {\n onChange(e)\n } else {\n initialValue[childField.id] = e\n onChange({ ...initialValue })\n }\n }}\n className={utils.makeClassName({\n defaultClassName: 'p-0',\n className: fc\n })}\n value={initialValue[childField.id]}\n field={childField}\n key={key}\n />\n )\n })\n }\n </div>\n </div>\n )\n }\n return <p>Field config for {field.id} is missing &apos;fields&apos;</p>\n}\n\nexport default ObjectInput\n"],"names":["React","utils"],"mappings":";;;;;;AAMM,IAAA,WAAW,GAAG,UAAC,EAA4C,EAAA;AAA1C,IAAA,IAAA,KAAK,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;IAC3C,IAAM,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,aAAL,KAAK,KAAA,MAAA,GAAL,KAAK,GAAI,EAAE,GAAG,EAAE,CAAwB;AAC1F,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AACzD,QAAA,IAAM,EAAE,GAAG,EAAG,CAAA,MAAA,CAAA,KAAK,CAAC,MAAM,KAAK,YAAY,GAAG,uBAAA,CAAA,MAAA,CAAwB,KAAK,CAAC,KAAK,KAAK,SAAS,GAAG,MAAM,GAAG,EAAE,CAAE,GAAG,qBAAqB,CAAE;AACzI,QAAA,IAAM,IAAE,GAAG,KAAK,CAAC,MAAM,KAAK,YAAY,GAAG,QAAQ,GAAG,EAAE;AACxD,QAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;YAEE,KAAK,CAAC,KAAK,KAAK;AACd,kBAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAI;AAC3B,kBAAE,IAAI;AAEV,YAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,oBAAqB,CAAA,MAAA,CAAA,EAAE,CAAE,EAAA,EAEvC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,UAAU,EAAA;;gBAC1B,IAAM,GAAG,GAAG,CAAC,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAEtE,gBAAA,QACEA,cAAC,CAAA,aAAA,CAAA,YAAY,IACX,QAAQ,EAAE,UAAC,CAAC,EAAA;AACV,wBAAA,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,KAAK,IAAI,EAAE;4BACjE,QAAQ,CAAC,CAAC,CAAC;;6BACN;AACL,4BAAA,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC;4BAC/B,QAAQ,CAAA,QAAA,CAAA,EAAA,EAAM,YAAY,CAAA,CAAG;;AAEjC,qBAAC,EACD,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;AAC7B,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,SAAS,EAAE;AACZ,qBAAA,CAAC,EACF,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,EAClC,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,GAAG,EAAA,CACR;AAEN,aAAC,CAAC,CAEA,CACA;;IAGV,OAAOD,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAAqB,QAAA,KAAK,CAAC,EAAE;+BAAmC;AACzE;;;;"}
@@ -0,0 +1,17 @@
1
+ import '../../../node_modules/tslib/tslib.es6.js';
2
+ import React__default, { createContext } from 'react';
3
+
4
+ var FormContext = createContext({
5
+ form: { id: '', label: '' },
6
+ formValues: {},
7
+ setFormValues: function (v) { }
8
+ });
9
+ var useFormContext = function () {
10
+ var ctx = React__default.useContext(FormContext);
11
+ if (!ctx)
12
+ throw new Error('useFormSectionContext must be used within FormSectionContextProvider');
13
+ return ctx;
14
+ };
15
+
16
+ export { FormContext, useFormContext };
17
+ //# sourceMappingURL=FormContextProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormContextProvider.js","sources":["../../../../../src/Form/Creator/FormContextProvider.tsx"],"sourcesContent":["import { type IFieldInputProps, type IForm, type IFormValues } from '@/Form/Creator/FormCreatorTypes'\nimport { type JSONSchema6 } from 'json-schema'\nimport React, { createContext, type ReactElement, type PropsWithChildren } from 'react'\n\nexport interface IFormContextValue {\n form: IForm\n formValues: IFormValues\n setFormValues: (v: IFormValues) => void\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n urlNavigable?: boolean\n schema?: JSONSchema6\n}\n\nexport const FormContext = createContext<IFormContextValue>({\n form: { id: '', label: '' },\n formValues: {},\n setFormValues: (v) => {}\n})\n\nexport const FormContextProvider = ({ children, ...props }: IFormContextValue & PropsWithChildren): ReactElement => {\n return (\n <FormContext.Provider value={{ ...props }}>\n {children}\n </FormContext.Provider>\n )\n}\n\nexport const useFormContext = (): IFormContextValue => {\n const ctx = React.useContext(FormContext)\n if (!ctx) throw new Error('useFormSectionContext must be used within FormSectionContextProvider')\n return ctx\n}\n"],"names":["React"],"mappings":";;;AAaO,IAAM,WAAW,GAAG,aAAa,CAAoB;IAC1D,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AAC3B,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,aAAa,EAAE,UAAC,CAAC,EAAA;AAClB,CAAA;AAUY,IAAA,cAAc,GAAG,YAAA;IAC5B,IAAM,GAAG,GAAGA,cAAK,CAAC,UAAU,CAAC,WAAW,CAAC;AACzC,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;AACjG,IAAA,OAAO,GAAG;AACZ;;;;"}
@@ -1,17 +1,15 @@
1
1
  import { __assign } from '../../../node_modules/tslib/tslib.es6.js';
2
+ import { FormContext } from './FormContextProvider.js';
2
3
  import FormHeader from './FormHeader.js';
3
4
  import FormSection from './FormSection.js';
4
5
  import { copyAndAddPathToFields, calculateSectionStatus } from '../helpers.js';
5
6
  import { utils as index$1 } from '../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
6
- import React__default, { useState, useEffect } from 'react';
7
+ import React__default from 'react';
7
8
 
8
9
  var FormStatus = function (_a) {
9
10
  var _b, _c, _d, _e;
10
11
  var form = _a.form, formValueState = _a.formValueState;
11
- var _f = useState(calculateSectionStatus([form], formValueState)), status = _f[0], setStatus = _f[1];
12
- useEffect(function () {
13
- setStatus(calculateSectionStatus([form], formValueState));
14
- }, [formValueState, form]);
12
+ var status = calculateSectionStatus([form], formValueState);
15
13
  return (React__default.createElement(React__default.Fragment, null,
16
14
  React__default.createElement("p", { className: 'text-xs mt-4' }, (_b = status[form.id]) === null || _b === void 0 ? void 0 :
17
15
  _b.completed,
@@ -26,25 +24,26 @@ var FormStatus = function (_a) {
26
24
  };
27
25
  var FormCreator = function (_a) {
28
26
  var _b;
29
- var form = _a.form, formValueState = _a.formValueState, note = _a.note, error = _a.error, onChange = _a.onChange, className = _a.className, _c = _a.urlNavigable, urlNavigable = _c === void 0 ? true : _c, inputOverrides = _a.inputOverrides;
30
- var _d = useState(null), activeForm = _d[0], setActiveForm = _d[1];
31
- useEffect(function () {
32
- var newForm = copyAndAddPathToFields(form);
33
- setActiveForm(newForm);
34
- }, [form]);
35
- if (activeForm === null) {
36
- return React__default.createElement("p", null, "Processing");
37
- }
27
+ var form = _a.form, formValueState = _a.formValueState, note = _a.note, error = _a.error, onChange = _a.onChange, className = _a.className, _c = _a.urlNavigable, urlNavigable = _c === void 0 ? true : _c, inputOverrides = _a.inputOverrides, schema = _a.schema;
28
+ var activeForm = copyAndAddPathToFields(form);
38
29
  activeForm.settings = __assign({ url_navigable: urlNavigable }, activeForm.settings);
39
- return (React__default.createElement("div", { className: index$1.makeClassName({
40
- className: (_b = activeForm === null || activeForm === void 0 ? void 0 : activeForm.settings) === null || _b === void 0 ? void 0 : _b.class_name,
41
- defaultClassName: className
42
- }) },
43
- React__default.createElement(FormHeader, { form: activeForm, note: note, error: error }),
44
- (activeForm === null || activeForm === void 0 ? void 0 : activeForm.fields) !== undefined && activeForm.fields.length > 0 && activeForm.pages === undefined && activeForm.wizard_steps === undefined
45
- ? React__default.createElement(FormStatus, { form: activeForm, formValueState: formValueState })
46
- : '',
47
- React__default.createElement(FormSection, { formSection: activeForm, formValueState: formValueState, form: activeForm, onChange: onChange, inputOverrides: inputOverrides })));
30
+ return (React__default.createElement(FormContext.Provider, { value: {
31
+ form: activeForm,
32
+ formValues: formValueState[0],
33
+ setFormValues: formValueState[1],
34
+ inputOverrides: inputOverrides,
35
+ schema: schema,
36
+ urlNavigable: activeForm.settings.url_navigable
37
+ } },
38
+ React__default.createElement("div", { className: index$1.makeClassName({
39
+ className: (_b = activeForm === null || activeForm === void 0 ? void 0 : activeForm.settings) === null || _b === void 0 ? void 0 : _b.class_name,
40
+ defaultClassName: className
41
+ }) },
42
+ React__default.createElement(FormHeader, { form: activeForm, note: note, error: error }),
43
+ (activeForm === null || activeForm === void 0 ? void 0 : activeForm.fields) !== undefined && activeForm.fields.length > 0 && activeForm.pages === undefined && activeForm.wizard_steps === undefined
44
+ ? React__default.createElement(FormStatus, { form: activeForm, formValueState: formValueState })
45
+ : '',
46
+ React__default.createElement(FormSection, { formSection: activeForm, onChange: onChange }))));
48
47
  };
49
48
 
50
49
  export { FormCreator as default };
@@ -1 +1 @@
1
- {"version":3,"file":"FormCreator.js","sources":["../../../../../src/Form/Creator/FormCreator.tsx"],"sourcesContent":["import { type IFormValues, type IForm, type IValueChangeFn, type IFieldInputProps, type IFormValueState } from '@/Form/Creator/FormCreatorTypes'\nimport FormHeader from '@/Form/Creator/FormHeader'\nimport FormSection from '@/Form/Creator/FormSection'\nimport { calculateSectionStatus, copyAndAddPathToFields } from '@/Form/helpers'\nimport { utils } from '@axdspub/axiom-ui-utilities'\nimport { type JSONSchema7 } from 'json-schema'\nimport React, { useEffect, useState, type ReactElement } from 'react'\n\nexport interface IFormCreatorProps {\n form: IForm\n schema?: JSONSchema7\n formValueState: [IFormValues, (v: IFormValues) => void]\n note?: string\n error?: string\n onChange?: IValueChangeFn\n className?: string\n urlNavigable?: boolean\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n}\n\nconst FormStatus = ({ form, formValueState }: { form: IForm, formValueState: IFormValueState }): ReactElement => {\n const [status, setStatus] = useState<IFormSectionStatus>(calculateSectionStatus([form], formValueState))\n useEffect(() => {\n setStatus(calculateSectionStatus([form], formValueState))\n }, [formValueState, form])\n\n return (\n <>\n <p className='text-xs mt-4'>{status[form.id]?.completed} of {status[form.id]?.total} total</p>\n <p className='text-xs mt-2'>{status[form.id]?.requiredCompleted} of {status[form.id]?.requiredTotal} required</p>\n </>\n )\n}\n\nconst FormCreator = ({\n form,\n formValueState,\n note,\n error,\n onChange,\n className,\n urlNavigable = true,\n inputOverrides\n}: IFormCreatorProps): ReactElement => {\n const [activeForm, setActiveForm] = useState<IForm | null>(null)\n useEffect(() => {\n const newForm = copyAndAddPathToFields(form)\n setActiveForm(newForm)\n }, [form])\n if (activeForm === null) {\n return <p>Processing</p>\n }\n\n activeForm.settings = {\n url_navigable: urlNavigable,\n ...activeForm.settings\n }\n\n return (\n\n <div className={utils.makeClassName({\n className: activeForm?.settings?.class_name,\n defaultClassName: className\n })}>\n <FormHeader form={activeForm} note={note} error={error} />\n {\n activeForm?.fields !== undefined && activeForm.fields.length > 0 && activeForm.pages === undefined && activeForm.wizard_steps === undefined\n ? <FormStatus form={activeForm} formValueState={formValueState} />\n : ''\n }\n <FormSection\n formSection={activeForm}\n formValueState={formValueState}\n form={activeForm}\n onChange={onChange}\n inputOverrides={inputOverrides}\n />\n </div>\n )\n}\n\nexport type IFormSectionStatus = Record<string, {\n completed: number\n total: number\n requiredTotal: number\n requiredCompleted: number\n valid: boolean\n}>\n\nexport default FormCreator\n"],"names":["React","utils"],"mappings":"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"}
1
+ {"version":3,"file":"FormCreator.js","sources":["../../../../../src/Form/Creator/FormCreator.tsx"],"sourcesContent":["import { FormContext } from '@/Form/Creator/FormContextProvider'\nimport { type IFormValues, type IForm, type IValueChangeFn, type IFieldInputProps, type IFormValueState } from '@/Form/Creator/FormCreatorTypes'\nimport FormHeader from '@/Form/Creator/FormHeader'\nimport FormSection from '@/Form/Creator/FormSection'\nimport { calculateSectionStatus, copyAndAddPathToFields } from '@/Form/helpers'\nimport { utils } from '@axdspub/axiom-ui-utilities'\nimport { type JSONSchema6 } from 'json-schema'\nimport React, { type ReactElement } from 'react'\n\nexport interface IFormCreatorProps {\n form: IForm\n schema?: JSONSchema6\n formValueState: [IFormValues, (v: IFormValues) => void]\n note?: string\n error?: string\n onChange?: IValueChangeFn\n className?: string\n urlNavigable?: boolean\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n}\n\nconst FormStatus = ({ form, formValueState }: { form: IForm, formValueState: IFormValueState }): ReactElement => {\n const status = calculateSectionStatus([form], formValueState)\n\n return (\n <>\n <p className='text-xs mt-4'>{status[form.id]?.completed} of {status[form.id]?.total} total</p>\n <p className='text-xs mt-2'>{status[form.id]?.requiredCompleted} of {status[form.id]?.requiredTotal} required</p>\n </>\n )\n}\n\nconst FormCreator = ({\n form,\n formValueState,\n note,\n error,\n onChange,\n className,\n urlNavigable = true,\n inputOverrides,\n schema\n}: IFormCreatorProps): ReactElement => {\n const activeForm = copyAndAddPathToFields(form)\n\n activeForm.settings = {\n url_navigable: urlNavigable,\n ...activeForm.settings\n }\n\n return (\n <FormContext.Provider value={{\n form: activeForm,\n formValues: formValueState[0],\n setFormValues: formValueState[1],\n inputOverrides,\n schema,\n urlNavigable: activeForm.settings.url_navigable\n }}>\n <div className={utils.makeClassName({\n className: activeForm?.settings?.class_name,\n defaultClassName: className\n })}>\n <FormHeader form={activeForm} note={note} error={error} />\n {\n activeForm?.fields !== undefined && activeForm.fields.length > 0 && activeForm.pages === undefined && activeForm.wizard_steps === undefined\n ? <FormStatus form={activeForm} formValueState={formValueState} />\n : ''\n }\n <FormSection\n formSection={activeForm}\n onChange={onChange}\n />\n </div>\n </FormContext.Provider>\n )\n}\n\nexport type IFormSectionStatus = Record<string, {\n completed: number\n total: number\n requiredTotal: number\n requiredCompleted: number\n valid: boolean\n}>\n\nexport default FormCreator\n"],"names":["React","utils"],"mappings":"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"}
@@ -2,11 +2,11 @@ import FieldCreator from '../Components/FieldCreator.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  var FormFields = function (_a) {
5
- var form = _a.form, fields = _a.fields, formValueState = _a.formValueState, onChange = _a.onChange, _b = _a.className, className = _b === void 0 ? 'flex flex-col gap-2' : _b, inputOverrides = _a.inputOverrides;
5
+ var fields = _a.fields, onChange = _a.onChange, _b = _a.className, className = _b === void 0 ? 'flex flex-col gap-2' : _b;
6
6
  return (React__default.createElement(React__default.Fragment, null, fields === undefined || fields.length < 1
7
7
  ? ''
8
8
  : React__default.createElement("div", { className: className }, fields === null || fields === void 0 ? void 0 : fields.map(function (field) {
9
- return (React__default.createElement(FieldCreator, { onChange: onChange, form: form, field: field, key: field.id, formValueState: formValueState, inputOverrides: inputOverrides }));
9
+ return (React__default.createElement(FieldCreator, { onChange: onChange, field: field, key: field.id }));
10
10
  }))));
11
11
  };
12
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"FormFields.js","sources":["../../../../../src/Form/Creator/FormFields.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\nimport { type IFieldInputProps, type IForm, type IFormField, type IFormValues, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\nimport React, { type ReactElement } from 'react'\n\nconst FormFields = ({\n form,\n fields,\n formValueState,\n onChange,\n className = 'flex flex-col gap-2',\n inputOverrides\n}: {\n form: IForm\n fields?: IFormField[]\n formValueState: [IFormValues, (v: IFormValues) => void]\n onChange?: IValueChangeFn\n className?: string\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n}): ReactElement => {\n return (\n <>\n {\n fields === undefined || fields.length < 1\n ? ''\n : <div className={className}>\n {\n fields?.map((field) => {\n return (\n <FieldCreator onChange={onChange} form={form} field={field} key={field.id} formValueState={formValueState} inputOverrides={inputOverrides}/>\n )\n })\n }\n </div>\n }\n </>\n )\n}\n\nexport default FormFields\n"],"names":["React"],"mappings":";;;AAIM,IAAA,UAAU,GAAG,UAAC,EAcnB,EAAA;AAbC,IAAA,IAAA,IAAI,UAAA,EACJ,MAAM,YAAA,EACN,cAAc,oBAAA,EACd,QAAQ,cAAA,EACR,EAAA,GAAA,EAAA,CAAA,SAAiC,EAAjC,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,qBAAqB,GAAA,EAAA,EACjC,cAAc,GAAA,EAAA,CAAA,cAAA;IASd,QACIA,cAEE,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG;AACtC,UAAE;AACF,UAAEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,EAEvB,EAAA,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,UAAC,KAAK,EAAA;AAChB,YAAA,QACEA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAA,CAAG;AAEhJ,SAAC,CAAC,CAEF,CAEL;AAET;;;;"}
1
+ {"version":3,"file":"FormFields.js","sources":["../../../../../src/Form/Creator/FormFields.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\nimport { type IFormField, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\nimport React, { type ReactElement } from 'react'\n\nconst FormFields = ({\n fields,\n onChange,\n className = 'flex flex-col gap-2'\n}: {\n fields?: IFormField[]\n onChange?: IValueChangeFn\n className?: string\n}): ReactElement => {\n return (\n <>\n {\n fields === undefined || fields.length < 1\n ? ''\n : <div className={className}>\n {\n fields?.map((field) => {\n return (\n <FieldCreator onChange={onChange} field={field} key={field.id} />\n )\n })\n }\n </div>\n }\n </>\n )\n}\n\nexport default FormFields\n"],"names":["React"],"mappings":";;;AAIM,IAAA,UAAU,GAAG,UAAC,EAQnB,EAAA;QAPC,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,iBAAiC,EAAjC,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,qBAAqB,GAAA,EAAA;IAMjC,QACIA,cAEE,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG;AACtC,UAAE;AACF,UAAEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,EAEvB,EAAA,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,UAAC,KAAK,EAAA;AAChB,YAAA,QACEA,cAAC,CAAA,aAAA,CAAA,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAA,CAAI;AAErE,SAAC,CAAC,CAEF,CAEL;AAET;;;;"}
@@ -5,7 +5,7 @@ import React__default from 'react';
5
5
 
6
6
  var FormSection = function (_a) {
7
7
  var _b, _c, _d;
8
- var formSection = _a.formSection, formValueState = _a.formValueState, form = _a.form, onChange = _a.onChange, _e = _a.level, level = _e === void 0 ? 0 : _e, inputOverrides = _a.inputOverrides;
8
+ var formSection = _a.formSection, onChange = _a.onChange, _e = _a.level, level = _e === void 0 ? 0 : _e; _a.inputOverrides;
9
9
  if (formSection === undefined) {
10
10
  return React__default.createElement(React__default.Fragment, null);
11
11
  }
@@ -32,10 +32,10 @@ var FormSection = function (_a) {
32
32
  });
33
33
  }
34
34
  return (React__default.createElement(React__default.Fragment, null, hasWizardSteps
35
- ? React__default.createElement(WizardLayout, { form: form, sections: wizardSteps, formValueState: formValueState, onChange: onChange, level: level, inputOverrides: inputOverrides })
35
+ ? React__default.createElement(WizardLayout, { sections: wizardSteps, onChange: onChange, level: level })
36
36
  : hasPages
37
- ? React__default.createElement(PageLayout, { form: form, sections: pages, formValueState: formValueState, onChange: onChange, level: level, inputOverrides: inputOverrides })
38
- : React__default.createElement(FormFields, { form: form, fields: fields, formValueState: formValueState, onChange: onChange, inputOverrides: inputOverrides })));
37
+ ? React__default.createElement(PageLayout, { sections: pages, onChange: onChange, level: level })
38
+ : React__default.createElement(FormFields, { fields: fields, onChange: onChange })));
39
39
  };
40
40
 
41
41
  export { FormSection as default };
@@ -1 +1 @@
1
- {"version":3,"file":"FormSection.js","sources":["../../../../../src/Form/Creator/FormSection.tsx"],"sourcesContent":["import { type IFieldInputProps, type IForm, type IFormSection, type IFormValueState, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\nimport FormFields from '@/Form/Creator/FormFields'\nimport PageLayout from '@/Form/Creator/Page'\nimport WizardLayout from '@/Form/Creator/Wizard'\nimport React, { type ReactElement } from 'react'\n\nconst FormSection = ({\n formSection,\n formValueState,\n form,\n onChange,\n level = 0,\n inputOverrides\n}: {\n formSection?: IFormSection\n formValueState: IFormValueState\n form: IForm\n onChange?: IValueChangeFn\n level?: number\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n\n}): ReactElement => {\n if (formSection === undefined) {\n return <></>\n }\n const pages = (formSection?.pages ?? []).slice()\n const fields = (formSection?.fields ?? []).slice()\n const wizardSteps = (formSection?.wizard_steps ?? []).slice()\n const hasPages = pages.length > 0\n const hasFields = fields.length > 0\n const hasWizardSteps = wizardSteps.length > 0\n if (hasPages && hasFields) {\n pages.unshift({\n id: 'default',\n label: 'Default',\n fields\n })\n }\n if ((hasPages || hasFields) && hasWizardSteps) {\n wizardSteps.unshift({\n id: 'default',\n order: -10,\n label: 'Default',\n pages,\n fields\n })\n }\n return (\n <>\n {\n hasWizardSteps\n ? <WizardLayout form={form} sections={wizardSteps} formValueState={formValueState} onChange={onChange} level={level} inputOverrides={inputOverrides} />\n\n : hasPages\n ? <PageLayout form={form} sections={pages} formValueState={formValueState} onChange={onChange} level={level} inputOverrides={inputOverrides} />\n : <FormFields form={form} fields={fields} formValueState={formValueState} onChange={onChange} inputOverrides={inputOverrides} />\n }\n </>\n )\n}\n\nexport default FormSection\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,WAAW,GAAG,UAAC,EAepB,EAAA;;AAdC,IAAA,IAAA,WAAW,iBAAA,EACX,cAAc,oBAAA,EACd,IAAI,UAAA,EACJ,QAAQ,cAAA,EACR,EAAA,GAAA,EAAA,CAAA,KAAS,EAAT,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,CAAC,GAAA,EAAA,EACT,cAAc,GAAA,EAAA,CAAA,cAAA;AAUd,IAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,QAAA,OAAOA,2DAAK;;AAEd,IAAA,IAAM,KAAK,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAChD,IAAA,IAAM,MAAM,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAClD,IAAA,IAAM,WAAW,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAC7D,IAAA,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;AACjC,IAAA,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACnC,IAAA,IAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AAC7C,IAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;QACzB,KAAK,CAAC,OAAO,CAAC;AACZ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAA;AACP,SAAA,CAAC;;IAEJ,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,cAAc,EAAE;QAC7C,WAAW,CAAC,OAAO,CAAC;AAClB,YAAA,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAA,KAAA;AACL,YAAA,MAAM,EAAA;AACP,SAAA,CAAC;;IAEJ,QACMA,4DAEI;UACIA,cAAC,CAAA,aAAA,CAAA,YAAY,EAAC,EAAA,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,EAAI;AAEvJ,UAAE;cACEA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAC,EAAA,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,EAAI;cAC7IA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAC,EAAA,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAA,CAAI,CAErI;AAEX;;;;"}
1
+ {"version":3,"file":"FormSection.js","sources":["../../../../../src/Form/Creator/FormSection.tsx"],"sourcesContent":["import { type IFieldInputProps, type IFormSection, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\nimport FormFields from '@/Form/Creator/FormFields'\nimport PageLayout from '@/Form/Creator/Page'\nimport WizardLayout from '@/Form/Creator/Wizard'\nimport React, { type ReactElement } from 'react'\n\nconst FormSection = ({\n formSection,\n onChange,\n level = 0,\n inputOverrides\n}: {\n formSection?: IFormSection\n onChange?: IValueChangeFn\n level?: number\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n\n}): ReactElement => {\n if (formSection === undefined) {\n return <></>\n }\n const pages = (formSection?.pages ?? []).slice()\n const fields = (formSection?.fields ?? []).slice()\n const wizardSteps = (formSection?.wizard_steps ?? []).slice()\n const hasPages = pages.length > 0\n const hasFields = fields.length > 0\n const hasWizardSteps = wizardSteps.length > 0\n if (hasPages && hasFields) {\n pages.unshift({\n id: 'default',\n label: 'Default',\n fields\n })\n }\n if ((hasPages || hasFields) && hasWizardSteps) {\n wizardSteps.unshift({\n id: 'default',\n order: -10,\n label: 'Default',\n pages,\n fields\n })\n }\n return (\n <>\n {\n hasWizardSteps\n ? <WizardLayout sections={wizardSteps} onChange={onChange} level={level} />\n\n : hasPages\n ? <PageLayout sections={pages} onChange={onChange} level={level} />\n : <FormFields fields={fields} onChange={onChange} />\n }\n </>\n )\n}\n\nexport default FormSection\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,WAAW,GAAG,UAAC,EAWpB,EAAA;;AAVC,IAAA,IAAA,WAAW,GAAA,EAAA,CAAA,WAAA,CAAA,CACX,QAAQ,GAAA,EAAA,CAAA,QAAA,CACR,CAAA,EAAA,GAAA,EAAA,CAAA,KAAS,CAAT,CAAA,KAAK,GAAG,EAAA,KAAA,MAAA,GAAA,CAAC,GAAA,EAAA,CAAA,CACK,EAAA,CAAA;AAQd,IAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,QAAA,OAAOA,2DAAK;;AAEd,IAAA,IAAM,KAAK,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAChD,IAAA,IAAM,MAAM,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAClD,IAAA,IAAM,WAAW,GAAG,CAAC,CAAA,EAAA,GAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,KAAK,EAAE;AAC7D,IAAA,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;AACjC,IAAA,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACnC,IAAA,IAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AAC7C,IAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;QACzB,KAAK,CAAC,OAAO,CAAC;AACZ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAA;AACP,SAAA,CAAC;;IAEJ,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,cAAc,EAAE;QAC7C,WAAW,CAAC,OAAO,CAAC;AAClB,YAAA,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAA,KAAA;AACL,YAAA,MAAM,EAAA;AACP,SAAA,CAAC;;IAEJ,QACMA,4DAEI;AACE,UAAEA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAI;AAE3E,UAAE;AACA,cAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAI;AACnE,cAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAI,CAAA,CAEzD;AAEX;;;;"}
@@ -0,0 +1,23 @@
1
+ import React__default, { createContext, useState, useMemo } from 'react';
2
+
3
+ var FormSectionContext = createContext({
4
+ path: '',
5
+ setActiveId: function () { }
6
+ });
7
+ var FormSectionContextProvider = function (props) {
8
+ var _a;
9
+ var _b = useState(props.id), activeId = _b[0], setActiveId = _b[1];
10
+ useMemo(function () {
11
+ setActiveId(props.id);
12
+ }, [props.id]);
13
+ return (React__default.createElement(FormSectionContext.Provider, { value: { activeId: activeId, setActiveId: setActiveId, path: (_a = props.path) !== null && _a !== void 0 ? _a : '' } }, props.children));
14
+ };
15
+ var useFormSectionContext = function () {
16
+ var ctx = React__default.useContext(FormSectionContext);
17
+ if (!ctx)
18
+ throw new Error('useFormSectionContext must be used within FormSectionContextProvider');
19
+ return ctx;
20
+ };
21
+
22
+ export { FormSectionContext, FormSectionContextProvider, useFormSectionContext };
23
+ //# sourceMappingURL=FormSectionContextProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormSectionContextProvider.js","sources":["../../../../../src/Form/Creator/FormSectionContextProvider.tsx"],"sourcesContent":["import React, { createContext, type PropsWithChildren, type ReactElement, useMemo, useState } from 'react'\n\nexport interface IFormSectionContextValue {\n activeId?: string\n setActiveId: (v: string | undefined) => void\n path: string\n}\nexport const FormSectionContext = createContext<IFormSectionContextValue>({\n path: '',\n setActiveId: () => {}\n})\nexport const FormSectionContextProvider = (props: PropsWithChildren & { id?: string, path?: string }): ReactElement => {\n const [activeId, setActiveId] = useState<string | undefined>(props.id)\n useMemo(() => {\n setActiveId(props.id)\n }, [props.id])\n return (\n <FormSectionContext.Provider value={{ activeId, setActiveId, path: props.path ?? '' }}>\n {props.children}\n </FormSectionContext.Provider>\n )\n}\n\nexport const useFormSectionContext = (): IFormSectionContextValue => {\n const ctx = React.useContext(FormSectionContext)\n if (!ctx) throw new Error('useFormSectionContext must be used within FormSectionContextProvider')\n return ctx\n}\n"],"names":["React"],"mappings":";;AAOO,IAAM,kBAAkB,GAAG,aAAa,CAA2B;AACxE,IAAA,IAAI,EAAE,EAAE;IACR,WAAW,EAAE;AACd,CAAA;AACM,IAAM,0BAA0B,GAAG,UAAC,KAAyD,EAAA;;AAC5F,IAAA,IAAA,EAA0B,GAAA,QAAQ,CAAqB,KAAK,CAAC,EAAE,CAAC,EAA/D,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,QAA0C;AACtE,IAAA,OAAO,CAAC,YAAA;AACN,QAAA,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AACvB,KAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,QACEA,cAAA,CAAA,aAAA,CAAC,kBAAkB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAA,QAAA,EAAE,WAAW,EAAA,WAAA,EAAE,IAAI,EAAE,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,EAAE,EAAA,EAClF,KAAK,CAAC,QAAQ,CACa;AAElC;AAEa,IAAA,qBAAqB,GAAG,YAAA;IACnC,IAAM,GAAG,GAAGA,cAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAChD,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;AACjG,IAAA,OAAO,GAAG;AACZ;;;;"}
@@ -1,23 +1,22 @@
1
+ import { FormSectionContextProvider, useFormSectionContext } from './FormSectionContextProvider.js';
1
2
  import FormSection from './FormSection.js';
2
3
  import NavElement from './NavElement.js';
3
4
  import { calculateSectionStatus } from '../helpers.js';
4
5
  import { InfoCircledIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
5
- import React__default, { useState, useEffect } from 'react';
6
+ import React__default from 'react';
7
+ import { useFormContext } from './FormContextProvider.js';
6
8
  import { useParams } from '../../../node_modules/react-router/dist/development/chunk-HA7DTUK3.js';
7
9
 
8
10
  var PageNav = function (_a) {
9
- var _b;
10
- var form = _a.form, sections = _a.sections, activeIdState = _a.activeIdState, level = _a.level;
11
- var activeId = activeIdState[0], setActiveState = activeIdState[1];
12
- var params = ((_b = useParams()['*']) !== null && _b !== void 0 ? _b : '').split('/');
13
- var path = params.slice(0, level).join('/');
11
+ var sections = _a.sections; _a.level;
12
+ var urlNavigable = useFormContext().urlNavigable;
13
+ var _b = useFormSectionContext(), activeId = _b.activeId, setActiveId = _b.setActiveId, path = _b.path;
14
14
  return (React__default.createElement("div", { className: 'flex flex-col w-[200px] border-slate-200' }, sections === null || sections === void 0 ? void 0 : sections.map(function (p) {
15
- var _a, _b;
16
- return (React__default.createElement(NavElement, { key: p.id, path: path, id: p.id, navigable: (_b = (_a = form === null || form === void 0 ? void 0 : form.settings) === null || _a === void 0 ? void 0 : _a.url_navigable) !== null && _b !== void 0 ? _b : true, onClick: function () { setActiveState(p.id); }, className: "border-none rounded-none bg-slate-100 text-sm font-normal text-left ".concat(activeId === p.id ? 'bg-slate-700 text-white' : 'hover:bg-slate-200') }, p.label));
15
+ return (React__default.createElement(NavElement, { key: p.id, path: path, id: p.id, navigable: urlNavigable !== null && urlNavigable !== void 0 ? urlNavigable : true, onClick: function () { setActiveId(p.id); }, className: "border-none rounded-none bg-slate-100 text-sm font-normal text-left ".concat(activeId === p.id ? 'bg-slate-700 text-white' : 'hover:bg-slate-200') }, p.label));
17
16
  })));
18
17
  };
19
18
  var ActivePage = function (_a) {
20
- _a.activeIdState; var form = _a.form, formValueState = _a.formValueState, formSection = _a.formSection, inputOverrides = _a.inputOverrides, onChange = _a.onChange, _b = _a.className, className = _b === void 0 ? 'flex flex-col gap-2 flex-grow' : _b, level = _a.level;
19
+ var formSection = _a.formSection, onChange = _a.onChange, _b = _a.className, className = _b === void 0 ? 'flex flex-col gap-2 flex-grow' : _b, level = _a.level;
21
20
  return (React__default.createElement("div", { className: className },
22
21
  (formSection === null || formSection === void 0 ? void 0 : formSection.description) !== undefined
23
22
  ? React__default.createElement("p", { className: 'pb-4 border-b border-slate-200 text-sm' },
@@ -25,36 +24,26 @@ var ActivePage = function (_a) {
25
24
  " ",
26
25
  formSection.description)
27
26
  : '',
28
- React__default.createElement(FormSection, { formSection: formSection, formValueState: formValueState, inputOverrides: inputOverrides, form: form, onChange: onChange, level: level + 1 })));
27
+ React__default.createElement(FormSection, { formSection: formSection, onChange: onChange, level: level + 1 })));
29
28
  };
30
29
  var PageLayout = function (_a) {
31
- var _b, _c, _d, _e, _f, _g, _h, _j, _k;
32
- var form = _a.form, sections = _a.sections, formValueState = _a.formValueState, onChange = _a.onChange, inputOverrides = _a.inputOverrides, _l = _a.ContentComponent, ContentComponent = _l === void 0 ? ActivePage : _l, _m = _a.NavComponent, NavComponent = _m === void 0 ? PageNav : _m, _o = _a.className, className = _o === void 0 ? 'flex flex-row gap-8' : _o, level = _a.level;
30
+ var _b, _c, _d, _e, _f, _g;
31
+ var sections = _a.sections, onChange = _a.onChange; _a.inputOverrides; var _h = _a.ContentComponent, ContentComponent = _h === void 0 ? ActivePage : _h, _j = _a.NavComponent, NavComponent = _j === void 0 ? PageNav : _j, _k = _a.className, className = _k === void 0 ? 'flex flex-row gap-8' : _k, level = _a.level;
33
32
  if (sections === undefined) {
34
33
  return React__default.createElement(React__default.Fragment, null);
35
34
  }
36
- var params = (_c = (_b = useParams()['*']) === null || _b === void 0 ? void 0 : _b.split('/')) !== null && _c !== void 0 ? _c : [];
37
- var activeIdState = useState(((_d = form === null || form === void 0 ? void 0 : form.settings) === null || _d === void 0 ? void 0 : _d.url_navigable)
38
- ? (_g = (_e = params[level]) !== null && _e !== void 0 ? _e : (_f = sections[0]) === null || _f === void 0 ? void 0 : _f.id) !== null && _g !== void 0 ? _g : null
39
- : (_j = (_h = sections[0]) === null || _h === void 0 ? void 0 : _h.id) !== null && _j !== void 0 ? _j : null);
40
- var _p = useState(calculateSectionStatus(sections, formValueState)), sectionStatus = _p[0], setSectionStatus = _p[1];
41
- useEffect(function () {
42
- setSectionStatus(calculateSectionStatus(sections, formValueState));
43
- }, [formValueState, sections]);
44
- var _q = useState((_k = sections === null || sections === void 0 ? void 0 : sections.find(function (s) { return s.id === activeIdState[0]; })) !== null && _k !== void 0 ? _k : sections === null || sections === void 0 ? void 0 : sections[0]), formSection = _q[0], setFormSection = _q[1];
45
- useEffect(function () {
46
- var _a;
47
- setFormSection((_a = sections === null || sections === void 0 ? void 0 : sections.find(function (s) { return s.id === activeIdState[0]; })) !== null && _a !== void 0 ? _a : sections === null || sections === void 0 ? void 0 : sections[0]);
48
- }, [activeIdState[0]]);
49
- useEffect(function () {
50
- var _a, _b, _c, _d;
51
- if (((_a = form === null || form === void 0 ? void 0 : form.settings) === null || _a === void 0 ? void 0 : _a.url_navigable) === true && params[level] !== activeIdState[0]) {
52
- activeIdState[1]((_d = (_b = params[level]) !== null && _b !== void 0 ? _b : (_c = sections[0]) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null);
53
- }
54
- }, [useParams()['*']]);
55
- return (React__default.createElement("div", { className: className },
56
- React__default.createElement(NavComponent, { form: form, sections: sections, sectionStatus: sectionStatus, activeIdState: activeIdState, level: level }),
57
- React__default.createElement(ContentComponent, { activeIdState: activeIdState, formSection: formSection, inputOverrides: inputOverrides, form: form, formValueState: formValueState, onChange: onChange, sectionStatus: sectionStatus, level: level })));
35
+ var _l = useFormContext(), urlNavigable = _l.urlNavigable, setFormValues = _l.setFormValues, formValues = _l.formValues;
36
+ var params = ((_b = useParams()['*']) !== null && _b !== void 0 ? _b : '').split('/');
37
+ var path = params.slice(0, level).join('/');
38
+ var id = urlNavigable
39
+ ? (params[level] && params[level] !== '') ? params[level] : ((_d = (_c = sections[0]) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null)
40
+ : (_f = (_e = sections[0]) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : null;
41
+ var sectionStatus = calculateSectionStatus(sections, [formValues, setFormValues]);
42
+ var formSection = (_g = sections === null || sections === void 0 ? void 0 : sections.find(function (s) { return s.id === id; })) !== null && _g !== void 0 ? _g : sections === null || sections === void 0 ? void 0 : sections[0];
43
+ return (React__default.createElement(FormSectionContextProvider, { path: path, id: id },
44
+ React__default.createElement("div", { className: className },
45
+ React__default.createElement(NavComponent, { sections: sections, sectionStatus: sectionStatus, level: level }),
46
+ React__default.createElement(ContentComponent, { formSection: formSection, onChange: onChange, sectionStatus: sectionStatus, level: level }))));
58
47
  };
59
48
 
60
49
  export { ActivePage, PageLayout as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Page.js","sources":["../../../../../src/Form/Creator/Page.tsx"],"sourcesContent":["import { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\nimport { type IFormValueState, type IForm, type IFormSection, type IValueChangeFn, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport FormSection from '@/Form/Creator/FormSection'\nimport NavElement from '@/Form/Creator/NavElement'\nimport { calculateSectionStatus } from '@/Form/helpers'\nimport { InfoCircledIcon } from '@radix-ui/react-icons'\nimport React, { useEffect, useState, type ReactElement } from 'react'\nimport { useParams } from 'react-router-dom'\n\nconst PageNav = ({\n form,\n sections,\n activeIdState,\n level\n}: {\n form: IForm\n sections?: IFormSection[]\n activeIdState: [string | null, (v: string | null) => void]\n level: number\n}): ReactElement => {\n const [activeId, setActiveState] = activeIdState\n const params = (useParams()['*'] ?? '').split('/')\n const path = params.slice(0, level).join('/')\n return (\n <div className='flex flex-col w-[200px] border-slate-200'>{\n sections?.map(p => {\n return (\n <NavElement\n key={p.id}\n path={path}\n id={p.id}\n navigable={form?.settings?.url_navigable ?? true}\n onClick={() => { setActiveState(p.id) }}\n className={ `border-none rounded-none bg-slate-100 text-sm font-normal text-left ${activeId === p.id ? 'bg-slate-700 text-white' : 'hover:bg-slate-200'}`}\n >{p.label}</NavElement>\n )\n })\n }</div>\n )\n}\n\nexport interface IPageLayoutProps {\n form: IForm\n sections?: IFormSection[]\n formValueState: IFormValueState\n onChange?: IValueChangeFn\n level: number\n ContentComponent?: React.FC<{\n activeIdState: [string | null, (v: string | null) => void]\n form: IForm\n level: number\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n formSection?: IFormSection\n formValueState: IFormValueState\n onChange?: IValueChangeFn\n sectionStatus: IFormSectionStatus\n }>\n NavComponent?: React.FC<{\n form: IForm\n sections?: IFormSection[]\n activeIdState: [string | null, (v: string | null) => void]\n sectionStatus: IFormSectionStatus\n level: number\n }>\n className?: string\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n}\n\nexport const ActivePage = ({\n activeIdState,\n form,\n formValueState,\n formSection,\n inputOverrides,\n onChange,\n className = 'flex flex-col gap-2 flex-grow',\n level\n}: {\n activeIdState: [string | null, (v: string | null) => void]\n form: IForm\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n formSection?: IFormSection\n formValueState: IFormValueState\n onChange?: IValueChangeFn\n className?: string\n level: number\n}): ReactElement => {\n return (\n <div className={className}>\n {\n formSection?.description !== undefined\n ? <p className='pb-4 border-b border-slate-200 text-sm'><InfoCircledIcon className='inline-block' /> {formSection.description}</p>\n : ''\n }\n <FormSection formSection={formSection} formValueState={formValueState} inputOverrides={inputOverrides} form={form} onChange={onChange} level={level + 1} />\n </div>\n )\n}\n\nconst PageLayout = ({\n form,\n sections,\n formValueState,\n onChange,\n inputOverrides,\n ContentComponent = ActivePage,\n NavComponent = PageNav,\n className = 'flex flex-row gap-8',\n level\n}: IPageLayoutProps): ReactElement => {\n if (sections === undefined) {\n return <></>\n }\n\n const params = useParams()['*']?.split('/') ?? []\n const activeIdState = useState<string | null>(form?.settings?.url_navigable\n ? params[level] ?? sections[0]?.id ?? null\n : sections[0]?.id ?? null\n )\n\n const [sectionStatus, setSectionStatus] = useState<IFormSectionStatus>(calculateSectionStatus(sections, formValueState))\n useEffect(() => {\n setSectionStatus(calculateSectionStatus(sections, formValueState))\n }, [formValueState, sections])\n\n const [formSection, setFormSection] = useState<IFormSection | undefined>(sections?.find(s => s.id === activeIdState[0]) ?? sections?.[0])\n useEffect(() => {\n setFormSection(sections?.find(s => s.id === activeIdState[0]) ?? sections?.[0])\n }, [activeIdState[0]])\n\n useEffect(() => {\n if (form?.settings?.url_navigable === true && params[level] !== activeIdState[0]) {\n activeIdState[1](params[level] ?? sections[0]?.id ?? null)\n }\n }, [useParams()['*']])\n return (\n <div className={className}>\n <NavComponent\n form={form}\n sections={sections}\n sectionStatus={sectionStatus}\n activeIdState={activeIdState}\n level={level}\n />\n <ContentComponent\n activeIdState={activeIdState}\n formSection={formSection}\n inputOverrides={inputOverrides}\n form={form}\n formValueState={formValueState}\n onChange={onChange}\n sectionStatus={sectionStatus}\n level={level}\n />\n </div>\n )\n}\n\nexport default PageLayout\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"Page.js","sources":["../../../../../src/Form/Creator/Page.tsx"],"sourcesContent":["import { FormSectionContextProvider, useFormSectionContext } from '@/Form/Creator/FormSectionContextProvider'\nimport { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\nimport { type IFormSection, type IValueChangeFn, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport FormSection from '@/Form/Creator/FormSection'\nimport NavElement from '@/Form/Creator/NavElement'\nimport { calculateSectionStatus } from '@/Form/helpers'\nimport { InfoCircledIcon } from '@radix-ui/react-icons'\nimport React, { type ReactElement } from 'react'\nimport { useParams } from 'react-router-dom'\nimport { useFormContext } from '@/Form/Creator/FormContextProvider'\n\nconst PageNav = ({\n sections,\n level\n}: {\n sections?: IFormSection[]\n level: number\n}): ReactElement => {\n const { urlNavigable } = useFormContext()\n const { activeId, setActiveId, path } = useFormSectionContext()\n return (\n <div className='flex flex-col w-[200px] border-slate-200'>{\n sections?.map(p => {\n return (\n <NavElement\n key={p.id}\n path={path}\n id={p.id}\n navigable={urlNavigable ?? true}\n onClick={() => { setActiveId(p.id) }}\n className={ `border-none rounded-none bg-slate-100 text-sm font-normal text-left ${activeId === p.id ? 'bg-slate-700 text-white' : 'hover:bg-slate-200'}`}\n >{p.label}</NavElement>\n )\n })\n }</div>\n )\n}\n\nexport interface IPageLayoutProps {\n sections?: IFormSection[]\n onChange?: IValueChangeFn\n level: number\n ContentComponent?: React.FC<{\n level: number\n formSection?: IFormSection\n onChange?: IValueChangeFn\n sectionStatus: IFormSectionStatus\n }>\n NavComponent?: React.FC<{\n sections?: IFormSection[]\n sectionStatus: IFormSectionStatus\n level: number\n }>\n className?: string\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\n}\n\nexport const ActivePage = ({\n formSection,\n onChange,\n className = 'flex flex-col gap-2 flex-grow',\n level\n}: {\n formSection?: IFormSection\n onChange?: IValueChangeFn\n className?: string\n level: number\n}): ReactElement => {\n return (\n <div className={className}>\n {\n formSection?.description !== undefined\n ? <p className='pb-4 border-b border-slate-200 text-sm'><InfoCircledIcon className='inline-block' /> {formSection.description}</p>\n : ''\n }\n <FormSection formSection={formSection} onChange={onChange} level={level + 1} />\n </div>\n )\n}\n\nconst PageLayout = ({\n\n sections,\n onChange,\n inputOverrides,\n ContentComponent = ActivePage,\n NavComponent = PageNav,\n className = 'flex flex-row gap-8',\n level\n}: IPageLayoutProps): ReactElement => {\n if (sections === undefined) {\n return <></>\n }\n\n const { urlNavigable, setFormValues, formValues } = useFormContext()\n const params = (useParams()['*'] ?? '').split('/')\n const path = params.slice(0, level).join('/')\n const id = urlNavigable\n ? (params[level] && params[level] !== '') ? params[level] : (sections[0]?.id ?? null)\n : sections[0]?.id ?? null\n const sectionStatus = calculateSectionStatus(sections, [formValues, setFormValues])\n const formSection = sections?.find(s => s.id === id) ?? sections?.[0]\n\n return (\n <FormSectionContextProvider path={path} id={id}>\n <div className={className}>\n <NavComponent\n sections={sections}\n sectionStatus={sectionStatus}\n level={level}\n />\n <ContentComponent\n formSection={formSection}\n onChange={onChange}\n sectionStatus={sectionStatus}\n level={level}\n />\n </div>\n </FormSectionContextProvider>\n )\n}\n\nexport default PageLayout\n"],"names":["React"],"mappings":";;;;;;;;;AAWA,IAAM,OAAO,GAAG,UAAC,EAMhB,EAAA;QALC,QAAQ,GAAA,EAAA,CAAA,QAAA,CACR,CAAK,EAAA,CAAA;AAKG,IAAA,IAAA,YAAY,GAAK,cAAc,EAAE,aAArB;AACd,IAAA,IAAA,EAAkC,GAAA,qBAAqB,EAAE,EAAvD,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,WAAW,GAAA,EAAA,CAAA,WAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAA4B;AAC/D,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4CAA4C,EACzD,EAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC,UAAA,CAAC,EAAA;AACb,QAAA,QACEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACT,GAAG,EAAE,CAAC,CAAC,EAAE,EACT,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,CAAC,CAAC,EAAE,EACR,SAAS,EAAE,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAA,MAAA,GAAZ,YAAY,GAAI,IAAI,EAC/B,OAAO,EAAE,YAAA,EAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,EAAE,EACpC,SAAS,EAAG,sEAAuE,CAAA,MAAA,CAAA,QAAQ,KAAK,CAAC,CAAC,EAAE,GAAG,yBAAyB,GAAG,oBAAoB,CAAE,EAAA,EACzJ,CAAC,CAAC,KAAK,CAAc;KAE1B,CAAC,CACG;AAEb,CAAC;AAqBM,IAAM,UAAU,GAAG,UAAC,EAU1B,EAAA;AATC,IAAA,IAAA,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAA,GAAA,EAAA,CAAA,SAA2C,EAA3C,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,+BAA+B,GAAA,EAAA,EAC3C,KAAK,GAAA,EAAA,CAAA,KAAA;AAOL,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,EAAA;QAErB,CAAA,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,WAAW,MAAK;AAC3B,cAAEA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,wCAAwC,EAAA;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAA,EAAC,SAAS,EAAC,cAAc,EAAG,CAAA;;gBAAE,WAAW,CAAC,WAAW;AAC7H,cAAE,EAAE;AAER,QAAAA,cAAA,CAAA,aAAA,CAAC,WAAW,EAAC,EAAA,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAI,CAAA,CAC3E;AAEZ;AAEM,IAAA,UAAU,GAAG,UAAC,EASD,EAAA;;AAPjB,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,CAAA,CACR,QAAQ,GAAA,EAAA,CAAA,QAAA,CACR,CAAc,EAAA,CAAA,cAAA,CAAA,KACd,EAA6B,GAAA,EAAA,CAAA,gBAAA,CAAA,CAA7B,gBAAgB,GAAA,EAAA,KAAA,MAAA,GAAG,UAAU,GAAA,EAAA,CAAA,CAC7B,EAAsB,GAAA,EAAA,CAAA,YAAA,CAAA,CAAtB,YAAY,GAAA,EAAA,KAAA,MAAA,GAAG,OAAO,GAAA,EAAA,CACtB,CAAA,EAAA,GAAA,EAAA,CAAA,SAAiC,CAAjC,CAAA,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,qBAAqB,GAAA,EAAA,CAAA,CACjC,KAAK,GAAA,EAAA,CAAA;AAEL,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,QAAA,OAAOA,2DAAK;;AAGR,IAAA,IAAA,EAA8C,GAAA,cAAc,EAAE,EAA5D,YAAY,GAAA,EAAA,CAAA,YAAA,EAAE,aAAa,GAAA,EAAA,CAAA,aAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAqB;AACpE,IAAA,IAAM,MAAM,GAAG,CAAC,CAAA,EAAA,GAAA,SAAS,EAAE,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC;AAClD,IAAA,IAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7C,IAAM,EAAE,GAAG;AACT,UAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;UAClF,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI;AAC3B,IAAA,IAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACnF,IAAA,IAAM,WAAW,GAAG,CAAA,EAAA,GAAA,QAAQ,aAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,EAAE,CAAX,EAAW,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,MAAA,GAAA,MAAA,GAAA,QAAQ,CAAG,CAAC,CAAC;IAErE,QACIA,cAAC,CAAA,aAAA,CAAA,0BAA0B,EAAC,EAAA,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAA;QAC5CA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,SAAS,EAAA;AACvB,YAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EACX,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,EACV,CAAA;YACJA,cAAC,CAAA,aAAA,CAAA,gBAAgB,IACf,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,EACV,CAAA,CACA,CACqB;AAEnC;;;;"}
@@ -2,61 +2,62 @@ import { calculateSectionStatus } from '../helpers.js';
2
2
  import { ActivePage } from './Page.js';
3
3
  import { utils as index$1 } from '../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
4
4
  import { CaretRightIcon, CaretLeftIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
5
- import React__default, { useState, useEffect } from 'react';
5
+ import React__default from 'react';
6
6
  import NavElement from './NavElement.js';
7
+ import { FormSectionContextProvider, useFormSectionContext } from './FormSectionContextProvider.js';
8
+ import { useFormContext } from './FormContextProvider.js';
7
9
  import { useParams } from '../../../node_modules/react-router/dist/development/chunk-HA7DTUK3.js';
8
10
 
9
11
  var WizardNav = function (_a) {
10
- var _b;
11
- var form = _a.form, activeIdState = _a.activeIdState, sections = _a.sections, sectionStatus = _a.sectionStatus, level = _a.level;
12
+ var sections = _a.sections, sectionStatus = _a.sectionStatus; _a.level;
12
13
  var steps = (sections !== null && sections !== void 0 ? sections : []).sort(function (a, b) { return a.order - b.order; });
13
- var params = ((_b = useParams()['*']) !== null && _b !== void 0 ? _b : '').split('/');
14
- var path = params.slice(0, level).join('/');
15
- var activeId = activeIdState[0], setActiveId = activeIdState[1];
14
+ var _b = useFormSectionContext(), activeId = _b.activeId, setActiveId = _b.setActiveId, path = _b.path;
15
+ var urlNavigable = useFormContext().urlNavigable;
16
16
  return (React__default.createElement("div", { className: 'relative' },
17
17
  React__default.createElement("div", { className: 'h-[2px] top-5 bg-slate-300 absolute left-0 right-0 z-0' }),
18
18
  React__default.createElement("div", { className: 'flex flex-row gap-1' }, steps.map(function (p, i) {
19
- var _a, _b, _c, _d, _e, _f;
19
+ var _a, _b, _c, _d;
20
20
  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' },
21
- React__default.createElement(NavElement, { path: path, id: p.id, navigable: (_b = (_a = form === null || form === void 0 ? void 0 : form.settings) === null || _a === void 0 ? void 0 : _a.url_navigable) !== null && _b !== void 0 ? _b : 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),
21
+ 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),
22
22
  i < steps.length - 1 && steps.length > 1
23
23
  ? React__default.createElement("span", { className: 'hidden absolute right-0 top-2 w-4 h-full bg-white' },
24
24
  React__default.createElement(CaretRightIcon, { className: 'w-4 h-6 fill-slate-300 stroke-slate-300' }))
25
25
  : '',
26
- React__default.createElement("p", { className: 'text-xs mt-4' }, (_c = sectionStatus[p.id]) === null || _c === void 0 ? void 0 :
27
- _c.completed,
28
- " of ", (_d = sectionStatus[p.id]) === null || _d === void 0 ? void 0 :
29
- _d.total,
26
+ React__default.createElement("p", { className: 'text-xs mt-4' }, (_a = sectionStatus[p.id]) === null || _a === void 0 ? void 0 :
27
+ _a.completed,
28
+ " of ", (_b = sectionStatus[p.id]) === null || _b === void 0 ? void 0 :
29
+ _b.total,
30
30
  " total"),
31
- React__default.createElement("p", { className: 'text-xs mt-2' }, (_e = sectionStatus[p.id]) === null || _e === void 0 ? void 0 :
32
- _e.requiredCompleted,
33
- " of ", (_f = sectionStatus[p.id]) === null || _f === void 0 ? void 0 :
34
- _f.requiredTotal,
31
+ React__default.createElement("p", { className: 'text-xs mt-2' }, (_c = sectionStatus[p.id]) === null || _c === void 0 ? void 0 :
32
+ _c.requiredCompleted,
33
+ " of ", (_d = sectionStatus[p.id]) === null || _d === void 0 ? void 0 :
34
+ _d.requiredTotal,
35
35
  " required")));
36
36
  }))));
37
37
  };
38
38
  var WizardNavSmall = function (_a) {
39
- var _b, _c, _d, _e, _f, _g;
40
- var form = _a.form, activeIdState = _a.activeIdState, sections = _a.sections; _a.sectionStatus; var level = _a.level;
41
- var activeId = activeIdState[0], setActiveId = activeIdState[1];
39
+ var _b;
40
+ var sections = _a.sections; _a.sectionStatus; _a.level;
41
+ var _c = useFormSectionContext(), activeId = _c.activeId, setActiveId = _c.setActiveId, path = _c.path;
42
+ var urlNavigable = useFormContext().urlNavigable;
42
43
  var steps = (sections !== null && sections !== void 0 ? sections : []).sort(function (a, b) { return a.order - b.order; });
43
44
  var stepsMap = Object.fromEntries(steps.map(function (p) { return [p.id, p]; }));
44
45
  var currentStep = (_b = stepsMap[activeId !== null && activeId !== void 0 ? activeId : '']) !== null && _b !== void 0 ? _b : steps[0];
45
46
  var currentIndex = steps.indexOf(currentStep);
46
47
  var nextIndex = currentIndex + 1;
47
48
  var prevIndex = currentIndex - 1;
48
- var params = ((_c = useParams()['*']) !== null && _c !== void 0 ? _c : '').split('/');
49
- var path = params.slice(0, level).join('/');
49
+ // const params = (useParams()['*'] ?? '').split('/')
50
+ // const path = params.slice(0, level).join('/')
50
51
  return (React__default.createElement("div", { className: 'flex flex-row gap-4 justify-end' },
51
52
  prevIndex >= 0
52
- ? React__default.createElement(NavElement, { className: 'px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700', path: path, id: steps[prevIndex].id, navigable: (_e = (_d = form === null || form === void 0 ? void 0 : form.settings) === null || _d === void 0 ? void 0 : _d.url_navigable) !== null && _e !== void 0 ? _e : true, onClick: function () { setActiveId(steps[prevIndex].id); } },
53
+ ? React__default.createElement(NavElement, { className: 'px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700', path: path, id: steps[prevIndex].id, navigable: urlNavigable !== null && urlNavigable !== void 0 ? urlNavigable : true, onClick: function () { setActiveId(steps[prevIndex].id); } },
53
54
  React__default.createElement(CaretLeftIcon, { className: 'inline' }),
54
55
  " Previous")
55
56
  : React__default.createElement("span", { className: index$1.createButtonClass({
56
57
  className: 'px-4 bg-white border-none text-sm text-slate-400'
57
58
  }) }, "Previous"),
58
59
  nextIndex < steps.length
59
- ? React__default.createElement(NavElement, { path: path, id: steps[nextIndex].id, navigable: (_g = (_f = form === null || form === void 0 ? void 0 : form.settings) === null || _f === void 0 ? void 0 : _f.url_navigable) !== null && _g !== void 0 ? _g : true, className: 'px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700', onClick: function () { setActiveId(steps[nextIndex].id); } },
60
+ ? React__default.createElement(NavElement, { path: path, id: steps[nextIndex].id, navigable: urlNavigable !== null && urlNavigable !== void 0 ? urlNavigable : true, className: 'px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700', onClick: function () { setActiveId(steps[nextIndex].id); } },
60
61
  "Next ",
61
62
  React__default.createElement(CaretRightIcon, { className: 'inline' }))
62
63
  : React__default.createElement("span", { className: index$1.createButtonClass({
@@ -64,34 +65,23 @@ var WizardNavSmall = function (_a) {
64
65
  }) }, "Next")));
65
66
  };
66
67
  var WizardLayout = function (_a) {
67
- var _b, _c, _d, _e, _f, _g, _h, _j, _k;
68
- var form = _a.form, sections = _a.sections, formValueState = _a.formValueState, onChange = _a.onChange, _l = _a.ContentComponent, ContentComponent = _l === void 0 ? ActivePage : _l, _m = _a.NavComponent, NavComponent = _m === void 0 ? WizardNav : _m, _o = _a.SmallNavComponent, SmallNavComponent = _o === void 0 ? WizardNavSmall : _o, _p = _a.className, className = _p === void 0 ? 'flex flex-col gap-16 pt-8' : _p, inputOverrides = _a.inputOverrides, level = _a.level;
68
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
69
+ var sections = _a.sections, onChange = _a.onChange, _m = _a.ContentComponent, ContentComponent = _m === void 0 ? ActivePage : _m, _o = _a.NavComponent, NavComponent = _o === void 0 ? WizardNav : _o, _p = _a.SmallNavComponent, SmallNavComponent = _p === void 0 ? WizardNavSmall : _p, _q = _a.className, className = _q === void 0 ? 'flex flex-col gap-16 pt-8' : _q, level = _a.level;
69
70
  if (sections === undefined) {
70
71
  return React__default.createElement(React__default.Fragment, null);
71
72
  }
72
- var params = (_c = (_b = useParams()['*']) === null || _b === void 0 ? void 0 : _b.split('/')) !== null && _c !== void 0 ? _c : [];
73
- var activeIdState = useState(((_d = form === null || form === void 0 ? void 0 : form.settings) === null || _d === void 0 ? void 0 : _d.url_navigable)
74
- ? (_g = (_e = params[level]) !== null && _e !== void 0 ? _e : (_f = sections[0]) === null || _f === void 0 ? void 0 : _f.id) !== null && _g !== void 0 ? _g : null
75
- : (_j = (_h = sections[0]) === null || _h === void 0 ? void 0 : _h.id) !== null && _j !== void 0 ? _j : null);
76
- var _q = useState(calculateSectionStatus(sections, formValueState)), sectionStatus = _q[0], setSectionStatus = _q[1];
77
- useEffect(function () {
78
- setSectionStatus(calculateSectionStatus(sections, formValueState));
79
- }, [formValueState, sections]);
80
- var _r = useState((_k = sections === null || sections === void 0 ? void 0 : sections.find(function (s) { return s.id === activeIdState[0]; })) !== null && _k !== void 0 ? _k : sections === null || sections === void 0 ? void 0 : sections[0]), formSection = _r[0], setFormSection = _r[1];
81
- useEffect(function () {
82
- var _a;
83
- setFormSection((_a = sections === null || sections === void 0 ? void 0 : sections.find(function (s) { return s.id === activeIdState[0]; })) !== null && _a !== void 0 ? _a : sections === null || sections === void 0 ? void 0 : sections[0]);
84
- }, [activeIdState[0]]);
85
- useEffect(function () {
86
- var _a, _b, _c, _d;
87
- if (((_a = form === null || form === void 0 ? void 0 : form.settings) === null || _a === void 0 ? void 0 : _a.url_navigable) === true && params[level] !== activeIdState[0]) {
88
- activeIdState[1]((_d = (_b = params[level]) !== null && _b !== void 0 ? _b : (_c = sections[0]) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null);
89
- }
90
- }, [useParams()['*']]);
91
- return (React__default.createElement("div", { className: className },
92
- React__default.createElement(NavComponent, { form: form, sections: sections, activeIdState: activeIdState, sectionStatus: sectionStatus, level: level }),
93
- React__default.createElement(ContentComponent, { activeIdState: activeIdState, formSection: formSection, inputOverrides: inputOverrides, form: form, formValueState: formValueState, sectionStatus: sectionStatus, onChange: onChange, level: level }),
94
- React__default.createElement(SmallNavComponent, { form: form, sections: sections, activeIdState: activeIdState, sectionStatus: sectionStatus, level: level })));
73
+ var _r = useFormContext(), form = _r.form, formValues = _r.formValues, setFormValues = _r.setFormValues;
74
+ var params = (_d = (_c = (_b = useParams()['*']) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.filter(function (d) { return d !== ''; })) !== null && _d !== void 0 ? _d : [];
75
+ var id = ((_e = form === null || form === void 0 ? void 0 : form.settings) === null || _e === void 0 ? void 0 : _e.url_navigable)
76
+ ? (_h = (_f = params[level]) !== null && _f !== void 0 ? _f : (_g = sections[0]) === null || _g === void 0 ? void 0 : _g.id) !== null && _h !== void 0 ? _h : null
77
+ : (_k = (_j = sections[0]) === null || _j === void 0 ? void 0 : _j.id) !== null && _k !== void 0 ? _k : null;
78
+ var formSection = (_l = sections === null || sections === void 0 ? void 0 : sections.find(function (s) { return s.id === id; })) !== null && _l !== void 0 ? _l : sections === null || sections === void 0 ? void 0 : sections[0];
79
+ var sectionStatus = calculateSectionStatus(sections, [formValues, setFormValues]);
80
+ return (React__default.createElement(FormSectionContextProvider, { path: params.slice(0, level).join('/'), id: id },
81
+ React__default.createElement("div", { className: className },
82
+ React__default.createElement(NavComponent, { sections: sections, sectionStatus: sectionStatus, level: level }),
83
+ React__default.createElement(ContentComponent, { formSection: formSection, sectionStatus: sectionStatus, onChange: onChange, level: level }),
84
+ React__default.createElement(SmallNavComponent, { sections: sections, sectionStatus: sectionStatus, level: level }))));
95
85
  };
96
86
 
97
87
  export { WizardNav, WizardNavSmall, WizardLayout as default };