UNPKG

ngx-form-lib

Version:

Dynamic form library for Angular 18 with Material 3 support. Create complex reactive forms easily using JSON configuration with modern Angular 18 control flow syntax.

68 lines 10.5 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; export class DependenciesService { constructor() { this._hiddenFields = new BehaviorSubject({}); } setDependenciesFields(group, config, formValue) { this.setFieldPropertiesToDefault(group, config); config.facets.dependencies?.forEach((dependency) => { if (dependency.value === formValue[dependency.fieldPath]) { switch (dependency.type) { case 'value-change': this.setDependentValue(group, dependency, config.name); break; case 'disabled': this.disableDependentField(group, dependency, config.name); break; case 'hidden': this.hideDependentField(config.name, dependency); } } }); } getHiddenFields() { return this._hiddenFields.asObservable(); } setFieldPropertiesToDefault(group, config) { if (config.facets.disabled === true) { group.get(config.name)?.disable({ emitEvent: false }); } else if (config.facets.disabled === false) { group.get(config.name)?.enable({ emitEvent: false }); } if (config.facets.hidden === true || config.facets.hidden === false) { this.hideDependentField(config.name, {}, config.facets.hidden); } } disableDependentField(group, dependency, controlName) { if (dependency.setDependentValueTo === true || dependency.setDependentValueTo === 'true') { group.get(controlName)?.disable({ emitEvent: false }); } else if (dependency.setDependentValueTo === false || dependency.setDependentValueTo === 'false') { group.get(controlName)?.enable({ emitEvent: false }); } } setDependentValue(group, dependency, controlName) { group .get(controlName) ?.setValue(dependency.setDependentValueTo, { emitEvent: false }); } hideDependentField(controlName, dependency, hiddenProperty = false) { const hiddenFields = this._hiddenFields.getValue(); hiddenFields[controlName] = dependency.setDependentValueTo || hiddenProperty; this._hiddenFields.next(hiddenFields); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DependenciesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DependenciesService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DependenciesService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jaWVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybS1saWIvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2RlcGVuZGVuY2llcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7QUFRbkQsTUFBTSxPQUFPLG1CQUFtQjtJQUhoQztRQUlFLGtCQUFhLEdBQ1gsSUFBSSxlQUFlLENBQTZCLEVBQUUsQ0FBQyxDQUFDO0tBNEV2RDtJQTFFQyxxQkFBcUIsQ0FDbkIsS0FBdUIsRUFDdkIsTUFBc0IsRUFDdEIsU0FBYztRQUVkLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDakQsSUFBSSxVQUFVLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDekQsUUFBUSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3hCLEtBQUssY0FBYzt3QkFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN2RCxNQUFNO29CQUNSLEtBQUssVUFBVTt3QkFDYixJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzNELE1BQU07b0JBQ1IsS0FBSyxRQUFRO3dCQUNYLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELDJCQUEyQixDQUFDLEtBQXVCLEVBQUUsTUFBc0I7UUFDekUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM1QyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBZ0IsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9FLENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQ25CLEtBQXVCLEVBQ3ZCLFVBQXNCLEVBQ3RCLFdBQW1CO1FBRW5CLElBQ0UsVUFBVSxDQUFDLG1CQUFtQixLQUFLLElBQUk7WUFDdkMsVUFBVSxDQUFDLG1CQUFtQixLQUFLLE1BQU0sRUFDekMsQ0FBQztZQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQzthQUFNLElBQ0wsVUFBVSxDQUFDLG1CQUFtQixLQUFLLEtBQUs7WUFDeEMsVUFBVSxDQUFDLG1CQUFtQixLQUFLLE9BQU8sRUFDMUMsQ0FBQztZQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FDZixLQUF1QixFQUN2QixVQUFzQixFQUN0QixXQUFtQjtRQUVuQixLQUFLO2FBQ0YsR0FBRyxDQUFDLFdBQVcsQ0FBQztZQUNqQixFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsa0JBQWtCLENBQ2hCLFdBQW1CLEVBQ25CLFVBQXNCLEVBQ3RCLGlCQUEwQixLQUFLO1FBRS9CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsSUFBSSxjQUFjLENBQUM7UUFDN0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0E3RVUsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBEZXBlbmRlbmN5IH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9kZXBlbmRlbmN5Lm1vZGVsJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpZWxkLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXBlbmRlbmNpZXNTZXJ2aWNlIHtcclxuICBfaGlkZGVuRmllbGRzOiBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+ID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+KHt9KTtcclxuXHJcbiAgc2V0RGVwZW5kZW5jaWVzRmllbGRzKFxyXG4gICAgZ3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgICBjb25maWc6IEZpZWxkPHVua25vd24+LFxyXG4gICAgZm9ybVZhbHVlOiBhbnlcclxuICApIHtcclxuICAgIHRoaXMuc2V0RmllbGRQcm9wZXJ0aWVzVG9EZWZhdWx0KGdyb3VwLCBjb25maWcpO1xyXG4gICAgY29uZmlnLmZhY2V0cy5kZXBlbmRlbmNpZXM/LmZvckVhY2goKGRlcGVuZGVuY3kpID0+IHtcclxuICAgICAgaWYgKGRlcGVuZGVuY3kudmFsdWUgPT09IGZvcm1WYWx1ZVtkZXBlbmRlbmN5LmZpZWxkUGF0aF0pIHtcclxuICAgICAgICBzd2l0Y2ggKGRlcGVuZGVuY3kudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAndmFsdWUtY2hhbmdlJzpcclxuICAgICAgICAgICAgdGhpcy5zZXREZXBlbmRlbnRWYWx1ZShncm91cCwgZGVwZW5kZW5jeSwgY29uZmlnLm5hbWUpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2Rpc2FibGVkJzpcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlRGVwZW5kZW50RmllbGQoZ3JvdXAsIGRlcGVuZGVuY3ksIGNvbmZpZy5uYW1lKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdoaWRkZW4nOlxyXG4gICAgICAgICAgICB0aGlzLmhpZGVEZXBlbmRlbnRGaWVsZChjb25maWcubmFtZSwgZGVwZW5kZW5jeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEhpZGRlbkZpZWxkcygpOiBPYnNlcnZhYmxlPHtba2V5OiBzdHJpbmddOiB1bmtub3dufT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hpZGRlbkZpZWxkcy5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHNldEZpZWxkUHJvcGVydGllc1RvRGVmYXVsdChncm91cDogVW50eXBlZEZvcm1Hcm91cCwgY29uZmlnOiBGaWVsZDx1bmtub3duPikge1xyXG4gICAgaWYgKGNvbmZpZy5mYWNldHMuZGlzYWJsZWQgPT09IHRydWUpIHtcclxuICAgICAgZ3JvdXAuZ2V0KGNvbmZpZy5uYW1lKT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNvbmZpZy5mYWNldHMuZGlzYWJsZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgIGdyb3VwLmdldChjb25maWcubmFtZSk/LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY29uZmlnLmZhY2V0cy5oaWRkZW4gPT09IHRydWUgfHwgY29uZmlnLmZhY2V0cy5oaWRkZW4gPT09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMuaGlkZURlcGVuZGVudEZpZWxkKGNvbmZpZy5uYW1lLCB7fSBhcyBEZXBlbmRlbmN5LCBjb25maWcuZmFjZXRzLmhpZGRlbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlRGVwZW5kZW50RmllbGQoXHJcbiAgICBncm91cDogVW50eXBlZEZvcm1Hcm91cCxcclxuICAgIGRlcGVuZGVuY3k6IERlcGVuZGVuY3ksXHJcbiAgICBjb250cm9sTmFtZTogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGRlcGVuZGVuY3kuc2V0RGVwZW5kZW50VmFsdWVUbyA9PT0gdHJ1ZSB8fFxyXG4gICAgICBkZXBlbmRlbmN5LnNldERlcGVuZGVudFZhbHVlVG8gPT09ICd0cnVlJ1xyXG4gICAgKSB7XHJcbiAgICAgIGdyb3VwLmdldChjb250cm9sTmFtZSk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgZGVwZW5kZW5jeS5zZXREZXBlbmRlbnRWYWx1ZVRvID09PSBmYWxzZSB8fFxyXG4gICAgICBkZXBlbmRlbmN5LnNldERlcGVuZGVudFZhbHVlVG8gPT09ICdmYWxzZSdcclxuICAgICkge1xyXG4gICAgICBncm91cC5nZXQoY29udHJvbE5hbWUpPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGVwZW5kZW50VmFsdWUoXHJcbiAgICBncm91cDogVW50eXBlZEZvcm1Hcm91cCxcclxuICAgIGRlcGVuZGVuY3k6IERlcGVuZGVuY3ksXHJcbiAgICBjb250cm9sTmFtZTogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBncm91cFxyXG4gICAgICAuZ2V0KGNvbnRyb2xOYW1lKVxyXG4gICAgICA/LnNldFZhbHVlKGRlcGVuZGVuY3kuc2V0RGVwZW5kZW50VmFsdWVUbywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgaGlkZURlcGVuZGVudEZpZWxkKFxyXG4gICAgY29udHJvbE5hbWU6IHN0cmluZyxcclxuICAgIGRlcGVuZGVuY3k6IERlcGVuZGVuY3ksXHJcbiAgICBoaWRkZW5Qcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBoaWRkZW5GaWVsZHMgPSB0aGlzLl9oaWRkZW5GaWVsZHMuZ2V0VmFsdWUoKTtcclxuICAgIGhpZGRlbkZpZWxkc1tjb250cm9sTmFtZV0gPSBkZXBlbmRlbmN5LnNldERlcGVuZGVudFZhbHVlVG8gfHwgaGlkZGVuUHJvcGVydHk7XHJcbiAgICB0aGlzLl9oaWRkZW5GaWVsZHMubmV4dChoaWRkZW5GaWVsZHMpO1xyXG4gIH1cclxufVxyXG4iXX0=