UNPKG

ngx-modalview

Version:

Simple way to implement modal in Angular (16+) projects.

1 lines 47.8 kB
{"version":3,"file":"ngx-modalview.mjs","sources":["../../src/ngx-modal/ngx-modal-options.ts","../../src/ngx-modal/ngx-modal-wrapper.component.ts","../../src/ngx-modal/ngx-modal-draggable.directive.ts","../../src/ngx-modal/ngx-modal-holder.component.ts","../../src/ngx-modal/ngx-modal.service.ts","../../src/ngx-modal/ngx-modal-service.factory.ts","../../src/ngx-modal/ngx-modal.module.ts","../../src/ngx-modal/ngx-modal.component.ts","../../src/ngx-modalview.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const DefaultNgxModalOptionConfig = new InjectionToken<NgxModalOptions>('default-ngx-modal.config');\r\n\r\nexport interface NgxModalOptions {\r\n closeOnEscape: boolean;\r\n closeOnClickOutside: boolean;\r\n bodyClass: string;\r\n wrapperDefaultClasses: string;\r\n wrapperClass: string;\r\n draggableClass: string;\r\n animationDuration: number;\r\n autoFocus: boolean;\r\n draggable: boolean;\r\n}\r\n\r\nexport type NgxModalOptionsOverrides = Partial<NgxModalOptions>;\r\n\r\nexport const defaultNgxModalOptions: NgxModalOptions = {\r\n closeOnEscape: false,\r\n closeOnClickOutside: false,\r\n bodyClass: 'modal-open',\r\n wrapperDefaultClasses: 'modal fade-anim',\r\n wrapperClass: 'in',\r\n draggableClass: 'draggable',\r\n animationDuration: 300,\r\n autoFocus: false,\r\n draggable: false,\r\n};\r\n","import { Component, ComponentFactoryResolver, ElementRef, OnDestroy, Type, ViewChild, ViewContainerRef, ComponentRef, Injector } from '@angular/core';\r\nimport { NgxModalComponent } from './ngx-modal.component';\r\n\r\n/**\r\n * The modal backdrop wrapping wrapper to the modal\r\n */\r\n@Component({\r\n selector: 'ngx-modal-wrapper',\r\n template: `\r\n <div #wrapper [ngClass]=\"modalClasses\" [ngStyle]=\"{ display: 'block' }\" role=\"dialog\">\r\n <ng-template #viewContainer></ng-template>\r\n </div>\r\n `,\r\n})\r\nexport class NgxModalWrapperComponent implements OnDestroy {\r\n /**\r\n * Target viewContainer to insert modal content component\r\n */\r\n @ViewChild('viewContainer', { read: ViewContainerRef, static: true }) viewContainer;\r\n\r\n /**\r\n * Link wrapper DOM element\r\n */\r\n @ViewChild('wrapper', { read: ElementRef, static: true })\r\n wrapper: ElementRef;\r\n\r\n /**\r\n * Wrapper modal and fade classes\r\n */\r\n modalClasses = 'modal fade-anim';\r\n\r\n /**\r\n * Dialog content componet\r\n * @type {NgxModalComponent}\r\n */\r\n content: NgxModalComponent<any, any>;\r\n\r\n /**\r\n * Click outside callback\r\n */\r\n clickOutsideCallback: (event: MouseEvent) => void;\r\n\r\n /**\r\n * Constructor\r\n * @param {ComponentFactoryResolver} resolver\r\n */\r\n constructor(\r\n private resolver: ComponentFactoryResolver\r\n ) { }\r\n\r\n ngOnDestroy() {\r\n if (this.clickOutsideCallback) {\r\n const containerEl = this.wrapper.nativeElement;\r\n containerEl.removeEventListener('click', this.clickOutsideCallback, false);\r\n this.clickOutsideCallback = null;\r\n }\r\n }\r\n\r\n /**\r\n * Adds content modal component to wrapper\r\n * @param {Type<NgxModalComponent>} component\r\n * @return {NgxModalComponent}\r\n */\r\n public addComponent<T, T1>(component: Type<NgxModalComponent<T, T1>>): { ref: ComponentRef<NgxModalComponent<T, T1>>, component: NgxModalComponent<T, T1> } {\r\n const factory = this.resolver.resolveComponentFactory(component);\r\n const injector = Injector.create([], this.viewContainer.injector);\r\n const componentRef = factory.create(injector);\r\n this.viewContainer.insert(componentRef.hostView);\r\n this.content = <NgxModalComponent<T, T1>>componentRef.instance;\r\n this.content.wrapper = this.wrapper;\r\n return { ref: componentRef, component: this.content };\r\n }\r\n\r\n /**\r\n * Configures the function to call when you click on background of a modal but not the contents\r\n * @param callback\r\n */\r\n public onClickOutsideModalContent(callback: () => void) {\r\n const containerEl = this.wrapper.nativeElement;\r\n\r\n this.clickOutsideCallback = (event: MouseEvent) => {\r\n if (event.target === containerEl) {\r\n callback();\r\n }\r\n };\r\n\r\n containerEl.addEventListener('click', this.clickOutsideCallback, false);\r\n }\r\n}\r\n","import { Directive, AfterViewInit, OnDestroy, Input, Output, ElementRef, NgZone, EventEmitter, Renderer2, OnChanges } from '@angular/core';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { filter, switchMap, map, takeUntil } from 'rxjs/operators';\r\n\r\nexport interface DraggedEvent {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface DragOffset {\r\n x?: number;\r\n y?: number;\r\n}\r\n\r\n@Directive({\r\n selector: '[dialogDraggable]'\r\n})\r\nexport class DraggableDirective implements AfterViewInit, OnChanges, OnDestroy {\r\n @Input() dragHandle?: string | Element;\r\n @Input() dragTarget: string | Element;\r\n @Input() dragEnabled = false;\r\n @Input() set dialogDragOffset(offset: DragOffset) {\r\n this.reset(offset);\r\n }\r\n\r\n @Output() dragged = new EventEmitter<DraggedEvent>();\r\n\r\n /** Element to be dragged */\r\n private target: HTMLElement;\r\n /** Drag handle */\r\n private handle: Element;\r\n private delta = { x: 0, y: 0 };\r\n private offset = { x: 0, y: 0 };\r\n private enabled = true;\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(private host: ElementRef, private zone: NgZone, private renderer: Renderer2) { }\r\n\r\n public ngAfterViewInit(): void {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n\r\n this.init();\r\n }\r\n\r\n public ngOnChanges() {\r\n if (!this.enabled && this.dragEnabled && this.dragTarget) {\r\n this.enabled = true;\r\n /** determine if the component has been init by the handle variable */\r\n if (this.handle) {\r\n this.renderer.setStyle(this.handle, 'cursor', 'move');\r\n } else if (this.enabled) {\r\n this.init();\r\n }\r\n }\r\n\r\n if (!this.dragEnabled) {\r\n this.enabled = false;\r\n if (this.handle) {\r\n this.renderer.setStyle(this.handle, 'cursor', '');\r\n }\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroy$.next();\r\n }\r\n\r\n reset(offset?: DragOffset) {\r\n const defaultValues = { x: 0, y: 0 };\r\n this.offset = { ...defaultValues, ...offset };\r\n this.delta = { ...defaultValues };\r\n this.translate();\r\n }\r\n\r\n private setupEvents() {\r\n this.zone.runOutsideAngular(() => {\r\n const mousedown$ = fromEvent<MouseEvent>(this.handle, 'mousedown');\r\n const mousemove$ = fromEvent<MouseEvent>(document, 'mousemove');\r\n const mouseup$ = fromEvent<MouseEvent>(document, 'mouseup');\r\n\r\n const mousedrag$ = mousedown$.pipe(\r\n filter(() => this.enabled),\r\n map(event => ({\r\n startX: event.clientX,\r\n startY: event.clientY\r\n })),\r\n switchMap(({ startX, startY }) =>\r\n mousemove$.pipe(\r\n map(event => {\r\n event.preventDefault();\r\n this.delta = {\r\n x: event.clientX - startX,\r\n y: event.clientY - startY\r\n };\r\n }),\r\n takeUntil(mouseup$)\r\n )\r\n ),\r\n takeUntil(this.destroy$)\r\n );\r\n\r\n mousedrag$.subscribe(() => {\r\n if (this.delta.x === 0 && this.delta.y === 0) {\r\n return;\r\n }\r\n\r\n this.translate();\r\n });\r\n\r\n mouseup$\r\n .pipe(\r\n filter(() => this.enabled),\r\n /** Only emit change if the element has moved */\r\n filter(() => this.delta.x !== 0 || this.delta.y !== 0),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe(() => {\r\n this.offset.x += this.delta.x;\r\n this.offset.y += this.delta.y;\r\n this.dragged.emit(this.offset);\r\n this.delta = { x: 0, y: 0 };\r\n });\r\n });\r\n }\r\n\r\n private translate() {\r\n if (this.target) {\r\n this.zone.runOutsideAngular(() => {\r\n requestAnimationFrame(() => {\r\n const transform = `translate(${this.offset.x + this.delta.x}px, ${this.offset.y + this.delta.y}px)`;\r\n this.renderer.setStyle(this.target, 'transform', transform);\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Init the directive\r\n */\r\n private init() {\r\n if (!this.dragTarget) {\r\n throw new Error('You need to specify the drag target');\r\n }\r\n\r\n this.handle =\r\n this.dragHandle instanceof Element\r\n ? this.dragHandle\r\n : typeof this.dragHandle === 'string' && this.dragHandle\r\n ? document.querySelector(this.dragHandle as string)\r\n : this.host.nativeElement;\r\n\r\n /** add the move cursor */\r\n if (this.handle && this.enabled) {\r\n this.renderer.addClass(this.handle, 'handle');\r\n }\r\n\r\n this.target =\r\n this.dragTarget instanceof HTMLElement\r\n ? this.dragTarget\r\n : document.querySelector(this.dragTarget as string);\r\n\r\n this.setupEvents();\r\n\r\n this.translate();\r\n }\r\n}\r\n","import { Component, ComponentFactoryResolver, ElementRef, Inject, Type, ViewContainerRef, ViewChild, Renderer2, ComponentRef, NgZone } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DefaultNgxModalOptionConfig, NgxModalOptions, NgxModalOptionsOverrides } from './ngx-modal-options';\r\nimport { NgxModalWrapperComponent } from './ngx-modal-wrapper.component';\r\nimport { NgxModalComponent } from './ngx-modal.component';\r\nimport { DraggableDirective } from './ngx-modal-draggable.directive';\r\n\r\n/**\r\n * View container manager which manages a list of modals currently active\r\n * inside the viewvontainer\r\n */\r\n@Component({\r\n selector: 'ngx-modal-holder',\r\n template: '<ng-template #viewContainer></ng-template>',\r\n})\r\nexport class NgxModalHolderComponent {\r\n /**\r\n * Target viewContainer to insert modals\r\n */\r\n @ViewChild('viewContainer', { read: ViewContainerRef, static: true }) viewContainer;\r\n\r\n /**\r\n * modal collection, maintained by addModal and removeModal\r\n * @type {Array<NgxModalComponent> }\r\n */\r\n modals: Array<NgxModalComponent<any, any>> = [];\r\n\r\n /**\r\n * if auto focus is on and no element focused, store it here to be restored back after close\r\n */\r\n previousActiveElement = null;\r\n\r\n /**\r\n * Constructor\r\n * @param {ComponentFactoryResolver} resolver\r\n * @param renderer\r\n * @param ngZone\r\n * @param defaultNgxModalOptions\r\n */\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private renderer: Renderer2,\r\n private ngZone: NgZone,\r\n @Inject(DefaultNgxModalOptionConfig) private defaultNgxModalOptions: NgxModalOptions,\r\n ) {\r\n }\r\n\r\n /**\r\n * Configures then adds modal to the modals array, and populates with data passed in\r\n * @param {Type<NgxModalComponent>} component\r\n * @param {object?} data\r\n * @param {NgxModalOptionsOverrides?} options\r\n * @return {Observable<*>}\r\n */\r\n public addModal<T, T1>(component: Type<NgxModalComponent<T, T1>>, data?: T, options?: NgxModalOptionsOverrides): Observable<T1> {\r\n // create component\r\n if (!this.viewContainer) {\r\n return of(null);\r\n }\r\n const factory = this.resolver.resolveComponentFactory(NgxModalWrapperComponent);\r\n const componentRef = this.viewContainer.createComponent(factory);\r\n const modalWrapper: NgxModalWrapperComponent = <NgxModalWrapperComponent>(\r\n componentRef.instance\r\n );\r\n const { ref: _componentRef, component: _component } = modalWrapper.addComponent(component);\r\n\r\n // assign options refs\r\n _component.options = options = Object.assign({}, this.defaultNgxModalOptions, options) as NgxModalOptions;\r\n\r\n // set base classes for wrapper\r\n modalWrapper.modalClasses = options.wrapperDefaultClasses;\r\n\r\n // add to stack\r\n this.modals.push(_component);\r\n\r\n // wait a tick then setup the following while adding a modal\r\n this.wait().then(() => {\r\n this.toggleWrapperClass(modalWrapper.wrapper, options.wrapperClass);\r\n this.toggleBodyClass(options.bodyClass);\r\n if (options.draggable) {\r\n this.setDraggable(_componentRef, options);\r\n }\r\n this.wait(options.animationDuration).then(() => {\r\n this.autoFocusFirstElement(_component.wrapper, options.autoFocus);\r\n _component.markAsReady();\r\n });\r\n });\r\n\r\n // when closing modal remove it\r\n _component.onClosing(modal => this.removeModal(modal));\r\n\r\n // if clicking on background closes modal\r\n this.configureCloseOnClickOutside(modalWrapper);\r\n\r\n // map and return observable\r\n _component.mapDataObject(data);\r\n\r\n return _component.setupObserver();\r\n }\r\n\r\n /**\r\n * triggers components close function\r\n * to take effect\r\n * @returns {Promise<void>}\r\n * @param closingModal\r\n */\r\n public async removeModal(closingModal: NgxModalComponent<any, any>): Promise<any> {\r\n const options = closingModal.options;\r\n this.toggleWrapperClass(closingModal.wrapper, options.wrapperClass);\r\n return this.wait(options.animationDuration).then(() => {\r\n this.removeModalFromArray(closingModal);\r\n this.toggleBodyClass(options.bodyClass);\r\n this.restorePreviousFocus();\r\n });\r\n }\r\n\r\n /**\r\n * Instructs all open modals to\r\n */\r\n public removeAllModals(): Promise<any> {\r\n return Promise.all(this.modals.map(modal => this.removeModal(modal)));\r\n }\r\n\r\n /**\r\n * Bind a body class 'modal-open' to a condition of modals in pool > 0\r\n * @param bodyClass - string to add and remove from body in document\r\n */\r\n private toggleBodyClass(bodyClass: string): void {\r\n if (!bodyClass) {\r\n return;\r\n }\r\n const body = document.getElementsByTagName('body')[0];\r\n const bodyClassItems = bodyClass.split(' ');\r\n if (!this.modals.length) {\r\n body.classList.remove(...bodyClassItems);\r\n } else {\r\n body.classList.add(...bodyClassItems);\r\n }\r\n }\r\n\r\n /**\r\n * if the option to close on background click is set, then hook up a callback\r\n * @param modalWrapper\r\n */\r\n private configureCloseOnClickOutside(modalWrapper: NgxModalWrapperComponent) {\r\n modalWrapper.onClickOutsideModalContent(() => {\r\n if (modalWrapper.content.options.closeOnClickOutside) {\r\n modalWrapper.content.close();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Auto focus o the first element if autofocus is on\r\n * @param componentWrapper\r\n * @param autoFocus\r\n */\r\n private autoFocusFirstElement(componentWrapper: ElementRef, autoFocus: boolean) {\r\n if (autoFocus) {\r\n const focusable = componentWrapper.nativeElement.querySelectorAll(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\r\n );\r\n if (focusable && focusable.length) {\r\n this.previousActiveElement = document.activeElement;\r\n focusable[0].focus();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Restores the last focus is there was one\r\n */\r\n private restorePreviousFocus() {\r\n if (this.previousActiveElement) {\r\n this.previousActiveElement.focus();\r\n this.previousActiveElement = null;\r\n }\r\n }\r\n\r\n /**\r\n * Configure the adding and removal of a wrapper class - predominantly animation focused\r\n * @param modalWrapperEl\r\n * @param wrapperClass\r\n */\r\n private toggleWrapperClass(modalWrapperEl: ElementRef, wrapperClass: string): void {\r\n const wrapperClassList = modalWrapperEl.nativeElement.classList;\r\n const wrapperClassItems = wrapperClass.split(' ');\r\n if (wrapperClassList.toString().indexOf(wrapperClass) !== -1) {\r\n wrapperClassList.remove(...wrapperClassItems);\r\n } else {\r\n wrapperClassList.add(...wrapperClassItems);\r\n }\r\n }\r\n\r\n /**\r\n * Enables the drag option on the modal if the options have it enabled\r\n * @param component\r\n * @param options\r\n * @private\r\n */\r\n private setDraggable(component: ComponentRef<NgxModalComponent<any, any>>, options: NgxModalOptionsOverrides): void {\r\n const draggableDirective = new DraggableDirective(component.location, this.ngZone, this.renderer);\r\n draggableDirective.dragTarget = component.location.nativeElement;\r\n draggableDirective.dragHandle = component.instance.handle ? component.instance.handle.nativeElement : undefined;\r\n draggableDirective.ngAfterViewInit();\r\n component.location.nativeElement.classList.add(options.draggableClass);\r\n }\r\n\r\n /**\r\n * Helper function for a more readable timeout\r\n * @param ms\r\n */\r\n private wait(ms: number = 0): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n setTimeout(() => resolve(), ms);\r\n });\r\n }\r\n\r\n /**\r\n * Instructs the holder to remove the modal and\r\n * removes this component from the collection\r\n * @param {NgxModalComponent} component\r\n */\r\n private removeModalFromArray(component): void {\r\n const index = this.modals.indexOf(component);\r\n if (index > -1) {\r\n this.viewContainer.remove(index);\r\n this.modals.splice(index, 1);\r\n }\r\n }\r\n}\r\n","import { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector, Optional, Type } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { NgxModalHolderComponent } from './ngx-modal-holder.component';\r\nimport { NgxModalComponent } from './ngx-modal.component';\r\nimport { NgxModalOptionsOverrides } from './ngx-modal-options';\r\n\r\nexport class NgxModalServiceConfig {\r\n container: HTMLElement | string = null;\r\n}\r\n\r\n@Injectable()\r\nexport class NgxModalService {\r\n /**\r\n * Placeholder of modals\r\n * @type {NgxModalHolderComponent}\r\n */\r\n private modalHolderComponent: NgxModalHolderComponent;\r\n\r\n /**\r\n * HTML container for modals\r\n * type {HTMLElement | string}\r\n */\r\n private _container;\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private applicationRef: ApplicationRef,\r\n private injector: Injector,\r\n @Optional() config: NgxModalServiceConfig\r\n ) {\r\n if (config) {\r\n this.container = config.container as any;\r\n }\r\n }\r\n\r\n /**\r\n * Accessor for contain - will auto generate from string\r\n * if needed or default to the root element if nothing was set\r\n */\r\n private set container(c) {\r\n this._container = c;\r\n }\r\n\r\n private get container(): HTMLElement {\r\n if (typeof this._container === 'string') {\r\n this._container = document.getElementById(this._container);\r\n }\r\n\r\n if (!this._container && this.applicationRef['components'].length) {\r\n const componentRootViewContainer = this.applicationRef['components'][0];\r\n this.container = (componentRootViewContainer.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n }\r\n\r\n if (!this._container || typeof this._container === 'string') {\r\n this._container = document.getElementsByTagName('body')[0];\r\n }\r\n\r\n return this._container;\r\n }\r\n\r\n /**\r\n * Creates and add to DOM modal holder component.\r\n * \r\n * @returns {NgxModalHolderComponent}\r\n */\r\n private createSimpleModalHolder(): NgxModalHolderComponent {\r\n const componentFactory = this.resolver.resolveComponentFactory(NgxModalHolderComponent);\r\n const componentRef = componentFactory.create(this.injector);\r\n const componentRootNode = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n\r\n this.applicationRef.attachView(componentRef.hostView);\r\n\r\n componentRef.onDestroy(() => {\r\n this.applicationRef.detachView(componentRef.hostView);\r\n });\r\n\r\n this.container.appendChild(componentRootNode);\r\n\r\n return componentRef.instance;\r\n }\r\n\r\n /**\r\n * Adds modal\r\n *\r\n * @param {Type<NgxModalComponent<T, T1>>} component\r\n * @param {T?} data\r\n * @param {NgxModalOptionsOverrides?} options\r\n *\r\n * @returns {Observable<T1>}\r\n */\r\n public addModal<T, T1>(\r\n component: Type<NgxModalComponent<T, T1>>,\r\n data?: T,\r\n options?: NgxModalOptionsOverrides\r\n ): Observable<T1> {\r\n if (!this.modalHolderComponent) {\r\n this.modalHolderComponent = this.createSimpleModalHolder();\r\n }\r\n return this.modalHolderComponent.addModal<T, T1>(component, data, options);\r\n }\r\n\r\n /**\r\n * Hides and removes modal from DOM, resolves promise when fully removed\r\n *\r\n * @param {NgxModalComponent} component\r\n *\r\n * @returns {Promise<{}>}\r\n */\r\n public removeModal(component: NgxModalComponent<any, any>): Promise<{}> {\r\n if (!this.modalHolderComponent) {\r\n return Promise.resolve({});\r\n }\r\n return this.modalHolderComponent.removeModal(component);\r\n }\r\n\r\n /**\r\n * Closes all modals, resolves promise when they're fully removed\r\n *\r\n * @returns {Promise<{}>}\r\n */\r\n public removeAll(): Promise<{}> {\r\n if (!this.modalHolderComponent) {\r\n return Promise.resolve({});\r\n }\r\n return this.modalHolderComponent.removeAllModals();\r\n }\r\n}\r\n","import { ApplicationRef, ComponentFactoryResolver, Injector } from '@angular/core';\r\nimport { NgxModalService, NgxModalServiceConfig } from './ngx-modal.service';\r\n\r\n/**\r\n * Modal service factory. Creates modal service with options\r\n * @param { ComponentFactoryResolver } resolver\r\n * @param { ApplicationRef } applicationRef\r\n * @param { Injector } injector\r\n * @param { NgxModalServiceConfig } options\r\n * @return { NgxModalService }\r\n */\r\nexport function NgxModalServiceFactory(\r\n resolver: ComponentFactoryResolver,\r\n applicationRef: ApplicationRef,\r\n injector: Injector,\r\n options: NgxModalServiceConfig\r\n): NgxModalService {\r\n return new NgxModalService(resolver, applicationRef, injector, options);\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ApplicationRef, ComponentFactoryResolver, Injector, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NgxModalHolderComponent } from './ngx-modal-holder.component';\r\nimport { NgxModalWrapperComponent } from './ngx-modal-wrapper.component';\r\nimport { NgxModalService, NgxModalServiceConfig } from './ngx-modal.service';\r\nimport { NgxModalServiceFactory } from './ngx-modal-service.factory';\r\nimport { defaultNgxModalOptions, DefaultNgxModalOptionConfig, NgxModalOptions } from './ngx-modal-options';\r\nimport { DraggableDirective } from './ngx-modal-draggable.directive';\r\n\r\n@NgModule({\r\n declarations: [NgxModalHolderComponent, NgxModalWrapperComponent, DraggableDirective],\r\n providers: [\r\n NgxModalService,\r\n {\r\n provide: DefaultNgxModalOptionConfig,\r\n useValue: defaultNgxModalOptions,\r\n },\r\n ],\r\n imports: [CommonModule],\r\n})\r\nexport class NgxModalView {\r\n static forRoot(\r\n config: NgxModalServiceConfig,\r\n defaultModalOptions?: NgxModalOptions\r\n ): ModuleWithProviders<NgxModalView> {\r\n return {\r\n ngModule: NgxModalView,\r\n providers: [\r\n { provide: NgxModalServiceConfig, useValue: config },\r\n {\r\n provide: NgxModalService,\r\n useFactory: NgxModalServiceFactory,\r\n deps: [ComponentFactoryResolver, ApplicationRef, Injector, NgxModalServiceConfig],\r\n },\r\n {\r\n provide: DefaultNgxModalOptionConfig,\r\n useValue: defaultModalOptions || defaultNgxModalOptions,\r\n }\r\n ],\r\n };\r\n }\r\n\r\n constructor() { }\r\n}\r\n","import { Component, ElementRef, HostListener } from '@angular/core';\r\nimport { Observable, Observer, BehaviorSubject } from 'rxjs';\r\nimport { NgxModalOptions } from './ngx-modal-options';\r\n\r\n/**\r\n * Abstract modal\r\n * @template T - modal data;\r\n * @template T1 - modal result\r\n */\r\n@Component({\r\n template: '',\r\n})\r\nexport abstract class NgxModalComponent<T, T1> {\r\n /**\r\n * Observer to return result from modal\r\n */\r\n private observer: Observer<T1>;\r\n\r\n /**\r\n * Drag handle\r\n */\r\n handle: ElementRef | undefined;\r\n\r\n /**\r\n * Dialog result\r\n * @type {T1}\r\n */\r\n result: T1;\r\n\r\n /**\r\n * Dialog wrapper (modal placeholder)\r\n */\r\n wrapper: ElementRef;\r\n\r\n /**\r\n * ref of options for this component\r\n */\r\n options: NgxModalOptions;\r\n\r\n /**\r\n * ready$ is when all animations and focusing have comleted\r\n */\r\n _ready$ = new BehaviorSubject<boolean>(false);\r\n\r\n /**\r\n * Callback to the holders close function\r\n */\r\n private closerCallback: (component) => Promise<any> = () => Promise.resolve();\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor() { }\r\n\r\n /**\r\n * Maps your object passed in the creation to fields in your own Dialog classes\r\n * @param {T} data\r\n */\r\n mapDataObject(data: T): void {\r\n data = data || <T>{};\r\n const keys = Object.keys(data);\r\n for (let i = 0, length = keys.length; i < length; i++) {\r\n const key = keys[i];\r\n if (\r\n data[key] &&\r\n this[key] &&\r\n typeof data[key] === 'object' &&\r\n typeof this[key] === 'object'\r\n ) {\r\n Object.assign(this[key], data[key]);\r\n } else {\r\n this[key] = data[key];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Setup observer\r\n * @return {Observable<T1>}\r\n */\r\n setupObserver(): Observable<T1> {\r\n return Observable.create(observer => {\r\n this.observer = observer;\r\n\r\n // called if observable is unsubscribed to\r\n return () => {\r\n this.close();\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Defines what happens when close is called - default this\r\n * will just call the default remove modal process. If overridden\r\n * must include\r\n * @param callback\r\n */\r\n onClosing(callback: (component: NgxModalComponent<any, any>) => Promise<any>): void {\r\n this.closerCallback = callback;\r\n }\r\n\r\n /**\r\n * Closes modal\r\n */\r\n close(): Promise<any> {\r\n return this.closerCallback(this).then(v => {\r\n if (this.observer) {\r\n this.observer.next(this.result);\r\n this.observer.complete();\r\n }\r\n return v;\r\n });\r\n }\r\n\r\n /**\r\n * keypress binding ngx way\r\n * @param evt\r\n */\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(evt: KeyboardEvent) {\r\n if (this.options && this.options.closeOnEscape) {\r\n this.close();\r\n }\r\n }\r\n\r\n get ready$() {\r\n return this._ready$.asObservable();\r\n }\r\n\r\n markAsReady() {\r\n this._ready$.next(true);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}