{"version":3,"file":"fundamental-ngx-core-dialog.mjs","sources":["../../../../libs/core/dialog/tokens.ts","../../../../libs/core/dialog/base/dialog-config-base.class.ts","../../../../libs/core/dialog/utils/dialog-config.class.ts","../../../../libs/core/dialog/base/dialog-ref-base.class.ts","../../../../libs/core/dialog/utils/dialog-ref.class.ts","../../../../libs/core/dialog/dialog-body/dialog-body.component.ts","../../../../libs/core/dialog/dialog-body/dialog-body.component.html","../../../../libs/core/dialog/dialog-close-button/dialog-close-button.component.ts","../../../../libs/core/dialog/base/dialog-footer-base.class.ts","../../../../libs/core/dialog/dialog-footer/dialog-footer.component.ts","../../../../libs/core/dialog/dialog-footer/dialog-footer.component.html","../../../../libs/core/dialog/base/dialog-header-base.class.ts","../../../../libs/core/dialog/dialog-header/dialog-header.component.ts","../../../../libs/core/dialog/dialog-header/dialog-header.component.html","../../../../libs/core/dialog/base/dialog-base.service.ts","../../../../libs/core/dialog/dialog-full-screen-toggler-button/dialog-full-screen-toggler-button.component.ts","../../../../libs/core/dialog/utils/dialog-width-to-size.ts","../../../../libs/core/dialog/base/dialog-base.class.ts","../../../../libs/core/dialog/directives/dialog-title.directive.ts","../../../../libs/core/dialog/dialog.component.ts","../../../../libs/core/dialog/dialog.component.html","../../../../libs/core/dialog/dialog-default/dialog-default.component.ts","../../../../libs/core/dialog/dialog-default/dialog-default.component.html","../../../../libs/core/dialog/dialog-container/dialog-container.component.ts","../../../../libs/core/dialog/dialog-service/dialog.service.ts","../../../../libs/core/dialog/directives/dialog-template.directive.ts","../../../../libs/core/dialog/provide-dialog-service.ts","../../../../libs/core/dialog/dialog.module.ts","../../../../libs/core/dialog/base/dialog-content-base.class.ts","../../../../libs/core/dialog/utils/dialog-default-content.class.ts","../../../../libs/core/dialog/utils/dialog-position.class.ts","../../../../libs/core/dialog/utils/dialog-overlay.container.ts","../../../../libs/core/dialog/fundamental-ngx-core-dialog.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_DIALOG_BODY_COMPONENT = new InjectionToken('FdDialogBodyComponent');\n\nexport const FD_DIALOG_FOCUS_TRAP_ERROR = new InjectionToken<boolean>('FdDialogFocusTrapError');\n","import { DynamicComponentConfig } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityMode } from '@fundamental-ngx/core/content-density';\nimport { DialogPosition } from '../utils/dialog-position.class';\n\n/** Dimension value that can be a numeric pixel value or string with units */\ntype DimensionValue = string | number;\n\nexport class DialogConfigBase<T> implements DynamicComponentConfig {\n    /**\n     * Id for the dialog component.\n     */\n    id?: string;\n\n    /**\n     * Width of the dialog.\n     * Accepts numeric values (interpreted as pixels) or string values with units.\n     * @example '500px', 500, '50%', '50vw'\n     */\n    width?: DimensionValue;\n\n    /**\n     * Height of the dialog.\n     * Accepts numeric values (interpreted as pixels) or string values with units.\n     * @example '600px', 600, '80vh'\n     */\n    height?: DimensionValue;\n\n    /**\n     * Minimum width of the dialog.\n     * Accepts numeric values (interpreted as pixels) or string values with units.\n     * @example '400px', 400, '30%'\n     */\n    minWidth?: DimensionValue;\n\n    /**\n     * Minimum height of the dialog.\n     * Accepts numeric values (interpreted as pixels) or string values with units.\n     * @example '300px', 300, '40vh'\n     */\n    minHeight?: DimensionValue;\n\n    /**\n     * Maximum width of the dialog.\n     * Accepts numeric values (interpreted as pixels) or string values with units.\n     * @example '1200px', 1200, '90vw'\n     */\n    maxWidth?: DimensionValue;\n\n    /**\n     * Maximum height of the dialog.\n     * Accepts numeric values (interpreted as pixels) or string values with units.\n     * @example '800px', 800, '95vh'\n     */\n    maxHeight?: DimensionValue;\n\n    /**\n     * Position of the dialog within the viewport.\n     * Allows precise placement using top, bottom, left, and right coordinates.\n     */\n    position?: DialogPosition;\n\n    /**\n     * Aria Modal for the dialog component element.\n     * @default false\n     */\n    ariaModal?: boolean = false;\n\n    /**\n     * Aria label for the dialog component element.\n     * Provides an accessible name when no visible title is present.\n     */\n    ariaLabel?: string | undefined | null;\n\n    /**\n     * Id of the element that labels the dialog.\n     * References an element (typically a heading) that serves as the dialog's title.\n     */\n    ariaLabelledBy?: string | undefined | null;\n\n    /**\n     * Id of the element that describes the dialog.\n     * References an element that provides additional context about the dialog.\n     */\n    ariaDescribedBy?: string | undefined | null;\n\n    /**\n     * Whether the dialog should have a backdrop (overlay).\n     * The backdrop appears behind the dialog and typically dims the background content.\n     * @default true\n     */\n    hasBackdrop?: boolean = true;\n\n    /**\n     * Whether clicking on the backdrop should close the dialog.\n     * Only works if hasBackdrop is true.\n     * @default false\n     */\n    backdropClickCloseable?: boolean = false;\n\n    /**\n     * Global classes to apply to the backdrop element.\n     * Useful for custom backdrop styling or animations.\n     * @example 'custom-backdrop dark-backdrop'\n     */\n    backdropClass?: string;\n\n    /**\n     * Classes to apply to the `fd-dialog-container` element.\n     * The container wraps the entire dialog structure.\n     * @example 'custom-container compact-dialog'\n     */\n    containerClass?: string;\n\n    /**\n     * Global classes to apply to the dialog panel element.\n     * The panel is the main dialog content area.\n     * @example 'custom-panel elevated-dialog'\n     */\n    dialogPanelClass?: string;\n\n    /**\n     * Whether the escape key should close the dialog.\n     * When true, pressing ESC will dismiss the dialog.\n     * @default true\n     */\n    escKeyCloseable?: boolean = true;\n\n    /**\n     * Whether the dialog should be focus trapped.\n     * When true, keyboard focus is constrained within the dialog for accessibility.\n     * Users cannot tab to elements outside the dialog while it's open.\n     * @default true\n     */\n    focusTrapped?: boolean = true;\n\n    /**\n     * The container that the dialog is appended to.\n     * Can be a specific HTMLElement or 'body' for document body.\n     * @default 'body'\n     */\n    container?: HTMLElement | 'body' = 'body';\n\n    /**\n     * Data to pass along to the content through the DialogRef.\n     * This data is accessible in the dialog component via the DialogRef.\n     */\n    data?: T;\n\n    /**\n     * Whether the dialog should be displayed in mobile mode.\n     * Mobile mode adapts the dialog layout for smaller screens.\n     */\n    mobile?: boolean;\n\n    /**\n     * Whether the dialog in mobile mode should have outer space.\n     * Adds margin around the dialog in mobile view.\n     */\n    mobileOuterSpacing?: boolean;\n\n    /**\n     * Whether the dialog should have vertical padding (top and bottom).\n     * @default true\n     */\n    verticalPadding?: boolean = true;\n\n    /**\n     * Whether the dialog should have horizontal padding (left and right).\n     * @default true\n     */\n    horizontalPadding?: boolean = true;\n\n    /**\n     * Whether to completely disable all dialog body paddings.\n     * When true, overrides verticalPadding and horizontalPadding settings.\n     * @default false\n     */\n    disablePaddings?: boolean = false;\n\n    /**\n     * Whether the dialog is a Settings dialog.\n     * Applies specific styling appropriate for settings/configuration dialogs.\n     */\n    settings?: boolean;\n\n    /**\n     * Minimum height for the dialog body.\n     * Workaround for older browsers where `flex-grow: 1` on dialog body doesn't work\n     * when 'min-height' is set on the dialog container.\n     * @example '400px', '50vh'\n     */\n    bodyMinHeight?: string;\n\n    /**\n     * Whether the dialog should have responsive horizontal padding that changes with dialog width.\n     * Padding classes are applied based on dialog width breakpoints:\n     * - max-width: 599px → .fd-dialog__content--s\n     * - min-width: 600px and max-width: 1023px → .fd-dialog__content--m\n     * - min-width: 1024px and max-width: 1439px → .fd-dialog__content--l\n     * - min-width: 1440px → .fd-dialog__content--xl\n     * @default false\n     */\n    responsivePadding?: boolean = false;\n\n    /**\n     * Whether to close the dialog when Angular router navigation starts.\n     * Useful to automatically clean up dialogs when user navigates away.\n     * @default true\n     */\n    closeOnNavigation?: boolean = true;\n\n    /**\n     * Content density mode for the dialog.\n     * Controls spacing and sizing of dialog elements.\n     * @example 'compact', 'cozy', 'comfortable'\n     */\n    contentDensity?: ContentDensityMode;\n}\n","/**\n * Configuration for opening a dialog with the DialogService.\n */\nimport { Injectable, InjectionToken } from '@angular/core';\nimport { DialogConfigBase } from '../base/dialog-config-base.class';\n\nexport const DIALOG_DEFAULT_CONFIG = new InjectionToken<DialogConfig>('Default DialogConfig');\n\nexport type ExtendedDialogConfig<TAdditionalProperties extends Record<string, any> = Record<string, any>> =\n    DialogConfig & TAdditionalProperties;\n\n@Injectable()\nexport class DialogConfig<T = any> extends DialogConfigBase<T> {\n    /** Whether the dialog should be draggable. */\n    draggable?: boolean;\n\n    /** Whether the dialog should be resizable. */\n    resizable?: boolean;\n}\n","import { Signal, computed, signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Enumeration of reasons why a dialog was dismissed.\n * Used to identify the cause of dialog closure without explicit user action.\n */\nexport enum FD_DIALOG_DISMISS_REASON {\n    /** Dialog dismissed by pressing the Escape key */\n    ESCAPE = 'escape',\n    /** Dialog dismissed by clicking on the backdrop/overlay */\n    BACKDROP = 'backdrop',\n    /** Dialog dismissed due to router navigation */\n    NAVIGATION_CHANGE = 'navigation change',\n    /** Dialog dismissed because the service was destroyed */\n    SERVICE_DESTROYED = 'service destroyed'\n}\n\n/**\n * Represents the current lifecycle status of a dialog.\n * - `pending`: Dialog created but not yet loaded/initialized\n * - `loaded`: Dialog view has been loaded and initialized\n * - `closed`: Dialog closed normally with a result\n * - `dismissed`: Dialog dismissed without a result (via ESC, backdrop click, etc.)\n */\nexport type DialogStatus = 'pending' | 'loaded' | 'closed' | 'dismissed';\n\n/**\n * Result object returned when a dialog is closed or dismissed.\n * Contains the final status and any associated data or reason.\n * @template P - The type of result value returned when dialog is closed\n */\nexport interface DialogCloseResult<P> {\n    /** Whether the dialog was closed normally or dismissed */\n    status: 'closed' | 'dismissed';\n    /** Optional result value when dialog was closed normally */\n    value?: P;\n    /** Optional reason when dialog was dismissed */\n    reason?: FD_DIALOG_DISMISS_REASON | any;\n}\nexport class DialogRefBase<T, P = any> {\n    /**\n     * Data passed from the calling component to the dialog content.\n     * Accessible within the dialog component via the DialogRef instance.\n     */\n    public data: T;\n\n    /**\n     * Observable that emits when the dialog is closed.\n     * Emits the result value on normal close, or errors with the dismiss reason.\n     * @deprecated Use signal-based API instead: `status()`, `closeResult()`, or `isOpen()`\n     */\n    public afterClosed: Observable<P | undefined>;\n\n    /**\n     * Observable that emits when the dialog view is initialized and loaded.\n     * @deprecated Use signal-based API instead: `isLoaded()`\n     */\n    public afterLoaded: Observable<boolean>;\n\n    /**\n     * Readonly signal containing the current lifecycle status of the dialog.\n     * Possible values: 'pending', 'loaded', 'closed', 'dismissed'\n     */\n    readonly status: Signal<DialogStatus>;\n\n    /**\n     * Readonly signal containing the result of dialog closure.\n     * Returns null while dialog is open, contains result object after close/dismiss.\n     */\n    readonly closeResult: Signal<DialogCloseResult<P> | null>;\n\n    /**\n     * Computed signal indicating whether the dialog has been loaded and initialized.\n     * Returns true once the dialog view has finished loading.\n     */\n    readonly isLoaded = computed(() => this.status() !== 'pending');\n\n    /**\n     * Computed signal indicating whether the dialog has been closed or dismissed.\n     * Returns true if status is 'closed' or 'dismissed'.\n     */\n    readonly isClosed = computed(() => {\n        const status = this.status();\n        return status === 'closed' || status === 'dismissed';\n    });\n\n    /**\n     * Computed signal indicating whether the dialog is currently open and active.\n     * Returns true if dialog is loaded but not yet closed/dismissed.\n     */\n    readonly isOpen = computed(() => this.isLoaded() && !this.isClosed());\n\n    /**\n     * @hidden\n     * Subject that signals the end of dialog lifecycle.\n     * Completes when dialog is closed or dismissed.\n     * Used by dialog container components to track lifecycle.\n     */\n    public _endClose$ = new Subject<void>();\n\n    /**\n     * @hidden\n     * Internal subject for backward-compatible afterClosed observable.\n     */\n    protected readonly afterClosedSubject = new Subject<P | undefined>();\n\n    /**\n     * @hidden\n     * Internal subject for backward-compatible afterLoaded observable.\n     */\n    protected readonly afterLoadedSubject = new Subject<boolean>();\n\n    /** @hidden Internal signal tracking dialog lifecycle status */\n    private readonly _statusSignal = signal<DialogStatus>('pending');\n\n    /** @hidden Internal signal storing the result of dialog closure */\n    private readonly _closeResultSignal = signal<DialogCloseResult<P> | null>(null);\n\n    /** @hidden */\n    constructor() {\n        // Initialize readonly signals from private signals\n        this.status = this._statusSignal.asReadonly();\n        this.closeResult = this._closeResultSignal.asReadonly();\n\n        // Initialize observables from protected subjects\n        this.afterClosed = this.afterClosedSubject.asObservable();\n        this.afterLoaded = this.afterLoadedSubject.asObservable();\n    }\n\n    /**\n     * Closes the dialog normally and returns a result value.\n     * Updates signal state and emits to observables for backward compatibility.\n     * @param result - Optional result value to return to the caller\n     */\n    public close(result?: P): void {\n        // Update signal state\n        this._statusSignal.set('closed');\n        this._closeResultSignal.set({\n            status: 'closed',\n            value: result\n        });\n\n        // Maintain backward compatibility with RxJS API\n        this._endClose$.next();\n        this._endClose$.complete();\n        this.afterClosedSubject.next(result);\n        this.afterClosedSubject.complete();\n    }\n\n    /**\n     * Dismisses the dialog without a result, typically due to user cancellation.\n     * Updates signal state and emits error to observables for backward compatibility.\n     * @param reason - Optional reason for dismissal (ESC key, backdrop click, etc.)\n     */\n    public dismiss(reason?: FD_DIALOG_DISMISS_REASON | any): void {\n        // Update signal state\n        this._statusSignal.set('dismissed');\n        this._closeResultSignal.set({\n            status: 'dismissed',\n            reason\n        });\n\n        // Maintain backward compatibility with RxJS API\n        this._endClose$.next();\n        this._endClose$.complete();\n        this.afterClosedSubject.error(reason);\n    }\n\n    /**\n     * Marks the dialog as loaded and initialized.\n     * Called internally after the dialog view has been created and rendered.\n     * Updates signal state and emits to observables for backward compatibility.\n     * @internal\n     */\n    public loaded(): void {\n        // Update signal state\n        this._statusSignal.set('loaded');\n\n        // Maintain backward compatibility with RxJS API\n        this.afterLoadedSubject.next(true);\n    }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { Injectable, TemplateRef, Type } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DialogRefBase } from '../base/dialog-ref-base.class';\n\nexport interface DialogRefLoadingConfiguration {\n    isLoading: boolean;\n    loadingLabel?: string;\n    loadingContent?: string | TemplateRef<any> | Type<any>;\n}\n\n/**\n * Reference to a dialog component\n * It can be injected into the content component through the constructor.\n * For a template, it is declared as part of the implicit context, see examples.\n */\n@Injectable()\nexport class DialogRef<T = any, P = any> extends DialogRefBase<T, P> implements DialogRefLoadingConfiguration {\n    /** @hidden */\n    private readonly _onHide = new BehaviorSubject<boolean>(false);\n\n    /** @hidden */\n    private readonly _onLoading = new BehaviorSubject<boolean>(false);\n\n    /** @hidden */\n    private readonly _fullScreen = new BehaviorSubject<boolean>(false);\n\n    /** Observable that is triggered whenever the dialog should be visually hidden or visible.*/\n    onHide: Observable<boolean> = this._onHide.asObservable();\n\n    /** Observable that is triggered whenever the dialog should be displayed in loading state.*/\n    onLoading: Observable<boolean> = this._onLoading.asObservable();\n\n    /** Observable that is triggered whenever the full-screen state being changed. */\n    fullScreen = this._fullScreen.asObservable();\n\n    /** Value used to determine if dialog window should be hidden or visible. */\n    isLoading: boolean;\n\n    /** Text, that is rendered in loading state */\n    loadingLabel?: string;\n\n    /** Content, that is rendered in loading state before busy indicator */\n    loadingContent?: DialogRefLoadingConfiguration['loadingContent'];\n\n    /**\n     * Visually hides the dialog.\n     * @param isHidden Value used to determine if dialog window should be hidden or visible.\n     */\n    hide(isHidden: boolean): void {\n        this._onHide.next(isHidden);\n    }\n\n    /**\n     * Displays the dialog in loading state.\n     * @param loadingData Value used to determine if dialog window should be displayed in loading state.\n     */\n    loading(loadingData: boolean | DialogRefLoadingConfiguration): void {\n        if (typeof loadingData === 'boolean') {\n            return this.loading({ isLoading: loadingData });\n        }\n        this.loadingLabel = loadingData.loadingLabel;\n        this.loadingContent = loadingData.loadingContent;\n        this.isLoading = loadingData.isLoading;\n        this._onLoading.next(loadingData.isLoading);\n    }\n\n    /**\n     * Toggles full-screen mode of the Dialog.\n     */\n    toggleFullScreen(): void {\n        this._fullScreen.next(!this._fullScreen.value);\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    Optional,\n    ViewEncapsulation,\n    booleanAttribute,\n    input\n} from '@angular/core';\nimport { FD_DIALOG_BODY_COMPONENT } from '../tokens';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { AsyncPipe } from '@angular/common';\nimport { DynamicPortalComponent } from '@fundamental-ngx/cdk/utils';\nimport { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { DialogConfig } from '../utils/dialog-config.class';\nimport { DialogRef } from '../utils/dialog-ref.class';\n\n/**\n * Applies fundamental layout and styling to the contents of a dialog body.\n *\n * ```html\n * <fd-dialog-body>\n *     <!-- Content -->\n * </fd-dialog-body>\n * ```\n */\n@Component({\n    selector: 'fd-dialog-body',\n    templateUrl: 'dialog-body.component.html',\n    host: {\n        '[class.fd-dialog__body]': 'true',\n        '[class.fd-settings__dialog-body]': 'dialogConfig.settings',\n        '[class.fd-dialog__body--no-vertical-padding]': '!dialogConfig.verticalPadding',\n        '[class.fd-dialog__body--no-horizontal-padding]':\n            '!dialogConfig.horizontalPadding && !dialogConfig.responsivePadding',\n        '[style.min-height]': 'dialogConfig.bodyMinHeight',\n        '[style.padding]':\n            'dialogConfig.disablePaddings || disablePaddings() || dialogConfig.settings ? 0 : dialogConfig.responsivePadding ? null : \"1rem\"'\n    },\n    providers: [\n        {\n            provide: FD_DIALOG_BODY_COMPONENT,\n            useExisting: DialogBodyComponent\n        }\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [ScrollbarDirective],\n    standalone: true,\n    imports: [DynamicPortalComponent, BusyIndicatorComponent, AsyncPipe, PortalModule]\n})\nexport class DialogBodyComponent {\n    /**\n     * property to remove the horizontal and vertical paddings from the body\n     * default is set to false\n     */\n    disablePaddings = input(false, { transform: booleanAttribute });\n\n    /** @hidden */\n    constructor(\n        public readonly elementRef: ElementRef,\n        @Optional() public dialogConfig: DialogConfig,\n        @Optional() public dialogRef: DialogRef\n    ) {}\n}\n","<section>\n    <ng-content></ng-content>\n\n    @if (dialogRef.onLoading | async) {\n        <div class=\"fd-dialog__loader fd-busy-indicator-dialog\">\n            @if (dialogRef.loadingContent) {\n                <fdk-dynamic-portal class=\"fd-text\" [auto]=\"dialogRef.loadingContent\"></fdk-dynamic-portal>\n            }\n            <fd-busy-indicator [loading]=\"true\" size=\"l\" [label]=\"dialogRef.loadingLabel\"></fd-busy-indicator>\n        </div>\n    }\n</section>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\n\n/**\n * Directive that applies fundamental dialog styling to a dialog close button.\n *\n * ```html\n * <button fd-dialog-close-button></button>\n * ```\n */\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[fd-dialog-close-button]',\n    host: {\n        '[attr.aria-label]': '\"close\"',\n        '[class.fd-button]': 'true',\n        '[class.is-compact]': '!mobile()',\n        '[class.fd-button--transparent]': 'true',\n        '[attr.title]': 'title()'\n    },\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `<fd-icon glyph=\"decline\"></fd-icon><ng-content></ng-content>`,\n    imports: [IconComponent]\n})\nexport class DialogCloseButtonComponent {\n    /** Displays dialog close button in mobile mode */\n    mobile = input(false);\n\n    /** add title dynamically to add a tooltip */\n    title = input<string>();\n\n    /** add aria label dynamically to add to the button */\n    ariaLabel = input<string>();\n}\n","import { Directive, Injector, TemplateRef, computed, contentChildren, effect, inject } from '@angular/core';\n\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent, FD_BUTTON_BAR_COMPONENT } from '@fundamental-ngx/core/bar';\n\n@Directive()\nexport abstract class DialogFooterBase {\n    /**\n     * @hidden\n     * Signal-based query for custom footer templates.\n     * Templates are identified by their fdkTemplate name attribute.\n     */\n    readonly customTemplates = contentChildren(TemplateDirective);\n\n    /**\n     * @hidden\n     * Signal-based query for button bar components.\n     */\n    readonly buttons = contentChildren(FD_BUTTON_BAR_COMPONENT, { read: ButtonBarComponent });\n\n    /**\n     * @hidden\n     * Signal containing the custom footer template, if provided.\n     * Returns the TemplateRef when a template with name='footer' is projected.\n     * This template uses the predefined Bar layout.\n     */\n    readonly footerTemplate = computed<TemplateRef<any> | undefined>(\n        () => this.customTemplates().find((t) => t.name() === 'footer')?.templateRef\n    );\n\n    /**\n     * @hidden\n     * Signal containing the custom footer template without predefined Bar, if provided.\n     * Returns the TemplateRef when a template with name='customFooter' is projected.\n     * This template gives full control to the user without any predefined layout.\n     */\n    readonly customFooterTemplate = computed<TemplateRef<any> | undefined>(\n        () => this.customTemplates().find((t) => t.name() === 'customFooter')?.templateRef\n    );\n\n    /** @hidden */\n    protected readonly injector = inject(Injector);\n\n    /**\n     * @hidden\n     * Sets up an effect to add a CSS class to button elements when buttons change.\n     * Must be called within an injection context or will use runInInjectionContext.\n     * @param className - The CSS class name to add to each button element\n     */\n    protected _listenForButtonChanges(className: string): void {\n        effect(\n            () => {\n                const buttonBars = this.buttons();\n                buttonBars.forEach((buttonBar) => {\n                    const button = buttonBar.buttonComponent();\n                    if (button) {\n                        const buttonElement = button.elementRef.nativeElement;\n                        if (!buttonElement.classList.contains(className)) {\n                            buttonElement.classList.add(className);\n                        }\n                    }\n                });\n            },\n            { injector: this.injector }\n        );\n    }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { BarComponent, BarRightDirective } from '@fundamental-ngx/core/bar';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DialogFooterBase } from '../base/dialog-footer-base.class';\nimport { DialogConfig } from '../utils/dialog-config.class';\n\nexport const DialogButtonClass = 'fd-dialog__decisive-button';\n\n/**\n * Building block of the dialog used to create dialog button.\n *\n * ```html\n * <fd-dialog-footer><!--Content--></fd-dialog-footer>\n *\n * Complex footer:\n * <fd-dialog-footer>\n *     <ng-template fdkTemplate=\"footer\"><!--Content--></ng-template>\n * </fd-dialog-footer>\n * ```\n * */\n@Component({\n    selector: 'fd-dialog-footer',\n    templateUrl: './dialog-footer.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [BarComponent, BarRightDirective, ContentDensityDirective, NgTemplateOutlet]\n})\nexport class DialogFooterComponent extends DialogFooterBase implements AfterViewInit {\n    /** @hidden */\n    dialogConfig = inject(DialogConfig, { optional: true }) || {};\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._listenForButtonChanges(DialogButtonClass);\n    }\n}\n","<footer>\n    @if (customFooterTemplate()) {\n        <ng-template [ngTemplateOutlet]=\"customFooterTemplate()\"></ng-template>\n    } @else {\n        <div fd-bar class=\"fd-dialog__footer\" barDesign=\"footer\" [fdContentDensity]=\"dialogConfig.contentDensity ?? ''\">\n            <ng-template [ngTemplateOutlet]=\"footerTemplate() ? footerTemplate() : defaultTemplate\"></ng-template>\n\n            <ng-template #defaultTemplate>\n                <div fd-bar-right>\n                    <ng-content></ng-content>\n                </div>\n            </ng-template>\n        </div>\n    }\n</footer>\n","import { Directive, TemplateRef, computed, contentChildren } from '@angular/core';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { DEFAULT_TITLE_SIZE } from '@fundamental-ngx/core/title';\n\n@Directive({\n    providers: [\n        {\n            provide: DEFAULT_TITLE_SIZE,\n            useValue: 5\n        }\n    ]\n})\nexport abstract class DialogHeaderBase {\n    /**\n     * @hidden\n     * Signal-based query for custom header/subheader templates.\n     * Templates are identified by their fdkTemplate name attribute.\n     */\n    readonly customTemplates = contentChildren(TemplateDirective);\n\n    /**\n     * @hidden\n     * Signal containing the custom header template, if provided.\n     * Returns the TemplateRef when a template with name='header' is projected.\n     */\n    readonly headerTemplate = computed<TemplateRef<any> | undefined>(\n        () => this.customTemplates().find((t) => t.name() === 'header')?.templateRef\n    );\n\n    /**\n     * @hidden\n     * Signal containing the custom subheader template, if provided.\n     * Returns the TemplateRef when a template with name='subheader' is projected.\n     */\n    readonly subHeaderTemplate = computed<TemplateRef<any> | undefined>(\n        () => this.customTemplates().find((t) => t.name() === 'subheader')?.templateRef\n    );\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, inject, input } from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { BarComponent, BarElementDirective, BarLeftDirective, BarRightDirective } from '@fundamental-ngx/core/bar';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DEFAULT_TITLE_SIZE } from '@fundamental-ngx/core/title';\nimport { DialogHeaderBase } from '../base/dialog-header-base.class';\nimport { DialogConfig } from '../utils/dialog-config.class';\n\n/**\n * Applies fundamental layout and styling to the contents of a dialog header.\n *\n * ```html\n * <fd-dialog-header>\n *     <h1 fd-title>Title</h1>\n *     <button fd-dialog-close-button></button>\n * </fd-dialog-header>\n * ```\n */\n@Component({\n    selector: 'fd-dialog-header',\n    templateUrl: './dialog-header.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {\n            provide: DEFAULT_TITLE_SIZE,\n            useValue: 5\n        }\n    ],\n    imports: [\n        BarComponent,\n        BarLeftDirective,\n        BarRightDirective,\n        BarElementDirective,\n        ContentDensityDirective,\n        NgTemplateOutlet\n    ]\n})\nexport class DialogHeaderComponent extends DialogHeaderBase {\n    /** @hidden */\n    dialogConfig = inject(DialogConfig, { optional: true }) || {};\n    /** @hidden */\n    inShellbar = input(false, { transform: booleanAttribute });\n}\n","<header>\n    <div\n        fd-bar\n        role=\"group\"\n        class=\"fd-dialog__header\"\n        [class.fd-shellbar]=\"inShellbar()\"\n        [fdContentDensity]=\"dialogConfig.contentDensity ?? ''\"\n        [barDesign]=\"subHeaderTemplate() ? 'header-with-subheader' : 'header'\"\n    >\n        <ng-template [ngTemplateOutlet]=\"headerTemplate() ? headerTemplate() : defaultTemplate\"></ng-template>\n        <ng-template #defaultTemplate>\n            <div fd-bar-left>\n                <fd-bar-element [fullWidth]=\"true\">\n                    <ng-content select=\"[fd-title]\"></ng-content>\n                </fd-bar-element>\n            </div>\n            <div fd-bar-right>\n                <fd-bar-element>\n                    @if (!dialogConfig.mobile) {\n                        <ng-content select=\"[fd-dialog-full-screen-toggler-button]\"></ng-content>\n                    }\n                    <ng-content select=\"[fd-dialog-close-button]\"></ng-content>\n                </fd-bar-element>\n            </div>\n        </ng-template>\n    </div>\n    @if (subHeaderTemplate()) {\n        <div\n            fd-bar\n            class=\"fd-dialog__subheader\"\n            barDesign=\"subheader\"\n            [fdContentDensity]=\"dialogConfig.contentDensity ?? ''\"\n        >\n            <ng-template [ngTemplateOutlet]=\"subHeaderTemplate()\"></ng-template>\n        </div>\n    }\n</header>\n","import { ComponentRef, DestroyRef, Injectable, computed, inject, signal } from '@angular/core';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DialogConfig } from '../utils/dialog-config.class';\nimport { DialogContainer } from '../utils/dialog-container.model';\nimport { DialogConfigBase } from './dialog-config-base.class';\nimport { DialogRefBase, FD_DIALOG_DISMISS_REASON } from './dialog-ref-base.class';\n\n/** Service used to dynamically generate a dialog. */\n@Injectable()\nexport abstract class DialogBaseService<T extends DialogContainer<any>> {\n    abstract open<D>(content: unknown, config: DialogConfigBase<D>): DialogRefBase<D>;\n\n    /** @hidden mutable dialogs signal */\n    readonly dialogsSignal = signal<ComponentRef<T>[]>([]);\n\n    /**\n     * Readonly signal containing all currently open dialog component references.\n     * Use this to observe the list of active dialogs.\n     */\n    readonly dialogs = this.dialogsSignal.asReadonly();\n\n    /**\n     * Computed signal indicating whether any dialogs are currently open.\n     * Useful for conditional logic based on dialog presence.\n     */\n    readonly hasOpenDialogs = computed(() => this.dialogs().length > 0);\n\n    /** Computed: count of open dialogs */\n    readonly openDialogCount = computed(() => this.dialogs().length);\n\n    /** @hidden */\n    protected readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor() {\n        // Auto-cleanup all dialogs when service is destroyed\n        this._destroyRef.onDestroy(() => {\n            this.dismissAll(FD_DIALOG_DISMISS_REASON.SERVICE_DESTROYED);\n        });\n    }\n\n    /** Dismisses all currently open dialogs. */\n    dismissAll(reason?: FD_DIALOG_DISMISS_REASON | string): void {\n        const dialogs = [...this.dialogsSignal()];\n        dialogs.forEach((item) => {\n            try {\n                item.instance.ref?.dismiss(reason);\n            } catch (e) {\n                console.error('Error dismissing dialog:', e);\n            }\n            try {\n                item.destroy();\n            } catch (e) {\n                console.error('Error destroying dialog:', e);\n            }\n        });\n        this.dialogsSignal.set([]);\n    }\n\n    /** @hidden Extends configuration using default values */\n    protected _applyDefaultConfig(config: DialogConfig, defaultConfig: DialogConfig): DialogConfig {\n        return { ...defaultConfig, ...config };\n    }\n\n    /** @hidden Register a dialog and setup auto-cleanup */\n    protected _registerDialog(dialog: ComponentRef<T>): void {\n        this.dialogsSignal.update((dialogs) => [...dialogs, dialog]);\n\n        // Auto-remove when dialog closes\n        dialog.instance.ref.afterClosed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\n            next: () => this._destroyDialog(dialog),\n            error: () => this._destroyDialog(dialog)\n        });\n    }\n\n    /** @hidden Destroy existing dialog */\n    protected _destroyDialog(dialog: ComponentRef<T>): void {\n        this.dialogsSignal.update((dialogs) => dialogs.filter((d) => d !== dialog));\n\n        try {\n            dialog.destroy();\n        } catch (e) {\n            console.error('Error destroying dialog:', e);\n        }\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    DestroyRef,\n    OnInit,\n    ViewEncapsulation,\n    inject,\n    input,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { DialogRef } from '../utils/dialog-ref.class';\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[fd-dialog-full-screen-toggler-button]',\n    imports: [IconComponent],\n    template: `<fd-icon [glyph]=\"_fullscreen$() ? 'exitfullscreen' : 'full-screen'\"></fd-icon>`,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.fd-button]': 'true',\n        '[class.is-compact]': '!mobile()',\n        '[class.fd-button--transparent]': 'true',\n        '[attr.title]': 'title()'\n    }\n})\nexport class DialogFullScreenTogglerButtonComponent implements OnInit {\n    /** Displays dialog close button in mobile mode */\n    mobile = input(false);\n\n    /** DialogRef direct reference. Used with template-based dialogs. */\n    dialogRef = input<Nullable<DialogRef>>();\n\n    /** add title dynamically to add a tooltip */\n    title = input<string>();\n\n    /** @hidden */\n    _fullscreen$ = signal(false);\n\n    /** @hidden */\n    private readonly _ref = inject(DialogRef, {\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    ngOnInit(): void {\n        const ref = this._ref || this.dialogRef();\n        ref?.fullScreen.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((isFullScreen) => {\n            this._fullscreen$.set(isFullScreen);\n        });\n    }\n}\n","/** @hidden Describes available dialog padding sizes */\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/** @hidden Returns dialog size based on width\n * @param width - dialog window width\n **/\nexport function dialogWidthToSize(width: number): DialogSize {\n    if (width < 599) {\n        return 'sm';\n    } else if (width < 1023) {\n        return 'md';\n    } else if (width < 1439) {\n        return 'lg';\n    }\n    return 'xl';\n}\n","import { ESCAPE } from '@angular/cdk/keycodes';\nimport {\n    afterNextRender,\n    computed,\n    DestroyRef,\n    Directive,\n    effect,\n    ElementRef,\n    inject,\n    Injector,\n    isDevMode,\n    OnDestroy,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\n\nimport { FocusTrapService, HasElementRef, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { FD_DIALOG_FOCUS_TRAP_ERROR } from '../tokens';\nimport { DialogSize, dialogWidthToSize } from '../utils/dialog-width-to-size';\nimport { DialogConfigBase } from './dialog-config-base.class';\nimport { DialogRefBase, FD_DIALOG_DISMISS_REASON } from './dialog-ref-base.class';\n\nfunction coerceMetricValue(value: string | number | undefined): string | undefined {\n    return typeof value === 'number' ? `${value}px` : value;\n}\n\n@Directive({\n    host: {\n        '[attr.dir]': 'dir()',\n        '(keydown)': 'closeDialogEsc($event)',\n        '(mousedown)': 'closeDialog($event.target)'\n    }\n})\nexport abstract class DialogBase<T = any, D extends DialogRefBase<T> = DialogRefBase<T>>\n    implements OnDestroy, HasElementRef\n{\n    /** @hidden Reference to dialog window element*/\n    abstract dialogWindow: ElementRef;\n\n    /** @hidden */\n    abstract get _ref(): D;\n\n    /** @hidden */\n    abstract get _config(): DialogConfigBase<any>;\n\n    /** @hidden */\n    readonly _focusTrapService = inject(FocusTrapService);\n\n    /** @hidden */\n    readonly elementRef = inject(ElementRef);\n\n    /** @hidden */\n    protected readonly _router = inject(Router);\n\n    /** @hidden */\n    protected readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    protected readonly _injector = inject(Injector);\n\n    /** @hidden */\n    protected readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden RTL direction computed from service */\n    protected readonly dir = computed(() => ((this._rtlService?.rtl() ?? false) ? 'rtl' : 'ltr'));\n\n    /** @hidden Dialog padding sizes - signal for reactive updates */\n    protected readonly dialogPaddingSize = signal<DialogSize | undefined>(undefined);\n\n    /** @hidden Focus trap ID - used by child classes to pause/unpause */\n    protected _focusTrapId: string | undefined;\n\n    /** @hidden Dialog width - tracked via ResizeObserver */\n    private readonly _dialogWidth = signal<number>(0);\n\n    /** @hidden ResizeObserver for dialog element */\n    private _resizeObserver?: ResizeObserver;\n\n    /**\n     * @hidden\n     * Used to mute errors of focus trap during unit tests (jsdom incompatibility).\n     */\n    private readonly _focusTrapError = inject(FD_DIALOG_FOCUS_TRAP_ERROR, {\n        optional: true\n    });\n\n    /** @hidden */\n    constructor() {\n        // Setup navigation listener (doesn't require view)\n        this._listenAndCloseOnNavigation();\n\n        // Reactive effect: automatically update padding size when dialog width changes\n        effect(() => {\n            const width = this._dialogWidth();\n            if (this._config.responsivePadding && width > 0) {\n                this.dialogPaddingSize.set(dialogWidthToSize(width));\n            }\n        });\n\n        // Setup view-dependent initialization after render\n        afterNextRender(\n            () => {\n                this.setupFocusTrap();\n                this.applyStyles();\n                this.setupResizeObserver();\n                this._ref.loaded();\n            },\n            { injector: this._injector }\n        );\n    }\n\n    /** @hidden Listen and close dialog on Escape key */\n    closeDialogEsc(event: KeyboardEvent): void {\n        if (this._config.escKeyCloseable && KeyUtil.isKeyCode(event, ESCAPE)) {\n            this._ref.dismiss(FD_DIALOG_DISMISS_REASON.ESCAPE);\n        }\n    }\n\n    /** @hidden Listen and close dialog on Backdrop click */\n    closeDialog(target: EventTarget | null): void {\n        if (this._config.backdropClickCloseable && target === this.elementRef.nativeElement) {\n            this._ref.dismiss(FD_DIALOG_DISMISS_REASON.BACKDROP);\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._deactivateFocusTrap();\n        this._resizeObserver?.disconnect();\n    }\n\n    /**\n     * @deprecated Use reactive ResizeObserver instead. This method is kept for backward compatibility\n     * but is no longer needed as padding updates happen automatically via signals.\n     * @hidden Determine dialog padding size based on dialogs window width\n     */\n    adjustResponsivePadding(): void {\n        if (this._config.responsivePadding && this.dialogWindow) {\n            const width = this.dialogWindow.nativeElement.getBoundingClientRect().width;\n            this._dialogWidth.set(width); // Let the effect handle the rest\n        }\n    }\n\n    /** @hidden Setup focus trap - called from constructor via afterNextRender */\n    protected setupFocusTrap(): void {\n        if (this._config.focusTrapped && this.dialogWindow) {\n            try {\n                this._focusTrapId = this._focusTrapService.createFocusTrap(this.dialogWindow.nativeElement, {\n                    clickOutsideDeactivates: this._config.backdropClickCloseable && this._config.hasBackdrop,\n                    escapeDeactivates: false,\n                    fallbackFocus: this.dialogWindow.nativeElement,\n                    allowOutsideClick: () => true\n                });\n            } catch (e) {\n                isDevMode() && this._focusTrapError !== true && console.error(e);\n            }\n        }\n    }\n\n    /**\n     * @hidden\n     * Apply all style configurations to dialog element (position and dimensions).\n     * Combines position and size styling in one method for better organization.\n     */\n    protected applyStyles(): void {\n        const el = this.dialogWindow.nativeElement;\n        const { position, width, height, minWidth, minHeight, maxWidth, maxHeight } = this._config;\n\n        // Apply position styles\n        if (position) {\n            el.style.top = coerceMetricValue(position.top);\n            el.style.bottom = coerceMetricValue(position.bottom);\n            el.style.left = coerceMetricValue(position.left);\n            el.style.right = coerceMetricValue(position.right);\n        } else {\n            el.style.position = 'relative';\n        }\n\n        // Apply dimension styles\n        el.style.width = coerceMetricValue(width);\n        el.style.height = coerceMetricValue(height);\n        el.style.minWidth = coerceMetricValue(minWidth);\n        el.style.minHeight = coerceMetricValue(minHeight);\n        el.style.maxWidth = coerceMetricValue(maxWidth);\n        el.style.maxHeight = coerceMetricValue(maxHeight);\n    }\n\n    /**\n     * @hidden\n     * Sets up ResizeObserver to track dialog element size changes.\n     */\n    protected setupResizeObserver(): void {\n        if (this._config.responsivePadding) {\n            this._resizeObserver = new ResizeObserver((entries) => {\n                if (entries.length > 0) {\n                    const width = entries[0].contentRect.width;\n                    this._dialogWidth.set(width);\n                }\n            });\n            this._resizeObserver.observe(this.dialogWindow.nativeElement);\n        }\n    }\n\n    /** @hidden Listen on NavigationStart event and dismiss the dialog */\n    private _listenAndCloseOnNavigation(): void {\n        if (this._router) {\n            this._router.events\n                .pipe(\n                    filter((event) => event instanceof NavigationStart && !!this._config.closeOnNavigation),\n                    takeUntilDestroyed(this._destroyRef)\n                )\n                .subscribe(() => this._ref.dismiss(FD_DIALOG_DISMISS_REASON.NAVIGATION_CHANGE));\n        }\n    }\n\n    /** @hidden Deactivate focus trap on destroy */\n    private _deactivateFocusTrap(): void {\n        if (this._focusTrapId) {\n            this._focusTrapService.deactivateFocusTrap(this._focusTrapId);\n        }\n    }\n}\n","import { AfterViewInit, Directive, Optional, input } from '@angular/core';\n\nimport { DialogConfig } from '../utils/dialog-config.class';\n\nlet titleUniqueId = 1;\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-dialog-title]',\n    host: {\n        '[attr.id]': 'id()'\n    },\n    standalone: true\n})\nexport class DialogTitleDirective implements AfterViewInit {\n    /** Title ID attribute, generated automatically if not provided */\n    id = input(`fd-dialog-title-` + titleUniqueId++);\n\n    /** @hidden */\n    constructor(@Optional() public dialogConfig: DialogConfig) {}\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        if (this.dialogConfig && !this.dialogConfig.ariaLabelledBy) {\n            this.dialogConfig.ariaLabelledBy = this.id();\n        }\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ElementRef,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Optional,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subscription } from 'rxjs';\n\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\n\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/overlay';\n\nimport { ResizeDirective, ResizeHandleDirective } from '@fundamental-ngx/cdk/utils';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { DialogBase } from './base/dialog-base.class';\nimport { DialogBodyComponent } from './dialog-body/dialog-body.component';\nimport { DialogFooterComponent } from './dialog-footer/dialog-footer.component';\nimport { DialogHeaderComponent } from './dialog-header/dialog-header.component';\nimport { DialogTitleDirective } from './directives/dialog-title.directive';\nimport { DialogConfig } from './utils/dialog-config.class';\nimport { DialogRef } from './utils/dialog-ref.class';\n\n/**\n * Dialog component.\n *\n * ```html\n * <fd-dialog>\n *      <fd-dialog-header></fd-dialog-header>\n *      <fd-dialog-body></fd-dialog-body>\n *      <fd-dialog-footer></fd-dialog-footer>\n * </fd-dialog>\n * ```\n */\n@Component({\n    selector: 'fd-dialog',\n    styleUrl: 'dialog.component.scss',\n    templateUrl: './dialog.component.html',\n    host: {\n        tabindex: '-1'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [contentDensityObserverProviders({ alwaysAddModifiers: true })],\n    imports: [\n        ResizeDirective,\n        A11yModule,\n        CdkDrag,\n        CdkScrollable,\n        ScrollbarDirective,\n        ResizeHandleDirective,\n        CdkDragHandle\n    ]\n})\nexport class DialogComponent\n    extends DialogBase<DialogRef>\n    implements OnInit, OnChanges, AfterViewInit, OnDestroy, CssClassBuilder\n{\n    /** Custom classes */\n    @Input()\n    set class(userClass: string) {\n        this._class = userClass;\n    }\n\n    /** DialogRef - should be used for Template based Dialog implementation */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('dialogRef')\n    set embeddedDialogRef(value: DialogRef) {\n        this._dialogRef = value;\n    }\n\n    get embeddedDialogRef(): DialogRef {\n        return this._dialogRef;\n    }\n\n    /** DialogConfig - should be used for Template based Dialog implementation */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('dialogConfig')\n    set embeddedDialogConfig(value: DialogConfig) {\n        this.dialogConfig = value;\n    }\n\n    /** @hidden */\n    @ViewChild('dialogWindow')\n    dialogWindow: ElementRef;\n\n    /** @hidden If dialog sub-components didn't receive DialogConfig from Injector, DialogConfig is passed from parent.\n     * This is necessary when dialog has been passed as TemplateRef and created as EmbeddedView.\n     * In such case parent injector of DialogComponent is the component that DECLARED the TemplateRef.\n     **/\n    @ContentChild(DialogHeaderComponent)\n    set dialogHeaderConfig(component: DialogHeaderComponent) {\n        if (component) {\n            component.dialogConfig = this.dialogConfig;\n        }\n    }\n\n    /** @hidden */\n    @ContentChild(DialogBodyComponent)\n    set dialogBodyConfig(component: DialogBodyComponent) {\n        if (component) {\n            component.dialogRef = this._dialogRef;\n            component.dialogConfig = this.dialogConfig;\n        }\n    }\n\n    /** @hidden */\n    @ContentChild(DialogFooterComponent)\n    set dialogFooterConfig(component: DialogFooterComponent) {\n        if (component) {\n            component.dialogConfig = this.dialogConfig;\n        }\n    }\n\n    /** @hidden */\n    @ContentChild(DialogTitleDirective)\n    set dialogTitle(component: DialogTitleDirective) {\n        if (component) {\n            component.dialogConfig = this.dialogConfig;\n        }\n    }\n\n    /** @hidden Whenever dialog should be visible */\n    showDialogWindow: boolean;\n\n    /** @hidden Whenever dialog is dragged */\n    isDragged: boolean;\n\n    /**\n     * @hidden\n     * Whether the Dialog in full-screen mode.\n     */\n    _fullScreen = false;\n\n    /** @hidden */\n    private _class = '';\n\n    /** @hidden */\n    private _onHidden: Subscription;\n\n    /** @hidden */\n    constructor(\n        @Optional() public dialogConfig: DialogConfig,\n        @Optional() private _dialogRef: DialogRef\n    ) {\n        super();\n    }\n\n    /** @hidden */\n    get _config(): DialogConfig {\n        return this.dialogConfig;\n    }\n\n    /** @hidden */\n    get _ref(): DialogRef {\n        return this._dialogRef;\n    }\n\n    /** @hidden */\n    @applyCssClass\n    buildComponentCssClass(): string[] {\n        return [\n            this.dialogConfig.hasBackdrop ? 'fd-dialog' : 'fd-dialog--no-backdrop',\n            this.dialogConfig.container !== 'body' || this.dialogConfig.position ? 'fd-dialog--targeted' : '',\n            this.showDialogWindow ? 'fd-dialog--active' : '',\n            this.dialogConfig.settings ? 'fd-settings' : '',\n            this._class,\n            this.dialogConfig.backdropClass ? this.dialogConfig.backdropClass : ''\n        ];\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._listenOnHidden();\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    ngOnChanges(): void {\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._listenOnHidden();\n        this._listenOnFullScreen();\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n        if (this._onHidden) {\n            this._onHidden.unsubscribe();\n        }\n    }\n\n    /** @hidden */\n    private _listenOnFullScreen(): void {\n        this._ref.fullScreen.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((isFullScreen) => {\n            this._fullScreen = isFullScreen;\n            this.adjustResponsivePadding();\n        });\n    }\n\n    /** @hidden Listen on Dialog visibility */\n    private _listenOnHidden(): void {\n        if (this._onHidden) {\n            this._onHidden.unsubscribe();\n        }\n        this._onHidden = this._dialogRef.onHide.subscribe((isHidden) => {\n            this.showDialogWindow = !isHidden;\n            this.buildComponentCssClass();\n\n            if (!this._focusTrapId) {\n                return;\n            }\n            const focusTrapInstance = this._focusTrapService.getFocusTrapInstance(this._focusTrapId);\n            if (isHidden) {\n                focusTrapInstance?.pause();\n            } else {\n                focusTrapInstance?.unpause();\n            }\n        });\n    }\n}\n","<div\n    #dialogWindow\n    role=\"dialog\"\n    tabindex=\"-1\"\n    aria-modal=\"true\"\n    fdkResize\n    cdkTrapFocus\n    cdkDrag\n    cdkDragBoundary=\".fd-dialog\"\n    fd-scrollbar\n    [fdkResizeBoundary]=\"elementRef.nativeElement\"\n    class=\"fd-dialog__content\"\n    [class]=\"dialogConfig.dialogPanelClass\"\n    [class.cdk-drag]=\"dialogConfig.draggable\"\n    [class.fd-dialog__content--s]=\"dialogPaddingSize() === 'sm'\"\n    [class.fd-dialog__content--m]=\"dialogPaddingSize() === 'md'\"\n    [class.fd-dialog__content--l]=\"dialogPaddingSize() === 'lg'\"\n    [class.fd-dialog__content--xl]=\"dialogPaddingSize() === 'xl'\"\n    [class.fd-dialog__content--mobile]=\"dialogConfig.mobile || _fullScreen\"\n    [class.fd-dialog__content--no-mobile-stretch]=\"dialogConfig.mobileOuterSpacing\"\n    [class.fd-dialog__content--draggable-grab]=\"dialogConfig.draggable && !isDragged\"\n    [class.fd-dialog__content--draggable-grabbing]=\"dialogConfig.draggable && isDragged\"\n    [class.fd-dialog__content-full-screen]=\"_fullScreen\"\n    [class.fd-settings__dialog-content]=\"dialogConfig.settings\"\n    [cdkDragDisabled]=\"!dialogConfig.draggable\"\n    [fdkResizeDisabled]=\"!dialogConfig.resizable\"\n    [attr.id]=\"dialogConfig.id\"\n    [attr.aria-label]=\"dialogConfig.ariaLabel\"\n    [attr.aria-labelledby]=\"dialogConfig.ariaLabelledBy\"\n    [attr.aria-describedby]=\"dialogConfig.ariaDescribedBy\"\n    (cdkDragStarted)=\"isDragged = true\"\n    (cdkDragEnded)=\"isDragged = false\"\n    (onResizeEnd)=\"adjustResponsivePadding()\"\n>\n    @if (dialogConfig.resizable && !_fullScreen && !dialogConfig.mobile) {\n        <span fdkResizeHandle class=\"fd-dialog__resize-handle\" role=\"presentation\" aria-hidden=\"true\"></span>\n    }\n    <div cdkDragHandle [cdkDragHandleDisabled]=\"!dialogConfig.draggable\">\n        <ng-content select=\"fd-dialog-header\"></ng-content>\n    </div>\n    <ng-content select=\"fd-dialog-body\"></ng-content>\n    <ng-content select=\"fd-dialog-footer\"></ng-content>\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { InitialFocusDirective, TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { DialogBodyComponent } from '../dialog-body/dialog-body.component';\nimport { DialogCloseButtonComponent } from '../dialog-close-button/dialog-close-button.component';\nimport { DialogFooterComponent } from '../dialog-footer/dialog-footer.component';\nimport { DialogFullScreenTogglerButtonComponent } from '../dialog-full-screen-toggler-button/dialog-full-screen-toggler-button.component';\nimport { DialogHeaderComponent } from '../dialog-header/dialog-header.component';\nimport { DialogComponent } from '../dialog.component';\nimport { DialogConfig } from '../utils/dialog-config.class';\nimport { DialogDefaultContent } from '../utils/dialog-default-content.class';\n\nlet dTitleId = 0;\nlet dContentId = 0;\n\n/** Dialog component used to create the dialog in object based approach */\n@Component({\n    selector: 'fd-dialog-default',\n    templateUrl: './dialog-default.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        DialogComponent,\n        DialogHeaderComponent,\n        TitleComponent,\n        DialogFullScreenTogglerButtonComponent,\n        DialogCloseButtonComponent,\n        TemplateDirective,\n        NgTemplateOutlet,\n        CdkScrollable,\n        ScrollbarDirective,\n        DialogBodyComponent,\n        DialogFooterComponent,\n        ButtonBarComponent,\n        InitialFocusDirective,\n        ContentDensityDirective\n    ]\n})\nexport class DialogDefaultComponent implements AfterViewInit {\n    /** @hidden */\n    _defaultDialogContent: Nullable<DialogDefaultContent>;\n\n    /** @hidden */\n    _defaultDialogConfiguration: DialogConfig;\n\n    /**\n     * dialog title id\n     * if not set, a default value is provided\n     */\n    dialogTitleId = 'fd-dialog-title-id-' + dTitleId++;\n\n    /**\n     * dialog content id\n     * if not set, a default value is provided\n     */\n    dialogContentId = 'fd-dialog-content-id-' + dContentId++;\n\n    /** @hidden */\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        public _dialogConfig: DialogConfig\n    ) {}\n\n    /** @hidden\n     * TODO: Inspect why DialogDefaultComponents needs change detection re-run to render adjusted content (dialog header title)\n     * */\n    ngAfterViewInit(): void {\n        if (this._dialogConfig) {\n            this._dialogConfig.ariaLabelledBy ??= this.dialogTitleId;\n            this._dialogConfig.ariaDescribedBy ??= this.dialogContentId;\n        }\n\n        this._changeDetectorRef.detectChanges();\n    }\n\n    /** Whether there is a approve button, or cancel button text */\n    _showFooter(): boolean {\n        return (\n            !!this._defaultDialogContent &&\n            !!(this._defaultDialogContent.cancelButton || this._defaultDialogContent.approveButton)\n        );\n    }\n\n    /** @hidden */\n    _closeButtonClicked(): void {\n        this._defaultDialogContent?.closeButtonCallback?.();\n    }\n\n    /** @hidden */\n    _approveButtonClicked(): void {\n        this._defaultDialogContent?.approveButtonCallback?.();\n    }\n\n    /** @hidden */\n    _cancelButtonClicked(): void {\n        this._defaultDialogContent?.cancelButtonCallback?.();\n    }\n\n    /** @hidden */\n    _fullScreenButtonClicked(): void {\n        this._defaultDialogContent?.fullScreenButtonCallback?.();\n    }\n}\n","<fd-dialog>\n    <fd-dialog-header>\n        <div\n            role=\"heading\"\n            [attr.aria-level]=\"_defaultDialogContent?.titleHeadingLevel || 1\"\n            fd-title\n            [id]=\"_defaultDialogContent?.titleId || dialogTitleId\"\n        >\n            {{ _defaultDialogContent?.title }}\n        </div>\n        @if (_defaultDialogContent?.allowFullScreen) {\n            <button\n                fd-dialog-full-screen-toggler-button\n                #fullScreenTogglerButton\n                [title]=\"\n                    (fullScreenTogglerButton._fullscreen$()\n                        ? _defaultDialogContent?.fullScreenMinifyButtonText\n                        : _defaultDialogContent?.fullScreenExpandButtonText) || ''\n                \"\n                (click)=\"_fullScreenButtonClicked()\"\n            ></button>\n        }\n        @if (_defaultDialogContent?.closeButtonCallback) {\n            <button\n                fd-dialog-close-button\n                [title]=\"_defaultDialogContent?.closeButtonTitle || ''\"\n                [ariaLabel]=\"_defaultDialogContent?.closeButtonAriaLabel || ''\"\n                (click)=\"_closeButtonClicked()\"\n            ></button>\n        }\n        @if (_defaultDialogContent?.subHeader) {\n            <ng-template fdkTemplate=\"subheader\">\n                <ng-template [ngTemplateOutlet]=\"_defaultDialogContent!.subHeader!\"></ng-template>\n            </ng-template>\n        }\n    </fd-dialog-header>\n    @if (_defaultDialogContent?.content) {\n        <fd-dialog-body [id]=\"_defaultDialogContent?.contentId || dialogContentId\">\n            <ng-template [ngTemplateOutlet]=\"_defaultDialogContent?.content!\"></ng-template>\n        </fd-dialog-body>\n    }\n    @if (_showFooter()) {\n        <fd-dialog-footer>\n            @if (_defaultDialogContent?.approveButton) {\n                <fd-button-bar\n                    fdType=\"emphasized\"\n                    fdkInitialFocus\n                    [label]=\"_defaultDialogContent?.approveButton || ''\"\n                    [fdCozy]=\"_defaultDialogConfiguration.mobile\"\n                    (click)=\"_approveButtonClicked()\"\n                    [ariaLabel]=\"_defaultDialogContent?.approveButtonAriaLabel\"\n                    [id]=\"_defaultDialogContent?.approveButtonId || ''\"\n                >\n                </fd-button-bar>\n            }\n            @if (_defaultDialogContent?.cancelButton) {\n                <fd-button-bar\n                    [label]=\"_defaultDialogContent?.cancelButton || ''\"\n                    [fdCozy]=\"_defaultDialogConfiguration.mobile\"\n                    (click)=\"_cancelButtonClicked()\"\n                    [ariaLabel]=\"_defaultDialogContent?.closeButtonAriaLabel\"\n                    [id]=\"_defaultDialogContent?.cancelButtonId || ''\"\n                >\n                </fd-button-bar>\n            }\n        </fd-dialog-footer>\n    }\n</fd-dialog>\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ComponentRef,\n    DestroyRef,\n    ElementRef,\n    EmbeddedViewRef,\n    Injector,\n    Input,\n    signal,\n    TemplateRef,\n    Type,\n    ViewChild,\n    ViewEncapsulation,\n    ViewRef\n} from '@angular/core';\n\nimport { applyCssClass, CssClassBuilder, DynamicComponentContainer, Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { CdkPortalOutlet, CdkPortalOutletAttachedRef, PortalModule } from '@angular/cdk/portal';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DialogDefaultComponent } from '../dialog-default/dialog-default.component';\nimport { DialogContentType } from '../dialog.types';\nimport { DialogTemplateDirectiveContext } from '../directives/dialog-template.directive';\nimport { DialogConfig } from '../utils/dialog-config.class';\nimport { DialogContainer } from '../utils/dialog-container.model';\nimport { DialogDefaultContent } from '../utils/dialog-default-content.class';\nimport { DialogRef } from '../utils/dialog-ref.class';\n\n/** Dialog container where the dialog content is embedded. */\n@Component({\n    selector: 'fd-dialog-container',\n    template: '<ng-template (attached)=\"_attached($event)\" cdkPortalOutlet></ng-template>',\n    styleUrls: ['./dialog-container.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [PortalModule],\n    host: {\n        style: 'opacity: 0; position: relative; z-index: 999'\n    }\n})\nexport class DialogContainerComponent\n    extends DynamicComponentContainer<DialogContentType>\n    implements DialogContainer<any>, AfterViewInit, CssClassBuilder\n{\n    /** Custom classes */\n    @Input()\n    set class(userClass: string) {\n        this._class = userClass;\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    @ViewChild(CdkPortalOutlet)\n    portalOutlet: CdkPortalOutlet;\n\n    /** @hidden */\n    private _class = '';\n\n    /** @hidden Tracks the current animation phase for lifecycle management. */\n    private _animationStateSignal = signal('void');\n\n    /** @hidden Reference to the current Web Animation for cleanup. */\n    private _currentAnimation: Animation | null = null;\n\n    /** @hidden */\n    constructor(\n        public dialogConfig: DialogConfig,\n        public ref: DialogRef,\n        private _destroyRef: DestroyRef,\n        elementRef: ElementRef,\n        protected readonly _cdr: ChangeDetectorRef,\n        injector: Injector\n    ) {\n        super(elementRef, injector);\n\n        this._destroyRef.onDestroy(() => {\n            this._currentAnimation?.cancel();\n            this._currentAnimation = null;\n        });\n    }\n\n    /** @hidden */\n    @applyCssClass\n    buildComponentCssClass(): string[] {\n        return [this.dialogConfig.containerClass ? this.dialogConfig.containerClass : '', this._class];\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        setTimeout(() => {\n            this._loadContent();\n            this._listenOnClose();\n        });\n    }\n\n    /** @hidden */\n    protected _attached(event: CdkPortalOutletAttachedRef): void {\n        if (event instanceof ComponentRef) {\n            event.changeDetectorRef.markForCheck();\n        } else if (event instanceof EmbeddedViewRef) {\n            event.markForCheck();\n        }\n    }\n\n    /** @hidden Load received content */\n    protected _loadContent(): void {\n        if ((this._cdr as ViewRef).destroyed) {\n            return;\n        }\n        if (this.childContent instanceof Type) {\n            this._createFromComponent(this.childContent);\n        } else if (this.childContent instanceof TemplateRef) {\n            this._createFromTemplate(this.childContent, this._templateContext());\n        } else {\n            this._createFromDefaultDialog(this.childContent);\n        }\n        this._enter();\n    }\n\n    /** @hidden Returns context for embedded template */\n    private _templateContext(): DialogTemplateDirectiveContext {\n        return { $implicit: this.ref, dialogConfig: this.dialogConfig };\n    }\n\n    /** @hidden Load Dialog component from passed object */\n    private _createFromDefaultDialog(config: Nullable<DialogDefaultContent>): void {\n        this._createFromComponent(DialogDefaultComponent);\n        const instance = (this._componentRef as ComponentRef<DialogDefaultComponent>).instance;\n        instance._defaultDialogContent = config;\n        instance._defaultDialogConfiguration = this.dialogConfig;\n    }\n\n    /** @hidden Animate the dialog container entrance (opacity 0 → 1). */\n    private _enter(): void {\n        const el: HTMLElement = this.elementRef.nativeElement;\n\n        if (typeof el.animate !== 'function') {\n            el.style.opacity = '1';\n            this._animationStateSignal.set('visible');\n            return;\n        }\n\n        this._currentAnimation = el.animate([{ opacity: 0 }, { opacity: 1 }], {\n            duration: 150,\n            easing: 'cubic-bezier(0, 0, 0.2, 1)',\n            fill: 'forwards'\n        });\n\n        this._currentAnimation.finished\n            .then(() => {\n                el.style.opacity = '1';\n                this._currentAnimation?.cancel();\n                this._currentAnimation = null;\n                this._animationStateSignal.set('visible');\n            })\n            .catch(() => {\n                this._currentAnimation = null;\n            });\n    }\n\n    /** @hidden Animate the dialog container exit (opacity 1 → 0). */\n    private _exit(): void {\n        const el: HTMLElement = this.elementRef.nativeElement;\n        this._animationStateSignal.set('hidden');\n        this._cdr.detectChanges();\n\n        if (typeof el.animate !== 'function') {\n            return;\n        }\n\n        this._currentAnimation?.cancel();\n\n        this._currentAnimation = el.animate([{ opacity: 1 }, { opacity: 0 }], {\n            duration: 75,\n            easing: 'cubic-bezier(0.4, 0, 1, 1)',\n            fill: 'forwards'\n        });\n\n        this._currentAnimation.finished\n            .then(() => {\n                this._currentAnimation = null;\n            })\n            .catch(() => {\n                this._currentAnimation = null;\n            });\n    }\n\n    /**\n     * @hidden\n     * Listen for dialog close/dismiss and trigger exit animation.\n     */\n    private _listenOnClose(): void {\n        this.ref.afterClosed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\n            next: () => this._exit(),\n            error: () => this._exit()\n        });\n    }\n}\n","import { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, Injector, Optional, PLATFORM_ID, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { DialogBaseService } from '../base/dialog-base.service';\nimport { DialogContainerComponent } from '../dialog-container/dialog-container.component';\nimport { DialogContentType } from '../dialog.types';\nimport { DIALOG_DEFAULT_CONFIG, DialogConfig } from '../utils/dialog-config.class';\nimport { DialogRef } from '../utils/dialog-ref.class';\n\n/** Service used to create a dialog. */\n@Injectable({\n    providedIn: 'root'\n})\nexport class DialogService extends DialogBaseService<DialogContainerComponent> {\n    /** @hidden */\n    private platformId = inject(PLATFORM_ID);\n    /** @hidden */\n    private readonly htmlElement?: HTMLHtmlElement;\n\n    /** @hidden */\n    constructor(\n        @Optional() @Inject(DIALOG_DEFAULT_CONFIG) private _defaultConfig: DialogConfig,\n        @Optional() private _rtlService: RtlService,\n        private _injector: Injector,\n        private readonly _overlay: Overlay\n    ) {\n        super();\n        if (isPlatformBrowser(this.platformId)) {\n            this.htmlElement = document.querySelector('html') as HTMLHtmlElement;\n        }\n    }\n\n    /**\n     * Opens a dialog component with provided content.\n     * @param content Content of the dialog component.\n     * @param dialogConfig Configuration of the dialog component.\n     * @param parentInjector Parent injector instance.\n     */\n    public open<T = any>(\n        content: DialogContentType,\n        dialogConfig?: DialogConfig<T>,\n        parentInjector?: Injector\n    ): DialogRef<T> {\n        const dialogRef = new DialogRef();\n        let previouslyFocusedElement: HTMLElement | null = null;\n        if (dialogConfig?.focusTrapped && document.activeElement) {\n            previouslyFocusedElement = document.activeElement as HTMLElement;\n        }\n        if (!parentInjector) {\n            parentInjector = this._injector;\n        }\n\n        dialogConfig = this._applyDefaultConfig(dialogConfig || {}, this._defaultConfig || new DialogConfig());\n        dialogRef.data = dialogConfig.data;\n\n        const injector = Injector.create({\n            providers: [\n                { provide: DialogConfig, useValue: dialogConfig },\n                { provide: DialogRef, useValue: dialogRef },\n                { provide: RtlService, useValue: this._rtlService },\n                { provide: DialogService, useValue: this }\n            ],\n            parent: parentInjector\n        });\n\n        const overlayRef = this._overlay.create(new OverlayConfig());\n\n        if (dialogConfig.container && dialogConfig.container !== 'body' && typeof dialogConfig.container !== 'string') {\n            dialogConfig.container.append(overlayRef.hostElement);\n        }\n        const portal = new ComponentPortal(DialogContainerComponent, null, injector);\n        const componentRef = overlayRef.attach(portal);\n\n        componentRef.instance.childContent = content;\n        componentRef.instance.dialogConfig = dialogConfig;\n\n        // Register dialog for tracking (replaces manual push)\n        this._registerDialog(componentRef);\n\n        this.htmlElement && (this.htmlElement.style.overflow = 'hidden');\n        dialogRef._endClose$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            this._destroyDialog(componentRef);\n            overlayRef.dispose();\n            this.htmlElement && (this.htmlElement.style.overflow = '');\n            if (dialogConfig?.focusTrapped && previouslyFocusedElement) {\n                previouslyFocusedElement.focus();\n            }\n        });\n\n        return dialogRef;\n    }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\nimport { DialogConfig } from '../utils/dialog-config.class';\nimport { DialogRef } from '../utils/dialog-ref.class';\n\nexport interface DialogTemplateDirectiveContext<T = DialogConfig<any>, U = T extends DialogConfig<infer P> ? P : any> {\n    $implicit: DialogRef<U>;\n    dialogConfig: T;\n}\n@Directive({\n    selector: '[fdDialogTemplate]',\n    standalone: true\n})\nexport class DialogTemplateDirective<T = DialogConfig<any>> {\n    /** Custom dialog config model. */\n    fdDialogTemplateConfig = input<T>();\n\n    /** @hidden */\n    readonly templateRef = inject(TemplateRef<DialogTemplateDirectiveContext<T>>);\n\n    /** @hidden */\n    static ngTemplateContextGuard<T extends null>(\n        dir: DialogTemplateDirective<T>,\n        ctx: DialogTemplateDirectiveContext<DialogConfig<any>>\n    ): ctx is DialogTemplateDirectiveContext<DialogConfig<any>>;\n    /** @hidden */\n    static ngTemplateContextGuard<T = DialogConfig<any>>(\n        dir: DialogTemplateDirective<T>,\n        ctx: DialogTemplateDirectiveContext<T>\n    ): ctx is DialogTemplateDirectiveContext<T>;\n    /** @hidden */\n    static ngTemplateContextGuard<U extends DialogTemplateDirective<any>>(\n        dir: U,\n        ctx: DialogTemplateDirectiveContext<any>\n    ): ctx is DialogTemplateDirectiveContext<DialogConfig<any>> {\n        return true;\n    }\n}\n","import { Provider } from '@angular/core';\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { DialogService } from './dialog-service/dialog.service';\n\n/**\n * Provides necessary services for dialog functionality to properly work.\n * @returns Array of Providers.\n */\nexport function provideDialogService(): Provider[] {\n    return [DialogService, DynamicComponentService];\n}\n","import { NgModule } from '@angular/core';\nimport { TemplateDirective } from '@fundamental-ngx/cdk/utils';\nimport {\n    BarComponent,\n    BarElementDirective,\n    BarLeftDirective,\n    BarMiddleDirective,\n    BarRightDirective,\n    ButtonBarComponent\n} from '@fundamental-ngx/core/bar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { DialogBodyComponent } from './dialog-body/dialog-body.component';\nimport { DialogCloseButtonComponent } from './dialog-close-button/dialog-close-button.component';\nimport { DialogContainerComponent } from './dialog-container/dialog-container.component';\nimport { DialogDefaultComponent } from './dialog-default/dialog-default.component';\nimport { DialogFooterComponent } from './dialog-footer/dialog-footer.component';\nimport { DialogFullScreenTogglerButtonComponent } from './dialog-full-screen-toggler-button/dialog-full-screen-toggler-button.component';\nimport { DialogHeaderComponent } from './dialog-header/dialog-header.component';\nimport { DialogComponent } from './dialog.component';\nimport { DialogTemplateDirective } from './directives/dialog-template.directive';\nimport { DialogTitleDirective } from './directives/dialog-title.directive';\nimport { provideDialogService } from './provide-dialog-service';\n\nconst declarations = [\n    DialogComponent,\n    DialogBodyComponent,\n    DialogFooterComponent,\n    DialogHeaderComponent,\n    DialogDefaultComponent,\n    DialogContainerComponent,\n    DialogCloseButtonComponent,\n    DialogTitleDirective,\n    DialogFullScreenTogglerButtonComponent,\n    DialogTemplateDirective\n];\n\n/**\n * @deprecated\n * Use following imports instead:\n * `DialogComponent`,\n * `DialogBodyComponent`,\n * `DialogFooterComponent`,\n * `DialogHeaderComponent`,\n * `DialogCloseButtonComponent`,\n * `DialogTitleDirective`,\n * `DialogFullScreenTogglerButtonComponent`\n *\n * in order to provide dialog service, use `provideDialogService()`\n */\n@NgModule({\n    imports: [\n        declarations,\n        // Keeping these two items for backwards compatibility.\n        TemplateDirective,\n        BarComponent,\n        BarLeftDirective,\n        BarMiddleDirective,\n        BarRightDirective,\n        BarElementDirective,\n        ButtonBarComponent,\n        TitleComponent\n    ],\n    exports: [\n        declarations,\n        // Keeping these two items for backwards compatibility.\n        TemplateDirective,\n        BarComponent,\n        BarLeftDirective,\n        BarMiddleDirective,\n        BarRightDirective,\n        BarElementDirective,\n        ButtonBarComponent,\n        TitleComponent\n    ],\n    providers: [provideDialogService()]\n})\nexport class DialogModule {}\n","/**\n * Base class for dialog content configuration.\n * Defines common properties for dialog titles, content, buttons, and accessibility attributes.\n */\nexport class DialogContentBase<ContentType = unknown> {\n    /**\n     * Unique identifier for the dialog title element.\n     */\n    titleId?: string;\n\n    /**\n     * Text content for the dialog title.\n     * Displayed in the dialog header.\n     */\n    title?: string;\n\n    /**\n     * Semantic heading level for the dialog title.\n     * Determines which HTML heading tag (h1-h6) to use for proper document outline.\n     * @default 1\n     * @example 2 // renders as <h2>\n     */\n    titleHeadingLevel?: 1 | 2 | 3 | 4 | 5 | 6 = 1;\n\n    /**\n     * Main content to be displayed in the dialog body.\n     * Can be a template, component, or any custom content type.\n     */\n    content?: ContentType;\n\n    /**\n     * Unique identifier for the dialog content/body element.\n     */\n    contentId?: string;\n\n    /**\n     * Aria Modal attribute for the dialog component element.\n     * When true, indicates the dialog is modal and content outside is inert.\n     * @default false\n     */\n    ariaModal?: boolean;\n\n    /**\n     * ARIA label for the dialog component element.\n     * Provides an accessible name when no visible title is present.\n     */\n    ariaLabel?: string | null | undefined;\n\n    /**\n     * ID of the element that labels the dialog.\n     * References an element (typically the title) that serves as the dialog's accessible name.\n     */\n    ariaLabelledBy?: string | null | undefined;\n\n    /**\n     * ID of the element that describes the dialog.\n     * References an element that provides additional context about the dialog's purpose.\n     */\n    ariaDescribedBy?: string | null | undefined;\n\n    /**\n     * Label text for the approve/confirm button.\n     * If provided, displays a primary action button in the dialog footer.\n     */\n    approveButton?: string;\n\n    /**\n     * Unique identifier for the approve button element.\n     */\n    approveButtonId?: string;\n\n    /**\n     * Callback function executed when the approve button is clicked.\n     * Use this to handle the primary action of the dialog.\n     */\n    approveButtonCallback?: () => void;\n\n    /**\n     * ARIA label for the approve button element.\n     * Provides an accessible name for screen readers, especially when the button text is not descriptive.\n     */\n    approveButtonAriaLabel?: string;\n\n    /**\n     * Label text for the cancel/dismiss button.\n     * If provided, displays a secondary action button in the dialog footer.\n     */\n    cancelButton?: string;\n\n    /**\n     * Unique identifier for the cancel button element.\n     */\n    cancelButtonId?: string;\n\n    /**\n     * Callback function executed when the cancel button is clicked.\n     * Use this to handle cancellation or dismissal logic.\n     */\n    cancelButtonCallback?: () => void;\n\n    /**\n     * Callback function executed when the close button (X icon) is clicked.\n     * Typically used to dismiss the dialog without taking action.\n     */\n    closeButtonCallback?: () => void;\n\n    /**\n     * Callback function executed when the full screen toggle button is clicked.\n     * Use this to handle expanding or minimizing the dialog to full screen.\n     */\n    fullScreenButtonCallback?: () => void;\n\n    /**\n     * Title/tooltip text for the close button.\n     * Displayed on hover to provide context for the close action.\n     */\n    closeButtonTitle?: string;\n\n    /**\n     * ARIA label for the close button element.\n     * Provides an accessible name for screen readers.\n     */\n    closeButtonAriaLabel?: string;\n}\n","import { TemplateRef } from '@angular/core';\nimport { DialogContentBase } from '../base/dialog-content-base.class';\n\nexport class DialogDefaultContent extends DialogContentBase<TemplateRef<any>> {\n    /** Subheader Body */\n    subHeader?: TemplateRef<any>;\n\n    /** Whether to allow dialog to be opened in full screen mode. */\n    allowFullScreen?: boolean;\n\n    /** Full screen button text when dialog is not in full-screen mode. */\n    fullScreenExpandButtonText?: string;\n\n    /** Full screen button text when dialog is in full-screen mode. */\n    fullScreenMinifyButtonText?: string;\n}\n","/**\n * Represents the positioning of the dialog on the screen.\n */\nexport class DialogPosition {\n    /** Value of the dialog's top position. */\n    top?: string | number;\n\n    /** Value of the dialog's bottom position. */\n    bottom?: string | number;\n\n    /** Value of the dialog's left position. */\n    left?: string | number;\n\n    /** Value of the dialog's right position. */\n    right?: string | number;\n}\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DialogOverlayContainer extends OverlayContainer {\n    /**\n     * This method returns the overlay container element. It will lazily\n     * create the element the first time it is called to facilitate using\n     * the container in non-browser environments.\n     * @returns the container element\n     */\n    getContainerElement(): HTMLElement {\n        const containerElement = super.getContainerElement();\n\n        containerElement.classList.add('fd-dialog-overlay-container');\n\n        return containerElement;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DialogConfig","i2.DialogRef","i3"],"mappings":"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"}