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
JavaScript
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