UNPKG

survey-angular-ui

Version:

A free MIT-licensed Angular UI component that renders dynamic, interactive JSON-based forms and surveys. You can use it to collect responses from users and send them to your own database.

48 lines 6.38 kB
import { Component } from "@angular/core"; import { PopupModalManager, settings } from "survey-core"; import * as i0 from "@angular/core"; import * as i1 from "./popup.service"; export class ModalComponent { constructor(popupService) { this.popupService = popupService; this.functionDefined = false; this.hosts = {}; this.modalManager = this.createModalManager(); } createModalManager() { const modalManager = new PopupModalManager(); modalManager.onModalsChangedCallback = (_, addedModals, removedModals) => { for (const modal of addedModals) { this.hosts[modal.uniqueId] = this.popupService.createComponent(modal); } for (const modal of removedModals) { if (this.hosts[modal.uniqueId]) { this.hosts[modal.uniqueId].detach(); delete this.hosts[modal.uniqueId]; } } }; return modalManager; } ngOnInit() { this.functionDefined = true; settings.showDialog = (dialogOptions, rootElement) => this.modalManager.addDialog(dialogOptions, rootElement); } ngOnDestroy() { this.modalManager.clear(); if (this.functionDefined) { settings.showDialog = undefined; } } } ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ModalComponent, deps: [{ token: i1.PopupService }], target: i0.ɵɵFactoryTarget.Component }); ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ModalComponent, selector: "sv-ng-modal-container", ngImport: i0, template: "", isInline: true, styles: [":host{display:none}\n"] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ModalComponent, decorators: [{ type: Component, args: [{ selector: "sv-ng-modal-container", template: "", styleUrls: ["../../hide-host.scss"] }] }], ctorParameters: function () { return [{ type: i1.PopupService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BvcHVwL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQXNDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBYzlGLE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBSHRDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLFVBQUssR0FBeUMsRUFBRSxDQUFDO1FBQ2pELGlCQUFZLEdBQXNCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBRXBFLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzdDLFlBQVksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEVBQUU7WUFDdkUsS0FBSyxNQUFNLEtBQUssSUFBSSxXQUFXLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUU7Z0JBQ2pDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNwQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNuQzthQUNGO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsYUFBNkIsRUFBRSxXQUF5QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUksQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixRQUFRLENBQUMsVUFBVSxHQUFRLFNBQVMsQ0FBQztTQUN0QztJQUNILENBQUM7OzRHQTlCVSxjQUFjO2dHQUFkLGNBQWMsNkRBSmYsRUFBRTs0RkFJRCxjQUFjO2tCQU4xQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxFQUFFO29CQUNaLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvbVBvcnRhbE91dGxldCB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSURpYWxvZ09wdGlvbnMsIFBvcHVwQmFzZVZpZXdNb2RlbCwgUG9wdXBNb2RhbE1hbmFnZXIsIHNldHRpbmdzIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBQb3B1cFNlcnZpY2UgfSBmcm9tIFwiLi9wb3B1cC5zZXJ2aWNlXCI7XG5cbmludGVyZmFjZSBJTW9kYWxXaW5kb3dEZXNjcmlwdG9yIHtcbiAgbW9kZWw6IFBvcHVwQmFzZVZpZXdNb2RlbDtcbiAgcG9ydGFsSG9zdDogRG9tUG9ydGFsT3V0bGV0O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3YtbmctbW9kYWwtY29udGFpbmVyXCIsXG4gIHRlbXBsYXRlOiBcIlwiLFxuICBzdHlsZVVybHM6IFtcIi4uLy4uL2hpZGUtaG9zdC5zY3NzXCJdXG59KVxuXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQge1xuICBwcml2YXRlIGZ1bmN0aW9uRGVmaW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGhvc3RzOiB7IFtpbmRleDogbnVtYmVyXTogRG9tUG9ydGFsT3V0bGV0IH0gPSB7fTtcbiAgcHJpdmF0ZSBtb2RhbE1hbmFnZXI6IFBvcHVwTW9kYWxNYW5hZ2VyID0gdGhpcy5jcmVhdGVNb2RhbE1hbmFnZXIoKTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3B1cFNlcnZpY2U6IFBvcHVwU2VydmljZSkge1xuICB9XG4gIGNyZWF0ZU1vZGFsTWFuYWdlcigpOiBQb3B1cE1vZGFsTWFuYWdlciB7XG4gICAgY29uc3QgbW9kYWxNYW5hZ2VyID0gbmV3IFBvcHVwTW9kYWxNYW5hZ2VyKCk7XG4gICAgbW9kYWxNYW5hZ2VyLm9uTW9kYWxzQ2hhbmdlZENhbGxiYWNrID0gKF8sIGFkZGVkTW9kYWxzLCByZW1vdmVkTW9kYWxzKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG1vZGFsIG9mIGFkZGVkTW9kYWxzKSB7XG4gICAgICAgIHRoaXMuaG9zdHNbbW9kYWwudW5pcXVlSWRdID0gdGhpcy5wb3B1cFNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KG1vZGFsKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgbW9kYWwgb2YgcmVtb3ZlZE1vZGFscykge1xuICAgICAgICBpZiAodGhpcy5ob3N0c1ttb2RhbC51bmlxdWVJZF0pIHtcbiAgICAgICAgICB0aGlzLmhvc3RzW21vZGFsLnVuaXF1ZUlkXS5kZXRhY2goKTtcbiAgICAgICAgICBkZWxldGUgdGhpcy5ob3N0c1ttb2RhbC51bmlxdWVJZF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBtb2RhbE1hbmFnZXI7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mdW5jdGlvbkRlZmluZWQgPSB0cnVlO1xuICAgIHNldHRpbmdzLnNob3dEaWFsb2cgPSAoZGlhbG9nT3B0aW9uczogSURpYWxvZ09wdGlvbnMsIHJvb3RFbGVtZW50PzogSFRNTEVsZW1lbnQpID0+IHRoaXMubW9kYWxNYW5hZ2VyLmFkZERpYWxvZyhkaWFsb2dPcHRpb25zLCByb290RWxlbWVudCk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5tb2RhbE1hbmFnZXIuY2xlYXIoKTtcbiAgICBpZiAodGhpcy5mdW5jdGlvbkRlZmluZWQpIHtcbiAgICAgIHNldHRpbmdzLnNob3dEaWFsb2cgPSA8YW55PnVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuIl19