survey-creator-angular
Version:
A white-label drag-and-drop form builder for Angular that lets you design complex, interactive forms and surveys without writing code. It generates JSON schemas used by the SurveyJS Form Library to render dynamic forms in your Angular app.
53 lines • 8.05 kB
JavaScript
import { Component, Input } from "@angular/core";
import { EmbeddedViewContentComponent } from "survey-angular-ui";
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "survey-angular-ui";
export class PageWrapperComponent extends EmbeddedViewContentComponent {
constructor(viewContainerRef, changeDetectorRef) {
super(viewContainerRef);
this.changeDetectorRef = changeDetectorRef;
this.id = `PageWrapperCallback_${++PageWrapperComponent.ID}`;
}
setupCallback(page) {
if (!page)
return;
page.registerFunctionOnPropertyValueChanged("name", () => {
this.embeddedView ? this.embeddedView.detectChanges() : this.changeDetectorRef.detectChanges();
}, this.id);
}
clearCallback(page) {
if (!page)
return;
page.unRegisterFunctionOnPropertyValueChanged("name");
}
ngOnChanges(changes) {
if (changes.page && changes.page.currentValue !== changes.page.previousValue) {
this.clearCallback(changes.page.previousValue);
this.setupCallback(changes.page.currentValue);
}
}
ngOnDestroy() {
this.clearCallback(this.page);
}
}
PageWrapperComponent.ID = 0;
PageWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PageWrapperComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
PageWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PageWrapperComponent, selector: "svc-page-wrapper", inputs: { page: "page", isGhost: "isGhost", creator: "creator", className: "className" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-template #template>\n <div\n [class]=\"className\"\n [attr.data-sv-drop-target-page]=\"page?.name\"\n [attr.data-sv-drop-target-survey-element]=\"isGhost ? 'newGhostPage' : page?.name\"\n >\n <ng-container *ngIf=\"!!page\">\n <ng-template [component]=\"{ name: 'svc-page', data: { model: page, creator, survey: creator.survey, isGhost }}\"></ng-template>\n </ng-container>\n </div>\n</ng-template>", styles: [":host { display: none; }"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PageWrapperComponent, decorators: [{
type: Component,
args: [{
selector: "svc-page-wrapper",
templateUrl: "./page-wrapper.component.html",
styles: [":host { display: none; }"]
}]
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { page: [{
type: Input
}], isGhost: [{
type: Input
}], creator: [{
type: Input
}], className: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYWdlLXdyYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vc3JjL3BhZ2Utd3JhcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQWlFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBU2pFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSw0QkFBNEI7SUFPcEUsWUFBWSxnQkFBa0MsRUFBVSxpQkFBb0M7UUFDMUYsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFEOEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUxwRixPQUFFLEdBQUcsdUJBQXVCLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxFQUFFLENBQUM7SUFPaEUsQ0FBQztJQUNPLGFBQWEsQ0FBQyxJQUFnQjtRQUNwQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDbEIsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2pHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBQ08sYUFBYSxDQUFDLElBQWdCO1FBQ3BDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixJQUFJLENBQUMsd0NBQXdDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDNUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7QUEzQmMsdUJBQUUsR0FBRyxDQUFDLENBQUM7a0hBRFgsb0JBQW9CO3NHQUFwQixvQkFBb0IsOExDVmpDLCtiQVVjOzRGREFELG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixXQUFXLEVBQUUsK0JBQStCO29CQUM1QyxNQUFNLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDckM7dUlBSVUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEVtYmVkZGVkVmlld0NvbnRlbnRDb21wb25lbnQgfSBmcm9tIFwic3VydmV5LWFuZ3VsYXItdWlcIjtcbmltcG9ydCB7IFBhZ2VNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgU3VydmV5Q3JlYXRvck1vZGVsIH0gZnJvbSBcInN1cnZleS1jcmVhdG9yLWNvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN2Yy1wYWdlLXdyYXBwZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9wYWdlLXdyYXBwZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVzOiBbXCI6aG9zdCB7IGRpc3BsYXk6IG5vbmU7IH1cIl1cbn0pXG5leHBvcnQgY2xhc3MgUGFnZVdyYXBwZXJDb21wb25lbnQgZXh0ZW5kcyBFbWJlZGRlZFZpZXdDb250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIElEID0gMDtcbiAgcHJpdmF0ZSBpZCA9IGBQYWdlV3JhcHBlckNhbGxiYWNrXyR7KytQYWdlV3JhcHBlckNvbXBvbmVudC5JRH1gO1xuICBASW5wdXQoKSBwYWdlPzogUGFnZU1vZGVsO1xuICBASW5wdXQoKSBpc0dob3N0PzogYm9vbGVhbjtcbiAgQElucHV0KCkgY3JlYXRvciE6IFN1cnZleUNyZWF0b3JNb2RlbDtcbiAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xuICBjb25zdHJ1Y3Rvcih2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKHZpZXdDb250YWluZXJSZWYpO1xuICB9XG4gIHByaXZhdGUgc2V0dXBDYWxsYmFjayhwYWdlPzogUGFnZU1vZGVsKSB7XG4gICAgaWYgKCFwYWdlKSByZXR1cm47XG4gICAgcGFnZS5yZWdpc3RlckZ1bmN0aW9uT25Qcm9wZXJ0eVZhbHVlQ2hhbmdlZChcIm5hbWVcIiwgKCkgPT4ge1xuICAgICAgdGhpcy5lbWJlZGRlZFZpZXcgPyB0aGlzLmVtYmVkZGVkVmlldy5kZXRlY3RDaGFuZ2VzKCkgOiB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCB0aGlzLmlkKTtcbiAgfVxuICBwcml2YXRlIGNsZWFyQ2FsbGJhY2socGFnZT86IFBhZ2VNb2RlbCkge1xuICAgIGlmICghcGFnZSkgcmV0dXJuO1xuICAgIHBhZ2UudW5SZWdpc3RlckZ1bmN0aW9uT25Qcm9wZXJ0eVZhbHVlQ2hhbmdlZChcIm5hbWVcIik7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnBhZ2UgJiYgY2hhbmdlcy5wYWdlLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5wYWdlLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgIHRoaXMuY2xlYXJDYWxsYmFjayhjaGFuZ2VzLnBhZ2UucHJldmlvdXNWYWx1ZSk7XG4gICAgICB0aGlzLnNldHVwQ2FsbGJhY2soY2hhbmdlcy5wYWdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY2xlYXJDYWxsYmFjayh0aGlzLnBhZ2UpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCJjbGFzc05hbWVcIlxuICAgICAgW2F0dHIuZGF0YS1zdi1kcm9wLXRhcmdldC1wYWdlXT1cInBhZ2U/Lm5hbWVcIlxuICAgICAgW2F0dHIuZGF0YS1zdi1kcm9wLXRhcmdldC1zdXJ2ZXktZWxlbWVudF09XCJpc0dob3N0ID8gJ25ld0dob3N0UGFnZScgOiBwYWdlPy5uYW1lXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFwYWdlXCI+XG4gICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogJ3N2Yy1wYWdlJywgZGF0YTogeyBtb2RlbDogcGFnZSwgY3JlYXRvciwgc3VydmV5OiBjcmVhdG9yLnN1cnZleSwgaXNHaG9zdCB9fVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19