@axdspub/axiom-ui-forms 0.3.4 → 0.3.6
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.
- package/library/axiom-ui-forms.d.ts +31 -18
- package/library/esm/_virtual/index10.js +2 -2
- package/library/esm/_virtual/index11.js +2 -2
- package/library/esm/_virtual/index12.js +2 -2
- package/library/esm/_virtual/index13.js +2 -2
- package/library/esm/_virtual/index14.js +2 -2
- package/library/esm/_virtual/index3.js +2 -2
- package/library/esm/_virtual/index4.js +2 -2
- package/library/esm/_virtual/index5.js +2 -2
- package/library/esm/_virtual/index6.js +4 -4
- package/library/esm/_virtual/index7.js +4 -4
- package/library/esm/_virtual/index9.js +2 -2
- package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js +2 -2
- package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -1
- package/library/esm/node_modules/ajv/dist/compile/codegen/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/compile/validate/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/vocabularies/discriminator/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/vocabularies/format/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/vocabularies/validation/index.js +1 -1
- package/library/esm/node_modules/fast-uri/index.js +1 -1
- package/library/esm/node_modules/hast-util-to-jsx-runtime/lib/index.js +1 -1
- package/library/esm/node_modules/json-schema-traverse/index.js +1 -1
- package/library/esm/node_modules/unified/lib/index.js +1 -1
- package/library/esm/src/Form/Components/FieldCreator.js +76 -31
- package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
- package/library/esm/src/Form/Components/FieldLabel.js +81 -23
- package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Boolean.js +5 -2
- package/library/esm/src/Form/Components/Inputs/Boolean.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Constant.js +2 -2
- package/library/esm/src/Form/Components/Inputs/Constant.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Number.js +1 -2
- package/library/esm/src/Form/Components/Inputs/Number.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Object.js +32 -7
- package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
- package/library/esm/src/Form/Creator/FormCreator.js +4 -4
- package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
- package/library/esm/src/Form/Creator/FormFields.js +1 -1
- package/library/esm/src/Form/Creator/FormFields.js.map +1 -1
- package/library/esm/src/Form/Creator/FormHeader.js +2 -1
- package/library/esm/src/Form/Creator/FormHeader.js.map +1 -1
- package/library/esm/src/Form/Creator/FormSection.js +1 -1
- package/library/esm/src/Form/Creator/FormSection.js.map +1 -1
- package/library/esm/src/Form/Creator/Wizard.js +3 -3
- package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
- package/library/esm/src/utils/getters.js +36 -6
- package/library/esm/src/utils/getters.js.map +1 -1
- package/library/esm/src/utils/manipulators.js +28 -12
- package/library/esm/src/utils/manipulators.js.map +1 -1
- package/library/esm/src/utils/validators.js +21 -9
- package/library/esm/src/utils/validators.js.map +1 -1
- package/package.json +4 -2
@@ -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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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { __assign } from '../../node_modules/tslib/tslib.es6.js';
|
2
|
-
import {
|
2
|
+
import { getPathFromField, getFieldsFromFormSection, getFieldValue } from './getters.js';
|
3
3
|
import { checkCondition } from './validators.js';
|
4
4
|
import merge from '../../node_modules/lodash-es/merge.js';
|
5
5
|
import set from '../../node_modules/lodash-es/set.js';
|
@@ -20,7 +20,9 @@ var addFieldPath = function (field, parentPath) {
|
|
20
20
|
return addFieldPath(childField, (_a = field.path) === null || _a === void 0 ? void 0 : _a.slice());
|
21
21
|
});
|
22
22
|
}
|
23
|
-
return field
|
23
|
+
// return field
|
24
|
+
return field.multiple ? structuredClone(field) : field;
|
25
|
+
// return structuredClone(field)
|
24
26
|
};
|
25
27
|
function addPathsToFormSections(section) {
|
26
28
|
if (section.pages !== undefined) {
|
@@ -83,10 +85,19 @@ function cleanFormValuesLevel(formValues, fields, formValuesPath) {
|
|
83
85
|
var _a;
|
84
86
|
var path = formValuesPath !== '' ? "".concat(formValuesPath, ".").concat(key) : key;
|
85
87
|
var field = fields === null || fields === void 0 ? void 0 : fields.find(function (f) { return getPathFromField(f) === path; });
|
88
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === 'object' && (field === null || field === void 0 ? void 0 : field.multiple) === true && Array.isArray(formValuesCopy[key])) {
|
89
|
+
return formValuesCopy[key].map(function (value, index) {
|
90
|
+
var checkedOneOfMultiple = checkCondition(field, value);
|
91
|
+
if (!checkedOneOfMultiple.pass && checkedOneOfMultiple.result === 'include') {
|
92
|
+
return undefined;
|
93
|
+
}
|
94
|
+
return value;
|
95
|
+
});
|
96
|
+
}
|
86
97
|
var checkedCondition = field !== undefined
|
87
98
|
? checkCondition(field, formValues)
|
88
|
-
: { pass: true, result: '
|
89
|
-
if (field !== undefined && ((!checkedCondition.pass && checkedCondition.result === '
|
99
|
+
: { pass: true, result: 'include' };
|
100
|
+
if (field !== undefined && ((!checkedCondition.pass && checkedCondition.result === 'include') || (checkedCondition.pass && checkedCondition.result === 'exclude'))) {
|
90
101
|
formValuesCopy[key] = undefined;
|
91
102
|
// this ensures that objects that are the result of mapping get checked
|
92
103
|
// but fields that are not explicitly defined as objects but may contain objects
|
@@ -142,15 +153,20 @@ var assignDefaultValuesToFormValues = function (form, formValues) {
|
|
142
153
|
return formValuesCopy;
|
143
154
|
};
|
144
155
|
var assignIndexToField = function (field, index) {
|
145
|
-
return __assign(__assign({}, field), { index: index });
|
156
|
+
return __assign(__assign({}, field), { path: undefined, index: index });
|
146
157
|
};
|
147
|
-
var assignIndexToFields = function (parentField, index) {
|
158
|
+
var assignIndexToFields = function (parentField, indexField, index, level) {
|
148
159
|
return parentField.fields.map(function (f) {
|
149
|
-
if (f.path !== undefined &&
|
160
|
+
if (f.path !== undefined && level !== undefined && f.path[level] !== undefined) {
|
150
161
|
var newPath = f.path.slice();
|
151
|
-
newPath[
|
162
|
+
newPath[level] = assignIndexToField(indexField, index);
|
152
163
|
f.path = newPath;
|
153
164
|
}
|
165
|
+
if (f.type === 'object' && f.fields !== undefined) {
|
166
|
+
f.fields = assignIndexToFields(f, indexField, index, level);
|
167
|
+
return f.multiple ? structuredClone(f) : f;
|
168
|
+
// return structuredClone(f)
|
169
|
+
}
|
154
170
|
return __assign({}, f);
|
155
171
|
});
|
156
172
|
};
|
@@ -160,15 +176,15 @@ var createOneOfMultipleField = function (field, index) {
|
|
160
176
|
var last = assignIndexToField(path[path.length - 1], index);
|
161
177
|
path[path.length - 1] = last;
|
162
178
|
if (last.type === 'object' && last.fields !== undefined) {
|
163
|
-
last.fields = assignIndexToFields(last, index);
|
179
|
+
last.fields = assignIndexToFields(last, last, index, last.level !== undefined ? (last.level - 1) : undefined);
|
164
180
|
}
|
165
181
|
}
|
166
|
-
var out = __assign(__assign({}, field), { path: path, index: index, required: false, label: index > 0 ? null : field.label, id: "".concat(field.id, "-").concat(index) });
|
182
|
+
var out = __assign(__assign({}, field), { path: path, index: index, required: false, label: index > 0 ? null : field.label, description: index > 0 ? null : field.description, long_description: index > 0 ? null : field.long_description, id: "".concat(field.id, "-").concat(index) });
|
167
183
|
if (field.type === 'object' && field.fields !== undefined && out.type === 'object') {
|
168
|
-
out.fields = assignIndexToFields(field, index);
|
184
|
+
out.fields = assignIndexToFields(field, field, index);
|
169
185
|
}
|
170
186
|
return out;
|
171
187
|
};
|
172
188
|
|
173
|
-
export { addFieldPath, assignDefaultValuesToFormValues, cleanAndUpdateFormValuesWithFieldValue, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, copyAndRemovePathFromFields, createOneOfMultipleField, updateFormValuesWithFieldValue, updateFormValuesWithFieldValueInPlace };
|
189
|
+
export { addFieldPath, assignDefaultValuesToFormValues, cleanAndUpdateFormValuesWithFieldValue, cleanFormValuesLevel, cleanUnusedDependenciesFromFormValues, copyAndAddPathToFields, copyAndRemovePathFromFields, createOneOfMultipleField, updateFormValuesWithFieldValue, updateFormValuesWithFieldValueInPlace };
|
174
190
|
//# sourceMappingURL=manipulators.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"manipulators.js","sources":["../../../../src/utils/manipulators.ts"],"sourcesContent":["import { type IFormSection, type IPage, type IWizardStep, type IFormField, type IForm, type IValueType, type IFormValues, type IObjectField } from '@/Form/Creator/FormCreatorTypes'\r\nimport { getFieldsFromFormSection, getFieldValue, getPathFromField } from '@/utils/getters'\r\nimport { checkCondition } from '@/utils/validators'\r\nimport { merge, set } from 'lodash-es'\r\n\r\nexport const addFieldPath = (field: IFormField, parentPath?: IFormField[]): IFormField => {\r\n if (field.type === 'object' && field.skip_path === true) {\r\n field.path = parentPath !== undefined ? parentPath.slice() : []\r\n field.level = parentPath !== undefined ? parentPath.length : 0\r\n } else {\r\n const newSegment = field // `${field.id}${field.multiple === true ? '[]' : ''}`\r\n field.path = parentPath !== undefined ? parentPath.slice().concat(newSegment) : [newSegment]\r\n field.level = parentPath !== undefined ? parentPath.length + 1 : 1\r\n }\r\n if ((field.type === 'object' || field.type === 'section') && field.fields !== undefined) {\r\n field.fields = field.fields.map(childField => {\r\n return addFieldPath(childField, field.path?.slice())\r\n })\r\n }\r\n return field\r\n}\r\n\r\nfunction addPathsToFormSections (section: IFormSection): IFormSection {\r\n if (section.pages !== undefined) {\r\n section.pages = section.pages.map(page => {\r\n return addPathsToFormSections(page)\r\n }) as IPage[]\r\n }\r\n if (section.wizard_steps !== undefined) {\r\n section.wizard_steps = section.wizard_steps.map(wizardStep => {\r\n return addPathsToFormSections(wizardStep)\r\n }) as IWizardStep[]\r\n }\r\n if (section.fields !== undefined) {\r\n section.fields = section.fields.map(field => {\r\n return addFieldPath(field)\r\n })\r\n }\r\n return section\r\n}\r\n\r\nexport function copyAndAddPathToFields (formOrContainer: IFormSection | IForm): IForm {\r\n const form = addPathsToFormSections(structuredClone(formOrContainer)) as IForm\r\n return form\r\n}\r\n\r\nfunction removeFieldPath (field: IFormField): IFormField {\r\n field.path = undefined\r\n field.level = undefined\r\n if (field.type === 'object' && field.fields !== undefined) {\r\n field.fields = field.fields.map(childField => {\r\n return removeFieldPath(childField)\r\n })\r\n }\r\n\r\n return field\r\n}\r\n\r\nfunction removePathsFromFormSections (section: IFormSection): IFormSection {\r\n if (section.pages !== undefined) {\r\n section.pages = section.pages.map(page => {\r\n return removePathsFromFormSections(page)\r\n }) as IPage[]\r\n }\r\n if (section.wizard_steps !== undefined) {\r\n section.wizard_steps = section.wizard_steps.map(wizardStep => {\r\n return removePathsFromFormSections(wizardStep)\r\n }) as IWizardStep[]\r\n }\r\n if (section.fields !== undefined) {\r\n section.fields = section.fields.map(field => {\r\n return removeFieldPath(field)\r\n })\r\n }\r\n return section\r\n}\r\n\r\nexport function copyAndRemovePathFromFields (formOrContainer: IFormSection | IForm): IForm {\r\n const form = removePathsFromFormSections(structuredClone(formOrContainer)) as IForm\r\n return form\r\n}\r\n\r\nfunction cleanFormValuesLevel (formValues: IFormValues, fields: IFormField[], formValuesPath: string = ''): IFormValues {\r\n const formValuesCopy = structuredClone(formValues)\r\n Object.keys(formValues).forEach(key => {\r\n const path = formValuesPath !== '' ? `${formValuesPath}.${key}` : key\r\n const field = fields?.find(f => getPathFromField(f) === path)\r\n const checkedCondition = field !== undefined\r\n ? checkCondition(field, formValues)\r\n : { pass: true, result: 'remove' }\r\n if (field !== undefined && (\r\n (\r\n !checkedCondition.pass && checkedCondition.result === 'remove'\r\n ) || (\r\n checkedCondition.pass && checkedCondition.result === 'add'\r\n )\r\n )) {\r\n formValuesCopy[key] = undefined\r\n // this ensures that objects that are the result of mapping get checked\r\n // but fields that are not explicitly defined as objects but may contain objects\r\n // are not checked (geom, json, etc)\r\n } else if (typeof formValuesCopy[key] === 'object' && (\r\n field?.type === 'object' || field === undefined\r\n )) {\r\n formValuesCopy[key] = cleanFormValuesLevel((formValuesCopy[key] ?? {}) as IFormValues, fields, path)\r\n } else if (field === undefined) {\r\n formValuesCopy[key] = undefined\r\n }\r\n })\r\n // const fieldIds = fields.map(f => getPathFromField(f))\r\n // return Object.fromEntries(Object.entries(formValuesCopy).filter(([key]) => fieldIds.includes(formValuesPath !== '' ? `${formValuesPath}.${key}` : key)))\r\n return formValuesCopy\r\n}\r\n\r\nexport function cleanUnusedDependenciesFromFormValues (form: IForm, formValues: IFormValues): IFormValues {\r\n const fields = getFieldsFromFormSection(form)\r\n const newFormValues = cleanFormValuesLevel(formValues, fields)\r\n return newFormValues\r\n}\r\n\r\nexport function updateFormValuesWithFieldValueInPlace (field: IFormField, newValue: IValueType | IValueType[], formValues: IFormValues): void {\r\n const fieldPath = getPathFromField(field)\r\n if (fieldPath === undefined) {\r\n merge(formValues, newValue)\r\n } else {\r\n set(formValues, fieldPath ?? '', newValue)\r\n }\r\n}\r\n\r\nexport function updateFormValuesWithFieldValue (field: IFormField, newValue: IValueType | IValueType[], formValues: IFormValues): IFormValues {\r\n const formValuesCopy = structuredClone(formValues)\r\n updateFormValuesWithFieldValueInPlace(field, newValue, formValuesCopy)\r\n return formValuesCopy\r\n}\r\n\r\nexport function cleanAndUpdateFormValuesWithFieldValue ({\r\n field,\r\n form,\r\n value,\r\n formValues\r\n}: {\r\n field: IFormField\r\n form: IForm\r\n value: IValueType | IValueType[]\r\n formValues: IFormValues\r\n}): IFormValues {\r\n const updatedFormValuesCopyPreClean = updateFormValuesWithFieldValue(\r\n field,\r\n value,\r\n formValues\r\n )\r\n const cleanedFormValues = cleanUnusedDependenciesFromFormValues(form, updatedFormValuesCopyPreClean)\r\n // re-assigning the form values lets it be cleaned above, and re-assigned below if the value is uses the same path as a removed value\r\n // initial use case: multiple geometry fields with each shape type as pre-set draw type and a second field that determines the draw type\r\n const formValuesCopyClean = updateFormValuesWithFieldValue(\r\n field,\r\n value,\r\n cleanedFormValues\r\n )\r\n return formValuesCopyClean\r\n}\r\n\r\nexport const assignDefaultValuesToFormValues = (form: IForm, formValues: IFormValues): IFormValues => {\r\n const formValuesCopy = structuredClone(formValues)\r\n const formWithPaths = copyAndAddPathToFields(form)\r\n getFieldsFromFormSection(formWithPaths).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, formValuesCopy) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, formValuesCopy)\r\n }\r\n })\r\n return formValuesCopy\r\n}\r\n\r\nconst assignIndexToField = (field: IFormField, index: number): IFormField => {\r\n return {\r\n ...field,\r\n index\r\n }\r\n}\r\n\r\nconst assignIndexToFields = (parentField: IObjectField, index: number): IFormField[] => {\r\n return parentField.fields.map(f => {\r\n if (f.path !== undefined && parentField.level !== undefined && f.path[parentField.level - 1] !== undefined) {\r\n const newPath = f.path.slice()\r\n newPath[parentField.level - 1] = {\r\n ...parentField,\r\n index\r\n }\r\n f.path = newPath\r\n }\r\n return {\r\n ...f\r\n }\r\n })\r\n}\r\n\r\nexport const createOneOfMultipleField = (field: IFormField, index: number): IFormField => {\r\n const path = field.path ? field.path.slice() : undefined\r\n if (path !== undefined) {\r\n const last = assignIndexToField(path[path.length - 1], index)\r\n path[path.length - 1] = last\r\n if (last.type === 'object' && last.fields !== undefined) {\r\n last.fields = assignIndexToFields(last, index)\r\n }\r\n }\r\n\r\n const out = {\r\n ...field,\r\n path,\r\n index,\r\n required: false,\r\n label: index > 0 ? null : field.label,\r\n id: `${field.id}-${index}`\r\n }\r\n\r\n if (field.type === 'object' && field.fields !== undefined && out.type === 'object') {\r\n out.fields = assignIndexToFields(field, index)\r\n }\r\n return out\r\n}\r\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"manipulators.js","sources":["../../../../src/utils/manipulators.ts"],"sourcesContent":["import { type IFormSection, type IPage, type IWizardStep, type IFormField, type IForm, type IValueType, type IFormValues, type IObjectField } from '@/Form/Creator/FormCreatorTypes'\r\nimport { getFieldsFromFormSection, getFieldValue, getPathFromField } from '@/utils/getters'\r\nimport { checkCondition } from '@/utils/validators'\r\nimport { merge, set } from 'lodash-es'\r\n\r\nexport const addFieldPath = (field: IFormField, parentPath?: IFormField[]): IFormField => {\r\n if (field.type === 'object' && field.skip_path === true) {\r\n field.path = parentPath !== undefined ? parentPath.slice() : []\r\n field.level = parentPath !== undefined ? parentPath.length : 0\r\n } else {\r\n const newSegment = field // `${field.id}${field.multiple === true ? '[]' : ''}`\r\n field.path = parentPath !== undefined ? parentPath.slice().concat(newSegment) : [newSegment]\r\n field.level = parentPath !== undefined ? parentPath.length + 1 : 1\r\n }\r\n if ((field.type === 'object' || field.type === 'section') && field.fields !== undefined) {\r\n field.fields = field.fields.map(childField => {\r\n return addFieldPath(childField, field.path?.slice())\r\n })\r\n }\r\n // return field\r\n return field.multiple ? structuredClone(field) : field\r\n // return structuredClone(field)\r\n}\r\n\r\nfunction addPathsToFormSections (section: IFormSection): IFormSection {\r\n if (section.pages !== undefined) {\r\n section.pages = section.pages.map(page => {\r\n return addPathsToFormSections(page)\r\n }) as IPage[]\r\n }\r\n if (section.wizard_steps !== undefined) {\r\n section.wizard_steps = section.wizard_steps.map(wizardStep => {\r\n return addPathsToFormSections(wizardStep)\r\n }) as IWizardStep[]\r\n }\r\n if (section.fields !== undefined) {\r\n section.fields = section.fields.map(field => {\r\n return addFieldPath(field)\r\n })\r\n }\r\n return section\r\n}\r\n\r\nexport function copyAndAddPathToFields (formOrContainer: IFormSection | IForm): IForm {\r\n const form = addPathsToFormSections(structuredClone(formOrContainer)) as IForm\r\n return form\r\n}\r\n\r\nfunction removeFieldPath (field: IFormField): IFormField {\r\n field.path = undefined\r\n field.level = undefined\r\n if (field.type === 'object' && field.fields !== undefined) {\r\n field.fields = field.fields.map(childField => {\r\n return removeFieldPath(childField)\r\n })\r\n }\r\n\r\n return field\r\n}\r\n\r\nfunction removePathsFromFormSections (section: IFormSection): IFormSection {\r\n if (section.pages !== undefined) {\r\n section.pages = section.pages.map(page => {\r\n return removePathsFromFormSections(page)\r\n }) as IPage[]\r\n }\r\n if (section.wizard_steps !== undefined) {\r\n section.wizard_steps = section.wizard_steps.map(wizardStep => {\r\n return removePathsFromFormSections(wizardStep)\r\n }) as IWizardStep[]\r\n }\r\n if (section.fields !== undefined) {\r\n section.fields = section.fields.map(field => {\r\n return removeFieldPath(field)\r\n })\r\n }\r\n return section\r\n}\r\n\r\nexport function copyAndRemovePathFromFields (formOrContainer: IFormSection | IForm): IForm {\r\n const form = removePathsFromFormSections(structuredClone(formOrContainer)) as IForm\r\n return form\r\n}\r\n\r\nexport function cleanFormValuesLevel (formValues: IFormValues, fields: IFormField[], formValuesPath: string = ''): IFormValues {\r\n const formValuesCopy = structuredClone(formValues)\r\n Object.keys(formValues).forEach(key => {\r\n const path = formValuesPath !== '' ? `${formValuesPath}.${key}` : key\r\n const field = fields?.find(f => getPathFromField(f) === path)\r\n if (field?.type === 'object' && field?.multiple === true && Array.isArray(formValuesCopy[key])) {\r\n return formValuesCopy[key].map((value, index) => {\r\n const checkedOneOfMultiple = checkCondition(field, value as IFormValues)\r\n if (!checkedOneOfMultiple.pass && checkedOneOfMultiple.result === 'include') {\r\n return undefined\r\n }\r\n return value\r\n })\r\n }\r\n const checkedCondition = field !== undefined\r\n ? checkCondition(field, formValues)\r\n : { pass: true, result: 'include' }\r\n if (field !== undefined && (\r\n (\r\n !checkedCondition.pass && checkedCondition.result === 'include'\r\n ) || (\r\n checkedCondition.pass && checkedCondition.result === 'exclude'\r\n )\r\n )) {\r\n formValuesCopy[key] = undefined\r\n // this ensures that objects that are the result of mapping get checked\r\n // but fields that are not explicitly defined as objects but may contain objects\r\n // are not checked (geom, json, etc)\r\n } else if (typeof formValuesCopy[key] === 'object' && (\r\n field?.type === 'object' || field === undefined\r\n )) {\r\n formValuesCopy[key] = cleanFormValuesLevel((formValuesCopy[key] ?? {}) as IFormValues, fields, path)\r\n } else if (field === undefined) {\r\n formValuesCopy[key] = undefined\r\n }\r\n })\r\n // const fieldIds = fields.map(f => getPathFromField(f))\r\n // return Object.fromEntries(Object.entries(formValuesCopy).filter(([key]) => fieldIds.includes(formValuesPath !== '' ? `${formValuesPath}.${key}` : key)))\r\n return formValuesCopy\r\n}\r\n\r\nexport function cleanUnusedDependenciesFromFormValues (form: IForm, formValues: IFormValues): IFormValues {\r\n const fields = getFieldsFromFormSection(form)\r\n const newFormValues = cleanFormValuesLevel(formValues, fields)\r\n return newFormValues\r\n}\r\n\r\nexport function updateFormValuesWithFieldValueInPlace (field: IFormField, newValue: IValueType | IValueType[], formValues: IFormValues): void {\r\n const fieldPath = getPathFromField(field)\r\n if (fieldPath === undefined) {\r\n merge(formValues, newValue)\r\n } else {\r\n set(formValues, fieldPath ?? '', newValue)\r\n }\r\n}\r\n\r\nexport function updateFormValuesWithFieldValue (field: IFormField, newValue: IValueType | IValueType[], formValues: IFormValues): IFormValues {\r\n const formValuesCopy = structuredClone(formValues)\r\n updateFormValuesWithFieldValueInPlace(field, newValue, formValuesCopy)\r\n return formValuesCopy\r\n}\r\n\r\nexport function cleanAndUpdateFormValuesWithFieldValue ({\r\n field,\r\n form,\r\n value,\r\n formValues\r\n}: {\r\n field: IFormField\r\n form: IForm\r\n value: IValueType | IValueType[]\r\n formValues: IFormValues\r\n}): IFormValues {\r\n const updatedFormValuesCopyPreClean = updateFormValuesWithFieldValue(\r\n field,\r\n value,\r\n formValues\r\n )\r\n const cleanedFormValues = cleanUnusedDependenciesFromFormValues(form, updatedFormValuesCopyPreClean)\r\n // re-assigning the form values lets it be cleaned above, and re-assigned below if the value is uses the same path as a removed value\r\n // initial use case: multiple geometry fields with each shape type as pre-set draw type and a second field that determines the draw type\r\n const formValuesCopyClean = updateFormValuesWithFieldValue(\r\n field,\r\n value,\r\n cleanedFormValues\r\n )\r\n return formValuesCopyClean\r\n}\r\n\r\nexport const assignDefaultValuesToFormValues = (form: IForm, formValues: IFormValues): IFormValues => {\r\n const formValuesCopy = structuredClone(formValues)\r\n const formWithPaths = copyAndAddPathToFields(form)\r\n getFieldsFromFormSection(formWithPaths).forEach(field => {\r\n if (field.defaultValue !== undefined && getFieldValue(field, formValuesCopy) === undefined) {\r\n updateFormValuesWithFieldValueInPlace(field, field.defaultValue, formValuesCopy)\r\n }\r\n })\r\n return formValuesCopy\r\n}\r\n\r\nconst assignIndexToField = (field: IFormField, index: number): IFormField => {\r\n return {\r\n ...field,\r\n path: undefined,\r\n index\r\n }\r\n}\r\n\r\nconst assignIndexToFields = (parentField: IObjectField, indexField: IObjectField, index: number, level?: number): IFormField[] => {\r\n return parentField.fields.map(f => {\r\n if (f.path !== undefined && level !== undefined && f.path[level] !== undefined) {\r\n const newPath = f.path.slice()\r\n newPath[level] = assignIndexToField(indexField, index)\r\n f.path = newPath\r\n }\r\n if (f.type === 'object' && f.fields !== undefined) {\r\n f.fields = assignIndexToFields(f, indexField, index, level)\r\n return f.multiple ? structuredClone(f) : f\r\n // return structuredClone(f)\r\n }\r\n return {\r\n ...f\r\n }\r\n })\r\n}\r\n\r\nexport const createOneOfMultipleField = (field: IFormField, index: number): IFormField => {\r\n const path = field.path ? field.path.slice() : undefined\r\n if (path !== undefined) {\r\n const last = assignIndexToField(path[path.length - 1], index)\r\n path[path.length - 1] = last\r\n if (last.type === 'object' && last.fields !== undefined) {\r\n last.fields = assignIndexToFields(last, last, index, last.level !== undefined ? (last.level - 1) : undefined)\r\n }\r\n }\r\n\r\n const out = {\r\n ...field,\r\n path,\r\n index,\r\n required: false,\r\n label: index > 0 ? null : field.label,\r\n description: index > 0 ? null : field.description,\r\n long_description: index > 0 ? null : field.long_description,\r\n id: `${field.id}-${index}`\r\n }\r\n\r\n if (field.type === 'object' && field.fields !== undefined && out.type === 'object') {\r\n out.fields = assignIndexToFields(field, field, index)\r\n }\r\n return out\r\n}\r\n"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { getFieldsFromFormSection,
|
1
|
+
import { getFieldsFromFormSection, getValueFromRelativePath, getFieldValue } from './getters.js';
|
2
2
|
|
3
3
|
var compare = function (val, operator, compareTo) {
|
4
4
|
if (val === undefined || val === null) {
|
@@ -39,49 +39,61 @@ var runCheck = function (fieldValue, operator, val) {
|
|
39
39
|
: compare(fieldValue, operator || '=', val)
|
40
40
|
: (fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== '');
|
41
41
|
};
|
42
|
-
var checkFieldCondition = function (condition, formValues) {
|
42
|
+
var checkFieldCondition = function (field, condition, formValues) {
|
43
43
|
var _a, _b, _c;
|
44
44
|
var fieldToEval = (_a = condition.field) !== null && _a !== void 0 ? _a : condition.dependsOn;
|
45
45
|
if (fieldToEval === undefined) {
|
46
46
|
console.warn('Field condition is missing field or dependsOn property');
|
47
47
|
return {
|
48
48
|
pass: true,
|
49
|
-
result: (_b = condition.result) !== null && _b !== void 0 ? _b : 'include'
|
49
|
+
result: (_b = condition.result) !== null && _b !== void 0 ? _b : 'include',
|
50
|
+
newDefaultValue: condition.newDefaultValue
|
50
51
|
};
|
51
52
|
}
|
53
|
+
if (Array.isArray(fieldToEval)) {
|
54
|
+
console.warn('Field condition dependsOn (or field) should not be an array, use conditionsSet for multiple conditions. dependsOn as array will be deprated');
|
55
|
+
}
|
52
56
|
var dependsOn = Array.isArray(fieldToEval) ? fieldToEval : [fieldToEval];
|
53
57
|
var val = condition.value;
|
54
58
|
var pass = dependsOn.every(function (d) {
|
55
59
|
var _a;
|
56
|
-
|
60
|
+
/* const fieldPathIsRelative = d.startsWith('.')
|
61
|
+
const fieldValue = getValueFromPath(d, formValues) */
|
62
|
+
var fieldValue = getValueFromRelativePath(field, d, formValues);
|
57
63
|
return runCheck(fieldValue, (_a = condition.operator) !== null && _a !== void 0 ? _a : '=', val);
|
58
64
|
});
|
59
65
|
return {
|
60
66
|
pass: pass,
|
61
|
-
result: (_c = condition.result) !== null && _c !== void 0 ? _c : 'include'
|
67
|
+
result: (_c = condition.result) !== null && _c !== void 0 ? _c : 'include',
|
68
|
+
newDefaultValue: condition.newDefaultValue
|
62
69
|
};
|
63
70
|
};
|
64
71
|
var checkCondition = function (field, formValues) {
|
72
|
+
var _a, _b;
|
65
73
|
var pass = true;
|
66
74
|
var result;
|
75
|
+
var newDefaultValue;
|
67
76
|
if (field.conditionsSet !== undefined) {
|
68
77
|
var passingConditions = field.conditionsSet.conditions.filter(function (c) {
|
69
|
-
var result = checkFieldCondition(c, formValues);
|
78
|
+
var result = checkFieldCondition(field, c, formValues);
|
70
79
|
return result.pass;
|
71
80
|
});
|
72
81
|
pass = field.conditionsSet.logic === 'or'
|
73
82
|
? passingConditions.length > 0
|
74
83
|
: passingConditions.length === field.conditionsSet.conditions.length;
|
75
|
-
result = field.conditionsSet.result;
|
84
|
+
result = pass ? ((_a = passingConditions[passingConditions.length - 1].result) !== null && _a !== void 0 ? _a : field.conditionsSet.result) : undefined;
|
85
|
+
newDefaultValue = pass ? (_b = passingConditions[passingConditions.length - 1].newDefaultValue) !== null && _b !== void 0 ? _b : field.conditionsSet.newDefaultValue : undefined;
|
76
86
|
}
|
77
87
|
if (field.conditions !== undefined && pass) {
|
78
|
-
var f = checkFieldCondition(field.conditions, formValues);
|
88
|
+
var f = checkFieldCondition(field, field.conditions, formValues);
|
79
89
|
pass = f.pass;
|
80
90
|
result = field.conditions.result;
|
91
|
+
newDefaultValue = f.newDefaultValue;
|
81
92
|
}
|
82
93
|
return {
|
83
94
|
pass: pass,
|
84
|
-
result: result !== null && result !== void 0 ? result : 'include'
|
95
|
+
result: result !== null && result !== void 0 ? result : 'include',
|
96
|
+
newDefaultValue: newDefaultValue
|
85
97
|
};
|
86
98
|
};
|
87
99
|
var testField = function (field, formValues) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"validators.js","sources":["../../../../src/utils/validators.ts"],"sourcesContent":["import { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\r\nimport { type IFormValues, type IFormField, type IFormSection, type IFieldCondition, type IValueType, type IFieldConditionOperator, type IFieldConditionResult } from '@/Form/Creator/FormCreatorTypes'\r\nimport { getFieldsFromFormSection, getFieldValue, getValueFromPath } from '@/utils/getters'\r\n\r\nconst compare = (val: IValueType | IValueType[], operator: IFieldConditionOperator, compareTo: string | number | boolean): boolean => {\r\n if (val === undefined || val === null) {\r\n return operator === '!='\r\n }\r\n if (operator === '=' || operator === 'eq') {\r\n // eslint-disable-next-line eqeqeq\r\n return val == compareTo\r\n }\r\n if (operator === '>' || operator === 'gt') {\r\n return +val > +compareTo\r\n }\r\n if (operator === '>=' || operator === 'gte') {\r\n return +val >= +compareTo\r\n }\r\n if (operator === '<' || operator === 'lt') {\r\n return +val < +compareTo\r\n }\r\n if (operator === '<=' || operator === 'lte') {\r\n return +val <= +compareTo\r\n }\r\n if (operator === '!=' || operator === '!eq') {\r\n // eslint-disable-next-line eqeqeq\r\n return val != compareTo\r\n }\r\n console.warn(`Unknown operator: ${String(operator)}`)\r\n return false\r\n}\r\n\r\nconst runCheck = (\r\n fieldValue: IValueType | IValueType[],\r\n operator: IFieldConditionOperator | undefined = '=',\r\n val: string | number | boolean | undefined\r\n): boolean => {\r\n if (val === undefined) {\r\n // ignore operator if val isn't set\r\n return fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== ''\r\n }\r\n return val !== undefined\r\n ? val === false\r\n ? (fieldValue === null || fieldValue === undefined || fieldValue === false || fieldValue === '')\r\n : compare(fieldValue, operator || '=', val)\r\n : (fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== '')\r\n}\r\n\r\nconst checkFieldCondition = (condition: IFieldCondition, formValues: IFormValues): ICheckConditionResult => {\r\n const fieldToEval = condition.field ?? condition.dependsOn\r\n if (fieldToEval === undefined) {\r\n console.warn('Field condition is missing field or dependsOn property')\r\n return {\r\n pass: true,\r\n result: condition.result ?? 'include'\r\n }\r\n }\r\n const dependsOn = Array.isArray(fieldToEval) ? fieldToEval : [fieldToEval]\r\n const val = condition.value\r\n const pass = dependsOn.every(d => {\r\n const fieldValue = getValueFromPath(d, formValues)\r\n return runCheck(\r\n fieldValue,\r\n condition.operator ?? '=',\r\n val\r\n )\r\n })\r\n return {\r\n pass,\r\n result: condition.result ?? 'include'\r\n }\r\n}\r\n\r\ninterface ICheckConditionResult {\r\n pass: boolean\r\n result: IFieldConditionResult\r\n}\r\n\r\nexport const checkCondition = (field: IFormField, formValues: IFormValues): ICheckConditionResult => {\r\n let pass: boolean = true\r\n let result: IFieldConditionResult | undefined\r\n if (field.conditionsSet !== undefined) {\r\n const passingConditions = field.conditionsSet.conditions.filter(c => {\r\n const result = checkFieldCondition(c, formValues)\r\n return result.pass\r\n })\r\n\r\n pass = field.conditionsSet.logic === 'or'\r\n ? passingConditions.length > 0\r\n : passingConditions.length === field.conditionsSet.conditions.length\r\n\r\n result = field.conditionsSet.result\r\n }\r\n\r\n if (field.conditions !== undefined && pass) {\r\n const f = checkFieldCondition(field.conditions, formValues)\r\n pass = f.pass\r\n result = field.conditions.result\r\n }\r\n\r\n return {\r\n pass,\r\n result: result ?? 'include'\r\n }\r\n}\r\n\r\nconst testField = (field: IFormField, formValues: IFormValues): boolean => {\r\n const val = getFieldValue(field, formValues)\r\n return val !== undefined && val !== null && val !== ''\r\n}\r\n\r\nexport const calculateSectionStatus = (sections: IFormSection[], formValues: IFormValues): IFormSectionStatus => {\r\n return Object.fromEntries(sections.map(s => {\r\n const fields = getFieldsFromFormSection(s).filter(f => f.type !== 'object')\r\n const total = fields.length\r\n const completed = fields.filter(f => testField(f, formValues)).length\r\n const required = fields.filter(f => f.required)\r\n const requiredTotal = required.length\r\n const requiredCompleted = required.filter(f => testField(f, formValues)).length\r\n const valid = requiredTotal === requiredCompleted\r\n return [s.id, { completed, total, requiredTotal, requiredCompleted, valid }]\r\n }))\r\n}\r\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"validators.js","sources":["../../../../src/utils/validators.ts"],"sourcesContent":["import { type IFormSectionStatus } from '@/Form/Creator/FormCreator'\r\nimport { type IFormValues, type IFormField, type IFormSection, type IFieldCondition, type IValueType, type IFieldConditionOperator, type IFieldConditionResult, type ICheckConditionResult } from '@/Form/Creator/FormCreatorTypes'\r\nimport { getFieldsFromFormSection, getFieldValue, getValueFromRelativePath } from '@/utils/getters'\r\n\r\nconst compare = (val: IValueType | IValueType[], operator: IFieldConditionOperator, compareTo: string | number | boolean): boolean => {\r\n if (val === undefined || val === null) {\r\n return operator === '!='\r\n }\r\n if (operator === '=' || operator === 'eq') {\r\n // eslint-disable-next-line eqeqeq\r\n return val == compareTo\r\n }\r\n if (operator === '>' || operator === 'gt') {\r\n return +val > +compareTo\r\n }\r\n if (operator === '>=' || operator === 'gte') {\r\n return +val >= +compareTo\r\n }\r\n if (operator === '<' || operator === 'lt') {\r\n return +val < +compareTo\r\n }\r\n if (operator === '<=' || operator === 'lte') {\r\n return +val <= +compareTo\r\n }\r\n if (operator === '!=' || operator === '!eq') {\r\n // eslint-disable-next-line eqeqeq\r\n return val != compareTo\r\n }\r\n console.warn(`Unknown operator: ${String(operator)}`)\r\n return false\r\n}\r\n\r\nconst runCheck = (\r\n fieldValue: IValueType | IValueType[],\r\n operator: IFieldConditionOperator | undefined = '=',\r\n val: string | number | boolean | undefined\r\n): boolean => {\r\n if (val === undefined) {\r\n // ignore operator if val isn't set\r\n return fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== ''\r\n }\r\n return val !== undefined\r\n ? val === false\r\n ? (fieldValue === null || fieldValue === undefined || fieldValue === false || fieldValue === '')\r\n : compare(fieldValue, operator || '=', val)\r\n : (fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== '')\r\n}\r\n\r\nconst checkFieldCondition = (field: IFormField, condition: IFieldCondition, formValues: IFormValues): ICheckConditionResult => {\r\n const fieldToEval = condition.field ?? condition.dependsOn\r\n if (fieldToEval === undefined) {\r\n console.warn('Field condition is missing field or dependsOn property')\r\n return {\r\n pass: true,\r\n result: condition.result ?? 'include',\r\n newDefaultValue: condition.newDefaultValue\r\n }\r\n }\r\n if (Array.isArray(fieldToEval)) {\r\n console.warn('Field condition dependsOn (or field) should not be an array, use conditionsSet for multiple conditions. dependsOn as array will be deprated')\r\n }\r\n const dependsOn = Array.isArray(fieldToEval) ? fieldToEval : [fieldToEval]\r\n const val = condition.value\r\n const pass = dependsOn.every(d => {\r\n /* const fieldPathIsRelative = d.startsWith('.')\r\n const fieldValue = getValueFromPath(d, formValues) */\r\n const fieldValue = getValueFromRelativePath(field, d, formValues)\r\n return runCheck(\r\n fieldValue,\r\n condition.operator ?? '=',\r\n val\r\n )\r\n })\r\n return {\r\n pass,\r\n result: condition.result ?? 'include',\r\n newDefaultValue: condition.newDefaultValue\r\n }\r\n}\r\n\r\nexport const checkCondition = (field: IFormField, formValues: IFormValues): ICheckConditionResult => {\r\n let pass: boolean = true\r\n let result: IFieldConditionResult | undefined\r\n let newDefaultValue: IValueType | IValueType[] | undefined\r\n if (field.conditionsSet !== undefined) {\r\n const passingConditions = field.conditionsSet.conditions.filter(c => {\r\n const result = checkFieldCondition(field, c, formValues)\r\n return result.pass\r\n })\r\n\r\n pass = field.conditionsSet.logic === 'or'\r\n ? passingConditions.length > 0\r\n : passingConditions.length === field.conditionsSet.conditions.length\r\n\r\n result = pass ? (passingConditions[passingConditions.length - 1].result ?? field.conditionsSet.result) : undefined\r\n newDefaultValue = pass ? passingConditions[passingConditions.length - 1].newDefaultValue ?? field.conditionsSet.newDefaultValue : undefined\r\n }\r\n\r\n if (field.conditions !== undefined && pass) {\r\n const f = checkFieldCondition(field, field.conditions, formValues)\r\n pass = f.pass\r\n result = field.conditions.result\r\n newDefaultValue = f.newDefaultValue\r\n }\r\n\r\n return {\r\n pass,\r\n result: result ?? 'include',\r\n newDefaultValue\r\n }\r\n}\r\n\r\nconst testField = (field: IFormField, formValues: IFormValues): boolean => {\r\n const val = getFieldValue(field, formValues)\r\n return val !== undefined && val !== null && val !== ''\r\n}\r\n\r\nexport const calculateSectionStatus = (sections: IFormSection[], formValues: IFormValues): IFormSectionStatus => {\r\n return Object.fromEntries(sections.map(s => {\r\n const fields = getFieldsFromFormSection(s).filter(f => f.type !== 'object')\r\n const total = fields.length\r\n const completed = fields.filter(f => testField(f, formValues)).length\r\n const required = fields.filter(f => f.required)\r\n const requiredTotal = required.length\r\n const requiredCompleted = required.filter(f => testField(f, formValues)).length\r\n const valid = requiredTotal === requiredCompleted\r\n return [s.id, { completed, total, requiredTotal, requiredCompleted, valid }]\r\n }))\r\n}\r\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@axdspub/axiom-ui-forms",
|
3
|
-
"version": "0.3.
|
3
|
+
"version": "0.3.6",
|
4
4
|
"private": false,
|
5
5
|
"type": "module",
|
6
6
|
"description": "Axiom UI Forms",
|
@@ -23,7 +23,8 @@
|
|
23
23
|
},
|
24
24
|
"dependencies": {
|
25
25
|
"@axdspub/axiom-maps": "^0.4.9",
|
26
|
-
"@axdspub/axiom-ui-
|
26
|
+
"@axdspub/axiom-ui-data-services": "^0.1.8",
|
27
|
+
"@axdspub/axiom-ui-utilities": "^0.2.2",
|
27
28
|
"@codemirror/lang-json": "^6.0.1",
|
28
29
|
"@codemirror/lang-yaml": "^6.1.2",
|
29
30
|
"@radix-ui/react-icons": "^1.3.2",
|
@@ -48,6 +49,7 @@
|
|
48
49
|
"jotai": "^2.7.0",
|
49
50
|
"jotai-tanstack-query": "^0.8.5",
|
50
51
|
"js-yaml": "^4.1.0",
|
52
|
+
"jsonpath-plus": "^10.3.0",
|
51
53
|
"lodash-es": "^4.17.21",
|
52
54
|
"lodash.set": "^4.3.2",
|
53
55
|
"postcss": "^8.5.3",
|