UNPKG

@covalent/core

Version:

Core Teradata UI Platform for layouts, icons, custom components and themes. This should be added as a dependency for any project that wants to use layouts, icons and themes for Angular Material.

1 lines • 66.8 kB
{"version":3,"file":"covalent-core-dialogs.mjs","sources":["../../../../libs/angular/dialogs/src/dialog.component.ts","../../../../libs/angular/dialogs/src/dialog.component.html","../../../../libs/angular/dialogs/src/alert-dialog/alert-dialog.component.ts","../../../../libs/angular/dialogs/src/alert-dialog/alert-dialog.component.html","../../../../libs/angular/dialogs/src/confirm-dialog/confirm-dialog.component.ts","../../../../libs/angular/dialogs/src/confirm-dialog/confirm-dialog.component.html","../../../../libs/angular/dialogs/src/prompt-dialog/prompt-dialog.component.ts","../../../../libs/angular/dialogs/src/prompt-dialog/prompt-dialog.component.html","../../../../libs/angular/dialogs/src/status-dialog/status-dialog.component.ts","../../../../libs/angular/dialogs/src/status-dialog/status-dialog.component.html","../../../../libs/angular/dialogs/src/services/dialog.service.ts","../../../../libs/angular/dialogs/src/window-dialog/window-dialog.component.ts","../../../../libs/angular/dialogs/src/window-dialog/window-dialog.component.html","../../../../libs/angular/dialogs/src/dialogs.module.ts","../../../../libs/angular/dialogs/src/resizable-draggable-dialog/resizable-draggable-dialog.ts","../../../../libs/angular/dialogs/src/covalent-core-dialogs.ts"],"sourcesContent":["import {\n  Component,\n  Directive,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n} from '@angular/core';\n\n@Directive({ selector: '[tdDialogTitle]' })\nexport class TdDialogTitleDirective {}\n\n@Directive({ selector: '[tdDialogContent]' })\nexport class TdDialogContentDirective {}\n\n@Directive({ selector: '[tdDialogActions]' })\nexport class TdDialogActionsDirective {}\n\n@Directive({ selector: '[tdDialogStatus]' })\nexport class TdDialogStatusDirective {}\n\n@Component({\n  selector: 'td-dialog',\n  templateUrl: './dialog.component.html',\n  styleUrls: ['./dialog.component.scss'],\n})\nexport class TdDialogComponent implements AfterContentInit {\n  @ContentChildren(TdDialogTitleDirective, { descendants: true })\n  dialogTitle!: QueryList<TdDialogTitleDirective>;\n  @ContentChildren(TdDialogContentDirective, { descendants: true })\n  dialogContent!: QueryList<TdDialogContentDirective>;\n  @ContentChildren(TdDialogActionsDirective, { descendants: true })\n  dialogActions!: QueryList<TdDialogActionsDirective>;\n  @ContentChildren(TdDialogStatusDirective, { descendants: true })\n  dialogStatus!: QueryList<TdDialogStatusDirective>;\n\n  ngAfterContentInit(): void {\n    if (this.dialogTitle.length > 1) {\n      throw new Error('Duplicate td-dialog-title component at in td-dialog.');\n    }\n    if (this.dialogContent.length > 1) {\n      throw new Error('Duplicate td-dialog-content component at in td-dialog.');\n    }\n    if (this.dialogActions.length > 1) {\n      throw new Error('Duplicate td-dialog-actions component at in td-dialog.');\n    }\n    if (this.dialogStatus.length > 1) {\n      throw new Error('Duplicate td-dialog-status component at in td-dialog.');\n    }\n  }\n}\n","<div class=\"td-dialog-wrapper\">\n  <ng-content\n    *ngIf=\"dialogStatus.length > 0\"\n    select=\"[tdDialogStatus]\"\n  ></ng-content>\n  <section class=\"td-dialog\">\n    <div mat-dialog-title *ngIf=\"dialogTitle.length > 0\">\n      <ng-content select=\"[tdDialogTitle]\"></ng-content>\n    </div>\n    <mat-dialog-content\n      class=\"td-dialog-content\"\n      *ngIf=\"dialogContent.length > 0\"\n    >\n      <ng-content select=\"[tdDialogContent]\"></ng-content>\n    </mat-dialog-content>\n    <mat-dialog-actions\n      class=\"td-dialog-actions\"\n      *ngIf=\"dialogActions.length > 0\"\n    >\n      <span class=\"td-dialog-spacer\"></span>\n      <ng-content select=\"[tdDialogActions]\"></ng-content>\n    </mat-dialog-actions>\n  </section>\n</div>\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n  selector: 'td-alert-dialog',\n  templateUrl: './alert-dialog.component.html',\n  styleUrls: ['./alert-dialog.component.scss'],\n})\nexport class TdAlertDialogComponent {\n  title?: string;\n  message?: string;\n  closeButton?: string = 'CLOSE';\n\n  constructor(private _dialogRef: MatDialogRef<TdAlertDialogComponent>) {}\n\n  close(): void {\n    this._dialogRef.close();\n  }\n}\n","<td-dialog>\n  <ng-container tdDialogTitle *ngIf=\"title\">{{ title }}</ng-container>\n  <ng-container tdDialogContent>\n    <span class=\"td-dialog-message\">{{ message }}</span>\n  </ng-container>\n  <ng-container tdDialogActions>\n    <button mat-button color=\"accent\" (click)=\"close()\">\n      {{ closeButton }}\n    </button>\n  </ng-container>\n</td-dialog>\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n  selector: 'td-confirm-dialog',\n  templateUrl: './confirm-dialog.component.html',\n  styleUrls: ['./confirm-dialog.component.scss'],\n})\nexport class TdConfirmDialogComponent {\n  title?: string;\n  message?: string;\n  cancelButton = 'CANCEL';\n  acceptButton = 'ACCEPT';\n  isDestructive = false;\n\n  constructor(private _dialogRef: MatDialogRef<TdConfirmDialogComponent>) {}\n\n  cancel(): void {\n    this._dialogRef.close(false);\n  }\n\n  accept(): void {\n    this._dialogRef.close(true);\n  }\n}\n","<td-dialog>\n  <ng-container tdDialogTitle *ngIf=\"title\">{{ title }}</ng-container>\n  <ng-container tdDialogContent>\n    <span class=\"td-dialog-message\">{{ message }}</span>\n  </ng-container>\n  <ng-container tdDialogActions>\n    <button\n      mat-button\n      #closeBtn\n      (keydown.arrowright)=\"acceptBtn.focus()\"\n      (click)=\"cancel()\"\n    >\n      {{ cancelButton }}\n    </button>\n    <button\n      mat-button\n      [color]=\"isDestructive ? 'warn' : 'accent'\"\n      #acceptBtn\n      (keydown.arrowleft)=\"closeBtn.focus()\"\n      (click)=\"accept()\"\n    >\n      {{ acceptButton }}\n    </button>\n  </ng-container>\n</td-dialog>\n","import {\n  Component,\n  ViewChild,\n  ElementRef,\n  AfterViewInit,\n  NgZone,\n  OnDestroy,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\n\n@Component({\n  selector: 'td-prompt-dialog',\n  templateUrl: './prompt-dialog.component.html',\n  styleUrls: ['./prompt-dialog.component.scss'],\n})\nexport class TdPromptDialogComponent implements AfterViewInit, OnDestroy {\n  title?: string;\n  message?: string;\n  value?: string;\n  cancelButton = 'CANCEL';\n  acceptButton = 'ACCEPT';\n\n  /** The native `<input matInput />` element. */\n  @ViewChild('input', { static: true }) _input!: ElementRef<HTMLInputElement>;\n\n  @ViewChild('closeBtn', { static: true, read: ElementRef })\n  _closeBtn!: ElementRef<HTMLButtonElement>;\n\n  @ViewChild('acceptBtn', { static: true, read: ElementRef })\n  _acceptBtn!: ElementRef<HTMLButtonElement>;\n\n  private _destroy$ = new Subject<void>();\n\n  constructor(\n    private _ngZone: NgZone,\n    private _dialogRef: MatDialogRef<TdPromptDialogComponent>\n  ) {}\n\n  ngAfterViewInit(): void {\n    this._ngZone.runOutsideAngular(() => {\n      // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n      // `Promise` is a microtask and microtask are executed within the current rendering frame.\n      // Animation tasks are executed within the next rendering frame.\n      // We focus input once everything is rendered and good to go.\n      requestAnimationFrame(() => this._input.nativeElement.focus());\n\n      fromEvent(this._input.nativeElement, 'focus')\n        .pipe(takeUntil(this._destroy$))\n        .subscribe(() => {\n          // This is executed when the input is focused, selects all text.\n          this._input.nativeElement.select();\n        });\n\n      fromEvent<KeyboardEvent>(this._closeBtn.nativeElement, 'keydown')\n        .pipe(takeUntil(this._destroy$))\n        .subscribe((event) => {\n          if (event.keyCode === RIGHT_ARROW) {\n            this._acceptBtn.nativeElement.focus();\n          }\n        });\n\n      fromEvent<KeyboardEvent>(this._acceptBtn.nativeElement, 'keydown')\n        .pipe(takeUntil(this._destroy$))\n        .subscribe((event) => {\n          if (event.keyCode === LEFT_ARROW) {\n            this._closeBtn.nativeElement.focus();\n          }\n        });\n    });\n  }\n\n  ngOnDestroy(): void {\n    this._destroy$.next();\n  }\n\n  cancel(): void {\n    this._dialogRef.close();\n  }\n\n  accept(): void {\n    this._dialogRef.close(this.value);\n  }\n}\n","<td-dialog>\n  <ng-container tdDialogTitle *ngIf=\"title\">{{ title }}</ng-container>\n  <ng-container tdDialogContent>\n    <span class=\"td-dialog-message\">{{ message }}</span>\n    <form #form=\"ngForm\" novalidate>\n      <div class=\"td-dialog-input-wrapper\">\n        <mat-form-field class=\"td-dialog-input\">\n          <input\n            matInput\n            #input\n            (keydown.enter)=\"$event.preventDefault(); form.valid && accept()\"\n            [(ngModel)]=\"value\"\n            name=\"value\"\n            required\n          />\n        </mat-form-field>\n      </div>\n    </form>\n  </ng-container>\n  <ng-container tdDialogActions>\n    <button mat-button #closeBtn (click)=\"cancel()\">{{ cancelButton }}</button>\n    <button\n      mat-button\n      color=\"accent\"\n      #acceptBtn\n      [disabled]=\"!form.valid\"\n      (click)=\"accept()\"\n    >\n      {{ acceptButton }}\n    </button>\n  </ng-container>\n</td-dialog>\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\nexport type TdStatusDialogStates = 'error' | 'positive' | 'warning';\n\nexport type TdStatusDialogDetailsLabels = {\n  showDetailsLabel: string;\n  hideDetailsLabel: string;\n};\n\n@Component({\n  selector: 'td-status-dialog',\n  templateUrl: './status-dialog.component.html',\n  styleUrls: ['./status-dialog.component.scss'],\n})\nexport class TdStatusDialogComponent {\n  // Label of the close button in the footer\n  closeButton?: string = 'CLOSE';\n  // Message to be displayed in the dialog\n  message?: string;\n  // State of the status dialog\n  state?: TdStatusDialogStates = 'error';\n  // Title of the status dialog\n  title?: string;\n  // Additional details to be displayed after the dialog message\n  details?: string;\n  // Toggles the additional details section\n  showDetails? = false;\n  // Labels for the toggle details link\n  detailsLabels?: TdStatusDialogDetailsLabels = {\n    showDetailsLabel: 'Show details',\n    hideDetailsLabel: 'Hide details',\n  };\n\n  constructor(private _dialogRef: MatDialogRef<TdStatusDialogComponent>) {}\n\n  close(): void {\n    this._dialogRef.close();\n  }\n\n  getStatusIcon(): string {\n    switch (this.state) {\n      case 'positive':\n        return 'check';\n      case 'error':\n      case 'warning':\n        return this.state;\n      default:\n        return 'error';\n    }\n  }\n\n  toggleDetails(): void {\n    this.showDetails = !this.showDetails;\n  }\n}\n","<td-dialog class=\"td-status-dialog\">\n  <!-- Displays the icon and background color according to the state -->\n  <div tdDialogStatus class=\"td-status-dialog-state\" [ngClass]=\"state\">\n    <mat-icon>\n      {{ getStatusIcon() }}\n    </mat-icon>\n  </div>\n  <!-- Dialog title and the close icon -->\n  <ng-container tdDialogTitle>\n    <div class=\"td-status-dialog-title\">\n      <span *ngIf=\"title\" class=\"\">{{ title }}</span>\n      <button\n        mat-icon-button\n        class=\"td-status-dialog__icon-button\"\n        (click)=\"close()\"\n      >\n        <mat-icon>close</mat-icon>\n      </button>\n    </div>\n  </ng-container>\n  <!-- Dialog content with additonal information -->\n  <ng-container tdDialogContent>\n    <span class=\"td-dialog-message\">\n      {{ message }}\n      <div\n        class=\"td-status-dialog__toggle-details\"\n        role=\"button\"\n        tabindex=\"0\"\n        *ngIf=\"details\"\n        (click)=\"toggleDetails()\"\n        (keydown.enter)=\"toggleDetails()\"\n      >\n        {{\n          showDetails\n            ? detailsLabels?.hideDetailsLabel\n            : detailsLabels?.showDetailsLabel\n        }}\n        <mat-icon\n          [ngClass]=\"{\n            'td-status-dialog__arrow-icon': true,\n            close: !showDetails,\n            open: showDetails\n          }\"\n          >arrow_drop_down</mat-icon\n        >\n      </div>\n      <div *ngIf=\"showDetails\">{{ details }}</div>\n    </span>\n  </ng-container>\n  <ng-container tdDialogActions>\n    <button\n      mat-raised-button\n      color=\"primary\"\n      class=\"td-status-dialog___button\"\n      (click)=\"close()\"\n    >\n      {{ closeButton }}\n    </button>\n  </ng-container>\n</td-dialog>\n","import { Injectable, Inject, Renderer2, RendererFactory2 } from '@angular/core';\nimport {\n  MatDialog,\n  MatDialogRef,\n  MatDialogConfig,\n} from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { TdAlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from '../prompt-dialog/prompt-dialog.component';\nimport { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject } from 'rxjs';\nimport {\n  TdStatusDialogStates,\n  TdStatusDialogComponent,\n  TdStatusDialogDetailsLabels,\n} from '../status-dialog/status-dialog.component';\n\nexport interface IDialogConfig extends MatDialogConfig {\n  title?: string;\n  message: string;\n}\n\nexport interface IAlertConfig extends IDialogConfig {\n  closeButton?: string;\n}\n\nexport interface IConfirmConfig extends IDialogConfig {\n  acceptButton?: string;\n  cancelButton?: string;\n  isDestructive?: boolean;\n}\n\nexport interface IPromptConfig extends IConfirmConfig {\n  value?: string;\n}\n\nexport interface IStatusConfig extends IAlertConfig {\n  state?: TdStatusDialogStates;\n  details?: string;\n  detailsLabels?: TdStatusDialogDetailsLabels;\n}\n\nexport interface IDraggableConfig<T> {\n  component: ComponentType<T>;\n  config?: MatDialogConfig;\n  // CSS selectors of element(s) inside the component meant to be drag handle(s)\n  dragHandleSelectors?: string[];\n  // Class that will be added to the component signifying drag-ability\n  draggableClass?: string;\n}\n\nexport interface IDraggableRefs<T> {\n  matDialogRef: MatDialogRef<T>;\n  dragRefSubject: Subject<DragRef>;\n}\n\n@Injectable()\nexport class TdDialogService {\n  private _renderer2: Renderer2;\n\n  constructor(\n    @Inject(DOCUMENT) private _document: any,\n    private _dialogService: MatDialog,\n    private _dragDrop: DragDrop,\n    private rendererFactory: RendererFactory2\n  ) {\n    this._renderer2 = rendererFactory.createRenderer(undefined, null);\n  }\n\n  /**\n   * params:\n   * - component: ComponentType<T>\n   * - config: MatDialogConfig\n   * Wrapper function over the open() method in MatDialog.\n   * Opens a modal dialog containing the given component.\n   */\n  public open<T>(\n    component: ComponentType<T>,\n    config?: MatDialogConfig\n  ): MatDialogRef<T> {\n    return this._dialogService.open(component, config);\n  }\n\n  /**\n   * Wrapper function over the closeAll() method in MatDialog.\n   * Closes all of the currently-open dialogs.\n   */\n  public closeAll(): void {\n    this._dialogService.closeAll();\n  }\n\n  /**\n   * params:\n   * - config: IAlertConfig {\n   *     message: string;\n   *     title?: string;\n   *     viewContainerRef?: ViewContainerRef;\n   *     closeButton?: string;\n   * }\n   *\n   * Opens an alert dialog with the provided config.\n   * Returns an MatDialogRef<TdAlertDialogComponent> object.\n   */\n  public openAlert(config: IAlertConfig): MatDialogRef<TdAlertDialogComponent> {\n    const dialogConfig: MatDialogConfig = this._createConfig(config);\n    const dialogRef: MatDialogRef<TdAlertDialogComponent> =\n      this._dialogService.open(TdAlertDialogComponent, dialogConfig);\n    const alertDialogComponent: TdAlertDialogComponent =\n      dialogRef.componentInstance;\n    alertDialogComponent.title = config.title;\n    alertDialogComponent.message = config.message;\n    if (config.closeButton) {\n      alertDialogComponent.closeButton = config.closeButton;\n    }\n    return dialogRef;\n  }\n\n  /**\n   * params:\n   * - config: IConfirmConfig {\n   *     message: string;\n   *     title?: string;\n   *     viewContainerRef?: ViewContainerRef;\n   *     acceptButton?: string;\n   *     cancelButton?: string;\n   *     isDestructive?: boolean;\n   * }\n   *\n   * Opens a confirm dialog with the provided config.\n   * Returns an MatDialogRef<TdConfirmDialogComponent> object.\n   */\n  public openConfirm(\n    config: IConfirmConfig\n  ): MatDialogRef<TdConfirmDialogComponent> {\n    const dialogConfig: MatDialogConfig = this._createConfig(config);\n    const dialogRef: MatDialogRef<TdConfirmDialogComponent> =\n      this._dialogService.open(TdConfirmDialogComponent, dialogConfig);\n    const confirmDialogComponent: TdConfirmDialogComponent =\n      dialogRef.componentInstance;\n    confirmDialogComponent.title = config.title;\n    confirmDialogComponent.message = config.message;\n    if (config.acceptButton) {\n      confirmDialogComponent.acceptButton = config.acceptButton;\n    }\n    if (config.isDestructive) {\n      confirmDialogComponent.isDestructive = config.isDestructive;\n    }\n    if (config.cancelButton) {\n      confirmDialogComponent.cancelButton = config.cancelButton;\n    }\n    return dialogRef;\n  }\n\n  /**\n   * params:\n   * - config: IPromptConfig {\n   *     message: string;\n   *     title?: string;\n   *     value?: string;\n   *     viewContainerRef?: ViewContainerRef;\n   *     acceptButton?: string;\n   *     cancelButton?: string;\n   * }\n   *\n   * Opens a prompt dialog with the provided config.\n   * Returns an MatDialogRef<TdPromptDialogComponent> object.\n   */\n  public openPrompt(\n    config: IPromptConfig\n  ): MatDialogRef<TdPromptDialogComponent> {\n    const dialogConfig: MatDialogConfig = this._createConfig(config);\n    const dialogRef: MatDialogRef<TdPromptDialogComponent> =\n      this._dialogService.open(TdPromptDialogComponent, dialogConfig);\n    const promptDialogComponent: TdPromptDialogComponent =\n      dialogRef.componentInstance;\n    promptDialogComponent.title = config.title;\n    promptDialogComponent.message = config.message;\n    promptDialogComponent.value = config.value;\n    if (config.acceptButton) {\n      promptDialogComponent.acceptButton = config.acceptButton;\n    }\n    if (config.cancelButton) {\n      promptDialogComponent.cancelButton = config.cancelButton;\n    }\n    return dialogRef;\n  }\n\n  /**\n   * Opens a draggable dialog containing the given component.\n   */\n  public openDraggable<T>({\n    component,\n    config,\n    dragHandleSelectors,\n    draggableClass,\n  }: IDraggableConfig<T>): IDraggableRefs<T> {\n    const matDialogRef: MatDialogRef<T, any> = this._dialogService.open(\n      component,\n      config\n    );\n    const dragRefSubject: Subject<DragRef> = new Subject<DragRef>();\n\n    const CDK_OVERLAY_PANE_SELECTOR = '.cdk-overlay-pane';\n    const CDK_OVERLAY_CONTAINER_SELECTOR = '.cdk-overlay-container';\n\n    matDialogRef.afterOpened().subscribe(() => {\n      const dialogElement: HTMLElement = <HTMLElement>(\n        this._document.getElementById(matDialogRef.id)\n      );\n\n      if (!dialogElement) {\n        return;\n      }\n\n      const draggableElement: DragRef =\n        this._dragDrop.createDrag(dialogElement);\n\n      if (draggableClass) {\n        const childComponent = dialogElement.firstElementChild;\n        this._renderer2.addClass(childComponent, draggableClass);\n      }\n      if (dragHandleSelectors && dragHandleSelectors.length) {\n        const dragHandles: Element[] = dragHandleSelectors.reduce(\n          (acc: Element[], curr: string) => [\n            ...acc,\n            ...Array.from(dialogElement.querySelectorAll(curr)),\n          ],\n          []\n        );\n        if (dragHandles.length > 0) {\n          draggableElement.withHandles(<HTMLElement[]>dragHandles);\n        }\n      }\n      const rootElement = dialogElement.closest(CDK_OVERLAY_PANE_SELECTOR);\n      if (rootElement) {\n        draggableElement.withRootElement(<HTMLElement>rootElement);\n      }\n\n      const boundaryElement = dialogElement.closest(\n        CDK_OVERLAY_CONTAINER_SELECTOR\n      );\n      if (boundaryElement) {\n        draggableElement.withBoundaryElement(<HTMLElement>boundaryElement);\n      }\n      dragRefSubject.next(draggableElement);\n    });\n\n    return { matDialogRef, dragRefSubject };\n  }\n\n  private _createConfig(config: IDialogConfig): MatDialogConfig {\n    const dialogConfig: MatDialogConfig = new MatDialogConfig();\n    dialogConfig.width = '400px';\n    Object.assign(dialogConfig, config);\n    return dialogConfig;\n  }\n\n  /**\n   * params:\n   * - config: IStatusConfig {\n   *     closeButton?: string;\n   *     details?: string;\n   *     detailsLabels?: TdStatusDialogDetailsLabels;\n   *     message: string;\n   *     state?: 'error' | 'positive' | 'warning'\n   *     title?: string;\n   *     viewContainerRef?: ViewContainerRef;\n   * }\n   *\n   * Opens a status dialog with the provided config.\n   * Returns an MatDialogRef<TdStatusDialogComponent> object.\n   */\n  public openStatus(\n    config: IStatusConfig\n  ): MatDialogRef<TdStatusDialogComponent> {\n    config.panelClass = 'td-status-dialog';\n    config.autoFocus = false;\n    config.width = '575px';\n    config.maxWidth = '96vw';\n    const dialogConfig: MatDialogConfig = this._createConfig(config);\n    const dialogRef: MatDialogRef<TdStatusDialogComponent> =\n      this._dialogService.open(TdStatusDialogComponent, dialogConfig);\n    const statusDialogComponent: TdStatusDialogComponent =\n      dialogRef.componentInstance;\n    statusDialogComponent.title = config.title;\n    statusDialogComponent.message = config.message;\n    statusDialogComponent.state = config.state;\n    statusDialogComponent.details = config.details;\n    if (config.detailsLabels) {\n      statusDialogComponent.detailsLabels = config.detailsLabels;\n    }\n    if (config.closeButton) {\n      statusDialogComponent.closeButton = config.closeButton;\n    }\n    return dialogRef;\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\n@Component({\n  selector: 'td-window-dialog',\n  templateUrl: './window-dialog.component.html',\n  styleUrls: ['./window-dialog.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdWindowDialogComponent {\n  @Input() toolbarColor?: ThemePalette;\n  @Input() docked? = false;\n\n  @Input() title?: string;\n  @Input() toggleDockedStateLabel?: string;\n  @Input() closeLabel?: string;\n\n  @Output() dockToggled: EventEmitter<boolean> = new EventEmitter();\n  @Output() closed: EventEmitter<void> = new EventEmitter();\n\n  toolbarHeight = 56;\n\n  toggleDockedState(): void {\n    this.dockToggled.emit(this.docked);\n  }\n}\n","<mat-toolbar\n  [color]=\"toolbarColor\"\n  class=\"td-window-dialog-toolbar\"\n  [style.min-height.px]=\"toolbarHeight\"\n  [style.cursor]=\"docked ? 'inherit' : 'move'\"\n>\n  <mat-toolbar-row [style.height.px]=\"toolbarHeight\">\n    <div layout=\"row\" layout-align=\"start center\" flex>\n      <span class=\"mat-title td-window-dialog-title truncate\" flex>\n        {{ title }}\n      </span>\n\n      <button\n        mat-icon-button\n        [matTooltip]=\"toggleDockedStateLabel ?? ''\"\n        (click)=\"toggleDockedState()\"\n      >\n        <mat-icon [attr.aria-label]=\"toggleDockedStateLabel\"\n          >dock_to_right</mat-icon\n        >\n      </button>\n\n      <button\n        mat-icon-button\n        [matTooltip]=\"closeLabel ?? ''\"\n        (click)=\"closed.emit()\"\n        class=\"td-window-dialog-close\"\n        [attr.data-test]=\"'close-button'\"\n      >\n        <mat-icon [attr.aria-label]=\"closeLabel\">close</mat-icon>\n      </button>\n    </div>\n  </mat-toolbar-row>\n</mat-toolbar>\n<ng-content></ng-content>\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport {\n  TdDialogComponent,\n  TdDialogTitleDirective,\n  TdDialogActionsDirective,\n  TdDialogContentDirective,\n  TdDialogStatusDirective,\n} from './dialog.component';\nimport { TdAlertDialogComponent } from './alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from './prompt-dialog/prompt-dialog.component';\nimport { TdStatusDialogComponent } from './status-dialog/status-dialog.component';\nimport { TdDialogService } from './services/dialog.service';\nimport { TdWindowDialogComponent } from './window-dialog/window-dialog.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\nconst TD_DIALOGS: Type<any>[] = [\n  TdAlertDialogComponent,\n  TdConfirmDialogComponent,\n  TdPromptDialogComponent,\n  TdDialogComponent,\n  TdDialogStatusDirective,\n  TdDialogTitleDirective,\n  TdDialogActionsDirective,\n  TdDialogContentDirective,\n  TdWindowDialogComponent,\n  TdAlertDialogComponent,\n  TdConfirmDialogComponent,\n  TdPromptDialogComponent,\n  TdStatusDialogComponent,\n];\n\n@NgModule({\n  imports: [\n    FormsModule,\n    CommonModule,\n    MatDialogModule,\n    MatInputModule,\n    MatButtonModule,\n    MatToolbarModule,\n    MatTooltipModule,\n    MatIconModule,\n  ],\n  declarations: [...TD_DIALOGS],\n  exports: [...TD_DIALOGS],\n  providers: [TdDialogService],\n})\nexport class CovalentDialogsModule {}\n","import { Renderer2 } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { DragRef } from '@angular/cdk/drag-drop';\nimport { merge, Subscription, fromEvent } from 'rxjs';\nimport { Point } from '@angular/cdk/drag-drop';\n\nenum corners {\n  topRight = 'topRight',\n  bottomRight = 'bottomRight',\n  bottomLeft = 'bottomLeft',\n  topLeft = 'topLeft',\n}\nenum cursors {\n  nesw = 'nesw-resize',\n  nwse = 'nwse-resize',\n}\nenum verticalAlignment {\n  top = 'top',\n  bottom = 'bottom',\n}\nenum horizontalAlignment {\n  right = 'right',\n  left = 'left',\n}\n\nconst cornerWidth = '16px';\nconst offset = '0px';\nconst minWidth = 200;\nconst minHeight = 200;\n\nfunction getPixels(sizeString: string): number {\n  return parseFloat((sizeString || '').replace('px', ''));\n}\n\nfunction clamp(min: number, num: number, max: number): number {\n  return Math.min(Math.max(num, min), max);\n}\n\nexport class ResizableDraggableDialog {\n  cornerElements: HTMLElement[] = [];\n  pointerDownSubs: Subscription[] = [];\n\n  constructor(\n    private _document: any,\n    private _renderer2: Renderer2,\n    private _dialogRef: MatDialogRef<any>,\n    private _dragRef: DragRef\n  ) {\n    this._initialPositionReset();\n    this._attachCorners();\n  }\n\n  public attach(): void {\n    this.detach();\n    this._attachCorners();\n  }\n\n  public detach(): void {\n    this.pointerDownSubs.forEach((sub: Subscription) => sub.unsubscribe());\n    this.pointerDownSubs = [];\n    this.cornerElements.forEach((elem: HTMLElement) =>\n      this._renderer2.removeChild(this._getDialogWrapper(), elem)\n    );\n    this.cornerElements = [];\n  }\n\n  private _getDialogWrapper(): HTMLElement | null {\n    return (\n      <HTMLElement>this._document.getElementById(this._dialogRef.id) || {}\n    ).parentElement;\n  }\n\n  private _getViewportDimensions(): ClientRect | undefined {\n    return this._getDialogWrapper()?.parentElement?.getBoundingClientRect();\n  }\n\n  private _getDialogWrapperDimensions(): { width: number; height: number } {\n    const wrapper = this._getDialogWrapper();\n    if (!wrapper) {\n      return { width: 0, height: 0 };\n    }\n    const dimensions: CSSStyleDeclaration = getComputedStyle(wrapper);\n    return {\n      width: getPixels(dimensions.width),\n      height: getPixels(dimensions.height),\n    };\n  }\n\n  private _initialPositionReset(): void {\n    const viewportWidth = this._getViewportDimensions()?.right ?? 0;\n    const viewportHeight = this._getViewportDimensions()?.bottom ?? 0;\n    const { width, height } = this._getDialogWrapperDimensions();\n    const wrapperStyle = this._getDialogWrapper()?.style;\n    const originalDialogRight = wrapperStyle?.marginRight;\n    const originalDialogLeft = wrapperStyle?.marginLeft;\n    const originalDialogBottom = wrapperStyle?.marginBottom;\n    const originalDialogTop = wrapperStyle?.marginTop;\n    let x: number;\n    if (originalDialogLeft) {\n      x = getPixels(originalDialogLeft);\n    } else if (originalDialogRight) {\n      x = viewportWidth - getPixels(originalDialogRight) - width;\n    } else {\n      x = (viewportWidth - width) / 2;\n    }\n    let y: number;\n    if (originalDialogTop) {\n      y = getPixels(originalDialogTop);\n    } else if (originalDialogBottom) {\n      y = viewportHeight - getPixels(originalDialogBottom) - height;\n    } else {\n      y = (viewportHeight - height) / 2;\n    }\n    // use drag ref's mechanisms for positioning instead of the dialog's\n    this._dialogRef.updatePosition({\n      top: '0px',\n      right: '0px',\n      bottom: '0px',\n      left: '0px',\n    });\n    this._dragRef.setFreeDragPosition({ x, y });\n  }\n\n  private _attachCorners(): void {\n    Object.values(corners).forEach((corner: corners) => {\n      const element: HTMLElement = this._renderer2.createElement('div');\n      this.cornerElements = [...this.cornerElements, element];\n      this._renderer2.setStyle(element, 'position', 'absolute');\n      this._renderer2.setStyle(element, 'width', cornerWidth);\n      this._renderer2.setStyle(element, 'height', cornerWidth);\n      this._renderer2.setStyle(element, 'z-index', 1);\n      this._renderer2.appendChild(this._getDialogWrapper(), element);\n\n      let cursor: cursors;\n      let topBottom: verticalAlignment;\n      let rightLeft: horizontalAlignment;\n\n      if (corner === corners.topRight) {\n        cursor = cursors.nesw;\n        topBottom = verticalAlignment.top;\n        rightLeft = horizontalAlignment.right;\n      } else if (corner === corners.bottomRight) {\n        cursor = cursors.nwse;\n        topBottom = verticalAlignment.bottom;\n        rightLeft = horizontalAlignment.right;\n\n        const icon: HTMLElement = this._renderer2.createElement('i');\n        this._renderer2.addClass(icon, 'material-symbols-outlined');\n        this._renderer2.appendChild(\n          icon,\n          this._renderer2.createText('filter_list')\n        );\n        this._renderer2.appendChild(element, icon);\n        this._renderer2.setStyle(\n          icon,\n          'transform',\n          `rotate(${315}deg) translate(0px, ${offset})`\n        );\n        this._renderer2.setStyle(icon, 'font-size', cornerWidth);\n        this._renderer2.setStyle(icon, 'z-index', 1);\n      } else if (corner === corners.bottomLeft) {\n        cursor = cursors.nesw;\n        topBottom = verticalAlignment.bottom;\n        rightLeft = horizontalAlignment.left;\n      } else {\n        cursor = cursors.nwse;\n        topBottom = verticalAlignment.top;\n        rightLeft = horizontalAlignment.left;\n      }\n      this._renderer2.setStyle(element, topBottom, offset);\n      this._renderer2.setStyle(element, rightLeft, offset);\n      this._renderer2.setStyle(element, 'cursor', cursor);\n\n      const pointerDownSub: Subscription = fromEvent<PointerEvent>(\n        element,\n        'pointerdown'\n      ).subscribe((event: PointerEvent) => {\n        this._handleMouseDown(event, corner);\n      });\n      this.pointerDownSubs = [...this.pointerDownSubs, pointerDownSub];\n    });\n  }\n\n  private _handleMouseDown(event: PointerEvent, corner: corners): void {\n    this._renderer2.setStyle(\n      <HTMLElement>this._document.body,\n      'user-select',\n      'none'\n    );\n    const { width: originalWidth, height: originalHeight } =\n      this._getDialogWrapperDimensions();\n    const originalMouseX: number = event.pageX;\n    const originalMouseY: number = event.pageY;\n    const { x: currentTransformX, y: currentTransformY }: Point =\n      this._dragRef.getFreeDragPosition();\n    const wrapper = this._getDialogWrapper()?.getBoundingClientRect();\n    const distanceFromBottom = wrapper?.bottom ?? 0;\n    const distanceFromRight = wrapper?.right ?? 0;\n    const viewportWidth = this._getViewportDimensions()?.right ?? 0;\n    const viewportHeight = this._getViewportDimensions()?.bottom ?? 0;\n\n    const mouseMoveSub: Subscription = fromEvent<PointerEvent>(\n      window,\n      'pointermove'\n    ).subscribe((e: PointerEvent) => {\n      e.preventDefault(); // prevent highlighting of text when dragging\n\n      const yDelta: number = clamp(0, e.pageY, viewportHeight) - originalMouseY;\n      const xDelta: number = clamp(0, e.pageX, viewportWidth) - originalMouseX;\n      let newHeight: number;\n      let newWidth: number;\n      let newTransformY = 0;\n      let newTransformX = 0;\n\n      // top right\n      if (corner === corners.topRight) {\n        newHeight = clamp(minHeight, originalHeight - yDelta, viewportHeight);\n        newWidth = clamp(minWidth, originalWidth + xDelta, viewportWidth);\n        newTransformY = clamp(\n          0,\n          currentTransformY + yDelta,\n          distanceFromBottom - newHeight\n        );\n        newTransformX = currentTransformX;\n      }\n      // bottom right\n      else if (corner === corners.bottomRight) {\n        newHeight = clamp(minHeight, originalHeight + yDelta, viewportHeight);\n        newWidth = clamp(minWidth, originalWidth + xDelta, viewportWidth);\n        newTransformY = currentTransformY;\n        newTransformX = currentTransformX;\n      }\n      // bottom left\n      else if (corner === corners.bottomLeft) {\n        newHeight = clamp(minHeight, originalHeight + yDelta, viewportHeight);\n        newWidth = clamp(minWidth, originalWidth - xDelta, viewportWidth);\n        newTransformY = currentTransformY;\n        newTransformX = clamp(\n          0,\n          currentTransformX + xDelta,\n          distanceFromRight - newWidth\n        );\n      }\n      // top left\n      else {\n        newHeight = clamp(minHeight, originalHeight - yDelta, viewportHeight);\n        newWidth = clamp(minWidth, originalWidth - xDelta, viewportWidth);\n\n        newTransformX = clamp(\n          0,\n          currentTransformX + xDelta,\n          distanceFromRight - newWidth\n        );\n        newTransformY = clamp(\n          0,\n          currentTransformY + yDelta,\n          distanceFromBottom - newHeight\n        );\n      }\n      this._dialogRef.updateSize(`${newWidth}px`, `${newHeight}px`);\n      this._dragRef.setFreeDragPosition({\n        x: newTransformX,\n        y: newTransformY,\n      });\n    });\n\n    const mouseUpSub: Subscription = merge(\n      fromEvent(window, 'pointerup'),\n      fromEvent(window, 'pointercancel')\n    ).subscribe(() => {\n      this._renderer2.removeStyle(\n        <HTMLElement>this._document.body,\n        'user-select'\n      );\n      mouseMoveSub.unsubscribe();\n      mouseUpSub.unsubscribe();\n    });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i4.TdDialogComponent","i4.TdDialogTitleDirective","i4.TdDialogActionsDirective","i4.TdDialogContentDirective","i3","i6","i7.TdDialogComponent","i7.TdDialogTitleDirective","i7.TdDialogActionsDirective","i7.TdDialogContentDirective","i4","i5.TdDialogComponent","i5.TdDialogStatusDirective","i5.TdDialogTitleDirective","i5.TdDialogActionsDirective","i5.TdDialogContentDirective"],"mappings":"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"}