UNPKG

29.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-smart-modal.umd.js","sources":["../../src/services/ngx-smart-modal.service.ts","../../src/components/ngx-smart-modal.component.ts","../../src/modules/ngx-smart-modal.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { NgxSmartModalComponent } from '../../';\nimport { ModalInstance } from './modal-instance';\n\n@Injectable()\nexport class NgxSmartModalService {\n public modalStack: ModalInstance[] = [];\n private debouncer: any;\n\n /**\n * Add a new modal instance. This step is essential and allows to retrieve any modal at any time.\n * It stores an object that contains the given modal identifier and the modal itself directly in the `modalStack`.\n *\n * @param modalInstance The object that contains the given modal identifier and the modal itself.\n * @param force Optional parameter that forces the overriding of modal instance if it already exists.\n * @returns nothing special.\n */\n public addModal(modalInstance: ModalInstance, force?: boolean): void {\n if (force) {\n const i: number = this.modalStack.findIndex((o: ModalInstance) => {\n return o.id === modalInstance.id;\n });\n if (i > -1) {\n this.modalStack[i].modal = modalInstance.modal;\n } else {\n this.modalStack.push(modalInstance);\n }\n return;\n }\n this.modalStack.push(modalInstance);\n }\n\n /**\n * Retrieve a modal instance by its identifier.\n *\n * @param id The modal identifier used at creation time.\n */\n public getModal(id: string): NgxSmartModalComponent {\n return this.modalStack.filter((o: any) => {\n return o.id === id;\n })[0].modal;\n }\n\n /**\n * Alias of `getModal` to retrieve a modal instance by its identifier.\n *\n * @param id The modal identifier used at creation time.\n */\n public get(id: string): NgxSmartModalComponent {\n return this.getModal(id);\n }\n\n /**\n * Open a given modal\n *\n * @param id The modal identifier used at creation time.\n * @param force Tell the modal to open top of all other opened modals\n */\n public open(id: string, force = false): void {\n const instance = this.modalStack.find((o: ModalInstance) => {\n return o.id === id;\n });\n if (!!instance) {\n instance.modal.open(force);\n } else {\n throw new Error('Modal not found');\n }\n }\n\n /**\n * Close a given modal\n *\n * @param id The modal identifier used at creation time.\n */\n public close(id: string): void {\n const instance = this.modalStack.find((o: ModalInstance) => {\n return o.id === id;\n });\n if (!!instance) {\n instance.modal.close();\n } else {\n throw new Error('Modal not found');\n }\n }\n\n /**\n * Toggles a given modal\n * If the retrieved modal is opened it closes it, else it opens it.\n *\n * @param id The modal identifier used at creation time.\n * @param force Tell the modal to open top of all other opened modals\n */\n public toggle(id: string, force = false) {\n const instance = this.modalStack.find((o: ModalInstance) => {\n return o.id === id;\n });\n if (!!instance) {\n instance.modal.toggle(force);\n } else {\n throw new Error('Modal not found');\n }\n }\n\n /**\n * Retrieve all the created modals.\n *\n * @returns an array that contains all modal instances.\n */\n public getModalStack(): ModalInstance[] {\n return this.modalStack;\n }\n\n /**\n * Retrieve all the opened modals. It looks for all modal instances with their `visible` property set to `true`.\n *\n * @returns an array that contains all the opened modals.\n */\n public getOpenedModals(): ModalInstance[] {\n const modals: ModalInstance[] = [];\n this.modalStack.forEach((o: ModalInstance) => {\n if (o.modal.visible) {\n modals.push(o);\n }\n });\n return modals;\n }\n\n /**\n * Get the higher `z-index` value between all the modal instances. It iterates over the `ModalStack` array and\n * calculates a higher value (it takes the highest index value between all the modal instances and adds 1).\n * Use it to make a modal appear foreground.\n *\n * @returns a higher index from all the existing modal instances.\n */\n public getHigherIndex(): number {\n const index: number[] = [1041];\n const modals: ModalInstance[] = this.getModalStack();\n modals.forEach((o: ModalInstance) => {\n index.push(o.modal.layerPosition);\n });\n return Math.max(...index) + 1;\n }\n\n /**\n * It gives the number of modal instances. It's helpful to know if the modal stack is empty or not.\n *\n * @returns the number of modal instances.\n */\n public getModalStackCount(): number {\n return this.modalStack.length;\n }\n\n /**\n * Remove a modal instance from the modal stack.\n *\n * @param id The modal identifier.\n * @returns the removed modal instance.\n */\n public removeModal(id: string): void {\n const i: number = this.modalStack.findIndex((o: any) => {\n return o.id === id;\n });\n if (i > -1) {\n this.modalStack.splice(i, 1);\n }\n }\n\n /**\n * Associate data to an identified modal. If the modal isn't already associated to some data, it creates a new\n * entry in the `modalData` array with its `id` and the given `data`. If the modal already has data, it rewrites\n * them with the new ones. Finally if no modal found it returns an error message in the console and false value\n * as method output.\n *\n * @param data The data you want to associate to the modal.\n * @param id The modal identifier.\n * @param force If true, overrides the previous stored data if there was.\n * @returns true if the given modal exists and the process has been tried, either false.\n */\n public setModalData(data: any, id: string, force?: boolean): boolean {\n if (!!this.modalStack.find((o: ModalInstance) => {\n return o.id === id;\n })) {\n this.getModal(id).setData(data, force);\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Retrieve modal data by its identifier.\n *\n * @param id The modal identifier used at creation time.\n * @returns the associated modal data.\n */\n public getModalData(id: string): any {\n return this.getModal(id).getData();\n }\n\n /**\n * Reset the data attached to a given modal.\n *\n * @param id The modal identifier used at creation time.\n * @returns the removed data or false if modal doesn't exist.\n */\n public resetModalData(id: string): any | boolean {\n if (!!this.modalStack.find((o: ModalInstance) => {\n return o.id === id;\n })) {\n const removed: any = this.getModal(id).getData();\n this.getModal(id).removeData();\n return removed;\n } else {\n return false;\n }\n }\n\n /**\n * Close the latest opened modal if it has been declared as escapable\n * Using a debounce system because one or more modals could be listening\n * escape key press event.\n */\n public closeLatestModal(): void {\n const me = this;\n clearTimeout(this.debouncer);\n this.debouncer = setTimeout(() => {\n let tmp: ModalInstance | undefined;\n me.getOpenedModals().forEach((m: ModalInstance) => {\n if (m.modal.layerPosition > (!!tmp ? tmp.modal.layerPosition : 0 && m.modal.escapable)) {\n tmp = m;\n }\n });\n return !!tmp ? tmp.modal.close() : false;\n }, 100);\n }\n}\n","import {\n Input,\n Output,\n OnInit,\n OnDestroy,\n Renderer2,\n Component,\n EventEmitter,\n HostListener,\n ChangeDetectorRef, ViewChild, ElementRef,\n} from '@angular/core';\n\nimport { NgxSmartModalService } from '../services/ngx-smart-modal.service';\n\n@Component({\n selector: 'ngx-smart-modal',\n template: `\n <div *ngIf=\"overlayVisible\"\n [style.z-index]=\"visible ? layerPosition-1 : -1\"\n [ngClass]=\"{'transparent':!backdrop, 'overlay':true, 'nsm-overlay-open':openedClass}\"\n (click)=\"dismiss($event)\" #nsmOverlay>\n <div [style.z-index]=\"visible ? layerPosition : -1\"\n [ngClass]=\"['nsm-dialog', customClass, openedClass ? 'nsm-dialog-open': 'nsm-dialog-close']\" #nsmDialog>\n <div class=\"nsm-content\" #nsmContent>\n <div class=\"nsm-body\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" *ngIf=\"closable\" (click)=\"close()\" aria-label=\"Close\" class=\"nsm-dialog-btn-close\">\n <img\n src=\"data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CjxnPgoJPGc+CgkJPHBhdGggZD0iTTUwNS45NDMsNi4wNThjLTguMDc3LTguMDc3LTIxLjE3Mi04LjA3Ny0yOS4yNDksMEw2LjA1OCw0NzYuNjkzYy04LjA3Nyw4LjA3Ny04LjA3NywyMS4xNzIsMCwyOS4yNDkgICAgQzEwLjA5Niw1MDkuOTgyLDE1LjM5LDUxMiwyMC42ODMsNTEyYzUuMjkzLDAsMTAuNTg2LTIuMDE5LDE0LjYyNS02LjA1OUw1MDUuOTQzLDM1LjMwNiAgICBDNTE0LjAxOSwyNy4yMyw1MTQuMDE5LDE0LjEzNSw1MDUuOTQzLDYuMDU4eiIgZmlsbD0iIzAwMDAwMCIvPgoJPC9nPgo8L2c+CjxnPgoJPGc+CgkJPHBhdGggZD0iTTUwNS45NDIsNDc2LjY5NEwzNS4zMDYsNi4wNTljLTguMDc2LTguMDc3LTIxLjE3Mi04LjA3Ny0yOS4yNDgsMGMtOC4wNzcsOC4wNzYtOC4wNzcsMjEuMTcxLDAsMjkuMjQ4bDQ3MC42MzYsNDcwLjYzNiAgICBjNC4wMzgsNC4wMzksOS4zMzIsNi4wNTgsMTQuNjI1LDYuMDU4YzUuMjkzLDAsMTAuNTg3LTIuMDE5LDE0LjYyNC02LjA1N0M1MTQuMDE4LDQ5Ny44NjYsNTE0LjAxOCw0ODQuNzcxLDUwNS45NDIsNDc2LjY5NHoiIGZpbGw9IiMwMDAwMDAiLz4KCTwvZz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K\" />\n </button>\n </div>\n </div>\n </div>\n `\n})\nexport class NgxSmartModalComponent implements OnInit, OnDestroy {\n @Input() public closable: boolean = true;\n @Input() public escapable: boolean = true;\n @Input() public dismissable: boolean = true;\n @Input() public identifier: string = '';\n @Input() public customClass: string = 'nsm-dialog-animation-fade';\n @Input() public visible: boolean = false;\n @Input() public backdrop: boolean = true;\n @Input() public force: boolean = true;\n @Input() public hideDelay: number = 500;\n @Input() public autostart: boolean = false;\n @Input() public target: any;\n\n @Output() public visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() public onClose: EventEmitter<any> = new EventEmitter();\n @Output() public onCloseFinished: EventEmitter<any> = new EventEmitter();\n @Output() public onDismiss: EventEmitter<any> = new EventEmitter();\n @Output() public onDismissFinished: EventEmitter<any> = new EventEmitter();\n @Output() public onAnyCloseEvent: EventEmitter<any> = new EventEmitter();\n @Output() public onAnyCloseEventFinished: EventEmitter<any> = new EventEmitter();\n @Output() public onOpen: EventEmitter<any> = new EventEmitter();\n @Output() public onEscape: EventEmitter<any> = new EventEmitter();\n @Output() public onDataAdded: EventEmitter<any> = new EventEmitter();\n @Output() public onDataRemoved: EventEmitter<any> = new EventEmitter();\n\n public layerPosition: number = 1041;\n public overlayVisible: boolean = false;\n public openedClass: boolean = false;\n\n private _data: any = null;\n\n @ViewChild('nsmContent') private nsmContent: ElementRef | undefined;\n @ViewChild('nsmDialog') private nsmDialog: ElementRef | undefined;\n @ViewChild('nsmOverlay') private nsmOverlay: ElementRef | undefined;\n\n constructor(\n private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef,\n private _ngxSmartModalService: NgxSmartModalService\n ) {\n }\n\n public ngOnInit() {\n if (!!this.identifier && this.identifier.length) {\n this.layerPosition += this._ngxSmartModalService.getModalStackCount();\n this._ngxSmartModalService.addModal({ id: this.identifier, modal: this }, this.force);\n\n if (this.autostart) {\n this._ngxSmartModalService.open(this.identifier);\n }\n } else {\n throw new Error('identifier field isn’t set. Please set one before calling <ngx-smart-modal> in a template.');\n }\n }\n\n public ngOnDestroy() {\n this._ngxSmartModalService.removeModal(this.identifier);\n }\n\n public open(top?: boolean): void {\n if (top) {\n this.layerPosition = this._ngxSmartModalService.getHigherIndex();\n }\n\n this._renderer.addClass(document.body, 'dialog-open');\n this.overlayVisible = true;\n this.visible = true;\n\n setTimeout(() => {\n this.openedClass = true;\n\n if (this.target) {\n this.targetPlacement();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n\n this.onOpen.emit(this);\n }\n\n public close(): void {\n const me = this;\n\n this.openedClass = false;\n this.onClose.emit(this);\n this.onAnyCloseEvent.emit(this);\n\n if (this._ngxSmartModalService.getOpenedModals().length < 2) {\n this._renderer.removeClass(document.body, 'dialog-open');\n }\n\n setTimeout(() => {\n me.visibleChange.emit(me.visible);\n me.visible = false;\n me.overlayVisible = false;\n me._changeDetectorRef.markForCheck();\n me.onCloseFinished.emit(me);\n me.onAnyCloseEventFinished.emit(me);\n }, this.hideDelay);\n }\n\n public dismiss(e: any): void {\n const me = this;\n\n if (!this.dismissable) {\n return;\n }\n\n if (e.target.classList.contains('overlay')) {\n this.openedClass = false;\n this.onDismiss.emit(this);\n this.onAnyCloseEvent.emit(this);\n\n if (this._ngxSmartModalService.getOpenedModals().length < 2) {\n this._renderer.removeClass(document.body, 'dialog-open');\n }\n\n setTimeout(() => {\n me.visible = false;\n me.visibleChange.emit(me.visible);\n me.overlayVisible = false;\n me._changeDetectorRef.markForCheck();\n me.onDismissFinished.emit(me);\n me.onAnyCloseEventFinished.emit(me);\n }, this.hideDelay);\n }\n }\n\n public toggle(top?: boolean) {\n if (this.visible) {\n this.close();\n } else {\n this.open(top);\n }\n }\n\n public addCustomClass(className: string): void {\n if (!this.customClass.length) {\n this.customClass = className;\n } else {\n this.customClass += ' ' + className;\n }\n }\n\n public removeCustomClass(className?: string): void {\n if (className) {\n this.customClass = this.customClass.replace(className, '').trim();\n } else {\n this.customClass = '';\n }\n }\n\n public isVisible(): boolean {\n return this.visible;\n }\n\n public hasData(): boolean {\n return !!this._data;\n }\n\n public setData(data: any, force?: boolean): any {\n if (!this._data || (!!this._data && force)) {\n setTimeout(() => {\n this._data = data;\n this.onDataAdded.emit(this._data);\n });\n }\n }\n\n public getData(): any {\n return this._data;\n }\n\n public removeData(): void {\n setTimeout(() => {\n this._data = null;\n this.onDataRemoved.emit(true);\n });\n }\n\n @HostListener('document:keyup', ['$event'])\n public escapeKeyboardEvent(event: KeyboardEvent) {\n if (event.keyCode === 27 && this.visible) {\n if (!this.escapable) {\n return false;\n } else {\n this.onEscape.emit(this);\n this._ngxSmartModalService.closeLatestModal();\n }\n }\n }\n\n @HostListener('window:resize')\n private targetPlacement() {\n if (!this.nsmDialog || !this.nsmContent || !this.nsmOverlay || !this.target) {\n return;\n }\n\n const targetElementRect = document.querySelector(this.target).getBoundingClientRect();\n const bodyRect = this.nsmOverlay.nativeElement.getBoundingClientRect();\n\n const nsmContentRect = this.nsmContent.nativeElement.getBoundingClientRect();\n const nsmDialogRect = this.nsmDialog.nativeElement.getBoundingClientRect();\n\n const marginLeft = parseInt(getComputedStyle(this.nsmContent.nativeElement).marginLeft as any, 10);\n const marginTop = parseInt(getComputedStyle(this.nsmContent.nativeElement).marginTop as any, 10);\n\n let offsetTop = targetElementRect.top - nsmDialogRect.top - ((nsmContentRect.height - targetElementRect.height) / 2);\n let offsetLeft = targetElementRect.left - nsmDialogRect.left - ((nsmContentRect.width - targetElementRect.width) / 2);\n\n if (offsetLeft + nsmDialogRect.left + nsmContentRect.width + (marginLeft * 2) > bodyRect.width) {\n offsetLeft = bodyRect.width - (nsmDialogRect.left + nsmContentRect.width) - (marginLeft * 2);\n } else if (offsetLeft + nsmDialogRect.left < 0) {\n offsetLeft = -nsmDialogRect.left;\n }\n\n if (offsetTop + nsmDialogRect.top + nsmContentRect.height + marginTop > bodyRect.height) {\n offsetTop = bodyRect.height - (nsmDialogRect.top + nsmContentRect.height) - marginTop;\n }\n\n if (offsetTop < 0) {\n offsetTop = 0;\n }\n\n this._renderer.setStyle(this.nsmContent.nativeElement, 'top', offsetTop + 'px');\n this._renderer.setStyle(this.nsmContent.nativeElement, 'left', offsetLeft + 'px');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NgxSmartModalService } from '../services/ngx-smart-modal.service';\nimport { NgxSmartModalComponent } from '../components/ngx-smart-modal.component';\n\n@NgModule({\n declarations: [NgxSmartModalComponent],\n exports: [NgxSmartModalComponent],\n imports: [CommonModule]\n})\nexport class NgxSmartModalModule {\n\n /**\n * Use in AppModule: new instance of NgxSmartModal.\n */\n public static forRoot(): ModuleWithProviders {\n return {\n ngModule: NgxSmartModalModule,\n providers: [NgxSmartModalService]\n };\n }\n\n /**\n * Use in features modules with lazy loading: new instance of NgxSmartModal.\n */\n public static forChild(): ModuleWithProviders {\n return {\n ngModule: NgxSmartModalModule,\n providers: [NgxSmartModalService]\n };\n }\n\n}\n"],"names":["Injectable","EventEmitter","Component","Renderer2","ChangeDetectorRef","Input","Output","ViewChild","HostListener","NgModule","CommonModule"],"mappings":"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"}
\No newline at end of file