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.
48 lines • 6.4 kB
JavaScript
import { Component } from "@angular/core";
import { createPopupModalViewModel, 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;
}
showDialog(dialogOptions, rootElement) {
const popupViewModel = this.model = createPopupModalViewModel(dialogOptions, rootElement);
const onVisibilityChangedCallback = (_, options) => {
if (!options.isVisible) {
this.portalHost.detach();
this.model.dispose();
}
};
popupViewModel.onVisibilityChanged.add(onVisibilityChangedCallback);
this.portalHost = this.popupService.createComponent(this.model);
this.model.model.isVisible = true;
return this.model;
}
ngOnInit() {
this.functionDefined = true;
settings.showDialog = (dialogOptions, rootElement) => {
return this.showDialog(dialogOptions, rootElement);
};
}
ngOnDestroy() {
var _a, _b;
(_a = this.portalHost) === null || _a === void 0 ? void 0 : _a.detach();
(_b = this.model) === null || _b === void 0 ? void 0 : _b.dispose();
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BvcHVwL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQXNDLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBU3RHLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRnRDLG9CQUFlLEdBQVksS0FBSyxDQUFDO0lBR3pDLENBQUM7SUFDRCxVQUFVLENBQUMsYUFBNkIsRUFBRSxXQUF5QjtRQUNqRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLHlCQUF5QixDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMxRixNQUFNLDJCQUEyQixHQUFHLENBQUMsQ0FBcUIsRUFBRSxPQUErQixFQUFFLEVBQUU7WUFDN0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdEI7UUFDSCxDQUFDLENBQUM7UUFDRixjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsYUFBNkIsRUFBRSxXQUF5QixFQUFFLEVBQUU7WUFDakYsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsV0FBVzs7UUFDVCxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsT0FBTyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLFFBQVEsQ0FBQyxVQUFVLEdBQVEsU0FBUyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7NEdBbENVLGNBQWM7Z0dBQWQsY0FBYyw2REFKZixFQUFFOzRGQUlELGNBQWM7a0JBTjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osU0FBUyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tUG9ydGFsT3V0bGV0IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJRGlhbG9nT3B0aW9ucywgUG9wdXBCYXNlVmlld01vZGVsLCBjcmVhdGVQb3B1cE1vZGFsVmlld01vZGVsLCBzZXR0aW5ncyB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgUG9wdXBTZXJ2aWNlIH0gZnJvbSBcIi4vcG9wdXAuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3YtbmctbW9kYWwtY29udGFpbmVyXCIsXG4gIHRlbXBsYXRlOiBcIlwiLFxuICBzdHlsZVVybHM6IFtcIi4uLy4uL2hpZGUtaG9zdC5zY3NzXCJdXG59KVxuXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQge1xuXG4gIHB1YmxpYyBtb2RlbCE6IFBvcHVwQmFzZVZpZXdNb2RlbDtcbiAgcHJpdmF0ZSBwb3J0YWxIb3N0ITogRG9tUG9ydGFsT3V0bGV0O1xuICBwcml2YXRlIGZ1bmN0aW9uRGVmaW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9wdXBTZXJ2aWNlOiBQb3B1cFNlcnZpY2UpIHtcbiAgfVxuICBzaG93RGlhbG9nKGRpYWxvZ09wdGlvbnM6IElEaWFsb2dPcHRpb25zLCByb290RWxlbWVudD86IEhUTUxFbGVtZW50KTogUG9wdXBCYXNlVmlld01vZGVsIHtcbiAgICBjb25zdCBwb3B1cFZpZXdNb2RlbCA9IHRoaXMubW9kZWwgPSBjcmVhdGVQb3B1cE1vZGFsVmlld01vZGVsKGRpYWxvZ09wdGlvbnMsIHJvb3RFbGVtZW50KTtcbiAgICBjb25zdCBvblZpc2liaWxpdHlDaGFuZ2VkQ2FsbGJhY2sgPSAoXzogUG9wdXBCYXNlVmlld01vZGVsLCBvcHRpb25zOiB7IGlzVmlzaWJsZTogYm9vbGVhbiB9KSA9PiB7XG4gICAgICBpZiAoIW9wdGlvbnMuaXNWaXNpYmxlKSB7XG4gICAgICAgIHRoaXMucG9ydGFsSG9zdC5kZXRhY2goKTtcbiAgICAgICAgdGhpcy5tb2RlbC5kaXNwb3NlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBwb3B1cFZpZXdNb2RlbC5vblZpc2liaWxpdHlDaGFuZ2VkLmFkZChvblZpc2liaWxpdHlDaGFuZ2VkQ2FsbGJhY2spO1xuICAgIHRoaXMucG9ydGFsSG9zdCA9IHRoaXMucG9wdXBTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudCh0aGlzLm1vZGVsKTtcbiAgICB0aGlzLm1vZGVsLm1vZGVsLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mdW5jdGlvbkRlZmluZWQgPSB0cnVlO1xuXG4gICAgc2V0dGluZ3Muc2hvd0RpYWxvZyA9IChkaWFsb2dPcHRpb25zOiBJRGlhbG9nT3B0aW9ucywgcm9vdEVsZW1lbnQ/OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd0RpYWxvZyhkaWFsb2dPcHRpb25zLCByb290RWxlbWVudCk7XG4gICAgfTtcbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnBvcnRhbEhvc3Q/LmRldGFjaCgpO1xuICAgIHRoaXMubW9kZWw/LmRpc3Bvc2UoKTtcbiAgICBpZiAodGhpcy5mdW5jdGlvbkRlZmluZWQpIHtcbiAgICAgIHNldHRpbmdzLnNob3dEaWFsb2cgPSA8YW55PnVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuIl19