UNPKG

rx-form-mapper

Version:

Proper decorator-based transformation / serialization / deserialization of plain javascript classes to angular reactive forms

38 lines 5.58 kB
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=