UNPKG

ngx-modialog-11

Version:
79 lines 11.2 kB
import { combineLatest } from 'rxjs'; import { Injectable } from '@angular/core'; import { Overlay, Modal as Modal_, CSSBackdrop, PromiseCompleter } from 'ngx-modialog-11'; import { BSModalContainer } from './modal-container.component'; import { OneButtonPresetBuilder } from './presets/one-button-preset'; import { TwoButtonPresetBuilder, PromptPresetBuilder } from './presets/two-button-preset'; // TODO: use DI factory for this. // TODO: consolidate dup code const isDoc = !(typeof document === 'undefined' || !document); let animationClass = 'show'; /** * Execute this method to flag that you are working with Bootstrap version 4. * @deprecated From version 5, ngx-modialog's bootstrap plugin is set to work with version 4 of bootstrap by default. */ export function bootstrap4Mode() { } /** * Execute this method to flag that you are working with Bootstrap version 3. */ export function bootstrap3Mode() { animationClass = 'in'; } export class Modal extends Modal_ { constructor(overlay) { super(overlay); } alert() { return new OneButtonPresetBuilder(this, { isBlocking: false }); } prompt() { return new PromptPresetBuilder(this, { isBlocking: true, keyboard: null }); } confirm() { return new TwoButtonPresetBuilder(this, { isBlocking: true, keyboard: null }); } create(dialogRef, content) { const backdropRef = this.createBackdrop(dialogRef, CSSBackdrop); const containerRef = this.createContainer(dialogRef, BSModalContainer, content); const overlay = dialogRef.overlayRef.instance; const backdrop = backdropRef.instance; const container = containerRef.instance; dialogRef.inElement ? overlay.insideElement() : overlay.fullscreen(); // add body class if this is the only dialog in the stack if (isDoc && !document.body.classList.contains('modal-open')) { document.body.classList.add('modal-open'); } if (dialogRef.inElement) { backdrop.setStyle('position', 'absolute'); } backdrop.addClass('modal-backdrop fade', true); backdrop.addClass(animationClass); container.addClass(animationClass); if (containerRef.location.nativeElement) { containerRef.location.nativeElement.focus(); } overlay.beforeDestroy(() => { const completer = new PromiseCompleter(); backdrop.removeClass(animationClass); container.removeClass(animationClass); combineLatest.call(backdrop.myAnimationEnd$(), container.myAnimationEnd$(), (s1, s2) => [s1, s2]) .subscribe(sources => { if (isDoc && this.overlay.groupStackLength(dialogRef) === 1) { document.body.classList.remove('modal-open'); } completer.resolve(); }); return completer.promise; }); return dialogRef; } } Modal.decorators = [ { type: Injectable } ]; /** @nocollapse */ Modal.ctorParameters = () => [ { type: Overlay } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wbHVnaW5zL2Jvb3RzdHJhcC9zcmMvbGliL21vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBRUwsT0FBTyxFQUVQLEtBQUssSUFBSSxNQUFNLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFGLGlDQUFpQztBQUNqQyw2QkFBNkI7QUFDN0IsTUFBTSxLQUFLLEdBQVksQ0FBQyxDQUFDLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXZFLElBQUksY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUU1Qjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYztBQUM5QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYztJQUM1QixjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLENBQUM7QUFHRCxNQUFNLE9BQU8sS0FBTSxTQUFRLE1BQU07SUFDL0IsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksc0JBQXNCLENBQUMsSUFBSSxFQUFPLEVBQUMsVUFBVSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU07UUFD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bmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29udGFpbmVyQ29udGVudCxcclxuICBPdmVybGF5LFxyXG4gIERpYWxvZ1JlZixcclxuICBNb2RhbCBhcyBNb2RhbF8sXHJcbiAgQ1NTQmFja2Ryb3AsXHJcbiAgUHJvbWlzZUNvbXBsZXRlclxyXG59IGZyb20gJ25neC1tb2RpYWxvZy0xMSc7XHJcblxyXG5pbXBvcnQgeyBCU01vZGFsQ29udGFpbmVyIH0gZnJvbSAnLi9tb2RhbC1jb250YWluZXIuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IE9uZUJ1dHRvblByZXNldEJ1aWxkZXIgfSBmcm9tICcuL3ByZXNldHMvb25lLWJ1dHRvbi1wcmVzZXQnO1xyXG5pbXBvcnQgeyBUd29CdXR0b25QcmVzZXRCdWlsZGVyLCBQcm9tcHRQcmVzZXRCdWlsZGVyIH0gZnJvbSAnLi9wcmVzZXRzL3R3by1idXR0b24tcHJlc2V0JztcclxuXHJcbi8vIFRPRE86IHVzZSBESSBmYWN0b3J5IGZvciB0aGlzLlxyXG4vLyBUT0RPOiBjb25zb2xpZGF0ZSBkdXAgY29kZVxyXG5jb25zdCBpc0RvYzogYm9vbGVhbiA9ICEodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyB8fCAhZG9jdW1lbnQpO1xyXG5cclxubGV0IGFuaW1hdGlvbkNsYXNzID0gJ3Nob3cnO1xyXG5cclxuLyoqXHJcbiAqIEV4ZWN1dGUgdGhpcyBtZXRob2QgdG8gZmxhZyB0aGF0IHlvdSBhcmUgd29ya2luZyB3aXRoIEJvb3RzdHJhcCB2ZXJzaW9uIDQuXHJcbiAqIEBkZXByZWNhdGVkIEZyb20gdmVyc2lvbiA1LCBuZ3gtbW9kaWFsb2cncyBib290c3RyYXAgcGx1Z2luIGlzIHNldCB0byB3b3JrIHdpdGggdmVyc2lvbiA0IG9mIGJvb3RzdHJhcCBieSBkZWZhdWx0LlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcDRNb2RlKCk6IHZvaWQge1xyXG59XHJcblxyXG4vKipcclxuICogRXhlY3V0ZSB0aGlzIG1ldGhvZCB0byBmbGFnIHRoYXQgeW91IGFyZSB3b3JraW5nIHdpdGggQm9vdHN0cmFwIHZlcnNpb24gMy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBib290c3RyYXAzTW9kZSgpOiB2b2lkIHtcclxuICBhbmltYXRpb25DbGFzcyA9ICdpbic7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1vZGFsIGV4dGVuZHMgTW9kYWxfIHtcclxuICBjb25zdHJ1Y3RvcihvdmVybGF5OiBPdmVybGF5KSB7XHJcbiAgICBzdXBlcihvdmVybGF5KTtcclxuICB9XHJcblxyXG4gIGFsZXJ0KCk6IE9uZUJ1dHRvblByZXNldEJ1aWxkZXIge1xyXG4gICAgcmV0dXJuIG5ldyBPbmVCdXR0b25QcmVzZXRCdWlsZGVyKHRoaXMsIDxhbnk+e2lzQmxvY2tpbmc6IGZhbHNlfSk7XHJcbiAgfVxyXG5cclxuICBwcm9tcHQoKTogUHJvbXB0UHJlc2V0QnVpbGRlciB7XHJcbiAgICByZXR1cm4gbmV3IFByb21wdFByZXNldEJ1aWxkZXIodGhpcywgPGFueT57aXNCbG9ja2luZzogdHJ1ZSwga2V5Ym9hcmQ6IG51bGx9KTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm0oKTogVHdvQnV0dG9uUHJlc2V0QnVpbGRlciB7XHJcbiAgICByZXR1cm4gbmV3IFR3b0J1dHRvblByZXNldEJ1aWxkZXIodGhpcywgPGFueT57aXNCbG9ja2luZzogdHJ1ZSwga2V5Ym9hcmQ6IG51bGx9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjcmVhdGUoZGlhbG9nUmVmOiBEaWFsb2dSZWY8YW55PiwgY29udGVudDogQ29udGFpbmVyQ29udGVudCk6IERpYWxvZ1JlZjxhbnk+IHtcclxuXHJcbiAgICBjb25zdCBiYWNrZHJvcFJlZiA9IHRoaXMuY3JlYXRlQmFja2Ryb3AoZGlhbG9nUmVmLCBDU1NCYWNrZHJvcCk7XHJcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB0aGlzLmNyZWF0ZUNvbnRhaW5lcihkaWFsb2dSZWYsIEJTTW9kYWxDb250YWluZXIsIGNvbnRlbnQpO1xyXG5cclxuICAgIGNvbnN0IG92ZXJsYXkgPSBkaWFsb2dSZWYub3ZlcmxheVJlZi5pbnN0YW5jZTtcclxuICAgIGNvbnN0IGJhY2tkcm9wID0gYmFja2Ryb3BSZWYuaW5zdGFuY2U7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBjb250YWluZXJSZWYuaW5zdGFuY2U7XHJcblxyXG4gICAgZGlhbG9nUmVmLmluRWxlbWVudCA/IG92ZXJsYXkuaW5zaWRlRWxlbWVudCgpIDogb3ZlcmxheS5mdWxsc2NyZWVuKCk7XHJcblxyXG4gICAgLy8gYWRkIGJvZHkgY2xhc3MgaWYgdGhpcyBpcyB0aGUgb25seSBkaWFsb2cgaW4gdGhlIHN0YWNrXHJcbiAgICBpZiAoaXNEb2MgJiYgIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdtb2RhbC1vcGVuJykpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdtb2RhbC1vcGVuJyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmIChkaWFsb2dSZWYuaW5FbGVtZW50KSB7XHJcbiAgICAgIGJhY2tkcm9wLnNldFN0eWxlKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xyXG4gICAgfVxyXG4gICAgYmFja2Ryb3AuYWRkQ2xhc3MoJ21vZGFsLWJhY2tkcm9wIGZhZGUnLCB0cnVlKTtcclxuXHJcbiAgICBiYWNrZHJvcC5hZGRDbGFzcyhhbmltYXRpb25DbGFzcyk7XHJcbiAgICBjb250YWluZXIuYWRkQ2xhc3MoYW5pbWF0aW9uQ2xhc3MpO1xyXG5cclxuICAgIGlmIChjb250YWluZXJSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICBjb250YWluZXJSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIG92ZXJsYXkuYmVmb3JlRGVzdHJveSgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbXBsZXRlciA9IG5ldyBQcm9taXNlQ29tcGxldGVyPHZvaWQ+KCk7XHJcbiAgICAgIGJhY2tkcm9wLnJlbW92ZUNsYXNzKGFuaW1hdGlvbkNsYXNzKTtcclxuICAgICAgY29udGFpbmVyLnJlbW92ZUNsYXNzKGFuaW1hdGlvbkNsYXNzKTtcclxuXHJcbiAgICAgIGNvbWJpbmVMYXRlc3QuY2FsbChiYWNrZHJvcC5teUFuaW1hdGlvbkVuZCQoKSwgY29udGFpbmVyLm15QW5pbWF0aW9uRW5kJCgpLCAoczEsIHMyKSA9PiBbczEsIHMyXSlcclxuICAgICAgICAuc3Vic2NyaWJlKHNvdXJjZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKGlzRG9jICYmIHRoaXMub3ZlcmxheS5ncm91cFN0YWNrTGVuZ3RoKGRpYWxvZ1JlZikgPT09IDEpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdtb2RhbC1vcGVuJyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29tcGxldGVyLnJlc29sdmUoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBjb21wbGV0ZXIucHJvbWlzZTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgfVxyXG59XHJcbiJdfQ==