{"version":3,"file":"acorex-components-dialog.mjs","sources":["../../../../packages/components/dialog/src/lib/dialog.component.ts","../../../../packages/components/dialog/src/lib/dialog.component.html","../../../../packages/components/dialog/src/lib/dialog.config.ts","../../../../packages/components/dialog/src/lib/dialog.service.ts","../../../../packages/components/dialog/src/lib/dialog.module.ts","../../../../packages/components/dialog/src/acorex-components-dialog.ts"],"sourcesContent":["import {\n  AXAutoFocusDirective,\n  AXClosableComponent,\n  AXComponent,\n  AXHotkeyDirective,\n  MXBaseComponent,\n} from '@acorex/cdk/common';\nimport { AXFocusTrapDirective } from '@acorex/cdk/focus-trap';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, ViewEncapsulation, input } from '@angular/core';\nimport { AXDialogButtonItem, AXDialogData } from './dialog.class';\n\n/**\n * A dialog component that provides a modal interface for user interactions.\n * @category Components\n */\n@Component({\n  selector: 'ax-dialog',\n  templateUrl: './dialog.component.html',\n  styleUrls: ['./dialog.component.css'],\n\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[attr.tabIndex]': '\"-1\"',\n  },\n  providers: [\n    {\n      provide: AXClosableComponent,\n      useExisting: AXDialogComponent,\n    },\n    {\n      provide: AXComponent,\n      useExisting: AXDialogComponent,\n    },\n  ],\n  imports: [\n    CdkDrag,\n    CdkDragHandle,\n    AXDecoratorGenericComponent,\n    AXButtonComponent,\n    AXHotkeyDirective,\n    AXAutoFocusDirective,\n    AXFocusTrapDirective,\n    AXLoadingComponent,\n    AsyncPipe,\n    AXTranslatorPipe,\n  ],\n})\nexport class AXDialogComponent extends MXBaseComponent {\n  /** Dialog configuration data */\n  data = input.required<AXDialogData>();\n\n  /** @internal Callback function to close the dialog */\n  onClose = input<() => void>();\n\n  /**\n   *  @ignore\n   */\n  protected _icon: string;\n\n  /**\n   *  @ignore\n   */\n  protected _handleButtonClick(button: AXDialogButtonItem) {\n    if (button.onClick) {\n      button.onClick({ source: button });\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  protected _hasAutoFocus(button: AXDialogButtonItem): boolean {\n    const buttons = this.data().buttons;\n    const target = buttons.find((item) => item.autofocus) ?? buttons[0];\n    return target?.text === button.text;\n  }\n\n  /**\n   * Closes the dialog.\n   *\n   * @returns void - No return value. The dialog is closed and removed from the DOM.\n   */\n  close() {\n    const closeCallback = this.onClose();\n    if (closeCallback) {\n      closeCallback();\n    }\n  }\n}\n","<div\n  class=\"ax-dialog ax-orientation-{{ data().orientation }}\"\n  tabindex=\"-1\"\n  axFocusTrap\n  [axFocusTrapArrowNavigation]=\"true\"\n  cdkDrag\n  cdkDragHandle\n  [cdkDragDisabled]=\"!data().draggable\"\n>\n  <div class=\"ax-dialog-content-wrapper\">\n    @if (data().icon !== 'none') {\n      <div class=\"ax-dialog-icon-side\">\n        <i class=\"ax-dialog-icon ax-{{ data().type }} {{ data().icon }}\"></i>\n      </div>\n    }\n    <div class=\"ax-dialog-content-side\">\n      <div class=\"ax-dialog-title\">{{ data().title | translate | async }}</div>\n      <div class=\"ax-dialog-content\">{{ data().content | translate | async }}</div>\n    </div>\n    <div class=\"ax-dialog-dismiss-icon\">\n      @if (data().closeButton) {\n        <i class=\"ax-icon ax-icon-close\"></i>\n      }\n    </div>\n  </div>\n\n  <ax-footer>\n    <ax-suffix>\n    @for (button of data().buttons; let i = $index; track i) {\n      <ax-button\n        [text]=\"button.text | translate | async\"\n        [tabindex]=\"i\"\n        [axHotkey]=\"button.hotkey\"\n        [axAutoFocus]=\"_hasAutoFocus(button)\"\n        (onClick)=\"_handleButtonClick(button)\"\n        [look]=\"button.look || 'solid'\"\n        [disabled]=\"button.disabled\"\n        [color]=\"button.color || 'default'\"\n      >\n        @if (button.loading) {\n          <ax-loading></ax-loading>\n        }\n      </ax-button>\n    }\n    </ax-suffix>\n  </ax-footer>\n</div>\n","import { AX_GLOBAL_CONFIG } from '@acorex/core/config';\nimport { InjectionToken, inject } from '@angular/core';\nimport { set } from 'lodash-es';\n\nexport interface AXDialogConfigToken {\n  confirm: { defaultAction: 'confirm' | 'cancel' };\n}\n\nexport const AX_DIALOG_CONFIG = new InjectionToken<AXDialogConfigToken>('AX_DIALOG_CONFIG', {\n  providedIn: 'root',\n  factory: () => {\n    const global = inject(AX_GLOBAL_CONFIG);\n    set(global, 'layout.dialog', AX_DIALOG_CONFIG);\n    return AXDialogDefaultConfig;\n  },\n});\n\nexport const AXDialogDefaultConfig: AXDialogConfigToken = {\n  confirm: { defaultAction: 'cancel' },\n};\n\nexport type PartialDialogConfig = Partial<AXDialogConfigToken>;\n\nexport function dialogConfig(config: PartialDialogConfig = {}): AXDialogConfigToken {\n  const result = {\n    ...AXDialogDefaultConfig,\n    ...config,\n  };\n  return result;\n}\n","import { AXStyleColorType } from '@acorex/cdk/common';\nimport { AXOverlayService } from '@acorex/cdk/overlay';\nimport { AXHtmlUtil } from '@acorex/core/utils';\nimport { Injectable, inject } from '@angular/core';\nimport { AXDialogConfig, AXDialogData, AXDialogInternalRef, AXDialogRef } from './dialog.class';\nimport { AXDialogComponent } from './dialog.component';\nimport { AXDialogConfigToken, AX_DIALOG_CONFIG } from './dialog.config';\n\n/**\n * The Button is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Injectable({providedIn:'root'})\nexport class AXDialogService {\n  private overlayService = inject(AXOverlayService);\n  private defaultConfig: AXDialogConfigToken = inject(AX_DIALOG_CONFIG);\n\n  private detectIcon(type: AXStyleColorType): string {\n    let icon: string;\n    switch (type) {\n      case 'success':\n        icon = 'ax-icon ax-icon-check';\n        break;\n      case 'danger':\n        icon = 'ax-icon ax-icon-error';\n        break;\n      case 'warning':\n        icon = 'ax-icon ax-icon-warning';\n        break;\n      default:\n        icon = 'ax-icon ax-icon-info';\n        break;\n    }\n    return icon;\n  }\n\n  /**\n   * Show an alert box with 'Okay' button.\n   *\n   * @param title - The title of the alert dialog.\n   * @param content - The content message of the alert dialog.\n   * @param type - The type/color of the alert (primary, success, warning, danger).\n   * @param orientation - The orientation of the dialog (horizontal or vertical).\n   * @param draggable - Whether the dialog can be dragged.\n   * @returns Promise<void> - Promise that resolves when the dialog is closed.\n   */\n  alert(\n    title: string,\n    content: string,\n    type: AXStyleColorType = 'primary',\n    orientation: 'horizontal' | 'vertical' = 'horizontal',\n    draggable?: boolean,\n  ): Promise<void> {\n    return new Promise((resolve) => {\n      const popup = this.open({\n        title,\n        type: type,\n        content,\n        icon: this.detectIcon(type),\n        orientation,\n        draggable,\n        buttons: [\n          {\n            name: 'confirm',\n            text: AXHtmlUtil.isRtl() ? 'باشه' : 'Okay',\n            color: type,\n            autofocus: true,\n            onClick: () => {\n              popup.close();\n              if (resolve) {\n                resolve();\n              }\n            },\n          },\n        ],\n      });\n    });\n  }\n\n  /**\n   * Show a confirm box with 'Okay' & 'Cancel' buttons.\n   *\n   * @param title - The title of the confirm dialog.\n   * @param content - The content message of the confirm dialog.\n   * @param type - The type/color of the confirm dialog (primary, success, warning, danger).\n   * @param orientation - The orientation of the dialog (horizontal or vertical).\n   * @param draggable - Whether the dialog can be dragged.\n   * @param defaultAction - The default action to focus (confirm or cancel).\n   * @returns Promise<{ result: boolean }> - Promise that resolves with the user's choice.\n   */\n  confirm(\n    title: string,\n    content: string,\n    type: AXStyleColorType = 'primary',\n    orientation: 'horizontal' | 'vertical' = 'horizontal',\n    draggable?: boolean,\n    defaultAction?: 'confirm' | 'cancel',\n  ): Promise<{ result: boolean }> {\n    return new Promise<{ result: boolean }>((resolve) => {\n      const tokenConfig = this.defaultConfig.confirm.defaultAction;\n\n      const action = defaultAction || (type === 'danger' ? 'cancel' : tokenConfig);\n\n      const popup = this.open({\n        title,\n        content,\n        type,\n        icon: this.detectIcon(type),\n        orientation,\n        draggable,\n        buttons: [\n          {\n            name: 'confirm',\n            text: AXHtmlUtil.isRtl() ? 'باشه' : 'Okay',\n            color: type,\n            autofocus: action === 'confirm',\n            onClick: () => {\n              popup.close();\n              if (resolve) {\n                resolve({ result: true });\n              }\n            },\n          },\n          {\n            name: 'cancel',\n            text: AXHtmlUtil.isRtl() ? 'انصراف' : 'Cancel',\n            color: 'default',\n            autofocus: action === 'cancel',\n            onClick: () => {\n              popup.close();\n              if (resolve) {\n                resolve({ result: false });\n              }\n            },\n            hotkey: {\n              Escape: () => {\n                popup.close();\n                if (resolve) {\n                  resolve({ result: false });\n                }\n              },\n            },\n          },\n        ],\n      });\n    });\n  }\n\n  /**\n   * Show a custom dialog box.\n   *\n   * @param options - Configuration options for the custom dialog.\n   * @returns Promise<{ name: string }> - Promise that resolves with the button name that was clicked.\n   */\n  show(options: AXDialogConfig): Promise<{ name: string }> {\n    return new Promise((resolve) => {\n      options.orientation = options.orientation || 'horizontal';\n      options.icon = options.icon ?? this.detectIcon(options.type);\n\n      const popup = this.open(options);\n\n      options.buttons?.forEach((b) => {\n        const orginalClick = b.onClick;\n        b.onClick = () => {\n          const e = { source: b, handled: false };\n          if (orginalClick) {\n            orginalClick(e);\n            if (e.handled) {\n              resolve({ name: b.name ?? b.text });\n            } else {\n              popup.close();\n              resolve({ name: b.name ?? b.text });\n            }\n          } else if (resolve) {\n            popup.close();\n            resolve({ name: b.name ?? b.text });\n          } else {\n            popup.close();\n          }\n        };\n      });\n    });\n  }\n\n  /**\n   * Show a custom dialog box.\n   *\n   * @param options - Configuration options for the custom dialog.\n   * @returns Promise<{ name: string }> - Promise that resolves with the button name that was clicked.\n   */\n  open(config: AXDialogConfig): AXDialogRef {\n    config.orientation = config.orientation || 'horizontal';\n    config.icon = config.icon ?? this.detectIcon(config.type);\n\n    const dialogData: AXDialogData = {\n      title: config.title,\n      content: config.content,\n      type: config.type,\n      buttons: config.buttons,\n      closeButton: config.closeButton ?? false,\n      orientation: config.orientation,\n      icon: config.icon,\n      draggable: config.draggable,\n    };\n\n    let internalRef: AXDialogInternalRef;\n\n    const closeDialog = () => {\n      if (internalRef) {\n        internalRef.overlayRef.dispose();\n      }\n    };\n\n    this.overlayService\n      .create<AXDialogComponent>(AXDialogComponent, {\n        inputs: {\n          data: dialogData,\n          onClose: closeDialog,\n        },\n        contextElement: config.contextElement,\n        visualContextScope: 'theme',\n        backdrop: {\n          enabled: true,\n          background: true,\n          closeOnClick: false, // disableClose: true equivalent\n        },\n        panelClass: ['ax-dialog-panel', 'animate-bounceIn', 'animate-faster'],\n      })\n      .then((overlayRef) => {\n        internalRef = {\n          overlayRef,\n          close: closeDialog,\n        };\n\n        // Apply direction if specified\n        if (config.direction || AXHtmlUtil.isRtl()) {\n          const dir = config.direction ? config.direction : AXHtmlUtil.isRtl() ? 'rtl' : 'ltr';\n          if (overlayRef.overlayElement) {\n            overlayRef.overlayElement.setAttribute('dir', dir);\n          }\n        }\n      });\n\n    return {\n      close: () => {\n        closeDialog();\n      },\n    };\n  }\n}\n","import { AXCommonModule, AXHotkeysService } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXDialogComponent } from './dialog.component';\nimport { AXDialogService } from './dialog.service';\n\nconst COMPONENT = [AXDialogComponent];\nconst MODULES = [\n  CommonModule,\n  AXCommonModule,\n  DragDropModule,\n  A11yModule,\n  AXButtonModule,\n  AXDecoratorModule,\n  AXLoadingModule,\n  AXTranslationModule,\n];\n\n@NgModule({\n  imports: [...MODULES, ...COMPONENT],\n  exports: [...COMPONENT],\n  providers: [AXDialogService, AXHotkeysService],\n})\nexport class AXDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}