UNPKG

6.71 kBSource Map (JSON)View Raw
1{"version":3,"file":"a4-overlay.js","sources":["ng://a4-overlay/lib/overlay.component.ts","ng://a4-overlay/lib/overlay.service.ts","ng://a4-overlay/lib/overlay.module.ts"],"sourcesContent":["import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n // tslint:disable-next-line:component-selector\r\n selector: 'a4-overlay',\r\n template: ``,\r\n styles: [`\r\n :host {\r\n position: fixed;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n background-color: rgba(0,0,0,0.1);\r\n z-index: 999;\r\n }\r\n `],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class OverlayComponent {\r\n\r\n}","import { Injectable, ComponentFactoryResolver, ApplicationRef, ViewContainerRef, ComponentRef, Type } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { OverlayComponent } from './overlay.component';\r\n\r\nenum BusCommand { SHOW, HIDE }\r\n\r\ninterface BusData {\r\n command: BusCommand;\r\n dynamicComponent?: Type<any>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OverlayService {\r\n\r\n private count = 0;\r\n private componentRef: ComponentRef<OverlayComponent>;\r\n private dynamicComponentRef: ComponentRef<any>;\r\n private bus$ = new BehaviorSubject<BusData>(null);\r\n\r\n constructor(private resolver: ComponentFactoryResolver, private applicationRef: ApplicationRef) {\r\n this.bus$.\r\n pipe(filter(p => !!p))\r\n .subscribe(p => {\r\n setTimeout(() => {\r\n if (p.command === BusCommand.SHOW) {\r\n this.doShow(p.dynamicComponent);\r\n } else {\r\n this.doHide();\r\n }\r\n }, 0);\r\n });\r\n }\r\n\r\n private get viewContainerRef(): ViewContainerRef {\r\n if (this.applicationRef.components.length === 0) {\r\n return null;\r\n }\r\n const appInstance = this.applicationRef.components[0].instance;\r\n\r\n if (!appInstance.viewContainerRef) {\r\n const appName = this.applicationRef.componentTypes[0].name;\r\n throw new Error(`Missing 'viewContainerRef' declaration in ${appName} constructor`);\r\n }\r\n\r\n return appInstance.viewContainerRef;\r\n }\r\n\r\n private doShow(dynamicComponent: Type<any>) {\r\n if (this.viewContainerRef) {\r\n if (this.count === 0) {\r\n const factory = this.resolver.resolveComponentFactory(OverlayComponent);\r\n this.componentRef = this.viewContainerRef.createComponent(factory);\r\n if (dynamicComponent) {\r\n const dynamicFactory = this.resolver.resolveComponentFactory(dynamicComponent);\r\n this.dynamicComponentRef = this.viewContainerRef.createComponent(dynamicFactory);\r\n }\r\n }\r\n this.count++;\r\n }\r\n }\r\n\r\n doHide() {\r\n if (this.count > 0) {\r\n this.count--;\r\n if (this.count === 0) {\r\n this.componentRef.destroy();\r\n if (this.dynamicComponentRef) {\r\n this.dynamicComponentRef.destroy();\r\n this.dynamicComponentRef = null;\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n show(dynamicComponent: Type<any> = null) {\r\n this.bus$.next({ command: BusCommand.SHOW, dynamicComponent });\r\n }\r\n\r\n hide() {\r\n this.bus$.next({ command: BusCommand.HIDE });\r\n }\r\n\r\n public get attachedComponent(): ComponentRef<any> {\r\n return this.dynamicComponentRef;\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OverlayComponent } from './overlay.component';\r\nimport { OverlayService } from './overlay.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n OverlayComponent\r\n ],\r\n providers: [\r\n OverlayService\r\n ],\r\n entryComponents: [\r\n OverlayComponent\r\n ]\r\n})\r\nexport class OverlayModule { }"],"names":[],"mappings":"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"}
\No newline at end of file