@spartacus/storefront
Version:
Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.
55 lines • 6.54 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@ng-bootstrap/ng-bootstrap";
/**
* A service to handle modal
*/
export class ModalService {
constructor(ngbModalService, applicationRef) {
this.ngbModalService = ngbModalService;
this.applicationRef = applicationRef;
this.modals = [];
}
get rootComponent() {
var _a, _b, _c, _d;
return (_d = (_c = (_b = (_a = this.applicationRef) === null || _a === void 0 ? void 0 : _a.components) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.location) === null || _d === void 0 ? void 0 : _d.nativeElement;
}
open(content, options) {
let activeModal;
options = Object.assign({ container: this.rootComponent }, options);
activeModal = this.ngbModalService.open(content, options);
this.modals.push(activeModal);
this.handleModalRemoveEvents(activeModal);
return activeModal;
}
handleModalRemoveEvents(modal) {
modal.result.finally(() => {
this.modals = this.modals.filter((m) => m !== modal);
});
}
getActiveModal() {
const modal = this.modals[this.modals.length - 1];
return modal ? modal : null;
}
dismissActiveModal(reason) {
const modal = this.getActiveModal();
if (modal) {
modal.dismiss(reason);
}
}
closeActiveModal(reason) {
const modal = this.getActiveModal();
if (modal) {
modal.close(reason);
}
}
}
ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ModalService, deps: [{ token: i1.NgbModal }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
ModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ModalService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ModalService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.NgbModal }, { type: i0.ApplicationRef }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSzNEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFDVSxlQUF5QixFQUN2QixjQUE4QjtRQURoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBVTtRQUN2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFKbEMsV0FBTSxHQUFlLEVBQUUsQ0FBQztJQUs3QixDQUFDO0lBRUosSUFBYyxhQUFhOztRQUN6QixPQUFPLE1BQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsVUFBVSwwQ0FBRyxDQUFDLENBQUMsMENBQUUsUUFBUSwwQ0FBRSxhQUFhLENBQUM7SUFDdkUsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFZLEVBQUUsT0FBc0I7UUFDdkMsSUFBSSxXQUFxQixDQUFDO1FBRTFCLE9BQU8sbUJBQUssU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUssT0FBTyxDQUFFLENBQUM7UUFFeEQsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVTLHVCQUF1QixDQUFDLEtBQWU7UUFDL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQVk7UUFDN0IsTUFBTSxLQUFLLEdBQWEsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTlDLElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFZO1FBQzNCLE1BQU0sS0FBSyxHQUFhLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUU5QyxJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDOzt5R0FqRFUsWUFBWTs2R0FBWixZQUFZLGNBRlgsTUFBTTsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IE1vZGFsT3B0aW9ucyB9IGZyb20gJy4vbW9kYWwtb3B0aW9ucyc7XG5pbXBvcnQgeyBNb2RhbFJlZiB9IGZyb20gJy4vbW9kYWwtcmVmJztcblxuLyoqXG4gKiBBIHNlcnZpY2UgdG8gaGFuZGxlIG1vZGFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2Uge1xuICBwcml2YXRlIG1vZGFsczogTW9kYWxSZWZbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdiTW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICBwcm90ZWN0ZWQgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmXG4gICkge31cblxuICBwcm90ZWN0ZWQgZ2V0IHJvb3RDb21wb25lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGljYXRpb25SZWY/LmNvbXBvbmVudHM/LlswXT8ubG9jYXRpb24/Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBvcGVuKGNvbnRlbnQ6IGFueSwgb3B0aW9ucz86IE1vZGFsT3B0aW9ucyk6IE1vZGFsUmVmIHtcbiAgICBsZXQgYWN0aXZlTW9kYWw6IE1vZGFsUmVmO1xuXG4gICAgb3B0aW9ucyA9IHsgY29udGFpbmVyOiB0aGlzLnJvb3RDb21wb25lbnQsIC4uLm9wdGlvbnMgfTtcblxuICAgIGFjdGl2ZU1vZGFsID0gdGhpcy5uZ2JNb2RhbFNlcnZpY2Uub3Blbihjb250ZW50LCBvcHRpb25zKTtcbiAgICB0aGlzLm1vZGFscy5wdXNoKGFjdGl2ZU1vZGFsKTtcbiAgICB0aGlzLmhhbmRsZU1vZGFsUmVtb3ZlRXZlbnRzKGFjdGl2ZU1vZGFsKTtcblxuICAgIHJldHVybiBhY3RpdmVNb2RhbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVNb2RhbFJlbW92ZUV2ZW50cyhtb2RhbDogTW9kYWxSZWYpOiB2b2lkIHtcbiAgICBtb2RhbC5yZXN1bHQuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLm1vZGFscyA9IHRoaXMubW9kYWxzLmZpbHRlcigobSkgPT4gbSAhPT0gbW9kYWwpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0QWN0aXZlTW9kYWwoKTogTW9kYWxSZWYge1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5tb2RhbHNbdGhpcy5tb2RhbHMubGVuZ3RoIC0gMV07XG4gICAgcmV0dXJuIG1vZGFsID8gbW9kYWwgOiBudWxsO1xuICB9XG5cbiAgZGlzbWlzc0FjdGl2ZU1vZGFsKHJlYXNvbj86IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IG1vZGFsOiBNb2RhbFJlZiA9IHRoaXMuZ2V0QWN0aXZlTW9kYWwoKTtcblxuICAgIGlmIChtb2RhbCkge1xuICAgICAgbW9kYWwuZGlzbWlzcyhyZWFzb24pO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlQWN0aXZlTW9kYWwocmVhc29uPzogYW55KTogdm9pZCB7XG4gICAgY29uc3QgbW9kYWw6IE1vZGFsUmVmID0gdGhpcy5nZXRBY3RpdmVNb2RhbCgpO1xuXG4gICAgaWYgKG1vZGFsKSB7XG4gICAgICBtb2RhbC5jbG9zZShyZWFzb24pO1xuICAgIH1cbiAgfVxufVxuIl19