UNPKG

@ng-flexy/form

Version:

Flexy components and tools to build Angular 8+ applications

65 lines 10.2 kB
import { Injectable } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { cloneDeep } from 'lodash'; import { FlexyFormJsonMapperService } from './json-mapper.service'; import { FlexyFormFieldType } from '../models/layout-json-schema.model'; import * as i0 from "@angular/core"; import * as i1 from "./json-mapper.service"; export class FlexyFormSchemaService { constructor(jsonMapperService) { this.jsonMapperService = jsonMapperService; } addGroupItemToSchema(parentSchemaRef, itemKey, groupSchema, controlGroupName, readonly) { let schema = null; if (!this.validateGroupKey(itemKey, groupSchema)) { const jsonSchema = cloneDeep(groupSchema.items); jsonSchema.name = controlGroupName; jsonSchema.type = FlexyFormFieldType.Group; const newValue = jsonSchema && jsonSchema.children ? {} : null; const control = this.jsonMapperService.createItemControl(jsonSchema, readonly, newValue); parentSchemaRef.formControl.addControl(itemKey, control); parentSchemaRef.formControl.markAsDirty(); schema = this.jsonMapperService.createGroupItemSchema(control, jsonSchema, groupSchema.indexDef, null, readonly, {}, newValue, itemKey, parentSchemaRef.formControl); parentSchemaRef.children.push(schema); // fix form control - should be the same but is not parentSchemaRef.formControl.setControl(itemKey, schema.formControl); } return schema; } validateGroupKey(key, groupSchema) { const patternReg = groupSchema.indexPattern ? new RegExp(groupSchema.indexPattern, 'g') : null; if (!key) { return 'empty'; } else if (patternReg && !patternReg.exec(key)) { return 'wrong_format'; } return null; } removeGroupItemToSchema(layoutSchemaRef, index) { if (layoutSchemaRef.children[index]) { const schemaItem = layoutSchemaRef.children[index]; const groupKey = schemaItem.groupKey; if (groupKey && layoutSchemaRef.formControl && layoutSchemaRef.formControl instanceof FormGroup && layoutSchemaRef.formControl.contains(groupKey)) { layoutSchemaRef.children.splice(index, 1); layoutSchemaRef.formControl.removeControl(groupKey); layoutSchemaRef.formControl.markAsDirty(); return groupKey; } } return null; } } FlexyFormSchemaService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FlexyFormSchemaService_Factory() { return new FlexyFormSchemaService(i0.ɵɵinject(i1.FlexyFormJsonMapperService)); }, token: FlexyFormSchemaService, providedIn: "root" }); FlexyFormSchemaService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; FlexyFormSchemaService.ctorParameters = () => [ { type: FlexyFormJsonMapperService } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtL3NyYy9saWIvc2VydmljZXMvc2NoZW1hLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVuQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQXlDLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUsvRyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW9CLGlCQUE2QztRQUE3QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTRCO0lBQUcsQ0FBQztJQUVyRSxvQkFBb0IsQ0FDbEIsZUFBMkMsRUFDM0MsT0FBZSxFQUNmLFdBQWtELEVBQ2xELGdCQUF3QixFQUN4QixRQUFpQjtRQUVqQixJQUFJLE1BQU0sR0FBK0IsSUFBSSxDQUFDO1FBRTlDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxFQUFFO1lBQ2hELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUEwQyxDQUFDO1lBRXpGLFVBQVUsQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7WUFDbkMsVUFBVSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFDM0MsTUFBTSxRQUFRLEdBQUcsVUFBVSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRS9ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXhGLGVBQWUsQ0FBQyxXQUF5QixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdkUsZUFBZSxDQUFDLFdBQXlCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFekQsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FDbkQsT0FBTyxFQUNQLFVBQVUsRUFDVixXQUFXLENBQUMsUUFBUSxFQUNwQixJQUFJLEVBQ0osUUFBUSxFQUNSLEVBQUUsRUFDRixRQUFRLEVBQ1IsT0FBTyxFQUNQLGVBQWUsQ0FBQyxXQUFXLENBQzVCLENBQUM7WUFDRixlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxtREFBbUQ7WUFDbEQsZUFBZSxDQUFDLFdBQXlCLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDcEY7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFdBQWtEO1FBQ3RFLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvRixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTyxPQUFPLENBQUM7U0FDaEI7YUFBTSxJQUFJLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUMsT0FBTyxjQUFjLENBQUM7U0FDdkI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxlQUEyQyxFQUFFLEtBQUs7UUFDeEUsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25DLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUErQixDQUFDO1lBQ2pGLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDckMsSUFDRSxRQUFRO2dCQUNSLGVBQWUsQ0FBQyxXQUFXO2dCQUMzQixlQUFlLENBQUMsV0FBVyxZQUFZLFNBQVM7Z0JBQy9DLGVBQWUsQ0FBQyxXQUF5QixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDN0Q7Z0JBQ0EsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxlQUFlLENBQUMsV0FBeUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xFLGVBQWUsQ0FBQyxXQUF5QixDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN6RCxPQUFPLFFBQVEsQ0FBQzthQUNqQjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7O1lBekVGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBTFEsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEZsZXh5Rm9ybUZpZWxkTGF5b3V0U2NoZW1hIH0gZnJvbSAnLi4vbW9kZWxzL2xheW91dC1zY2hlbWEubW9kZWwnO1xuaW1wb3J0IHsgRmxleHlGb3JtSnNvbk1hcHBlclNlcnZpY2UgfSBmcm9tICcuL2pzb24tbWFwcGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxleHlGb3JtQ29tcGxleEZpZWxkTGF5b3V0SnNvblNjaGVtYSwgRmxleHlGb3JtRmllbGRUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2xheW91dC1qc29uLXNjaGVtYS5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZsZXh5Rm9ybVNjaGVtYVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGpzb25NYXBwZXJTZXJ2aWNlOiBGbGV4eUZvcm1Kc29uTWFwcGVyU2VydmljZSkge31cblxuICBhZGRHcm91cEl0ZW1Ub1NjaGVtYShcbiAgICBwYXJlbnRTY2hlbWFSZWY6IEZsZXh5Rm9ybUZpZWxkTGF5b3V0U2NoZW1hLFxuICAgIGl0ZW1LZXk6IHN0cmluZyxcbiAgICBncm91cFNjaGVtYTogRmxleHlGb3JtQ29tcGxleEZpZWxkTGF5b3V0SnNvblNjaGVtYSxcbiAgICBjb250cm9sR3JvdXBOYW1lOiBzdHJpbmcsXG4gICAgcmVhZG9ubHk6IGJvb2xlYW5cbiAgKTogRmxleHlGb3JtRmllbGRMYXlvdXRTY2hlbWEge1xuICAgIGxldCBzY2hlbWE6IEZsZXh5Rm9ybUZpZWxkTGF5b3V0U2NoZW1hID0gbnVsbDtcblxuICAgIGlmICghdGhpcy52YWxpZGF0ZUdyb3VwS2V5KGl0ZW1LZXksIGdyb3VwU2NoZW1hKSkge1xuICAgICAgY29uc3QganNvblNjaGVtYSA9IGNsb25lRGVlcChncm91cFNjaGVtYS5pdGVtcykgYXMgRmxleHlGb3JtQ29tcGxleEZpZWxkTGF5b3V0SnNvblNjaGVtYTtcblxuICAgICAganNvblNjaGVtYS5uYW1lID0gY29udHJvbEdyb3VwTmFtZTtcbiAgICAgIGpzb25TY2hlbWEudHlwZSA9IEZsZXh5Rm9ybUZpZWxkVHlwZS5Hcm91cDtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0ganNvblNjaGVtYSAmJiBqc29uU2NoZW1hLmNoaWxkcmVuID8ge30gOiBudWxsO1xuXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5qc29uTWFwcGVyU2VydmljZS5jcmVhdGVJdGVtQ29udHJvbChqc29uU2NoZW1hLCByZWFkb25seSwgbmV3VmFsdWUpO1xuXG4gICAgICAocGFyZW50U2NoZW1hUmVmLmZvcm1Db250cm9sIGFzIEZvcm1Hcm91cCkuYWRkQ29udHJvbChpdGVtS2V5LCBjb250cm9sKTtcbiAgICAgIChwYXJlbnRTY2hlbWFSZWYuZm9ybUNvbnRyb2wgYXMgRm9ybUdyb3VwKS5tYXJrQXNEaXJ0eSgpO1xuXG4gICAgICBzY2hlbWEgPSB0aGlzLmpzb25NYXBwZXJTZXJ2aWNlLmNyZWF0ZUdyb3VwSXRlbVNjaGVtYShcbiAgICAgICAgY29udHJvbCxcbiAgICAgICAganNvblNjaGVtYSxcbiAgICAgICAgZ3JvdXBTY2hlbWEuaW5kZXhEZWYsXG4gICAgICAgIG51bGwsXG4gICAgICAgIHJlYWRvbmx5LFxuICAgICAgICB7fSxcbiAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgIGl0ZW1LZXksXG4gICAgICAgIHBhcmVudFNjaGVtYVJlZi5mb3JtQ29udHJvbFxuICAgICAgKTtcbiAgICAgIHBhcmVudFNjaGVtYVJlZi5jaGlsZHJlbi5wdXNoKHNjaGVtYSk7XG4gICAgICAvLyBmaXggZm9ybSBjb250cm9sIC0gc2hvdWxkIGJlIHRoZSBzYW1lIGJ1dCBpcyBub3RcbiAgICAgIChwYXJlbnRTY2hlbWFSZWYuZm9ybUNvbnRyb2wgYXMgRm9ybUdyb3VwKS5zZXRDb250cm9sKGl0ZW1LZXksIHNjaGVtYS5mb3JtQ29udHJvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuXG4gIHZhbGlkYXRlR3JvdXBLZXkoa2V5LCBncm91cFNjaGVtYTogRmxleHlGb3JtQ29tcGxleEZpZWxkTGF5b3V0SnNvblNjaGVtYSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGF0dGVyblJlZyA9IGdyb3VwU2NoZW1hLmluZGV4UGF0dGVybiA/IG5ldyBSZWdFeHAoZ3JvdXBTY2hlbWEuaW5kZXhQYXR0ZXJuLCAnZycpIDogbnVsbDtcbiAgICBpZiAoIWtleSkge1xuICAgICAgcmV0dXJuICdlbXB0eSc7XG4gICAgfSBlbHNlIGlmIChwYXR0ZXJuUmVnICYmICFwYXR0ZXJuUmVnLmV4ZWMoa2V5KSkge1xuICAgICAgcmV0dXJuICd3cm9uZ19mb3JtYXQnO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlbW92ZUdyb3VwSXRlbVRvU2NoZW1hKGxheW91dFNjaGVtYVJlZjogRmxleHlGb3JtRmllbGRMYXlvdXRTY2hlbWEsIGluZGV4KTogc3RyaW5nIHtcbiAgICBpZiAobGF5b3V0U2NoZW1hUmVmLmNoaWxkcmVuW2luZGV4XSkge1xuICAgICAgY29uc3Qgc2NoZW1hSXRlbSA9IGxheW91dFNjaGVtYVJlZi5jaGlsZHJlbltpbmRleF0gYXMgRmxleHlGb3JtRmllbGRMYXlvdXRTY2hlbWE7XG4gICAgICBjb25zdCBncm91cEtleSA9IHNjaGVtYUl0ZW0uZ3JvdXBLZXk7XG4gICAgICBpZiAoXG4gICAgICAgIGdyb3VwS2V5ICYmXG4gICAgICAgIGxheW91dFNjaGVtYVJlZi5mb3JtQ29udHJvbCAmJlxuICAgICAgICBsYXlvdXRTY2hlbWFSZWYuZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgJiZcbiAgICAgICAgKGxheW91dFNjaGVtYVJlZi5mb3JtQ29udHJvbCBhcyBGb3JtR3JvdXApLmNvbnRhaW5zKGdyb3VwS2V5KVxuICAgICAgKSB7XG4gICAgICAgIGxheW91dFNjaGVtYVJlZi5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAobGF5b3V0U2NoZW1hUmVmLmZvcm1Db250cm9sIGFzIEZvcm1Hcm91cCkucmVtb3ZlQ29udHJvbChncm91cEtleSk7XG4gICAgICAgIChsYXlvdXRTY2hlbWFSZWYuZm9ybUNvbnRyb2wgYXMgRm9ybUdyb3VwKS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICByZXR1cm4gZ3JvdXBLZXk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=