UNPKG

27.3 kBSource Map (JSON)View Raw
1{"version":3,"file":"ng2-bs3-modal.js.map","sources":["ng://ng2-bs3-modal/modal/models/modal-hide-type.ts","ng://ng2-bs3-modal/modal/models/modal-size.ts","ng://ng2-bs3-modal/modal/modal.service.ts","ng://ng2-bs3-modal/modal/modal.component.ts","ng://ng2-bs3-modal/modal/header.component.ts","ng://ng2-bs3-modal/modal/body.component.ts","ng://ng2-bs3-modal/modal/footer.component.ts","ng://ng2-bs3-modal/autofocus/autofocus.directive.ts","ng://ng2-bs3-modal/modal.module.ts"],"sourcesContent":["export enum BsModalHideType {\n Close,\n Dismiss,\n Backdrop,\n Keyboard,\n RouteChange,\n Destroy\n}\n","export class BsModalSize {\n static Small = 'sm';\n static Large = 'lg';\n\n static isValidSize(size: string) {\n return size && (size === BsModalSize.Small || size === BsModalSize.Large);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, fromEvent } from 'rxjs';\nimport { filter, map, share, tap } from 'rxjs/operators';\n\nimport { BsModalComponent } from './modal.component';\nimport { BsModalHideType } from './models';\n\nconst EVENT_SUFFIX = 'ng2-bs3-modal';\nconst KEYUP_EVENT_NAME = `keyup.${EVENT_SUFFIX}`;\nconst CLICK_EVENT_NAME = `click.${EVENT_SUFFIX}`;\nconst SHOW_EVENT_NAME = `show.bs.modal.${EVENT_SUFFIX}`;\n\n@Injectable()\nexport class BsModalService {\n\n private modals: BsModalComponent[] = [];\n private $body: JQuery;\n\n onBackdropClose$: Observable<BsModalHideType>;\n onKeyboardClose$: Observable<BsModalHideType>;\n onModalStack$: Observable<Event>;\n\n constructor() {\n this.$body = jQuery(document.body);\n\n this.onBackdropClose$ = fromEvent(this.$body, CLICK_EVENT_NAME).pipe(\n filter((e: MouseEvent) => jQuery(e.target).is('.modal')),\n map(() => BsModalHideType.Backdrop),\n share(),\n );\n\n this.onKeyboardClose$ = fromEvent(this.$body, KEYUP_EVENT_NAME).pipe(\n filter((e: KeyboardEvent) => e.which === 27),\n map(() => BsModalHideType.Keyboard),\n share()\n );\n\n this.onModalStack$ = fromEvent<Event>(this.$body, SHOW_EVENT_NAME).pipe(\n tap(() => {\n const zIndex = 1040 + (10 * jQuery('.modal:visible').length);\n jQuery(this).css('z-index', zIndex);\n setTimeout(function() {\n jQuery('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack');\n }, 0);\n }),\n share()\n );\n }\n\n add(modal: BsModalComponent) {\n this.modals.push(modal);\n }\n\n remove(modal: BsModalComponent) {\n const index = this.modals.indexOf(modal);\n if (index > -1) {\n this.modals.splice(index, 1);\n }\n }\n\n focusNext() {\n const visible = this.modals.filter(m => m.visible);\n if (visible.length) {\n this.$body.addClass('modal-open');\n visible[visible.length - 1].focus();\n }\n }\n\n dismissAll() {\n return Promise.all(this.modals.map((m) => {\n return m.dismiss();\n }));\n }\n}\n","// tslint:disable:no-output-on-prefix\nimport {\n Component,\n OnInit,\n AfterViewInit,\n OnChanges,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n HostBinding,\n NgZone\n} from '@angular/core';\nimport { Observable, Observer, Subject, Subscription, of as observableOf, fromEvent, merge, zip } from 'rxjs';\nimport { take, filter, tap, share, map } from 'rxjs/operators';\n\nimport { BsModalHideEvent, BsModalHideType, BsModalOptions, BsModalSize } from './models';\nimport { BsModalService } from './modal.service';\n\nconst EVENT_SUFFIX = 'ng2-bs3-modal';\nconst SHOW_EVENT_NAME = `show.bs.modal.${EVENT_SUFFIX}`;\nconst SHOWN_EVENT_NAME = `shown.bs.modal.${EVENT_SUFFIX}`;\nconst HIDE_EVENT_NAME = `hide.bs.modal.${EVENT_SUFFIX}`;\nconst HIDDEN_EVENT_NAME = `hidden.bs.modal.${EVENT_SUFFIX}`;\nconst LOADED_EVENT_NAME = `loaded.bs.modal.${EVENT_SUFFIX}`;\nconst DATA_KEY = 'bs.modal';\n\n@Component({\n selector: 'bs-modal',\n template: `\n <div class=\"modal-dialog\" [ngClass]=\"getCssClasses()\">\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class BsModalComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n\n private overrideSize: string = null;\n private $modal: JQuery;\n private $dialog: JQuery;\n private onShowEvent$: Observable<Event>;\n private onShownEvent$: Observable<Event>;\n private onHideEvent$: Observable<Event>;\n private onHiddenEvent$: Observable<Event>;\n private onLoadedEvent$: Observable<Event>;\n private onShown$: Observable<{}>;\n private onInternalClose$: Subject<BsModalHideType> = new Subject<BsModalHideType>();\n private onDismiss$: Observable<BsModalHideType>;\n private onHide$: Observable<BsModalHideEvent>;\n private onHidden$: Observable<BsModalHideType>;\n private subscriptions: Subscription[] = [];\n private get options() {\n if (!this.$modal) {\n this.init();\n }\n return this.$modal.data(DATA_KEY).options;\n }\n\n visible = false;\n showing = false;\n hiding = false;\n\n @Input() animation = true;\n @Input() backdrop: string | boolean = true;\n @Input() keyboard = true;\n @Input() size: string;\n @Input() cssClass: string;\n\n @Output() onShow = new EventEmitter<Event>();\n @Output() onOpen = new EventEmitter<any>();\n @Output() onHide = new EventEmitter<any>();\n @Output() onClose = new EventEmitter<any>();\n @Output() onDismiss = new EventEmitter<BsModalHideType>();\n @Output() onLoaded = new EventEmitter<any>();\n\n @HostBinding('class.fade')\n get fadeClass() { return this.animation; }\n\n @HostBinding('class.modal')\n get modalClass() { return true; }\n\n @HostBinding('attr.role')\n get roleAttr() { return 'dialog'; }\n\n @HostBinding('attr.tabindex')\n get tabindexAttr() { return '-1'; }\n\n constructor(private element: ElementRef, private service: BsModalService, private zone: NgZone) {\n this.service.add(this);\n this.init();\n }\n\n ngOnInit() {\n this.wireUpEventEmitters();\n }\n\n ngAfterViewInit() {\n this.$dialog = this.$modal.find('.modal-dialog');\n }\n\n ngOnChanges() {\n this.setOptions({\n backdrop: this.backdrop,\n keyboard: this.keyboard\n });\n }\n\n ngOnDestroy() {\n this.onInternalClose$.next(BsModalHideType.Destroy);\n return this.destroy();\n }\n\n focus() {\n this.$modal.trigger('focus');\n }\n\n routerCanDeactivate(): any {\n this.onInternalClose$.next(BsModalHideType.RouteChange);\n return this.destroy();\n }\n\n open(size?: string) {\n this.overrideSize = null;\n if (BsModalSize.isValidSize(size)) {\n this.overrideSize = size;\n }\n return this.show().toPromise();\n }\n\n close(value?: any): Promise<{}> {\n this.onInternalClose$.next(BsModalHideType.Close);\n return this.hide().pipe(\n tap(() => this.onClose.emit(value)),\n ).toPromise().then(() => value);\n }\n\n dismiss(): Promise<{}> {\n this.onInternalClose$.next(BsModalHideType.Dismiss);\n return this.hide().toPromise();\n }\n\n getCssClasses(): string {\n const classes: string[] = [];\n\n if (this.isSmall()) {\n classes.push('modal-sm');\n }\n\n if (this.isLarge()) {\n classes.push('modal-lg');\n }\n\n if (this.cssClass) {\n classes.push(this.cssClass);\n }\n\n return classes.join(' ');\n }\n\n private isSmall() {\n return this.overrideSize !== BsModalSize.Large\n && this.size === BsModalSize.Small\n || this.overrideSize === BsModalSize.Small;\n }\n\n private isLarge() {\n return this.overrideSize !== BsModalSize.Small\n && this.size === BsModalSize.Large\n || this.overrideSize === BsModalSize.Large;\n }\n\n private show(): Observable<any> {\n if (this.visible && !this.hiding) {\n return observableOf(null);\n }\n this.showing = true;\n\n return Observable.create((o: Observer<any>) => {\n this.onShown$.pipe(\n take(1),\n ).subscribe(next => {\n o.next(next);\n o.complete();\n });\n\n this.transitionFix();\n this.$modal.modal('show');\n });\n }\n\n private transitionFix() {\n // Fix for shown.bs.modal not firing when .fade is present\n // https://github.com/twbs/bootstrap/issues/11793\n if (this.animation) {\n setTimeout(() => {\n this.$modal.trigger('focus').trigger(SHOWN_EVENT_NAME);\n }, jQuery.fn.modal['Constructor'].TRANSITION_DURATION);\n }\n }\n\n private hide(): Observable<BsModalHideType> {\n if (!this.visible && !this.showing) {\n return observableOf<BsModalHideType>(null);\n }\n this.hiding = true;\n\n return Observable.create((o: Observer<any>) => {\n this.onHidden$.pipe(\n take(1)\n ).subscribe(next => {\n o.next(next);\n o.complete();\n });\n\n this.$modal.modal('hide');\n });\n }\n\n private init() {\n this.$modal = jQuery(this.element.nativeElement);\n this.$modal.appendTo(document.body);\n this.$modal.modal({\n show: false\n });\n\n this.onShowEvent$ = fromEvent(this.$modal, SHOW_EVENT_NAME);\n this.onShownEvent$ = fromEvent(this.$modal, SHOWN_EVENT_NAME);\n this.onHideEvent$ = fromEvent(this.$modal, HIDE_EVENT_NAME);\n this.onHiddenEvent$ = fromEvent(this.$modal, HIDDEN_EVENT_NAME);\n this.onLoadedEvent$ = fromEvent(this.$modal, LOADED_EVENT_NAME);\n\n const onClose$ = merge(this.onInternalClose$, this.service.onBackdropClose$, this.service.onKeyboardClose$);\n\n this.onHide$ = zip(this.onHideEvent$, onClose$).pipe(\n map(x => <BsModalHideEvent>{ event: x[0], type: x[1] }),\n );\n\n this.onHidden$ = zip<BsModalHideType>(this.onHiddenEvent$, onClose$).pipe(\n map(x => x[1]),\n tap(this.setVisible(false)),\n tap(() => this.service.focusNext()),\n share(),\n );\n\n this.onShown$ = this.onShownEvent$.pipe(\n tap(this.setVisible(true)),\n share()\n );\n\n this.onDismiss$ = this.onHidden$.pipe(\n filter((x) => x !== BsModalHideType.Close)\n );\n\n // Start watching for events\n this.subscriptions.push(...[\n this.onShown$.subscribe(() => { }),\n this.onHidden$.subscribe(() => { }),\n this.service.onModalStack$.subscribe(() => { })\n ]);\n }\n\n private wireUpEventEmitters() {\n\n this.wireUpEventEmitter(this.onShow, this.onShowEvent$);\n this.wireUpEventEmitter(this.onOpen, this.onShown$);\n this.wireUpEventEmitter(this.onHide, this.onHide$);\n this.wireUpEventEmitter(this.onDismiss, this.onDismiss$);\n this.wireUpEventEmitter(this.onLoaded, this.onLoadedEvent$);\n }\n\n private wireUpEventEmitter<T>(emitter: EventEmitter<T>, stream$: Observable<T>) {\n if (emitter.observers.length === 0) {\n return;\n }\n\n const sub = stream$.subscribe((next) => {\n this.zone.run(() => {\n emitter.next(next);\n });\n });\n\n this.subscriptions.push(sub);\n }\n\n private setVisible = (isVisible) => {\n return () => {\n this.visible = isVisible;\n this.showing = false;\n this.hiding = false;\n };\n }\n\n private setOptions = (options: BsModalOptions) => {\n let backdrop = options.backdrop;\n if (typeof backdrop === 'string' && backdrop !== 'static') {\n backdrop = true;\n\n }\n\n if (options.backdrop !== undefined) {\n this.options.backdrop = backdrop;\n }\n if (options.keyboard !== undefined) {\n this.options.keyboard = options.keyboard;\n }\n }\n\n private destroy() {\n return this.hide().pipe(\n tap(() => {\n this.service.remove(this);\n this.subscriptions.forEach(s => s.unsubscribe());\n this.subscriptions = [];\n if (this.$modal) {\n this.$modal.data(DATA_KEY, null);\n this.$modal.remove();\n this.$modal = null;\n }\n })\n ).toPromise();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { BsModalComponent } from './modal.component';\n\n@Component({\n selector: 'bs-modal-header',\n template: `\n <div class=\"modal-header\">\n <button *ngIf=\"showDismiss\" type=\"button\" class=\"close\" aria-label=\"Dismiss\" (click)=\"modal.dismiss()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <ng-content></ng-content>\n </div>\n `\n})\nexport class BsModalHeaderComponent {\n @Input() showDismiss = false;\n constructor(public modal: BsModalComponent) { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'bs-modal-body',\n template: `\n <div class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class BsModalBodyComponent { }\n","import { Component, Input } from '@angular/core';\nimport { BsModalComponent } from './modal.component';\n\n@Component({\n selector: 'bs-modal-footer',\n template: `\n <div class=\"modal-footer\">\n <ng-content></ng-content>\n <button *ngIf=\"showDefaultButtons\" type=\"button\" class=\"btn btn-default\" (click)=\"modal.dismiss()\">\n {{dismissButtonLabel}}\n </button>\n <button *ngIf=\"showDefaultButtons\" type=\"button\" class=\"btn btn-primary\" (click)=\"modal.close()\">\n {{closeButtonLabel}}\n </button>\n </div>\n `\n})\nexport class BsModalFooterComponent {\n @Input() showDefaultButtons = false;\n @Input() dismissButtonLabel = 'Dismiss';\n @Input() closeButtonLabel = 'Close';\n constructor(public modal: BsModalComponent) { }\n}\n","import { Directive, ElementRef, Inject, Optional } from '@angular/core';\nimport { BsModalComponent } from '../modal/modal.component';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[autofocus]'\n})\nexport class BsAutofocusDirective {\n constructor(private el: ElementRef, @Optional() private modal: BsModalComponent) {\n if (modal) {\n this.modal.onOpen.subscribe(() => {\n this.el.nativeElement.focus();\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BsModalService } from './modal/modal.service';\nimport { BsModalComponent } from './modal/modal.component';\nimport { BsModalHeaderComponent } from './modal/header.component';\nimport { BsModalBodyComponent } from './modal/body.component';\nimport { BsModalFooterComponent } from './modal/footer.component';\nimport { BsAutofocusDirective } from './autofocus/autofocus.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n BsModalComponent,\n BsModalHeaderComponent,\n BsModalBodyComponent,\n BsModalFooterComponent,\n BsAutofocusDirective\n ],\n providers: [\n BsModalService\n ],\n exports: [\n BsModalComponent,\n BsModalHeaderComponent,\n BsModalBodyComponent,\n BsModalFooterComponent,\n BsAutofocusDirective\n ]\n})\nexport class BsModalModule { }\n"],"names":["EVENT_SUFFIX","SHOW_EVENT_NAME","observableOf"],"mappings":"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"}