@axdspub/axiom-ui-forms 0.2.5 → 0.2.7

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 (33) hide show
  1. package/library/axiom-ui-forms.d.ts +5 -12
  2. package/library/esm/_virtual/index10.js +2 -2
  3. package/library/esm/_virtual/index11.js +2 -2
  4. package/library/esm/_virtual/index2.js +2 -2
  5. package/library/esm/_virtual/index3.js +2 -2
  6. package/library/esm/_virtual/index4.js +2 -2
  7. package/library/esm/_virtual/index4.js.map +1 -1
  8. package/library/esm/_virtual/index5.js +2 -2
  9. package/library/esm/_virtual/index5.js.map +1 -1
  10. package/library/esm/_virtual/index6.js +2 -2
  11. package/library/esm/_virtual/index7.js +2 -2
  12. package/library/esm/_virtual/index8.js +2 -2
  13. package/library/esm/node_modules/ajv/dist/compile/codegen/index.js +1 -1
  14. package/library/esm/node_modules/ajv/dist/compile/index.js +1 -1
  15. package/library/esm/node_modules/ajv/dist/compile/validate/index.js +1 -1
  16. package/library/esm/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -1
  17. package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
  18. package/library/esm/node_modules/ajv/dist/vocabularies/validation/index.js +1 -1
  19. package/library/esm/node_modules/fast-uri/index.js +1 -1
  20. package/library/esm/node_modules/json-schema-traverse/index.js +1 -1
  21. package/library/esm/node_modules/react-router/dist/development/chunk-HA7DTUK3.js +1 -1
  22. package/library/esm/src/Form/Components/FieldCreator.js +7 -13
  23. package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
  24. package/library/esm/src/Form/Creator/FormCreator.js +38 -20
  25. package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
  26. package/library/esm/src/Form/Creator/Page.js +24 -14
  27. package/library/esm/src/Form/Creator/Page.js.map +1 -1
  28. package/library/esm/src/Form/Creator/Wizard.js +25 -14
  29. package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
  30. package/library/esm/src/Form/helpers.js +11 -2
  31. package/library/esm/src/Form/helpers.js.map +1 -1
  32. package/library/esm/src/library.js +1 -1
  33. package/package.json +1 -1
@@ -35,12 +35,11 @@ interface IFormFieldRoot {
35
35
  path?: IFormField[];
36
36
  fullPath?: string[];
37
37
  level?: number;
38
- value?: IValueType;
38
+ defaultValue?: IValueType | IValueType[];
39
39
  conditions?: IFieldConditions;
40
40
  settings?: Record<string, unknown>;
41
41
  }
42
42
  interface INumberValueInput extends IFormFieldRoot {
43
- value?: 'number';
44
43
  constraints?: {
45
44
  min?: number;
46
45
  max?: number;
@@ -50,7 +49,6 @@ interface INumberField extends INumberValueInput {
50
49
  type: 'number';
51
50
  }
52
51
  interface IStringValueInput extends IFormFieldRoot {
53
- value?: 'text';
54
52
  placeholder?: string;
55
53
  }
56
54
  interface ITextField extends IStringValueInput {
@@ -82,10 +80,9 @@ interface ISelectableInput extends IFormFieldRoot {
82
80
  };
83
81
  }
84
82
  interface ISingleSelectableInput extends ISelectableInput {
85
- value?: 'text' | 'number';
86
83
  }
87
84
  interface IMultiSelectableInput extends ISelectableInput {
88
- values?: Array<'text' | 'number'>;
85
+ defaultValues?: Array<string | number>;
89
86
  }
90
87
  interface ISelectField extends ISingleSelectableInput {
91
88
  type: 'select';
@@ -99,7 +96,6 @@ interface ICheckboxField extends IMultiSelectableInput {
99
96
  }
100
97
  interface IBooleanField extends IFormFieldRoot {
101
98
  type: 'boolean';
102
- value?: 'boolean';
103
99
  }
104
100
  interface IDateFieldConstraints {
105
101
  minDate?: string;
@@ -107,7 +103,6 @@ interface IDateFieldConstraints {
107
103
  }
108
104
  interface IDateField extends IFormFieldRoot {
109
105
  type: 'date';
110
- value?: 'date';
111
106
  constraints?: IDateFieldConstraints;
112
107
  }
113
108
  interface ITimeFieldConstraints {
@@ -116,7 +111,6 @@ interface ITimeFieldConstraints {
116
111
  }
117
112
  interface ITimeField extends IFormFieldRoot {
118
113
  type: 'time';
119
- value?: 'time';
120
114
  constraints?: ITimeFieldConstraints;
121
115
  }
122
116
  interface IDateTimeConstraints {
@@ -125,7 +119,6 @@ interface IDateTimeConstraints {
125
119
  }
126
120
  interface IDateTimeField extends IFormFieldRoot {
127
121
  type: 'datetime';
128
- value?: 'datetime';
129
122
  constraints?: IDateTimeConstraints;
130
123
  }
131
124
  interface IContainerField extends IFormFieldRoot {
@@ -144,13 +137,11 @@ interface IFormFieldPage extends IFormFieldSection {
144
137
  }
145
138
  interface IGeoJSONField extends IFormFieldRoot {
146
139
  type: 'geojson';
147
- value?: 'geojson';
148
140
  exclude_types?: string[];
149
141
  include_types?: string[];
150
142
  }
151
143
  interface IGeometryField extends IFormFieldRoot {
152
144
  type: 'geometry';
153
- value?: 'geometry';
154
145
  exclude_types?: string[];
155
146
  include_types?: string[];
156
147
  }
@@ -242,6 +233,8 @@ declare function getPathFromField(field: IFormField): string;
242
233
  declare const checkCondition: (field: IFormField, formValues: IFormValues) => boolean;
243
234
  declare function getFieldsFromFormSection(formSection: IFormSection): IFormField[];
244
235
  declare function cleanUnusedDependenciesFromFormValues(form: IForm, formValues: IFormValues): IFormValues;
236
+ declare function updateFormValuesWithFieldValueInPlace(field: IFormField, newValue: IValueType | IValueType[], formValues: IFormValues): void;
237
+ declare function updateFormValuesWithFieldValue(field: IFormField, newValue: IValueType | IValueType[], formValues: IFormValues): IFormValues;
245
238
  declare const makeJsonPath: (field: IFormField, index?: number) => string;
246
239
  declare const calculateSectionStatus: (sections: IFormSection[], formValueState: IFormValueState) => IFormSectionStatus;
247
240
 
@@ -293,4 +286,4 @@ declare namespace schemaToFormHelpers {
293
286
  export { schemaToFormHelpers_getLabelFromSchema as getLabelFromSchema, schemaToFormHelpers_getValueFromSchema as getValueFromSchema, schemaToFormHelpers_schemaToFormObject as schemaToFormObject, schemaToFormHelpers_validateAgainstSchema as validateAgainstSchema, schemaToFormHelpers_validateSchema as validateSchema };
294
287
  }
295
288
 
296
- export { BooleanInput, DateInput, DateTimeInput, FieldCreator, FormCreator, GeoJSONInputLoader as GeoJSONInput, type IBooleanField, type ICheckboxField, type ICompositeValueType, type IFieldInputProps, type IForm, type IFormField, type IFormFieldPage, type IFormFieldProps, type IFormFieldSection, type IFormFieldType, type IFormInputComponent, type IFormSection, type IFormValueState, type IFormValues, type IFormWithPages, type INumberField, type IObjectField, type IPage, type IRadioField, type ISectionFormFieldType, type ISelectField, type IValueChangeFn, type IValueType, type IWizardStep, JSONStringInput, LongStringInput as LongTextInput, NumberInput, SingleSelectInput as SelectInput, StringInput as TextInput, TimeInput, addFieldPath, calculateSectionStatus, checkCondition, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, getChildFields, getFieldValue, getFields, getFieldsFromFormSection, getPathFromField, getUniqueFormFields, makeJsonPath, schemaToFormHelpers as schemToFormHelpers };
289
+ export { BooleanInput, DateInput, DateTimeInput, FieldCreator, FormCreator, GeoJSONInputLoader as GeoJSONInput, type IBooleanField, type ICheckboxField, type ICompositeValueType, type IFieldInputProps, type IForm, type IFormField, type IFormFieldPage, type IFormFieldProps, type IFormFieldSection, type IFormFieldType, type IFormInputComponent, type IFormSection, type IFormValueState, type IFormValues, type IFormWithPages, type INumberField, type IObjectField, type IPage, type IRadioField, type ISectionFormFieldType, type ISelectField, type IValueChangeFn, type IValueType, type IWizardStep, JSONStringInput, LongStringInput as LongTextInput, NumberInput, SingleSelectInput as SelectInput, StringInput as TextInput, TimeInput, addFieldPath, calculateSectionStatus, checkCondition, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, getChildFields, getFieldValue, getFields, getFieldsFromFormSection, getPathFromField, getUniqueFormFields, makeJsonPath, schemaToFormHelpers as schemToFormHelpers, updateFormValuesWithFieldValue, updateFormValuesWithFieldValueInPlace };
@@ -1,4 +1,4 @@
1
- var jsonSchemaTraverse = {exports: {}};
1
+ var fastUri = {exports: {}};
2
2
 
3
- export { jsonSchemaTraverse as __module };
3
+ export { fastUri as __module };
4
4
  //# sourceMappingURL=index10.js.map
@@ -1,4 +1,4 @@
1
- var fastUri = {exports: {}};
1
+ var jsonSchemaTraverse = {exports: {}};
2
2
 
3
- export { fastUri as __module };
3
+ export { jsonSchemaTraverse as __module };
4
4
  //# sourceMappingURL=index11.js.map
@@ -1,4 +1,4 @@
1
- var validate = {};
1
+ var codegen = {};
2
2
 
3
- export { validate as __exports };
3
+ export { codegen as __exports };
4
4
  //# sourceMappingURL=index2.js.map
@@ -1,4 +1,4 @@
1
- var codegen = {};
1
+ var validate = {};
2
2
 
3
- export { codegen as __exports };
3
+ export { validate as __exports };
4
4
  //# sourceMappingURL=index3.js.map
@@ -1,4 +1,4 @@
1
- var compile = {};
1
+ import { __require as requireDist } from '../node_modules/react-router/node_modules/cookie/dist/index.js';
2
2
 
3
- export { compile as __exports };
3
+ requireDist();
4
4
  //# sourceMappingURL=index4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,4 +1,4 @@
1
- import { __require as requireDist } from '../node_modules/react-router/node_modules/cookie/dist/index.js';
1
+ var compile = {};
2
2
 
3
- requireDist();
3
+ export { compile as __exports };
4
4
  //# sourceMappingURL=index5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,4 +1,4 @@
1
- var applicator = {};
1
+ var validation = {};
2
2
 
3
- export { applicator as __exports };
3
+ export { validation as __exports };
4
4
  //# sourceMappingURL=index6.js.map
@@ -1,4 +1,4 @@
1
- var validation = {};
1
+ var core = {};
2
2
 
3
- export { validation as __exports };
3
+ export { core as __exports };
4
4
  //# sourceMappingURL=index7.js.map
@@ -1,4 +1,4 @@
1
- var core = {};
1
+ var applicator = {};
2
2
 
3
- export { core as __exports };
3
+ export { applicator as __exports };
4
4
  //# sourceMappingURL=index8.js.map
@@ -1,4 +1,4 @@
1
- import { __exports as codegen } from '../../../../../_virtual/index3.js';
1
+ import { __exports as codegen } from '../../../../../_virtual/index2.js';
2
2
  import { __require as requireCode } from './code.js';
3
3
  import { __require as requireScope } from './scope.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { __exports as compile } from '../../../../_virtual/index4.js';
1
+ import { __exports as compile } from '../../../../_virtual/index5.js';
2
2
  import { __require as requireCodegen } from './codegen/index.js';
3
3
  import { __require as requireValidation_error } from '../runtime/validation_error.js';
4
4
  import { __require as requireNames } from './names.js';
@@ -1,4 +1,4 @@
1
- import { __exports as validate } from '../../../../../_virtual/index2.js';
1
+ import { __exports as validate } from '../../../../../_virtual/index3.js';
2
2
  import { __require as requireBoolSchema } from './boolSchema.js';
3
3
  import { __require as requireDataType } from './dataType.js';
4
4
  import { __require as requireApplicability } from './applicability.js';
@@ -1,4 +1,4 @@
1
- import { __exports as applicator } from '../../../../../_virtual/index6.js';
1
+ import { __exports as applicator } from '../../../../../_virtual/index8.js';
2
2
  import { __require as requireAdditionalItems } from './additionalItems.js';
3
3
  import { __require as requirePrefixItems } from './prefixItems.js';
4
4
  import { __require as requireItems } from './items.js';
@@ -1,4 +1,4 @@
1
- import { __exports as core } from '../../../../../_virtual/index8.js';
1
+ import { __exports as core } from '../../../../../_virtual/index7.js';
2
2
  import { __require as requireId } from './id.js';
3
3
  import { __require as requireRef } from './ref.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { __exports as validation } from '../../../../../_virtual/index7.js';
1
+ import { __exports as validation } from '../../../../../_virtual/index6.js';
2
2
  import { __require as requireLimitNumber } from './limitNumber.js';
3
3
  import { __require as requireMultipleOf } from './multipleOf.js';
4
4
  import { __require as requireLimitLength } from './limitLength.js';
@@ -1,4 +1,4 @@
1
- import { __module as fastUri } from '../../_virtual/index11.js';
1
+ import { __module as fastUri } from '../../_virtual/index10.js';
2
2
  import { __require as requireUtils } from './lib/utils.js';
3
3
  import { __require as requireSchemes } from './lib/schemes.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { __module as jsonSchemaTraverse } from '../../_virtual/index10.js';
1
+ import { __module as jsonSchemaTraverse } from '../../_virtual/index11.js';
2
2
 
3
3
  var hasRequiredJsonSchemaTraverse;
4
4
 
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import '../../../../_virtual/index5.js';
2
+ import '../../../../_virtual/index4.js';
3
3
 
4
4
  /**
5
5
  * react-router v7.2.0
@@ -1,10 +1,9 @@
1
1
  import { __assign, __spreadArray } from '../../../node_modules/tslib/tslib.es6.js';
2
2
  import inputMap from './Inputs/inputMap.js';
3
3
  import { useFormContext } from '../Creator/FormContextProvider.js';
4
- import { checkCondition, getFieldValue, getPathFromField, cleanUnusedDependenciesFromFormValues } from '../helpers.js';
4
+ import { checkCondition, getFieldValue, updateFormValuesWithFieldValue, cleanUnusedDependenciesFromFormValues } from '../helpers.js';
5
5
  import { utils as index$1, Button } from '../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
6
6
  import { ExclamationTriangleIcon, PlusIcon, CopyIcon, CheckIcon, Cross1Icon, TrashIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
7
- import { set } from 'lodash';
8
7
  import React__default, { useState } from 'react';
9
8
 
10
9
  var toolButtonClass = 'border-white hover:border-single hover:border-1 hover:border-slate-400';
@@ -65,9 +64,7 @@ var MultipleFieldCreator = function (_a) {
65
64
  var field = _a.field, onChange = _a.onChange, value = _a.value;
66
65
  var _b = useFormContext(), formValues = _b.formValues, setFormValues = _b.setFormValues, inputOverrides = _b.inputOverrides;
67
66
  var defaultOnChange = function (v) {
68
- var formValuesCopy = structuredClone(formValues);
69
- var fieldPath = getPathFromField(field);
70
- set(formValuesCopy, fieldPath, v);
67
+ var formValuesCopy = updateFormValuesWithFieldValue(field, v, formValues);
71
68
  setFormValues(formValuesCopy);
72
69
  };
73
70
  var initialVal = value !== undefined ? value : getFieldValue(field, formValues);
@@ -82,26 +79,23 @@ var FieldCreator = function (_a) {
82
79
  var field = _a.field, value = _a.value, onChange = _a.onChange, className = _a.className, _c = _a.defaultClassName, defaultClassName = _c === void 0 ? 'py-2 flex flex-col gap-8' : _c;
83
80
  var _d = useFormContext(), form = _d.form, inputOverrides = _d.inputOverrides, setFormValues = _d.setFormValues, formValues = _d.formValues;
84
81
  var InputComponent = __assign(__assign({}, inputMap), (inputOverrides !== null && inputOverrides !== void 0 ? inputOverrides : {}))[field.type];
85
- var updateFormValues = function (v) {
86
- setFormValues(cleanUnusedDependenciesFromFormValues(form, v));
87
- };
88
82
  if (!checkCondition(field, formValues)) {
89
83
  return null;
90
84
  }
91
85
  var defaultOnChange = function (v) {
92
- var formValuesCopy = structuredClone(formValues);
93
- var fieldPath = getPathFromField(field);
94
- set(formValuesCopy, fieldPath, v);
95
- updateFormValues(formValuesCopy);
86
+ var formValuesCopy = updateFormValuesWithFieldValue(field, v, formValues);
87
+ setFormValues(cleanUnusedDependenciesFromFormValues(form, formValuesCopy));
96
88
  };
89
+ var onChangeFn = onChange !== null && onChange !== void 0 ? onChange : defaultOnChange;
97
90
  var initialValue = value !== undefined ? value : getFieldValue(field, formValues);
91
+ console.log("initialValue: ".concat(field.id), initialValue);
98
92
  return InputComponent !== undefined
99
93
  ? React__default.createElement("div", { className: index$1.makeClassName({
100
94
  className: className,
101
95
  defaultClassName: defaultClassName
102
96
  }) }, field.multiple === true
103
97
  ? React__default.createElement(MultipleFieldCreator, { field: field, onChange: onChange, value: initialValue })
104
- : React__default.createElement(InputComponent, { field: field, onChange: onChange !== null && onChange !== void 0 ? onChange : defaultOnChange, value: Array.isArray(initialValue) ? initialValue[0] : initialValue }))
98
+ : React__default.createElement(InputComponent, { field: field, onChange: onChangeFn, value: Array.isArray(initialValue) ? initialValue[0] : initialValue }))
105
99
  : React__default.createElement("div", null,
106
100
  React__default.createElement("p", { className: 'font-bold mb-2' },
107
101
  React__default.createElement(ExclamationTriangleIcon, { className: 'inline' }),
@@ -1 +1 @@
1
- {"version":3,"file":"FieldCreator.js","sources":["../../../../../src/Form/Components/FieldCreator.tsx"],"sourcesContent":["import inputMap from '@/Form/Components/Inputs/inputMap'\nimport { useFormContext } from '@/Form/Creator/FormContextProvider'\nimport { type IFormValues, type IFieldInputProps, type IFormField, type IValueChangeFn, type IValueType } from '@/Form/Creator/FormCreatorTypes'\nimport { checkCondition, cleanUnusedDependenciesFromFormValues, getFieldValue, getPathFromField } from '@/Form/helpers'\nimport { Button, utils } from '@axdspub/axiom-ui-utilities'\nimport { CheckIcon, CopyIcon, Cross1Icon, ExclamationTriangleIcon, PlusIcon, TrashIcon } from '@radix-ui/react-icons'\nimport { set } from 'lodash'\nimport React, { useState, type ReactElement } from 'react'\n\ninterface IFieldCreator {\n field: IFormField\n onChange?: IValueChangeFn\n className?: string\n defaultClassName?: string\n value?: IValueType | IValueType[]\n}\n\nconst toolButtonClass = 'border-white hover:border-single hover:border-1 hover:border-slate-400'\n\nconst DeleteMultiple = ({\n doDelete\n}: {\n doDelete: () => void\n}): ReactElement => {\n const [confirm, setConfirm] = useState(false)\n\n return (\n <>\n {\n confirm\n ? <p className='flex flex-row gap-2 text-sm'><span className='text-slate-600'>Deleting: </span> Are you sure?\n <Button size='xs' type='submit'\n onClick={() => {\n doDelete()\n setConfirm(false)\n }}>Yes <CheckIcon className='inline ml-2' />\n </Button>\n <Button size='xs' type='alert'\n onClick={() => {\n setConfirm(false)\n }}>Cancel <Cross1Icon className='inline ml-2' />\n </Button>\n </p>\n : <Button size='xs' className={toolButtonClass} onClick={() => { setConfirm(true) }}>\n Delete <TrashIcon className='inline ml-2 fill-white' />\n </Button>\n }\n </>\n )\n}\n\nconst OneOfMultiple = ({\n InputComponent,\n field,\n value,\n index,\n onChange,\n values\n\n}: {\n InputComponent: React.FC<IFieldInputProps>\n field: IFormField\n value: IValueType\n index: number\n onChange: (v: IValueType[] | undefined) => void\n values: IValueType[]\n}): ReactElement => {\n const addValue = (v: IValueType | null): void => {\n const newValues = [...values]\n newValues.splice(index + 1, 0, v)\n onChange(newValues)\n }\n\n return (\n <div className='flex flex-col gap-2'>\n <InputComponent\n field={{\n ...field,\n required: false,\n label: index > 0 ? null : field.label,\n id: `${field.id}-${index}`\n }}\n value={value}\n onChange={(v) => {\n const newValues = [...values]\n newValues[index] = v as IValueType\n onChange(newValues)\n }}\n />\n\n <div className='flex flex-row justify-between w-full p-2'>\n {index > 0 && (\n <DeleteMultiple doDelete={() => {\n const newValues = [...values]\n newValues.splice(index, 1)\n onChange(newValues)\n }} />\n )}\n <div className='ml-auto flex gap-2'>\n <Button\n size='xs'\n className={toolButtonClass}\n onClick={() => {\n addValue(null)\n }}>Add <PlusIcon className='inline ml-2' /></Button>\n <Button\n size='xs'\n className={toolButtonClass}\n onClick={() => {\n addValue(structuredClone(value))\n }}>Duplicate <CopyIcon className='inline ml-2' />\n </Button>\n </div>\n </div>\n </div>\n )\n}\n\nconst MultipleFieldCreator = ({\n field,\n onChange,\n value\n}: IFieldCreator): ReactElement => {\n const { formValues, setFormValues, inputOverrides } = useFormContext()\n const defaultOnChange = (v: IValueType[] | undefined): void => {\n const formValuesCopy = structuredClone(formValues)\n const fieldPath = getPathFromField(field)\n set(formValuesCopy, fieldPath, v)\n setFormValues(formValuesCopy)\n }\n\n const initialVal = value !== undefined ? value : getFieldValue(field, formValues)\n const initialValues = (initialVal !== undefined ? (Array.isArray(initialVal) ? initialVal : [initialVal]) : [null])\n\n const InputComponent = {\n ...inputMap,\n ...(inputOverrides ?? {})\n }[field.type]\n\n return <div>\n {\n initialValues?.map((value, index) => {\n return <OneOfMultiple\n key={`${field.id}-${index}`}\n InputComponent={InputComponent}\n field={field}\n value={value}\n index={index}\n onChange={onChange ?? defaultOnChange}\n values={initialValues}\n />\n })\n }\n </div>\n}\n\nconst FieldCreator = ({\n field,\n value,\n onChange,\n className,\n defaultClassName = 'py-2 flex flex-col gap-8'\n}: IFieldCreator): ReactElement | null => {\n const { form, inputOverrides, setFormValues, formValues } = useFormContext()\n const InputComponent = {\n ...inputMap,\n ...(inputOverrides ?? {})\n }[field.type]\n\n const updateFormValues = (v: IFormValues): void => {\n setFormValues(cleanUnusedDependenciesFromFormValues(form, v))\n }\n\n if (!checkCondition(field, formValues)) {\n return null\n }\n\n const defaultOnChange = (v: IValueType | IValueType[] | undefined): void => {\n const formValuesCopy = structuredClone(formValues)\n const fieldPath = getPathFromField(field)\n set(formValuesCopy, fieldPath, v)\n updateFormValues(formValuesCopy)\n }\n const initialValue = value !== undefined ? value : getFieldValue(field, formValues)\n return InputComponent !== undefined\n ? <div className={utils.makeClassName({\n className,\n defaultClassName\n })}>{\n field.multiple === true\n ? <MultipleFieldCreator\n field={field}\n onChange={onChange}\n value={initialValue}\n />\n : <InputComponent\n field={field}\n onChange={onChange ?? defaultOnChange}\n value={Array.isArray(initialValue) ? initialValue[0] : initialValue}\n />\n\n }</div>\n : <div>\n <p className='font-bold mb-2'><ExclamationTriangleIcon className='inline' /> {field.label ?? ''}</p>\n <p className='p-4 text-sm bg-slate-100'>No component definition for <span className='text-rose-800 font-mono text-xs bg-slate-300 p-2'>type</span><span className='p-2 bg-slate-700 text-white font-mono text-xs'>{field.type}</span> at <span className='text-rose-800 font-mono text-xs bg-slate-300 p-2'>id</span><span className='p-2 bg-slate-700 text-white font-mono text-xs'>{field.id}</span></p>\n </div>\n}\n\nexport default FieldCreator\n"],"names":["React","utils"],"mappings":"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"}
1
+ {"version":3,"file":"FieldCreator.js","sources":["../../../../../src/Form/Components/FieldCreator.tsx"],"sourcesContent":["import inputMap from '@/Form/Components/Inputs/inputMap'\nimport { useFormContext } from '@/Form/Creator/FormContextProvider'\nimport { type IFieldInputProps, type IFormField, type IValueChangeFn, type IValueType } from '@/Form/Creator/FormCreatorTypes'\nimport { checkCondition, cleanUnusedDependenciesFromFormValues, getFieldValue, updateFormValuesWithFieldValue } from '@/Form/helpers'\nimport { Button, utils } from '@axdspub/axiom-ui-utilities'\nimport { CheckIcon, CopyIcon, Cross1Icon, ExclamationTriangleIcon, PlusIcon, TrashIcon } from '@radix-ui/react-icons'\nimport React, { useState, type ReactElement } from 'react'\n\ninterface IFieldCreator {\n field: IFormField\n onChange?: IValueChangeFn\n className?: string\n defaultClassName?: string\n value?: IValueType | IValueType[]\n}\n\nconst toolButtonClass = 'border-white hover:border-single hover:border-1 hover:border-slate-400'\n\nconst DeleteMultiple = ({\n doDelete\n}: {\n doDelete: () => void\n}): ReactElement => {\n const [confirm, setConfirm] = useState(false)\n\n return (\n <>\n {\n confirm\n ? <p className='flex flex-row gap-2 text-sm'><span className='text-slate-600'>Deleting: </span> Are you sure?\n <Button size='xs' type='submit'\n onClick={() => {\n doDelete()\n setConfirm(false)\n }}>Yes <CheckIcon className='inline ml-2' />\n </Button>\n <Button size='xs' type='alert'\n onClick={() => {\n setConfirm(false)\n }}>Cancel <Cross1Icon className='inline ml-2' />\n </Button>\n </p>\n : <Button size='xs' className={toolButtonClass} onClick={() => { setConfirm(true) }}>\n Delete <TrashIcon className='inline ml-2 fill-white' />\n </Button>\n }\n </>\n )\n}\n\nconst OneOfMultiple = ({\n InputComponent,\n field,\n value,\n index,\n onChange,\n values\n\n}: {\n InputComponent: React.FC<IFieldInputProps>\n field: IFormField\n value: IValueType\n index: number\n onChange: (v: IValueType[] | undefined) => void\n values: IValueType[]\n}): ReactElement => {\n const addValue = (v: IValueType | null): void => {\n const newValues = [...values]\n newValues.splice(index + 1, 0, v)\n onChange(newValues)\n }\n\n return (\n <div className='flex flex-col gap-2'>\n <InputComponent\n field={{\n ...field,\n required: false,\n label: index > 0 ? null : field.label,\n id: `${field.id}-${index}`\n }}\n value={value}\n onChange={(v) => {\n const newValues = [...values]\n newValues[index] = v as IValueType\n onChange(newValues)\n }}\n />\n\n <div className='flex flex-row justify-between w-full p-2'>\n {index > 0 && (\n <DeleteMultiple doDelete={() => {\n const newValues = [...values]\n newValues.splice(index, 1)\n onChange(newValues)\n }} />\n )}\n <div className='ml-auto flex gap-2'>\n <Button\n size='xs'\n className={toolButtonClass}\n onClick={() => {\n addValue(null)\n }}>Add <PlusIcon className='inline ml-2' /></Button>\n <Button\n size='xs'\n className={toolButtonClass}\n onClick={() => {\n addValue(structuredClone(value))\n }}>Duplicate <CopyIcon className='inline ml-2' />\n </Button>\n </div>\n </div>\n </div>\n )\n}\n\nconst MultipleFieldCreator = ({\n field,\n onChange,\n value\n}: IFieldCreator): ReactElement => {\n const { formValues, setFormValues, inputOverrides } = useFormContext()\n const defaultOnChange = (v: IValueType[] | undefined): void => {\n const formValuesCopy = updateFormValuesWithFieldValue(field, v, formValues)\n setFormValues(formValuesCopy)\n }\n\n const initialVal = value !== undefined ? value : getFieldValue(field, formValues)\n const initialValues = (initialVal !== undefined ? (Array.isArray(initialVal) ? initialVal : [initialVal]) : [null])\n\n const InputComponent = {\n ...inputMap,\n ...(inputOverrides ?? {})\n }[field.type]\n\n return <div>\n {\n initialValues?.map((value, index) => {\n return <OneOfMultiple\n key={`${field.id}-${index}`}\n InputComponent={InputComponent}\n field={field}\n value={value}\n index={index}\n onChange={onChange ?? defaultOnChange}\n values={initialValues}\n />\n })\n }\n </div>\n}\n\nconst FieldCreator = ({\n field,\n value,\n onChange,\n className,\n defaultClassName = 'py-2 flex flex-col gap-8'\n}: IFieldCreator): ReactElement | null => {\n const { form, inputOverrides, setFormValues, formValues } = useFormContext()\n const InputComponent = {\n ...inputMap,\n ...(inputOverrides ?? {})\n }[field.type]\n\n if (!checkCondition(field, formValues)) {\n return null\n }\n\n const defaultOnChange = (v: IValueType | IValueType[] | undefined): void => {\n const formValuesCopy = updateFormValuesWithFieldValue(field, v as IValueType, formValues)\n setFormValues(cleanUnusedDependenciesFromFormValues(form, formValuesCopy))\n }\n const onChangeFn = onChange ?? defaultOnChange\n\n const initialValue = value !== undefined ? value : getFieldValue(field, formValues)\n console.log(`initialValue: ${field.id}`, initialValue)\n return InputComponent !== undefined\n ? <div className={utils.makeClassName({\n className,\n defaultClassName\n })}>{\n field.multiple === true\n ? <MultipleFieldCreator\n field={field}\n onChange={onChange}\n value={initialValue}\n />\n : <InputComponent\n field={field}\n onChange={onChangeFn}\n value={Array.isArray(initialValue) ? initialValue[0] : initialValue}\n />\n\n }</div>\n : <div>\n <p className='font-bold mb-2'><ExclamationTriangleIcon className='inline' /> {field.label ?? ''}</p>\n <p className='p-4 text-sm bg-slate-100'>No component definition for <span className='text-rose-800 font-mono text-xs bg-slate-300 p-2'>type</span><span className='p-2 bg-slate-700 text-white font-mono text-xs'>{field.type}</span> at <span className='text-rose-800 font-mono text-xs bg-slate-300 p-2'>id</span><span className='p-2 bg-slate-700 text-white font-mono text-xs'>{field.id}</span></p>\n </div>\n}\n\nexport default FieldCreator\n"],"names":["React","utils"],"mappings":"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"}
@@ -2,9 +2,9 @@ import { __assign } from '../../../node_modules/tslib/tslib.es6.js';
2
2
  import { FormContext } from './FormContextProvider.js';
3
3
  import FormHeader from './FormHeader.js';
4
4
  import FormSection from './FormSection.js';
5
- import { copyAndAddPathToFields, calculateSectionStatus } from '../helpers.js';
6
- import { utils as index$1 } from '../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
7
- import React__default from 'react';
5
+ import { copyAndAddPathToFields, getFieldsFromFormSection, getFieldValue, updateFormValuesWithFieldValueInPlace, calculateSectionStatus } from '../helpers.js';
6
+ import { Loader, utils as index$1 } from '../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
7
+ import React__default, { useState, useEffect } from 'react';
8
8
 
9
9
  var FormStatus = function (_a) {
10
10
  var _b, _c, _d, _e;
@@ -27,23 +27,41 @@ var FormCreator = function (_a) {
27
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
28
  var activeForm = copyAndAddPathToFields(form);
29
29
  activeForm.settings = __assign({ url_navigable: urlNavigable }, activeForm.settings);
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 }))));
30
+ var formValues = formValueState[0], setFormValues = formValueState[1];
31
+ var _d = useState(false), isReady = _d[0], setIsReady = _d[1];
32
+ useEffect(function () {
33
+ var formValuesCopy = structuredClone(formValues);
34
+ getFieldsFromFormSection(activeForm).forEach(function (field) {
35
+ if (field.defaultValue !== undefined && getFieldValue(field, formValues) === undefined) {
36
+ updateFormValuesWithFieldValueInPlace(field, field.defaultValue, formValuesCopy);
37
+ }
38
+ });
39
+ setFormValues(formValuesCopy);
40
+ setIsReady(true);
41
+ }, [form]);
42
+ console.log('isReady', isReady);
43
+ if (isReady) {
44
+ console.log('formValues', formValues);
45
+ }
46
+ return (React__default.createElement(React__default.Fragment, null, !isReady
47
+ ? React__default.createElement(Loader, { className: 'pt-20' })
48
+ : React__default.createElement(FormContext.Provider, { value: {
49
+ form: activeForm,
50
+ formValues: formValues,
51
+ setFormValues: setFormValues,
52
+ inputOverrides: inputOverrides,
53
+ schema: schema,
54
+ urlNavigable: activeForm.settings.url_navigable
55
+ } },
56
+ React__default.createElement("div", { className: index$1.makeClassName({
57
+ className: (_b = activeForm === null || activeForm === void 0 ? void 0 : activeForm.settings) === null || _b === void 0 ? void 0 : _b.class_name,
58
+ defaultClassName: className
59
+ }) },
60
+ React__default.createElement(FormHeader, { form: activeForm, note: note, error: error }),
61
+ (activeForm === null || activeForm === void 0 ? void 0 : activeForm.fields) !== undefined && activeForm.fields.length > 0 && activeForm.pages === undefined && activeForm.wizard_steps === undefined
62
+ ? React__default.createElement(FormStatus, { form: activeForm, formValueState: formValueState })
63
+ : '',
64
+ React__default.createElement(FormSection, { formSection: activeForm, onChange: onChange })))));
47
65
  };
48
66
 
49
67
  export { FormCreator as default };
@@ -1 +1 @@
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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"}
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, getFieldsFromFormSection, getFieldValue, updateFormValuesWithFieldValueInPlace } from '@/Form/helpers'\nimport { Loader, utils } from '@axdspub/axiom-ui-utilities'\nimport { type JSONSchema6 } from 'json-schema'\nimport React, { useEffect, useState, 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 const [formValues, setFormValues] = formValueState\n const [isReady, setIsReady] = useState(false)\n useEffect(() => {\n const formValuesCopy = structuredClone(formValues)\n getFieldsFromFormSection(activeForm).forEach(field => {\n if (field.defaultValue !== undefined && getFieldValue(field, formValues) === undefined) {\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, formValuesCopy)\n }\n })\n setFormValues(formValuesCopy)\n setIsReady(true)\n }, [form])\n\n console.log('isReady', isReady)\n if (isReady) {\n console.log('formValues', formValues)\n }\n\n return (\n <>\n {\n !isReady\n ? <Loader className='pt-20' />\n : <FormContext.Provider value={{\n form: activeForm,\n formValues,\n setFormValues,\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 )\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,3 +1,4 @@
1
+ import { __assign } from '../../../node_modules/tslib/tslib.es6.js';
1
2
  import { FormSectionContextProvider, useFormSectionContext } from './FormSectionContextProvider.js';
2
3
  import FormSection from './FormSection.js';
3
4
  import NavElement from './NavElement.js';
@@ -26,24 +27,33 @@ var ActivePage = function (_a) {
26
27
  : '',
27
28
  React__default.createElement(FormSection, { formSection: formSection, onChange: onChange, level: level + 1 })));
28
29
  };
29
- var PageLayout = function (_a) {
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;
32
- if (sections === undefined) {
30
+ var PageLayout = function (props) {
31
+ var _a, _b, _c, _d, _e;
32
+ if (props.sections === undefined) {
33
33
  return React__default.createElement(React__default.Fragment, null);
34
34
  }
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('/');
35
+ var urlNavigable = useFormContext().urlNavigable;
36
+ var params = ((_a = useParams()['*']) !== null && _a !== void 0 ? _a : '').split('/');
37
+ var path = params.slice(0, props.level).join('/');
38
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];
39
+ ? (params[props.level] && params[props.level] !== '') ? params[props.level] : ((_c = (_b = props.sections[0]) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : null)
40
+ : (_e = (_d = props.sections[0]) === null || _d === void 0 ? void 0 : _d.id) !== null && _e !== void 0 ? _e : null;
43
41
  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 }))));
42
+ React__default.createElement(PageLayoutContent, __assign({}, props))));
43
+ };
44
+ var PageLayoutContent = function (_a) {
45
+ var _b;
46
+ var sections = _a.sections, onChange = _a.onChange; _a.inputOverrides; var _c = _a.ContentComponent, ContentComponent = _c === void 0 ? ActivePage : _c, _d = _a.NavComponent, NavComponent = _d === void 0 ? PageNav : _d, _e = _a.className, className = _e === void 0 ? 'flex flex-row gap-8' : _e, level = _a.level;
47
+ if (sections === undefined) {
48
+ return React__default.createElement(React__default.Fragment, null);
49
+ }
50
+ var _f = useFormContext(), setFormValues = _f.setFormValues, formValues = _f.formValues;
51
+ var sectionStatus = calculateSectionStatus(sections, [formValues, setFormValues]);
52
+ var activeId = useFormSectionContext().activeId;
53
+ var formSection = (_b = sections === null || sections === void 0 ? void 0 : sections.find(function (s) { return s.id === activeId; })) !== null && _b !== void 0 ? _b : sections === null || sections === void 0 ? void 0 : sections[0];
54
+ return (React__default.createElement("div", { className: className },
55
+ React__default.createElement(NavComponent, { sections: sections, sectionStatus: sectionStatus, level: level }),
56
+ React__default.createElement(ContentComponent, { formSection: formSection, onChange: onChange, sectionStatus: sectionStatus, level: level })));
47
57
  };
48
58
 
49
59
  export { ActivePage, PageLayout as default };
@@ -1 +1 @@
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":"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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 = (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 <PageLayoutContent {...props} />\n </FormSectionContextProvider>\n )\n}\n\nconst PageLayoutContent = ({\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 { setFormValues, formValues } = useFormContext()\n const sectionStatus = calculateSectionStatus(sections, [formValues, setFormValues])\n const { activeId } = useFormSectionContext()\n const formSection = sections?.find(s => s.id === activeId) ?? sections?.[0]\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 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,3 +1,4 @@
1
+ import { __assign } from '../../../node_modules/tslib/tslib.es6.js';
1
2
  import { calculateSectionStatus } from '../helpers.js';
2
3
  import { ActivePage } from './Page.js';
3
4
  import { utils as index$1 } from '../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
@@ -64,24 +65,34 @@ var WizardNavSmall = function (_a) {
64
65
  className: 'px-4 bg-white border-none text-sm text-slate-400'
65
66
  }) }, "Next")));
66
67
  };
67
- var WizardLayout = function (_a) {
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;
68
+ var WizardLayout = function (props) {
69
+ var _a, _b, _c, _d, _e;
70
+ if (props.sections === undefined) {
71
+ return React__default.createElement(React__default.Fragment, null);
72
+ }
73
+ var urlNavigable = useFormContext().urlNavigable;
74
+ var params = ((_a = useParams()['*']) !== null && _a !== void 0 ? _a : '').split('/');
75
+ var path = params.slice(0, props.level).join('/');
76
+ var id = urlNavigable
77
+ ? (params[props.level] && params[props.level] !== '') ? params[props.level] : ((_c = (_b = props.sections[0]) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : null)
78
+ : (_e = (_d = props.sections[0]) === null || _d === void 0 ? void 0 : _d.id) !== null && _e !== void 0 ? _e : null;
79
+ return (React__default.createElement(FormSectionContextProvider, { path: path, id: id },
80
+ React__default.createElement(WizardLayoutContent, __assign({}, props))));
81
+ };
82
+ var WizardLayoutContent = function (_a) {
83
+ 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;
70
85
  if (sections === undefined) {
71
86
  return React__default.createElement(React__default.Fragment, null);
72
87
  }
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];
88
+ var _g = useFormContext(), formValues = _g.formValues, setFormValues = _g.setFormValues;
89
+ var activeId = useFormSectionContext().activeId;
90
+ var formSection = (_b = sections === null || sections === void 0 ? void 0 : sections.find(function (s) { return s.id === activeId; })) !== null && _b !== void 0 ? _b : sections === null || sections === void 0 ? void 0 : sections[0];
79
91
  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 }))));
92
+ return (React__default.createElement("div", { className: className },
93
+ React__default.createElement(NavComponent, { sections: sections, sectionStatus: sectionStatus, level: level }),
94
+ React__default.createElement(ContentComponent, { formSection: formSection, sectionStatus: sectionStatus, onChange: onChange, level: level }),
95
+ React__default.createElement(SmallNavComponent, { sections: sections, sectionStatus: sectionStatus, level: level })));
85
96
  };
86
97
 
87
98
  export { WizardNav, WizardNavSmall, WizardLayout as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Wizard.js","sources":["../../../../../src/Form/Creator/Wizard.tsx"],"sourcesContent":["import { calculateSectionStatus } from '@/Form/helpers'\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 = ({\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 { form, formValues, setFormValues } = useFormContext()\n const params = useParams()['*']?.split('/')?.filter(d => d !== '') ?? []\n const id = form?.settings?.url_navigable\n ? params[level] ?? sections[0]?.id ?? null\n : sections[0]?.id ?? null\n\n const formSection = sections?.find(s => s.id === id) ?? sections?.[0]\n const sectionStatus = calculateSectionStatus(sections, [formValues, setFormValues])\n\n return (\n <FormSectionContextProvider path={params.slice(0, level).join('/')} id={id}>\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 </FormSectionContextProvider>\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 '@/Form/helpers'\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":";;;;;;;;;;;AAYO,IAAM,SAAS,GAAG,UAAC,EAQzB,EAAA;AAPC,IAAA,IAAA,QAAQ,cAAA,CACR,CAAA,aAAa,GAAA,EAAA,CAAA,aAAA,CAAA,CACR,EAAA,CAAA;AAML,IAAA,IAAM,KAAK,GAAI,CAAC,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,MAAA,GAAA,QAAQ,GAAI,EAAE,EAAoB,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAjB,EAAiB,CAAC;AAC7E,IAAA,IAAA,EAAkC,GAAA,qBAAqB,EAAE,EAAvD,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,WAAW,GAAA,EAAA,CAAA,WAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAA4B;AACvD,IAAA,IAAA,YAAY,GAAK,cAAc,EAAE,aAArB;AAEpB,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,UAAU,EAAA;QACvBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wDAAwD,EAAG,CAAA;QAC1EA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,qBAAqB,EAEpC,EAAA,KAAK,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;;YACb,QACEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAC,6HAA6H,EAAA;gBACrJA,cAAC,CAAA,aAAA,CAAA,UAAU,EACT,EAAA,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,SAAS,EAAE,yCAA0C,CAAA,MAAA,CAAA,QAAQ,KAAK,CAAC,CAAC,EAAE,GAAG,yBAAyB,GAAG,oBAAoB,CAAE,EAC3H,OAAO,EAAE,YAAA,EAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,EAAE,EAEnC,EAAA,CAAC,CAAC,KAAK,CACG;gBAEX,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG;AACrC,sBAAEA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,mDAAmD,EAAA;AAAC,wBAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAC,EAAA,SAAS,EAAC,yCAAyC,GAAG;AAC5I,sBAAE,EAAE;gBAERA,cAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,cAAc,EAAE,EAAA,CAAA,EAAA,GAAA,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;uBAAE,SAAS;AAAM,oBAAA,MAAA,EAAA,CAAA,EAAA,GAAA,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;uBAAE,KAAK;AAAW,oBAAA,QAAA,CAAA;gBACtGA,cAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,cAAc,EAAE,EAAA,CAAA,EAAA,GAAA,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;uBAAE,iBAAiB;AAAM,oBAAA,MAAA,EAAA,CAAA,EAAA,GAAA,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;uBAAE,aAAa;AAAc,oBAAA,WAAA,CAAA,CACrH;AAEV,SAAC,CAAC,CACG,CACD;AAEZ;AAEO,IAAM,cAAc,GAAG,UAAC,EAQ9B,EAAA;;AAPC,IAAA,IAAA,QAAQ,cAAA,CACR,CAAa,EAAA,CAAA,aAAA,CAAA,CACR,EAAA,CAAA;AAMC,IAAA,IAAA,EAAkC,GAAA,qBAAqB,EAAE,EAAvD,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,WAAW,GAAA,EAAA,CAAA,WAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAA4B;AACvD,IAAA,IAAA,YAAY,GAAK,cAAc,EAAE,aAArB;AACpB,IAAA,IAAM,KAAK,GAAI,CAAC,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,MAAA,GAAA,QAAQ,GAAI,EAAE,EAAoB,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAjB,EAAiB,CAAC;IACnF,IAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAT,EAAS,CAAC,CAAC;AAC9D,IAAA,IAAM,WAAW,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,QAAQ,aAAR,QAAQ,KAAA,MAAA,GAAR,QAAQ,GAAI,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAK,CAAC,CAAC,CAAC;IACxD,IAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AAC/C,IAAA,IAAM,SAAS,GAAG,YAAY,GAAG,CAAC;AAClC,IAAA,IAAM,SAAS,GAAG,YAAY,GAAG,CAAC;;;AAGlC,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA;AAC9C,QAAA,SAAS,IAAI;cACTA,6BAAC,UAAU,EAAA,EACT,SAAS,EAAC,qEAAqE,EAC/E,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EACvB,SAAS,EAAE,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAZ,MAAA,GAAA,YAAY,GAAI,IAAI,EAC/B,OAAO,EAAE,YAAA,EAAQ,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAA,EAAE,EAAA;AAEjD,gBAAAA,cAAA,CAAA,aAAA,CAAC,aAAa,EAAA,EAAC,SAAS,EAAC,QAAQ,EAAG,CAAA;AAC3B,gBAAA,WAAA;AACf,cAAEA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACzC,oBAAA,SAAS,EAAE;AACZ,iBAAA,CAAC,EAAiB,EAAA,UAAA,CAAA;QAGnB,SAAS,GAAG,KAAK,CAAC;cACdD,6BAAC,UAAU,EAAA,EACT,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EACvB,SAAS,EAAE,YAAY,KAAZ,IAAA,IAAA,YAAY,cAAZ,YAAY,GAAI,IAAI,EAC/B,SAAS,EAAC,qEAAqE,EAC/E,OAAO,EAAE,YAAA,EAAQ,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAA,EAAE,EAAA;;AAE5C,gBAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAC,EAAA,SAAS,EAAC,QAAQ,GAAG;AAEhD,cAAEA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACzC,oBAAA,SAAS,EAAE;iBACZ,CAAC,EAAA,EAAA,MAAA,CAAa,CAEf;AAEZ;AAWM,IAAA,YAAY,GAAG,UAAC,KAAuB,EAAA;;AAC3C,IAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;AAChC,QAAA,OAAOD,2DAAK;;AAEN,IAAA,IAAA,YAAY,GAAK,cAAc,EAAE,aAArB;AACpB,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,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACnD,IAAM,EAAE,GAAG;AACT,UAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;AAC5G,UAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,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;IAEjC,QACEA,cAAC,CAAA,aAAA,CAAA,0BAA0B,EAAC,EAAA,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAA;AAC5C,QAAAA,cAAA,CAAA,aAAA,CAAC,mBAAmB,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA,CACP;AAEjC;AAEA,IAAM,mBAAmB,GAAG,UAAC,EAQR,EAAA;;AAPnB,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAA6B,GAAA,EAAA,CAAA,gBAAA,EAA7B,gBAAgB,GAAA,EAAA,KAAA,MAAA,GAAG,UAAU,GAAA,EAAA,EAC7B,EAAwB,GAAA,EAAA,CAAA,YAAA,EAAxB,YAAY,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,GAAA,EAAA,EACxB,EAAkC,GAAA,EAAA,CAAA,iBAAA,EAAlC,iBAAiB,GAAA,EAAA,KAAA,MAAA,GAAG,cAAc,GAAA,EAAA,EAClC,EAAuC,GAAA,EAAA,CAAA,SAAA,EAAvC,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,2BAA2B,GAAA,EAAA,EACvC,KAAK,GAAA,EAAA,CAAA,KAAA;AAEL,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,QAAA,OAAOA,2DAAK;;IAER,IAAA,EAAA,GAAgC,cAAc,EAAE,EAA9C,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,aAAa,GAAA,EAAA,CAAA,aAAqB;AAC9C,IAAA,IAAA,QAAQ,GAAK,qBAAqB,EAAE,SAA5B;AAChB,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,QAAQ,CAAjB,EAAiB,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,MAAA,GAAA,MAAA,GAAA,QAAQ,CAAG,CAAC,CAAC;AAC3E,IAAA,IAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEnF,IAAA,QAEIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,EAAA;AACvB,QAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EACT,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,EACZ,CAAA;AACJ,QAAAA,cAAA,CAAA,aAAA,CAAC,gBAAgB,EACb,EAAA,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACV,CAAA;AACN,QAAAA,cAAA,CAAA,aAAA,CAAC,iBAAiB,EAChB,EAAA,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,EACV,CAAA,CACA;AAEZ,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- import { get } from 'lodash';
1
+ import { set, get } from 'lodash';
2
2
 
3
3
  var getChildFields = function (field) {
4
4
  var _a;
@@ -112,6 +112,15 @@ function cleanUnusedDependenciesFromFormValues(form, formValues) {
112
112
  }));
113
113
  return newFormValues;
114
114
  }
115
+ function updateFormValuesWithFieldValueInPlace(field, newValue, formValues) {
116
+ var fieldPath = getPathFromField(field);
117
+ set(formValues, fieldPath, newValue);
118
+ }
119
+ function updateFormValuesWithFieldValue(field, newValue, formValues) {
120
+ var formValuesCopy = structuredClone(formValues);
121
+ updateFormValuesWithFieldValueInPlace(field, newValue, formValuesCopy);
122
+ return formValuesCopy;
123
+ }
115
124
  var makeJsonPath = function (field, index) {
116
125
  if (index === void 0) { index = 0; }
117
126
  if (field.path === undefined) {
@@ -139,5 +148,5 @@ var calculateSectionStatus = function (sections, formValueState) {
139
148
  }));
140
149
  };
141
150
 
142
- export { addFieldPath, calculateSectionStatus, checkCondition, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, getChildFields, getFieldValue, getFields, getFieldsFromFormSection, getPathFromField, getUniqueFormFields, makeJsonPath };
151
+ export { addFieldPath, calculateSectionStatus, checkCondition, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, getChildFields, getFieldValue, getFields, getFieldsFromFormSection, getPathFromField, getUniqueFormFields, makeJsonPath, updateFormValuesWithFieldValue, updateFormValuesWithFieldValueInPlace };
143
152
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../src/Form/helpers.ts"],"sourcesContent":["import { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\nimport { type IForm, type IFormField, type IValueType, type IFormValues, type IFormSection, type IFormValueState, type IPage, type IWizardStep } from '@/Form/Creator/FormCreatorTypes'\nimport { get } from 'lodash'\n\nexport const getChildFields = (field: { id: string, fields?: IFormField[] }): IFormField[] => {\n return field?.fields ?? []\n}\n\nexport const addFieldPath = (field: IFormField, parentPath?: IFormField[]): IFormField => {\n if (field.type === 'object' && field.skip_path === true) {\n field.path = parentPath !== undefined ? parentPath.slice() : []\n field.level = parentPath !== undefined ? parentPath.length : 0\n } else {\n const newSegment = field // `${field.id}${field.multiple === true ? '[]' : ''}`\n field.path = parentPath !== undefined ? parentPath.slice().concat(newSegment) : [newSegment]\n field.level = parentPath !== undefined ? parentPath.length + 1 : 1\n }\n if ((field.type === 'object' || field.type === 'section') && field.fields !== undefined) {\n field.fields = field.fields.map(childField => {\n return addFieldPath(childField, field.path?.slice())\n })\n }\n return field\n}\n\nexport const getUniqueFormFields = (form: IForm): IFormField[] => {\n const fieldMap = Object.fromEntries((form?.fields ?? []).map(f => [f.id, f]))\n return Object.values(fieldMap)\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\nfunction addPathsToFormSections (section: IFormSection): IFormSection {\n if (section.pages !== undefined) {\n section.pages = section.pages.map(page => {\n return addPathsToFormSections(page)\n }) as IPage[]\n }\n if (section.wizard_steps !== undefined) {\n section.wizard_steps = section.wizard_steps.map(wizardStep => {\n return addPathsToFormSections(wizardStep)\n }) as IWizardStep[]\n }\n if (section.fields !== undefined) {\n section.fields = section.fields.map(field => {\n return addFieldPath(field)\n })\n }\n return section\n}\n\nexport function copyAndAddPathToFields (formOrContainer: IForm): IForm {\n const form = addPathsToFormSections(JSON.parse(JSON.stringify(formOrContainer))) as IForm\n return form\n}\n\nfunction getValueFromPath (path: string, formValues: IFormValues): IValueType | IValueType[] | undefined {\n return get(formValues, path)\n}\n\nexport function getFieldValue (field: IFormField, formValues: IFormValues): IValueType | IValueType[] | undefined {\n const path = makeJsonPath(field)\n const val = getValueFromPath(path, formValues) // formValues[field.id]\n return val\n}\n\nexport function getPathFromField (field: IFormField): string {\n // console.log(`${field.path !== undefined ? field.path.join('.') : 'nopath'} = ${field.id}`)\n return field.path !== undefined ? field.path.filter(f => !(f.type === 'object' && f.skip_path === true)).map(f => f.id).join('.') : field.id\n}\n\n// THIS DOESN'T HANDLE NESTED YET\nexport const checkCondition = (field: IFormField, formValues: IFormValues): boolean => {\n if (field.conditions !== undefined) {\n const dependsOn = Array.isArray(field.conditions.dependsOn) ? field.conditions.dependsOn : [field.conditions.dependsOn]\n\n const val = field.conditions.value\n const check = dependsOn.every(d => {\n const fieldValue = getValueFromPath(d, formValues)\n return val !== undefined\n ? fieldValue === val\n : fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== ''\n })\n return check\n }\n return true\n}\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\nexport function cleanUnusedDependenciesFromFormValues (form: IForm, formValues: IFormValues): IFormValues {\n const fields = getFieldsFromFormSection(form)\n Object.keys(formValues).forEach(key => {\n const field = fields?.find(f => f.id === key)\n if (field !== undefined && !checkCondition(field, formValues)) {\n formValues[key] = undefined\n }\n })\n\n const fieldIds = fields.map(f => f.id)\n const newFormValues = Object.fromEntries(Object.entries(formValues).filter(([key]) => fieldIds.includes(key)))\n return newFormValues\n}\n\nexport const makeJsonPath = (field: IFormField, index: number = 0): string => {\n if (field.path === undefined) {\n return field.id\n } else {\n return field.path.map(f => f.multiple ? `${f.id}[${index}]` : f.id).join('.')\n }\n}\n\nconst testField = (field: IFormField, formValues: IFormValues): boolean => {\n const val = getFieldValue(field, formValues)\n return val !== undefined && val !== null && val !== ''\n}\n\nexport const calculateSectionStatus = (sections: IFormSection[], formValueState: IFormValueState): IFormSectionStatus => {\n const [formValues] = formValueState\n return Object.fromEntries(sections.map(s => {\n const fields = getFieldsFromFormSection(s).filter(f => f.type !== 'object')\n const total = fields.length\n const completed = fields.filter(f => testField(f, formValues)).length\n const required = fields.filter(f => f.required)\n const requiredTotal = required.length\n const requiredCompleted = required.filter(f => testField(f, formValues)).length\n const valid = requiredTotal === requiredCompleted\n return [s.id, { completed, total, requiredTotal, requiredCompleted, valid }]\n }))\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../src/Form/helpers.ts"],"sourcesContent":["import { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\nimport { type IForm, type IFormField, type IValueType, type IFormValues, type IFormSection, type IFormValueState, type IPage, type IWizardStep } from '@/Form/Creator/FormCreatorTypes'\nimport { get, set } from 'lodash'\n\nexport const getChildFields = (field: { id: string, fields?: IFormField[] }): IFormField[] => {\n return field?.fields ?? []\n}\n\nexport const addFieldPath = (field: IFormField, parentPath?: IFormField[]): IFormField => {\n if (field.type === 'object' && field.skip_path === true) {\n field.path = parentPath !== undefined ? parentPath.slice() : []\n field.level = parentPath !== undefined ? parentPath.length : 0\n } else {\n const newSegment = field // `${field.id}${field.multiple === true ? '[]' : ''}`\n field.path = parentPath !== undefined ? parentPath.slice().concat(newSegment) : [newSegment]\n field.level = parentPath !== undefined ? parentPath.length + 1 : 1\n }\n if ((field.type === 'object' || field.type === 'section') && field.fields !== undefined) {\n field.fields = field.fields.map(childField => {\n return addFieldPath(childField, field.path?.slice())\n })\n }\n return field\n}\n\nexport const getUniqueFormFields = (form: IForm): IFormField[] => {\n const fieldMap = Object.fromEntries((form?.fields ?? []).map(f => [f.id, f]))\n return Object.values(fieldMap)\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\nfunction addPathsToFormSections (section: IFormSection): IFormSection {\n if (section.pages !== undefined) {\n section.pages = section.pages.map(page => {\n return addPathsToFormSections(page)\n }) as IPage[]\n }\n if (section.wizard_steps !== undefined) {\n section.wizard_steps = section.wizard_steps.map(wizardStep => {\n return addPathsToFormSections(wizardStep)\n }) as IWizardStep[]\n }\n if (section.fields !== undefined) {\n section.fields = section.fields.map(field => {\n return addFieldPath(field)\n })\n }\n return section\n}\n\nexport function copyAndAddPathToFields (formOrContainer: IForm): IForm {\n const form = addPathsToFormSections(JSON.parse(JSON.stringify(formOrContainer))) as IForm\n return form\n}\n\nfunction getValueFromPath (path: string, formValues: IFormValues): IValueType | IValueType[] | undefined {\n return get(formValues, path)\n}\n\nexport function getFieldValue (field: IFormField, formValues: IFormValues): IValueType | IValueType[] | undefined {\n const path = makeJsonPath(field)\n const val = getValueFromPath(path, formValues) // formValues[field.id]\n return val\n}\n\nexport function getPathFromField (field: IFormField): string {\n // console.log(`${field.path !== undefined ? field.path.join('.') : 'nopath'} = ${field.id}`)\n return field.path !== undefined ? field.path.filter(f => !(f.type === 'object' && f.skip_path === true)).map(f => f.id).join('.') : field.id\n}\n\n// THIS DOESN'T HANDLE NESTED YET\nexport const checkCondition = (field: IFormField, formValues: IFormValues): boolean => {\n if (field.conditions !== undefined) {\n const dependsOn = Array.isArray(field.conditions.dependsOn) ? field.conditions.dependsOn : [field.conditions.dependsOn]\n\n const val = field.conditions.value\n const check = dependsOn.every(d => {\n const fieldValue = getValueFromPath(d, formValues)\n return val !== undefined\n ? fieldValue === val\n : fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== ''\n })\n return check\n }\n return true\n}\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\nexport function cleanUnusedDependenciesFromFormValues (form: IForm, formValues: IFormValues): IFormValues {\n const fields = getFieldsFromFormSection(form)\n Object.keys(formValues).forEach(key => {\n const field = fields?.find(f => f.id === key)\n if (field !== undefined && !checkCondition(field, formValues)) {\n formValues[key] = undefined\n }\n })\n const fieldIds = fields.map(f => f.id)\n const newFormValues = Object.fromEntries(Object.entries(formValues).filter(([key]) => fieldIds.includes(key)))\n return newFormValues\n}\n\nexport function updateFormValuesWithFieldValueInPlace (field: IFormField, newValue: IValueType | IValueType[], formValues: IFormValues): void {\n const fieldPath = getPathFromField(field)\n set(formValues, fieldPath, newValue)\n}\n\nexport function updateFormValuesWithFieldValue (field: IFormField, newValue: IValueType | IValueType[], formValues: IFormValues): IFormValues {\n const formValuesCopy = structuredClone(formValues)\n updateFormValuesWithFieldValueInPlace(field, newValue, formValuesCopy)\n return formValuesCopy\n}\n\nexport const makeJsonPath = (field: IFormField, index: number = 0): string => {\n if (field.path === undefined) {\n return field.id\n } else {\n return field.path.map(f => f.multiple ? `${f.id}[${index}]` : f.id).join('.')\n }\n}\n\nconst testField = (field: IFormField, formValues: IFormValues): boolean => {\n const val = getFieldValue(field, formValues)\n return val !== undefined && val !== null && val !== ''\n}\n\nexport const calculateSectionStatus = (sections: IFormSection[], formValueState: IFormValueState): IFormSectionStatus => {\n const [formValues] = formValueState\n return Object.fromEntries(sections.map(s => {\n const fields = getFieldsFromFormSection(s).filter(f => f.type !== 'object')\n const total = fields.length\n const completed = fields.filter(f => testField(f, formValues)).length\n const required = fields.filter(f => f.required)\n const requiredTotal = required.length\n const requiredCompleted = required.filter(f => testField(f, formValues)).length\n const valid = requiredTotal === requiredCompleted\n return [s.id, { completed, total, requiredTotal, requiredCompleted, valid }]\n }))\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { addFieldPath, calculateSectionStatus, checkCondition, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, getChildFields, getFieldValue, getFields, getFieldsFromFormSection, getPathFromField, getUniqueFormFields, makeJsonPath } from './Form/helpers.js';
1
+ export { addFieldPath, calculateSectionStatus, checkCondition, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, getChildFields, getFieldValue, getFields, getFieldsFromFormSection, getPathFromField, getUniqueFormFields, makeJsonPath, updateFormValuesWithFieldValue, updateFormValuesWithFieldValueInPlace } from './Form/helpers.js';
2
2
  export { default as FormCreator } from './Form/Creator/FormCreator.js';
3
3
  export { default as FieldCreator } from './Form/Components/FieldCreator.js';
4
4
  export { default as BooleanInput } from './Form/Components/Inputs/Boolean.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axdspub/axiom-ui-forms",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Axiom UI Forms",