@axdspub/axiom-ui-forms 0.3.4 → 0.3.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 (46) hide show
  1. package/library/axiom-ui-forms.d.ts +31 -18
  2. package/library/esm/_virtual/index10.js +2 -2
  3. package/library/esm/_virtual/index11.js +2 -2
  4. package/library/esm/_virtual/index12.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/index5.js +2 -2
  8. package/library/esm/_virtual/index9.js +2 -2
  9. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js +2 -2
  10. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -1
  11. package/library/esm/node_modules/ajv/dist/compile/codegen/index.js +1 -1
  12. package/library/esm/node_modules/ajv/dist/compile/validate/index.js +1 -1
  13. package/library/esm/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -1
  14. package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
  15. package/library/esm/node_modules/ajv/dist/vocabularies/discriminator/index.js +1 -1
  16. package/library/esm/node_modules/ajv/dist/vocabularies/format/index.js +1 -1
  17. package/library/esm/node_modules/ajv/dist/vocabularies/validation/index.js +1 -1
  18. package/library/esm/src/Form/Components/FieldCreator.js +75 -31
  19. package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
  20. package/library/esm/src/Form/Components/FieldLabel.js +80 -23
  21. package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
  22. package/library/esm/src/Form/Components/Inputs/Boolean.js +5 -2
  23. package/library/esm/src/Form/Components/Inputs/Boolean.js.map +1 -1
  24. package/library/esm/src/Form/Components/Inputs/Constant.js +2 -2
  25. package/library/esm/src/Form/Components/Inputs/Constant.js.map +1 -1
  26. package/library/esm/src/Form/Components/Inputs/Number.js +1 -2
  27. package/library/esm/src/Form/Components/Inputs/Number.js.map +1 -1
  28. package/library/esm/src/Form/Components/Inputs/Object.js +32 -7
  29. package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
  30. package/library/esm/src/Form/Creator/FormCreator.js +4 -4
  31. package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
  32. package/library/esm/src/Form/Creator/FormFields.js +1 -1
  33. package/library/esm/src/Form/Creator/FormFields.js.map +1 -1
  34. package/library/esm/src/Form/Creator/FormHeader.js +2 -1
  35. package/library/esm/src/Form/Creator/FormHeader.js.map +1 -1
  36. package/library/esm/src/Form/Creator/FormSection.js +1 -1
  37. package/library/esm/src/Form/Creator/FormSection.js.map +1 -1
  38. package/library/esm/src/Form/Creator/Wizard.js +3 -3
  39. package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
  40. package/library/esm/src/utils/getters.js +36 -6
  41. package/library/esm/src/utils/getters.js.map +1 -1
  42. package/library/esm/src/utils/manipulators.js +28 -12
  43. package/library/esm/src/utils/manipulators.js.map +1 -1
  44. package/library/esm/src/utils/validators.js +21 -9
  45. package/library/esm/src/utils/validators.js.map +1 -1
  46. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","sources":["../../../../../../src/Form/Components/Inputs/Number.tsx"],"sourcesContent":["import FieldLabel, { FieldDescriptionTooltip, FieldLabelText } from '@/Form/Components/FieldLabel'\r\nimport { type INumberField, type IFieldInputProps, type IValueType } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Checkbox, Input, Slider } from '@axdspub/axiom-ui-utilities'\r\nimport { CheckIcon, Cross2Icon, Pencil1Icon } from '@radix-ui/react-icons'\r\nimport React, { useEffect, useState, type ReactElement } from 'react'\r\n\r\nconst isValidNumber = (value: string): boolean => {\r\n if (value === undefined || value === null || value === '') {\r\n return false\r\n }\r\n const num = Number(value)\r\n return !isNaN(num) && isFinite(num)\r\n}\r\n\r\nconst SliderInput = ({\r\n field,\r\n value,\r\n onChange,\r\n min,\r\n max,\r\n step,\r\n disabled\r\n}: IFieldInputProps & { max: number, min?: number, step?: number }): ReactElement => {\r\n const [tempValue, setTempValue] = useState<number | undefined>(value !== undefined && value !== null ? +value : undefined)\r\n const [tempTextValue, setTempTextValue] = useState<string | undefined>(value !== undefined ? String(value) : undefined)\r\n const [mode, setMode] = useState<'slider' | 'text'>('slider')\r\n const updateTemp = (value: string | number | undefined): void => {\r\n if (value !== undefined && isValidNumber(String(value))) {\r\n setTempValue(+value)\r\n setTempTextValue(String(value))\r\n } else {\r\n setTempTextValue(value !== undefined ? String(value) : undefined)\r\n }\r\n }\r\n useEffect(() => {\r\n if (value !== tempValue) {\r\n updateTemp(value !== undefined && value !== null ? +value : undefined)\r\n }\r\n }, [value])\r\n\r\n return (<div>\r\n <FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />\r\n <div className='flex flex-row gap-4'>\r\n <Slider\r\n wrapperClassName='flex-grow max-w-[400px] mt-1'\r\n size='sm'\r\n disabled={disabled}\r\n retainUndefinedOnLoad={true}\r\n value={tempValue}\r\n min={min ?? 0}\r\n max={max}\r\n onChange={(v: number): void => {\r\n updateTemp(v)\r\n } }\r\n onChangeComplete={(v: number): void => {\r\n updateTemp(v)\r\n onChange(v)\r\n } }\r\n id={field.id}\r\n testId={field.id}\r\n step={step ?? ((max - (min ?? 0)) / 100)} />\r\n <div className='w-[100px] flex flex-row text-right'>\r\n {\r\n mode === 'slider'\r\n ? <>\r\n <strong className={`w-[60px]${disabled ? ' text-slate-400 cursor-not-allowed' : ''}`}>{tempValue}</strong>\r\n <Pencil1Icon className={`inline m-1 w-5 h-5 ${disabled ? ' opacity-50 cursor-not-allowed' : 'cursor-pointer'}`} onClick={() => {\r\n if (disabled) return\r\n setMode('text')\r\n }} />\r\n </>\r\n : <>\r\n {\r\n (\r\n (tempTextValue !== undefined && tempTextValue !== null) ||\r\n mode === 'text'\r\n )\r\n\r\n ? <><Input\r\n id={`slider-text-${field.id}`}\r\n disabled={disabled}\r\n testId={`slider-text-${field.id}`}\r\n value={tempTextValue !== undefined && tempTextValue !== null ? String(tempTextValue) : ''}\r\n className='w-[50px] text-xs text-right'\r\n size='xs'\r\n label={undefined}\r\n onChange={(e) => {\r\n updateTemp(e)\r\n }} />\r\n <Cross2Icon className={`flex-none inline m-1 w-5 h-5 ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}`} color='red' onClick={() => {\r\n if (!disabled) {\r\n setMode('slider')\r\n }\r\n }} />\r\n <CheckIcon className={`flex-none inline m-1 w-5 h-5 ${(disabled ?? !isValidNumber(String(tempTextValue))) ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}`} color='green' onClick={() => {\r\n if (!disabled && isValidNumber(String(tempTextValue))) {\r\n setMode('slider')\r\n updateTemp(tempTextValue)\r\n onChange(tempTextValue)\r\n }\r\n }} />\r\n </>\r\n : ''\r\n }\r\n </>\r\n }\r\n </div>\r\n </div>\r\n </div>)\r\n}\r\n\r\nconst TextInput = ({ field, onChange, value, className, disabled }: IFieldInputProps): ReactElement => {\r\n const [error, setError] = useState<string | undefined>(undefined)\r\n\r\n return (\r\n <>\r\n <Input\r\n id={field.id}\r\n testId={field.id}\r\n error={error}\r\n className={className}\r\n value={value !== undefined && value !== null ? String(value) : ''}\r\n label={<FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />} onChange={(e) => {\r\n if (e !== undefined && !isNaN(+e) && e !== '') {\r\n onChange(+e)\r\n setError(undefined)\r\n } else {\r\n if (String(e).length > 0) {\r\n setError('Please enter a valid number')\r\n } else {\r\n setError(undefined)\r\n }\r\n onChange(undefined)\r\n }\r\n }} />\r\n {error !== undefined && <p className='text-red-500 text-xs py-2'>{error}</p>}\r\n </>\r\n )\r\n}\r\n\r\nconst NumberInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : undefined\r\n const numberField = field as INumberField\r\n const isNull = initialValue === undefined || initialValue === null || initialValue === ''\r\n const [userSelectedNotNull, setUserSelectedNotNull] = useState<boolean>(!isNull)\r\n const canBeNull = numberField.settings?.canBeNull === true\r\n\r\n const myOnChange = (v: IValueType | IValueType[] | undefined): void => {\r\n onChange(v)\r\n }\r\n\r\n const max = numberField?.constraints?.max\r\n const fieldForInput = canBeNull\r\n ? {\r\n ...field,\r\n label: undefined,\r\n description: undefined\r\n }\r\n : field\r\n const el = (\r\n <>{\r\n max !== undefined\r\n ? <SliderInput\r\n disabled={disabled}\r\n\r\n field={fieldForInput}\r\n value={initialValue}\r\n onChange={myOnChange}\r\n min={numberField?.constraints?.min}\r\n max={max}\r\n step={numberField?.settings?.step} />\r\n : <TextInput\r\n disabled={disabled}\r\n field={fieldForInput}\r\n value={initialValue}\r\n onChange={onChange}\r\n className='max-w-[300px]'\r\n\r\n />\r\n }</>\r\n )\r\n\r\n if (canBeNull) {\r\n return (\r\n <div className='flex flex-col gap-2'>\r\n <Checkbox\r\n disabled={disabled}\r\n id={`${field.id}-null`}\r\n testId={`${field.id}-null`}\r\n label={<><FieldLabelText\r\n field={field}\r\n disabled={disabled}\r\n onChange={onChange}\r\n /> <FieldDescriptionTooltip field={field} disabled={disabled} /></>}\r\n value={userSelectedNotNull}\r\n onChange={(e) => {\r\n setUserSelectedNotNull(!userSelectedNotNull)\r\n if (!e) {\r\n onChange(undefined)\r\n } else {\r\n onChange(numberField?.settings?.nonNullDefaultValue ?? numberField?.defaultValue ?? value ?? undefined)\r\n }\r\n }} />\r\n {userSelectedNotNull ? el : <></>}\r\n </div>\r\n )\r\n } else {\r\n return el\r\n }\r\n}\r\n\r\nexport default NumberInput\r\n"],"names":["React","Slider"],"mappings":"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"}
1
+ {"version":3,"file":"Number.js","sources":["../../../../../../src/Form/Components/Inputs/Number.tsx"],"sourcesContent":["import FieldLabel, { FieldDescriptionTooltip, FieldLabelText } from '@/Form/Components/FieldLabel'\r\nimport { type INumberField, type IFieldInputProps, type IValueType } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Checkbox, Input, Slider } from '@axdspub/axiom-ui-utilities'\r\nimport { CheckIcon, Cross2Icon, Pencil1Icon } from '@radix-ui/react-icons'\r\nimport React, { useEffect, useState, type ReactElement } from 'react'\r\n\r\nconst isValidNumber = (value: string): boolean => {\r\n if (value === undefined || value === null || value === '') {\r\n return false\r\n }\r\n const num = Number(value)\r\n return !isNaN(num) && isFinite(num)\r\n}\r\n\r\nconst SliderInput = ({\r\n field,\r\n value,\r\n onChange,\r\n min,\r\n max,\r\n step,\r\n disabled\r\n}: IFieldInputProps & { max: number, min?: number, step?: number }): ReactElement => {\r\n const [tempValue, setTempValue] = useState<number | undefined>(value !== undefined && value !== null ? +value : undefined)\r\n const [tempTextValue, setTempTextValue] = useState<string | undefined>(value !== undefined ? String(value) : undefined)\r\n const [mode, setMode] = useState<'slider' | 'text'>('slider')\r\n const updateTemp = (value: string | number | undefined): void => {\r\n if (value !== undefined && isValidNumber(String(value))) {\r\n setTempValue(+value)\r\n setTempTextValue(String(value))\r\n } else {\r\n setTempTextValue(value !== undefined ? String(value) : undefined)\r\n }\r\n }\r\n useEffect(() => {\r\n if (value !== tempValue) {\r\n updateTemp(value !== undefined && value !== null ? +value : undefined)\r\n }\r\n }, [value])\r\n\r\n return (<div>\r\n <FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />\r\n <div className='flex flex-row gap-4'>\r\n <Slider\r\n wrapperClassName='flex-grow max-w-[400px] mt-1'\r\n size='sm'\r\n disabled={disabled}\r\n retainUndefinedOnLoad={true}\r\n value={tempValue}\r\n min={min ?? 0}\r\n max={max}\r\n onChange={(v: number): void => {\r\n updateTemp(v)\r\n } }\r\n onChangeComplete={(v: number): void => {\r\n updateTemp(v)\r\n onChange(v)\r\n } }\r\n id={field.id}\r\n testId={field.id}\r\n step={step ?? ((max - (min ?? 0)) / 100)} />\r\n <div className='w-[100px] flex flex-row text-right'>\r\n {\r\n mode === 'slider'\r\n ? <>\r\n <strong className={`w-[60px]${disabled ? ' text-slate-400 cursor-not-allowed' : ''}`}>{tempValue}</strong>\r\n <Pencil1Icon className={`inline m-1 w-5 h-5 ${disabled ? ' opacity-50 cursor-not-allowed' : 'cursor-pointer'}`} onClick={() => {\r\n if (disabled) return\r\n setMode('text')\r\n }} />\r\n </>\r\n : <>\r\n {\r\n (\r\n (tempTextValue !== undefined && tempTextValue !== null) ||\r\n mode === 'text'\r\n )\r\n\r\n ? <><Input\r\n id={`slider-text-${field.id}`}\r\n disabled={disabled}\r\n testId={`slider-text-${field.id}`}\r\n value={tempTextValue !== undefined && tempTextValue !== null ? String(tempTextValue) : ''}\r\n className='w-[50px] text-xs text-right'\r\n size='xs'\r\n label={undefined}\r\n onChange={(e) => {\r\n updateTemp(e)\r\n }} />\r\n <Cross2Icon className={`flex-none inline m-1 w-5 h-5 ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}`} color='red' onClick={() => {\r\n if (!disabled) {\r\n setMode('slider')\r\n }\r\n }} />\r\n <CheckIcon className={`flex-none inline m-1 w-5 h-5 ${(disabled ?? !isValidNumber(String(tempTextValue))) ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}`} color='green' onClick={() => {\r\n if (!disabled && isValidNumber(String(tempTextValue))) {\r\n setMode('slider')\r\n updateTemp(tempTextValue)\r\n onChange(tempTextValue)\r\n }\r\n }} />\r\n </>\r\n : ''\r\n }\r\n </>\r\n }\r\n </div>\r\n </div>\r\n </div>)\r\n}\r\n\r\nconst TextInput = ({ field, onChange, value, className, disabled }: IFieldInputProps): ReactElement => {\r\n const [error, setError] = useState<string | undefined>(undefined)\r\n\r\n return (\r\n <>\r\n <Input\r\n id={field.id}\r\n testId={field.id}\r\n error={error}\r\n className={className}\r\n value={value !== undefined && value !== null ? String(value) : ''}\r\n label={<FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />} onChange={(e) => {\r\n if (e !== undefined && !isNaN(+e) && e !== '') {\r\n onChange(+e)\r\n setError(undefined)\r\n } else {\r\n if (String(e).length > 0) {\r\n setError('Please enter a valid number')\r\n } else {\r\n setError(undefined)\r\n }\r\n onChange(undefined)\r\n }\r\n }}\r\n after={error !== undefined && <p className='text-red-500 text-xs py-2'>{error}</p>}\r\n\r\n />\r\n </>\r\n )\r\n}\r\n\r\nconst NumberInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : undefined\r\n const numberField = field as INumberField\r\n const isNull = initialValue === undefined || initialValue === null || initialValue === ''\r\n const [userSelectedNotNull, setUserSelectedNotNull] = useState<boolean>(!isNull)\r\n const canBeNull = numberField.settings?.canBeNull === true\r\n\r\n const myOnChange = (v: IValueType | IValueType[] | undefined): void => {\r\n onChange(v)\r\n }\r\n\r\n const max = numberField?.constraints?.max\r\n const fieldForInput = canBeNull\r\n ? {\r\n ...field,\r\n label: undefined,\r\n description: undefined\r\n }\r\n : field\r\n const el = (\r\n <>{\r\n max !== undefined\r\n ? <SliderInput\r\n disabled={disabled}\r\n\r\n field={fieldForInput}\r\n value={initialValue}\r\n onChange={myOnChange}\r\n min={numberField?.constraints?.min}\r\n max={max}\r\n step={numberField?.settings?.step} />\r\n : <TextInput\r\n disabled={disabled}\r\n field={fieldForInput}\r\n value={initialValue}\r\n onChange={onChange}\r\n className='max-w-[300px]'\r\n\r\n />\r\n }</>\r\n )\r\n\r\n if (canBeNull) {\r\n return (\r\n <div className='flex flex-col gap-2'>\r\n <Checkbox\r\n disabled={disabled}\r\n id={`${field.id}-null`}\r\n testId={`${field.id}-null`}\r\n label={<><FieldLabelText\r\n field={field}\r\n disabled={disabled}\r\n onChange={onChange}\r\n /> <FieldDescriptionTooltip field={field} disabled={disabled} /></>}\r\n value={userSelectedNotNull}\r\n onChange={(e) => {\r\n setUserSelectedNotNull(!userSelectedNotNull)\r\n if (!e) {\r\n onChange(undefined)\r\n } else {\r\n onChange(numberField?.settings?.nonNullDefaultValue ?? numberField?.defaultValue ?? value ?? undefined)\r\n }\r\n }} />\r\n {userSelectedNotNull ? el : <></>}\r\n </div>\r\n )\r\n } else {\r\n return el\r\n }\r\n}\r\n\r\nexport default NumberInput\r\n"],"names":["React","Slider"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
1
  import FieldCreator from '../FieldCreator.js';
3
2
  import FieldLabel from '../FieldLabel.js';
3
+ import { checkCondition } from '../../../utils/validators.js';
4
4
  import { utils as index$1 } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
5
5
  import React__default from 'react';
6
6
 
@@ -24,21 +24,46 @@ var ObjectInput = function (_a) {
24
24
  field.label !== undefined
25
25
  ? React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange })
26
26
  : null,
27
- React__default.createElement("div", { className: "p-4 bg-slate-100 ".concat(cl).concat(disabled ? ' opacity-70 cursor-not-allowed' : '') }, field.fields.map(function (childField) {
27
+ React__default.createElement("div", { className: "".concat(cl).concat(disabled ? ' opacity-70 cursor-not-allowed' : '') }, field.fields.map(function (childField) {
28
28
  var _a, _b;
29
29
  var key = ((_a = field.path) !== null && _a !== void 0 ? _a : [field.id]).concat(childField.id).join('.');
30
- return (React__default.createElement(FieldCreator, { disabled: disabled, onChange: function (e) {
30
+ var conditionResult = field.multiple
31
+ ? checkCondition(childField, initialValue)
32
+ : undefined;
33
+ return (React__default.createElement(FieldCreator, { disabled: disabled, conditionResult: conditionResult, onChange: function (e) {
31
34
  if (childField.type === 'object' && childField.skip_path === true) {
32
35
  onChange(e);
33
36
  }
34
37
  else {
35
- initialValue[childField.id] = e;
36
- onChange(__assign({}, initialValue));
38
+ // onst path = getPathFromField(field)
39
+ // console.log('field path is ', path)
40
+ // const childPath = getPathFromField(childField)
41
+ // console.log('child field path is ', childPath)
42
+ // only use local path since we're only appending to the local object value rather than the full form value
43
+ /* const localForm = copyAndAddPathToFields(field as IFormSection) // { ...childField, path: childField?.path?.slice(childField?.path?.length - 1) ?? undefined }
44
+ const localField = { ...childField, path: childField?.path?.slice(childField?.path?.length - 1) ?? undefined }
45
+ const cleanedValues = cleanAndUpdateFormValuesWithFieldValue({
46
+ form: localForm,
47
+ field: localField,
48
+ value: e,
49
+ formValues: structuredClone(initialValue)
50
+ }) */
51
+ /* const cleanedValues = cleanAndUpdateFormValuesWithFieldValue({
52
+ form: field as IFormSection,
53
+ field: childField,
54
+ value: e,
55
+ formValues: structuredClone(initialValue)
56
+ }) */
57
+ var newValue = structuredClone(initialValue);
58
+ newValue[childField.id] = e;
59
+ onChange(newValue);
37
60
  }
38
- }, className: index$1.makeClassName({
39
- defaultClassName: 'p-0',
61
+ },
62
+ // conditionResult={conditionResult}
63
+ className: index$1.makeClassName({
40
64
  className: fc_1
41
65
  }),
66
+ // conditionResult={conditionResult}
42
67
  // default to null here so that FormCreator doesn't go out and look for the value again
43
68
  // todo: update this so that it's clearer. difference between undefined and null too small
44
69
  value: (_b = (childField.type === 'object' && childField.skip_path === true
@@ -1 +1 @@
1
- {"version":3,"file":"Object.js","sources":["../../../../../../src/Form/Components/Inputs/Object.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type ICompositeValueType, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { utils } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst ObjectInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = (typeof value === 'object' ? value ?? {} : {}) as ICompositeValueType\r\n if (field.type === 'object' && field.fields !== undefined) {\r\n const cl = `${field.layout === 'horizontal'\r\n ? 'flex md:flex-row sm:flex-col gap-4 sm:gap-2'\r\n : field.layout === 'grid4'\r\n ? 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4'\r\n : field.layout === 'grid3'\r\n ? 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4'\r\n : field.layout === 'grid2'\r\n ? 'grid grid-cols-1 md:grid-cols-2 gap-4'\r\n : 'flex flex-col gap-4'\r\n }`\r\n const fc = field.layout === 'horizontal'\r\n ? 'flex-1'\r\n : ''\r\n return (\r\n <div>\r\n {\r\n field.label !== undefined\r\n ? <FieldLabel field={field} disabled={disabled} value={value} onChange={onChange} />\r\n : null\r\n }\r\n <div className={`p-4 bg-slate-100 ${cl}${disabled ? ' opacity-70 cursor-not-allowed' : ''}`}>\r\n {\r\n field.fields.map((childField) => {\r\n const key = (field.path ?? [field.id]).concat(childField.id).join('.')\r\n\r\n return (\r\n <FieldCreator\r\n disabled={disabled}\r\n onChange={(e) => {\r\n if (childField.type === 'object' && childField.skip_path === true) {\r\n onChange(e)\r\n } else {\r\n initialValue[childField.id] = e\r\n onChange({ ...initialValue })\r\n }\r\n }}\r\n className={utils.makeClassName({\r\n defaultClassName: 'p-0',\r\n className: fc\r\n })}\r\n // default to null here so that FormCreator doesn't go out and look for the value again\r\n // todo: update this so that it's clearer. difference between undefined and null too small\r\n value={(\r\n childField.type === 'object' && childField.skip_path === true\r\n ? initialValue\r\n : initialValue[childField.id]\r\n ) ?? null\r\n }\r\n field={childField}\r\n key={key}\r\n />\r\n )\r\n })\r\n }\r\n </div>\r\n </div>\r\n )\r\n }\r\n return <p>Field config for {field.id} is missing &apos;fields&apos;</p>\r\n}\r\n\r\nexport default ObjectInput\r\n"],"names":["React","utils"],"mappings":";;;;;;AAMM,IAAA,WAAW,GAAG,UAAC,EAAsD,EAAA;QAApD,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;IACrD,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,EAAA,CAAA,MAAA,CAAG,KAAK,CAAC,MAAM,KAAK;AAC3B,cAAE;AACF,cAAE,KAAK,CAAC,MAAM,KAAK;AACnB,kBAAE;AACF,kBAAE,KAAK,CAAC,MAAM,KAAK;AACjB,sBAAE;AACF,sBAAE,KAAK,CAAC,MAAM,KAAK;AACjB,0BAAE;0BACA,qBAAqB,CAC3B;AACJ,QAAA,IAAM,IAAE,GAAG,KAAK,CAAC,MAAM,KAAK;AAC1B,cAAE;cACA,EAAE;AACN,QAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;YAEE,KAAK,CAAC,KAAK,KAAK;AACd,kBAAEA,cAAC,CAAA,aAAA,CAAA,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAI;AACpF,kBAAE,IAAI;YAEVA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,oBAAqB,CAAA,MAAA,CAAA,EAAE,SAAG,QAAQ,GAAG,gCAAgC,GAAG,EAAE,CAAE,EAAA,EAE1F,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,QAAQ,EAAE,QAAQ,EAClB,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;;;AAGF,oBAAA,KAAK,EAAE,CAAA,EAAA,IACL,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,KAAK;AACvD,0BAAE;0BACA,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAChC,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,IAAI,EAET,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;;;;"}
1
+ {"version":3,"file":"Object.js","sources":["../../../../../../src/Form/Components/Inputs/Object.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type ICompositeValueType, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { checkCondition } from '@/utils/validators'\r\nimport { utils } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst ObjectInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = (typeof value === 'object' ? value ?? {} : {}) as ICompositeValueType\r\n if (field.type === 'object' && field.fields !== undefined) {\r\n const cl = `${field.layout === 'horizontal'\r\n ? 'flex md:flex-row sm:flex-col gap-4 sm:gap-2'\r\n : field.layout === 'grid4'\r\n ? 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4'\r\n : field.layout === 'grid3'\r\n ? 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4'\r\n : field.layout === 'grid2'\r\n ? 'grid grid-cols-1 md:grid-cols-2 gap-4'\r\n : 'flex flex-col gap-4'\r\n }`\r\n const fc = field.layout === 'horizontal'\r\n ? 'flex-1'\r\n : ''\r\n return (\r\n <div>\r\n {\r\n field.label !== undefined\r\n ? <FieldLabel field={field} disabled={disabled} value={value} onChange={onChange} />\r\n : null\r\n }\r\n <div className={`${cl}${disabled ? ' opacity-70 cursor-not-allowed' : ''}`}>\r\n {\r\n field.fields.map((childField) => {\r\n const key = (field.path ?? [field.id]).concat(childField.id).join('.')\r\n const conditionResult = field.multiple\r\n ? checkCondition(childField, initialValue)\r\n : undefined\r\n\r\n return (\r\n <FieldCreator\r\n disabled={disabled}\r\n conditionResult={conditionResult}\r\n onChange={(e) => {\r\n if (childField.type === 'object' && childField.skip_path === true) {\r\n onChange(e)\r\n } else {\r\n // onst path = getPathFromField(field)\r\n // console.log('field path is ', path)\r\n // const childPath = getPathFromField(childField)\r\n // console.log('child field path is ', childPath)\r\n\r\n // only use local path since we're only appending to the local object value rather than the full form value\r\n /* const localForm = copyAndAddPathToFields(field as IFormSection) // { ...childField, path: childField?.path?.slice(childField?.path?.length - 1) ?? undefined }\r\n const localField = { ...childField, path: childField?.path?.slice(childField?.path?.length - 1) ?? undefined }\r\n const cleanedValues = cleanAndUpdateFormValuesWithFieldValue({\r\n form: localForm,\r\n field: localField,\r\n value: e,\r\n formValues: structuredClone(initialValue)\r\n }) */\r\n /* const cleanedValues = cleanAndUpdateFormValuesWithFieldValue({\r\n form: field as IFormSection,\r\n field: childField,\r\n value: e,\r\n formValues: structuredClone(initialValue)\r\n }) */\r\n const newValue = structuredClone(initialValue)\r\n newValue[childField.id] = e\r\n onChange(newValue)\r\n }\r\n }}\r\n // conditionResult={conditionResult}\r\n className={utils.makeClassName({\r\n className: fc\r\n })}\r\n // conditionResult={conditionResult}\r\n // default to null here so that FormCreator doesn't go out and look for the value again\r\n // todo: update this so that it's clearer. difference between undefined and null too small\r\n value={(\r\n childField.type === 'object' && childField.skip_path === true\r\n ? initialValue\r\n : initialValue[childField.id]\r\n ) ?? null\r\n }\r\n field={childField}\r\n key={key}\r\n />\r\n )\r\n })\r\n }\r\n </div>\r\n </div>\r\n )\r\n }\r\n return <p>Field config for {field.id} is missing &apos;fields&apos;</p>\r\n}\r\n\r\nexport default ObjectInput\r\n"],"names":["React","utils"],"mappings":"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"}
@@ -14,13 +14,13 @@ var FormStatus = function () {
14
14
  var _a, _b, _c, _d;
15
15
  var _e = useContext(FormContext), form = _e.form, formValues = _e.formValues;
16
16
  var status = calculateSectionStatus([form], formValues);
17
- return (React__default.createElement(React__default.Fragment, null,
18
- React__default.createElement("p", { className: 'text-xs mt-4' }, (_a = status[form.id]) === null || _a === void 0 ? void 0 :
17
+ return (React__default.createElement("div", { className: 'flex flex-col gap-2 text-xs' },
18
+ React__default.createElement("p", null, (_a = status[form.id]) === null || _a === void 0 ? void 0 :
19
19
  _a.completed,
20
20
  " of ", (_b = status[form.id]) === null || _b === void 0 ? void 0 :
21
21
  _b.total,
22
22
  " total"),
23
- React__default.createElement("p", { className: 'text-xs mt-2' }, (_c = status[form.id]) === null || _c === void 0 ? void 0 :
23
+ React__default.createElement("p", null, (_c = status[form.id]) === null || _c === void 0 ? void 0 :
24
24
  _c.requiredCompleted,
25
25
  " of ", (_d = status[form.id]) === null || _d === void 0 ? void 0 :
26
26
  _d.requiredTotal,
@@ -37,7 +37,7 @@ var seedFormValuesWithDefaults = function (form) {
37
37
  };
38
38
  var FormCreator = function (_a) {
39
39
  var _b, _c;
40
- var form = _a.form, formValueState = _a.formValueState, note = _a.note, error = _a.error, onChange = _a.onChange, className = _a.className, _d = _a.defaultClassName, defaultClassName = _d === void 0 ? 'flex flex-col gap-2 flex-grow' : _d, _e = _a.urlNavigable, urlNavigable = _e === void 0 ? true : _e, inputOverrides = _a.inputOverrides, schema = _a.schema, footer = _a.footer, header = _a.header;
40
+ var form = _a.form, formValueState = _a.formValueState, note = _a.note, error = _a.error, onChange = _a.onChange, className = _a.className, _d = _a.defaultClassName, defaultClassName = _d === void 0 ? 'flex flex-col gap-8 flex-grow' : _d, _e = _a.urlNavigable, urlNavigable = _e === void 0 ? true : _e, inputOverrides = _a.inputOverrides, schema = _a.schema, footer = _a.footer, header = _a.header;
41
41
  var activeForm = copyAndAddPathToFields(form);
42
42
  var activeFormValues = structuredClone((_b = formValueState === null || formValueState === void 0 ? void 0 : formValueState[0]) !== null && _b !== void 0 ? _b : {});
43
43
  getFieldsFromFormSection(activeForm).forEach(function (field) {
@@ -1 +1 @@
1
- {"version":3,"file":"FormCreator.js","sources":["../../../../../src/Form/Creator/FormCreator.tsx"],"sourcesContent":["import { FormContext } from '@/Form/Creator/FormContextProvider'\r\nimport { type IFormValues, type IForm, type IValueChangeFn, type IFieldInputProps, type IFormOverride, type IFormFieldOverride } from '@/Form/Creator/FormCreatorTypes'\r\nimport FormHeader from '@/Form/Creator/FormHeader'\r\nimport FormSection from '@/Form/Creator/FormSection'\r\nimport { getFieldsFromFormSection, getFieldValue } from '@/utils/getters'\r\nimport { copyAndAddPathToFields, updateFormValuesWithFieldValueInPlace } from '@/utils/manipulators'\r\nimport { overridesAndSchemaToFormObject, schemaToFormObject } from '@/utils/schemaToFormHelpers'\r\nimport { calculateSectionStatus } from '@/utils/validators'\r\nimport { Loader, utils } from '@axdspub/axiom-ui-utilities'\r\nimport { type JSONSchema6 } from 'json-schema'\r\nimport React, { type ReactNode, useContext, type ReactElement, useState } from 'react'\r\n\r\nexport interface IFormCreatorProps {\r\n form: IForm\r\n schema?: JSONSchema6\r\n formValueState?: [IFormValues, (v: IFormValues) => void]\r\n note?: string\r\n error?: string\r\n onChange?: IValueChangeFn\r\n className?: string\r\n defaultClassName?: string\r\n urlNavigable?: boolean\r\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\r\n header?: ReactNode\r\n footer?: ReactNode\r\n}\r\n\r\nconst FormStatus = (): ReactElement => {\r\n const { form, formValues } = useContext(FormContext)\r\n const status = calculateSectionStatus([form], formValues)\r\n\r\n return (\r\n <>\r\n <p className='text-xs mt-4'>{status[form.id]?.completed} of {status[form.id]?.total} total</p>\r\n <p className='text-xs mt-2'>{status[form.id]?.requiredCompleted} of {status[form.id]?.requiredTotal} required</p>\r\n </>\r\n )\r\n}\r\n\r\nexport const SchemaFormCreator = ({\r\n label,\r\n id,\r\n schema,\r\n formOverrides,\r\n formFieldOverrides,\r\n ...props\r\n}: Omit<IFormCreatorProps, 'form'> & {\r\n id?: string\r\n label?: string\r\n schema: JSONSchema6\r\n formOverrides?: IFormOverride[]\r\n formFieldOverrides?: IFormFieldOverride[][]\r\n}): ReactElement => {\r\n const form = formOverrides === undefined && formFieldOverrides === undefined\r\n ? schemaToFormObject(schema)\r\n : overridesAndSchemaToFormObject({\r\n formOverrides,\r\n formFieldOverrides,\r\n schema\r\n }) // Convert the JSON schema to a form object\r\n if (id !== undefined) {\r\n form.id = id\r\n }\r\n if (label !== undefined) {\r\n form.label = label\r\n }\r\n\r\n return (\r\n <>{\r\n form !== undefined\r\n ? <FormCreator form={form} {...props} />\r\n : <div className='p-5 bg-slate-200 text-xs'><Loader className='pt-20' /></div>\r\n }</>\r\n\r\n )\r\n}\r\n\r\nconst seedFormValuesWithDefaults = (form: IForm): IFormValues => {\r\n const formValues: IFormValues = {}\r\n getFieldsFromFormSection(form).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, formValues) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, formValues)\r\n }\r\n })\r\n return formValues\r\n}\r\n\r\nconst FormCreator = ({\r\n form,\r\n formValueState,\r\n note,\r\n error,\r\n onChange,\r\n className,\r\n defaultClassName = 'flex flex-col gap-2 flex-grow',\r\n urlNavigable = true,\r\n inputOverrides,\r\n schema,\r\n footer,\r\n header\r\n}: IFormCreatorProps): ReactElement => {\r\n const activeForm = copyAndAddPathToFields(form)\r\n const activeFormValues = structuredClone(formValueState?.[0] ?? {})\r\n getFieldsFromFormSection(activeForm).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, activeFormValues) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, activeFormValues)\r\n }\r\n })\r\n const [formValues, setFormValues] = formValueState ?? useState<IFormValues>(seedFormValuesWithDefaults(activeForm))\r\n\r\n activeForm.settings = {\r\n url_navigable: urlNavigable,\r\n ...activeForm.settings\r\n }\r\n\r\n return (\r\n <FormContext.Provider value={{\r\n form: activeForm,\r\n formValues,\r\n setFormValues,\r\n inputOverrides,\r\n schema,\r\n urlNavigable: activeForm.settings.url_navigable\r\n }}>\r\n {header ?? ''}\r\n <div className={utils.makeClassName({\r\n className: activeForm?.settings?.class_name,\r\n defaultClassName,\r\n extras: [className]\r\n })}>\r\n <FormHeader form={activeForm} note={note} error={error} />\r\n {\r\n activeForm?.fields !== undefined && activeForm.fields.length > 0 && activeForm.pages === undefined && activeForm.wizard_steps === undefined\r\n ? <FormStatus />\r\n : ''\r\n }\r\n <FormSection\r\n formSection={activeForm}\r\n onChange={onChange}\r\n />\r\n </div>\r\n {footer ?? ''}\r\n </FormContext.Provider>\r\n )\r\n}\r\n\r\nexport type IFormSectionStatus = Record<string, {\r\n completed: number\r\n total: number\r\n requiredTotal: number\r\n requiredCompleted: number\r\n valid: boolean\r\n}>\r\n\r\nexport default FormCreator\r\n"],"names":["React","utils"],"mappings":";;;;;;;;;;;;AA2BA,IAAM,UAAU,GAAG,YAAA;;IACX,IAAA,EAAA,GAAuB,UAAU,CAAC,WAAW,CAAC,EAA5C,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAA4B;IACpD,IAAM,MAAM,GAAG,sBAAsB,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;AAEzD,IAAA,QACEA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;QACAA,cAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,cAAc,EAAE,EAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;eAAE,SAAS;AAAM,YAAA,MAAA,EAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;eAAE,KAAK;AAAW,YAAA,QAAA,CAAA;QAC9FA,cAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,cAAc,EAAE,EAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;eAAE,iBAAiB;AAAM,YAAA,MAAA,EAAA,CAAA,EAAA,GAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;eAAE,aAAa;AAAc,YAAA,WAAA,CAAA,CAC9G;AAEP,CAAC;AAwCD,IAAM,0BAA0B,GAAG,UAAC,IAAW,EAAA;IAC7C,IAAM,UAAU,GAAgB,EAAE;AAClC,IAAA,wBAAwB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,SAAS,EAAE;YACtF,qCAAqC,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC;;AAEhF,KAAC,CAAC;AACF,IAAA,OAAO,UAAU;AACnB,CAAC;AAEK,IAAA,WAAW,GAAG,UAAC,EAaD,EAAA;;AAZlB,IAAA,IAAA,IAAI,UAAA,EACJ,cAAc,oBAAA,EACd,IAAI,UAAA,EACJ,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,wBAAkD,EAAlD,gBAAgB,GAAG,EAAA,KAAA,MAAA,GAAA,+BAA+B,KAAA,EAClD,EAAA,GAAA,EAAA,CAAA,YAAmB,EAAnB,YAAY,GAAA,EAAA,KAAA,MAAA,GAAG,IAAI,GAAA,EAAA,EACnB,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,MAAM,GAAA,EAAA,CAAA,MAAA;AAEN,IAAA,IAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAC/C,IAAA,IAAM,gBAAgB,GAAG,eAAe,CAAC,CAAA,EAAA,GAAA,cAAc,KAAd,IAAA,IAAA,cAAc,KAAd,MAAA,GAAA,MAAA,GAAA,cAAc,CAAG,CAAC,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AACnE,IAAA,wBAAwB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,EAAA;AAChD,QAAA,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,SAAS,EAAE;YAC5F,qCAAqC,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,gBAAgB,CAAC;;AAEtF,KAAC,CAAC;IACI,IAAA,EAAA,GAA8B,cAAc,KAAd,IAAA,IAAA,cAAc,cAAd,cAAc,GAAI,QAAQ,CAAc,0BAA0B,CAAC,UAAU,CAAC,CAAC,EAA5G,UAAU,QAAA,EAAE,aAAa,QAAmF;IAEnH,UAAU,CAAC,QAAQ,GAAA,QAAA,CAAA,EACjB,aAAa,EAAE,YAAY,EAAA,EACxB,UAAU,CAAC,QAAQ,CACvB;AAED,IAAA,QACEA,cAAC,CAAA,aAAA,CAAA,WAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,UAAU,EAAA,UAAA;AACV,YAAA,aAAa,EAAA,aAAA;AACb,YAAA,cAAc,EAAA,cAAA;AACd,YAAA,MAAM,EAAA,MAAA;AACN,YAAA,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,SAAA,EAAA,EACE,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,MAAA,GAAA,MAAM,GAAI,EAAE;AACb,QAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEC,OAAK,CAAC,aAAa,CAAC;gBAClC,SAAS,EAAE,CAAA,EAAA,GAAA,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,UAAU;AAC3C,gBAAA,gBAAgB,EAAA,gBAAA;gBAChB,MAAM,EAAE,CAAC,SAAS;aACnB,CAAC,EAAA;AACE,YAAAD,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAI,CAAA;AAExD,YAAA,CAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAA,MAAA,GAAV,UAAU,CAAE,MAAM,MAAK,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,IAAI,UAAU,CAAC,YAAY,KAAK;kBAC9HA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAG,IAAA;AAChB,kBAAE,EAAE;YAERA,cAAC,CAAA,aAAA,CAAA,WAAW,IACV,WAAW,EAAE,UAAU,EACvB,QAAQ,EAAE,QAAQ,EAAA,CAChB,CACF,EACL,MAAM,aAAN,MAAM,KAAA,MAAA,GAAN,MAAM,GAAI,EAAE,CACQ;AAE3B;;;;"}
1
+ {"version":3,"file":"FormCreator.js","sources":["../../../../../src/Form/Creator/FormCreator.tsx"],"sourcesContent":["import { FormContext } from '@/Form/Creator/FormContextProvider'\r\nimport { type IFormValues, type IForm, type IValueChangeFn, type IFieldInputProps, type IFormOverride, type IFormFieldOverride } from '@/Form/Creator/FormCreatorTypes'\r\nimport FormHeader from '@/Form/Creator/FormHeader'\r\nimport FormSection from '@/Form/Creator/FormSection'\r\nimport { getFieldsFromFormSection, getFieldValue } from '@/utils/getters'\r\nimport { copyAndAddPathToFields, updateFormValuesWithFieldValueInPlace } from '@/utils/manipulators'\r\nimport { overridesAndSchemaToFormObject, schemaToFormObject } from '@/utils/schemaToFormHelpers'\r\nimport { calculateSectionStatus } from '@/utils/validators'\r\nimport { Loader, utils } from '@axdspub/axiom-ui-utilities'\r\nimport { type JSONSchema6 } from 'json-schema'\r\nimport React, { type ReactNode, useContext, type ReactElement, useState } from 'react'\r\n\r\nexport interface IFormCreatorProps {\r\n form: IForm\r\n schema?: JSONSchema6\r\n formValueState?: [IFormValues, (v: IFormValues) => void]\r\n note?: string\r\n error?: string\r\n onChange?: IValueChangeFn\r\n className?: string\r\n defaultClassName?: string\r\n urlNavigable?: boolean\r\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\r\n header?: ReactNode\r\n footer?: ReactNode\r\n}\r\n\r\nconst FormStatus = (): ReactElement => {\r\n const { form, formValues } = useContext(FormContext)\r\n const status = calculateSectionStatus([form], formValues)\r\n\r\n return (\r\n <div className='flex flex-col gap-2 text-xs'>\r\n <p>{status[form.id]?.completed} of {status[form.id]?.total} total</p>\r\n <p>{status[form.id]?.requiredCompleted} of {status[form.id]?.requiredTotal} required</p>\r\n </div>\r\n )\r\n}\r\n\r\nexport const SchemaFormCreator = ({\r\n label,\r\n id,\r\n schema,\r\n formOverrides,\r\n formFieldOverrides,\r\n ...props\r\n}: Omit<IFormCreatorProps, 'form'> & {\r\n id?: string\r\n label?: string\r\n schema: JSONSchema6\r\n formOverrides?: IFormOverride[]\r\n formFieldOverrides?: IFormFieldOverride[][]\r\n}): ReactElement => {\r\n const form = formOverrides === undefined && formFieldOverrides === undefined\r\n ? schemaToFormObject(schema)\r\n : overridesAndSchemaToFormObject({\r\n formOverrides,\r\n formFieldOverrides,\r\n schema\r\n }) // Convert the JSON schema to a form object\r\n if (id !== undefined) {\r\n form.id = id\r\n }\r\n if (label !== undefined) {\r\n form.label = label\r\n }\r\n\r\n return (\r\n <>{\r\n form !== undefined\r\n ? <FormCreator form={form} {...props} />\r\n : <div className='p-5 bg-slate-200 text-xs'><Loader className='pt-20' /></div>\r\n }</>\r\n\r\n )\r\n}\r\n\r\nconst seedFormValuesWithDefaults = (form: IForm): IFormValues => {\r\n const formValues: IFormValues = {}\r\n getFieldsFromFormSection(form).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, formValues) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, formValues)\r\n }\r\n })\r\n return formValues\r\n}\r\n\r\nconst FormCreator = ({\r\n form,\r\n formValueState,\r\n note,\r\n error,\r\n onChange,\r\n className,\r\n defaultClassName = 'flex flex-col gap-8 flex-grow',\r\n urlNavigable = true,\r\n inputOverrides,\r\n schema,\r\n footer,\r\n header\r\n}: IFormCreatorProps): ReactElement => {\r\n const activeForm = copyAndAddPathToFields(form)\r\n const activeFormValues = structuredClone(formValueState?.[0] ?? {})\r\n getFieldsFromFormSection(activeForm).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, activeFormValues) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, activeFormValues)\r\n }\r\n })\r\n const [formValues, setFormValues] = formValueState ?? useState<IFormValues>(seedFormValuesWithDefaults(activeForm))\r\n\r\n activeForm.settings = {\r\n url_navigable: urlNavigable,\r\n ...activeForm.settings\r\n }\r\n\r\n return (\r\n <FormContext.Provider value={{\r\n form: activeForm,\r\n formValues,\r\n setFormValues,\r\n inputOverrides,\r\n schema,\r\n urlNavigable: activeForm.settings.url_navigable\r\n }}>\r\n {header ?? ''}\r\n <div className={utils.makeClassName({\r\n className: activeForm?.settings?.class_name,\r\n defaultClassName,\r\n extras: [className]\r\n })}>\r\n <FormHeader form={activeForm} note={note} error={error} />\r\n {\r\n activeForm?.fields !== undefined && activeForm.fields.length > 0 && activeForm.pages === undefined && activeForm.wizard_steps === undefined\r\n ? <FormStatus />\r\n : ''\r\n }\r\n <FormSection\r\n formSection={activeForm}\r\n onChange={onChange}\r\n />\r\n </div>\r\n {footer ?? ''}\r\n </FormContext.Provider>\r\n )\r\n}\r\n\r\nexport type IFormSectionStatus = Record<string, {\r\n completed: number\r\n total: number\r\n requiredTotal: number\r\n requiredCompleted: number\r\n valid: boolean\r\n}>\r\n\r\nexport default FormCreator\r\n"],"names":["React","utils"],"mappings":"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"}
@@ -2,7 +2,7 @@ import FieldCreator from '../Components/FieldCreator.js';
2
2
  import React__default from 'react';
3
3
 
4
4
  var FormFields = function (_a) {
5
- var fields = _a.fields, onChange = _a.onChange, _b = _a.className, className = _b === void 0 ? 'flex flex-col gap-2 flex-grow h-full' : _b;
5
+ var fields = _a.fields, onChange = _a.onChange, _b = _a.className, className = _b === void 0 ? 'flex flex-col gap-4 flex-grow h-full' : _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) {
@@ -1 +1 @@
1
- {"version":3,"file":"FormFields.js","sources":["../../../../../src/Form/Creator/FormFields.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\r\nimport { type IFormField, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst FormFields = ({\r\n fields,\r\n onChange,\r\n className = 'flex flex-col gap-2 flex-grow h-full'\r\n}: {\r\n fields?: IFormField[]\r\n onChange?: IValueChangeFn\r\n className?: string\r\n}): ReactElement => {\r\n return (\r\n <>\r\n {\r\n fields === undefined || fields.length < 1\r\n ? ''\r\n : <div className={className}>\r\n {\r\n fields?.map((field) => {\r\n return (\r\n <FieldCreator onChange={onChange} field={field} key={field.id} />\r\n )\r\n })\r\n }\r\n </div>\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default FormFields\r\n"],"names":["React"],"mappings":";;;AAIM,IAAA,UAAU,GAAG,UAAC,EAQnB,EAAA;QAPC,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,iBAAkD,EAAlD,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,sCAAsC,GAAA,EAAA;IAMlD,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;;;;"}
1
+ {"version":3,"file":"FormFields.js","sources":["../../../../../src/Form/Creator/FormFields.tsx"],"sourcesContent":["import FieldCreator from '@/Form/Components/FieldCreator'\r\nimport { type IFormField, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst FormFields = ({\r\n fields,\r\n onChange,\r\n className = 'flex flex-col gap-4 flex-grow h-full'\r\n}: {\r\n fields?: IFormField[]\r\n onChange?: IValueChangeFn\r\n className?: string\r\n}): ReactElement => {\r\n return (\r\n <>\r\n {\r\n fields === undefined || fields.length < 1\r\n ? ''\r\n : <div className={className}>\r\n {\r\n fields?.map((field) => {\r\n return (\r\n <FieldCreator onChange={onChange} field={field} key={field.id} />\r\n )\r\n })\r\n }\r\n </div>\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default FormFields\r\n"],"names":["React"],"mappings":";;;AAIM,IAAA,UAAU,GAAG,UAAC,EAQnB,EAAA;QAPC,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,iBAAkD,EAAlD,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,sCAAsC,GAAA,EAAA;IAMlD,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;;;;"}
@@ -6,7 +6,8 @@ import { Markdown } from '../../../node_modules/react-markdown/lib/index.js';
6
6
  var FormHeader = function (_a) {
7
7
  var form = _a.form, note = _a.note, error = _a.error;
8
8
  return (React__default.createElement("div", { className: 'flex flex-col gap-4' },
9
- React__default.createElement("h2", { className: 'text-2xl font-bold' }, form.label),
9
+ React__default.createElement("h2", { className: 'text-2xl font-bold' },
10
+ React__default.createElement(InlineMarkdown, null, form.label)),
10
11
  note !== undefined
11
12
  ? React__default.createElement(Markdown, null, note)
12
13
  : null,
@@ -1 +1 @@
1
- {"version":3,"file":"FormHeader.js","sources":["../../../../../src/Form/Creator/FormHeader.tsx"],"sourcesContent":["import InlineMarkdown from '@/Form/Components/InlineMarkdown'\r\nimport type { IForm } from '@/library'\r\nimport { ExclamationTriangleIcon } from '@radix-ui/react-icons'\r\nimport React, { type ReactElement } from 'react'\r\nimport Markdown from 'react-markdown'\r\n\r\nconst FormHeader = ({\r\n form, note, error\r\n\r\n}: {\r\n form: IForm\r\n note?: string\r\n error?: string\r\n}): ReactElement => {\r\n return (\r\n <div className='flex flex-col gap-4'>\r\n <h2 className='text-2xl font-bold'>{form.label}</h2>\r\n {note !== undefined\r\n ? <Markdown>{note}</Markdown>\r\n : null}\r\n {error !== undefined\r\n ? <p className='pb-4 text-rose-800'><ExclamationTriangleIcon className='inline mr-2' /> <InlineMarkdown>{error}</InlineMarkdown></p>\r\n : null}\r\n {form.description !== undefined\r\n ? <Markdown>{form.description}</Markdown>\r\n : null}\r\n </div>\r\n )\r\n}\r\n\r\nexport default FormHeader\r\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,UAAU,GAAG,UAAC,EAOnB,EAAA;AANC,IAAA,IAAA,IAAI,UAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;AAOjB,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA;AAClC,QAAAA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,oBAAoB,IAAE,IAAI,CAAC,KAAK,CAAM;AACnD,QAAA,IAAI,KAAK;AACR,cAAEA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,IAAA,EAAE,IAAI;AACjB,cAAE,IAAI;AACP,QAAA,KAAK,KAAK;AACT,cAAEA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oBAAoB,EAAA;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,uBAAuB,EAAA,EAAC,SAAS,EAAC,aAAa,EAAG,CAAA;;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,IAAA,EAAE,KAAK,CAAkB;AAChI,cAAE,IAAI;QACP,IAAI,CAAC,WAAW,KAAK;AACpB,cAAEA,cAAC,CAAA,aAAA,CAAA,QAAQ,QAAE,IAAI,CAAC,WAAW;AAC7B,cAAE,IAAI,CACJ;AAEV;;;;"}
1
+ {"version":3,"file":"FormHeader.js","sources":["../../../../../src/Form/Creator/FormHeader.tsx"],"sourcesContent":["import InlineMarkdown from '@/Form/Components/InlineMarkdown'\r\nimport type { IForm } from '@/library'\r\nimport { ExclamationTriangleIcon } from '@radix-ui/react-icons'\r\nimport React, { type ReactElement } from 'react'\r\nimport Markdown from 'react-markdown'\r\n\r\nconst FormHeader = ({\r\n form, note, error\r\n\r\n}: {\r\n form: IForm\r\n note?: string\r\n error?: string\r\n}): ReactElement => {\r\n return (\r\n <div className='flex flex-col gap-4'>\r\n <h2 className='text-2xl font-bold'><InlineMarkdown>{form.label}</InlineMarkdown></h2>\r\n {note !== undefined\r\n ? <Markdown>{note}</Markdown>\r\n : null}\r\n {error !== undefined\r\n ? <p className='pb-4 text-rose-800'><ExclamationTriangleIcon className='inline mr-2' /> <InlineMarkdown>{error}</InlineMarkdown></p>\r\n : null}\r\n {form.description !== undefined\r\n ? <Markdown>{form.description}</Markdown>\r\n : null}\r\n </div>\r\n )\r\n}\r\n\r\nexport default FormHeader\r\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,UAAU,GAAG,UAAC,EAOnB,EAAA;AANC,IAAA,IAAA,IAAI,UAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;AAOjB,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA;QAClCA,cAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,SAAS,EAAC,oBAAoB,EAAA;AAAC,YAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAE,IAAA,EAAA,IAAI,CAAC,KAAK,CAAkB,CAAK;AACpF,QAAA,IAAI,KAAK;AACR,cAAEA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,IAAA,EAAE,IAAI;AACjB,cAAE,IAAI;AACP,QAAA,KAAK,KAAK;AACT,cAAEA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oBAAoB,EAAA;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,uBAAuB,EAAA,EAAC,SAAS,EAAC,aAAa,EAAG,CAAA;;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,IAAA,EAAE,KAAK,CAAkB;AAChI,cAAE,IAAI;QACP,IAAI,CAAC,WAAW,KAAK;AACpB,cAAEA,cAAC,CAAA,aAAA,CAAA,QAAQ,QAAE,IAAI,CAAC,WAAW;AAC7B,cAAE,IAAI,CACJ;AAEV;;;;"}
@@ -35,7 +35,7 @@ var FormSection = function (_a) {
35
35
  ? React__default.createElement(WizardLayout, { sections: wizardSteps, onChange: onChange, level: level })
36
36
  : hasPages
37
37
  ? React__default.createElement(PageLayout, { sections: pages, onChange: onChange, level: level })
38
- : React__default.createElement(FormFields, { fields: fields, onChange: onChange, className: level === 0 ? 'flex flex-col gap-2' : undefined })));
38
+ : React__default.createElement(FormFields, { fields: fields, onChange: onChange, className: level === 0 ? 'flex flex-col gap-8' : undefined })));
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 IFormSection, type IValueChangeFn } from '@/Form/Creator/FormCreatorTypes'\r\nimport FormFields from '@/Form/Creator/FormFields'\r\nimport PageLayout from '@/Form/Creator/Page'\r\nimport WizardLayout from '@/Form/Creator/Wizard'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst FormSection = ({\r\n formSection,\r\n onChange,\r\n level = 0,\r\n inputOverrides\r\n}: {\r\n formSection?: IFormSection\r\n onChange?: IValueChangeFn\r\n level?: number\r\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\r\n\r\n}): ReactElement => {\r\n if (formSection === undefined) {\r\n return <></>\r\n }\r\n const pages = (formSection?.pages ?? []).slice()\r\n const fields = (formSection?.fields ?? []).slice()\r\n const wizardSteps = (formSection?.wizard_steps ?? []).slice()\r\n const hasPages = pages.length > 0\r\n const hasFields = fields.length > 0\r\n const hasWizardSteps = wizardSteps.length > 0\r\n if (hasPages && hasFields) {\r\n pages.unshift({\r\n id: 'default',\r\n label: 'Default',\r\n fields\r\n })\r\n }\r\n if ((hasPages || hasFields) && hasWizardSteps) {\r\n wizardSteps.unshift({\r\n id: 'default',\r\n order: -10,\r\n label: 'Default',\r\n pages,\r\n fields\r\n })\r\n }\r\n return (\r\n <>\r\n {\r\n hasWizardSteps\r\n ? <WizardLayout sections={wizardSteps} onChange={onChange} level={level} />\r\n\r\n : hasPages\r\n ? <PageLayout sections={pages} onChange={onChange} level={level} />\r\n : <FormFields\r\n fields={fields} onChange={onChange}\r\n className={level === 0 ? 'flex flex-col gap-2' : undefined}\r\n\r\n />\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default FormSection\r\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,EACX,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAClC,SAAS,EAAE,KAAK,KAAK,CAAC,GAAG,qBAAqB,GAAG,SAAS,EAAA,CAExD,CAET;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'\r\nimport FormFields from '@/Form/Creator/FormFields'\r\nimport PageLayout from '@/Form/Creator/Page'\r\nimport WizardLayout from '@/Form/Creator/Wizard'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst FormSection = ({\r\n formSection,\r\n onChange,\r\n level = 0,\r\n inputOverrides\r\n}: {\r\n formSection?: IFormSection\r\n onChange?: IValueChangeFn\r\n level?: number\r\n inputOverrides?: Record<string, React.FC<IFieldInputProps>>\r\n\r\n}): ReactElement => {\r\n if (formSection === undefined) {\r\n return <></>\r\n }\r\n const pages = (formSection?.pages ?? []).slice()\r\n const fields = (formSection?.fields ?? []).slice()\r\n const wizardSteps = (formSection?.wizard_steps ?? []).slice()\r\n const hasPages = pages.length > 0\r\n const hasFields = fields.length > 0\r\n const hasWizardSteps = wizardSteps.length > 0\r\n if (hasPages && hasFields) {\r\n pages.unshift({\r\n id: 'default',\r\n label: 'Default',\r\n fields\r\n })\r\n }\r\n if ((hasPages || hasFields) && hasWizardSteps) {\r\n wizardSteps.unshift({\r\n id: 'default',\r\n order: -10,\r\n label: 'Default',\r\n pages,\r\n fields\r\n })\r\n }\r\n return (\r\n <>\r\n {\r\n hasWizardSteps\r\n ? <WizardLayout sections={wizardSteps} onChange={onChange} level={level} />\r\n\r\n : hasPages\r\n ? <PageLayout sections={pages} onChange={onChange} level={level} />\r\n : <FormFields\r\n fields={fields} onChange={onChange}\r\n className={level === 0 ? 'flex flex-col gap-8' : undefined}\r\n\r\n />\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default FormSection\r\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,EACX,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAClC,SAAS,EAAE,KAAK,KAAK,CAAC,GAAG,qBAAqB,GAAG,SAAS,EAAA,CAExD,CAET;AAEX;;;;"}
@@ -79,13 +79,13 @@ var WizardNavLargeScreen = function (_a) {
79
79
  React__default.createElement(CaretRightIcon, { className: 'w-4 h-6 fill-slate-300 stroke-slate-300' }))
80
80
  : '',
81
81
  ((_a = form === null || form === void 0 ? void 0 : form.settings) === null || _a === void 0 ? void 0 : _a.show_progress)
82
- ? React__default.createElement(React__default.Fragment, null,
83
- React__default.createElement("p", { className: 'text-xs mt-4' }, (_b = sectionStatus[p.id]) === null || _b === void 0 ? void 0 :
82
+ ? React__default.createElement("div", { className: 'flex flex-col gap-2 text-xs' },
83
+ React__default.createElement("p", null, (_b = sectionStatus[p.id]) === null || _b === void 0 ? void 0 :
84
84
  _b.completed,
85
85
  " of ", (_c = sectionStatus[p.id]) === null || _c === void 0 ? void 0 :
86
86
  _c.total,
87
87
  " total"),
88
- React__default.createElement("p", { className: 'text-xs mt-2' }, (_d = sectionStatus[p.id]) === null || _d === void 0 ? void 0 :
88
+ React__default.createElement("p", null, (_d = sectionStatus[p.id]) === null || _d === void 0 ? void 0 :
89
89
  _d.requiredCompleted,
90
90
  " of ", (_e = sectionStatus[p.id]) === null || _e === void 0 ? void 0 :
91
91
  _e.requiredTotal,
@@ -1 +1 @@
1
- {"version":3,"file":"Wizard.js","sources":["../../../../../src/Form/Creator/Wizard.tsx"],"sourcesContent":["import { calculateSectionStatus } from '@/utils/validators'\r\nimport { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\r\nimport { type IFormSection, type IWizardStep } from '@/Form/Creator/FormCreatorTypes'\r\nimport { type IPageLayoutProps, ActivePage, type INavProps } from '@/Form/Creator/Page'\r\nimport { SelectInput, utils } from '@axdspub/axiom-ui-utilities'\r\nimport { CaretRightIcon, CaretLeftIcon } from '@radix-ui/react-icons'\r\nimport React, { type ReactElement } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport NavElement from '@/Form/Creator/NavElement'\r\nimport { FormSectionContextProvider, useFormSectionContext } from '@/Form/Creator/FormSectionContextProvider'\r\nimport { useFormContext } from '@/Form/Creator/FormContextProvider'\r\nimport { useAtomValue } from 'jotai'\r\nimport layoutAtom from '@/utils/responsive/layoutState'\r\n\r\nconst sortByOrder = (a: IWizardStep, b: IWizardStep): number => {\r\n const aOrder = a.order ?? Infinity\r\n const bOrder = b.order ?? Infinity\r\n return aOrder - bOrder\r\n}\r\n\r\nexport const WizardNavMobile = ({\r\n sections,\r\n sectionStatus,\r\n level\r\n}: INavProps): ReactElement => {\r\n const { activeId, setActiveId, path } = useFormSectionContext()\r\n const { urlNavigable } = useFormContext()\r\n const steps = ((sections ?? []) as IWizardStep[]).sort(sortByOrder)\r\n const stepsMap = Object.fromEntries(steps.map(p => [p.id, p]))\r\n const currentStep = stepsMap[activeId ?? ''] ?? steps[0]\r\n const currentIndex = steps.indexOf(currentStep)\r\n const nextIndex = currentIndex + 1\r\n const prevIndex = currentIndex - 1\r\n // const params = (useParams()['*'] ?? '').split('/')\r\n // const path = params.slice(0, level).join('/')\r\n return (\r\n <div className='flex flex-row gap-4 justify-center items-center'>{\r\n prevIndex >= 0\r\n ? <NavElement\r\n className='p-2 bg-none border-none text-sm hover:bg-slate-none'\r\n path={path}\r\n id={steps[prevIndex].id}\r\n navigable={urlNavigable ?? true}\r\n onClick={() => { setActiveId(steps[prevIndex].id) }}\r\n >\r\n <CaretLeftIcon className='inline w-8 h-8' />\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'p-2 bg-none border-none text-sm text-slate-400 '\r\n })}><CaretLeftIcon className='inline w-8 h-8' /></span>\r\n }\r\n <div className='flex-grow'>\r\n <SelectInput\r\n includePrompt={false}\r\n id='wizard-step-select'\r\n testId='wizard-step-select'\r\n className='shadow-lg'\r\n value={activeId ?? ''}\r\n onChange={(e) => {\r\n setActiveId(e?.value)\r\n }}\r\n options={steps.map(p => ({\r\n value: p.id,\r\n label: p.label ?? p.id\r\n }))}\r\n />\r\n </div>\r\n\r\n {\r\n nextIndex < steps.length\r\n ? <NavElement\r\n path={path}\r\n id={steps[nextIndex].id}\r\n navigable={urlNavigable ?? true}\r\n className='p-2 bg-none border-none text-sm hover:bg-none'\r\n onClick={() => { setActiveId(steps[nextIndex].id) }}\r\n >\r\n <CaretRightIcon className='inline w-8 h-8' />\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'p-2 bg-none border-none text-sm text-slate-400'\r\n })}><CaretRightIcon className='inline w-8 h-8' /></span>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport const WizardNav = (props: INavProps): ReactElement => {\r\n const layout = useAtomValue(layoutAtom)\r\n return layout.size === 'sm'\r\n ? <WizardNavMobile {...props} />\r\n : <WizardNavLargeScreen {...props} />\r\n}\r\n\r\nexport const WizardNavLargeScreen = ({\r\n sections,\r\n sectionStatus,\r\n level\r\n}: INavProps): ReactElement => {\r\n const { form } = useFormContext()\r\n const steps = ((sections ?? []) as IWizardStep[]).sort(sortByOrder)\r\n const { activeId, setActiveId, path } = useFormSectionContext()\r\n const { urlNavigable } = useFormContext()\r\n\r\n return (\r\n <div className='relative z-0'>\r\n <div className='h-[2px] top-8 bg-slate-300 absolute left-0 right-0 z-0' />\r\n <div className='flex flex-row gap-4 py-4 max-w-full overflow-x-auto overflow-y-visible'>\r\n {\r\n steps.map((p, i) => {\r\n return (\r\n <div key={p.id} className='flex-grow first:flex-shrink last:flex-shrink text-center first:text-left first:ml-4 last:text-right last:mr-4 z-10 relative'>\r\n <NavElement\r\n\r\n path={path}\r\n id={p.id}\r\n navigable={urlNavigable ?? true}\r\n className={`whitespace-nowrap px-8 bg-white z-20 border-none text-sm ${activeId === p.id ? 'bg-slate-600 text-white' : 'hover:bg-slate-100'}`}\r\n onClick={() => { setActiveId(p.id) }}\r\n >\r\n {p.label}\r\n </NavElement>\r\n {\r\n i < steps.length - 1 && steps.length > 1\r\n ? <span className='hidden absolute right-0 top-2 w-4 h-full bg-white'><CaretRightIcon className='w-4 h-6 fill-slate-300 stroke-slate-300' /></span>\r\n : ''\r\n }\r\n {\r\n form?.settings?.show_progress\r\n ? <>\r\n <p className='text-xs mt-4'>{sectionStatus[p.id]?.completed} of {sectionStatus[p.id]?.total} total</p>\r\n <p className='text-xs mt-2'>{sectionStatus[p.id]?.requiredCompleted} of {sectionStatus[p.id]?.requiredTotal} required</p>\r\n </>\r\n : ''\r\n }\r\n\r\n </div>\r\n )\r\n })\r\n }</div>\r\n </div>\r\n )\r\n}\r\n\r\nexport const WizardNavSmall = ({\r\n sections,\r\n sectionStatus,\r\n level\r\n}: {\r\n sections?: IFormSection[]\r\n sectionStatus: IFormSectionStatus\r\n level: number\r\n}): ReactElement => {\r\n const { activeId, setActiveId, path } = useFormSectionContext()\r\n const { urlNavigable } = useFormContext()\r\n const steps = ((sections ?? []) as IWizardStep[]).sort(sortByOrder)\r\n const stepsMap = Object.fromEntries(steps.map(p => [p.id, p]))\r\n const currentStep = stepsMap[activeId ?? ''] ?? steps[0]\r\n const currentIndex = steps.indexOf(currentStep)\r\n const nextIndex = currentIndex + 1\r\n const prevIndex = currentIndex - 1\r\n // const params = (useParams()['*'] ?? '').split('/')\r\n // const path = params.slice(0, level).join('/')\r\n return (\r\n <div className='flex flex-row gap-4 justify-end'>{\r\n prevIndex >= 0\r\n ? <NavElement\r\n className='px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700'\r\n path={path}\r\n id={steps[prevIndex].id}\r\n navigable={urlNavigable ?? true}\r\n onClick={() => { setActiveId(steps[prevIndex].id) }}\r\n >\r\n <CaretLeftIcon className='inline' /> Previous\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'px-4 bg-white border-none text-sm text-slate-400'\r\n })}>Previous</span>\r\n }\r\n {\r\n nextIndex < steps.length\r\n ? <NavElement\r\n path={path}\r\n id={steps[nextIndex].id}\r\n navigable={urlNavigable ?? true}\r\n className='px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700'\r\n onClick={() => { setActiveId(steps[nextIndex].id) }}\r\n >\r\n Next <CaretRightIcon className='inline' />\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'px-4 bg-white border-none text-sm text-slate-400'\r\n })}>Next</span>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport interface IWizardLayoutProps extends IPageLayoutProps {\r\n SmallNavComponent?: React.FC<{\r\n level: number\r\n sections?: IFormSection[]\r\n sectionStatus: IFormSectionStatus\r\n className?: string\r\n }>\r\n}\r\n\r\nconst WizardLayout = (props: IPageLayoutProps): ReactElement => {\r\n if (props.sections === undefined) {\r\n return <></>\r\n }\r\n const { urlNavigable } = useFormContext()\r\n const params = (useParams()['*'] ?? '').split('/')\r\n const path = params.slice(0, props.level).join('/')\r\n const id = urlNavigable\r\n ? (params[props.level] && params[props.level] !== '') ? params[props.level] : (props.sections[0]?.id ?? null)\r\n : props.sections[0]?.id ?? null\r\n\r\n return (\r\n <FormSectionContextProvider path={path} id={id}>\r\n <WizardLayoutContent {...props} />\r\n </FormSectionContextProvider>\r\n )\r\n}\r\n\r\nconst WizardLayoutContent = ({\r\n sections,\r\n onChange,\r\n ContentComponent = ActivePage,\r\n NavComponent = WizardNav,\r\n SmallNavComponent = WizardNavSmall,\r\n className = 'flex flex-col gap-4 pt-8 flex-grow h-full',\r\n level\r\n}: IWizardLayoutProps): ReactElement => {\r\n if (sections === undefined) {\r\n return <></>\r\n }\r\n const { formValues } = useFormContext()\r\n const { activeId } = useFormSectionContext()\r\n const formSection = sections?.find(s => s.id === activeId) ?? sections?.[0]\r\n const sectionStatus = calculateSectionStatus(sections, formValues)\r\n\r\n return (\r\n\r\n <div className={className}>\r\n <NavComponent\r\n sections={sections}\r\n sectionStatus={sectionStatus}\r\n level={level}\r\n />\r\n <ContentComponent\r\n formSection={formSection}\r\n sectionStatus={sectionStatus}\r\n onChange={onChange}\r\n level={level}\r\n />\r\n <SmallNavComponent\r\n sections={sections}\r\n sectionStatus={sectionStatus}\r\n level={level}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default WizardLayout\r\n"],"names":["React","utils","SelectInput"],"mappings":";;;;;;;;;;;;;AAcA,IAAM,WAAW,GAAG,UAAC,CAAc,EAAE,CAAc,EAAA;;IACjD,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,QAAQ;IAClC,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,QAAQ;IAClC,OAAO,MAAM,GAAG,MAAM;AACxB,CAAC;AAEM,IAAM,eAAe,GAAG,UAAC,EAIpB,EAAA;;AAHV,IAAA,IAAA,QAAQ,cAAA,CACR,CAAa,EAAA,CAAA,aAAA,CAAA,CACR,EAAA,CAAA;AAEC,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,KAAA,IAAA,IAAR,QAAQ,KAAR,MAAA,GAAA,QAAQ,GAAI,EAAE,EAAoB,IAAI,CAAC,WAAW,CAAC;IACnE,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,iDAAiD,EAAA;AAC9D,QAAA,SAAS,IAAI;cACTA,6BAAC,UAAU,EAAA,EACT,SAAS,EAAC,sDAAsD,EAChE,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,EAAC,EAAA,SAAS,EAAC,gBAAgB,GAAG;AAElD,cAAEA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACzC,oBAAA,SAAS,EAAE;iBACZ,CAAC,EAAA;AAAE,gBAAAD,cAAA,CAAA,aAAA,CAAC,aAAa,EAAC,EAAA,SAAS,EAAC,gBAAgB,GAAG,CAAO;QAEzDA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA;AAC1B,YAAAA,cAAA,CAAA,aAAA,CAACE,MAAW,EAAA,EACV,aAAa,EAAE,KAAK,EACpB,EAAE,EAAC,oBAAoB,EACvB,MAAM,EAAC,oBAAoB,EAC3B,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,QAAQ,aAAR,QAAQ,KAAA,MAAA,GAAR,QAAQ,GAAI,EAAE,EACrB,QAAQ,EAAE,UAAC,CAAC,EAAA;oBACV,WAAW,CAAC,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC;iBACtB,EACD,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;;AAAI,oBAAA,QAAC;wBACvB,KAAK,EAAE,CAAC,CAAC,EAAE;wBACX,KAAK,EAAE,MAAA,CAAC,CAAC,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,CAAC,CAAC;AACrB,qBAAA;AAAC,iBAAA,CAAC,GACD,CACE;QAGJ,SAAS,GAAG,KAAK,CAAC;cACdF,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,gDAAgD,EAC1D,OAAO,EAAE,YAAA,EAAQ,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAA,EAAE,EAAA;AAEjD,gBAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAC,EAAA,SAAS,EAAC,gBAAgB,GAAG;AAEnD,cAAEA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACzC,oBAAA,SAAS,EAAE;iBACZ,CAAC,EAAA;gBAAED,cAAC,CAAA,aAAA,CAAA,cAAc,IAAC,SAAS,EAAC,gBAAgB,EAAG,CAAA,CAAO,CAExD;AAEZ;AAEO,IAAM,SAAS,GAAG,UAAC,KAAgB,EAAA;AACxC,IAAA,IAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC;AACvC,IAAA,OAAO,MAAM,CAAC,IAAI,KAAK;AACrB,UAAEA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAI;AAChC,UAAEA,cAAC,CAAA,aAAA,CAAA,oBAAoB,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,EAAI;AACzC;AAEO,IAAM,oBAAoB,GAAG,UAAC,EAIzB,EAAA;AAHV,IAAA,IAAA,QAAQ,cAAA,CACR,CAAA,aAAa,GAAA,EAAA,CAAA,aAAA,CAAA,CACR,EAAA,CAAA;AAEG,IAAA,IAAA,IAAI,GAAK,cAAc,EAAE,KAArB;AACZ,IAAA,IAAM,KAAK,GAAI,CAAC,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,MAAA,GAAA,QAAQ,GAAI,EAAE,EAAoB,IAAI,CAAC,WAAW,CAAC;AAC7D,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,cAAc,EAAA;QAC3BA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wDAAwD,EAAG,CAAA;QAC1EA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,yEAAyE,EAExF,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,EAET,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,2DAA4D,CAAA,MAAA,CAAA,QAAQ,KAAK,CAAC,CAAC,EAAE,GAAG,yBAAyB,GAAG,oBAAoB,CAAE,EAC7I,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;gBAGN,CAAA,CAAA,EAAA,GAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,aAAa;AAC3B,sBAAEA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;wBACAA,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;+BAAE,SAAS;AAAM,4BAAA,MAAA,EAAA,CAAA,EAAA,GAAA,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;+BAAE,KAAK;AAAW,4BAAA,QAAA,CAAA;wBACtGA,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;+BAAE,iBAAiB;AAAM,4BAAA,MAAA,EAAA,CAAA,EAAA,GAAA,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA;+BAAE,aAAa;wCAAc;AAE3H,sBAAE,EAAE,CAGJ;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,KAAA,IAAA,IAAR,QAAQ,KAAR,MAAA,GAAA,QAAQ,GAAI,EAAE,EAAoB,IAAI,CAAC,WAAW,CAAC;IACnE,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,EAAuD,GAAA,EAAA,CAAA,SAAA,EAAvD,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,2CAA2C,GAAA,EAAA,EACvD,KAAK,GAAA,EAAA,CAAA,KAAA;AAEL,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,QAAA,OAAOA,2DAAK;;AAEN,IAAA,IAAA,UAAU,GAAK,cAAc,EAAE,WAArB;AACV,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;IAC3E,IAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,EAAE,UAAU,CAAC;AAElE,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
+ {"version":3,"file":"Wizard.js","sources":["../../../../../src/Form/Creator/Wizard.tsx"],"sourcesContent":["import { calculateSectionStatus } from '@/utils/validators'\r\nimport { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\r\nimport { type IFormSection, type IWizardStep } from '@/Form/Creator/FormCreatorTypes'\r\nimport { type IPageLayoutProps, ActivePage, type INavProps } from '@/Form/Creator/Page'\r\nimport { SelectInput, utils } from '@axdspub/axiom-ui-utilities'\r\nimport { CaretRightIcon, CaretLeftIcon } from '@radix-ui/react-icons'\r\nimport React, { type ReactElement } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport NavElement from '@/Form/Creator/NavElement'\r\nimport { FormSectionContextProvider, useFormSectionContext } from '@/Form/Creator/FormSectionContextProvider'\r\nimport { useFormContext } from '@/Form/Creator/FormContextProvider'\r\nimport { useAtomValue } from 'jotai'\r\nimport layoutAtom from '@/utils/responsive/layoutState'\r\n\r\nconst sortByOrder = (a: IWizardStep, b: IWizardStep): number => {\r\n const aOrder = a.order ?? Infinity\r\n const bOrder = b.order ?? Infinity\r\n return aOrder - bOrder\r\n}\r\n\r\nexport const WizardNavMobile = ({\r\n sections,\r\n sectionStatus,\r\n level\r\n}: INavProps): ReactElement => {\r\n const { activeId, setActiveId, path } = useFormSectionContext()\r\n const { urlNavigable } = useFormContext()\r\n const steps = ((sections ?? []) as IWizardStep[]).sort(sortByOrder)\r\n const stepsMap = Object.fromEntries(steps.map(p => [p.id, p]))\r\n const currentStep = stepsMap[activeId ?? ''] ?? steps[0]\r\n const currentIndex = steps.indexOf(currentStep)\r\n const nextIndex = currentIndex + 1\r\n const prevIndex = currentIndex - 1\r\n // const params = (useParams()['*'] ?? '').split('/')\r\n // const path = params.slice(0, level).join('/')\r\n return (\r\n <div className='flex flex-row gap-4 justify-center items-center'>{\r\n prevIndex >= 0\r\n ? <NavElement\r\n className='p-2 bg-none border-none text-sm hover:bg-slate-none'\r\n path={path}\r\n id={steps[prevIndex].id}\r\n navigable={urlNavigable ?? true}\r\n onClick={() => { setActiveId(steps[prevIndex].id) }}\r\n >\r\n <CaretLeftIcon className='inline w-8 h-8' />\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'p-2 bg-none border-none text-sm text-slate-400 '\r\n })}><CaretLeftIcon className='inline w-8 h-8' /></span>\r\n }\r\n <div className='flex-grow'>\r\n <SelectInput\r\n includePrompt={false}\r\n id='wizard-step-select'\r\n testId='wizard-step-select'\r\n className='shadow-lg'\r\n value={activeId ?? ''}\r\n onChange={(e) => {\r\n setActiveId(e?.value)\r\n }}\r\n options={steps.map(p => ({\r\n value: p.id,\r\n label: p.label ?? p.id\r\n }))}\r\n />\r\n </div>\r\n\r\n {\r\n nextIndex < steps.length\r\n ? <NavElement\r\n path={path}\r\n id={steps[nextIndex].id}\r\n navigable={urlNavigable ?? true}\r\n className='p-2 bg-none border-none text-sm hover:bg-none'\r\n onClick={() => { setActiveId(steps[nextIndex].id) }}\r\n >\r\n <CaretRightIcon className='inline w-8 h-8' />\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'p-2 bg-none border-none text-sm text-slate-400'\r\n })}><CaretRightIcon className='inline w-8 h-8' /></span>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport const WizardNav = (props: INavProps): ReactElement => {\r\n const layout = useAtomValue(layoutAtom)\r\n return layout.size === 'sm'\r\n ? <WizardNavMobile {...props} />\r\n : <WizardNavLargeScreen {...props} />\r\n}\r\n\r\nexport const WizardNavLargeScreen = ({\r\n sections,\r\n sectionStatus,\r\n level\r\n}: INavProps): ReactElement => {\r\n const { form } = useFormContext()\r\n const steps = ((sections ?? []) as IWizardStep[]).sort(sortByOrder)\r\n const { activeId, setActiveId, path } = useFormSectionContext()\r\n const { urlNavigable } = useFormContext()\r\n\r\n return (\r\n <div className='relative z-0'>\r\n <div className='h-[2px] top-8 bg-slate-300 absolute left-0 right-0 z-0' />\r\n <div className='flex flex-row gap-4 py-4 max-w-full overflow-x-auto overflow-y-visible'>\r\n {\r\n steps.map((p, i) => {\r\n return (\r\n <div key={p.id} className='flex-grow first:flex-shrink last:flex-shrink text-center first:text-left first:ml-4 last:text-right last:mr-4 z-10 relative'>\r\n <NavElement\r\n\r\n path={path}\r\n id={p.id}\r\n navigable={urlNavigable ?? true}\r\n className={`whitespace-nowrap px-8 bg-white z-20 border-none text-sm ${activeId === p.id ? 'bg-slate-600 text-white' : 'hover:bg-slate-100'}`}\r\n onClick={() => { setActiveId(p.id) }}\r\n >\r\n {p.label}\r\n </NavElement>\r\n {\r\n i < steps.length - 1 && steps.length > 1\r\n ? <span className='hidden absolute right-0 top-2 w-4 h-full bg-white'><CaretRightIcon className='w-4 h-6 fill-slate-300 stroke-slate-300' /></span>\r\n : ''\r\n }\r\n {\r\n form?.settings?.show_progress\r\n ? <div className='flex flex-col gap-2 text-xs'>\r\n <p>{sectionStatus[p.id]?.completed} of {sectionStatus[p.id]?.total} total</p>\r\n <p>{sectionStatus[p.id]?.requiredCompleted} of {sectionStatus[p.id]?.requiredTotal} required</p>\r\n </div>\r\n : ''\r\n }\r\n\r\n </div>\r\n )\r\n })\r\n }</div>\r\n </div>\r\n )\r\n}\r\n\r\nexport const WizardNavSmall = ({\r\n sections,\r\n sectionStatus,\r\n level\r\n}: {\r\n sections?: IFormSection[]\r\n sectionStatus: IFormSectionStatus\r\n level: number\r\n}): ReactElement => {\r\n const { activeId, setActiveId, path } = useFormSectionContext()\r\n const { urlNavigable } = useFormContext()\r\n const steps = ((sections ?? []) as IWizardStep[]).sort(sortByOrder)\r\n const stepsMap = Object.fromEntries(steps.map(p => [p.id, p]))\r\n const currentStep = stepsMap[activeId ?? ''] ?? steps[0]\r\n const currentIndex = steps.indexOf(currentStep)\r\n const nextIndex = currentIndex + 1\r\n const prevIndex = currentIndex - 1\r\n // const params = (useParams()['*'] ?? '').split('/')\r\n // const path = params.slice(0, level).join('/')\r\n return (\r\n <div className='flex flex-row gap-4 justify-end'>{\r\n prevIndex >= 0\r\n ? <NavElement\r\n className='px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700'\r\n path={path}\r\n id={steps[prevIndex].id}\r\n navigable={urlNavigable ?? true}\r\n onClick={() => { setActiveId(steps[prevIndex].id) }}\r\n >\r\n <CaretLeftIcon className='inline' /> Previous\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'px-4 bg-white border-none text-sm text-slate-400'\r\n })}>Previous</span>\r\n }\r\n {\r\n nextIndex < steps.length\r\n ? <NavElement\r\n path={path}\r\n id={steps[nextIndex].id}\r\n navigable={urlNavigable ?? true}\r\n className='px-4 bg-slate-600 text-white border-none text-sm hover:bg-slate-700'\r\n onClick={() => { setActiveId(steps[nextIndex].id) }}\r\n >\r\n Next <CaretRightIcon className='inline' />\r\n </NavElement>\r\n : <span className={utils.createButtonClass({\r\n className: 'px-4 bg-white border-none text-sm text-slate-400'\r\n })}>Next</span>\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport interface IWizardLayoutProps extends IPageLayoutProps {\r\n SmallNavComponent?: React.FC<{\r\n level: number\r\n sections?: IFormSection[]\r\n sectionStatus: IFormSectionStatus\r\n className?: string\r\n }>\r\n}\r\n\r\nconst WizardLayout = (props: IPageLayoutProps): ReactElement => {\r\n if (props.sections === undefined) {\r\n return <></>\r\n }\r\n const { urlNavigable } = useFormContext()\r\n const params = (useParams()['*'] ?? '').split('/')\r\n const path = params.slice(0, props.level).join('/')\r\n const id = urlNavigable\r\n ? (params[props.level] && params[props.level] !== '') ? params[props.level] : (props.sections[0]?.id ?? null)\r\n : props.sections[0]?.id ?? null\r\n\r\n return (\r\n <FormSectionContextProvider path={path} id={id}>\r\n <WizardLayoutContent {...props} />\r\n </FormSectionContextProvider>\r\n )\r\n}\r\n\r\nconst WizardLayoutContent = ({\r\n sections,\r\n onChange,\r\n ContentComponent = ActivePage,\r\n NavComponent = WizardNav,\r\n SmallNavComponent = WizardNavSmall,\r\n className = 'flex flex-col gap-4 pt-8 flex-grow h-full',\r\n level\r\n}: IWizardLayoutProps): ReactElement => {\r\n if (sections === undefined) {\r\n return <></>\r\n }\r\n const { formValues } = useFormContext()\r\n const { activeId } = useFormSectionContext()\r\n const formSection = sections?.find(s => s.id === activeId) ?? sections?.[0]\r\n const sectionStatus = calculateSectionStatus(sections, formValues)\r\n\r\n return (\r\n\r\n <div className={className}>\r\n <NavComponent\r\n sections={sections}\r\n sectionStatus={sectionStatus}\r\n level={level}\r\n />\r\n <ContentComponent\r\n formSection={formSection}\r\n sectionStatus={sectionStatus}\r\n onChange={onChange}\r\n level={level}\r\n />\r\n <SmallNavComponent\r\n sections={sections}\r\n sectionStatus={sectionStatus}\r\n level={level}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default WizardLayout\r\n"],"names":["React","utils","SelectInput"],"mappings":"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"}
@@ -1,5 +1,11 @@
1
+ import { __assign } from '../../node_modules/tslib/tslib.es6.js';
1
2
  import get from '../../node_modules/lodash-es/get.js';
2
3
 
4
+ var getFieldExtra = function (field, index) {
5
+ return field.multiple && (field.index !== undefined || index !== undefined)
6
+ ? "[".concat(index !== null && index !== void 0 ? index : field.index, "]")
7
+ : '';
8
+ };
3
9
  /**
4
10
  * Returns the JSON path for a given field
5
11
  *
@@ -11,20 +17,22 @@ var makeJsonPath = function (field, index) {
11
17
  if (field.type === 'object' && field.skip_path === true) {
12
18
  return undefined;
13
19
  }
14
- var fieldExtra = "".concat(field.multiple && (field.index !== undefined || index !== undefined) ? "[".concat(index !== null && index !== void 0 ? index : field.index, "]") : '');
15
20
  if (field.destPath !== undefined) {
16
- return "".concat(field.destPath).concat(fieldExtra);
21
+ return "".concat(field.destPath).concat(getFieldExtra(field, index));
17
22
  }
18
23
  else if (field.path === undefined) {
19
- return "".concat(field.id).concat(fieldExtra);
24
+ return "".concat(field.id).concat(getFieldExtra(field, index));
20
25
  }
21
26
  else {
22
27
  var path = field.path;
23
28
  var pathLen_1 = path.length;
24
- return field.path.map(function (f, i) { var _a; return (f.multiple && (i < (pathLen_1 - 1) || index !== undefined || f.index !== undefined)) ? "".concat(f.id).concat("[".concat((_a = index !== null && index !== void 0 ? index : f.index) !== null && _a !== void 0 ? _a : 0, "]")) : f.id; }).join('.');
29
+ return field.path.map(function (f, i) {
30
+ var defaultMultipleIndex = f.multiple && f.index === undefined && i < (pathLen_1 - 1) ? 0 : undefined;
31
+ return "".concat(f.id).concat("".concat(getFieldExtra(f, i >= pathLen_1 - 1 ? index : defaultMultipleIndex)));
32
+ }).join('.');
25
33
  }
26
34
  };
27
- /**
35
+ /** `
28
36
  * Returns the child fields of a given field
29
37
  *
30
38
  * @param field - The field to get the child fields from
@@ -79,6 +87,28 @@ function getObjectFieldValue(field, formValues, index) {
79
87
  }).flat(Infinity).filter(function (d) { return d !== undefined; });
80
88
  return Object.fromEntries(vals.map(function (v) { return [v.key, v.val]; }));
81
89
  }
90
+ function getValueFromRelativePath(field, path, formValues) {
91
+ var _a, _b, _c, _d, _e;
92
+ var backPath = (_c = (_b = (_a = path.match(/^\.+/)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
93
+ var fieldPathFields = (_d = field.path) !== null && _d !== void 0 ? _d : [];
94
+ var offset = field.type === 'object' && field.skip_path ? 0 : 1;
95
+ if (backPath > 0 && (fieldPathFields.length - offset) >= backPath) {
96
+ var targetField = fieldPathFields[fieldPathFields.length - backPath - offset];
97
+ var valueAtRoot = getFieldValue(__assign(__assign({}, targetField), { path: (_e = targetField.path) !== null && _e !== void 0 ? _e : fieldPathFields.slice(0, fieldPathFields.length - backPath - offset + 1) }), formValues, targetField.multiple ? targetField.index : undefined);
98
+ if (valueAtRoot === undefined || valueAtRoot === null) {
99
+ return undefined;
100
+ }
101
+ var pathToEval = path.replace(/^\.+/, '');
102
+ if (pathToEval === '') {
103
+ return valueAtRoot;
104
+ }
105
+ return get(valueAtRoot, pathToEval);
106
+ }
107
+ else {
108
+ // absolute path, get the field value from the field
109
+ return getValueFromPath(path, formValues);
110
+ }
111
+ }
82
112
  /**
83
113
  * Returns the value of a given field from the form values
84
114
  *
@@ -131,5 +161,5 @@ function getFieldsFromFormSection(formSection) {
131
161
  return fields;
132
162
  }
133
163
 
134
- export { getChildFields, getFieldValue, getFields, getFieldsFromFormSection, getPathFromField, getValueFromPath, makeJsonPath };
164
+ export { getChildFields, getFieldValue, getFields, getFieldsFromFormSection, getPathFromField, getValueFromPath, getValueFromRelativePath, makeJsonPath };
135
165
  //# sourceMappingURL=getters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getters.js","sources":["../../../../src/utils/getters.ts"],"sourcesContent":["import { type IFormSection, type IFormValues, type IValueType, type IFormField, type IObjectField } from '@/Form/Creator/FormCreatorTypes'\r\nimport { get } from 'lodash-es'\r\n\r\n/**\r\n * Returns the JSON path for a given field\r\n *\r\n * @param field - The field to get the JSON path for\r\n * @param index - The index of the field in the array (optional)\r\n * @returns The JSON path for the given field\r\n */\r\nexport const makeJsonPath = (field: IFormField, index?: number): string | undefined => {\r\n if (field.type === 'object' && field.skip_path === true) {\r\n return undefined\r\n }\r\n const fieldExtra = `${field.multiple && (field.index !== undefined || index !== undefined) ? `[${index ?? field.index}]` : ''}`\r\n if (field.destPath !== undefined) {\r\n return `${field.destPath}${fieldExtra}`\r\n } else if (field.path === undefined) {\r\n return `${field.id}${fieldExtra}`\r\n } else {\r\n const path = field.path\r\n const pathLen = path.length\r\n return field.path.map((f, i) => (f.multiple && (i < (pathLen - 1) || index !== undefined || f.index !== undefined)) ? `${f.id}${`[${index ?? f.index ?? 0}]`}` : f.id).join('.')\r\n }\r\n}\r\n\r\n/**\r\n * Returns the child fields of a given field\r\n *\r\n * @param field - The field to get the child fields from\r\n * @returns The child fields of the given field\r\n */\r\nexport const getChildFields = (field: { id: string, fields?: IFormField[] }): IFormField[] => {\r\n return field?.fields ?? []\r\n}\r\n\r\n/**\r\n * Recursively gets all fields from a given array of fields\r\n *\r\n * @param fields - The array of fields to get the fields from\r\n * @returns An array of all fields\r\n */\r\n\r\nexport const getFields = (fields?: Array<{ id: string, fields?: IFormField[] }>): IFormField[] => {\r\n if (fields === undefined) {\r\n return []\r\n }\r\n const all = fields.map(field => {\r\n let fields = [field]\r\n const children = getChildFields(field)\r\n children.forEach(c => {\r\n fields = fields.concat(getFields([c]))\r\n })\r\n return fields\r\n }).flat(Infinity) as IFormField[]\r\n return all\r\n}\r\n\r\n/**\r\n * Wrapper for lodash `get` function to get the value from a given path in the form values\r\n *\r\n * @param path - The path to get the value from\r\n * @param formValues - The form values to get the value from\r\n * @returns The value from the given path in the form values or undefined\r\n */\r\n\r\nexport function getValueFromPath (path: string, formValues: IFormValues): IValueType | IValueType[] | undefined {\r\n return get(formValues, path)\r\n}\r\n\r\nfunction getObjectFieldValue (field: IObjectField, formValues: IFormValues, index?: number): IValueType | IValueType[] | undefined {\r\n const vals = field.fields.map(f => {\r\n const p = makeJsonPath(f, index)\r\n const val = getFieldValue(f, formValues, index)\r\n return p !== undefined\r\n ? { key: p, val }\r\n : typeof val === 'object' && val !== null\r\n ? Object.entries(val).map(([k, v]) => ({ key: k, val: v }))\r\n : undefined\r\n }).flat(Infinity).filter(d => d !== undefined) as Array<{ key: string, val: IValueType | IValueType[] | undefined }>\r\n return Object.fromEntries(vals.map(v => [v.key, v.val]))\r\n}\r\n\r\n/**\r\n * Returns the value of a given field from the form values\r\n *\r\n * @param field - The field to get the value from\r\n * @param formValues - The form values to get the value from\r\n * @param index - The index of the field in the array (optional). If undefined, the last value will be returned as an array if it is one\r\n * @returns The value of the given field from the form values or undefined\r\n */\r\n\r\nexport function getFieldValue (field: IFormField, formValues: IFormValues, index?: number): IValueType | IValueType[] | undefined {\r\n const path = makeJsonPath(field, index)\r\n if (field.type === 'object' && field.fields !== undefined && path === undefined) {\r\n return getObjectFieldValue(field, formValues, index)\r\n } else if (path === undefined) {\r\n return undefined\r\n }\r\n const val = getValueFromPath(path, formValues) // formValues[field.id]\r\n return val\r\n}\r\n\r\n/**\r\n * Returns the path of a given field. Used for writing to form values\r\n *\r\n * @param field - The field to get the path from\r\n * @returns The path of the given field or the id of the field if no path is defined\r\n */\r\nexport function getPathFromField (field: IFormField): string | undefined {\r\n // console.log(`${field.path !== undefined ? field.path.join('.') : 'nopath'} = ${field.id}`)\r\n if (field.type === 'object' && field.skip_path === true) {\r\n return undefined\r\n }\r\n if (field.destPath) {\r\n return field.destPath\r\n }\r\n return field.path !== undefined\r\n ? field.path.filter(f => !(f.type === 'object' && f.skip_path === true)).map(f => f.id).join('.')\r\n : field.id\r\n // return makeJsonPath(field)\r\n}\r\n\r\n/**\r\n * Returns all fields and child from a given form section. A form can be a form section or a wizard step or a page. This will recursively find child fields in pages, wizard steps and object fields\r\n *\r\n * @param formSection - The form section to get the fields from\r\n * @returns An array of fields from the given form section\r\n */\r\nexport function getFieldsFromFormSection (formSection: IFormSection): IFormField[] {\r\n const pageFields = formSection?.pages?.map(p => getFieldsFromFormSection(p)).flat(1)\r\n const wizardFields = formSection?.wizard_steps?.map(p => getFieldsFromFormSection(p)).flat(1)\r\n const fields = getFields((formSection?.fields ?? [])).concat(pageFields ?? []).concat(wizardFields ?? [])\r\n return fields\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getters.js","sources":["../../../../src/utils/getters.ts"],"sourcesContent":["import { type IFormSection, type IFormValues, type IValueType, type IFormField, type IObjectField } from '@/Form/Creator/FormCreatorTypes'\r\nimport { get } from 'lodash-es'\r\n\r\nconst getFieldExtra = (field: IFormField, index?: number): string => {\r\n return field.multiple && (field.index !== undefined || index !== undefined)\r\n ? `[${index ?? field.index}]`\r\n : ''\r\n}\r\n\r\n/**\r\n * Returns the JSON path for a given field\r\n *\r\n * @param field - The field to get the JSON path for\r\n * @param index - The index of the field in the array (optional)\r\n * @returns The JSON path for the given field\r\n */\r\nexport const makeJsonPath = (field: IFormField, index?: number): string | undefined => {\r\n if (field.type === 'object' && field.skip_path === true) {\r\n return undefined\r\n }\r\n if (field.destPath !== undefined) {\r\n return `${field.destPath}${getFieldExtra(field, index)}`\r\n } else if (field.path === undefined) {\r\n return `${field.id}${getFieldExtra(field, index)}`\r\n } else {\r\n const path = field.path\r\n const pathLen = path.length\r\n return field.path.map((f, i) => {\r\n const defaultMultipleIndex = f.multiple && f.index === undefined && i < (pathLen - 1) ? 0 : undefined\r\n return `${f.id}${`${getFieldExtra(f, i >= pathLen - 1 ? index : defaultMultipleIndex)}`}`\r\n }).join('.')\r\n }\r\n}\r\n\r\n/** `\r\n * Returns the child fields of a given field\r\n *\r\n * @param field - The field to get the child fields from\r\n * @returns The child fields of the given field\r\n */\r\nexport const getChildFields = (field: { id: string, fields?: IFormField[] }): IFormField[] => {\r\n return field?.fields ?? []\r\n}\r\n\r\n/**\r\n * Recursively gets all fields from a given array of fields\r\n *\r\n * @param fields - The array of fields to get the fields from\r\n * @returns An array of all fields\r\n */\r\n\r\nexport const getFields = (fields?: Array<{ id: string, fields?: IFormField[] }>): IFormField[] => {\r\n if (fields === undefined) {\r\n return []\r\n }\r\n const all = fields.map(field => {\r\n let fields = [field]\r\n const children = getChildFields(field)\r\n children.forEach(c => {\r\n fields = fields.concat(getFields([c]))\r\n })\r\n return fields\r\n }).flat(Infinity) as IFormField[]\r\n return all\r\n}\r\n\r\n/**\r\n * Wrapper for lodash `get` function to get the value from a given path in the form values\r\n *\r\n * @param path - The path to get the value from\r\n * @param formValues - The form values to get the value from\r\n * @returns The value from the given path in the form values or undefined\r\n */\r\n\r\nexport function getValueFromPath (path: string, formValues: IFormValues): IValueType | IValueType[] | undefined {\r\n return get(formValues, path)\r\n}\r\n\r\nfunction getObjectFieldValue (field: IObjectField, formValues: IFormValues, index?: number): IValueType | IValueType[] | undefined {\r\n const vals = field.fields.map(f => {\r\n const p = makeJsonPath(f, index)\r\n const val = getFieldValue(f, formValues, index)\r\n return p !== undefined\r\n ? { key: p, val }\r\n : typeof val === 'object' && val !== null\r\n ? Object.entries(val).map(([k, v]) => ({ key: k, val: v }))\r\n : undefined\r\n }).flat(Infinity).filter(d => d !== undefined) as Array<{ key: string, val: IValueType | IValueType[] | undefined }>\r\n return Object.fromEntries(vals.map(v => [v.key, v.val]))\r\n}\r\n\r\nexport function getValueFromRelativePath (field: IFormField, path: string, formValues: IFormValues): IValueType | IValueType[] | undefined {\r\n const backPath = path.match(/^\\.+/)?.[0]?.length ?? 0\r\n const fieldPathFields = field.path ?? []\r\n const offset = field.type === 'object' && field.skip_path ? 0 : 1\r\n if (backPath > 0 && (fieldPathFields.length - offset) >= backPath) {\r\n const targetField = fieldPathFields[fieldPathFields.length - backPath - offset]\r\n const valueAtRoot = getFieldValue(\r\n {\r\n ...targetField,\r\n path: targetField.path ?? fieldPathFields.slice(0, fieldPathFields.length - backPath - offset + 1)\r\n },\r\n formValues,\r\n targetField.multiple ? targetField.index : undefined\r\n )\r\n\r\n if (valueAtRoot === undefined || valueAtRoot === null) {\r\n return undefined\r\n }\r\n const pathToEval = path.replace(/^\\.+/, '')\r\n if (pathToEval === '') {\r\n return valueAtRoot\r\n }\r\n return get(valueAtRoot, pathToEval)\r\n } else {\r\n // absolute path, get the field value from the field\r\n return getValueFromPath(path, formValues)\r\n }\r\n}\r\n\r\n/**\r\n * Returns the value of a given field from the form values\r\n *\r\n * @param field - The field to get the value from\r\n * @param formValues - The form values to get the value from\r\n * @param index - The index of the field in the array (optional). If undefined, the last value will be returned as an array if it is one\r\n * @returns The value of the given field from the form values or undefined\r\n */\r\n\r\nexport function getFieldValue (field: IFormField, formValues: IFormValues, index?: number): IValueType | IValueType[] | undefined {\r\n const path = makeJsonPath(field, index)\r\n if (field.type === 'object' && field.fields !== undefined && path === undefined) {\r\n return getObjectFieldValue(field, formValues, index)\r\n } else if (path === undefined) {\r\n return undefined\r\n }\r\n const val = getValueFromPath(path, formValues) // formValues[field.id]\r\n return val\r\n}\r\n\r\n/**\r\n * Returns the path of a given field. Used for writing to form values\r\n *\r\n * @param field - The field to get the path from\r\n * @returns The path of the given field or the id of the field if no path is defined\r\n */\r\nexport function getPathFromField (field: IFormField): string | undefined {\r\n // console.log(`${field.path !== undefined ? field.path.join('.') : 'nopath'} = ${field.id}`)\r\n if (field.type === 'object' && field.skip_path === true) {\r\n return undefined\r\n }\r\n if (field.destPath) {\r\n return field.destPath\r\n }\r\n return field.path !== undefined\r\n ? field.path.filter(f => !(f.type === 'object' && f.skip_path === true)).map(f => f.id).join('.')\r\n : field.id\r\n // return makeJsonPath(field)\r\n}\r\n\r\n/**\r\n * Returns all fields and child from a given form section. A form can be a form section or a wizard step or a page. This will recursively find child fields in pages, wizard steps and object fields\r\n *\r\n * @param formSection - The form section to get the fields from\r\n * @returns An array of fields from the given form section\r\n */\r\nexport function getFieldsFromFormSection (formSection: IFormSection): IFormField[] {\r\n const pageFields = formSection?.pages?.map(p => getFieldsFromFormSection(p)).flat(1)\r\n const wizardFields = formSection?.wizard_steps?.map(p => getFieldsFromFormSection(p)).flat(1)\r\n const fields = getFields((formSection?.fields ?? [])).concat(pageFields ?? []).concat(wizardFields ?? [])\r\n return fields\r\n}\r\n"],"names":[],"mappings":"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"}