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
JavaScript
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9td2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvY3VzdG9td2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvY3VzdG9td2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBdUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQVMvRCxNQUFNLE9BQU8scUJBQXFCO0lBTWhDLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUM3RSxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdELENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztJQUM5QyxDQUFDO0lBQ0QsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLElBQUksSUFBSSxDQUFDLG1CQUFtQjtZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFDRCxXQUFXLENBQUMsYUFBNEI7UUFDdEMsSUFBRyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUMxRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7O21IQWhDVSxxQkFBcUI7dUdBQXJCLHFCQUFxQiw4TkNWbEMsNFFBS007NEZES08scUJBQXFCO2tCQU5qQyxTQUFTO21CQUNSO29CQUNFLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2hDOzhCQUdRLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRWdCLFNBQVM7c0JBQTlCLFNBQVM7dUJBQUMsU0FBUzs7QUFnQ3RCLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcblxuQENvbXBvbmVudChcbiAge1xuICAgIHRlbXBsYXRlVXJsOiBcIi4vY3VzdG9td2lkZ2V0LmNvbXBvbmVudC5odG1sXCIsXG4gICAgc2VsZWN0b3I6IFwic3YtbmctY3VzdG9tLXdpZGdldFwiXG4gIH1cbilcbmV4cG9ydCBjbGFzcyBDdXN0b21XaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNzczogYW55O1xuICBASW5wdXQoKSBtb2RlbCE6IFF1ZXN0aW9uO1xuXG4gIEBWaWV3Q2hpbGQoXCJjb250ZW50XCIpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIGdldCBoYXNEZWZhdWx0UmVuZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGVsLmN1c3RvbVdpZGdldC5pc0RlZmF1bHRSZW5kZXIgfHwgdGhpcy5oYXNBbmd1bGFyQ29tcG9uZW50O1xuICB9XG4gIGdldCBoYXNIdG1sKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGVsLmN1c3RvbVdpZGdldC5odG1sVGVtcGxhdGUgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgZ2V0IGN1c3RvbUh0bWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5jdXN0b21XaWRnZXQuaHRtbFRlbXBsYXRlO1xuICB9XG4gIGdldCBoYXNBbmd1bGFyQ29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5pc0NvbXBvbmVudFJlZ2lzdGVyZWQodGhpcy5tb2RlbC5jdXN0b21XaWRnZXQubmFtZSk7XG4gIH1cbiAgZ2V0IGNvbXBvbmVudE5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oYXNBbmd1bGFyQ29tcG9uZW50KSByZXR1cm4gdGhpcy5tb2RlbC5jdXN0b21XaWRnZXQubmFtZTtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5nZXRUZW1wbGF0ZSgpICsgXCItcXVlc3Rpb25cIjtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5jdXN0b21XaWRnZXQuYWZ0ZXJSZW5kZXIodGhpcy5tb2RlbCwgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmKHNpbXBsZUNoYW5nZXNbXCJtb2RlbFwiXS5wcmV2aW91c1ZhbHVlICE9PSB1bmRlZmluZWQgJiYgc2ltcGxlQ2hhbmdlc1tcIm1vZGVsXCJdLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1vZGVsLmN1c3RvbVdpZGdldC5hZnRlclJlbmRlcih0aGlzLm1vZGVsLCB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5jdXN0b21XaWRnZXQud2lsbFVubW91bnQodGhpcy5tb2RlbCwgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gIH1cblxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN1cnZleS1jdXN0b213aWRnZXRcIiwgQ3VzdG9tV2lkZ2V0Q29tcG9uZW50KTtcbiIsIjxkaXYgI2NvbnRlbnQ+XG4gIDxkaXYgKm5nSWY9XCJoYXNIdG1sXCIgW2lubmVySFRNTF09XCJjdXN0b21IdG1sIHwgc2FmZUh0bWxcIj48L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0RlZmF1bHRSZW5kZXJcIj5cbiAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6IGNvbXBvbmVudE5hbWUsIGRhdGE6IHsgbW9kZWw6IG1vZGVsLCBjc3M6IGNzcyB9IH1cIj48L25nLXRlbXBsYXRlPiAgXG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19