{"version":3,"file":"ems-web-app-modal.mjs","sources":["../../src/lib/modal.service.ts","../../src/lib/modal.component.ts","../../src/lib/modal.component.html","../../src/lib/modal.classes.ts","../../src/lib/modal.module.ts","../../src/public-api.ts","../../src/ems-web-app-modal.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable, Subject, BehaviorSubject, throwError, of } from 'rxjs';\nimport { ModalData } from \"./modal.classes\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ModalService {\n\n  private currentModalSource:BehaviorSubject<ModalData|null|undefined> = new BehaviorSubject<ModalData|null|undefined>(undefined);\n  public currentModal$ = this.currentModalSource.asObservable();\n\n  private _modalQueue: ModalData[] = [];\n  private _currentModal: ModalData | null | undefined;\n\n  public setCurrentModal(value: ModalData | null) {\n\n    if(value && this._currentModal) {\n      this._modalQueue.push(this._currentModal);\n    }\n\n    if(!value && this._modalQueue.length) {\n      value = this._modalQueue.pop() as ModalData;\n    }\n\n    this._currentModal = value;\n    this.currentModalSource.next(value);\n  }\n}\n","import { Component, Input, OnInit, AfterViewInit, HostBinding, HostListener, ElementRef } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Subscription } from 'rxjs';\nimport { ModalService } from './modal.service';\nimport { ModalData } from './modal.classes';\nimport { delay, trace, empty } from 'ems-web-app-utils';\n\n@Component({\n  selector: 'modal',\n  templateUrl: './modal.component.html',\n  styleUrls: ['./modal.component.less']\n})\nexport class ModalComponent implements OnInit, AfterViewInit  {\n\n  @HostBinding('class.render') render: boolean = false;\n  @HostBinding('class.transparent') transparent: boolean = true;\n  @HostBinding('attr.data-modal-id') currentModalId: string | null = null;\n\n  @Input(\"transition-speed\") speed: number = 250;\n  @Input(\"background\") background: string = \"rgba(255,255,255,0.25)\";\n  @Input(\"z-index\") zIndex: number = 9000;\n  @Input(\"focus-target\") focusTarget: string = \"#modal-info\";\n\n  private static INTERACTIVES: string = `a, button, input, select, textarea, [role=\"button\"]`;\n\n  public data?:ModalData | null;\n  public styles!: SafeHtml;\n\n  private subscription: Subscription | null = null;\n  private $siblings!: any;\n  private launcher: Element | null = null;\n  private viewInitialized: boolean = false;\n  private timeout: number = 0;\n  \n  constructor(public app: ModalService, private sanitizer: DomSanitizer, private element: ElementRef) {};\n\n  ngOnInit() {\n    this.buildStyles();\n    this.subscription = this.app.currentModal$.subscribe(modalData => {\n      if(modalData === undefined) return;\n      clearTimeout(this.timeout);\n      if(modalData) this.renderModal(modalData) \n      else this.hideModal();\n    });\n  }\n\n  ngAfterViewInit() {\n    this.onInitialize();\n  }\n\n  @HostListener('click', ['$event.target'])\n  onContainerClick = (contained: HTMLElement) => {\n    if(!this.data || this.data.preventClickToDismiss || contained.nodeName.toLowerCase() !== \"modal\") return;\n    this.data.cancel();\n  }\n\n  private onKeyUp = (event: KeyboardEvent) => {\n    if(event.key === \"Escape\" && this.data?.cancel) {\n      this.data.cancel();\n    }\n  }\n\n  private trap() {\n    const children = Array.prototype.slice.call(this.element.nativeElement.parentElement.children);\n    const siblings = children.filter((child: HTMLElement) => child !== this.element.nativeElement);\n    let sibling = siblings.shift();\n    \n    while(sibling) {\n      const interactives = Array.prototype.slice.call(sibling.querySelectorAll(ModalComponent.INTERACTIVES));\n      interactives.forEach((element: HTMLElement) => {\n        element.tabIndex = -1;\n        element.classList.add(\"tab-disabled\");\n      });\n      sibling.ariaHidden = \"true\";\n      sibling = siblings.shift();\n    }\n\n  }\n\n  private untrap() {\n    const children = Array.prototype.slice.call(this.element.nativeElement.parentElement.children);\n    const siblings = children.filter((child: HTMLElement) => child !== this.element.nativeElement);\n    const disabled = Array.prototype.slice.call(document.querySelectorAll(\".tab-disabled\"));\n    \n    //siblings.forEach((sibling: HTMLElement) => sibling.removeAttribute(\"aria-hidden\"));\n\n    disabled.forEach((element: HTMLElement) => {\n      element.tabIndex = 0;\n      element.classList.remove(\"tab-disabled\");\n    });\n  }\n\n  private renderModal(modalData: ModalData) {\n    this.currentModalId = modalData.id;\n    this.render = true;\n    this.data = modalData;\n    this.launcher = document.activeElement;\n    this.trap();\n    document.querySelector(\"body\")!.classList.add(\"modalview\");\n    this.element.nativeElement.onkeyup = this.onKeyUp;\n\n\n    this.timeout = window.setTimeout(() => {\n      const info = this.element.nativeElement.querySelector(this.focusTarget);\n      info.focus();\n      this.transparent = false;\n      this.onInitialize(); \n    });\n  }\n\n  private onInitialize() {\n    if(!this.data?.initialized || this.viewInitialized) return;\n    \n    const element = this.element.nativeElement.querySelector(\".modal-content\");\n    this.data.initialized(element, this.data);\n    this.viewInitialized = true;\n  }\n\n  private hideModal() {\n\n    this.transparent = true;\n    this.viewInitialized = false;\n    this.element.nativeElement.onkeyup = null;\n    document.querySelector(\"body\")!.classList.remove(\"modalview\");\n    this.untrap();\n    \n    if(this.launcher) (this.launcher as HTMLElement).focus();\n    \n    this.timeout = window.setTimeout(() => {\n      this.render = false;\n      this.data = null;\n      this.currentModalId = null;\n    }, this.speed);\n  }\n\n  private buildStyles() {\n\n    const styles = `<style>\n      modal {\n        background: ${this.background};\n        transition: opacity ${this.speed / 1000}s;\n      }\n\n      modal.transparent {\n        transition: opacity ${this.speed / 1000}s;\n      }\n\n      modal.render {\n        z-index: ${this.zIndex};\n      }\n\n      .modal-blur {\n        transition: all ${this.speed / 1000}s;\n      }\n\n      .modalview .modal-blur {\n        filter: blur(0.125rem);\n        transition: all ${this.speed / 1000}s;\n      }\n\n    </style>`;\n\n    this.styles = this.sanitizer.bypassSecurityTrustHtml(styles);\n  }\n}\n","<div [id]=\"data.id\" class=\"modal-content\" [ngClass]=\"data.classes\" *ngIf=\"data\">\n\t<p id=\"modal-info\" tabindex=\"0\" class=\"accessible\">You are now at the top of a modal window.</p>\n\t<ng-container *ngTemplateOutlet=\"data.template\"></ng-container>\n</div>\n<div class=\"style-container\" [innerHtml]=\"styles\"></div>","import { TemplateRef } from '@angular/core';\n\nexport class ModalData  {\n\n\tprivate _id!: string;\n\tprivate _preventClickToDismiss: boolean = false;\n\tprivate _initialized?: ((element: HTMLElement, data: ModalData) => void) | undefined;\n\tprivate _cancel!: () => void ; \n\tprivate _template!: TemplateRef<any>;\n\tprivate _classes: string[] = [];\n\t\n\tconstructor() {};\n\n\tset id(value: string) {\n\t\tthis._id = value;\n\t}\n\n\tget id(): string {\n\t\treturn this._id;\n\t}\n\n\tset initialized(value: ((element: HTMLElement, data: ModalData) => void) | undefined) {\n\t\tthis._initialized = value;\n\t}\n\n\tget initialized(): ((element: HTMLElement, data: ModalData) => void) | undefined {\n\t\treturn this._initialized;\n\t}\n\n\tset cancel(value: () => void) {\n\t\tthis._cancel = value;\n\t}\n\n\tget cancel(): () => void {\n\t\treturn this._cancel;\n\t}\n\n\tget preventClickToDismiss(): boolean {\n\t\treturn this._preventClickToDismiss;\n\t}\n\n\tset preventClickToDismiss(value: boolean){\n\t\tthis._preventClickToDismiss = value;\n\t}\n\n\tset template(value: TemplateRef<any>) {\n\t\tthis._template = value;\n\t}\n\n\tget template(): TemplateRef<any> {\n\t\treturn this._template;\n\t}\n\n\tget classes(): string[] {\n\t\treturn this._classes;\n\t}\n\n\tset classes(value: string[]){\n\t\tthis._classes = value;\n\t}\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalComponent } from './modal.component';\nimport { ModalService } from \"./modal.service\";\n\nexport * from \"./modal.classes\";\n\n@NgModule({\n  declarations: [\n    ModalComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    ModalComponent\n  ]\n})\nexport class ModalModule { }\n","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/modal.service';\nexport * from './lib/modal.component';\nexport * from './lib/modal.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModalService"],"mappings":"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"}