UNPKG

@yyasinaslan/easyform

Version:
49 lines 6.74 kB
import { computed, signal } from "@angular/core"; import { takeUntilDestroyed, toObservable } from "@angular/core/rxjs-interop"; import { of, switchMap } from "rxjs"; /** * Every form control should extend this class * to work with EasyFormComponent */ export class EasyFormControl { constructor() { this.easyFormControl = signal({ id: null, control: null, schema: null, // formFieldDirective: null }); this.control = computed(() => this.easyFormControl().control); this.schema = computed(() => this.easyFormControl().schema); // formFieldDirective = computed(() => this.easyFormControl().formFieldDirective); this.options = computed(() => { return this.schema()?.options; }); this.props = signal({}); this.hasControl = computed(() => this.easyFormControl().control !== null); this.hasInitialized = computed(() => { const efData = this.easyFormControl(); return efData.control !== null && efData.schema !== null; }); this.value = toObservable(this.control) .pipe(takeUntilDestroyed(), switchMap(control => control ? control.valueChanges : of(null))); /** * Emit events * Usage: (input)="emitEvent($event)" * @param event */ this.emitEvent = (event) => { // const directive = this.formFieldDirective; // if (directive && directive.fieldEvent && directive.fieldEvent instanceof EventEmitter) { // // Check if there are any subscribers to the event // if (directive.fieldEvent.observed) { // directive.fieldEvent.emit(event); // } // } }; } setValue(value) { this.control()?.setValue(value); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFzeS1mb3JtLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lYXN5LWZvcm0vc3JjL2xpYi9lYXN5LWZvcm0tY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUvQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsWUFBWSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFVbkM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFBNUI7UUFFRSxvQkFBZSxHQUFHLE1BQU0sQ0FBZ0I7WUFDdEMsRUFBRSxFQUFFLElBQUk7WUFDUixPQUFPLEVBQUUsSUFBSTtZQUNiLE1BQU0sRUFBRSxJQUFJO1lBQ1osMkJBQTJCO1NBQzVCLENBQUMsQ0FBQztRQUVILFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpELFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXZELGtGQUFrRjtRQUVsRixZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUE7UUFFRixVQUFLLEdBQUcsTUFBTSxDQUFzQixFQUFFLENBQUMsQ0FBQztRQUV4QyxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUM7UUFFckUsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN0QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQy9CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQU85Rjs7OztXQUlHO1FBQ0gsY0FBUyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDM0IsNkNBQTZDO1lBQzdDLDJGQUEyRjtZQUMzRix1REFBdUQ7WUFDdkQseUNBQXlDO1lBQ3pDLHdDQUF3QztZQUN4QyxNQUFNO1lBQ04sSUFBSTtRQUNOLENBQUMsQ0FBQTtJQUNILENBQUM7SUFsQkMsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBZ0JGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7Y29tcHV0ZWQsIHNpZ25hbH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtFYXN5Rm9ybUZpZWxkfSBmcm9tIFwiLi9lYXN5LWZvcm0tZmllbGRcIjtcclxuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XHJcbmltcG9ydCB7b2YsIHN3aXRjaE1hcH0gZnJvbSBcInJ4anNcIjtcclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVmQ29udHJvbERhdGEge1xyXG4gIGlkOiBzdHJpbmcgfCBudWxsO1xyXG4gIGNvbnRyb2w6IEZvcm1Db250cm9sPGFueT4gfCBudWxsO1xyXG4gIHNjaGVtYTogRWFzeUZvcm1GaWVsZCB8IG51bGw7XHJcbiAgLy8gZm9ybUZpZWxkRGlyZWN0aXZlOiBGb3JtRmllbGREaXJlY3RpdmUgfCBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogRXZlcnkgZm9ybSBjb250cm9sIHNob3VsZCBleHRlbmQgdGhpcyBjbGFzc1xyXG4gKiB0byB3b3JrIHdpdGggRWFzeUZvcm1Db21wb25lbnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBFYXN5Rm9ybUNvbnRyb2wge1xyXG5cclxuICBlYXN5Rm9ybUNvbnRyb2wgPSBzaWduYWw8RWZDb250cm9sRGF0YT4oe1xyXG4gICAgaWQ6IG51bGwsXHJcbiAgICBjb250cm9sOiBudWxsLFxyXG4gICAgc2NoZW1hOiBudWxsLFxyXG4gICAgLy8gZm9ybUZpZWxkRGlyZWN0aXZlOiBudWxsXHJcbiAgfSk7XHJcblxyXG4gIGNvbnRyb2wgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmVhc3lGb3JtQ29udHJvbCgpLmNvbnRyb2wpO1xyXG5cclxuICBzY2hlbWEgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmVhc3lGb3JtQ29udHJvbCgpLnNjaGVtYSk7XHJcblxyXG4gIC8vIGZvcm1GaWVsZERpcmVjdGl2ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZWFzeUZvcm1Db250cm9sKCkuZm9ybUZpZWxkRGlyZWN0aXZlKTtcclxuXHJcbiAgb3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLnNjaGVtYSgpPy5vcHRpb25zO1xyXG4gIH0pXHJcblxyXG4gIHByb3BzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIGFueT4+KHt9KTtcclxuXHJcbiAgaGFzQ29udHJvbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZWFzeUZvcm1Db250cm9sKCkuY29udHJvbCAhPT0gbnVsbCk7XHJcblxyXG4gIGhhc0luaXRpYWxpemVkID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgZWZEYXRhID0gdGhpcy5lYXN5Rm9ybUNvbnRyb2woKTtcclxuICAgIHJldHVybiBlZkRhdGEuY29udHJvbCAhPT0gbnVsbCAmJiBlZkRhdGEuc2NoZW1hICE9PSBudWxsO1xyXG4gIH0pO1xyXG5cclxuICB2YWx1ZSA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRyb2wpXHJcbiAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSwgc3dpdGNoTWFwKGNvbnRyb2wgPT4gY29udHJvbCA/IGNvbnRyb2wudmFsdWVDaGFuZ2VzIDogb2YobnVsbCkpKVxyXG5cclxuXHJcbiAgc2V0VmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5jb250cm9sKCk/LnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXQgZXZlbnRzXHJcbiAgICogVXNhZ2U6IChpbnB1dCk9XCJlbWl0RXZlbnQoJGV2ZW50KVwiXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgZW1pdEV2ZW50ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgLy8gY29uc3QgZGlyZWN0aXZlID0gdGhpcy5mb3JtRmllbGREaXJlY3RpdmU7XHJcbiAgICAvLyBpZiAoZGlyZWN0aXZlICYmIGRpcmVjdGl2ZS5maWVsZEV2ZW50ICYmIGRpcmVjdGl2ZS5maWVsZEV2ZW50IGluc3RhbmNlb2YgRXZlbnRFbWl0dGVyKSB7XHJcbiAgICAvLyAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3Vic2NyaWJlcnMgdG8gdGhlIGV2ZW50XHJcbiAgICAvLyAgIGlmIChkaXJlY3RpdmUuZmllbGRFdmVudC5vYnNlcnZlZCkge1xyXG4gICAgLy8gICAgIGRpcmVjdGl2ZS5maWVsZEV2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcbiJdfQ==