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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BvcHVwL21vZGFsLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQXNDLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBU3RHLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRnRDLG9CQUFlLEdBQVksS0FBSyxDQUFDO0lBR3pDLENBQUM7SUFDRCxVQUFVLENBQUMsYUFBNkIsRUFBRSxXQUF5QjtRQUNqRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLHlCQUF5QixDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMxRixNQUFNLDJCQUEyQixHQUFHLENBQUMsQ0FBcUIsRUFBRSxPQUErQixFQUFFLEVBQUU7WUFDN0YsSUFBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdEI7UUFDSCxDQUFDLENBQUM7UUFDRixjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsYUFBNkIsRUFBRSxXQUF5QixFQUFFLEVBQUU7WUFDakYsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsV0FBVzs7UUFDVCxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsT0FBTyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLFFBQVEsQ0FBQyxVQUFVLEdBQVEsU0FBUyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7NEdBbENVLGNBQWM7Z0dBQWQsY0FBYyw2REFKZixFQUFFOzRGQUlELGNBQWM7a0JBTjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osU0FBUyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tUG9ydGFsT3V0bGV0IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJRGlhbG9nT3B0aW9ucywgUG9wdXBCYXNlVmlld01vZGVsLCBjcmVhdGVQb3B1cE1vZGFsVmlld01vZGVsLCBzZXR0aW5ncyB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgUG9wdXBTZXJ2aWNlIH0gZnJvbSBcIi4vcG9wdXAuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3YtbmctbW9kYWwtY29udGFpbmVyXCIsXG4gIHRlbXBsYXRlOiBcIlwiLFxuICBzdHlsZVVybHM6IFtcIi4uLy4uL2hpZGUtaG9zdC5zY3NzXCJdXG59KVxuXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQge1xuXG4gIHB1YmxpYyBtb2RlbCE6IFBvcHVwQmFzZVZpZXdNb2RlbDtcbiAgcHJpdmF0ZSBwb3J0YWxIb3N0ITogRG9tUG9ydGFsT3V0bGV0O1xuICBwcml2YXRlIGZ1bmN0aW9uRGVmaW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9wdXBTZXJ2aWNlOiBQb3B1cFNlcnZpY2UpIHtcbiAgfVxuICBzaG93RGlhbG9nKGRpYWxvZ09wdGlvbnM6IElEaWFsb2dPcHRpb25zLCByb290RWxlbWVudD86IEhUTUxFbGVtZW50KTogUG9wdXBCYXNlVmlld01vZGVsIHtcbiAgICBjb25zdCBwb3B1cFZpZXdNb2RlbCA9IHRoaXMubW9kZWwgPSBjcmVhdGVQb3B1cE1vZGFsVmlld01vZGVsKGRpYWxvZ09wdGlvbnMsIHJvb3RFbGVtZW50KTtcbiAgICBjb25zdCBvblZpc2liaWxpdHlDaGFuZ2VkQ2FsbGJhY2sgPSAoXzogUG9wdXBCYXNlVmlld01vZGVsLCBvcHRpb25zOiB7IGlzVmlzaWJsZTogYm9vbGVhbiB9KSA9PiB7XG4gICAgICBpZighb3B0aW9ucy5pc1Zpc2libGUpIHtcbiAgICAgICAgdGhpcy5wb3J0YWxIb3N0LmRldGFjaCgpO1xuICAgICAgICB0aGlzLm1vZGVsLmRpc3Bvc2UoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHBvcHVwVmlld01vZGVsLm9uVmlzaWJpbGl0eUNoYW5nZWQuYWRkKG9uVmlzaWJpbGl0eUNoYW5nZWRDYWxsYmFjayk7XG4gICAgdGhpcy5wb3J0YWxIb3N0ID0gdGhpcy5wb3B1cFNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KHRoaXMubW9kZWwpO1xuICAgIHRoaXMubW9kZWwubW9kZWwuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZ1bmN0aW9uRGVmaW5lZCA9IHRydWU7XG5cbiAgICBzZXR0aW5ncy5zaG93RGlhbG9nID0gKGRpYWxvZ09wdGlvbnM6IElEaWFsb2dPcHRpb25zLCByb290RWxlbWVudD86IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zaG93RGlhbG9nKGRpYWxvZ09wdGlvbnMsIHJvb3RFbGVtZW50KTtcbiAgICB9O1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucG9ydGFsSG9zdD8uZGV0YWNoKCk7XG4gICAgdGhpcy5tb2RlbD8uZGlzcG9zZSgpO1xuICAgIGlmICh0aGlzLmZ1bmN0aW9uRGVmaW5lZCkge1xuICAgICAgc2V0dGluZ3Muc2hvd0RpYWxvZyA9IDxhbnk+dW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuXG4iXX0=