{"version":3,"file":"mdb-angular-ui-kit-modal.mjs","sources":["../../../projects/mdb-angular-ui-kit/modal/modal-config.ts","../../../projects/mdb-angular-ui-kit/modal/modal-ref.ts","../../../projects/mdb-angular-ui-kit/modal/modal-container.component.ts","../../../projects/mdb-angular-ui-kit/modal/modal-container.component.html","../../../projects/mdb-angular-ui-kit/modal/modal.service.ts","../../../projects/mdb-angular-ui-kit/modal/modal.module.ts","../../../projects/mdb-angular-ui-kit/modal/mdb-angular-ui-kit-modal.ts"],"sourcesContent":["import { ViewContainerRef } from '@angular/core';\n\nexport class MdbModalConfig<D = any> {\n  animation? = true;\n  backdrop? = true;\n  ignoreBackdropClick? = false;\n  keyboard? = true;\n  modalClass? = '';\n  containerClass? = '';\n  viewContainerRef?: ViewContainerRef;\n  data?: D | null = null;\n  nonInvasive? = false;\n  focusElementSelector? = '';\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { MdbModalContainerComponent } from './modal-container.component';\n\nexport class MdbModalRef<T> {\n  constructor(protected _overlayRef: OverlayRef, private _container: MdbModalContainerComponent) {}\n\n  component: T;\n\n  private readonly onClose$: Subject<any> = new Subject();\n  readonly onClose: Observable<any> = this.onClose$.asObservable();\n\n  close(message?: any): void {\n    this._container._close();\n\n    setTimeout(() => {\n      if (this._container._config.nonInvasive) {\n        this._container._onNonInvasiveModalHidden();\n      }\n      this._container._restoreScrollbar();\n      this.onClose$.next(message);\n      this.onClose$.complete();\n      this._overlayRef.detach();\n      this._overlayRef.dispose();\n    }, this._container.MODAL_TRANSITION);\n  }\n}\n","import { CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  HostBinding,\n  HostListener,\n  Inject,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewChild,\n  DOCUMENT,\n} from '@angular/core';\nimport { MdbModalConfig } from './modal-config';\nimport { ConfigurableFocusTrapFactory, ConfigurableFocusTrap } from '@angular/cdk/a11y';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\n// width below which, according to css rules, modal position changes - modal gets position relative instead of absolute.\nconst MODAL_CSS_BREAKPOINT = 992;\nconst MODAL_OPEN_CLASS = 'modal-open';\nconst NON_INVASIVE_CLASS = 'modal-non-invasive-open';\nconst NON_INVASIVE_SHOW_CLASS = 'modal-non-invasive-show';\n\n@Component({\n  selector: 'mdb-modal-container',\n  templateUrl: 'modal-container.component.html',\n  changeDetection: ChangeDetectionStrategy.Default,\n  standalone: false,\n})\nexport class MdbModalContainerComponent implements OnInit, AfterViewInit, OnDestroy {\n  @ViewChild(CdkPortalOutlet, { static: true }) _portalOutlet: CdkPortalOutlet;\n  @ViewChild('dialog', { static: true }) modalDialog: ElementRef;\n  @ViewChild('content', { static: true }) modalContent: ElementRef;\n\n  readonly _destroy$: Subject<void> = new Subject<void>();\n  readonly backdropClick$: Subject<MouseEvent> = new Subject<MouseEvent>();\n\n  _config: MdbModalConfig;\n\n  BACKDROP_TRANSITION = 150;\n  MODAL_TRANSITION = 200;\n  NON_INVASIVE_TRANSITION = 450;\n\n  private _previouslyFocusedElement: HTMLElement;\n  private _focusTrap: ConfigurableFocusTrap;\n\n  @HostBinding('class.modal') modal = true;\n  @HostBinding('class.fade')\n  get hasAnimation(): boolean {\n    return this._config.animation;\n  }\n\n  @HostListener('window:resize')\n  onWindowResize() {\n    this._ngZone.runOutsideAngular(() => {\n      if (this._config.nonInvasive) {\n        this._handleWindowResize();\n      }\n    });\n  }\n\n  get host(): HTMLElement {\n    return this._elementRef.nativeElement;\n  }\n\n  private _isScrollable = false;\n  private _isBottomRight = false;\n  private _isBottomLeft = false;\n  private _isTopRight = false;\n  private _isTopLeft = false;\n  private _isSideTopModal = false;\n  private _isSideBottomModal = false;\n  private _isSideModal = false;\n  private _isModalBottom = false;\n  private _modalContentRect: null | DOMRectReadOnly;\n  private _modalContentComputedStyles: null | CSSStyleDeclaration;\n  private _modalDialogComputedStyles: null | CSSStyleDeclaration;\n  private _topOffset = 0;\n  private _leftOffset = 0;\n  private _rightOffset = 0;\n  private _bottomOffset = 0;\n\n  constructor(\n    @Inject(DOCUMENT) private _document,\n    public _elementRef: ElementRef,\n    private _renderer: Renderer2,\n    private _focusTrapFactory: ConfigurableFocusTrapFactory,\n    private _ngZone: NgZone\n  ) {}\n\n  ngOnInit(): void {\n    this._updateContainerClass();\n    this._renderer.setStyle(this.host, 'display', 'block');\n\n    if (!this._config.nonInvasive) {\n      this._focusTrap = this._focusTrapFactory.create(this.host);\n      this._previouslyFocusedElement = this._document.activeElement as HTMLElement;\n    }\n    const focusElement =\n      this._config.focusElementSelector &&\n      (this.modalContent.nativeElement.querySelector(\n        this._config.focusElementSelector\n      ) as HTMLElement);\n    if (this._config.animation) {\n      setTimeout(() => {\n        this._renderer.addClass(this.host, 'show');\n        if (focusElement) {\n          setTimeout(() => {\n            focusElement.focus();\n          }, this.MODAL_TRANSITION);\n        } else {\n          setTimeout(() => {\n            this._focusTrap?.focusInitialElementWhenReady();\n          }, this.MODAL_TRANSITION);\n        }\n      }, this.BACKDROP_TRANSITION);\n    } else if (focusElement) {\n      focusElement.focus();\n    } else {\n      this._focusTrap?.focusInitialElementWhenReady();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    const widthWithVerticalScroll = this._document.body.offsetWidth;\n    this._renderer.addClass(this._document.body, MODAL_OPEN_CLASS);\n\n    if (this._config.nonInvasive) {\n      this._renderer.addClass(this._document.body, NON_INVASIVE_CLASS);\n      setTimeout(() => {\n        this._onNonInvasiveModalShown();\n      }, this.NON_INVASIVE_TRANSITION);\n    }\n\n    if (!this._config.nonInvasive) {\n      this._renderer.setStyle(this._document.body, 'overflow', 'hidden');\n    }\n\n    const widthWithoutVerticalScroll = this._document.body.offsetWidth;\n\n    if (!this._config.nonInvasive) {\n      this._renderer.setStyle(\n        this._document.body,\n        'padding-right',\n        `${widthWithoutVerticalScroll - widthWithVerticalScroll}px`\n      );\n    }\n\n    if (!this._config.ignoreBackdropClick && !this._config.nonInvasive) {\n      fromEvent(this.host, 'mousedown')\n        .pipe(\n          filter((event: MouseEvent) => {\n            const target = event.target as HTMLElement;\n            const dialog = this.modalDialog.nativeElement;\n            const notDialog = target !== dialog;\n            const notDialogContent = !dialog.contains(target);\n            return notDialog && notDialogContent;\n          }),\n          takeUntil(this._destroy$)\n        )\n        .subscribe((event: MouseEvent) => {\n          this.backdropClick$.next(event);\n        });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._previouslyFocusedElement?.focus();\n    this._focusTrap?.destroy();\n\n    this._destroy$.next();\n    this._destroy$.complete();\n  }\n\n  private _updateContainerClass(): void {\n    if (\n      this._config.containerClass === '' ||\n      (this._config.containerClass.length && this._config.containerClass.length === 0)\n    ) {\n      return;\n    }\n\n    const containerClasses = this._config.containerClass.split(' ');\n\n    containerClasses.forEach((containerClass) => {\n      this._renderer.addClass(this.host, containerClass);\n    });\n  }\n\n  private _onNonInvasiveModalShown() {\n    this._isScrollable = this._config.modalClass.includes('modal-dialog-scrollable');\n    this._isBottomRight = this._config.modalClass.includes('modal-bottom-right');\n    this._isBottomLeft = this._config.modalClass.includes('modal-bottom-left');\n    this._isTopRight = this._config.modalClass.includes('modal-top-right');\n    this._isTopLeft = this._config.modalClass.includes('modal-top-left');\n    this._isModalBottom = this._config.modalClass.includes('modal-bottom');\n    this._isSideTopModal = this._isTopLeft || this._isTopRight;\n    this._isSideBottomModal = this._isBottomLeft || this._isBottomRight;\n    this._isSideModal = this._isSideTopModal || this._isSideBottomModal;\n    this._modalContentRect = this.modalContent.nativeElement.getBoundingClientRect();\n    this._modalContentComputedStyles = window.getComputedStyle(this.modalContent.nativeElement);\n    this._modalDialogComputedStyles = window.getComputedStyle(this.modalDialog.nativeElement);\n    this._topOffset = parseInt(this._modalDialogComputedStyles.top, 0);\n    this._leftOffset = parseInt(this._modalDialogComputedStyles.left, 0);\n    this._rightOffset = parseInt(this._modalDialogComputedStyles.right, 0);\n    this._bottomOffset = parseInt(this._modalDialogComputedStyles.bottom, 0);\n\n    this._renderer.addClass(this.host, NON_INVASIVE_SHOW_CLASS);\n    this._setNonInvasiveStyles();\n  }\n\n  private _setNonInvasiveStyles(leftOffset = 0, topOffset = 0) {\n    const isAboveBreakpoint = window.innerWidth >= MODAL_CSS_BREAKPOINT;\n    this._renderer.setStyle(this.host, 'left', `${this._modalContentRect.left + leftOffset}px`);\n    this._renderer.setStyle(this.host, 'width', this._modalContentComputedStyles.width);\n\n    if (!this._isScrollable) {\n      // If the modal content is not long enough to require scroll shrink the modal wrapper to\n      // the height of modal content so other elements on site are clickable outside modal\n      this._renderer.setStyle(this.host, 'height', this._modalContentComputedStyles.height);\n      this._renderer.setStyle(this.host, 'display', '');\n    }\n\n    if (isAboveBreakpoint) {\n      if (this._isSideBottomModal || this._isModalBottom) {\n        // Force modal to correct bottom placement. It's needed because modal host has position\n        // fixed and fixed height.\n        this._renderer.setStyle(this.host, 'top', `${this._modalContentRect.top + topOffset}px`);\n      }\n\n      if (this._isSideModal) {\n        // Enable horizontal scrolling when the content is wider than the modal's fixed width\n        this._renderer.setStyle(this.host, 'overflowX', 'auto');\n      }\n    }\n\n    if (!isAboveBreakpoint) {\n      this.host.style.height = '';\n    }\n  }\n\n  _onNonInvasiveModalHidden() {\n    this._renderer.removeClass(this.host, NON_INVASIVE_SHOW_CLASS);\n    this._resetNonInvasiveStyles();\n    this._removeNonInvasiveClass();\n  }\n\n  private _resetNonInvasiveStyles() {\n    this._renderer.setStyle(this.host, 'left', '');\n    this._renderer.setStyle(this.host, 'top', '');\n    this._renderer.setStyle(this.host, 'height', '');\n    this._renderer.setStyle(this.host, 'width', '');\n\n    if (!this._isScrollable) {\n      this._renderer.setStyle(this.host, 'display', '');\n    }\n\n    if (this._isSideModal) {\n      this._renderer.setStyle(this.host, 'overflowX', '');\n    }\n  }\n\n  private _removeNonInvasiveClass() {\n    const isOtherModalOpen = this._document.body.querySelector(\n      '.modal.show.modal-non-invasive-show'\n    );\n    if (!isOtherModalOpen) {\n      this._renderer.removeClass(this._document.body, NON_INVASIVE_CLASS);\n    } else {\n      this._renderer.addClass(this._document.body, MODAL_OPEN_CLASS);\n    }\n  }\n\n  private _handleWindowResize() {\n    const modalContent = this.host.querySelector('.modal-content');\n    this._resetNonInvasiveStyles();\n\n    this._modalContentRect = modalContent.getBoundingClientRect();\n    this._modalContentComputedStyles = window.getComputedStyle(modalContent);\n\n    if (this._isSideTopModal || this._isSideBottomModal) {\n      let sideOffset = 0;\n      let topOffset = 0;\n      if (this._isBottomRight || this._isBottomLeft) {\n        topOffset = -this._bottomOffset;\n      }\n      if (this._isBottomRight || this._isTopRight) {\n        sideOffset = -this._rightOffset;\n      }\n      if (this._isBottomLeft || this._isTopLeft) {\n        sideOffset = this._leftOffset;\n      }\n\n      this._setNonInvasiveStyles(sideOffset, topOffset);\n    } else {\n      this._setNonInvasiveStyles();\n    }\n  }\n\n  _close(): void {\n    if (this._config.animation) {\n      this._renderer.removeClass(this.host, 'show');\n    }\n\n    // Pause iframe/video when closing modal\n    const iframeElements = Array.from(this.host.querySelectorAll('iframe'));\n    const videoElements = Array.from(this.host.querySelectorAll('video'));\n\n    iframeElements.forEach((iframe: HTMLIFrameElement) => {\n      const srcAttribute: any = iframe.getAttribute('src');\n      this._renderer.setAttribute(iframe, 'src', srcAttribute);\n    });\n\n    videoElements.forEach((video: HTMLVideoElement) => {\n      video.pause();\n    });\n  }\n\n  _restoreScrollbar(): void {\n    this._renderer.removeClass(this._document.body, MODAL_OPEN_CLASS);\n    this._renderer.removeStyle(this._document.body, 'overflow');\n    this._renderer.removeStyle(this._document.body, 'padding-right');\n  }\n\n  attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    return this._portalOutlet.attachComponentPortal(portal);\n  }\n\n  attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    return this._portalOutlet.attachTemplatePortal(portal);\n  }\n}\n","<div #dialog [class]=\"'modal-dialog' + (_config.modalClass ? ' ' + _config.modalClass : '')\">\n  <div\n    #content\n    class=\"modal-content\"\n    [ngClass]=\"{ 'rounded-0': _config.modalClass.includes('modal-frame') }\"\n  >\n    <ng-template cdkPortalOutlet></ng-template>\n  </div>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal';\n\nimport {\n  Inject,\n  Injectable,\n  Injector,\n  StaticProvider,\n  TemplateRef,\n  ChangeDetectorRef,\n  DOCUMENT,\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { MdbModalConfig } from './modal-config';\nimport { MdbModalContainerComponent } from './modal-container.component';\nimport { MdbModalRef } from './modal-ref';\n\n@Injectable()\nexport class MdbModalService {\n  constructor(\n    @Inject(DOCUMENT) private _document,\n    private _overlay: Overlay,\n    private _injector: Injector\n  ) {}\n\n  open<T, D = any>(\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n    config?: MdbModalConfig<D>\n  ): MdbModalRef<T> {\n    const defaultConfig = new MdbModalConfig();\n    config = config ? Object.assign(defaultConfig, config) : defaultConfig;\n\n    const overlayRef = this._createOverlay(config);\n    const container = this._createContainer(overlayRef, config);\n    const modalRef = this._createContent(componentOrTemplateRef, container, overlayRef, config);\n\n    this._registerListeners<T>(modalRef, config, container);\n\n    return modalRef;\n  }\n\n  private _createOverlay(config: MdbModalConfig): OverlayRef {\n    const overlayConfig = this._getOverlayConfig(config);\n    return this._overlay.create(overlayConfig);\n  }\n\n  private _getOverlayConfig(modalConfig: MdbModalConfig): OverlayConfig {\n    const config = new OverlayConfig({\n      positionStrategy: this._overlay.position().global(),\n      scrollStrategy: this._overlay.scrollStrategies.noop(),\n      hasBackdrop: modalConfig.nonInvasive ? false : modalConfig.backdrop,\n      backdropClass: 'mdb-backdrop',\n    });\n\n    return config;\n  }\n\n  private _createContainer(\n    overlayRef: OverlayRef,\n    config: MdbModalConfig\n  ): MdbModalContainerComponent {\n    const portal = new ComponentPortal(MdbModalContainerComponent, null, this._injector);\n    const containerRef = overlayRef.attach(portal);\n    containerRef.instance._config = config;\n\n    containerRef.changeDetectorRef.detectChanges();\n\n    return containerRef.instance;\n  }\n\n  private _createContent<T>(\n    componentOrTemplate: ComponentType<T> | TemplateRef<T>,\n    container: MdbModalContainerComponent,\n    overlayRef: OverlayRef,\n    config: MdbModalConfig\n  ): MdbModalRef<T> {\n    const modalRef: MdbModalRef<T> = new MdbModalRef(overlayRef, container);\n\n    if (componentOrTemplate instanceof TemplateRef) {\n      container.attachTemplatePortal(\n        new TemplatePortal<T>(componentOrTemplate, null, {\n          $implicit: config.data,\n          modalRef,\n        } as any)\n      );\n    } else {\n      const injector = this._createInjector<T>(config, modalRef, container);\n      const contentRef = container.attachComponentPortal<T>(\n        new ComponentPortal(componentOrTemplate, config.viewContainerRef, injector)\n      );\n\n      if (config.data) {\n        Object.assign(contentRef.instance, { ...config.data });\n      }\n\n      modalRef.component = contentRef.instance;\n    }\n\n    return modalRef;\n  }\n\n  private _createInjector<T>(\n    config: MdbModalConfig,\n    modalRef: MdbModalRef<T>,\n    container: MdbModalContainerComponent\n  ): Injector {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n    // The dialog container should be provided as the dialog container and the dialog's\n    // content are created out of the same `ViewContainerRef` and as such, are siblings\n    // for injector purposes. To allow the hierarchy that is expected, the dialog\n    // container is explicitly provided in the injector.\n    const providers: StaticProvider[] = [\n      { provide: MdbModalContainerComponent, useValue: container },\n      { provide: MdbModalRef, useValue: modalRef },\n    ];\n\n    return Injector.create({ parent: userInjector || this._injector, providers });\n  }\n\n  private _registerListeners<T>(\n    modalRef: MdbModalRef<T>,\n    config: MdbModalConfig,\n    container: MdbModalContainerComponent\n  ): void {\n    container.backdropClick$.pipe(take(1)).subscribe(() => {\n      modalRef.close();\n    });\n\n    if (config.keyboard) {\n      fromEvent(container._elementRef.nativeElement, 'keydown')\n        .pipe(\n          filter((event: KeyboardEvent) => {\n            return event.key === 'Escape';\n          }),\n          take(1)\n        )\n        .subscribe(() => {\n          modalRef.close();\n        });\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { MdbModalContainerComponent } from './modal-container.component';\nimport { MdbModalService } from './modal.service';\n\n@NgModule({\n  imports: [CommonModule, OverlayModule, PortalModule],\n  exports: [MdbModalContainerComponent],\n  declarations: [MdbModalContainerComponent],\n  providers: [MdbModalService],\n})\nexport class MdbModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}