@axdspub/axiom-ui-forms 0.3.3 → 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.
- package/library/axiom-ui-forms.d.ts +56 -26
- package/library/esm/_virtual/index10.js +2 -2
- package/library/esm/_virtual/index3.js +2 -2
- package/library/esm/_virtual/index4.js +2 -2
- package/library/esm/_virtual/index9.js +2 -2
- package/library/esm/node_modules/@axdspub/axiom-maps/library/index.js +1 -1
- package/library/esm/node_modules/@axdspub/axiom-maps/library/openlayers/index.esm.js +1 -1
- package/library/esm/node_modules/@axdspub/axiom-maps/node_modules/@axdspub/axiom-ui-utilities/library/index.js +15219 -0
- package/library/esm/node_modules/@axdspub/axiom-maps/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -0
- package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js +122 -90
- package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -1
- package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js +23 -1
- package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js.map +1 -1
- package/library/esm/node_modules/ajv/dist/compile/validate/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/lodash-es/_SetCache.js +28 -0
- package/library/esm/node_modules/lodash-es/_SetCache.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_arrayLikeKeys.js +8 -1
- package/library/esm/node_modules/lodash-es/_arrayLikeKeys.js.map +1 -1
- package/library/esm/node_modules/lodash-es/_arraySome.js +24 -0
- package/library/esm/node_modules/lodash-es/_arraySome.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_baseIsEqual.js +29 -0
- package/library/esm/node_modules/lodash-es/_baseIsEqual.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_baseIsEqualDeep.js +84 -0
- package/library/esm/node_modules/lodash-es/_baseIsEqualDeep.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_baseKeys.js +31 -0
- package/library/esm/node_modules/lodash-es/_baseKeys.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_baseTrim.js +20 -0
- package/library/esm/node_modules/lodash-es/_baseTrim.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_cacheHas.js +14 -0
- package/library/esm/node_modules/lodash-es/_cacheHas.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_equalArrays.js +85 -0
- package/library/esm/node_modules/lodash-es/_equalArrays.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_equalByTag.js +113 -0
- package/library/esm/node_modules/lodash-es/_equalByTag.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_equalObjects.js +91 -0
- package/library/esm/node_modules/lodash-es/_equalObjects.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_getAllKeys.js +17 -0
- package/library/esm/node_modules/lodash-es/_getAllKeys.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_mapToArray.js +19 -0
- package/library/esm/node_modules/lodash-es/_mapToArray.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_nativeKeys.js +7 -0
- package/library/esm/node_modules/lodash-es/_nativeKeys.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_setCacheAdd.js +20 -0
- package/library/esm/node_modules/lodash-es/_setCacheAdd.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_setCacheHas.js +15 -0
- package/library/esm/node_modules/lodash-es/_setCacheHas.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_setToArray.js +19 -0
- package/library/esm/node_modules/lodash-es/_setToArray.js.map +1 -0
- package/library/esm/node_modules/lodash-es/_trimmedEndIndex.js +20 -0
- package/library/esm/node_modules/lodash-es/_trimmedEndIndex.js.map +1 -0
- package/library/esm/node_modules/lodash-es/debounce.js +192 -0
- package/library/esm/node_modules/lodash-es/debounce.js.map +1 -0
- package/library/esm/node_modules/lodash-es/isEqual.js +36 -0
- package/library/esm/node_modules/lodash-es/isEqual.js.map +1 -0
- package/library/esm/node_modules/lodash-es/keys.js +38 -0
- package/library/esm/node_modules/lodash-es/keys.js.map +1 -0
- package/library/esm/node_modules/lodash-es/keysIn.js +1 -1
- package/library/esm/node_modules/lodash-es/keysIn.js.map +1 -1
- package/library/esm/node_modules/lodash-es/now.js +24 -0
- package/library/esm/node_modules/lodash-es/now.js.map +1 -0
- package/library/esm/node_modules/lodash-es/toNumber.js +65 -0
- package/library/esm/node_modules/lodash-es/toNumber.js.map +1 -0
- package/library/esm/src/Form/Components/FieldCreator.js +86 -31
- package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
- package/library/esm/src/Form/Components/FieldLabel.js +90 -19
- package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
- package/library/esm/src/Form/Components/InlineMarkdown.js +4 -0
- package/library/esm/src/Form/Components/InlineMarkdown.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Boolean.js +8 -6
- 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/Date.js +3 -4
- package/library/esm/src/Form/Components/Inputs/Date.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/DateTime.js +3 -4
- package/library/esm/src/Form/Components/Inputs/DateTime.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/GeoJSON.js +5 -4
- package/library/esm/src/Form/Components/Inputs/GeoJSON.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Geometry.js +20 -11
- package/library/esm/src/Form/Components/Inputs/Geometry.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/JSON.js +6 -5
- package/library/esm/src/Form/Components/Inputs/JSON.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/LongString.js +5 -5
- package/library/esm/src/Form/Components/Inputs/LongString.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Number.js +49 -35
- package/library/esm/src/Form/Components/Inputs/Number.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Object.js +46 -11
- package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/RadioGroup.js +2 -3
- package/library/esm/src/Form/Components/Inputs/RadioGroup.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/SingleSelect.js +2 -3
- package/library/esm/src/Form/Components/Inputs/SingleSelect.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/String.js +5 -11
- package/library/esm/src/Form/Components/Inputs/String.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Time.js +2 -3
- package/library/esm/src/Form/Components/Inputs/Time.js.map +1 -1
- package/library/esm/src/Form/Creator/FormCreator.js +6 -6
- 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/Page.js +7 -2
- package/library/esm/src/Form/Creator/Page.js.map +1 -1
- package/library/esm/src/Form/Creator/Wizard.js +6 -6
- 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/helpers.js +11 -0
- package/library/esm/src/utils/helpers.js.map +1 -0
- package/library/esm/src/utils/manipulators.js +30 -11
- package/library/esm/src/utils/manipulators.js.map +1 -1
- package/library/esm/src/utils/schemaToFormHelpers.js +2 -2
- package/library/esm/src/utils/schemaToFormHelpers.js.map +1 -1
- package/library/esm/src/utils/validators.js +94 -15
- package/library/esm/src/utils/validators.js.map +1 -1
- package/package.json +5 -3
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"schemaToFormHelpers.js","sources":["../../../../src/utils/schemaToFormHelpers.ts"],"sourcesContent":["import { type IFormOverride, type IForm, type IFormField, type IFormFieldType, type IFormValues, type IFormFieldOverride, type IFormSectionOverride, type IPage, type IFormSection, type IWizardStep, type IValueType, type INumberField } from '@/Form/Creator/FormCreatorTypes'\r\nimport Ajv, { type ValidateFunction } from 'ajv'\r\nimport addFormats from 'ajv-formats'\r\n\r\nimport { type JSONSchema6Type, type JSONSchema6Definition, type JSONSchema6 } from 'json-schema'\r\n\r\nimport metaSchemaDraftV7 from 'ajv/lib/refs/json-schema-draft-07.json'\r\nimport metaSchemaDraftV6 from 'ajv/lib/refs/json-schema-draft-06.json'\r\nimport metaSchemaV5 from 'ajv/lib/refs/json-schema-2020-12/schema.json'\r\nimport metaSchemaV4 from 'ajv/lib/refs/json-schema-2019-09/schema.json'\r\n\r\nimport { resolveRefs } from '@/utils/resolveRefs'\r\nimport { omit } from 'lodash-es'\r\nimport { type ISelectOptionProps } from '@axdspub/axiom-ui-utilities'\r\nimport { getFieldsFromFormSection, getPathFromField, makeJsonPath } from '@/utils/getters'\r\nimport { copyAndAddPathToFields } from '@/utils/manipulators'\r\n\r\nconst getValidator = (schema: number): ValidateFunction => {\r\n const ajv = new Ajv({\r\n strict: false\r\n })\r\n addFormats(ajv)\r\n switch (schema) {\r\n case 4:\r\n return ajv.compile(metaSchemaV4)\r\n case 5:\r\n return ajv.compile(metaSchemaV5)\r\n case 6:\r\n return ajv.compile(metaSchemaDraftV6)\r\n case 7:\r\n return ajv.compile(metaSchemaDraftV7)\r\n default:\r\n return ajv.compile(metaSchemaV5)\r\n }\r\n}\r\n\r\nexport const validateSchema = (schemaOb: unknown, version: number = 6): { schema?: JSONSchema6, error?: string, unrefed?: JSONSchema6 } => {\r\n const ajv = new Ajv({ strict: false })\r\n addFormats(ajv)\r\n const validator = getValidator(version)\r\n const valid = validator(schemaOb)\r\n if (!valid) {\r\n return { error: ajv.errorsText(validator.errors) }\r\n }\r\n // const v = ajv.compile<JSONSchema6>(schemaOb as JSONSchema6)\r\n /* registerSchema(schemaOb as SchemaObject, 'https://axds.co/test')\r\n const bundledSchema = await bundle('https://axds.co/test')\r\n return { schema: bundledSchema as JSONSchema6 } */\r\n\r\n const resolved = resolveRefs(structuredClone(schemaOb) as JSONSchema6)\r\n return { schema: resolved, unrefed: schemaOb as JSONSchema6 }\r\n}\r\n\r\nexport const validateAgainstSchema = (schema: JSONSchema6, formValues: IFormValues): string[] | undefined => {\r\n const validSchema = validateSchema(schema)\r\n if (validSchema.error !== undefined) {\r\n return [validSchema.error]\r\n }\r\n const ajv = new Ajv({ strict: false, allErrors: true })\r\n addFormats(ajv)\r\n const validator = ajv.compile(schema)\r\n const valid = validator(formValues)\r\n if (validator.errors !== null && validator.errors !== undefined && !valid) {\r\n return validator.errors.map(e => {\r\n return `${e.instancePath} ${e.message}`\r\n })\r\n }\r\n return undefined\r\n}\r\n\r\nconst makeRandom = (): string => {\r\n return crypto !== undefined ? crypto.randomUUID() : Math.random().toString(36).substring(2)\r\n}\r\n\r\nconst makeFormFieldId = (options: Array<string | number | undefined | null>): string => {\r\n const validOptions = options.filter((o) => o !== undefined && o !== null)\r\n if (validOptions.length === 0) {\r\n return makeRandom()\r\n }\r\n return String(validOptions[0])\r\n}\r\n\r\nconst makeLabel = (options: Array<string | number | undefined | null>): string | undefined => {\r\n const validOptions = options.filter((o) => o !== undefined && o !== null)\r\n if (validOptions.length === 0) {\r\n return undefined\r\n }\r\n return String(validOptions[0])\r\n .replace(/_|-/g, ' ')\r\n .split(' ')\r\n .map((s, i) => {\r\n return i === 0 ? `${s.charAt(0).toUpperCase()}${s.slice(1)}` : s\r\n }).join(' ')\r\n}\r\n\r\nconst getFieldType = (schema: JSONSchema6): IFormFieldType => {\r\n const schemaType = schema.type\r\n if (schemaType === 'string' || schemaType === 'number' || schemaType === 'integer') {\r\n if (schema.enum !== undefined || schema.oneOf !== undefined) {\r\n return 'select'\r\n } else if (schema.anyOf !== undefined) {\r\n return 'checkbox'\r\n } else if (schemaType === 'string' && (schema.maxLength !== undefined && schema.maxLength <= 100)) {\r\n return 'text'\r\n } else if (schemaType === 'number' || schemaType === 'integer') {\r\n return 'number'\r\n } else if (schema.format === 'date-time') {\r\n return 'datetime'\r\n } else if (schema.format === 'date') {\r\n return 'date'\r\n } else if (schema.format === 'time') {\r\n return 'time'\r\n }\r\n return 'long_text'\r\n } else if (schemaType === 'boolean') {\r\n return 'boolean'\r\n } else if (schemaType === 'object' || (schemaType === undefined && (schema.oneOf !== undefined || schema.anyOf !== undefined || schema.allOf !== undefined))) {\r\n return 'object'\r\n }\r\n if (!schemaType && (schema.anyOf !== undefined || schema.enum !== undefined)) {\r\n return 'object'\r\n }\r\n\r\n return 'text'\r\n}\r\n\r\nexport const getValueFromSchema = (schema: JSONSchema6Type | JSONSchema6Definition | undefined): string | number | boolean | undefined => {\r\n if (schema === undefined || schema === null) {\r\n return undefined\r\n }\r\n if (typeof schema === 'string' || typeof schema === 'number' || typeof schema === 'boolean') {\r\n return schema\r\n }\r\n if (Array.isArray(schema)) {\r\n if (schema.length > 0) {\r\n return getValueFromSchema(schema[0])\r\n }\r\n return undefined\r\n }\r\n if (schema.const !== undefined) {\r\n return String(schema.const)\r\n }\r\n if (schema.title !== undefined && schema.title !== null) {\r\n return getValueFromSchema(schema.title)\r\n }\r\n if (schema.$id !== undefined && schema.$id !== null) {\r\n if (typeof schema.$id === 'string' || typeof schema.$id === 'number') {\r\n return makeLabel([String(schema.$id)])\r\n }\r\n return getValueFromSchema(schema.$id)\r\n }\r\n if (Array.isArray(schema) && schema.length === 2) {\r\n return typeof schema[0] === 'object' && schema[0] !== null ? getValueFromSchema(schema[0]) : schema[0]\r\n }\r\n return undefined\r\n}\r\n\r\nexport const getLabelFromSchema = (schema: JSONSchema6Type | JSONSchema6Definition | undefined): string | undefined => {\r\n if (schema === undefined || schema === null) {\r\n return undefined\r\n }\r\n if (typeof schema === 'boolean') {\r\n return schema ? 'true' : 'false'\r\n }\r\n if (typeof schema === 'string' || typeof schema === 'number' || typeof schema === 'boolean') {\r\n return String(schema)\r\n }\r\n if (Array.isArray(schema)) {\r\n if (schema.length > 0) {\r\n return getLabelFromSchema(schema[0])\r\n }\r\n return undefined\r\n }\r\n if (schema.title !== undefined && schema.title !== null) {\r\n return getLabelFromSchema(schema.title)\r\n }\r\n if (Array.isArray(schema) && schema.length === 2) {\r\n return typeof schema[1] === 'object' && schema[1] !== null ? getLabelFromSchema(schema[1]) : schema[1]\r\n }\r\n return String(getValueFromSchema(schema))\r\n}\r\n\r\ninterface ISchemaToFormFieldProps {\r\n schema: JSONSchema6\r\n property: string\r\n schemaField: JSONSchema6\r\n multiple?: boolean\r\n path?: string[]\r\n}\r\n\r\nconst schemaToFormField = ({\r\n schema,\r\n property,\r\n schemaField,\r\n multiple,\r\n path = []\r\n}: ISchemaToFormFieldProps): IFormField => {\r\n path.push(property)\r\n if (schemaField === undefined) {\r\n return {\r\n id: makeFormFieldId([schema.$id, property]),\r\n label: property,\r\n type: 'text',\r\n multiple\r\n }\r\n }\r\n if (typeof schemaField === 'boolean') {\r\n return {\r\n id: makeFormFieldId([schema.$id, property]),\r\n label: property,\r\n type: 'boolean',\r\n multiple\r\n }\r\n }\r\n if (schemaField.type === 'array' && schemaField.items !== undefined) {\r\n return schemaToFormField({\r\n schema: schemaField,\r\n property,\r\n schemaField: schemaField.items as JSONSchema6,\r\n multiple: true,\r\n path: path.slice()\r\n })\r\n }\r\n if (schemaField.anyOf !== undefined && schemaField.anyOf.length === 2 && schemaField.anyOf.filter(d => typeof d !== 'boolean' && d.type === 'null').length === 1) {\r\n const notNull = schemaField.anyOf.filter(d => typeof d !== 'boolean' && d.type !== 'null')[0]\r\n return schemaToFormField({\r\n schema: schemaField,\r\n property,\r\n schemaField: { ...omit(schemaField, 'anyOf'), ...(typeof notNull !== 'boolean' ? notNull : {}) },\r\n multiple,\r\n path: path.slice()\r\n })\r\n }\r\n const type = getFieldType(schemaField)\r\n const id = makeFormFieldId([\r\n schemaField.$id,\r\n property,\r\n schemaField.title?.toLowerCase().replace(' ', '-')\r\n ])\r\n const label = makeLabel([\r\n schemaField.title,\r\n property\r\n ])\r\n const schemaRequired = schema.required ?? []\r\n const ob: Pick<IFormField, 'id' | 'label' | 'description' | 'multiple' | 'required' | 'defaultValue'> = {\r\n id,\r\n label,\r\n description: schemaField.description,\r\n multiple,\r\n defaultValue: schemaField.default !== undefined ? schemaField.default as IValueType : undefined,\r\n required: schemaRequired.includes(property) ?? false\r\n }\r\n if (type === 'text' || type === 'number' || type === 'long_text' || type === 'boolean' || type === 'datetime' || type === 'date' || type === 'time') {\r\n if (type === 'number' && (schemaField.minimum !== undefined || schemaField.maximum !== undefined)) {\r\n const numberOb = ob as INumberField\r\n numberOb.constraints = numberOb.constraints ?? {}\r\n if (schemaField.minimum !== undefined) {\r\n numberOb.constraints.min = schemaField.minimum\r\n }\r\n if (schemaField.maximum !== undefined) {\r\n numberOb.constraints.max = schemaField.maximum\r\n }\r\n return {\r\n ...numberOb,\r\n type\r\n }\r\n }\r\n return {\r\n ...ob,\r\n type\r\n }\r\n }\r\n\r\n if (type === 'select' || type === 'checkbox') {\r\n const schemaOptions = schemaField.enum ?? schemaField.oneOf ?? schemaField.anyOf ?? []\r\n const options = schemaOptions.map(e => {\r\n const value = getValueFromSchema(e)\r\n const label = getLabelFromSchema(e)\r\n return value !== undefined\r\n ? {\r\n value: String(value),\r\n label: label ?? String(value)\r\n }\r\n : null\r\n }).filter(d => d !== null)\r\n return {\r\n ...ob,\r\n type,\r\n options\r\n }\r\n }\r\n if (type === 'object') {\r\n // const anyOfAsProps = schemaField.anyOf !== undefined && schemaField.anyOf.filter(d => typeof d !== 'boolean' && d.type !== 'null').length > 0\r\n const properties = schemaField.properties ?? {}\r\n const fields: IFormField[] = []\r\n for (const key in properties) {\r\n if (properties[key] !== undefined && typeof properties[key] !== 'boolean') {\r\n fields.push(schemaToFormField({\r\n schema: schemaField,\r\n property: key,\r\n schemaField: properties[key],\r\n path: path.slice()\r\n }))\r\n }\r\n }\r\n\r\n if (schemaField.oneOf !== undefined) {\r\n const oneOfFields: IFormField[] = []\r\n const options: ISelectOptionProps[] = []\r\n const selectorField = `select_${property}`\r\n schemaField.oneOf.forEach((f, i) => {\r\n if (typeof f !== 'boolean') {\r\n let value = f.$id ?? f.title\r\n if ((schemaField as any).discriminator?.propertyName !== undefined) {\r\n const v = getValueFromSchema(f?.properties?.[(schemaField as any).discriminator?.propertyName])\r\n if (v !== null && v !== undefined && typeof v !== 'boolean') {\r\n value = String(v)\r\n }\r\n }\r\n if (value === undefined || value === null) {\r\n value = `${property}_${i}`\r\n }\r\n options.push({\r\n label: f.title ?? f.$id ?? `${property} option ${String(i + 1)}`,\r\n value\r\n })\r\n const oneOfield = schemaToFormField({\r\n schema: schemaField,\r\n property: value,\r\n schemaField: f,\r\n path: path.slice()\r\n })\r\n oneOfield.conditions = {\r\n dependsOn: `${path.join('.')}.${selectorField}`,\r\n value\r\n }\r\n oneOfFields.push(oneOfield)\r\n }\r\n })\r\n fields.push({\r\n id: selectorField,\r\n type: 'select',\r\n label: schemaField.title,\r\n options\r\n })\r\n oneOfFields.forEach(f => {\r\n fields.push(f)\r\n })\r\n }\r\n\r\n const ofArr = (schemaField.anyOf ?? []).concat(schemaField.allOf ?? [])\r\n ofArr.forEach((anyOf) => {\r\n const anyOfId = schemaField.$id\r\n if (typeof anyOf !== 'boolean' && anyOf.type !== 'null') {\r\n const field = schemaToFormField({\r\n schema: schemaField,\r\n property: anyOfId ?? makeRandom(),\r\n schemaField: typeof anyOf === 'boolean'\r\n ? anyOf\r\n : {\r\n title: anyOf.title ?? '',\r\n ...anyOf\r\n },\r\n path: path.slice()\r\n })\r\n if (anyOfId === undefined && field.type === 'object') {\r\n field.skip_path = true\r\n }\r\n fields.push(field)\r\n }\r\n })\r\n\r\n return {\r\n ...ob,\r\n type,\r\n fields,\r\n multiple\r\n }\r\n }\r\n\r\n return {\r\n id,\r\n type: 'text',\r\n multiple\r\n }\r\n}\r\n\r\nexport function mergeObjects<T extends Record<string, any>> (objects: T[]): T {\r\n const initialValue: T = {} as unknown as T\r\n return objects.reduce<T>((acc, obj) => ({ ...acc, ...obj }), initialValue)\r\n}\r\n\r\nconst mergeFormField = ({\r\n field,\r\n fieldOverride,\r\n formFieldsOverrideMap,\r\n schemaFieldMap\r\n}: {\r\n field: IFormField\r\n fieldOverride?: IFormFieldOverride\r\n formFieldsOverrideMap: Array<Record<string, IFormFieldOverride>>\r\n schemaFieldMap: Record<string, IFormField>\r\n}): IFormField => {\r\n const path = fieldOverride?.prop ?? makeJsonPath(field)\r\n const formFieldOverrides = mergeObjects<IFormFieldOverride>(formFieldsOverrideMap.map(overrides => overrides[path ?? '']).filter(d => d !== undefined))\r\n const mergedField = {\r\n ...mergeObjects<IFormFieldOverride | IFormField>([\r\n {\r\n ...field,\r\n destPath: path\r\n },\r\n formFieldOverrides,\r\n (fieldOverride ?? {}) as IFormFieldOverride\r\n ])\r\n }\r\n const labelProp = mergedField.id ?? (\r\n path !== undefined\r\n ? path.split('.').pop()\r\n : fieldOverride?.prop ?? field.id\r\n )\r\n const id = mergedField.id ?? makeFormFieldId([mergedField.id])\r\n if (mergedField.type === 'object') {\r\n // attached to the schema field. defaults not overrides\r\n const fieldFields = field?.type === 'object' ? field.fields : []\r\n const fieldFieldsMap = Object.fromEntries(fieldFields.map(f => [getPathFromField(f), f]))\r\n\r\n // attached to the field override. overrides\r\n const overrideFields = fieldOverride?.type === 'object' ? (fieldOverride.fields ?? []) : []\r\n const overrideFieldsMap = Object.fromEntries(\r\n overrideFields\r\n .filter((f): f is IFormFieldOverride => 'prop' in f)\r\n .map(f => [f.prop, f])\r\n )\r\n\r\n // attached to the form override. overrides\r\n const formOverrideFields = formFieldOverrides.type === 'object' ? formFieldOverrides.fields ?? [] : []\r\n const formOverrideFieldsMap = Object.fromEntries(\r\n formOverrideFields\r\n .filter((f): f is IFormFieldOverride => 'prop' in f)\r\n .map(f => [f.prop, f])\r\n )\r\n\r\n const allKeys = Object.keys({\r\n ...fieldFieldsMap,\r\n ...overrideFieldsMap,\r\n ...formOverrideFieldsMap\r\n })\r\n\r\n mergedField.fields = allKeys.map(key => {\r\n // const fieldOverride = overrideFieldsMap[key] ?? { prop: key }\r\n const fieldOverride = mergeObjects<IFormFieldOverride>([\r\n overrideFieldsMap[key],\r\n formOverrideFieldsMap[key],\r\n mergeObjects<IFormFieldOverride>(formFieldsOverrideMap.map(overrides => overrides[key]).filter(d => d !== undefined))\r\n ])\r\n return mergeFormField({\r\n field: fieldFieldsMap[key] ?? schemaFieldMap[key],\r\n fieldOverride,\r\n formFieldsOverrideMap,\r\n schemaFieldMap\r\n })\r\n })\r\n }\r\n return {\r\n type: mergedField.type ?? 'text',\r\n id,\r\n label: mergedField.label ?? makeLabel([labelProp]) ?? 'Default',\r\n ...mergedField\r\n } as unknown as IFormField\r\n}\r\n\r\nconst mergeFormFields = ({\r\n fieldOverrides,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n}: {\r\n fieldOverrides?: IFormFieldOverride[]\r\n schemaForm: IForm\r\n formFieldsOverrideMap: Array<Record<string, IFormFieldOverride>>\r\n}): IFormField[] => {\r\n const schemaFieldMap = buildFieldMapFromForm(schemaForm)\r\n\r\n return (fieldOverrides ?? []).map(fieldOverride => {\r\n const schemaField = schemaFieldMap[fieldOverride.prop]\r\n return mergeFormField({\r\n field: schemaField,\r\n fieldOverride,\r\n formFieldsOverrideMap,\r\n schemaFieldMap\r\n })\r\n })\r\n}\r\n\r\nconst mergeFormSections = ({\r\n sectionOverrides,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n\r\n}: {\r\n sectionOverrides?: IFormSectionOverride[]\r\n schemaForm: IForm\r\n formFieldsOverrideMap: Array<Record<string, IFormFieldOverride>>\r\n\r\n}): IFormSection[] => {\r\n const sections = (sectionOverrides ?? []).map((sectionToMerge, index) => {\r\n const sectionFields = mergeFormFields({\r\n fieldOverrides: sectionToMerge.fields,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n })\r\n const sectionId = sectionToMerge.id ?? makeFormFieldId([sectionToMerge.id, index])\r\n return {\r\n id: sectionId ?? makeFormFieldId([sectionId, index]),\r\n label: sectionToMerge.label ?? makeLabel([sectionId]),\r\n ...sectionToMerge,\r\n fields: sectionToMerge.fields !== undefined\r\n ? sectionFields\r\n : undefined,\r\n wizard_steps: sectionToMerge.wizard_steps !== undefined\r\n ? mergeFormSections({\r\n sectionOverrides: sectionToMerge.wizard_steps,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n })\r\n : undefined,\r\n pages: sectionToMerge.pages !== undefined\r\n ? mergeFormSections({\r\n sectionOverrides: sectionToMerge.pages,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n })\r\n : undefined\r\n }\r\n })\r\n return sections as IFormSection[]\r\n}\r\n\r\nexport const overridesAndSchemaToFormObject = ({\r\n formOverrides,\r\n formFieldOverrides,\r\n schema\r\n}: {\r\n formOverrides?: IFormOverride[]\r\n formFieldOverrides?: IFormFieldOverride[][]\r\n schema: JSONSchema6\r\n}): IForm => {\r\n const schemaForm = schemaToFormObject(schema)\r\n const formFieldOverridesByProp = formFieldOverrides?.map(overrides => Object.fromEntries(\r\n overrides !== undefined && typeof overrides.map === 'function'\r\n ? overrides.map(override => [override.prop, override])\r\n : []\r\n )) ?? []\r\n if (formOverrides === undefined && formFieldOverrides !== undefined) {\r\n const schemaFieldMap = buildFieldMapFromForm(schemaForm)\r\n const fields = Object.values(schemaFieldMap).map(field => {\r\n return mergeFormField({\r\n field,\r\n formFieldsOverrideMap: formFieldOverridesByProp,\r\n schemaFieldMap\r\n })\r\n })\r\n return {\r\n ...schemaForm,\r\n fields\r\n }\r\n }\r\n const mergedFormOverrides = mergeObjects<IFormOverride>(formOverrides ?? [])\r\n const form: IForm = {\r\n id: schemaForm.id,\r\n label: mergedFormOverrides?.label ?? schemaForm.label,\r\n settings: mergedFormOverrides?.settings\r\n }\r\n\r\n form.pages = mergedFormOverrides.pages !== undefined\r\n ? mergeFormSections({\r\n sectionOverrides: mergedFormOverrides.pages,\r\n schemaForm,\r\n formFieldsOverrideMap: formFieldOverridesByProp\r\n }) as IPage[]\r\n : undefined\r\n form.wizard_steps = mergedFormOverrides.wizard_steps !== undefined\r\n ? mergeFormSections({\r\n sectionOverrides: mergedFormOverrides.wizard_steps,\r\n schemaForm,\r\n formFieldsOverrideMap: formFieldOverridesByProp\r\n }) as IWizardStep[]\r\n : undefined\r\n\r\n form.fields = mergeFormFields({\r\n fieldOverrides: mergedFormOverrides.fields,\r\n schemaForm,\r\n formFieldsOverrideMap: formFieldOverridesByProp\r\n })\r\n\r\n return form\r\n}\r\n\r\nexport const schemaToFormObject = (schema: JSONSchema6): IForm => {\r\n const resolvedSchema = resolveRefs(schema)\r\n const formFields: IFormField[] = []\r\n for (const key in resolvedSchema.properties) {\r\n if (resolvedSchema.properties[key] !== undefined && typeof resolvedSchema.properties[key] !== 'boolean') {\r\n formFields.push(schemaToFormField({\r\n schema: resolvedSchema,\r\n property: key,\r\n schemaField: resolvedSchema.properties[key],\r\n path: []\r\n }))\r\n }\r\n }\r\n return {\r\n id: makeFormFieldId([resolvedSchema.$id, resolvedSchema.title?.toLowerCase().replace(' ', '-')]),\r\n label: schema.title ?? 'Untitled',\r\n fields: formFields\r\n }\r\n}\r\n\r\nexport const buildFieldMapFromForm = (form: IForm): Record<string, IFormField> => {\r\n const formCopy = copyAndAddPathToFields(form)\r\n const fields = getFieldsFromFormSection(formCopy)\r\n return Object.fromEntries(fields.map(field => [getPathFromField(field), field]))\r\n}\r\n\r\nexport const getSchemaPaths = (schema: any, prefix = ''): string[] => {\r\n let paths: string[] = []\r\n\r\n if (schema.type === 'object' && schema.properties) {\r\n for (const key of Object.keys(schema.properties)) {\r\n const newPrefix = prefix ? `${prefix}.${key}` : key\r\n paths.push(newPrefix)\r\n paths = paths.concat(getSchemaPaths(schema.properties[key], newPrefix))\r\n }\r\n } else if (schema.type === 'array' && schema.items) {\r\n const arrayPrefix = `${prefix}[]`\r\n paths.push(arrayPrefix)\r\n paths = paths.concat(getSchemaPaths(schema.items, arrayPrefix))\r\n } else if (schema.oneOf || schema.anyOf || schema.allOf) {\r\n for (const subSchema of schema.oneOf || schema.anyOf || schema.allOf) {\r\n if (subSchema.properties) {\r\n paths = paths.concat(getSchemaPaths(subSchema, prefix))\r\n }\r\n }\r\n }\r\n\r\n return paths\r\n}\r\n\r\nexport const getSchemaPathDescriptors = (schema: any, prefix = ''): Array<{ path: string, type: string, required: boolean }> => {\r\n let pathDescriptors: Array<{ path: string, type: string, required: boolean }> = []\r\n\r\n if (schema.type === 'object' && schema.properties) {\r\n for (const key of Object.keys(schema.properties)) {\r\n const newPrefix = prefix ? `${prefix}.${key}` : key\r\n pathDescriptors.push({\r\n path: newPrefix,\r\n type: schema.properties[key].type ?? 'object',\r\n required: schema.required ? schema.required.includes(key) : false\r\n })\r\n pathDescriptors = pathDescriptors.concat(getSchemaPathDescriptors(schema.properties[key], newPrefix))\r\n }\r\n } else if (schema.type === 'array' && schema.items) {\r\n const arrayPrefix = `${prefix}[]`\r\n pathDescriptors.push({\r\n path: arrayPrefix,\r\n type: schema.type,\r\n required: schema.required ? schema.required.includes(prefix) : false\r\n })\r\n pathDescriptors = pathDescriptors.concat(getSchemaPathDescriptors(schema.items, arrayPrefix))\r\n } else if (schema.oneOf || schema.anyOf || schema.allOf) {\r\n for (const subSchema of schema.oneOf || schema.anyOf || schema.allOf) {\r\n if (subSchema.properties) {\r\n pathDescriptors = pathDescriptors.concat(getSchemaPathDescriptors(subSchema, prefix))\r\n }\r\n }\r\n }\r\n\r\n return pathDescriptors\r\n}\r\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"schemaToFormHelpers.js","sources":["../../../../src/utils/schemaToFormHelpers.ts"],"sourcesContent":["import { type IFormOverride, type IForm, type IFormField, type IFormFieldType, type IFormValues, type IFormFieldOverride, type IFormSectionOverride, type IPage, type IFormSection, type IWizardStep, type IValueType, type INumberField } from '@/Form/Creator/FormCreatorTypes'\r\nimport Ajv, { type ValidateFunction } from 'ajv'\r\nimport addFormats from 'ajv-formats'\r\n\r\nimport { type JSONSchema6Type, type JSONSchema6Definition, type JSONSchema6 } from 'json-schema'\r\n\r\nimport metaSchemaDraftV7 from 'ajv/lib/refs/json-schema-draft-07.json'\r\nimport metaSchemaDraftV6 from 'ajv/lib/refs/json-schema-draft-06.json'\r\nimport metaSchemaV5 from 'ajv/lib/refs/json-schema-2020-12/schema.json'\r\nimport metaSchemaV4 from 'ajv/lib/refs/json-schema-2019-09/schema.json'\r\n\r\nimport { resolveRefs } from '@/utils/resolveRefs'\r\nimport { omit } from 'lodash-es'\r\nimport { type ISelectOptionProps } from '@axdspub/axiom-ui-utilities'\r\nimport { getFieldsFromFormSection, getPathFromField, makeJsonPath } from '@/utils/getters'\r\nimport { copyAndAddPathToFields } from '@/utils/manipulators'\r\n\r\nconst getValidator = (schema: number): ValidateFunction => {\r\n const ajv = new Ajv({\r\n strict: false\r\n })\r\n addFormats(ajv)\r\n switch (schema) {\r\n case 4:\r\n return ajv.compile(metaSchemaV4)\r\n case 5:\r\n return ajv.compile(metaSchemaV5)\r\n case 6:\r\n return ajv.compile(metaSchemaDraftV6)\r\n case 7:\r\n return ajv.compile(metaSchemaDraftV7)\r\n default:\r\n return ajv.compile(metaSchemaV5)\r\n }\r\n}\r\n\r\nexport const validateSchema = (schemaOb: unknown, version: number = 6): { schema?: JSONSchema6, error?: string, unrefed?: JSONSchema6 } => {\r\n const ajv = new Ajv({ strict: false })\r\n addFormats(ajv)\r\n const validator = getValidator(version)\r\n const valid = validator(schemaOb)\r\n if (!valid) {\r\n return { error: ajv.errorsText(validator.errors) }\r\n }\r\n // const v = ajv.compile<JSONSchema6>(schemaOb as JSONSchema6)\r\n /* registerSchema(schemaOb as SchemaObject, 'https://axds.co/test')\r\n const bundledSchema = await bundle('https://axds.co/test')\r\n return { schema: bundledSchema as JSONSchema6 } */\r\n\r\n const resolved = resolveRefs(structuredClone(schemaOb) as JSONSchema6)\r\n return { schema: resolved, unrefed: schemaOb as JSONSchema6 }\r\n}\r\n\r\nexport const validateAgainstSchema = (schema: JSONSchema6, formValues: IFormValues): string[] | undefined => {\r\n const validSchema = validateSchema(schema)\r\n if (validSchema.error !== undefined) {\r\n return [validSchema.error]\r\n }\r\n const ajv = new Ajv({ strict: false, allErrors: true })\r\n addFormats(ajv)\r\n const validator = ajv.compile(schema)\r\n const valid = validator(formValues)\r\n if (validator.errors !== null && validator.errors !== undefined && !valid) {\r\n return validator.errors.map(e => {\r\n return `${e.instancePath} ${e.message}`\r\n })\r\n }\r\n return undefined\r\n}\r\n\r\nconst makeRandom = (): string => {\r\n return crypto !== undefined ? crypto.randomUUID() : Math.random().toString(36).substring(2)\r\n}\r\n\r\nconst makeFormFieldId = (options: Array<string | number | undefined | null>): string => {\r\n const validOptions = options.filter((o) => o !== undefined && o !== null)\r\n if (validOptions.length === 0) {\r\n return makeRandom()\r\n }\r\n return String(validOptions[0])\r\n}\r\n\r\nconst makeLabel = (options: Array<string | number | undefined | null>): string | undefined => {\r\n const validOptions = options.filter((o) => o !== undefined && o !== null)\r\n if (validOptions.length === 0) {\r\n return undefined\r\n }\r\n return String(validOptions[0])\r\n .replace(/_|-/g, ' ')\r\n .split(' ')\r\n .map((s, i) => {\r\n return i === 0 ? `${s.charAt(0).toUpperCase()}${s.slice(1)}` : s\r\n }).join(' ')\r\n}\r\n\r\nconst getFieldType = (schema: JSONSchema6): IFormFieldType => {\r\n const schemaType = schema.type\r\n if (schemaType === 'string' || schemaType === 'number' || schemaType === 'integer') {\r\n if (schema.enum !== undefined || schema.oneOf !== undefined) {\r\n return 'select'\r\n } else if (schema.anyOf !== undefined) {\r\n return 'checkbox'\r\n } else if (schemaType === 'string' && (schema.maxLength !== undefined && schema.maxLength > 150)) {\r\n return 'text'\r\n } else if (schemaType === 'number' || schemaType === 'integer') {\r\n return 'number'\r\n } else if (schema.format === 'date-time') {\r\n return 'datetime'\r\n } else if (schema.format === 'date') {\r\n return 'date'\r\n } else if (schema.format === 'time') {\r\n return 'time'\r\n }\r\n return 'text'\r\n } else if (schemaType === 'boolean') {\r\n return 'boolean'\r\n } else if (schemaType === 'object' || (schemaType === undefined && (schema.oneOf !== undefined || schema.anyOf !== undefined || schema.allOf !== undefined))) {\r\n return 'object'\r\n }\r\n if (!schemaType && (schema.anyOf !== undefined || schema.enum !== undefined)) {\r\n return 'object'\r\n }\r\n\r\n return 'text'\r\n}\r\n\r\nexport const getValueFromSchema = (schema: JSONSchema6Type | JSONSchema6Definition | undefined): string | number | boolean | undefined => {\r\n if (schema === undefined || schema === null) {\r\n return undefined\r\n }\r\n if (typeof schema === 'string' || typeof schema === 'number' || typeof schema === 'boolean') {\r\n return schema\r\n }\r\n if (Array.isArray(schema)) {\r\n if (schema.length > 0) {\r\n return getValueFromSchema(schema[0])\r\n }\r\n return undefined\r\n }\r\n if (schema.const !== undefined) {\r\n return String(schema.const)\r\n }\r\n if (schema.title !== undefined && schema.title !== null) {\r\n return getValueFromSchema(schema.title)\r\n }\r\n if (schema.$id !== undefined && schema.$id !== null) {\r\n if (typeof schema.$id === 'string' || typeof schema.$id === 'number') {\r\n return makeLabel([String(schema.$id)])\r\n }\r\n return getValueFromSchema(schema.$id)\r\n }\r\n if (Array.isArray(schema) && schema.length === 2) {\r\n return typeof schema[0] === 'object' && schema[0] !== null ? getValueFromSchema(schema[0]) : schema[0]\r\n }\r\n return undefined\r\n}\r\n\r\nexport const getLabelFromSchema = (schema: JSONSchema6Type | JSONSchema6Definition | undefined): string | undefined => {\r\n if (schema === undefined || schema === null) {\r\n return undefined\r\n }\r\n if (typeof schema === 'boolean') {\r\n return schema ? 'true' : 'false'\r\n }\r\n if (typeof schema === 'string' || typeof schema === 'number' || typeof schema === 'boolean') {\r\n return String(schema)\r\n }\r\n if (Array.isArray(schema)) {\r\n if (schema.length > 0) {\r\n return getLabelFromSchema(schema[0])\r\n }\r\n return undefined\r\n }\r\n if (schema.title !== undefined && schema.title !== null) {\r\n return getLabelFromSchema(schema.title)\r\n }\r\n if (Array.isArray(schema) && schema.length === 2) {\r\n return typeof schema[1] === 'object' && schema[1] !== null ? getLabelFromSchema(schema[1]) : schema[1]\r\n }\r\n return String(getValueFromSchema(schema))\r\n}\r\n\r\ninterface ISchemaToFormFieldProps {\r\n schema: JSONSchema6\r\n property: string\r\n schemaField: JSONSchema6\r\n multiple?: boolean\r\n path?: string[]\r\n}\r\n\r\nconst schemaToFormField = ({\r\n schema,\r\n property,\r\n schemaField,\r\n multiple,\r\n path = []\r\n}: ISchemaToFormFieldProps): IFormField => {\r\n path.push(property)\r\n if (schemaField === undefined) {\r\n return {\r\n id: makeFormFieldId([schema.$id, property]),\r\n label: property,\r\n type: 'text',\r\n multiple\r\n }\r\n }\r\n if (typeof schemaField === 'boolean') {\r\n return {\r\n id: makeFormFieldId([schema.$id, property]),\r\n label: property,\r\n type: 'boolean',\r\n multiple\r\n }\r\n }\r\n if (schemaField.type === 'array' && schemaField.items !== undefined) {\r\n return schemaToFormField({\r\n schema: schemaField,\r\n property,\r\n schemaField: schemaField.items as JSONSchema6,\r\n multiple: true,\r\n path: path.slice()\r\n })\r\n }\r\n if (schemaField.anyOf !== undefined && schemaField.anyOf.length === 2 && schemaField.anyOf.filter(d => typeof d !== 'boolean' && d.type === 'null').length === 1) {\r\n const notNull = schemaField.anyOf.filter(d => typeof d !== 'boolean' && d.type !== 'null')[0]\r\n return schemaToFormField({\r\n schema: schemaField,\r\n property,\r\n schemaField: { ...omit(schemaField, 'anyOf'), ...(typeof notNull !== 'boolean' ? notNull : {}) },\r\n multiple,\r\n path: path.slice()\r\n })\r\n }\r\n const type = getFieldType(schemaField)\r\n const id = makeFormFieldId([\r\n schemaField.$id,\r\n property,\r\n schemaField.title?.toLowerCase().replace(' ', '-')\r\n ])\r\n const label = makeLabel([\r\n schemaField.title,\r\n property\r\n ])\r\n const schemaRequired = schema.required ?? []\r\n const ob: Pick<IFormField, 'id' | 'label' | 'description' | 'multiple' | 'required' | 'defaultValue'> = {\r\n id,\r\n label,\r\n description: schemaField.description,\r\n multiple,\r\n defaultValue: schemaField.default !== undefined ? schemaField.default as IValueType : undefined,\r\n required: schemaRequired.includes(property) ?? false\r\n }\r\n if (type === 'text' || type === 'number' || type === 'long_text' || type === 'boolean' || type === 'datetime' || type === 'date' || type === 'time') {\r\n if (type === 'number' && (schemaField.minimum !== undefined || schemaField.maximum !== undefined)) {\r\n const numberOb = ob as INumberField\r\n numberOb.constraints = numberOb.constraints ?? {}\r\n if (schemaField.minimum !== undefined) {\r\n numberOb.constraints.min = schemaField.minimum\r\n }\r\n if (schemaField.maximum !== undefined) {\r\n numberOb.constraints.max = schemaField.maximum\r\n }\r\n return {\r\n ...numberOb,\r\n type\r\n }\r\n }\r\n return {\r\n ...ob,\r\n type\r\n }\r\n }\r\n\r\n if (type === 'select' || type === 'checkbox') {\r\n const schemaOptions = schemaField.enum ?? schemaField.oneOf ?? schemaField.anyOf ?? []\r\n const options = schemaOptions.map(e => {\r\n const value = getValueFromSchema(e)\r\n const label = getLabelFromSchema(e)\r\n return value !== undefined\r\n ? {\r\n value: String(value),\r\n label: label ?? String(value)\r\n }\r\n : null\r\n }).filter(d => d !== null)\r\n return {\r\n ...ob,\r\n type,\r\n options\r\n }\r\n }\r\n if (type === 'object') {\r\n // const anyOfAsProps = schemaField.anyOf !== undefined && schemaField.anyOf.filter(d => typeof d !== 'boolean' && d.type !== 'null').length > 0\r\n const properties = schemaField.properties ?? {}\r\n const fields: IFormField[] = []\r\n for (const key in properties) {\r\n if (properties[key] !== undefined && typeof properties[key] !== 'boolean') {\r\n fields.push(schemaToFormField({\r\n schema: schemaField,\r\n property: key,\r\n schemaField: properties[key],\r\n path: path.slice()\r\n }))\r\n }\r\n }\r\n\r\n if (schemaField.oneOf !== undefined) {\r\n const oneOfFields: IFormField[] = []\r\n const options: ISelectOptionProps[] = []\r\n const selectorField = `select_${property}`\r\n schemaField.oneOf.forEach((f, i) => {\r\n if (typeof f !== 'boolean') {\r\n let value = f.$id ?? f.title\r\n if ((schemaField as any).discriminator?.propertyName !== undefined) {\r\n const v = getValueFromSchema(f?.properties?.[(schemaField as any).discriminator?.propertyName])\r\n if (v !== null && v !== undefined && typeof v !== 'boolean') {\r\n value = String(v)\r\n }\r\n }\r\n if (value === undefined || value === null) {\r\n value = `${property}_${i}`\r\n }\r\n options.push({\r\n label: f.title ?? f.$id ?? `${property} option ${String(i + 1)}`,\r\n value\r\n })\r\n const oneOfield = schemaToFormField({\r\n schema: schemaField,\r\n property: value,\r\n schemaField: f,\r\n path: path.slice()\r\n })\r\n oneOfield.conditions = {\r\n dependsOn: `${path.join('.')}.${selectorField}`,\r\n value\r\n }\r\n oneOfFields.push(oneOfield)\r\n }\r\n })\r\n fields.push({\r\n id: selectorField,\r\n type: 'select',\r\n label: schemaField.title,\r\n options\r\n })\r\n oneOfFields.forEach(f => {\r\n fields.push(f)\r\n })\r\n }\r\n\r\n const ofArr = (schemaField.anyOf ?? []).concat(schemaField.allOf ?? [])\r\n ofArr.forEach((anyOf) => {\r\n const anyOfId = schemaField.$id\r\n if (typeof anyOf !== 'boolean' && anyOf.type !== 'null') {\r\n const field = schemaToFormField({\r\n schema: schemaField,\r\n property: anyOfId ?? makeRandom(),\r\n schemaField: typeof anyOf === 'boolean'\r\n ? anyOf\r\n : {\r\n title: anyOf.title ?? '',\r\n ...anyOf\r\n },\r\n path: path.slice()\r\n })\r\n if (anyOfId === undefined && field.type === 'object') {\r\n field.skip_path = true\r\n }\r\n fields.push(field)\r\n }\r\n })\r\n\r\n return {\r\n ...ob,\r\n type,\r\n fields,\r\n multiple\r\n }\r\n }\r\n\r\n return {\r\n id,\r\n type: 'text',\r\n multiple\r\n }\r\n}\r\n\r\nexport function mergeObjects<T extends Record<string, any>> (objects: T[]): T {\r\n const initialValue: T = {} as unknown as T\r\n return objects.reduce<T>((acc, obj) => ({ ...acc, ...obj }), initialValue)\r\n}\r\n\r\nconst mergeFormField = ({\r\n field,\r\n fieldOverride,\r\n formFieldsOverrideMap,\r\n schemaFieldMap\r\n}: {\r\n field: IFormField\r\n fieldOverride?: IFormFieldOverride\r\n formFieldsOverrideMap: Array<Record<string, IFormFieldOverride>>\r\n schemaFieldMap: Record<string, IFormField>\r\n}): IFormField => {\r\n const path = fieldOverride?.prop ?? makeJsonPath(field)\r\n const formFieldOverrides = mergeObjects<IFormFieldOverride>(formFieldsOverrideMap.map(overrides => overrides[path ?? '']).filter(d => d !== undefined))\r\n const mergedField = {\r\n ...mergeObjects<IFormFieldOverride | IFormField>([\r\n {\r\n ...field,\r\n destPath: path\r\n },\r\n formFieldOverrides,\r\n (fieldOverride ?? {}) as IFormFieldOverride\r\n ])\r\n }\r\n const labelProp = mergedField.id ?? (\r\n path !== undefined\r\n ? path.split('.').pop()\r\n : fieldOverride?.prop ?? field.id\r\n )\r\n const id = mergedField.id ?? makeFormFieldId([mergedField.id])\r\n if (mergedField.type === 'object') {\r\n // attached to the schema field. defaults not overrides\r\n const fieldFields = field?.type === 'object' ? field.fields : []\r\n const fieldFieldsMap = Object.fromEntries(fieldFields.map(f => [getPathFromField(f), f]))\r\n\r\n // attached to the field override. overrides\r\n const overrideFields = fieldOverride?.type === 'object' ? (fieldOverride.fields ?? []) : []\r\n const overrideFieldsMap = Object.fromEntries(\r\n overrideFields\r\n .filter((f): f is IFormFieldOverride => 'prop' in f)\r\n .map(f => [f.prop, f])\r\n )\r\n\r\n // attached to the form override. overrides\r\n const formOverrideFields = formFieldOverrides.type === 'object' ? formFieldOverrides.fields ?? [] : []\r\n const formOverrideFieldsMap = Object.fromEntries(\r\n formOverrideFields\r\n .filter((f): f is IFormFieldOverride => 'prop' in f)\r\n .map(f => [f.prop, f])\r\n )\r\n\r\n const allKeys = Object.keys({\r\n ...fieldFieldsMap,\r\n ...overrideFieldsMap,\r\n ...formOverrideFieldsMap\r\n })\r\n\r\n mergedField.fields = allKeys.map(key => {\r\n // const fieldOverride = overrideFieldsMap[key] ?? { prop: key }\r\n const fieldOverride = mergeObjects<IFormFieldOverride>([\r\n overrideFieldsMap[key],\r\n formOverrideFieldsMap[key],\r\n mergeObjects<IFormFieldOverride>(formFieldsOverrideMap.map(overrides => overrides[key]).filter(d => d !== undefined))\r\n ])\r\n return mergeFormField({\r\n field: fieldFieldsMap[key] ?? schemaFieldMap[key],\r\n fieldOverride,\r\n formFieldsOverrideMap,\r\n schemaFieldMap\r\n })\r\n })\r\n }\r\n return {\r\n type: mergedField.type ?? 'text',\r\n id,\r\n label: mergedField.label ?? makeLabel([labelProp]) ?? 'Default',\r\n ...mergedField\r\n } as unknown as IFormField\r\n}\r\n\r\nconst mergeFormFields = ({\r\n fieldOverrides,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n}: {\r\n fieldOverrides?: IFormFieldOverride[]\r\n schemaForm: IForm\r\n formFieldsOverrideMap: Array<Record<string, IFormFieldOverride>>\r\n}): IFormField[] => {\r\n const schemaFieldMap = buildFieldMapFromForm(schemaForm)\r\n\r\n return (fieldOverrides ?? []).map(fieldOverride => {\r\n const schemaField = schemaFieldMap[fieldOverride.prop]\r\n return mergeFormField({\r\n field: schemaField,\r\n fieldOverride,\r\n formFieldsOverrideMap,\r\n schemaFieldMap\r\n })\r\n })\r\n}\r\n\r\nconst mergeFormSections = ({\r\n sectionOverrides,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n\r\n}: {\r\n sectionOverrides?: IFormSectionOverride[]\r\n schemaForm: IForm\r\n formFieldsOverrideMap: Array<Record<string, IFormFieldOverride>>\r\n\r\n}): IFormSection[] => {\r\n const sections = (sectionOverrides ?? []).map((sectionToMerge, index) => {\r\n const sectionFields = mergeFormFields({\r\n fieldOverrides: sectionToMerge.fields,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n })\r\n const sectionId = sectionToMerge.id ?? makeFormFieldId([sectionToMerge.id, index])\r\n return {\r\n id: sectionId ?? makeFormFieldId([sectionId, index]),\r\n label: sectionToMerge.label ?? makeLabel([sectionId]),\r\n ...sectionToMerge,\r\n fields: sectionToMerge.fields !== undefined\r\n ? sectionFields\r\n : undefined,\r\n wizard_steps: sectionToMerge.wizard_steps !== undefined\r\n ? mergeFormSections({\r\n sectionOverrides: sectionToMerge.wizard_steps,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n })\r\n : undefined,\r\n pages: sectionToMerge.pages !== undefined\r\n ? mergeFormSections({\r\n sectionOverrides: sectionToMerge.pages,\r\n schemaForm,\r\n formFieldsOverrideMap\r\n })\r\n : undefined\r\n }\r\n })\r\n return sections as IFormSection[]\r\n}\r\n\r\nexport const overridesAndSchemaToFormObject = ({\r\n formOverrides,\r\n formFieldOverrides,\r\n schema\r\n}: {\r\n formOverrides?: IFormOverride[]\r\n formFieldOverrides?: IFormFieldOverride[][]\r\n schema: JSONSchema6\r\n}): IForm => {\r\n const schemaForm = schemaToFormObject(schema)\r\n const formFieldOverridesByProp = formFieldOverrides?.map(overrides => Object.fromEntries(\r\n overrides !== undefined && typeof overrides.map === 'function'\r\n ? overrides.map(override => [override.prop, override])\r\n : []\r\n )) ?? []\r\n if (formOverrides === undefined && formFieldOverrides !== undefined) {\r\n const schemaFieldMap = buildFieldMapFromForm(schemaForm)\r\n const fields = Object.values(schemaFieldMap).map(field => {\r\n return mergeFormField({\r\n field,\r\n formFieldsOverrideMap: formFieldOverridesByProp,\r\n schemaFieldMap\r\n })\r\n })\r\n return {\r\n ...schemaForm,\r\n fields\r\n }\r\n }\r\n const mergedFormOverrides = mergeObjects<IFormOverride>(formOverrides ?? [])\r\n const form: IForm = {\r\n id: schemaForm.id,\r\n label: mergedFormOverrides?.label ?? schemaForm.label,\r\n settings: mergedFormOverrides?.settings\r\n }\r\n\r\n form.pages = mergedFormOverrides.pages !== undefined\r\n ? mergeFormSections({\r\n sectionOverrides: mergedFormOverrides.pages,\r\n schemaForm,\r\n formFieldsOverrideMap: formFieldOverridesByProp\r\n }) as IPage[]\r\n : undefined\r\n form.wizard_steps = mergedFormOverrides.wizard_steps !== undefined\r\n ? mergeFormSections({\r\n sectionOverrides: mergedFormOverrides.wizard_steps,\r\n schemaForm,\r\n formFieldsOverrideMap: formFieldOverridesByProp\r\n }) as IWizardStep[]\r\n : undefined\r\n\r\n form.fields = mergeFormFields({\r\n fieldOverrides: mergedFormOverrides.fields,\r\n schemaForm,\r\n formFieldsOverrideMap: formFieldOverridesByProp\r\n })\r\n\r\n return form\r\n}\r\n\r\nexport const schemaToFormObject = (schema: JSONSchema6): IForm => {\r\n const resolvedSchema = resolveRefs(schema)\r\n const formFields: IFormField[] = []\r\n for (const key in resolvedSchema.properties) {\r\n if (resolvedSchema.properties[key] !== undefined && typeof resolvedSchema.properties[key] !== 'boolean') {\r\n formFields.push(schemaToFormField({\r\n schema: resolvedSchema,\r\n property: key,\r\n schemaField: resolvedSchema.properties[key],\r\n path: []\r\n }))\r\n }\r\n }\r\n return {\r\n id: makeFormFieldId([resolvedSchema.$id, resolvedSchema.title?.toLowerCase().replace(' ', '-')]),\r\n label: schema.title ?? 'Untitled',\r\n fields: formFields\r\n }\r\n}\r\n\r\nexport const buildFieldMapFromForm = (form: IForm): Record<string, IFormField> => {\r\n const formCopy = copyAndAddPathToFields(form)\r\n const fields = getFieldsFromFormSection(formCopy)\r\n return Object.fromEntries(fields.map(field => [getPathFromField(field), field]))\r\n}\r\n\r\nexport const getSchemaPaths = (schema: any, prefix = ''): string[] => {\r\n let paths: string[] = []\r\n\r\n if (schema.type === 'object' && schema.properties) {\r\n for (const key of Object.keys(schema.properties)) {\r\n const newPrefix = prefix ? `${prefix}.${key}` : key\r\n paths.push(newPrefix)\r\n paths = paths.concat(getSchemaPaths(schema.properties[key], newPrefix))\r\n }\r\n } else if (schema.type === 'array' && schema.items) {\r\n const arrayPrefix = `${prefix}[]`\r\n paths.push(arrayPrefix)\r\n paths = paths.concat(getSchemaPaths(schema.items, arrayPrefix))\r\n } else if (schema.oneOf || schema.anyOf || schema.allOf) {\r\n for (const subSchema of schema.oneOf || schema.anyOf || schema.allOf) {\r\n if (subSchema.properties) {\r\n paths = paths.concat(getSchemaPaths(subSchema, prefix))\r\n }\r\n }\r\n }\r\n\r\n return paths\r\n}\r\n\r\nexport const getSchemaPathDescriptors = (schema: any, prefix = ''): Array<{ path: string, type: string, required: boolean }> => {\r\n let pathDescriptors: Array<{ path: string, type: string, required: boolean }> = []\r\n\r\n if (schema.type === 'object' && schema.properties) {\r\n for (const key of Object.keys(schema.properties)) {\r\n const newPrefix = prefix ? `${prefix}.${key}` : key\r\n pathDescriptors.push({\r\n path: newPrefix,\r\n type: schema.properties[key].type ?? 'object',\r\n required: schema.required ? schema.required.includes(key) : false\r\n })\r\n pathDescriptors = pathDescriptors.concat(getSchemaPathDescriptors(schema.properties[key], newPrefix))\r\n }\r\n } else if (schema.type === 'array' && schema.items) {\r\n const arrayPrefix = `${prefix}[]`\r\n pathDescriptors.push({\r\n path: arrayPrefix,\r\n type: schema.type,\r\n required: schema.required ? schema.required.includes(prefix) : false\r\n })\r\n pathDescriptors = pathDescriptors.concat(getSchemaPathDescriptors(schema.items, arrayPrefix))\r\n } else if (schema.oneOf || schema.anyOf || schema.allOf) {\r\n for (const subSchema of schema.oneOf || schema.anyOf || schema.allOf) {\r\n if (subSchema.properties) {\r\n pathDescriptors = pathDescriptors.concat(getSchemaPathDescriptors(subSchema, prefix))\r\n }\r\n }\r\n }\r\n\r\n return pathDescriptors\r\n}\r\n"],"names":[],"mappings":"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"}
|
@@ -1,27 +1,106 @@
|
|
1
|
-
import {
|
1
|
+
import { getFieldsFromFormSection, getValueFromRelativePath, getFieldValue } from './getters.js';
|
2
2
|
|
3
|
+
var compare = function (val, operator, compareTo) {
|
4
|
+
if (val === undefined || val === null) {
|
5
|
+
return operator === '!=';
|
6
|
+
}
|
7
|
+
if (operator === '=' || operator === 'eq') {
|
8
|
+
// eslint-disable-next-line eqeqeq
|
9
|
+
return val == compareTo;
|
10
|
+
}
|
11
|
+
if (operator === '>' || operator === 'gt') {
|
12
|
+
return +val > +compareTo;
|
13
|
+
}
|
14
|
+
if (operator === '>=' || operator === 'gte') {
|
15
|
+
return +val >= +compareTo;
|
16
|
+
}
|
17
|
+
if (operator === '<' || operator === 'lt') {
|
18
|
+
return +val < +compareTo;
|
19
|
+
}
|
20
|
+
if (operator === '<=' || operator === 'lte') {
|
21
|
+
return +val <= +compareTo;
|
22
|
+
}
|
23
|
+
if (operator === '!=' || operator === '!eq') {
|
24
|
+
// eslint-disable-next-line eqeqeq
|
25
|
+
return val != compareTo;
|
26
|
+
}
|
27
|
+
console.warn("Unknown operator: ".concat(String(operator)));
|
28
|
+
return false;
|
29
|
+
};
|
30
|
+
var runCheck = function (fieldValue, operator, val) {
|
31
|
+
if (operator === void 0) { operator = '='; }
|
32
|
+
if (val === undefined) {
|
33
|
+
// ignore operator if val isn't set
|
34
|
+
return fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== '';
|
35
|
+
}
|
36
|
+
return val !== undefined
|
37
|
+
? val === false
|
38
|
+
? (fieldValue === null || fieldValue === undefined || fieldValue === false || fieldValue === '')
|
39
|
+
: compare(fieldValue, operator || '=', val)
|
40
|
+
: (fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== '');
|
41
|
+
};
|
42
|
+
var checkFieldCondition = function (field, condition, formValues) {
|
43
|
+
var _a, _b, _c;
|
44
|
+
var fieldToEval = (_a = condition.field) !== null && _a !== void 0 ? _a : condition.dependsOn;
|
45
|
+
if (fieldToEval === undefined) {
|
46
|
+
console.warn('Field condition is missing field or dependsOn property');
|
47
|
+
return {
|
48
|
+
pass: true,
|
49
|
+
result: (_b = condition.result) !== null && _b !== void 0 ? _b : 'include',
|
50
|
+
newDefaultValue: condition.newDefaultValue
|
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
|
+
}
|
56
|
+
var dependsOn = Array.isArray(fieldToEval) ? fieldToEval : [fieldToEval];
|
57
|
+
var val = condition.value;
|
58
|
+
var pass = dependsOn.every(function (d) {
|
59
|
+
var _a;
|
60
|
+
/* const fieldPathIsRelative = d.startsWith('.')
|
61
|
+
const fieldValue = getValueFromPath(d, formValues) */
|
62
|
+
var fieldValue = getValueFromRelativePath(field, d, formValues);
|
63
|
+
return runCheck(fieldValue, (_a = condition.operator) !== null && _a !== void 0 ? _a : '=', val);
|
64
|
+
});
|
65
|
+
return {
|
66
|
+
pass: pass,
|
67
|
+
result: (_c = condition.result) !== null && _c !== void 0 ? _c : 'include',
|
68
|
+
newDefaultValue: condition.newDefaultValue
|
69
|
+
};
|
70
|
+
};
|
3
71
|
var checkCondition = function (field, formValues) {
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
: fieldValue === val_1
|
13
|
-
: (fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== '');
|
72
|
+
var _a, _b;
|
73
|
+
var pass = true;
|
74
|
+
var result;
|
75
|
+
var newDefaultValue;
|
76
|
+
if (field.conditionsSet !== undefined) {
|
77
|
+
var passingConditions = field.conditionsSet.conditions.filter(function (c) {
|
78
|
+
var result = checkFieldCondition(field, c, formValues);
|
79
|
+
return result.pass;
|
14
80
|
});
|
15
|
-
|
81
|
+
pass = field.conditionsSet.logic === 'or'
|
82
|
+
? passingConditions.length > 0
|
83
|
+
: passingConditions.length === field.conditionsSet.conditions.length;
|
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;
|
86
|
+
}
|
87
|
+
if (field.conditions !== undefined && pass) {
|
88
|
+
var f = checkFieldCondition(field, field.conditions, formValues);
|
89
|
+
pass = f.pass;
|
90
|
+
result = field.conditions.result;
|
91
|
+
newDefaultValue = f.newDefaultValue;
|
16
92
|
}
|
17
|
-
return
|
93
|
+
return {
|
94
|
+
pass: pass,
|
95
|
+
result: result !== null && result !== void 0 ? result : 'include',
|
96
|
+
newDefaultValue: newDefaultValue
|
97
|
+
};
|
18
98
|
};
|
19
99
|
var testField = function (field, formValues) {
|
20
100
|
var val = getFieldValue(field, formValues);
|
21
101
|
return val !== undefined && val !== null && val !== '';
|
22
102
|
};
|
23
|
-
var calculateSectionStatus = function (sections,
|
24
|
-
var formValues = formValueState[0];
|
103
|
+
var calculateSectionStatus = function (sections, formValues) {
|
25
104
|
return Object.fromEntries(sections.map(function (s) {
|
26
105
|
var fields = getFieldsFromFormSection(s).filter(function (f) { return f.type !== 'object'; });
|
27
106
|
var total = fields.length;
|
@@ -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 IFormValueState } from '@/Form/Creator/FormCreatorTypes'\r\nimport { getFieldsFromFormSection, getFieldValue, getValueFromPath } from '@/utils/getters'\r\n\r\nexport const checkCondition = (field: IFormField, formValues: IFormValues): boolean => {\r\n if (field.conditions !== undefined) {\r\n const dependsOn = Array.isArray(field.conditions.dependsOn) ? field.conditions.dependsOn : [field.conditions.dependsOn]\r\n\r\n const val = field.conditions.value\r\n const check = dependsOn.every(d => {\r\n const fieldValue = getValueFromPath(d, formValues)\r\n return val !== undefined\r\n ? val === false\r\n ? (fieldValue === null || fieldValue === undefined || fieldValue === false || fieldValue === '')\r\n : fieldValue === val\r\n : (fieldValue !== null && fieldValue !== undefined && fieldValue !== false && fieldValue !== '')\r\n })\r\n return check\r\n }\r\n return true\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[], formValueState: IFormValueState): IFormSectionStatus => {\r\n const [formValues] = formValueState\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":";;AAIa,IAAA,cAAc,GAAG,UAAC,KAAiB,EAAE,UAAuB,EAAA;AACvE,IAAA,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;AAClC,QAAA,IAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;AAEvH,QAAA,IAAM,KAAG,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK;AAClC,QAAA,IAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,UAAA,CAAC,EAAA;YAC7B,IAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,EAAE,UAAU,CAAC;YAClD,OAAO,KAAG,KAAK;kBACX,KAAG,KAAK;AACR,uBAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,EAAE;sBAC7F,UAAU,KAAK;AACnB,mBAAG,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,EAAE,CAAC;AACpG,SAAC,CAAC;AACF,QAAA,OAAO,KAAK;;AAEd,IAAA,OAAO,IAAI;AACb;AAEA,IAAM,SAAS,GAAG,UAAC,KAAiB,EAAE,UAAuB,EAAA;IAC3D,IAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC;IAC5C,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;AACxD,CAAC;AAEY,IAAA,sBAAsB,GAAG,UAAC,QAAwB,EAAE,cAA+B,EAAA;AACvF,IAAA,IAAA,UAAU,GAAI,cAAc,CAAA,CAAA,CAAlB;IACjB,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;QACtC,IAAM,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAA,EAAA,CAAC;AAC3E,QAAA,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM;QAC3B,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,GAAA,CAAC,CAAC,MAAM;AACrE,QAAA,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,QAAQ,CAAV,EAAU,CAAC;AAC/C,QAAA,IAAM,aAAa,GAAG,QAAQ,CAAC,MAAM;QACrC,IAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,GAAA,CAAC,CAAC,MAAM;AAC/E,QAAA,IAAM,KAAK,GAAG,aAAa,KAAK,iBAAiB;QACjD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAA,SAAA,EAAE,KAAK,EAAA,KAAA,EAAE,aAAa,EAAA,aAAA,EAAE,iBAAiB,EAAA,iBAAA,EAAE,KAAK,EAAA,KAAA,EAAE,CAAC;KAC7E,CAAC,CAAC;AACL;;;;"}
|
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.5",
|
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",
|
@@ -56,7 +58,7 @@
|
|
56
58
|
"react-error-boundary": "^5.0.0",
|
57
59
|
"react-markdown": "^10.1.0",
|
58
60
|
"react-media": "^1.10.0",
|
59
|
-
"react-router-dom": "^7.
|
61
|
+
"react-router-dom": "^7.0.0",
|
60
62
|
"rimraf": "^6.0.1",
|
61
63
|
"rollup": "^4.34.8",
|
62
64
|
"rollup-plugin-dts": "^6.1.1",
|