UNPKG

@doku-dev/doku-fragment

Version:

A new Angular UI library that moving away from Bootstrap and built from scratch.

55 lines 6.57 kB
import { DOCUMENT } from '@angular/common'; import { Inject, Injectable } from '@angular/core'; import { DokuBackdropRef } from './backdrop-ref'; import * as i0 from "@angular/core"; export class DokuBackdropService { constructor(rendererFactory, document) { this.rendererFactory = rendererFactory; this.document = document; this.backdrops = []; this.renderer = this.rendererFactory.createRenderer(null, null); } /** * Open backdrop element. */ open() { const backdropElement = this.createBackdropElement(); this.renderer.appendChild(this.document.body, backdropElement); const backdropRef = new DokuBackdropRef(); backdropRef.element = backdropElement; backdropRef.close = () => this.close.bind(this)(backdropRef); this.backdrops.push(backdropRef); return backdropRef; } /** * Close backdrop element by ref. */ close(backdropRef) { if (backdropRef.element) this.document.body.removeChild(backdropRef.element); this.backdrops = this.backdrops.filter((item) => item !== backdropRef); } /** * Close all backdrops. */ closeAll() { this.backdrops.forEach((ref) => ref.close()); } createBackdropElement() { const el = this.renderer.createElement('div'); this.renderer.addClass(el, 'd-backdrop'); return el; } } DokuBackdropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuBackdropService, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); DokuBackdropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuBackdropService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuBackdropService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: Document, decorators: [{ type: Inject, args: [DOCUMENT] }] }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2Ryb3Auc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rva3UtZnJhZ21lbnQvc3JjL2xpYi9iYWNrZHJvcC9iYWNrZHJvcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUtqRCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQ1UsZUFBaUMsRUFDZixRQUFrQjtRQURwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTHRDLGNBQVMsR0FBc0IsRUFBRSxDQUFDO1FBT3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUUvRCxNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO1FBQ3RDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFdBQTRCO1FBQ2hDLElBQUksV0FBVyxDQUFDLE9BQU87WUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7Z0hBN0NVLG1CQUFtQixrREFNcEIsUUFBUTtvSEFOUCxtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFPSSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9rdUJhY2tkcm9wUmVmIH0gZnJvbSAnLi9iYWNrZHJvcC1yZWYnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRG9rdUJhY2tkcm9wU2VydmljZSB7XG4gIHByaXZhdGUgYmFja2Ryb3BzOiBEb2t1QmFja2Ryb3BSZWZbXSA9IFtdO1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnRcbiAgKSB7XG4gICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gYmFja2Ryb3AgZWxlbWVudC5cbiAgICovXG4gIG9wZW4oKTogRG9rdUJhY2tkcm9wUmVmIHtcbiAgICBjb25zdCBiYWNrZHJvcEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUJhY2tkcm9wRWxlbWVudCgpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCBiYWNrZHJvcEVsZW1lbnQpO1xuXG4gICAgY29uc3QgYmFja2Ryb3BSZWYgPSBuZXcgRG9rdUJhY2tkcm9wUmVmKCk7XG4gICAgYmFja2Ryb3BSZWYuZWxlbWVudCA9IGJhY2tkcm9wRWxlbWVudDtcbiAgICBiYWNrZHJvcFJlZi5jbG9zZSA9ICgpID0+IHRoaXMuY2xvc2UuYmluZCh0aGlzKShiYWNrZHJvcFJlZik7XG5cbiAgICB0aGlzLmJhY2tkcm9wcy5wdXNoKGJhY2tkcm9wUmVmKTtcbiAgICByZXR1cm4gYmFja2Ryb3BSZWY7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgYmFja2Ryb3AgZWxlbWVudCBieSByZWYuXG4gICAqL1xuICBjbG9zZShiYWNrZHJvcFJlZjogRG9rdUJhY2tkcm9wUmVmKTogdm9pZCB7XG4gICAgaWYgKGJhY2tkcm9wUmVmLmVsZW1lbnQpIHRoaXMuZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChiYWNrZHJvcFJlZi5lbGVtZW50KTtcbiAgICB0aGlzLmJhY2tkcm9wcyA9IHRoaXMuYmFja2Ryb3BzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gYmFja2Ryb3BSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGFsbCBiYWNrZHJvcHMuXG4gICAqL1xuICBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2tkcm9wcy5mb3JFYWNoKChyZWYpID0+IHJlZi5jbG9zZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQmFja2Ryb3BFbGVtZW50KCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICBjb25zdCBlbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbCwgJ2QtYmFja2Ryb3AnKTtcbiAgICByZXR1cm4gZWw7XG4gIH1cbn1cbiJdfQ==