@fundamental-ngx/core 0.61.2-rc.9 → 0.61.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -3
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +4 -6
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +13 -11
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +7 -5
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +31 -35
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime.mjs +13 -7
- package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +16 -11
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs +65 -59
- package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +5 -5
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +7 -7
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +49 -44
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +20 -25
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +8 -6
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-nested-list.mjs +21 -22
- package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +16 -13
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -11
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +9 -3
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +7 -4
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +11 -10
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +6 -7
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time-picker.mjs +29 -4
- package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +15 -12
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/package.json +3 -3
- package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
- package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
- package/types/fundamental-ngx-core-combobox.d.ts +2 -4
- package/types/fundamental-ngx-core-datetime.d.ts +5 -1
- package/types/fundamental-ngx-core-dialog.d.ts +1 -1
- package/types/fundamental-ngx-core-dynamic-page.d.ts +2 -1
- package/types/fundamental-ngx-core-inline-help.d.ts +45 -24
- package/types/fundamental-ngx-core-menu.d.ts +0 -2
- package/types/fundamental-ngx-core-message-box.d.ts +1 -1
- package/types/fundamental-ngx-core-message-strip.d.ts +12 -3
- package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
- package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
- package/types/fundamental-ngx-core-notification.d.ts +7 -5
- package/types/fundamental-ngx-core-pagination.d.ts +4 -3
- package/types/fundamental-ngx-core-rating-indicator.d.ts +2 -3
- package/types/fundamental-ngx-core-segmented-button.d.ts +5 -3
- package/types/fundamental-ngx-core-slider.d.ts +1 -1
- package/types/fundamental-ngx-core-time-picker.d.ts +17 -1
- package/types/fundamental-ngx-core-token.d.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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/utils/dialog.animations.ts","../../../../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, inject } 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}\n","<header>\n <div\n fd-bar\n role=\"group\"\n class=\"fd-dialog__header\"\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 { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport const dialogFade: AnimationTriggerMetadata = trigger('state', [\n state(\n 'void, hidden',\n style({\n opacity: 0,\n position: 'relative',\n zIndex: 999\n })\n ),\n state(\n 'visible',\n style({\n opacity: 1,\n position: 'relative',\n zIndex: 999\n })\n ),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition(\n '* => void, * => hidden',\n animate(\n '75ms cubic-bezier(0.4, 0.0, 1, 1)',\n style({\n opacity: 0,\n position: 'relative',\n zIndex: 999\n })\n )\n )\n]);\n","import { AnimationEvent } from '@angular/animations';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n EmbeddedViewRef,\n HostBinding,\n HostListener,\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';\nimport { dialogFade } from '../utils/dialog.animations';\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 animations: [dialogFade],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [PortalModule]\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 /** The state of the Dialog animations. */\n @HostBinding('@state')\n protected get _animationState(): string {\n return this._animationStateSignal();\n }\n\n /** @hidden */\n private _class = '';\n\n /** @hidden */\n private _animationStateSignal = signal('void');\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\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [this.dialogConfig.containerClass ? this.dialogConfig.containerClass : '', this._class];\n }\n\n /** Handle end of animations, updating the state of the Message Toast. */\n @HostListener('@state.done', ['$event'])\n onAnimationEnd(event: AnimationEvent): void {\n const { toState } = event;\n\n if (toState === 'hidden') {\n this.ref._endClose$.next();\n this.ref._endClose$.complete();\n }\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._animationStateSignal.set('visible');\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 /**\n * @hidden\n * We need to wait until animation plays, and then send signal to the service to destroy the component.\n */\n private _listenOnClose(): void {\n const callback: () => void = () => {\n this._animationStateSignal.set('hidden');\n };\n this.ref.afterClosed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\n next: () => callback(),\n error: () => callback()\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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"}
|
|
1
|
+
{"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/utils/dialog.animations.ts","../../../../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, inject } 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}\n","<header>\n <div\n fd-bar\n role=\"group\"\n class=\"fd-dialog__header\"\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 { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport const dialogFade: AnimationTriggerMetadata = trigger('state', [\n state(\n 'void, hidden',\n style({\n opacity: 0,\n position: 'relative',\n zIndex: 999\n })\n ),\n state(\n 'visible',\n style({\n opacity: 1,\n position: 'relative',\n zIndex: 999\n })\n ),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition(\n '* => void, * => hidden',\n animate(\n '75ms cubic-bezier(0.4, 0.0, 1, 1)',\n style({\n opacity: 0,\n position: 'relative',\n zIndex: 999\n })\n )\n )\n]);\n","import { AnimationEvent } from '@angular/animations';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n EmbeddedViewRef,\n HostBinding,\n HostListener,\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';\nimport { dialogFade } from '../utils/dialog.animations';\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 animations: [dialogFade],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [PortalModule]\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 /** The state of the Dialog animations. */\n @HostBinding('@state')\n protected get _animationState(): string {\n return this._animationStateSignal();\n }\n\n /** @hidden */\n private _class = '';\n\n /** @hidden */\n private _animationStateSignal = signal('void');\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\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [this.dialogConfig.containerClass ? this.dialogConfig.containerClass : '', this._class];\n }\n\n /** Handle end of animations, updating the state of the Message Toast. */\n @HostListener('@state.done', ['$event'])\n onAnimationEnd(event: AnimationEvent): void {\n const { toState } = event;\n\n if (toState === 'hidden') {\n this.ref._endClose$.next();\n this.ref._endClose$.complete();\n }\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._animationStateSignal.set('visible');\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 /**\n * @hidden\n * We need to wait until animation plays, and then send signal to the service to destroy the component.\n */\n private _listenOnClose(): void {\n const callback: () => void = () => {\n this._animationStateSignal.set('hidden');\n };\n this.ref.afterClosed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\n next: () => callback(),\n error: () => callback()\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 { TemplateModule } 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 TemplateModule,\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 TemplateModule,\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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"}
|