rx-form-mapper
Version:
Proper decorator-based transformation / serialization / deserialization of plain javascript classes to angular reactive forms
38 lines • 5.58 kB
JavaScript
import { CustomControlMetadata } from './custom-control-metadata';
import { FormArrayMetadata } from './form-array-metadata';
import { FormControlMetadata } from './form-control-metadata';
import { FormGroupMetadata } from './form-group-metadata';
import { ValidableMetadata } from './validable-metadata';
export class FormMetadata extends ValidableMetadata {
constructor(type) {
super();
this.type = type;
this._controls = {};
}
accept(visitor) {
return visitor.visitFormMetadata(this);
}
get controls() {
return this._controls;
}
setFormControl(name, opts) {
const control = new FormControlMetadata();
control.setValidators(opts);
this.controls[name] = control;
}
setFormGroup(name, form) {
const control = new FormGroupMetadata(form);
this.controls[name] = control;
}
setCustomControl(name, mapper, opts) {
const control = new CustomControlMetadata(mapper);
control.setValidators(opts);
this.controls[name] = control;
}
setFormArray(name, itemform, opts) {
const control = new FormArrayMetadata(itemform);
control.setValidators(opts);
this.controls[name] = control;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J4LWZvcm0tbWFwcGVyL3NyYy9saWIvbWV0YWRhdGEvZm9ybS1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFJekUsTUFBTSxPQUFPLFlBQWEsU0FBUSxpQkFBaUI7SUFJbEQsWUFBbUMsSUFBZTtRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQUQwQixTQUFJLEdBQUosSUFBSSxDQUFXO1FBRjFDLGNBQVMsR0FBMEMsRUFBRSxDQUFDO0lBSTlELENBQUM7SUFFTSxNQUFNLENBQUksT0FBMEI7UUFDMUMsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFZLEVBQUUsSUFBb0I7UUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFZLEVBQUUsSUFBa0I7UUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBWSxFQUFFLE1BQWlDLEVBQUUsSUFBb0I7UUFDNUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBWSxFQUFFLFFBQXNCLEVBQUUsSUFBb0I7UUFDN0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQy9CLENBQUM7Q0FFRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEN1c3RvbUNvbnRyb2xNYXBwZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbnRyb2xWaXNpdG9yIH0gZnJvbSAnLi9jb250cm9sLXZpc2l0b3InO1xuaW1wb3J0IHsgQ3VzdG9tQ29udHJvbE1ldGFkYXRhIH0gZnJvbSAnLi9jdXN0b20tY29udHJvbC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBGb3JtQXJyYXlNZXRhZGF0YSB9IGZyb20gJy4vZm9ybS1hcnJheS1tZXRhZGF0YSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbE1ldGFkYXRhIH0gZnJvbSAnLi9mb3JtLWNvbnRyb2wtbWV0YWRhdGEnO1xuaW1wb3J0IHsgRm9ybUdyb3VwTWV0YWRhdGEgfSBmcm9tICcuL2Zvcm0tZ3JvdXAtbWV0YWRhdGEnO1xuaW1wb3J0IHsgVmFsaWRhYmxlTWV0YWRhdGEsIFZhbGlkYXRpb25PcHRzIH0gZnJvbSAnLi92YWxpZGFibGUtbWV0YWRhdGEnO1xuXG50eXBlIEZvcm1Qcm9wZXJ0eU1ldGFkYXRhID0gRm9ybUNvbnRyb2xNZXRhZGF0YSB8IEZvcm1Hcm91cE1ldGFkYXRhIHwgRm9ybUFycmF5TWV0YWRhdGE7XG5cbmV4cG9ydCBjbGFzcyBGb3JtTWV0YWRhdGEgZXh0ZW5kcyBWYWxpZGFibGVNZXRhZGF0YSB7XG5cblx0cHJpdmF0ZSBfY29udHJvbHM6IHtba2V5OiBzdHJpbmddOiBGb3JtUHJvcGVydHlNZXRhZGF0YX0gPSB7fTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHR5cGU6IFR5cGU8YW55Pikge1xuXHRcdHN1cGVyKCk7XG5cdH1cblxuXHRwdWJsaWMgYWNjZXB0PFQ+KHZpc2l0b3I6IENvbnRyb2xWaXNpdG9yPFQ+KTogVCB7XG5cdFx0cmV0dXJuIHZpc2l0b3IudmlzaXRGb3JtTWV0YWRhdGEodGhpcyk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0IGNvbnRyb2xzKCk6IHtba2V5OiBzdHJpbmddOiBGb3JtUHJvcGVydHlNZXRhZGF0YX0ge1xuXHRcdHJldHVybiB0aGlzLl9jb250cm9scztcblx0fVxuXG5cdHB1YmxpYyBzZXRGb3JtQ29udHJvbChuYW1lOiBzdHJpbmcsIG9wdHM6IFZhbGlkYXRpb25PcHRzKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbE1ldGFkYXRhKCk7XG5cdFx0Y29udHJvbC5zZXRWYWxpZGF0b3JzKG9wdHMpO1xuXHRcdHRoaXMuY29udHJvbHNbbmFtZV0gPSBjb250cm9sO1xuXHR9XG5cblx0cHVibGljIHNldEZvcm1Hcm91cChuYW1lOiBzdHJpbmcsIGZvcm06IEZvcm1NZXRhZGF0YSk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUdyb3VwTWV0YWRhdGEoZm9ybSk7XG5cdFx0dGhpcy5jb250cm9sc1tuYW1lXSA9IGNvbnRyb2w7XG5cdH1cblxuXHRwdWJsaWMgc2V0Q3VzdG9tQ29udHJvbChuYW1lOiBzdHJpbmcsIG1hcHBlcjogVHlwZTxDdXN0b21Db250cm9sTWFwcGVyPiwgb3B0czogVmFsaWRhdGlvbk9wdHMpOiB2b2lkIHtcblx0XHRjb25zdCBjb250cm9sID0gbmV3IEN1c3RvbUNvbnRyb2xNZXRhZGF0YShtYXBwZXIpO1xuXHRcdGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhvcHRzKTtcblx0XHR0aGlzLmNvbnRyb2xzW25hbWVdID0gY29udHJvbDtcblx0fVxuXG5cdHB1YmxpYyBzZXRGb3JtQXJyYXkobmFtZTogc3RyaW5nLCBpdGVtZm9ybTogRm9ybU1ldGFkYXRhLCBvcHRzOiBWYWxpZGF0aW9uT3B0cyk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUFycmF5TWV0YWRhdGEoaXRlbWZvcm0pO1xuXHRcdGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhvcHRzKTtcblx0XHR0aGlzLmNvbnRyb2xzW25hbWVdID0gY29udHJvbDtcblx0fVxuXG59XG4iXX0=