UNPKG

survey-angular-ui

Version:

survey.js is a JavaScript Survey Library. It is a modern way to add a survey to your website. It uses JSON for survey metadata and results.

54 lines 8.17 kB
import { Component, Input, ViewChild } from "@angular/core"; import { AngularComponentFactory } from "../component-factory"; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "../utils/dynamic.directive"; import * as i3 from "../utils/safe-html.pipe"; export class CustomWidgetComponent { get hasDefaultRender() { return this.model.customWidget.isDefaultRender || this.hasAngularComponent; } get hasHtml() { return this.model.customWidget.htmlTemplate ? true : false; } get customHtml() { return this.model.customWidget.htmlTemplate; } get hasAngularComponent() { return AngularComponentFactory.Instance.isComponentRegistered(this.model.customWidget.name); } get componentName() { if (this.hasAngularComponent) return this.model.customWidget.name; return this.model.getTemplate() + "-question"; } ngAfterViewInit() { this.model.customWidget.afterRender(this.model, this.container.nativeElement); } ngOnChanges(simpleChanges) { if (simpleChanges["model"].previousValue !== undefined && simpleChanges["model"].currentValue !== undefined) { this.model.customWidget.afterRender(this.model, this.container.nativeElement); } } ngOnDestroy() { this.model.customWidget.willUnmount(this.model, this.container.nativeElement); } } CustomWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); CustomWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomWidgetComponent, selector: "sv-ng-custom-widget", inputs: { css: "css", model: "model" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["content"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #content>\n <div *ngIf=\"hasHtml\" [innerHTML]=\"customHtml | safeHtml\"></div>\n <ng-container *ngIf=\"hasDefaultRender\">\n <ng-template [component]=\"{ name: componentName, data: { model: model, css: css } }\"></ng-template> \n </ng-container>\n</div>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }], pipes: { "safeHtml": i3.SafeHtmlPipe } }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomWidgetComponent, decorators: [{ type: Component, args: [{ templateUrl: "./customwidget.component.html", selector: "sv-ng-custom-widget" }] }], propDecorators: { css: [{ type: Input }], model: [{ type: Input }], container: [{ type: ViewChild, args: ["content"] }] } }); AngularComponentFactory.Instance.registerComponent("survey-customwidget", CustomWidgetComponent); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9td2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvY3VzdG9td2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvY3VzdG9td2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBdUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQVMvRCxNQUFNLE9BQU8scUJBQXFCO0lBTWhDLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUM3RSxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdELENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztJQUM5QyxDQUFDO0lBQ0QsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLElBQUksSUFBSSxDQUFDLG1CQUFtQjtZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFDRCxXQUFXLENBQUMsYUFBNEI7UUFDdEMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUMzRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7O21IQWhDVSxxQkFBcUI7dUdBQXJCLHFCQUFxQiw4TkNWbEMsNFFBS007NEZES08scUJBQXFCO2tCQU5qQyxTQUFTO21CQUNSO29CQUNFLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2hDOzhCQUdRLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRWdCLFNBQVM7c0JBQTlCLFNBQVM7dUJBQUMsU0FBUzs7QUFnQ3RCLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcblxuQENvbXBvbmVudChcbiAge1xuICAgIHRlbXBsYXRlVXJsOiBcIi4vY3VzdG9td2lkZ2V0LmNvbXBvbmVudC5odG1sXCIsXG4gICAgc2VsZWN0b3I6IFwic3YtbmctY3VzdG9tLXdpZGdldFwiXG4gIH1cbilcbmV4cG9ydCBjbGFzcyBDdXN0b21XaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNzczogYW55O1xuICBASW5wdXQoKSBtb2RlbCE6IFF1ZXN0aW9uO1xuXG4gIEBWaWV3Q2hpbGQoXCJjb250ZW50XCIpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIGdldCBoYXNEZWZhdWx0UmVuZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGVsLmN1c3RvbVdpZGdldC5pc0RlZmF1bHRSZW5kZXIgfHwgdGhpcy5oYXNBbmd1bGFyQ29tcG9uZW50O1xuICB9XG4gIGdldCBoYXNIdG1sKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGVsLmN1c3RvbVdpZGdldC5odG1sVGVtcGxhdGUgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgZ2V0IGN1c3RvbUh0bWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5jdXN0b21XaWRnZXQuaHRtbFRlbXBsYXRlO1xuICB9XG4gIGdldCBoYXNBbmd1bGFyQ29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5pc0NvbXBvbmVudFJlZ2lzdGVyZWQodGhpcy5tb2RlbC5jdXN0b21XaWRnZXQubmFtZSk7XG4gIH1cbiAgZ2V0IGNvbXBvbmVudE5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oYXNBbmd1bGFyQ29tcG9uZW50KSByZXR1cm4gdGhpcy5tb2RlbC5jdXN0b21XaWRnZXQubmFtZTtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5nZXRUZW1wbGF0ZSgpICsgXCItcXVlc3Rpb25cIjtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5jdXN0b21XaWRnZXQuYWZ0ZXJSZW5kZXIodGhpcy5tb2RlbCwgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChzaW1wbGVDaGFuZ2VzW1wibW9kZWxcIl0ucHJldmlvdXNWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHNpbXBsZUNoYW5nZXNbXCJtb2RlbFwiXS5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5tb2RlbC5jdXN0b21XaWRnZXQuYWZ0ZXJSZW5kZXIodGhpcy5tb2RlbCwgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwuY3VzdG9tV2lkZ2V0LndpbGxVbm1vdW50KHRoaXMubW9kZWwsIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbn1cblxuQW5ndWxhckNvbXBvbmVudEZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJDb21wb25lbnQoXCJzdXJ2ZXktY3VzdG9td2lkZ2V0XCIsIEN1c3RvbVdpZGdldENvbXBvbmVudCk7XG4iLCI8ZGl2ICNjb250ZW50PlxuICA8ZGl2ICpuZ0lmPVwiaGFzSHRtbFwiIFtpbm5lckhUTUxdPVwiY3VzdG9tSHRtbCB8IHNhZmVIdG1sXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNEZWZhdWx0UmVuZGVyXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRdPVwieyBuYW1lOiBjb21wb25lbnROYW1lLCBkYXRhOiB7IG1vZGVsOiBtb2RlbCwgY3NzOiBjc3MgfSB9XCI+PC9uZy10ZW1wbGF0ZT4gIFxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PiJdfQ==