UNPKG

truly-ui

Version:

Web Components for Desktop Applications.

55 lines 7.08 kB
import { Injectable } from '@angular/core'; import { ComponentPortal } from '@angular/cdk/portal'; import { Subscription } from 'rxjs'; import { TlLightbox } from '../lightbox'; import * as i0 from "@angular/core"; import * as i1 from "@angular/cdk/overlay"; export class LightboxService { constructor(overlayPositionBuilder, overlay) { this.overlayPositionBuilder = overlayPositionBuilder; this.overlay = overlay; this.subscription = new Subscription(); } create(images, current) { this.close(); const positionStrategy = this.overlay.position().global(); this.overlayRef = this.overlay.create({ positionStrategy, width: '100vw', height: '100vh', backdropClass: 'cdk-darker-overlay-backdrop', scrollStrategy: this.overlay.scrollStrategies.close(), disposeOnNavigation: false, hasBackdrop: true }); const menuPortal = new ComponentPortal(TlLightbox); this.lightBox = this.overlayRef.attach(menuPortal); this.lightBox.instance.init(images, current); this.listenBackDropClick(); } listenBackDropClick() { if (this.lightBox) { this.subscription.add(this.lightBox.instance.close.subscribe(() => { this.close(); })); this.subscription.add(this.overlayRef.backdropClick().subscribe(() => { this.close(); })); } } close() { if (this.overlayRef) { this.overlayRef.dispose(); this.overlayRef = null; } } ngOnDestroy() { this.subscription.unsubscribe(); } } /** @nocollapse */ LightboxService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LightboxService, deps: [{ token: i1.OverlayPositionBuilder }, { token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ LightboxService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LightboxService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LightboxService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.OverlayPositionBuilder }, { type: i1.Overlay }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRib3guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydWx5LXVpL3NyYy9jb21wb25lbnRzL2xpZ2h0Ym94L3NlcnZpY2VzL2xpZ2h0Ym94LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVsRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDOzs7QUFHdkMsTUFBTSxPQUFPLGVBQWU7SUFNMUIsWUFBb0Isc0JBQThDLEVBQzlDLE9BQWdCO1FBRGhCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUg1QixpQkFBWSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBR2pCLENBQUM7SUFJeEMsTUFBTSxDQUFFLE1BQU0sRUFBRSxPQUFPO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3BDLGdCQUFnQjtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsYUFBYSxFQUFFLDZCQUE2QjtZQUM1QyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDckQsbUJBQW1CLEVBQUUsS0FBSztZQUMxQixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBRSxVQUFVLENBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFFLFVBQVUsQ0FBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxNQUFNLEVBQUUsT0FBTyxDQUFFLENBQUM7UUFFL0MsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25FLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7Z0lBbERVLGVBQWU7b0lBQWYsZUFBZTs0RkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnRSZWYsIEluamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge092ZXJsYXksIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsIE92ZXJsYXlSZWZ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7Q29tcG9uZW50UG9ydGFsfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7VGxMaWdodGJveH0gZnJvbSAnLi4vbGlnaHRib3gnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTGlnaHRib3hTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIGxpZ2h0Qm94OiBDb21wb25lbnRSZWY8VGxMaWdodGJveD47XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSkge31cblxuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG5cbiAgY3JlYXRlKCBpbWFnZXMsIGN1cnJlbnQgKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICB3aWR0aDogJzEwMHZ3JyxcbiAgICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstZGFya2VyLW92ZXJsYXktYmFja2Ryb3AnLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCksXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlXG4gICAgfSk7XG4gICAgY29uc3QgbWVudVBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoIFRsTGlnaHRib3ggKTtcbiAgICB0aGlzLmxpZ2h0Qm94ID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaCggbWVudVBvcnRhbCApO1xuICAgIHRoaXMubGlnaHRCb3guaW5zdGFuY2UuaW5pdCggaW1hZ2VzLCBjdXJyZW50ICk7XG5cbiAgICB0aGlzLmxpc3RlbkJhY2tEcm9wQ2xpY2soKTtcbiAgfVxuXG4gIGxpc3RlbkJhY2tEcm9wQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMubGlnaHRCb3gpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCggdGhpcy5saWdodEJveC5pbnN0YW5jZS5jbG9zZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iXX0=