{"version":3,"file":"firestitch-dialog.mjs","sources":["../../src/app/injectors/dialog-config.injector.ts","../../src/app/injectors/dialog-injector.injector.ts","../../src/app/directives/dialog-subtitle.directive.ts","../../src/app/directives/dialog-supertitle.directive.ts","../../src/app/directives/dialog-title.directive.ts","../../src/app/components/dialog-title/dialog-title.component.ts","../../src/app/components/dialog-title/dialog-title.component.html","../../src/app/components/dialog/fs-dialog.component.ts","../../src/app/serivces/fs-dialog-router.ts","../../src/app/components/route/route.component.ts","../../src/app/fs-dialog.module.ts","../../src/app/serivces/fs-dialog.ts","../../src/app/helpers/dialog-route.ts","../../src/firestitch-dialog.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FS_DAILOG_CONFIG = new InjectionToken<any>('fs-dialog-config');\n","import { InjectionToken } from '@angular/core';\n\nexport const FS_DIALOG_INJECTOR = new InjectionToken<any>('fs-dialog-injector');\n","import {\n  Directive,\n} from '@angular/core';\n\n\n@Directive({\n    selector: '[fsDialogSubtitle]',\n    standalone: true,\n})\nexport class FsDialogSubtitleDirective {\n}\n","import {\n  Directive,\n} from '@angular/core';\n\n\n@Directive({\n    selector: '[fsDialogSupertitle]',\n    standalone: true,\n})\nexport class FsDialogSupertitleDirective {\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n\n@Directive({\n    selector: '[fsDialogTitle]',\n    standalone: true,\n})\nexport class FsDialogTitleDirective {\n\n  public static ngTemplateContextGuard(\n    directive: FsDialogTitleDirective,\n    context: unknown,\n  ): context is {\n    titlesTemplate: TemplateRef<any>,\n    backTemplate: TemplateRef<any>,\n    actionsTemplate: TemplateRef<any>,\n  } {\n    return true;\n  }\n\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  TemplateRef,\n  contentChild,\n  inject,\n} from '@angular/core';\n\nimport { MatIconAnchor } from '@angular/material/button';\nimport { MatDialogClose } from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\n\nimport {\n  FsDialogSubtitleDirective, FsDialogSupertitleDirective, FsDialogTitleDirective,\n} from '../../directives';\nimport { FsDialogComponent } from '../dialog/fs-dialog.component';\n\n\n@Component({\n  selector: 'fs-dialog-title',\n  templateUrl: './dialog-title.component.html',\n  styleUrls: ['./dialog-title.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    NgTemplateOutlet,\n    MatIconAnchor,\n    MatDialogClose,\n    MatIcon,\n  ],\n})\nexport class FsDialogTitleComponent implements OnChanges {\n\n  /** Signal-based queries so OnPush refreshes when projected content (e.g. inside `@if`) appears later. */\n  public readonly subtitleTemplate = contentChild(FsDialogSubtitleDirective, {\n    read: TemplateRef,\n    descendants: true,\n  });\n\n  public readonly supertitleTemplate = contentChild(FsDialogSupertitleDirective, {\n    read: TemplateRef,\n    descendants: true,\n  });\n\n  public readonly titleTemplate = contentChild(FsDialogTitleDirective, {\n    read: TemplateRef,\n    descendants: true,\n  });\n\n  @Input() public close = false;\n  @Input() public dockToggle = false;\n  @Input() public back = false;\n\n  private _dialog = inject(FsDialogComponent);\n\n  public get dialog(): FsDialogComponent {\n    return this._dialog;\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.close) {\n      this._dialog.closeButton = this.close;\n    }\n  }\n}\n","<div class=\"dialog-title\">\n  @if (titleTemplate()) {\n    <ng-container\n      [ngTemplateOutlet]=\"titleTemplate()!\"\n      [ngTemplateOutletContext]=\"{ \n        backTemplate,\n        titlesTemplate,\n        actionsTemplate\n       }\">\n    </ng-container>\n  } @else {\n    <ng-container *ngTemplateOutlet=\"backTemplate\"></ng-container>\n    <div class=\"title-container\">\n      <ng-container *ngTemplateOutlet=\"titlesTemplate\"></ng-container>\n    </div>\n    <ng-container *ngTemplateOutlet=\"actionsTemplate\"></ng-container>\n  }\n</div>\n<ng-template #backTemplate>\n  @if (back) {\n    <div>\n      <a\n          class=\"back\"\n          mat-icon-button\n          mat-dialog-close>\n        <mat-icon>\n          arrow_back_ios_new\n        </mat-icon>\n      </a>\n    </div>\n  }\n</ng-template>\n<ng-template #titlesTemplate>\n  <div class=\"title\">\n    @if (supertitleTemplate()) {\n      <div class=\"supertitle\">\n        <ng-container [ngTemplateOutlet]=\"supertitleTemplate()!\"></ng-container>\n      </div>\n    }\n    <div class=\"mat-mdc-dialog-title\">\n      <ng-content></ng-content>\n    </div>\n    @if (subtitleTemplate()) {\n      <div class=\"subtitle\">\n        <ng-container [ngTemplateOutlet]=\"subtitleTemplate()!\"></ng-container>\n      </div>\n    }\n  </div>\n</ng-template>\n<ng-template #actionsTemplate>\n  <div class=\"actions\">\n    @if (close) {\n      <div class=\"close\">\n        <a\n            [tabIndex]=\"-1\"\n            mat-icon-button\n            mat-dialog-close>\n          <mat-icon>\n            close\n          </mat-icon>\n        </a>\n      </div>\n    }\n  </div>\n</ng-template>","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, HostBinding, Input, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, inject } from '@angular/core';\n\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { MatDialogClose, MatDialogRef } from '@angular/material/dialog';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FS_DAILOG_CONFIG } from '../../injectors';\nimport { DialogConfig } from '../../interfaces';\nimport { FsDialogTitleComponent } from '../dialog-title';\n\n@Component({\n    selector: 'fs-dialog',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./fs-dialog.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n})\nexport class FsDialogComponent implements AfterContentInit, OnDestroy, OnInit, OnChanges {\n  private _dialogRef = inject<MatDialogRef<any>>(MatDialogRef, { optional: true, skipSelf: true });\n  private _config = inject<DialogConfig>(FS_DAILOG_CONFIG, { optional: true });\n  private _breakpointObserver = inject(BreakpointObserver);\n\n\n  @ContentChild(FsDialogTitleComponent) \n  public dialogTitle: FsDialogTitleComponent;\n\n  @ContentChildren(MatDialogClose, { descendants: true, read: ElementRef }) \n  public dialogCloseButton: QueryList<ElementRef[]>;\n  \n  @Input()\n  public mobileMode: 'full' | 'float' | 'bottom' | 'peek' = 'full';\n\n  @Input()\n  public mobileButtonPlacement: 'flow' | 'bottom';\n\n  @Input()\n  public mobileWidth = '600px';\n\n  @HostBinding('class')\n  public mobileButtonPlacementClass;\n\n  @Input()\n  public mode: 'full' | 'float' | 'bottom' | 'peek' | 'stretch';\n\n  @Input()\n  public buttonLayout: 'flow' | 'full' = 'flow';\n\n  @HostBinding('class.close-button')\n  public closeButton = false;\n\n\n  @HostBinding('class.button-layout-full')\n  public get classButtonLayoutFullWidth() {\n    return this.buttonLayout === 'full';\n  }\n\n  private _destroy$ = new Subject();\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.mode && !changes.mode.firstChange) {\n      if (changes.mode.currentValue) {\n        this.enableMode(this.mode);\n      } else {\n        this.disableMode();\n      }\n    }\n  }\n\n  public ngOnInit(): void {\n    this.mobileMode = this.mobileMode ?? (this._config?.mobileMode || 'full');\n    this.mobileButtonPlacement = this.mobileButtonPlacement ?? (this._config?.mobileButtonPlacement || 'flow');\n\n    if (this.mobileWidth) {\n      this._breakpointObserver\n        .observe([`(min-width: ${this.mobileWidth})`])\n        .pipe(\n          takeUntil(this._destroy$),\n        )\n        .subscribe((state: BreakpointState) => {\n          this.disableMode();\n\n          if (state.matches) {\n            this.enableMode(this.mode);\n          } else {\n            this.enableMode(this.mobileMode);\n          }\n        });\n    }\n  }\n\n  public enableMode(mode) {\n    this.disableMode();\n    const modeClass = `fs-dialog-mode-${mode}`;\n    this._dialogRef.addPanelClass(modeClass);\n    this.backdropEl?.classList.add(modeClass);\n    this.body.classList.add('fs-dialog-open', modeClass);\n    this.mobileButtonPlacementClass = `button-placement-${this.mobileButtonPlacement}`;\n  }\n\n  public disableMode() {\n    this.mobileButtonPlacementClass = null;\n    ['full', 'float', 'bottom', 'peek', 'stretch']\n      .forEach((mode) => {\n        const modeClass = `fs-dialog-mode-${mode}`;\n        this._dialogRef.removePanelClass(modeClass);\n        this.backdropEl?.classList.remove(modeClass);\n        this.body.classList.remove('fs-dialog-open', modeClass);\n      });\n  }\n\n  public get backdropEl() {\n    const el = document.getElementById(this._dialogRef.id)?.parentElement?.parentElement;\n\n    if(el?.classList.contains('cdk-global-overlay-wrapper')) {\n      const backdropEl = el.previousElementSibling;\n\n      if(backdropEl?.classList.contains('cdk-overlay-backdrop')) {\n        return backdropEl;\n      }\n    }\n\n    return null;\n  }\n\n  public get body() {\n    return document.body;\n  }\n\n  public addDialogCloseButtonClasses(elementRefs: any): void {\n    elementRefs.forEach((el) => {\n      el.nativeElement.classList.add('close-button');\n    });    \n  }\n\n  public ngAfterContentInit(): void {\n    this.dialogCloseButton.changes\n      .pipe(\n        takeUntil(this._destroy$),\n      )\n      .subscribe((elementRefs: ElementRef[]) => {\n        this.addDialogCloseButtonClasses(elementRefs);\n      });\n      \n    this.addDialogCloseButtonClasses(this.dialogCloseButton.toArray());\n\n    this._dialogRef.addPanelClass('fs-dialog-overlay-pane');\n    this.backdropEl?.classList.add('fs-dialog-overlay-backdrop');\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next(null);\n    this._destroy$.complete();\n    this.disableMode();\n  }\n}\n","import { inject, Injectable, Type } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\n\nimport { ComponentType } from '@angular/cdk/portal';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, map, take } from 'rxjs/operators';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FsDialogRouter {\n\n  private _activeDialogs: WeakMap<Type<any>, MatDialogRef<unknown>> = new WeakMap();\n  private _dialogOpened$ = new BehaviorSubject<void>(null);\n  private _router = inject(Router);\n  private _dialog = inject(MatDialog);\n\n  public navigate(commands: any[], extras?: NavigationExtras): Promise<boolean> {\n    return this._router.navigate(commands, extras);\n  }\n\n  public openDialog<T, D = any, R = any>(\n    component: ComponentType<T>, \n    config?: MatDialogConfig<D>,\n  ): MatDialogRef<T, R> {\n    const dialog = this._dialog\n      .open<T, D, R>(component, config);\n\n    this.registerDialog(component, dialog);\n\n    return dialog;\n  }\n\n  public dialogRef$(component: Type<any>): Observable<MatDialogRef<any>> {\n    return this._dialogOpened$\n      .pipe(\n        filter(() => {\n          return this._activeDialogs.has(component);\n        }),\n        map(() => this._activeDialogs.get(component)),\n      );\n  }\n\n  public registerDialog(component: Type<any>, ref: MatDialogRef<unknown, unknown>): void {\n    if (!this._activeDialogs.has(component)) {\n      this._activeDialogs.set(component, ref);\n\n      this._listenDialogClose(component, ref);\n\n      this._dialogOpened$.next(null);\n    }\n  }\n\n  private _listenDialogClose(component: Type<any>, ref: MatDialogRef<unknown, unknown>): void {\n    ref.afterClosed()\n      .pipe(\n        take(1),\n      )\n      .subscribe(() => {\n        this._activeDialogs.delete(component);\n      });\n\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  Component,\n  ComponentFactoryResolver,\n  inject,\n  Injector,\n  OnDestroy,\n  OnInit,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  ActivatedRoute, NavigationEnd, NavigationStart, Router,\n} from '@angular/router';\n\nimport { Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { getPathToRouteParent } from '@firestitch/core';\n\nimport { merge, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\n\nimport { IFsDialogRouteConfig } from '../../interfaces/route-data.interface';\nimport { FsDialogRouter } from '../../serivces/fs-dialog-router';\n\n\n@Component({\n  standalone: true,\n  template: '',\n})\nexport class FsDialogRouteComponent implements OnInit, OnDestroy {\n\n  private _route = inject(ActivatedRoute);\n  private _router = inject(Router);\n  private _dialogRouter = inject(FsDialogRouter);\n  private _componentFactory = inject(ComponentFactoryResolver);\n  private _viewContainerRef = inject(ViewContainerRef);\n  private _injector = inject(Injector);\n  private _dialogRef: MatDialogRef<unknown, unknown>;\n  private _hasActiveNavigation = false;\n  private _destroy$ = new Subject<void>();\n  private _dialog = inject(MatDialog);\n  private _document = inject(DOCUMENT);\n  private _overlay = inject(Overlay);\n  private _scrollStrategy: ScrollStrategy | undefined;\n\n  private _resizeObserver: ResizeObserver;\n\n  public ngOnInit(): void {\n    this._listenNavigationEvents();\n    this._listenBodyResize();\n    this.openDialog();\n  }\n\n  public ngOnDestroy(): void {\n    this._destroy$.next(null);\n    this._destroy$.complete();\n    this._dialogRef.close();\n\n    this._resizeObserver?.disconnect();\n    this._enableBodyScroll();\n    this._scrollStrategy?.disable();\n  }\n\n  public async openDialog(): Promise<void> {\n    const dialogConfig: IFsDialogRouteConfig = {\n      ...this._route.snapshot.data?.fsDialog,\n    };\n\n    if (dialogConfig?.component) {\n      this._dialogRef = dialogConfig.component instanceof Promise ?\n        (await this._openLazyDialog(dialogConfig)) :\n        this._openDialog(dialogConfig);\n\n      this._listenDialogClose();\n    }\n  }\n\n  private _listenNavigationEvents(): void {\n    this._router.events\n      .pipe(\n        filter((event) => {\n          return event instanceof NavigationStart;\n        }),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this._hasActiveNavigation = true;\n      });\n\n    this._router.events\n      .pipe(\n        filter((event) => {\n          return event instanceof NavigationEnd;\n        }),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this._hasActiveNavigation = false;\n      });\n  }\n\n  private _listenDialogClose(): void {\n    merge(\n      this._dialogRef.afterClosed(),\n    )\n      .pipe(\n        filter(() => !this._hasActiveNavigation),\n        takeUntil(this._destroy$),\n      )\n      .subscribe(() => {\n        this._navigateOutFromDialog();\n      });\n  }\n\n  // CC-T2746\n  // we need to listen to body resize event for cases\n  // when dialog opened directly by using direct link like /client/123\n  // in that case dialog & overlay will be created before page content loaded\n  // and body scroll won't be disabled, because it does not have content yet and does not go beyond the viewport\n  // so we are listening body resize event and manually enabling blocked scroll strategy\n  private _listenBodyResize(): void {\n    this._initializeScrollStrategy();\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._disableBodyScroll();\n    });\n\n    this._resizeObserver.observe(this._document.body);\n  }\n\n  private _disableBodyScroll(): void {\n    this._scrollStrategy?.enable();\n  }\n\n  private _enableBodyScroll(): void {\n    this._scrollStrategy?.disable();\n  }\n\n  private _initializeScrollStrategy(): void {\n    if (this._scrollStrategy) {\n      return;\n    }\n\n    this._scrollStrategy = this._overlay.scrollStrategies.block();\n  }\n\n  private _navigateOutFromDialog(): void {\n    const navigationPath = getPathToRouteParent(this._route);\n\n    // Do it!\n    this._router\n      .navigate([navigationPath], { relativeTo: this._route, queryParamsHandling: 'merge' });\n  }\n\n  private async _openLazyDialog(\n    dialogConfig: IFsDialogRouteConfig,\n  ): Promise<MatDialogRef<unknown, unknown>> {\n    const loadedComponent = await dialogConfig.component;\n    const componentName = Object.keys(loadedComponent)[0];\n\n    if (!componentName) {\n      throw Error('Lazy loading dialog component error! Component not found!');\n    }\n\n    const factory = this._componentFactory.resolveComponentFactory(loadedComponent[componentName]);\n    dialogConfig.component = factory.componentType;\n\n    return this._openDialog(dialogConfig);\n  }\n\n  private _openDialog(routeDialogConfig: IFsDialogRouteConfig): MatDialogRef<unknown, unknown> {\n    const dialogComponent = routeDialogConfig.component;\n    const dialogConfig = routeDialogConfig.config || {};\n\n    // We dont want to close dialog when navigation happens,\n    // because we want to have full control\n    dialogConfig.closeOnNavigation = false;\n    dialogConfig.viewContainerRef = this._viewContainerRef;\n    dialogConfig.injector = this._injector;\n\n    const dialogRef = this._dialog.open(dialogComponent, dialogConfig);\n\n    this._dialogRouter.registerDialog(dialogComponent, dialogRef);\n\n    return dialogRef;\n  }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\n\n\nimport { FsDialogComponent, FsDialogRouteComponent, FsDialogTitleComponent } from './components';\nimport {\n  FsDialogSubtitleDirective, FsDialogSupertitleDirective, FsDialogTitleDirective,\n} from './directives';\n\n\n@NgModule({\n  imports: [\n    FsDialogComponent,\n    FsDialogRouteComponent,\n    FsDialogTitleComponent,\n    FsDialogSubtitleDirective,\n    FsDialogSupertitleDirective,\n    FsDialogTitleDirective,\n  ],\n  exports: [\n    FsDialogComponent,\n    FsDialogRouteComponent,\n    FsDialogTitleComponent,\n    FsDialogSubtitleDirective,\n    FsDialogSupertitleDirective,\n    FsDialogTitleDirective,\n  ],\n})\nexport class FsDialogModule {\n  public static forRoot(): ModuleWithProviders<FsDialogModule> {\n    return {\n      ngModule: FsDialogModule,\n      providers: [\n        {\n          provide: MAT_DIALOG_DEFAULT_OPTIONS,\n          useValue: {\n            panelClass: 'fs-dialog-overlay-pane',\n            maxWidth: '95vw',\n            disableClose: false,\n            autoFocus: true,\n            hasBackdrop: true,\n          },\n        },\n      ],\n    };\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { NavigationExtras } from '@angular/router';\n\nimport { ComponentType } from '@angular/cdk/portal';\nimport { MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\n\nimport { FsDialogRouter } from './fs-dialog-router';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FsDialog {\n  private _dialogRouter = inject(FsDialogRouter);\n\n\n  public open<T, D = any, R = any>(component: ComponentType<T>, config?: MatDialogConfig<D>): MatDialogRef<T, R> {\n    return this._dialogRouter.openDialog<T, D, R>(component, config);\n  }\n\n  public navigate(commands: any[], extras?: NavigationExtras): Promise<boolean> {\n    return this._dialogRouter.navigate(commands, extras);\n  }\n\n  public dialogRef$<T, R = any>(component: ComponentType<T>): Observable<MatDialogRef<T, R> | undefined> {\n    return this._dialogRouter.dialogRef$(component);\n  }\n\n}\n","import { Route } from '@angular/router';\n\nimport { MatDialogConfig } from '@angular/material/dialog';\n\nimport { FsDialogRouteComponent } from '../components/route/route.component';\n\n\nexport function fsDialogRoute(route: Route, dialogConfig?: MatDialogConfig): Route {\n\n  const {\n    path,\n    component,\n    data: routeData,\n    ...restRoute\n  } = route;\n\n  const { data: dialogData } = dialogConfig || {};\n\n  const data = {\n    ...(routeData || {}),\n    ...(dialogData || {}),\n  };\n\n  return  {\n    path: path,\n    component: FsDialogRouteComponent,\n    ...restRoute,\n    data: {\n      ...data,\n      fsDialog: { \n        component,\n        config: {\n          data,\n          ...dialogConfig,\n        },\n      },\n    },\n  };\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}