ngx-antd-json-schema-form
Version:
JSON form schema using ant-design and prismjs
105 lines • 9.97 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ComponentFactoryResolver, Directive, Input, ViewContainerRef } from "@angular/core";
import { FormGroup } from "@angular/forms";
import { FormButtonComponent } from "../components/form-button/form-button.component";
import { FormInputComponent } from "../components/form-input/form-input.component";
import { FormCheckboxComponent } from "../components/form-checkbox/form-checkbox.component";
import { FormSelectComponent } from "../components/form-select/form-select.component";
import { FormTextareaComponent } from "../components/form-textarea/form-textarea.component";
import { FormPrismComponent } from "../components/form-prism/form-prism.component";
import { FormRadioComponent } from "../components/form-radio/form-radio.component";
import { FormIconComponent } from "../components/form-icon/form-icon.component";
/** @type {?} */
const components = {
button: FormButtonComponent,
input: FormInputComponent,
select: FormSelectComponent,
checkbox: FormCheckboxComponent,
radio: FormRadioComponent,
"radio-button": FormRadioComponent,
textarea: FormTextareaComponent,
prism: FormPrismComponent,
icon: FormIconComponent
};
export class DynamicFieldDirective {
/**
* @param {?} resolver
* @param {?} container
*/
constructor(resolver, container) {
this.resolver = resolver;
this.container = container;
}
/**
* @return {?}
*/
get isValid() {
return this.group.controls[this.config.key].valid;
}
/**
* @return {?}
*/
ngOnChanges() {
if (this.component) {
this.component.instance.group = this.group;
this.component.instance.config = this.config;
this.component.instance.settings = this.settings;
}
}
/**
* @return {?}
*/
ngOnInit() {
if (!components[this.config.type]) {
/** @type {?} */
const supportedTypes = Object.keys(components).join(", ");
throw new Error(`Trying to use an unsupported type (${this.config.type}).
Supported types: ${supportedTypes}`);
}
/** @type {?} */
const component = this.resolver.resolveComponentFactory(components[this.config.type]);
this.component = this.container.createComponent(component);
this.component.instance.group = this.group;
this.component.instance.config = this.config;
this.component.instance.settings = this.settings;
}
}
DynamicFieldDirective.decorators = [
{ type: Directive, args: [{
selector: "[dynamicField]"
},] }
];
/** @nocollapse */
DynamicFieldDirective.ctorParameters = () => [
{ type: ComponentFactoryResolver },
{ type: ViewContainerRef }
];
DynamicFieldDirective.propDecorators = {
group: [{ type: Input }],
config: [{ type: Input }],
settings: [{ type: Input }]
};
if (false) {
/** @type {?} */
DynamicFieldDirective.prototype.group;
/** @type {?} */
DynamicFieldDirective.prototype.config;
/** @type {?} */
DynamicFieldDirective.prototype.settings;
/** @type {?} */
DynamicFieldDirective.prototype.component;
/**
* @type {?}
* @private
*/
DynamicFieldDirective.prototype.resolver;
/**
* @type {?}
* @private
*/
DynamicFieldDirective.prototype.container;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pY0ZpZWxkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFudGQtanNvbi1zY2hlbWEtZm9ybS8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2R5bmFtaWNGaWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUV4QixTQUFTLEVBQ1QsS0FBSyxFQUlMLGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O01BRTFFLFVBQVUsR0FBb0M7SUFDbEQsTUFBTSxFQUFFLG1CQUFtQjtJQUMzQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLE1BQU0sRUFBRSxtQkFBbUI7SUFDM0IsUUFBUSxFQUFFLHFCQUFxQjtJQUMvQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsUUFBUSxFQUFFLHFCQUFxQjtJQUMvQixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLElBQUksRUFBRSxpQkFBaUI7Q0FDeEI7QUFLRCxNQUFNLE9BQU8scUJBQXFCOzs7OztJQVdoQyxZQUFvQixRQUFrQyxFQUFVLFNBQTJCO1FBQXZFLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFBRyxDQUFDOzs7O0lBTi9GLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEQsQ0FBQzs7OztJQU1ELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDbEQ7SUFDSCxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTs7a0JBQzNCLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDekQsTUFBTSxJQUFJLEtBQUssQ0FDYixzQ0FBc0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJOzJCQUNuQyxjQUFjLEVBQUUsQ0FDcEMsQ0FBQztTQUNIOztjQUNLLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDbkQsQ0FBQzs7O1lBckNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2FBQzNCOzs7O1lBbkNDLHdCQUF3QjtZQU94QixnQkFBZ0I7OztvQkE4QmYsS0FBSztxQkFDTCxLQUFLO3VCQUNMLEtBQUs7Ozs7SUFGTixzQ0FBMEI7O0lBQzFCLHVDQUFxQjs7SUFDckIseUNBQWdDOztJQU1oQywwQ0FBK0I7Ozs7O0lBRW5CLHlDQUEwQzs7Ozs7SUFBRSwwQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgeyBGaWVsZCwgRm9ybVNldHRpbmdzIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xuaW1wb3J0IHsgRm9ybUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRzL2Zvcm0tYnV0dG9uL2Zvcm0tYnV0dG9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRm9ybUlucHV0Q29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZm9ybS1pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRm9ybUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZm9ybS1jaGVja2JveC9mb3JtLWNoZWNrYm94LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRm9ybVNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRzL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRm9ybVRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZm9ybS10ZXh0YXJlYS9mb3JtLXRleHRhcmVhLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRm9ybVByaXNtQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZm9ybS1wcmlzbS9mb3JtLXByaXNtLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRm9ybVJhZGlvQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZm9ybS1yYWRpby9mb3JtLXJhZGlvLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRm9ybUljb25Db21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9mb3JtLWljb24vZm9ybS1pY29uLmNvbXBvbmVudFwiO1xuXG5jb25zdCBjb21wb25lbnRzOiB7IFt0eXBlOiBzdHJpbmddOiBUeXBlPEZpZWxkPiB9ID0ge1xuICBidXR0b246IEZvcm1CdXR0b25Db21wb25lbnQsXG4gIGlucHV0OiBGb3JtSW5wdXRDb21wb25lbnQsXG4gIHNlbGVjdDogRm9ybVNlbGVjdENvbXBvbmVudCxcbiAgY2hlY2tib3g6IEZvcm1DaGVja2JveENvbXBvbmVudCxcbiAgcmFkaW86IEZvcm1SYWRpb0NvbXBvbmVudCxcbiAgXCJyYWRpby1idXR0b25cIjogRm9ybVJhZGlvQ29tcG9uZW50LFxuICB0ZXh0YXJlYTogRm9ybVRleHRhcmVhQ29tcG9uZW50LFxuICBwcmlzbTogRm9ybVByaXNtQ29tcG9uZW50LFxuICBpY29uOiBGb3JtSWNvbkNvbXBvbmVudFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltkeW5hbWljRmllbGRdXCJcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0ZpZWxkRGlyZWN0aXZlIGltcGxlbWVudHMgRmllbGQsIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgY29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpIHNldHRpbmdzOiBGb3JtU2V0dGluZ3M7XG5cbiAgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5jb25maWcua2V5XS52YWxpZDtcbiAgfVxuXG4gIGNvbXBvbmVudDogQ29tcG9uZW50UmVmPEZpZWxkPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmNvbXBvbmVudCkge1xuICAgICAgdGhpcy5jb21wb25lbnQuaW5zdGFuY2UuZ3JvdXAgPSB0aGlzLmdyb3VwO1xuICAgICAgdGhpcy5jb21wb25lbnQuaW5zdGFuY2UuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB0aGlzLmNvbXBvbmVudC5pbnN0YW5jZS5zZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3M7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCFjb21wb25lbnRzW3RoaXMuY29uZmlnLnR5cGVdKSB7XG4gICAgICBjb25zdCBzdXBwb3J0ZWRUeXBlcyA9IE9iamVjdC5rZXlzKGNvbXBvbmVudHMpLmpvaW4oXCIsIFwiKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRyeWluZyB0byB1c2UgYW4gdW5zdXBwb3J0ZWQgdHlwZSAoJHt0aGlzLmNvbmZpZy50eXBlfSkuXG4gICAgICAgIFN1cHBvcnRlZCB0eXBlczogJHtzdXBwb3J0ZWRUeXBlc31gXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5PEZpZWxkPihjb21wb25lbnRzW3RoaXMuY29uZmlnLnR5cGVdKTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IHRoaXMuY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICAgIHRoaXMuY29tcG9uZW50Lmluc3RhbmNlLmdyb3VwID0gdGhpcy5ncm91cDtcbiAgICB0aGlzLmNvbXBvbmVudC5pbnN0YW5jZS5jb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICB0aGlzLmNvbXBvbmVudC5pbnN0YW5jZS5zZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3M7XG4gIH1cbn1cbiJdfQ==