UNPKG

@ng-flexy/form

Version:

Flexy components and tools to build Angular 8+ applications

110 lines 13.6 kB
import { FlexyFormFieldType } from '../models/layout-json-schema.model'; export const HIDDEN_IF_GROUP_NAME = '__if__'; export const HIDDEN_CALC_GROUP_NAME = '__calc__'; export function parseFormJson(json) { if (Array.isArray(json)) { return parseFormVersion1(json); } else if (json.schemaVersion === 1) { return parseFormVersion1(json.schema); } else { const schema = json.schema; assignHiddenNames(schema); checkSchema(schema); return json.schema; } } export function checkSchema(schema) { if (schema && Array.isArray(schema)) { schema.forEach((jsonItem, index) => { if (jsonItem.if && (jsonItem.name || jsonItem.type)) { console.warn('Wrong if schema', jsonItem); } if (jsonItem.children) { checkSchema(jsonItem.children); } }); } } export function assignHiddenNames(schema) { if (schema && Array.isArray(schema)) { schema.forEach((jsonItem, index) => { // if ((jsonItem as FlexyFormIfJsonSchema).if && !(jsonItem as FlexyFormFieldLayoutJsonSchema).type) { // (jsonItem as FlexyFormFieldLayoutJsonSchema).type = FlexyFormFieldType.Group; // } if (jsonItem.calc && !jsonItem.name) { jsonItem.name = HIDDEN_CALC_GROUP_NAME + '.' + (jsonItem.id ? jsonItem.id : 'ui-' + Math.random() .toString(36) .substr(2, 9)); } if (jsonItem.children) { assignHiddenNames(jsonItem.children); } }); } } export function parseFormVersion1(json) { const parsed = []; json.forEach(item => { parsed.push(parseFormVersion1Item(item)); }); return parsed; } export function parseFormVersion1Item(item) { const schema = {}; if (item.properties && item.properties.class) { if (!schema.attributes) { schema.attributes = {}; } schema.attributes.class = item.properties.class; } if (item.component) { Object.assign(schema, { component: item.component, properties: item.componentInputs ? item.componentInputs : {} }); } if (item.controlGroupName) { Object.assign(schema, { name: item.controlGroupName, type: FlexyFormFieldType.Group, validators: item.validators, groupKey: item.groupKey, items: item.items ? parseFormVersion1Item(item.items) : void 0, indexDef: item.itemKeyDef, indexPattern: item.itemKeyPattern, indexGenPattern: item.itemKeyGen }); } else if (item.controlArrayName) { Object.assign(schema, { name: item.controlArrayName, type: FlexyFormFieldType.Array, validators: item.validators, items: item.items ? parseFormVersion1Item(item.items) : void 0, indexDef: item.itemIndexDef }); } else if (item.controlName) { Object.assign(schema, { name: item.controlName, validators: item.validators }); } if (item.children) { schema.children = parseFormVersion1(item.children); } return schema; } export function replaceMarker(s, marker, key) { return s.split(marker).join('' + key); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1tYXBwZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtL3NyYy9saWIvc2VydmljZXMvanNvbi1tYXBwZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGtCQUFrQixFQUluQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUM7QUFFakQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUF5QjtJQUNyRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdkIsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoQztTQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7UUFDbkMsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDdkM7U0FBTTtRQUNMLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQW1DO0lBQzdELElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxJQUNHLFFBQWtDLENBQUMsRUFBRTtnQkFDdEMsQ0FBRSxRQUEyQyxDQUFDLElBQUksSUFBSyxRQUEyQyxDQUFDLElBQUksQ0FBQyxFQUN4RztnQkFD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QWM7WUFDakMsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQ2pDLENBQUMsQ0FBQztLQUNKO1NBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDcEIsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDM0IsSUFBSSxFQUFFLGtCQUFrQixDQUFDLEtBQUs7WUFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUM5RCxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDNUIsQ0FBQyxDQUFDO0tBQ0o7U0FBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDcEIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3RCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM1QixDQUFDLENBQUM7S0FDSjtJQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNqQixNQUFNLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNwRDtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQVMsRUFBRSxNQUFjLEVBQUUsR0FBb0I7SUFDM0UsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZsZXh5Rm9ybUNhbGNKc29uU2NoZW1hLFxuICBGbGV4eUZvcm1GaWVsZExheW91dEpzb25TY2hlbWEsXG4gIEZsZXh5Rm9ybUZpZWxkVHlwZSxcbiAgRmxleHlGb3JtSWZKc29uU2NoZW1hLFxuICBGbGV4eUZvcm1MYXlvdXRKc29uLFxuICBGbGV4eUZvcm1MYXlvdXRKc29uU2NoZW1hXG59IGZyb20gJy4uL21vZGVscy9sYXlvdXQtanNvbi1zY2hlbWEubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgSElEREVOX0lGX0dST1VQX05BTUUgPSAnX19pZl9fJztcbmV4cG9ydCBjb25zdCBISURERU5fQ0FMQ19HUk9VUF9OQU1FID0gJ19fY2FsY19fJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRm9ybUpzb24oanNvbjogRmxleHlGb3JtTGF5b3V0SnNvbik6IEZsZXh5Rm9ybUxheW91dEpzb25TY2hlbWFbXSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGpzb24pKSB7XG4gICAgcmV0dXJuIHBhcnNlRm9ybVZlcnNpb24xKGpzb24pO1xuICB9IGVsc2UgaWYgKGpzb24uc2NoZW1hVmVyc2lvbiA9PT0gMSkge1xuICAgIHJldHVybiBwYXJzZUZvcm1WZXJzaW9uMShqc29uLnNjaGVtYSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc2NoZW1hID0ganNvbi5zY2hlbWE7XG4gICAgYXNzaWduSGlkZGVuTmFtZXMoc2NoZW1hKTtcbiAgICBjaGVja1NjaGVtYShzY2hlbWEpO1xuICAgIHJldHVybiBqc29uLnNjaGVtYTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tTY2hlbWEoc2NoZW1hOiBGbGV4eUZvcm1MYXlvdXRKc29uU2NoZW1hW10pIHtcbiAgaWYgKHNjaGVtYSAmJiBBcnJheS5pc0FycmF5KHNjaGVtYSkpIHtcbiAgICBzY2hlbWEuZm9yRWFjaCgoanNvbkl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIChqc29uSXRlbSBhcyBGbGV4eUZvcm1JZkpzb25TY2hlbWEpLmlmICYmXG4gICAgICAgICgoanNvbkl0ZW0gYXMgRmxleHlGb3JtRmllbGRMYXlvdXRKc29uU2NoZW1hKS5uYW1lIHx8IChqc29uSXRlbSBhcyBGbGV4eUZvcm1GaWVsZExheW91dEpzb25TY2hlbWEpLnR5cGUpXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdXcm9uZyBpZiBzY2hlbWEnLCBqc29uSXRlbSk7XG4gICAgICB9XG4gICAgICBpZiAoanNvbkl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgY2hlY2tTY2hlbWEoanNvbkl0ZW0uY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25IaWRkZW5OYW1lcyhzY2hlbWE6IEZsZXh5Rm9ybUxheW91dEpzb25TY2hlbWFbXSkge1xuICBpZiAoc2NoZW1hICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgIHNjaGVtYS5mb3JFYWNoKChqc29uSXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIC8vIGlmICgoanNvbkl0ZW0gYXMgRmxleHlGb3JtSWZKc29uU2NoZW1hKS5pZiAmJiAhKGpzb25JdGVtIGFzIEZsZXh5Rm9ybUZpZWxkTGF5b3V0SnNvblNjaGVtYSkudHlwZSkge1xuICAgICAgLy8gICAoanNvbkl0ZW0gYXMgRmxleHlGb3JtRmllbGRMYXlvdXRKc29uU2NoZW1hKS50eXBlID0gRmxleHlGb3JtRmllbGRUeXBlLkdyb3VwO1xuICAgICAgLy8gfVxuICAgICAgaWYgKChqc29uSXRlbSBhcyBGbGV4eUZvcm1DYWxjSnNvblNjaGVtYSkuY2FsYyAmJiAhKGpzb25JdGVtIGFzIEZsZXh5Rm9ybUZpZWxkTGF5b3V0SnNvblNjaGVtYSkubmFtZSkge1xuICAgICAgICAoanNvbkl0ZW0gYXMgRmxleHlGb3JtRmllbGRMYXlvdXRKc29uU2NoZW1hKS5uYW1lID1cbiAgICAgICAgICBISURERU5fQ0FMQ19HUk9VUF9OQU1FICtcbiAgICAgICAgICAnLicgK1xuICAgICAgICAgIChqc29uSXRlbS5pZFxuICAgICAgICAgICAgPyBqc29uSXRlbS5pZFxuICAgICAgICAgICAgOiAndWktJyArXG4gICAgICAgICAgICAgIE1hdGgucmFuZG9tKClcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoMzYpXG4gICAgICAgICAgICAgICAgLnN1YnN0cigyLCA5KSk7XG4gICAgICB9XG4gICAgICBpZiAoanNvbkl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgYXNzaWduSGlkZGVuTmFtZXMoanNvbkl0ZW0uY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZvcm1WZXJzaW9uMShqc29uOiBhbnlbXSk6IEZsZXh5Rm9ybUxheW91dEpzb25TY2hlbWFbXSB7XG4gIGNvbnN0IHBhcnNlZDogRmxleHlGb3JtTGF5b3V0SnNvblNjaGVtYVtdID0gW107XG4gIGpzb24uZm9yRWFjaChpdGVtID0+IHtcbiAgICBwYXJzZWQucHVzaChwYXJzZUZvcm1WZXJzaW9uMUl0ZW0oaXRlbSkpO1xuICB9KTtcbiAgcmV0dXJuIHBhcnNlZCBhcyBGbGV4eUZvcm1MYXlvdXRKc29uU2NoZW1hW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZvcm1WZXJzaW9uMUl0ZW0oaXRlbTogYW55KTogRmxleHlGb3JtTGF5b3V0SnNvblNjaGVtYSB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9IGFzIEZsZXh5Rm9ybUxheW91dEpzb25TY2hlbWE7XG4gIGlmIChpdGVtLnByb3BlcnRpZXMgJiYgaXRlbS5wcm9wZXJ0aWVzLmNsYXNzKSB7XG4gICAgaWYgKCFzY2hlbWEuYXR0cmlidXRlcykge1xuICAgICAgc2NoZW1hLmF0dHJpYnV0ZXMgPSB7fTtcbiAgICB9XG4gICAgc2NoZW1hLmF0dHJpYnV0ZXMuY2xhc3MgPSBpdGVtLnByb3BlcnRpZXMuY2xhc3M7XG4gIH1cbiAgaWYgKGl0ZW0uY29tcG9uZW50KSB7XG4gICAgT2JqZWN0LmFzc2lnbihzY2hlbWEsIHtcbiAgICAgIGNvbXBvbmVudDogaXRlbS5jb21wb25lbnQsXG4gICAgICBwcm9wZXJ0aWVzOiBpdGVtLmNvbXBvbmVudElucHV0cyA/IGl0ZW0uY29tcG9uZW50SW5wdXRzIDoge31cbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpdGVtLmNvbnRyb2xHcm91cE5hbWUpIHtcbiAgICBPYmplY3QuYXNzaWduKHNjaGVtYSwge1xuICAgICAgbmFtZTogaXRlbS5jb250cm9sR3JvdXBOYW1lLFxuICAgICAgdHlwZTogRmxleHlGb3JtRmllbGRUeXBlLkdyb3VwLFxuICAgICAgdmFsaWRhdG9yczogaXRlbS52YWxpZGF0b3JzLFxuICAgICAgZ3JvdXBLZXk6IGl0ZW0uZ3JvdXBLZXksXG4gICAgICBpdGVtczogaXRlbS5pdGVtcyA/IHBhcnNlRm9ybVZlcnNpb24xSXRlbShpdGVtLml0ZW1zKSA6IHZvaWQgMCxcbiAgICAgIGluZGV4RGVmOiBpdGVtLml0ZW1LZXlEZWYsXG4gICAgICBpbmRleFBhdHRlcm46IGl0ZW0uaXRlbUtleVBhdHRlcm4sXG4gICAgICBpbmRleEdlblBhdHRlcm46IGl0ZW0uaXRlbUtleUdlblxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGl0ZW0uY29udHJvbEFycmF5TmFtZSkge1xuICAgIE9iamVjdC5hc3NpZ24oc2NoZW1hLCB7XG4gICAgICBuYW1lOiBpdGVtLmNvbnRyb2xBcnJheU5hbWUsXG4gICAgICB0eXBlOiBGbGV4eUZvcm1GaWVsZFR5cGUuQXJyYXksXG4gICAgICB2YWxpZGF0b3JzOiBpdGVtLnZhbGlkYXRvcnMsXG4gICAgICBpdGVtczogaXRlbS5pdGVtcyA/IHBhcnNlRm9ybVZlcnNpb24xSXRlbShpdGVtLml0ZW1zKSA6IHZvaWQgMCxcbiAgICAgIGluZGV4RGVmOiBpdGVtLml0ZW1JbmRleERlZlxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGl0ZW0uY29udHJvbE5hbWUpIHtcbiAgICBPYmplY3QuYXNzaWduKHNjaGVtYSwge1xuICAgICAgbmFtZTogaXRlbS5jb250cm9sTmFtZSxcbiAgICAgIHZhbGlkYXRvcnM6IGl0ZW0udmFsaWRhdG9yc1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICBzY2hlbWEuY2hpbGRyZW4gPSBwYXJzZUZvcm1WZXJzaW9uMShpdGVtLmNoaWxkcmVuKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlTWFya2VyKHM6IHN0cmluZywgbWFya2VyOiBzdHJpbmcsIGtleTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gIHJldHVybiBzLnNwbGl0KG1hcmtlcikuam9pbignJyArIGtleSk7XG59XG4iXX0=