@fundamental-ngx/core 0.60.0-rc.8 → 0.60.0
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-dialog.mjs +385 -215
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +16 -11
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +213 -200
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-title.mjs +13 -1
- package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
- package/package.json +3 -3
- package/types/fundamental-ngx-core-dialog.d.ts +460 -161
- package/types/fundamental-ngx-core-form.d.ts +2 -2
- package/types/fundamental-ngx-core-message-box.d.ts +3 -3
- package/types/fundamental-ngx-core-rating-indicator.d.ts +102 -81
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Injectable, input, booleanAttribute, Optional, ChangeDetectionStrategy, ViewEncapsulation, Component, inject,
|
|
2
|
+
import { InjectionToken, Injectable, computed, signal, input, booleanAttribute, Optional, ChangeDetectionStrategy, ViewEncapsulation, Component, contentChildren, inject, Injector, effect, Directive, DestroyRef, ElementRef, afterNextRender, isDevMode, ContentChild, ViewChild, Input, ComponentRef, EmbeddedViewRef, Type, TemplateRef, HostListener, HostBinding, PLATFORM_ID, Inject, NgModule } from '@angular/core';
|
|
3
3
|
import * as i3$2 from '@angular/cdk/portal';
|
|
4
4
|
import { PortalModule, CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';
|
|
5
5
|
import { AsyncPipe, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';
|
|
@@ -8,11 +8,10 @@ import { DynamicPortalComponent, TemplateDirective, FocusTrapService, RtlService
|
|
|
8
8
|
import { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';
|
|
9
9
|
import * as i3 from '@fundamental-ngx/core/scrollbar';
|
|
10
10
|
import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';
|
|
11
|
-
import { Subject, BehaviorSubject
|
|
11
|
+
import { Subject, BehaviorSubject } from 'rxjs';
|
|
12
12
|
import { IconComponent } from '@fundamental-ngx/core/icon';
|
|
13
|
-
import { FD_BUTTON_BAR_COMPONENT, BarComponent, BarRightDirective, BarLeftDirective, BarElementDirective,
|
|
13
|
+
import { FD_BUTTON_BAR_COMPONENT, ButtonBarComponent, BarComponent, BarRightDirective, BarLeftDirective, BarElementDirective, BarMiddleDirective } from '@fundamental-ngx/core/bar';
|
|
14
14
|
import { ContentDensityDirective, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
|
|
15
|
-
import { startWith, filter, debounceTime, observeOn, take } from 'rxjs/operators';
|
|
16
15
|
import { DEFAULT_TITLE_SIZE, TitleComponent } from '@fundamental-ngx/core/title';
|
|
17
16
|
import * as i2 from '@angular/cdk/overlay';
|
|
18
17
|
import { CdkScrollable, OverlayConfig, OverlayContainer } from '@angular/cdk/overlay';
|
|
@@ -23,6 +22,7 @@ import { A11yModule } from '@angular/cdk/a11y';
|
|
|
23
22
|
import { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
24
23
|
import { ESCAPE } from '@angular/cdk/keycodes';
|
|
25
24
|
import { Router, NavigationStart } from '@angular/router';
|
|
25
|
+
import { filter } from 'rxjs/operators';
|
|
26
26
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
27
27
|
|
|
28
28
|
const FD_DIALOG_BODY_COMPONENT = new InjectionToken('FdDialogBodyComponent');
|
|
@@ -30,32 +30,73 @@ const FD_DIALOG_FOCUS_TRAP_ERROR = new InjectionToken('FdDialogFocusTrapError');
|
|
|
30
30
|
|
|
31
31
|
class DialogConfigBase {
|
|
32
32
|
constructor() {
|
|
33
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Aria Modal for the dialog component element.
|
|
35
|
+
* @default false
|
|
36
|
+
*/
|
|
34
37
|
this.ariaModal = false;
|
|
35
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Whether the dialog should have a backdrop (overlay).
|
|
40
|
+
* The backdrop appears behind the dialog and typically dims the background content.
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
36
43
|
this.hasBackdrop = true;
|
|
37
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Whether clicking on the backdrop should close the dialog.
|
|
46
|
+
* Only works if hasBackdrop is true.
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
38
49
|
this.backdropClickCloseable = false;
|
|
39
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Whether the escape key should close the dialog.
|
|
52
|
+
* When true, pressing ESC will dismiss the dialog.
|
|
53
|
+
* @default true
|
|
54
|
+
*/
|
|
40
55
|
this.escKeyCloseable = true;
|
|
41
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Whether the dialog should be focus trapped.
|
|
58
|
+
* When true, keyboard focus is constrained within the dialog for accessibility.
|
|
59
|
+
* Users cannot tab to elements outside the dialog while it's open.
|
|
60
|
+
* @default true
|
|
61
|
+
*/
|
|
42
62
|
this.focusTrapped = true;
|
|
43
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* The container that the dialog is appended to.
|
|
65
|
+
* Can be a specific HTMLElement or 'body' for document body.
|
|
66
|
+
* @default 'body'
|
|
67
|
+
*/
|
|
44
68
|
this.container = 'body';
|
|
45
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Whether the dialog should have vertical padding (top and bottom).
|
|
71
|
+
* @default true
|
|
72
|
+
*/
|
|
46
73
|
this.verticalPadding = true;
|
|
47
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Whether the dialog should have horizontal padding (left and right).
|
|
76
|
+
* @default true
|
|
77
|
+
*/
|
|
48
78
|
this.horizontalPadding = true;
|
|
49
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Whether to completely disable all dialog body paddings.
|
|
81
|
+
* When true, overrides verticalPadding and horizontalPadding settings.
|
|
82
|
+
* @default false
|
|
83
|
+
*/
|
|
50
84
|
this.disablePaddings = false;
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* min-width:
|
|
56
|
-
*
|
|
85
|
+
/**
|
|
86
|
+
* Whether the dialog should have responsive horizontal padding that changes with dialog width.
|
|
87
|
+
* Padding classes are applied based on dialog width breakpoints:
|
|
88
|
+
* - max-width: 599px → .fd-dialog__content--s
|
|
89
|
+
* - min-width: 600px and max-width: 1023px → .fd-dialog__content--m
|
|
90
|
+
* - min-width: 1024px and max-width: 1439px → .fd-dialog__content--l
|
|
91
|
+
* - min-width: 1440px → .fd-dialog__content--xl
|
|
92
|
+
* @default false
|
|
93
|
+
*/
|
|
57
94
|
this.responsivePadding = false;
|
|
58
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Whether to close the dialog when Angular router navigation starts.
|
|
97
|
+
* Useful to automatically clean up dialogs when user navigates away.
|
|
98
|
+
* @default true
|
|
99
|
+
*/
|
|
59
100
|
this.closeOnNavigation = true;
|
|
60
101
|
}
|
|
61
102
|
}
|
|
@@ -72,44 +113,116 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
72
113
|
type: Injectable
|
|
73
114
|
}] });
|
|
74
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Enumeration of reasons why a dialog was dismissed.
|
|
118
|
+
* Used to identify the cause of dialog closure without explicit user action.
|
|
119
|
+
*/
|
|
75
120
|
var FD_DIALOG_DISMISS_REASON;
|
|
76
121
|
(function (FD_DIALOG_DISMISS_REASON) {
|
|
122
|
+
/** Dialog dismissed by pressing the Escape key */
|
|
77
123
|
FD_DIALOG_DISMISS_REASON["ESCAPE"] = "escape";
|
|
124
|
+
/** Dialog dismissed by clicking on the backdrop/overlay */
|
|
78
125
|
FD_DIALOG_DISMISS_REASON["BACKDROP"] = "backdrop";
|
|
126
|
+
/** Dialog dismissed due to router navigation */
|
|
79
127
|
FD_DIALOG_DISMISS_REASON["NAVIGATION_CHANGE"] = "navigation change";
|
|
128
|
+
/** Dialog dismissed because the service was destroyed */
|
|
129
|
+
FD_DIALOG_DISMISS_REASON["SERVICE_DESTROYED"] = "service destroyed";
|
|
80
130
|
})(FD_DIALOG_DISMISS_REASON || (FD_DIALOG_DISMISS_REASON = {}));
|
|
81
131
|
class DialogRefBase {
|
|
82
132
|
/** @hidden */
|
|
83
133
|
constructor() {
|
|
84
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* Computed signal indicating whether the dialog has been loaded and initialized.
|
|
136
|
+
* Returns true once the dialog view has finished loading.
|
|
137
|
+
*/
|
|
138
|
+
this.isLoaded = computed(() => this.status() !== 'pending', ...(ngDevMode ? [{ debugName: "isLoaded" }] : []));
|
|
139
|
+
/**
|
|
140
|
+
* Computed signal indicating whether the dialog has been closed or dismissed.
|
|
141
|
+
* Returns true if status is 'closed' or 'dismissed'.
|
|
142
|
+
*/
|
|
143
|
+
this.isClosed = computed(() => {
|
|
144
|
+
const status = this.status();
|
|
145
|
+
return status === 'closed' || status === 'dismissed';
|
|
146
|
+
}, ...(ngDevMode ? [{ debugName: "isClosed" }] : []));
|
|
147
|
+
/**
|
|
148
|
+
* Computed signal indicating whether the dialog is currently open and active.
|
|
149
|
+
* Returns true if dialog is loaded but not yet closed/dismissed.
|
|
150
|
+
*/
|
|
151
|
+
this.isOpen = computed(() => this.isLoaded() && !this.isClosed(), ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
|
|
152
|
+
/**
|
|
153
|
+
* @hidden
|
|
154
|
+
* Subject that signals the end of dialog lifecycle.
|
|
155
|
+
* Completes when dialog is closed or dismissed.
|
|
156
|
+
* Used by dialog container components to track lifecycle.
|
|
157
|
+
*/
|
|
85
158
|
this._endClose$ = new Subject();
|
|
86
|
-
/**
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
this.
|
|
91
|
-
|
|
159
|
+
/**
|
|
160
|
+
* @hidden
|
|
161
|
+
* Internal subject for backward-compatible afterClosed observable.
|
|
162
|
+
*/
|
|
163
|
+
this.afterClosedSubject = new Subject();
|
|
164
|
+
/**
|
|
165
|
+
* @hidden
|
|
166
|
+
* Internal subject for backward-compatible afterLoaded observable.
|
|
167
|
+
*/
|
|
168
|
+
this.afterLoadedSubject = new Subject();
|
|
169
|
+
/** @hidden Internal signal tracking dialog lifecycle status */
|
|
170
|
+
this._statusSignal = signal('pending', ...(ngDevMode ? [{ debugName: "_statusSignal" }] : []));
|
|
171
|
+
/** @hidden Internal signal storing the result of dialog closure */
|
|
172
|
+
this._closeResultSignal = signal(null, ...(ngDevMode ? [{ debugName: "_closeResultSignal" }] : []));
|
|
173
|
+
// Initialize readonly signals from private signals
|
|
174
|
+
this.status = this._statusSignal.asReadonly();
|
|
175
|
+
this.closeResult = this._closeResultSignal.asReadonly();
|
|
176
|
+
// Initialize observables from protected subjects
|
|
177
|
+
this.afterClosed = this.afterClosedSubject.asObservable();
|
|
178
|
+
this.afterLoaded = this.afterLoadedSubject.asObservable();
|
|
92
179
|
}
|
|
93
180
|
/**
|
|
94
|
-
* Closes the dialog and
|
|
95
|
-
*
|
|
181
|
+
* Closes the dialog normally and returns a result value.
|
|
182
|
+
* Updates signal state and emits to observables for backward compatibility.
|
|
183
|
+
* @param result - Optional result value to return to the caller
|
|
96
184
|
*/
|
|
97
185
|
close(result) {
|
|
186
|
+
// Update signal state
|
|
187
|
+
this._statusSignal.set('closed');
|
|
188
|
+
this._closeResultSignal.set({
|
|
189
|
+
status: 'closed',
|
|
190
|
+
value: result
|
|
191
|
+
});
|
|
192
|
+
// Maintain backward compatibility with RxJS API
|
|
98
193
|
this._endClose$.next();
|
|
99
194
|
this._endClose$.complete();
|
|
100
|
-
this.
|
|
101
|
-
this.
|
|
195
|
+
this.afterClosedSubject.next(result);
|
|
196
|
+
this.afterClosedSubject.complete();
|
|
102
197
|
}
|
|
103
198
|
/**
|
|
104
|
-
* Dismisses the dialog
|
|
105
|
-
*
|
|
199
|
+
* Dismisses the dialog without a result, typically due to user cancellation.
|
|
200
|
+
* Updates signal state and emits error to observables for backward compatibility.
|
|
201
|
+
* @param reason - Optional reason for dismissal (ESC key, backdrop click, etc.)
|
|
106
202
|
*/
|
|
107
203
|
dismiss(reason) {
|
|
108
|
-
|
|
204
|
+
// Update signal state
|
|
205
|
+
this._statusSignal.set('dismissed');
|
|
206
|
+
this._closeResultSignal.set({
|
|
207
|
+
status: 'dismissed',
|
|
208
|
+
reason
|
|
209
|
+
});
|
|
210
|
+
// Maintain backward compatibility with RxJS API
|
|
211
|
+
this._endClose$.next();
|
|
212
|
+
this._endClose$.complete();
|
|
213
|
+
this.afterClosedSubject.error(reason);
|
|
109
214
|
}
|
|
110
|
-
/**
|
|
215
|
+
/**
|
|
216
|
+
* Marks the dialog as loaded and initialized.
|
|
217
|
+
* Called internally after the dialog view has been created and rendered.
|
|
218
|
+
* Updates signal state and emits to observables for backward compatibility.
|
|
219
|
+
* @internal
|
|
220
|
+
*/
|
|
111
221
|
loaded() {
|
|
112
|
-
|
|
222
|
+
// Update signal state
|
|
223
|
+
this._statusSignal.set('loaded');
|
|
224
|
+
// Maintain backward compatibility with RxJS API
|
|
225
|
+
this.afterLoadedSubject.next(true);
|
|
113
226
|
}
|
|
114
227
|
}
|
|
115
228
|
|
|
@@ -190,7 +303,7 @@ class DialogBodyComponent {
|
|
|
190
303
|
this.disablePaddings = input(false, { ...(ngDevMode ? { debugName: "disablePaddings" } : {}), transform: booleanAttribute });
|
|
191
304
|
}
|
|
192
305
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogBodyComponent, deps: [{ token: i0.ElementRef }, { token: DialogConfig, optional: true }, { token: DialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
193
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: DialogBodyComponent, isStandalone: true, selector: "fd-dialog-body", inputs: { disablePaddings: { classPropertyName: "disablePaddings", publicName: "disablePaddings", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fd-dialog__body": "true", "class.fd-settings__dialog-body": "dialogConfig.settings", "class.fd-dialog__body--no-vertical-padding": "!dialogConfig.verticalPadding", "class.fd-dialog__body--no-horizontal-padding": "!dialogConfig.horizontalPadding", "style.min-height": "dialogConfig.bodyMinHeight", "style.padding": "dialogConfig.disablePaddings || disablePaddings() || dialogConfig.settings ? 0 : \"1rem\"" } }, providers: [
|
|
306
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: DialogBodyComponent, isStandalone: true, selector: "fd-dialog-body", inputs: { disablePaddings: { classPropertyName: "disablePaddings", publicName: "disablePaddings", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fd-dialog__body": "true", "class.fd-settings__dialog-body": "dialogConfig.settings", "class.fd-dialog__body--no-vertical-padding": "!dialogConfig.verticalPadding", "class.fd-dialog__body--no-horizontal-padding": "!dialogConfig.horizontalPadding && !dialogConfig.responsivePadding", "style.min-height": "dialogConfig.bodyMinHeight", "style.padding": "dialogConfig.disablePaddings || disablePaddings() || dialogConfig.settings ? 0 : dialogConfig.responsivePadding ? null : \"1rem\"" } }, providers: [
|
|
194
307
|
{
|
|
195
308
|
provide: FD_DIALOG_BODY_COMPONENT,
|
|
196
309
|
useExisting: DialogBodyComponent
|
|
@@ -203,9 +316,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
203
316
|
'[class.fd-dialog__body]': 'true',
|
|
204
317
|
'[class.fd-settings__dialog-body]': 'dialogConfig.settings',
|
|
205
318
|
'[class.fd-dialog__body--no-vertical-padding]': '!dialogConfig.verticalPadding',
|
|
206
|
-
'[class.fd-dialog__body--no-horizontal-padding]': '!dialogConfig.horizontalPadding',
|
|
319
|
+
'[class.fd-dialog__body--no-horizontal-padding]': '!dialogConfig.horizontalPadding && !dialogConfig.responsivePadding',
|
|
207
320
|
'[style.min-height]': 'dialogConfig.bodyMinHeight',
|
|
208
|
-
'[style.padding]': 'dialogConfig.disablePaddings || disablePaddings() || dialogConfig.settings ? 0 : "1rem"'
|
|
321
|
+
'[style.padding]': 'dialogConfig.disablePaddings || disablePaddings() || dialogConfig.settings ? 0 : dialogConfig.responsivePadding ? null : "1rem"'
|
|
209
322
|
}, providers: [
|
|
210
323
|
{
|
|
211
324
|
provide: FD_DIALOG_BODY_COMPONENT,
|
|
@@ -258,51 +371,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
258
371
|
|
|
259
372
|
class DialogFooterBase {
|
|
260
373
|
constructor() {
|
|
374
|
+
/**
|
|
375
|
+
* @hidden
|
|
376
|
+
* Signal-based query for custom footer templates.
|
|
377
|
+
* Templates are identified by their fdkTemplate name attribute.
|
|
378
|
+
*/
|
|
379
|
+
this.customTemplates = contentChildren(TemplateDirective, ...(ngDevMode ? [{ debugName: "customTemplates" }] : []));
|
|
380
|
+
/**
|
|
381
|
+
* @hidden
|
|
382
|
+
* Signal-based query for button bar components.
|
|
383
|
+
*/
|
|
384
|
+
this.buttons = contentChildren(FD_BUTTON_BAR_COMPONENT, { ...(ngDevMode ? { debugName: "buttons" } : {}), read: ButtonBarComponent });
|
|
385
|
+
/**
|
|
386
|
+
* @hidden
|
|
387
|
+
* Signal containing the custom footer template, if provided.
|
|
388
|
+
* Returns the TemplateRef when a template with name='footer' is projected.
|
|
389
|
+
* This template uses the predefined Bar layout.
|
|
390
|
+
*/
|
|
391
|
+
this.footerTemplate = computed(() => this.customTemplates().find((t) => t.name === 'footer')?.templateRef, ...(ngDevMode ? [{ debugName: "footerTemplate" }] : []));
|
|
392
|
+
/**
|
|
393
|
+
* @hidden
|
|
394
|
+
* Signal containing the custom footer template without predefined Bar, if provided.
|
|
395
|
+
* Returns the TemplateRef when a template with name='customFooter' is projected.
|
|
396
|
+
* This template gives full control to the user without any predefined layout.
|
|
397
|
+
*/
|
|
398
|
+
this.customFooterTemplate = computed(() => this.customTemplates().find((t) => t.name === 'customFooter')?.templateRef, ...(ngDevMode ? [{ debugName: "customFooterTemplate" }] : []));
|
|
261
399
|
/** @hidden */
|
|
262
|
-
this.
|
|
400
|
+
this.injector = inject(Injector);
|
|
263
401
|
}
|
|
264
|
-
/**
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
402
|
+
/**
|
|
403
|
+
* @hidden
|
|
404
|
+
* Sets up an effect to add a CSS class to button elements when buttons change.
|
|
405
|
+
* Must be called within an injection context or will use runInInjectionContext.
|
|
406
|
+
* @param className - The CSS class name to add to each button element
|
|
407
|
+
*/
|
|
269
408
|
_listenForButtonChanges(className) {
|
|
270
|
-
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
const
|
|
274
|
-
if (
|
|
275
|
-
buttonElement.
|
|
409
|
+
effect(() => {
|
|
410
|
+
const buttonBars = this.buttons();
|
|
411
|
+
buttonBars.forEach((buttonBar) => {
|
|
412
|
+
const button = buttonBar.buttonComponent();
|
|
413
|
+
if (button) {
|
|
414
|
+
const buttonElement = button.elementRef.nativeElement;
|
|
415
|
+
if (!buttonElement.classList.contains(className)) {
|
|
416
|
+
buttonElement.classList.add(className);
|
|
417
|
+
}
|
|
276
418
|
}
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
this.buttons.changes.pipe(startWith(1)).subscribe(() => {
|
|
280
|
-
this.buttons.forEach((buttonBar) => {
|
|
281
|
-
addClassToButton(buttonBar);
|
|
282
419
|
});
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
/** @hidden Assign custom templates */
|
|
286
|
-
_assignCustomTemplates() {
|
|
287
|
-
const footerTemplate = this.customTemplates.find((template) => template.name === 'footer');
|
|
288
|
-
this.footerTemplate = footerTemplate ? footerTemplate.templateRef : undefined;
|
|
289
|
-
// Custom template that doesn't use predefined Bar. The user has to set everything
|
|
290
|
-
const customFooterTemplate = this.customTemplates.find((template) => template.name === 'customFooter');
|
|
291
|
-
this.customFooterTemplate = customFooterTemplate ? customFooterTemplate.templateRef : undefined;
|
|
292
|
-
this._cdr.detectChanges();
|
|
420
|
+
}, { injector: this.injector });
|
|
293
421
|
}
|
|
294
422
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogFooterBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
295
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
423
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.0", type: DialogFooterBase, isStandalone: true, queries: [{ propertyName: "customTemplates", predicate: TemplateDirective, isSignal: true }, { propertyName: "buttons", predicate: FD_BUTTON_BAR_COMPONENT, read: ButtonBarComponent, isSignal: true }], ngImport: i0 }); }
|
|
296
424
|
}
|
|
297
425
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogFooterBase, decorators: [{
|
|
298
426
|
type: Directive
|
|
299
|
-
}], propDecorators: { customTemplates: [{
|
|
300
|
-
type: ContentChildren,
|
|
301
|
-
args: [TemplateDirective]
|
|
302
|
-
}], buttons: [{
|
|
303
|
-
type: ContentChildren,
|
|
304
|
-
args: [FD_BUTTON_BAR_COMPONENT]
|
|
305
|
-
}] } });
|
|
427
|
+
}], propDecorators: { customTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TemplateDirective), { isSignal: true }] }], buttons: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FD_BUTTON_BAR_COMPONENT), { ...{ read: ButtonBarComponent }, isSignal: true }] }] } });
|
|
306
428
|
|
|
307
429
|
const DialogButtonClass = 'fd-dialog__decisive-button';
|
|
308
430
|
/**
|
|
@@ -324,51 +446,45 @@ class DialogFooterComponent extends DialogFooterBase {
|
|
|
324
446
|
this.dialogConfig = inject(DialogConfig, { optional: true }) || {};
|
|
325
447
|
}
|
|
326
448
|
/** @hidden */
|
|
327
|
-
ngAfterContentInit() {
|
|
328
|
-
super.ngAfterContentInit();
|
|
329
|
-
}
|
|
330
|
-
/** @hidden */
|
|
331
449
|
ngAfterViewInit() {
|
|
332
450
|
this._listenForButtonChanges(DialogButtonClass);
|
|
333
451
|
}
|
|
334
452
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogFooterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
335
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: DialogFooterComponent, isStandalone: true, selector: "fd-dialog-footer", usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
453
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: DialogFooterComponent, isStandalone: true, selector: "fd-dialog-footer", usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
336
454
|
}
|
|
337
455
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogFooterComponent, decorators: [{
|
|
338
456
|
type: Component,
|
|
339
|
-
args: [{ selector: 'fd-dialog-footer', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [BarComponent, BarRightDirective, ContentDensityDirective, NgTemplateOutlet], template: "<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" }]
|
|
457
|
+
args: [{ selector: 'fd-dialog-footer', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [BarComponent, BarRightDirective, ContentDensityDirective, NgTemplateOutlet], template: "<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" }]
|
|
340
458
|
}] });
|
|
341
459
|
|
|
342
460
|
class DialogHeaderBase {
|
|
343
461
|
constructor() {
|
|
344
|
-
/**
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
this.
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
});
|
|
363
|
-
this._changeDetectorRef.markForCheck();
|
|
462
|
+
/**
|
|
463
|
+
* @hidden
|
|
464
|
+
* Signal-based query for custom header/subheader templates.
|
|
465
|
+
* Templates are identified by their fdkTemplate name attribute.
|
|
466
|
+
*/
|
|
467
|
+
this.customTemplates = contentChildren(TemplateDirective, ...(ngDevMode ? [{ debugName: "customTemplates" }] : []));
|
|
468
|
+
/**
|
|
469
|
+
* @hidden
|
|
470
|
+
* Signal containing the custom header template, if provided.
|
|
471
|
+
* Returns the TemplateRef when a template with name='header' is projected.
|
|
472
|
+
*/
|
|
473
|
+
this.headerTemplate = computed(() => this.customTemplates().find((t) => t.name === 'header')?.templateRef, ...(ngDevMode ? [{ debugName: "headerTemplate" }] : []));
|
|
474
|
+
/**
|
|
475
|
+
* @hidden
|
|
476
|
+
* Signal containing the custom subheader template, if provided.
|
|
477
|
+
* Returns the TemplateRef when a template with name='subheader' is projected.
|
|
478
|
+
*/
|
|
479
|
+
this.subHeaderTemplate = computed(() => this.customTemplates().find((t) => t.name === 'subheader')?.templateRef, ...(ngDevMode ? [{ debugName: "subHeaderTemplate" }] : []));
|
|
364
480
|
}
|
|
365
481
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogHeaderBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
366
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
482
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.0", type: DialogHeaderBase, isStandalone: true, providers: [
|
|
367
483
|
{
|
|
368
484
|
provide: DEFAULT_TITLE_SIZE,
|
|
369
485
|
useValue: 5
|
|
370
486
|
}
|
|
371
|
-
], queries: [{ propertyName: "customTemplates", predicate: TemplateDirective }], ngImport: i0 }); }
|
|
487
|
+
], queries: [{ propertyName: "customTemplates", predicate: TemplateDirective, isSignal: true }], ngImport: i0 }); }
|
|
372
488
|
}
|
|
373
489
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogHeaderBase, decorators: [{
|
|
374
490
|
type: Directive,
|
|
@@ -380,10 +496,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
380
496
|
}
|
|
381
497
|
]
|
|
382
498
|
}]
|
|
383
|
-
}], propDecorators: { customTemplates: [{
|
|
384
|
-
type: ContentChildren,
|
|
385
|
-
args: [TemplateDirective]
|
|
386
|
-
}] } });
|
|
499
|
+
}], propDecorators: { customTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TemplateDirective), { isSignal: true }] }] } });
|
|
387
500
|
|
|
388
501
|
/**
|
|
389
502
|
* Applies fundamental layout and styling to the contents of a dialog header.
|
|
@@ -407,7 +520,7 @@ class DialogHeaderComponent extends DialogHeaderBase {
|
|
|
407
520
|
provide: DEFAULT_TITLE_SIZE,
|
|
408
521
|
useValue: 5
|
|
409
522
|
}
|
|
410
|
-
], usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
523
|
+
], usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "clear", "size", "role"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
411
524
|
}
|
|
412
525
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogHeaderComponent, decorators: [{
|
|
413
526
|
type: Component,
|
|
@@ -423,46 +536,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
423
536
|
BarElementDirective,
|
|
424
537
|
ContentDensityDirective,
|
|
425
538
|
NgTemplateOutlet
|
|
426
|
-
], template: "<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" }]
|
|
539
|
+
], template: "<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" }]
|
|
427
540
|
}] });
|
|
428
541
|
|
|
429
542
|
/** Service used to dynamically generate a dialog. */
|
|
430
543
|
class DialogBaseService {
|
|
544
|
+
/** @hidden */
|
|
431
545
|
constructor() {
|
|
432
|
-
/** @hidden
|
|
433
|
-
this.
|
|
546
|
+
/** @hidden mutable dialogs signal */
|
|
547
|
+
this.dialogsSignal = signal([], ...(ngDevMode ? [{ debugName: "dialogsSignal" }] : []));
|
|
548
|
+
/**
|
|
549
|
+
* Readonly signal containing all currently open dialog component references.
|
|
550
|
+
* Use this to observe the list of active dialogs.
|
|
551
|
+
*/
|
|
552
|
+
this.dialogs = this.dialogsSignal.asReadonly();
|
|
553
|
+
/**
|
|
554
|
+
* Computed signal indicating whether any dialogs are currently open.
|
|
555
|
+
* Useful for conditional logic based on dialog presence.
|
|
556
|
+
*/
|
|
557
|
+
this.hasOpenDialogs = computed(() => this.dialogs().length > 0, ...(ngDevMode ? [{ debugName: "hasOpenDialogs" }] : []));
|
|
558
|
+
/** Computed: count of open dialogs */
|
|
559
|
+
this.openDialogCount = computed(() => this.dialogs().length, ...(ngDevMode ? [{ debugName: "openDialogCount" }] : []));
|
|
434
560
|
/** @hidden */
|
|
435
561
|
this._destroyRef = inject(DestroyRef);
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
*/
|
|
441
|
-
hasOpenDialogs() {
|
|
442
|
-
return this._dialogs && this._dialogs.length > 0;
|
|
562
|
+
// Auto-cleanup all dialogs when service is destroyed
|
|
563
|
+
this._destroyRef.onDestroy(() => {
|
|
564
|
+
this.dismissAll(FD_DIALOG_DISMISS_REASON.SERVICE_DESTROYED);
|
|
565
|
+
});
|
|
443
566
|
}
|
|
444
567
|
/** Dismisses all currently open dialogs. */
|
|
445
568
|
dismissAll(reason) {
|
|
446
|
-
this.
|
|
447
|
-
|
|
448
|
-
|
|
569
|
+
const dialogs = [...this.dialogsSignal()];
|
|
570
|
+
dialogs.forEach((item) => {
|
|
571
|
+
try {
|
|
572
|
+
item.instance.ref?.dismiss(reason);
|
|
573
|
+
}
|
|
574
|
+
catch (e) {
|
|
575
|
+
console.error('Error dismissing dialog:', e);
|
|
576
|
+
}
|
|
577
|
+
try {
|
|
578
|
+
item.destroy();
|
|
579
|
+
}
|
|
580
|
+
catch (e) {
|
|
581
|
+
console.error('Error destroying dialog:', e);
|
|
582
|
+
}
|
|
449
583
|
});
|
|
450
|
-
this.
|
|
584
|
+
this.dialogsSignal.set([]);
|
|
451
585
|
}
|
|
452
|
-
/** @hidden Extends configuration using default values*/
|
|
586
|
+
/** @hidden Extends configuration using default values */
|
|
453
587
|
_applyDefaultConfig(config, defaultConfig) {
|
|
454
588
|
return { ...defaultConfig, ...config };
|
|
455
589
|
}
|
|
590
|
+
/** @hidden Register a dialog and setup auto-cleanup */
|
|
591
|
+
_registerDialog(dialog) {
|
|
592
|
+
this.dialogsSignal.update((dialogs) => [...dialogs, dialog]);
|
|
593
|
+
// Auto-remove when dialog closes
|
|
594
|
+
dialog.instance.ref.afterClosed.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({
|
|
595
|
+
next: () => this._destroyDialog(dialog),
|
|
596
|
+
error: () => this._destroyDialog(dialog)
|
|
597
|
+
});
|
|
598
|
+
}
|
|
456
599
|
/** @hidden Destroy existing dialog */
|
|
457
600
|
_destroyDialog(dialog) {
|
|
458
|
-
this.
|
|
601
|
+
this.dialogsSignal.update((dialogs) => dialogs.filter((d) => d !== dialog));
|
|
602
|
+
try {
|
|
603
|
+
dialog.destroy();
|
|
604
|
+
}
|
|
605
|
+
catch (e) {
|
|
606
|
+
console.error('Error destroying dialog:', e);
|
|
607
|
+
}
|
|
459
608
|
}
|
|
460
609
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogBaseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
461
610
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogBaseService }); }
|
|
462
611
|
}
|
|
463
612
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogBaseService, decorators: [{
|
|
464
613
|
type: Injectable
|
|
465
|
-
}] });
|
|
614
|
+
}], ctorParameters: () => [] });
|
|
466
615
|
|
|
467
616
|
class DialogFullScreenTogglerButtonComponent {
|
|
468
617
|
constructor() {
|
|
@@ -529,21 +678,26 @@ function coerceMetricValue(value) {
|
|
|
529
678
|
return typeof value === 'number' ? `${value}px` : value;
|
|
530
679
|
}
|
|
531
680
|
class DialogBase {
|
|
681
|
+
/** @hidden */
|
|
532
682
|
constructor() {
|
|
533
683
|
/** @hidden */
|
|
534
684
|
this._focusTrapService = inject(FocusTrapService);
|
|
535
685
|
/** @hidden */
|
|
536
|
-
this._changeDetectorRef = inject(ChangeDetectorRef);
|
|
537
|
-
/** @hidden */
|
|
538
686
|
this.elementRef = inject(ElementRef);
|
|
539
687
|
/** @hidden */
|
|
540
688
|
this._router = inject(Router);
|
|
541
689
|
/** @hidden */
|
|
542
690
|
this._rtlService = inject(RtlService, { optional: true });
|
|
543
691
|
/** @hidden */
|
|
544
|
-
this.
|
|
692
|
+
this._injector = inject(Injector);
|
|
545
693
|
/** @hidden */
|
|
546
|
-
this.
|
|
694
|
+
this._destroyRef = inject(DestroyRef);
|
|
695
|
+
/** @hidden RTL direction computed from service */
|
|
696
|
+
this.dir = computed(() => ((this._rtlService?.rtl() ?? false) ? 'rtl' : 'ltr'), ...(ngDevMode ? [{ debugName: "dir" }] : []));
|
|
697
|
+
/** @hidden Dialog padding sizes - signal for reactive updates */
|
|
698
|
+
this.dialogPaddingSize = signal(undefined, ...(ngDevMode ? [{ debugName: "dialogPaddingSize" }] : []));
|
|
699
|
+
/** @hidden Dialog width - tracked via ResizeObserver */
|
|
700
|
+
this._dialogWidth = signal(0, ...(ngDevMode ? [{ debugName: "_dialogWidth" }] : []));
|
|
547
701
|
/**
|
|
548
702
|
* @hidden
|
|
549
703
|
* Used to mute errors of focus trap during unit tests (jsdom incompatibility).
|
|
@@ -551,8 +705,22 @@ class DialogBase {
|
|
|
551
705
|
this._focusTrapError = inject(FD_DIALOG_FOCUS_TRAP_ERROR, {
|
|
552
706
|
optional: true
|
|
553
707
|
});
|
|
554
|
-
|
|
555
|
-
this.
|
|
708
|
+
// Setup navigation listener (doesn't require view)
|
|
709
|
+
this._listenAndCloseOnNavigation();
|
|
710
|
+
// Reactive effect: automatically update padding size when dialog width changes
|
|
711
|
+
effect(() => {
|
|
712
|
+
const width = this._dialogWidth();
|
|
713
|
+
if (this._config.responsivePadding && width > 0) {
|
|
714
|
+
this.dialogPaddingSize.set(dialogWidthToSize(width));
|
|
715
|
+
}
|
|
716
|
+
});
|
|
717
|
+
// Setup view-dependent initialization after render
|
|
718
|
+
afterNextRender(() => {
|
|
719
|
+
this.setupFocusTrap();
|
|
720
|
+
this.applyStyles();
|
|
721
|
+
this.setupResizeObserver();
|
|
722
|
+
this._ref.loaded();
|
|
723
|
+
}, { injector: this._injector });
|
|
556
724
|
}
|
|
557
725
|
/** @hidden Listen and close dialog on Escape key */
|
|
558
726
|
closeDialogEsc(event) {
|
|
@@ -567,95 +735,91 @@ class DialogBase {
|
|
|
567
735
|
}
|
|
568
736
|
}
|
|
569
737
|
/** @hidden */
|
|
570
|
-
ngOnInit() {
|
|
571
|
-
this._listenAndCloseOnNavigation();
|
|
572
|
-
}
|
|
573
|
-
/** @hidden */
|
|
574
|
-
ngAfterViewInit() {
|
|
575
|
-
this._trapFocus();
|
|
576
|
-
this._setPosition();
|
|
577
|
-
this._setWidthHeight();
|
|
578
|
-
this._listenOnWindowResize();
|
|
579
|
-
this.adjustResponsivePadding();
|
|
580
|
-
this._ref.loaded();
|
|
581
|
-
}
|
|
582
|
-
/** @hidden */
|
|
583
738
|
ngOnDestroy() {
|
|
584
739
|
this._deactivateFocusTrap();
|
|
585
|
-
this.
|
|
740
|
+
this._resizeObserver?.disconnect();
|
|
586
741
|
}
|
|
587
|
-
/**
|
|
742
|
+
/**
|
|
743
|
+
* @deprecated Use reactive ResizeObserver instead. This method is kept for backward compatibility
|
|
744
|
+
* but is no longer needed as padding updates happen automatically via signals.
|
|
745
|
+
* @hidden Determine dialog padding size based on dialogs window width
|
|
746
|
+
*/
|
|
588
747
|
adjustResponsivePadding() {
|
|
589
|
-
if (this._config.responsivePadding) {
|
|
590
|
-
const
|
|
591
|
-
this.
|
|
592
|
-
this._changeDetectorRef.detectChanges();
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
/** @hidden Listen on NavigationStart event and dismiss the dialog */
|
|
596
|
-
_listenAndCloseOnNavigation() {
|
|
597
|
-
if (this._router) {
|
|
598
|
-
this._subscriptions.add(this._router.events
|
|
599
|
-
.pipe(filter((event) => event instanceof NavigationStart && !!this._config.closeOnNavigation))
|
|
600
|
-
.subscribe(() => this._ref.dismiss(FD_DIALOG_DISMISS_REASON.NAVIGATION_CHANGE)));
|
|
748
|
+
if (this._config.responsivePadding && this.dialogWindow) {
|
|
749
|
+
const width = this.dialogWindow.nativeElement.getBoundingClientRect().width;
|
|
750
|
+
this._dialogWidth.set(width); // Let the effect handle the rest
|
|
601
751
|
}
|
|
602
752
|
}
|
|
603
|
-
/** @hidden
|
|
604
|
-
|
|
605
|
-
if (this._config.focusTrapped) {
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
this.
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
}
|
|
618
|
-
}));
|
|
753
|
+
/** @hidden Setup focus trap - called from constructor via afterNextRender */
|
|
754
|
+
setupFocusTrap() {
|
|
755
|
+
if (this._config.focusTrapped && this.dialogWindow) {
|
|
756
|
+
try {
|
|
757
|
+
this._focusTrapId = this._focusTrapService.createFocusTrap(this.dialogWindow.nativeElement, {
|
|
758
|
+
clickOutsideDeactivates: this._config.backdropClickCloseable && this._config.hasBackdrop,
|
|
759
|
+
escapeDeactivates: false,
|
|
760
|
+
fallbackFocus: this.dialogWindow.nativeElement,
|
|
761
|
+
allowOutsideClick: () => true
|
|
762
|
+
});
|
|
763
|
+
}
|
|
764
|
+
catch (e) {
|
|
765
|
+
isDevMode() && this._focusTrapError !== true && console.error(e);
|
|
766
|
+
}
|
|
619
767
|
}
|
|
620
768
|
}
|
|
621
|
-
/**
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
769
|
+
/**
|
|
770
|
+
* @hidden
|
|
771
|
+
* Apply all style configurations to dialog element (position and dimensions).
|
|
772
|
+
* Combines position and size styling in one method for better organization.
|
|
773
|
+
*/
|
|
774
|
+
applyStyles() {
|
|
775
|
+
const el = this.dialogWindow.nativeElement;
|
|
776
|
+
const { position, width, height, minWidth, minHeight, maxWidth, maxHeight } = this._config;
|
|
777
|
+
// Apply position styles
|
|
778
|
+
if (position) {
|
|
779
|
+
el.style.top = coerceMetricValue(position.top);
|
|
780
|
+
el.style.bottom = coerceMetricValue(position.bottom);
|
|
781
|
+
el.style.left = coerceMetricValue(position.left);
|
|
782
|
+
el.style.right = coerceMetricValue(position.right);
|
|
632
783
|
}
|
|
633
784
|
else {
|
|
634
|
-
|
|
785
|
+
el.style.position = 'relative';
|
|
635
786
|
}
|
|
787
|
+
// Apply dimension styles
|
|
788
|
+
el.style.width = coerceMetricValue(width);
|
|
789
|
+
el.style.height = coerceMetricValue(height);
|
|
790
|
+
el.style.minWidth = coerceMetricValue(minWidth);
|
|
791
|
+
el.style.minHeight = coerceMetricValue(minHeight);
|
|
792
|
+
el.style.maxWidth = coerceMetricValue(maxWidth);
|
|
793
|
+
el.style.maxHeight = coerceMetricValue(maxHeight);
|
|
636
794
|
}
|
|
637
|
-
/**
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
this.dialogWindow.nativeElement.style.minHeight = coerceMetricValue(this._config.minHeight);
|
|
643
|
-
this.dialogWindow.nativeElement.style.maxWidth = coerceMetricValue(this._config.maxWidth);
|
|
644
|
-
this.dialogWindow.nativeElement.style.maxHeight = coerceMetricValue(this._config.maxHeight);
|
|
645
|
-
}
|
|
646
|
-
/** @hidden Listen on window resize and adjust padding */
|
|
647
|
-
_listenOnWindowResize() {
|
|
795
|
+
/**
|
|
796
|
+
* @hidden
|
|
797
|
+
* Sets up ResizeObserver to track dialog element size changes.
|
|
798
|
+
*/
|
|
799
|
+
setupResizeObserver() {
|
|
648
800
|
if (this._config.responsivePadding) {
|
|
649
|
-
this.
|
|
650
|
-
.
|
|
651
|
-
|
|
801
|
+
this._resizeObserver = new ResizeObserver((entries) => {
|
|
802
|
+
if (entries.length > 0) {
|
|
803
|
+
const width = entries[0].contentRect.width;
|
|
804
|
+
this._dialogWidth.set(width);
|
|
805
|
+
}
|
|
806
|
+
});
|
|
807
|
+
this._resizeObserver.observe(this.dialogWindow.nativeElement);
|
|
652
808
|
}
|
|
653
809
|
}
|
|
654
|
-
/** @hidden */
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
810
|
+
/** @hidden Listen on NavigationStart event and dismiss the dialog */
|
|
811
|
+
_listenAndCloseOnNavigation() {
|
|
812
|
+
if (this._router) {
|
|
813
|
+
this._router.events
|
|
814
|
+
.pipe(filter((event) => event instanceof NavigationStart && !!this._config.closeOnNavigation), takeUntilDestroyed(this._destroyRef))
|
|
815
|
+
.subscribe(() => this._ref.dismiss(FD_DIALOG_DISMISS_REASON.NAVIGATION_CHANGE));
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
/** @hidden Deactivate focus trap on destroy */
|
|
819
|
+
_deactivateFocusTrap() {
|
|
820
|
+
if (this._focusTrapId) {
|
|
821
|
+
this._focusTrapService.deactivateFocusTrap(this._focusTrapId);
|
|
822
|
+
}
|
|
659
823
|
}
|
|
660
824
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
661
825
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: DialogBase, isStandalone: true, host: { listeners: { "keydown": "closeDialogEsc($event)", "mousedown": "closeDialog($event.target)" }, properties: { "attr.dir": "dir()" } }, ngImport: i0 }); }
|
|
@@ -669,7 +833,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
669
833
|
'(mousedown)': 'closeDialog($event.target)'
|
|
670
834
|
}
|
|
671
835
|
}]
|
|
672
|
-
}] });
|
|
836
|
+
}], ctorParameters: () => [] });
|
|
673
837
|
|
|
674
838
|
let titleUniqueId = 1;
|
|
675
839
|
class DialogTitleDirective {
|
|
@@ -793,7 +957,6 @@ class DialogComponent extends DialogBase {
|
|
|
793
957
|
}
|
|
794
958
|
/** @hidden */
|
|
795
959
|
ngOnInit() {
|
|
796
|
-
super.ngOnInit();
|
|
797
960
|
this._listenOnHidden();
|
|
798
961
|
this.buildComponentCssClass();
|
|
799
962
|
}
|
|
@@ -803,7 +966,6 @@ class DialogComponent extends DialogBase {
|
|
|
803
966
|
}
|
|
804
967
|
/** @hidden */
|
|
805
968
|
ngAfterViewInit() {
|
|
806
|
-
super.ngAfterViewInit();
|
|
807
969
|
this._listenOnHidden();
|
|
808
970
|
this._listenOnFullScreen();
|
|
809
971
|
}
|
|
@@ -816,11 +978,10 @@ class DialogComponent extends DialogBase {
|
|
|
816
978
|
}
|
|
817
979
|
/** @hidden */
|
|
818
980
|
_listenOnFullScreen() {
|
|
819
|
-
this.
|
|
981
|
+
this._ref.fullScreen.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((isFullScreen) => {
|
|
820
982
|
this._fullScreen = isFullScreen;
|
|
821
|
-
this._changeDetectorRef.detectChanges();
|
|
822
983
|
this.adjustResponsivePadding();
|
|
823
|
-
})
|
|
984
|
+
});
|
|
824
985
|
}
|
|
825
986
|
/** @hidden Listen on Dialog visibility */
|
|
826
987
|
_listenOnHidden() {
|
|
@@ -843,7 +1004,7 @@ class DialogComponent extends DialogBase {
|
|
|
843
1004
|
});
|
|
844
1005
|
}
|
|
845
1006
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DialogComponent, deps: [{ token: DialogConfig, optional: true }, { token: DialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
846
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: DialogComponent, isStandalone: true, selector: "fd-dialog", inputs: { class: "class", embeddedDialogRef: ["dialogRef", "embeddedDialogRef"], embeddedDialogConfig: ["dialogConfig", "embeddedDialogConfig"] }, host: { attributes: { "tabindex": "-1" } }, providers: [contentDensityObserverProviders({ alwaysAddModifiers: true })], queries: [{ propertyName: "dialogHeaderConfig", first: true, predicate: DialogHeaderComponent, descendants: true }, { propertyName: "dialogBodyConfig", first: true, predicate: DialogBodyComponent, descendants: true }, { propertyName: "dialogFooterConfig", first: true, predicate: DialogFooterComponent, descendants: true }, { propertyName: "dialogTitle", first: true, predicate: DialogTitleDirective, descendants: true }], viewQueries: [{ propertyName: "dialogWindow", first: true, predicate: ["dialogWindow"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<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", styles: ["@charset \"UTF-8\";.fd-dialog{position:fixed;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.fd-dialog,.fd-dialog:before{height:100%;left:0;top:0;width:100%}.fd-dialog:before{background-color:var(--sapBlockLayer_Background);content:\"\";opacity:var(--sapBlockLayer_Opacity);position:absolute}.fd-dialog__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;border-radius:var(--sapElement_BorderCornerRadius);-webkit-box-shadow:var(--sapContent_Shadow3);box-shadow:var(--sapContent_Shadow3);-ms-flex-direction:column;flex-direction:column;max-height:calc(100vh - 6%);max-width:calc(100vw - 10%);min-height:7.5rem;min-width:20rem;outline:none;position:absolute}.fd-dialog__body{overflow:auto;-webkit-box-flex:1;-ms-flex-positive:1;background-color:var(--sapGroup_ContentBackground);flex-grow:1}.fd-dialog__footer.fd-bar,.fd-dialog__header.fd-bar,.fd-dialog__subheader.fd-bar{padding-inline:1rem 1rem;-ms-flex-negative:0;flex-shrink:0}.fd-dialog__content--mobile{border-radius:0;height:100vh;max-height:100vh;max-width:100vw;width:100vw}.fd-dialog{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-dialog:after,.fd-dialog:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog--active{display:-webkit-box;display:-ms-flexbox;display:flex}.fd-dialog__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-dialog__content:after,.fd-dialog__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__content--def .fd-dialog__body,.fd-dialog__content--def .fd-dialog__footer.fd-bar,.fd-dialog__content--def .fd-dialog__header.fd-bar,.fd-dialog__content--def .fd-dialog__subheader.fd-bar,.fd-dialog__content--s .fd-dialog__body,.fd-dialog__content--s .fd-dialog__footer.fd-bar,.fd-dialog__content--s .fd-dialog__header.fd-bar,.fd-dialog__content--s .fd-dialog__subheader.fd-bar{padding-inline:1rem 1rem}.fd-dialog__content--l .fd-dialog__body,.fd-dialog__content--l .fd-dialog__footer.fd-bar,.fd-dialog__content--l .fd-dialog__header.fd-bar,.fd-dialog__content--l .fd-dialog__subheader.fd-bar,.fd-dialog__content--m .fd-dialog__body,.fd-dialog__content--m .fd-dialog__footer.fd-bar,.fd-dialog__content--m .fd-dialog__header.fd-bar,.fd-dialog__content--m .fd-dialog__subheader.fd-bar{padding-inline:2rem 2rem}.fd-dialog__content--xl .fd-dialog__body,.fd-dialog__content--xl .fd-dialog__footer.fd-bar,.fd-dialog__content--xl .fd-dialog__header.fd-bar,.fd-dialog__content--xl .fd-dialog__subheader.fd-bar{padding-inline:3rem 3rem}.fd-dialog__content--mobile .fd-dialog__body,.fd-dialog__content--mobile .fd-dialog__footer,.fd-dialog__content--mobile .fd-dialog__header,.fd-dialog__content--mobile .fd-menu__item:first-child,.fd-dialog__content--mobile .fd-menu__item:first-child .fd-menu__link:after,.fd-dialog__content--mobile .fd-menu__item:last-child,.fd-dialog__content--mobile .fd-menu__item:last-child .fd-menu__link:after{border-radius:0}.fd-dialog__content--no-mobile-stretch{border-radius:var(--sapElement_BorderCornerRadius);max-height:calc(100vh - 6%);max-width:calc(100vw - 10%)}.fd-dialog__content--draggable-grab.is-hover .fd-dialog__header,.fd-dialog__content--draggable-grab:hover .fd-dialog__header{cursor:move;cursor:-webkit-grab;cursor:grab}.fd-dialog__content--draggable-grabbing.is-hover .fd-dialog__header,.fd-dialog__content--draggable-grabbing:hover .fd-dialog__header{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.fd-dialog__header.fd-bar{border-top-left-radius:var(--sapElement_BorderCornerRadius);border-top-right-radius:var(--sapElement_BorderCornerRadius)}.fd-dialog__footer.fd-bar{border-bottom-left-radius:var(--sapElement_BorderCornerRadius);border-bottom-right-radius:var(--sapElement_BorderCornerRadius)}.fd-dialog__footer.fd-bar .fd-dialog__decisive-button,.fd-dialog__header.fd-bar .fd-dialog__decisive-button{min-width:4rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.fd-dialog__body{border:0;border-radius:var(--sapElement_BorderCornerRadius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-block:1rem 1rem;padding-inline:0;position:relative}.fd-dialog__body:after,.fd-dialog__body:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__body--no-vertical-padding{padding-block:0}.fd-dialog__body--no-horizontal-padding{padding-inline:0}.fd-dialog__body:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.fd-dialog__body:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-dialog__loader{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;margin-top:1.5rem;padding-block:0;padding-inline:0;text-align:center;-webkit-margin-after:.5rem;margin-block-end:.5rem}.fd-dialog__loader:after,.fd-dialog__loader:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__resize-handle{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1.5rem;line-height:normal;margin-block:0;margin-inline:0;min-width:1.5rem;padding-block:0;padding-inline:0;right:-.5rem;width:1.5rem;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;bottom:-.5rem;cursor:se-resize;font-size:1rem;justify-content:flex-start;line-height:1rem;overflow:hidden;position:absolute;z-index:2}.fd-dialog__resize-handle:after,.fd-dialog__resize-handle:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__resize-handle[dir=rtl],[dir=rtl] .fd-dialog__resize-handle{cursor:sw-resize;left:-.5rem;right:auto;-webkit-transform:scaleX(-1);transform:scaleX(-1);-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.fd-dialog__resize-handle:after{color:var(--sapButton_Lite_TextColor);content:\"\\e24f\";font-family:SAP-icons;height:1rem;min-width:1rem;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none;width:1rem}.fd-dialog--no-backdrop:not(.fd-dialog--targeted){left:50%;position:fixed;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:1000}.fd-settings .fd-settings__dialog-content{height:var(--fdSettings_Dialog_Content_Height,42.5rem);max-height:var(--fdSettings_Dialog_Content_Max_Height,42.5rem);max-width:var(--fdSettings_Dialog_Content_Max_Width,60rem);min-height:var(--fdSettings_Dialog_Content_Min_Height,42.5rem);min-width:var(--fdSettings_Dialog_Content_Min_Width,60rem)}.fd-settings .fd-settings__dialog-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding-block:0;padding-inline:0}.fd-settings .fd-settings__list:is(:first-child){overflow-y:auto}.fd-settings .fd-settings__list a:after{content:var(--fdSettings_List_Nav_Indicator_Content,none)}.fd-settings .fd-settings__list--footer{border-top:.0625rem solid var(--sapList_BorderColor)}.fd-settings .fd-settings__tab-bar{height:100%;overflow-y:hidden}.fd-settings .fd-settings__header{-webkit-margin-before:var(--fdSettings_Header_Margin_Top,1rem);margin-block-start:var(--fdSettings_Header_Margin_Top,1rem)}.fd-settings__list-area{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;max-width:var(--fdSettings_List_Area_Width,20rem);min-width:var(--fdSettings_List_Area_Width,20rem);width:var(--fdSettings_List_Area_Width,20rem);-webkit-border-end:var(--fdSettings_List_Area_Border,.0625rem solid var(--sapList_BorderColor));border-inline-end:var(--fdSettings_List_Area_Border,.0625rem solid var(--sapList_BorderColor))}.fd-settings__list-area:after,.fd-settings__list-area:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__list-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;height:100%;justify-content:space-between;overflow:hidden;position:relative}.fd-settings__list-container:after,.fd-settings__list-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__detail-area{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%}.fd-settings__detail-area:after,.fd-settings__detail-area:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__detail-area:has(.fd-settings__tab-bar) .fd-settings__header{--fdBar_Shadow:none}.fd-settings__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;overflow-y:auto;padding-block:0;padding-block:1rem;padding-inline:0;padding-inline:1rem;width:100%}.fd-settings__content:after,.fd-settings__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__content--no-padding{padding-block:0;padding-inline:0}.fd-settings__content--no-background{background:transparent}.fd-settings__container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:100%;width:100%}.fd-settings__container:after,.fd-settings__container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings:has(.fd-settings__container--sm){--fdSettings_List_Area_Width:100%;--fdSettings_Header_Margin_Top:0;--fdSettings_List_Nav_Indicator_Content:\"\\e1ed\";--fdSettings_Dialog_Content_Min_Width:100%;--fdSettings_Dialog_Content_Min_Height:100%;--fdSettings_Dialog_Content_Max_Width:100%;--fdSettings_Dialog_Content_Max_Height:100%;--fdSettings_List_Area_Border:none}.fd-settings:has(.fd-settings__container--sm) .fd-settings__dialog-content{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.fd-settings:has(.fd-settings__container--sm) .fd-settings__dialog-body{border-radius:0}.fd-settings:has(.fd-settings__container--md){--fdSettings_List_Area_Width:100%;--fdSettings_Header_Margin_Top:0;--fdSettings_List_Nav_Indicator_Content:\"\\e1ed\";--fdSettings_Dialog_Content_Min_Width:80%;--fdSettings_Dialog_Content_Min_Height:88%;--fdSettings_Dialog_Content_Max_Width:40rem;--fdSettings_Dialog_Content_Max_Height:42.5rem;--fdSettings_List_Area_Border:none}.fd-settings:has(.fd-settings__container--lg),.fd-settings:has(.fd-settings__container--xl){--fdSettings_List_Area_Width:20rem;--fdSettings_Header_Margin_Top:1rem;--fdSettings_List_Nav_Indicator_Content:none;--fdSettings_Dialog_Content_Min_Width:60rem;--fdSettings_Dialog_Content_Min_Height:42.5rem;--fdSettings_Dialog_Content_Max_Width:60rem;--fdSettings_Dialog_Content_Max_Height:42.5rem}.fd-dialog{z-index:999}.fd-dialog__resize-handle{z-index:1001}.fd-dialog__content-full-screen{position:relative!important;inset:0!important;width:100%!important;height:100%!important;min-width:100%!important;max-width:100%!important;min-height:100%!important;max-height:100%!important;transform:none!important}.fd-dialog__content.fd-dialog__content--mobile{height:100%;max-height:100%;max-width:100%;width:100%;position:fixed!important}.fd-dialog__content.fd-dialog__content--mobile .fd-dialog__header.fd-bar{border-top-left-radius:0;border-top-right-radius:0}.fd-dialog__content.fd-dialog__content--mobile .fd-dialog__footer.fd-bar{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-dialog__footer{overflow:hidden}.fd-dialog__content:has(.fd-dialog__resize-handle){overflow:visible!important}.fd-dialog__body.fd-settings__dialog-body section{width:100%}.fd-dialog__body:has(.fd-navigation.fd-navigation--popup){padding:0!important}.fd-dialog__body:has(.fd-navigation.fd-navigation--popup) section{height:100%;overflow:hidden}\n/*! Bundled license information:\n\nfundamental-styles/dist/settings.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "directive", type: ResizeDirective, selector: "[fdkResize]", inputs: ["fdkResizeBoundary", "fdkResizeDisabled", "fdkResizeClass", "fdkResizeHandleLocation", "fdkResizeResizeHandleRef"], outputs: ["onResizeStart", "onResizeEnd"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible"] }, { kind: "directive", type: ResizeHandleDirective, selector: "[fdkResizeHandle]" }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1007
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: DialogComponent, isStandalone: true, selector: "fd-dialog", inputs: { class: "class", embeddedDialogRef: ["dialogRef", "embeddedDialogRef"], embeddedDialogConfig: ["dialogConfig", "embeddedDialogConfig"] }, host: { attributes: { "tabindex": "-1" } }, providers: [contentDensityObserverProviders({ alwaysAddModifiers: true })], queries: [{ propertyName: "dialogHeaderConfig", first: true, predicate: DialogHeaderComponent, descendants: true }, { propertyName: "dialogBodyConfig", first: true, predicate: DialogBodyComponent, descendants: true }, { propertyName: "dialogFooterConfig", first: true, predicate: DialogFooterComponent, descendants: true }, { propertyName: "dialogTitle", first: true, predicate: DialogTitleDirective, descendants: true }], viewQueries: [{ propertyName: "dialogWindow", first: true, predicate: ["dialogWindow"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<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", styles: ["@charset \"UTF-8\";.fd-dialog{position:fixed;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.fd-dialog,.fd-dialog:before{height:100%;left:0;top:0;width:100%}.fd-dialog:before{background-color:var(--sapBlockLayer_Background);content:\"\";opacity:var(--sapBlockLayer_Opacity);position:absolute}.fd-dialog__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;border-radius:var(--sapElement_BorderCornerRadius);-webkit-box-shadow:var(--sapContent_Shadow3);box-shadow:var(--sapContent_Shadow3);-ms-flex-direction:column;flex-direction:column;max-height:calc(100vh - 6%);max-width:calc(100vw - 10%);min-height:7.5rem;min-width:20rem;outline:none;position:absolute}.fd-dialog__body{overflow:auto;-webkit-box-flex:1;-ms-flex-positive:1;background-color:var(--sapGroup_ContentBackground);flex-grow:1}.fd-dialog__footer.fd-bar,.fd-dialog__header.fd-bar,.fd-dialog__subheader.fd-bar{padding-inline:1rem 1rem;-ms-flex-negative:0;flex-shrink:0}.fd-dialog__content--mobile{border-radius:0;height:100vh;max-height:100vh;max-width:100vw;width:100vw}.fd-dialog{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-dialog:after,.fd-dialog:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog--active{display:-webkit-box;display:-ms-flexbox;display:flex}.fd-dialog__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-dialog__content:after,.fd-dialog__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__content--def .fd-dialog__body,.fd-dialog__content--def .fd-dialog__footer.fd-bar,.fd-dialog__content--def .fd-dialog__header.fd-bar,.fd-dialog__content--def .fd-dialog__subheader.fd-bar,.fd-dialog__content--s .fd-dialog__body,.fd-dialog__content--s .fd-dialog__footer.fd-bar,.fd-dialog__content--s .fd-dialog__header.fd-bar,.fd-dialog__content--s .fd-dialog__subheader.fd-bar{padding-inline:1rem 1rem}.fd-dialog__content--l .fd-dialog__body,.fd-dialog__content--l .fd-dialog__footer.fd-bar,.fd-dialog__content--l .fd-dialog__header.fd-bar,.fd-dialog__content--l .fd-dialog__subheader.fd-bar,.fd-dialog__content--m .fd-dialog__body,.fd-dialog__content--m .fd-dialog__footer.fd-bar,.fd-dialog__content--m .fd-dialog__header.fd-bar,.fd-dialog__content--m .fd-dialog__subheader.fd-bar{padding-inline:2rem 2rem}.fd-dialog__content--xl .fd-dialog__body,.fd-dialog__content--xl .fd-dialog__footer.fd-bar,.fd-dialog__content--xl .fd-dialog__header.fd-bar,.fd-dialog__content--xl .fd-dialog__subheader.fd-bar{padding-inline:3rem 3rem}.fd-dialog__content--mobile .fd-dialog__body,.fd-dialog__content--mobile .fd-dialog__footer,.fd-dialog__content--mobile .fd-dialog__header,.fd-dialog__content--mobile .fd-menu__item:first-child,.fd-dialog__content--mobile .fd-menu__item:first-child .fd-menu__link:after,.fd-dialog__content--mobile .fd-menu__item:last-child,.fd-dialog__content--mobile .fd-menu__item:last-child .fd-menu__link:after{border-radius:0}.fd-dialog__content--no-mobile-stretch{border-radius:var(--sapElement_BorderCornerRadius);max-height:calc(100vh - 6%);max-width:calc(100vw - 10%)}.fd-dialog__content--draggable-grab.is-hover .fd-dialog__header,.fd-dialog__content--draggable-grab:hover .fd-dialog__header{cursor:move;cursor:-webkit-grab;cursor:grab}.fd-dialog__content--draggable-grabbing.is-hover .fd-dialog__header,.fd-dialog__content--draggable-grabbing:hover .fd-dialog__header{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.fd-dialog__header.fd-bar{border-top-left-radius:var(--sapElement_BorderCornerRadius);border-top-right-radius:var(--sapElement_BorderCornerRadius)}.fd-dialog__footer.fd-bar{border-bottom-left-radius:var(--sapElement_BorderCornerRadius);border-bottom-right-radius:var(--sapElement_BorderCornerRadius)}.fd-dialog__footer.fd-bar .fd-dialog__decisive-button,.fd-dialog__header.fd-bar .fd-dialog__decisive-button{min-width:4rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.fd-dialog__body{border:0;border-radius:var(--sapElement_BorderCornerRadius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-block:1rem 1rem;padding-inline:0;position:relative}.fd-dialog__body:after,.fd-dialog__body:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__body--no-vertical-padding{padding-block:0}.fd-dialog__body--no-horizontal-padding{padding-inline:0}.fd-dialog__body:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.fd-dialog__body:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-dialog__loader{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;margin-top:1.5rem;padding-block:0;padding-inline:0;text-align:center;-webkit-margin-after:.5rem;margin-block-end:.5rem}.fd-dialog__loader:after,.fd-dialog__loader:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__resize-handle{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1.5rem;line-height:normal;margin-block:0;margin-inline:0;min-width:1.5rem;padding-block:0;padding-inline:0;right:-.5rem;width:1.5rem;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;bottom:-.5rem;cursor:se-resize;font-size:1rem;justify-content:flex-start;line-height:1rem;overflow:hidden;position:absolute;z-index:2}.fd-dialog__resize-handle:after,.fd-dialog__resize-handle:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__resize-handle[dir=rtl],[dir=rtl] .fd-dialog__resize-handle{cursor:sw-resize;left:-.5rem;right:auto;-webkit-transform:scaleX(-1);transform:scaleX(-1);-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.fd-dialog__resize-handle:after{color:var(--sapButton_Lite_TextColor);content:\"\\e24f\";font-family:SAP-icons;height:1rem;min-width:1rem;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none;width:1rem}.fd-dialog--no-backdrop:not(.fd-dialog--targeted){left:50%;position:fixed;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:1000}.fd-settings .fd-settings__dialog-content{height:var(--fdSettings_Dialog_Content_Height,42.5rem);max-height:var(--fdSettings_Dialog_Content_Max_Height,42.5rem);max-width:var(--fdSettings_Dialog_Content_Max_Width,60rem);min-height:var(--fdSettings_Dialog_Content_Min_Height,42.5rem);min-width:var(--fdSettings_Dialog_Content_Min_Width,60rem)}.fd-settings .fd-settings__dialog-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding-block:0;padding-inline:0}.fd-settings .fd-settings__list:is(:first-child){overflow-y:auto}.fd-settings .fd-settings__list a:after{content:var(--fdSettings_List_Nav_Indicator_Content,none)}.fd-settings .fd-settings__list--footer{border-top:.0625rem solid var(--sapList_BorderColor)}.fd-settings .fd-settings__tab-bar{height:100%;overflow-y:hidden}.fd-settings .fd-settings__header{-webkit-margin-before:var(--fdSettings_Header_Margin_Top,1rem);margin-block-start:var(--fdSettings_Header_Margin_Top,1rem)}.fd-settings__list-area{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;max-width:var(--fdSettings_List_Area_Width,20rem);min-width:var(--fdSettings_List_Area_Width,20rem);width:var(--fdSettings_List_Area_Width,20rem);-webkit-border-end:var(--fdSettings_List_Area_Border,.0625rem solid var(--sapList_BorderColor));border-inline-end:var(--fdSettings_List_Area_Border,.0625rem solid var(--sapList_BorderColor))}.fd-settings__list-area:after,.fd-settings__list-area:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__list-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;height:100%;justify-content:space-between;overflow:hidden;position:relative}.fd-settings__list-container:after,.fd-settings__list-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__detail-area{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%}.fd-settings__detail-area:after,.fd-settings__detail-area:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__detail-area:has(.fd-settings__tab-bar) .fd-settings__header{--fdBar_Shadow:none}.fd-settings__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;overflow-y:auto;padding-block:0;padding-block:1rem;padding-inline:0;padding-inline:1rem;width:100%}.fd-settings__content:after,.fd-settings__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__content--no-padding{padding-block:0;padding-inline:0}.fd-settings__content--no-background{background:transparent}.fd-settings__container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:100%;width:100%}.fd-settings__container:after,.fd-settings__container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings:has(.fd-settings__container--sm){--fdSettings_List_Area_Width:100%;--fdSettings_Header_Margin_Top:0;--fdSettings_List_Nav_Indicator_Content:\"\\e1ed\";--fdSettings_Dialog_Content_Min_Width:100%;--fdSettings_Dialog_Content_Min_Height:100%;--fdSettings_Dialog_Content_Max_Width:100%;--fdSettings_Dialog_Content_Max_Height:100%;--fdSettings_List_Area_Border:none}.fd-settings:has(.fd-settings__container--sm) .fd-settings__dialog-content{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.fd-settings:has(.fd-settings__container--sm) .fd-settings__dialog-body{border-radius:0}.fd-settings:has(.fd-settings__container--md){--fdSettings_List_Area_Width:100%;--fdSettings_Header_Margin_Top:0;--fdSettings_List_Nav_Indicator_Content:\"\\e1ed\";--fdSettings_Dialog_Content_Min_Width:80%;--fdSettings_Dialog_Content_Min_Height:88%;--fdSettings_Dialog_Content_Max_Width:40rem;--fdSettings_Dialog_Content_Max_Height:42.5rem;--fdSettings_List_Area_Border:none}.fd-settings:has(.fd-settings__container--lg),.fd-settings:has(.fd-settings__container--xl){--fdSettings_List_Area_Width:20rem;--fdSettings_Header_Margin_Top:1rem;--fdSettings_List_Nav_Indicator_Content:none;--fdSettings_Dialog_Content_Min_Width:60rem;--fdSettings_Dialog_Content_Min_Height:42.5rem;--fdSettings_Dialog_Content_Max_Width:60rem;--fdSettings_Dialog_Content_Max_Height:42.5rem}.fd-dialog{z-index:999}.fd-dialog__resize-handle{z-index:1001}.fd-dialog__content-full-screen{position:relative!important;inset:0!important;width:100%!important;height:100%!important;min-width:100%!important;max-width:100%!important;min-height:100%!important;max-height:100%!important;transform:none!important}.fd-dialog__content.fd-dialog__content--mobile{height:100%;max-height:100%;max-width:100%;width:100%;position:fixed!important}.fd-dialog__content.fd-dialog__content--mobile .fd-dialog__header.fd-bar{border-top-left-radius:0;border-top-right-radius:0}.fd-dialog__content.fd-dialog__content--mobile .fd-dialog__footer.fd-bar{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-dialog__footer{overflow:hidden}.fd-dialog__content:has(.fd-dialog__resize-handle){overflow:visible!important}.fd-dialog__body.fd-settings__dialog-body section{width:100%}.fd-dialog__body:has(.fd-navigation.fd-navigation--popup){padding:0!important}.fd-dialog__body:has(.fd-navigation.fd-navigation--popup) section{height:100%;overflow:hidden}\n/*! Bundled license information:\n\nfundamental-styles/dist/settings.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "directive", type: ResizeDirective, selector: "[fdkResize]", inputs: ["fdkResizeBoundary", "fdkResizeDisabled", "fdkResizeClass", "fdkResizeHandleLocation", "fdkResizeResizeHandleRef"], outputs: ["onResizeStart", "onResizeEnd"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible"] }, { kind: "directive", type: ResizeHandleDirective, selector: "[fdkResizeHandle]" }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
847
1008
|
}
|
|
848
1009
|
__decorate([
|
|
849
1010
|
applyCssClass,
|
|
@@ -863,7 +1024,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
863
1024
|
ScrollbarDirective,
|
|
864
1025
|
ResizeHandleDirective,
|
|
865
1026
|
CdkDragHandle
|
|
866
|
-
], template: "<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", styles: ["@charset \"UTF-8\";.fd-dialog{position:fixed;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.fd-dialog,.fd-dialog:before{height:100%;left:0;top:0;width:100%}.fd-dialog:before{background-color:var(--sapBlockLayer_Background);content:\"\";opacity:var(--sapBlockLayer_Opacity);position:absolute}.fd-dialog__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;border-radius:var(--sapElement_BorderCornerRadius);-webkit-box-shadow:var(--sapContent_Shadow3);box-shadow:var(--sapContent_Shadow3);-ms-flex-direction:column;flex-direction:column;max-height:calc(100vh - 6%);max-width:calc(100vw - 10%);min-height:7.5rem;min-width:20rem;outline:none;position:absolute}.fd-dialog__body{overflow:auto;-webkit-box-flex:1;-ms-flex-positive:1;background-color:var(--sapGroup_ContentBackground);flex-grow:1}.fd-dialog__footer.fd-bar,.fd-dialog__header.fd-bar,.fd-dialog__subheader.fd-bar{padding-inline:1rem 1rem;-ms-flex-negative:0;flex-shrink:0}.fd-dialog__content--mobile{border-radius:0;height:100vh;max-height:100vh;max-width:100vw;width:100vw}.fd-dialog{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-dialog:after,.fd-dialog:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog--active{display:-webkit-box;display:-ms-flexbox;display:flex}.fd-dialog__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-dialog__content:after,.fd-dialog__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__content--def .fd-dialog__body,.fd-dialog__content--def .fd-dialog__footer.fd-bar,.fd-dialog__content--def .fd-dialog__header.fd-bar,.fd-dialog__content--def .fd-dialog__subheader.fd-bar,.fd-dialog__content--s .fd-dialog__body,.fd-dialog__content--s .fd-dialog__footer.fd-bar,.fd-dialog__content--s .fd-dialog__header.fd-bar,.fd-dialog__content--s .fd-dialog__subheader.fd-bar{padding-inline:1rem 1rem}.fd-dialog__content--l .fd-dialog__body,.fd-dialog__content--l .fd-dialog__footer.fd-bar,.fd-dialog__content--l .fd-dialog__header.fd-bar,.fd-dialog__content--l .fd-dialog__subheader.fd-bar,.fd-dialog__content--m .fd-dialog__body,.fd-dialog__content--m .fd-dialog__footer.fd-bar,.fd-dialog__content--m .fd-dialog__header.fd-bar,.fd-dialog__content--m .fd-dialog__subheader.fd-bar{padding-inline:2rem 2rem}.fd-dialog__content--xl .fd-dialog__body,.fd-dialog__content--xl .fd-dialog__footer.fd-bar,.fd-dialog__content--xl .fd-dialog__header.fd-bar,.fd-dialog__content--xl .fd-dialog__subheader.fd-bar{padding-inline:3rem 3rem}.fd-dialog__content--mobile .fd-dialog__body,.fd-dialog__content--mobile .fd-dialog__footer,.fd-dialog__content--mobile .fd-dialog__header,.fd-dialog__content--mobile .fd-menu__item:first-child,.fd-dialog__content--mobile .fd-menu__item:first-child .fd-menu__link:after,.fd-dialog__content--mobile .fd-menu__item:last-child,.fd-dialog__content--mobile .fd-menu__item:last-child .fd-menu__link:after{border-radius:0}.fd-dialog__content--no-mobile-stretch{border-radius:var(--sapElement_BorderCornerRadius);max-height:calc(100vh - 6%);max-width:calc(100vw - 10%)}.fd-dialog__content--draggable-grab.is-hover .fd-dialog__header,.fd-dialog__content--draggable-grab:hover .fd-dialog__header{cursor:move;cursor:-webkit-grab;cursor:grab}.fd-dialog__content--draggable-grabbing.is-hover .fd-dialog__header,.fd-dialog__content--draggable-grabbing:hover .fd-dialog__header{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.fd-dialog__header.fd-bar{border-top-left-radius:var(--sapElement_BorderCornerRadius);border-top-right-radius:var(--sapElement_BorderCornerRadius)}.fd-dialog__footer.fd-bar{border-bottom-left-radius:var(--sapElement_BorderCornerRadius);border-bottom-right-radius:var(--sapElement_BorderCornerRadius)}.fd-dialog__footer.fd-bar .fd-dialog__decisive-button,.fd-dialog__header.fd-bar .fd-dialog__decisive-button{min-width:4rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.fd-dialog__body{border:0;border-radius:var(--sapElement_BorderCornerRadius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-block:1rem 1rem;padding-inline:0;position:relative}.fd-dialog__body:after,.fd-dialog__body:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__body--no-vertical-padding{padding-block:0}.fd-dialog__body--no-horizontal-padding{padding-inline:0}.fd-dialog__body:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.fd-dialog__body:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-dialog__loader{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;margin-top:1.5rem;padding-block:0;padding-inline:0;text-align:center;-webkit-margin-after:.5rem;margin-block-end:.5rem}.fd-dialog__loader:after,.fd-dialog__loader:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__resize-handle{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1.5rem;line-height:normal;margin-block:0;margin-inline:0;min-width:1.5rem;padding-block:0;padding-inline:0;right:-.5rem;width:1.5rem;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;bottom:-.5rem;cursor:se-resize;font-size:1rem;justify-content:flex-start;line-height:1rem;overflow:hidden;position:absolute;z-index:2}.fd-dialog__resize-handle:after,.fd-dialog__resize-handle:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__resize-handle[dir=rtl],[dir=rtl] .fd-dialog__resize-handle{cursor:sw-resize;left:-.5rem;right:auto;-webkit-transform:scaleX(-1);transform:scaleX(-1);-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.fd-dialog__resize-handle:after{color:var(--sapButton_Lite_TextColor);content:\"\\e24f\";font-family:SAP-icons;height:1rem;min-width:1rem;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none;width:1rem}.fd-dialog--no-backdrop:not(.fd-dialog--targeted){left:50%;position:fixed;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:1000}.fd-settings .fd-settings__dialog-content{height:var(--fdSettings_Dialog_Content_Height,42.5rem);max-height:var(--fdSettings_Dialog_Content_Max_Height,42.5rem);max-width:var(--fdSettings_Dialog_Content_Max_Width,60rem);min-height:var(--fdSettings_Dialog_Content_Min_Height,42.5rem);min-width:var(--fdSettings_Dialog_Content_Min_Width,60rem)}.fd-settings .fd-settings__dialog-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding-block:0;padding-inline:0}.fd-settings .fd-settings__list:is(:first-child){overflow-y:auto}.fd-settings .fd-settings__list a:after{content:var(--fdSettings_List_Nav_Indicator_Content,none)}.fd-settings .fd-settings__list--footer{border-top:.0625rem solid var(--sapList_BorderColor)}.fd-settings .fd-settings__tab-bar{height:100%;overflow-y:hidden}.fd-settings .fd-settings__header{-webkit-margin-before:var(--fdSettings_Header_Margin_Top,1rem);margin-block-start:var(--fdSettings_Header_Margin_Top,1rem)}.fd-settings__list-area{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;max-width:var(--fdSettings_List_Area_Width,20rem);min-width:var(--fdSettings_List_Area_Width,20rem);width:var(--fdSettings_List_Area_Width,20rem);-webkit-border-end:var(--fdSettings_List_Area_Border,.0625rem solid var(--sapList_BorderColor));border-inline-end:var(--fdSettings_List_Area_Border,.0625rem solid var(--sapList_BorderColor))}.fd-settings__list-area:after,.fd-settings__list-area:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__list-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;height:100%;justify-content:space-between;overflow:hidden;position:relative}.fd-settings__list-container:after,.fd-settings__list-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__detail-area{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%}.fd-settings__detail-area:after,.fd-settings__detail-area:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__detail-area:has(.fd-settings__tab-bar) .fd-settings__header{--fdBar_Shadow:none}.fd-settings__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;overflow-y:auto;padding-block:0;padding-block:1rem;padding-inline:0;padding-inline:1rem;width:100%}.fd-settings__content:after,.fd-settings__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__content--no-padding{padding-block:0;padding-inline:0}.fd-settings__content--no-background{background:transparent}.fd-settings__container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:100%;width:100%}.fd-settings__container:after,.fd-settings__container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings:has(.fd-settings__container--sm){--fdSettings_List_Area_Width:100%;--fdSettings_Header_Margin_Top:0;--fdSettings_List_Nav_Indicator_Content:\"\\e1ed\";--fdSettings_Dialog_Content_Min_Width:100%;--fdSettings_Dialog_Content_Min_Height:100%;--fdSettings_Dialog_Content_Max_Width:100%;--fdSettings_Dialog_Content_Max_Height:100%;--fdSettings_List_Area_Border:none}.fd-settings:has(.fd-settings__container--sm) .fd-settings__dialog-content{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.fd-settings:has(.fd-settings__container--sm) .fd-settings__dialog-body{border-radius:0}.fd-settings:has(.fd-settings__container--md){--fdSettings_List_Area_Width:100%;--fdSettings_Header_Margin_Top:0;--fdSettings_List_Nav_Indicator_Content:\"\\e1ed\";--fdSettings_Dialog_Content_Min_Width:80%;--fdSettings_Dialog_Content_Min_Height:88%;--fdSettings_Dialog_Content_Max_Width:40rem;--fdSettings_Dialog_Content_Max_Height:42.5rem;--fdSettings_List_Area_Border:none}.fd-settings:has(.fd-settings__container--lg),.fd-settings:has(.fd-settings__container--xl){--fdSettings_List_Area_Width:20rem;--fdSettings_Header_Margin_Top:1rem;--fdSettings_List_Nav_Indicator_Content:none;--fdSettings_Dialog_Content_Min_Width:60rem;--fdSettings_Dialog_Content_Min_Height:42.5rem;--fdSettings_Dialog_Content_Max_Width:60rem;--fdSettings_Dialog_Content_Max_Height:42.5rem}.fd-dialog{z-index:999}.fd-dialog__resize-handle{z-index:1001}.fd-dialog__content-full-screen{position:relative!important;inset:0!important;width:100%!important;height:100%!important;min-width:100%!important;max-width:100%!important;min-height:100%!important;max-height:100%!important;transform:none!important}.fd-dialog__content.fd-dialog__content--mobile{height:100%;max-height:100%;max-width:100%;width:100%;position:fixed!important}.fd-dialog__content.fd-dialog__content--mobile .fd-dialog__header.fd-bar{border-top-left-radius:0;border-top-right-radius:0}.fd-dialog__content.fd-dialog__content--mobile .fd-dialog__footer.fd-bar{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-dialog__footer{overflow:hidden}.fd-dialog__content:has(.fd-dialog__resize-handle){overflow:visible!important}.fd-dialog__body.fd-settings__dialog-body section{width:100%}.fd-dialog__body:has(.fd-navigation.fd-navigation--popup){padding:0!important}.fd-dialog__body:has(.fd-navigation.fd-navigation--popup) section{height:100%;overflow:hidden}\n/*! Bundled license information:\n\nfundamental-styles/dist/settings.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"] }]
|
|
1027
|
+
], template: "<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", styles: ["@charset \"UTF-8\";.fd-dialog{position:fixed;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.fd-dialog,.fd-dialog:before{height:100%;left:0;top:0;width:100%}.fd-dialog:before{background-color:var(--sapBlockLayer_Background);content:\"\";opacity:var(--sapBlockLayer_Opacity);position:absolute}.fd-dialog__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;border-radius:var(--sapElement_BorderCornerRadius);-webkit-box-shadow:var(--sapContent_Shadow3);box-shadow:var(--sapContent_Shadow3);-ms-flex-direction:column;flex-direction:column;max-height:calc(100vh - 6%);max-width:calc(100vw - 10%);min-height:7.5rem;min-width:20rem;outline:none;position:absolute}.fd-dialog__body{overflow:auto;-webkit-box-flex:1;-ms-flex-positive:1;background-color:var(--sapGroup_ContentBackground);flex-grow:1}.fd-dialog__footer.fd-bar,.fd-dialog__header.fd-bar,.fd-dialog__subheader.fd-bar{padding-inline:1rem 1rem;-ms-flex-negative:0;flex-shrink:0}.fd-dialog__content--mobile{border-radius:0;height:100vh;max-height:100vh;max-width:100vw;width:100vw}.fd-dialog{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:none;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-dialog:after,.fd-dialog:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog--active{display:-webkit-box;display:-ms-flexbox;display:flex}.fd-dialog__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-dialog__content:after,.fd-dialog__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__content--def .fd-dialog__body,.fd-dialog__content--def .fd-dialog__footer.fd-bar,.fd-dialog__content--def .fd-dialog__header.fd-bar,.fd-dialog__content--def .fd-dialog__subheader.fd-bar,.fd-dialog__content--s .fd-dialog__body,.fd-dialog__content--s .fd-dialog__footer.fd-bar,.fd-dialog__content--s .fd-dialog__header.fd-bar,.fd-dialog__content--s .fd-dialog__subheader.fd-bar{padding-inline:1rem 1rem}.fd-dialog__content--l .fd-dialog__body,.fd-dialog__content--l .fd-dialog__footer.fd-bar,.fd-dialog__content--l .fd-dialog__header.fd-bar,.fd-dialog__content--l .fd-dialog__subheader.fd-bar,.fd-dialog__content--m .fd-dialog__body,.fd-dialog__content--m .fd-dialog__footer.fd-bar,.fd-dialog__content--m .fd-dialog__header.fd-bar,.fd-dialog__content--m .fd-dialog__subheader.fd-bar{padding-inline:2rem 2rem}.fd-dialog__content--xl .fd-dialog__body,.fd-dialog__content--xl .fd-dialog__footer.fd-bar,.fd-dialog__content--xl .fd-dialog__header.fd-bar,.fd-dialog__content--xl .fd-dialog__subheader.fd-bar{padding-inline:3rem 3rem}.fd-dialog__content--mobile .fd-dialog__body,.fd-dialog__content--mobile .fd-dialog__footer,.fd-dialog__content--mobile .fd-dialog__header,.fd-dialog__content--mobile .fd-menu__item:first-child,.fd-dialog__content--mobile .fd-menu__item:first-child .fd-menu__link:after,.fd-dialog__content--mobile .fd-menu__item:last-child,.fd-dialog__content--mobile .fd-menu__item:last-child .fd-menu__link:after{border-radius:0}.fd-dialog__content--no-mobile-stretch{border-radius:var(--sapElement_BorderCornerRadius);max-height:calc(100vh - 6%);max-width:calc(100vw - 10%)}.fd-dialog__content--draggable-grab.is-hover .fd-dialog__header,.fd-dialog__content--draggable-grab:hover .fd-dialog__header{cursor:move;cursor:-webkit-grab;cursor:grab}.fd-dialog__content--draggable-grabbing.is-hover .fd-dialog__header,.fd-dialog__content--draggable-grabbing:hover .fd-dialog__header{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.fd-dialog__header.fd-bar{border-top-left-radius:var(--sapElement_BorderCornerRadius);border-top-right-radius:var(--sapElement_BorderCornerRadius)}.fd-dialog__footer.fd-bar{border-bottom-left-radius:var(--sapElement_BorderCornerRadius);border-bottom-right-radius:var(--sapElement_BorderCornerRadius)}.fd-dialog__footer.fd-bar .fd-dialog__decisive-button,.fd-dialog__header.fd-bar .fd-dialog__decisive-button{min-width:4rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.fd-dialog__body{border:0;border-radius:var(--sapElement_BorderCornerRadius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-block:1rem 1rem;padding-inline:0;position:relative}.fd-dialog__body:after,.fd-dialog__body:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__body--no-vertical-padding{padding-block:0}.fd-dialog__body--no-horizontal-padding{padding-inline:0}.fd-dialog__body:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.fd-dialog__body:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-dialog__loader{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;margin-top:1.5rem;padding-block:0;padding-inline:0;text-align:center;-webkit-margin-after:.5rem;margin-block-end:.5rem}.fd-dialog__loader:after,.fd-dialog__loader:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__resize-handle{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1.5rem;line-height:normal;margin-block:0;margin-inline:0;min-width:1.5rem;padding-block:0;padding-inline:0;right:-.5rem;width:1.5rem;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;bottom:-.5rem;cursor:se-resize;font-size:1rem;justify-content:flex-start;line-height:1rem;overflow:hidden;position:absolute;z-index:2}.fd-dialog__resize-handle:after,.fd-dialog__resize-handle:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-dialog__resize-handle[dir=rtl],[dir=rtl] .fd-dialog__resize-handle{cursor:sw-resize;left:-.5rem;right:auto;-webkit-transform:scaleX(-1);transform:scaleX(-1);-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.fd-dialog__resize-handle:after{color:var(--sapButton_Lite_TextColor);content:\"\\e24f\";font-family:SAP-icons;height:1rem;min-width:1rem;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none;width:1rem}.fd-dialog--no-backdrop:not(.fd-dialog--targeted){left:50%;position:fixed;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:1000}.fd-settings .fd-settings__dialog-content{height:var(--fdSettings_Dialog_Content_Height,42.5rem);max-height:var(--fdSettings_Dialog_Content_Max_Height,42.5rem);max-width:var(--fdSettings_Dialog_Content_Max_Width,60rem);min-height:var(--fdSettings_Dialog_Content_Min_Height,42.5rem);min-width:var(--fdSettings_Dialog_Content_Min_Width,60rem)}.fd-settings .fd-settings__dialog-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding-block:0;padding-inline:0}.fd-settings .fd-settings__list:is(:first-child){overflow-y:auto}.fd-settings .fd-settings__list a:after{content:var(--fdSettings_List_Nav_Indicator_Content,none)}.fd-settings .fd-settings__list--footer{border-top:.0625rem solid var(--sapList_BorderColor)}.fd-settings .fd-settings__tab-bar{height:100%;overflow-y:hidden}.fd-settings .fd-settings__header{-webkit-margin-before:var(--fdSettings_Header_Margin_Top,1rem);margin-block-start:var(--fdSettings_Header_Margin_Top,1rem)}.fd-settings__list-area{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;max-width:var(--fdSettings_List_Area_Width,20rem);min-width:var(--fdSettings_List_Area_Width,20rem);width:var(--fdSettings_List_Area_Width,20rem);-webkit-border-end:var(--fdSettings_List_Area_Border,.0625rem solid var(--sapList_BorderColor));border-inline-end:var(--fdSettings_List_Area_Border,.0625rem solid var(--sapList_BorderColor))}.fd-settings__list-area:after,.fd-settings__list-area:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__list-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;height:100%;justify-content:space-between;overflow:hidden;position:relative}.fd-settings__list-container:after,.fd-settings__list-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__detail-area{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%}.fd-settings__detail-area:after,.fd-settings__detail-area:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__detail-area:has(.fd-settings__tab-bar) .fd-settings__header{--fdBar_Shadow:none}.fd-settings__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;overflow-y:auto;padding-block:0;padding-block:1rem;padding-inline:0;padding-inline:1rem;width:100%}.fd-settings__content:after,.fd-settings__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings__content--no-padding{padding-block:0;padding-inline:0}.fd-settings__content--no-background{background:transparent}.fd-settings__container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:100%;width:100%}.fd-settings__container:after,.fd-settings__container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-settings:has(.fd-settings__container--sm){--fdSettings_List_Area_Width:100%;--fdSettings_Header_Margin_Top:0;--fdSettings_List_Nav_Indicator_Content:\"\\e1ed\";--fdSettings_Dialog_Content_Min_Width:100%;--fdSettings_Dialog_Content_Min_Height:100%;--fdSettings_Dialog_Content_Max_Width:100%;--fdSettings_Dialog_Content_Max_Height:100%;--fdSettings_List_Area_Border:none}.fd-settings:has(.fd-settings__container--sm) .fd-settings__dialog-content{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.fd-settings:has(.fd-settings__container--sm) .fd-settings__dialog-body{border-radius:0}.fd-settings:has(.fd-settings__container--md){--fdSettings_List_Area_Width:100%;--fdSettings_Header_Margin_Top:0;--fdSettings_List_Nav_Indicator_Content:\"\\e1ed\";--fdSettings_Dialog_Content_Min_Width:80%;--fdSettings_Dialog_Content_Min_Height:88%;--fdSettings_Dialog_Content_Max_Width:40rem;--fdSettings_Dialog_Content_Max_Height:42.5rem;--fdSettings_List_Area_Border:none}.fd-settings:has(.fd-settings__container--lg),.fd-settings:has(.fd-settings__container--xl){--fdSettings_List_Area_Width:20rem;--fdSettings_Header_Margin_Top:1rem;--fdSettings_List_Nav_Indicator_Content:none;--fdSettings_Dialog_Content_Min_Width:60rem;--fdSettings_Dialog_Content_Min_Height:42.5rem;--fdSettings_Dialog_Content_Max_Width:60rem;--fdSettings_Dialog_Content_Max_Height:42.5rem}.fd-dialog{z-index:999}.fd-dialog__resize-handle{z-index:1001}.fd-dialog__content-full-screen{position:relative!important;inset:0!important;width:100%!important;height:100%!important;min-width:100%!important;max-width:100%!important;min-height:100%!important;max-height:100%!important;transform:none!important}.fd-dialog__content.fd-dialog__content--mobile{height:100%;max-height:100%;max-width:100%;width:100%;position:fixed!important}.fd-dialog__content.fd-dialog__content--mobile .fd-dialog__header.fd-bar{border-top-left-radius:0;border-top-right-radius:0}.fd-dialog__content.fd-dialog__content--mobile .fd-dialog__footer.fd-bar{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-dialog__footer{overflow:hidden}.fd-dialog__content:has(.fd-dialog__resize-handle){overflow:visible!important}.fd-dialog__body.fd-settings__dialog-body section{width:100%}.fd-dialog__body:has(.fd-navigation.fd-navigation--popup){padding:0!important}.fd-dialog__body:has(.fd-navigation.fd-navigation--popup) section{height:100%;overflow:hidden}\n/*! Bundled license information:\n\nfundamental-styles/dist/settings.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"] }]
|
|
867
1028
|
}], ctorParameters: () => [{ type: DialogConfig, decorators: [{
|
|
868
1029
|
type: Optional
|
|
869
1030
|
}] }, { type: DialogRef, decorators: [{
|
|
@@ -1150,11 +1311,11 @@ class DialogService extends DialogBaseService {
|
|
|
1150
1311
|
const componentRef = overlayRef.attach(portal);
|
|
1151
1312
|
componentRef.instance.childContent = content;
|
|
1152
1313
|
componentRef.instance.dialogConfig = dialogConfig;
|
|
1153
|
-
|
|
1314
|
+
// Register dialog for tracking (replaces manual push)
|
|
1315
|
+
this._registerDialog(componentRef);
|
|
1154
1316
|
this.htmlElement && (this.htmlElement.style.overflow = 'hidden');
|
|
1155
1317
|
dialogRef._endClose$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
1156
1318
|
this._destroyDialog(componentRef);
|
|
1157
|
-
componentRef.destroy();
|
|
1158
1319
|
overlayRef.dispose();
|
|
1159
1320
|
this.htmlElement && (this.htmlElement.style.overflow = '');
|
|
1160
1321
|
if (dialogConfig?.focusTrapped && previouslyFocusedElement) {
|
|
@@ -1321,9 +1482,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
1321
1482
|
}]
|
|
1322
1483
|
}] });
|
|
1323
1484
|
|
|
1485
|
+
/**
|
|
1486
|
+
* Base class for dialog content configuration.
|
|
1487
|
+
* Defines common properties for dialog titles, content, buttons, and accessibility attributes.
|
|
1488
|
+
*/
|
|
1324
1489
|
class DialogContentBase {
|
|
1325
1490
|
constructor() {
|
|
1326
|
-
/**
|
|
1491
|
+
/**
|
|
1492
|
+
* Semantic heading level for the dialog title.
|
|
1493
|
+
* Determines which HTML heading tag (h1-h6) to use for proper document outline.
|
|
1494
|
+
* @default 1
|
|
1495
|
+
* @example 2 // renders as <h2>
|
|
1496
|
+
*/
|
|
1327
1497
|
this.titleHeadingLevel = 1;
|
|
1328
1498
|
}
|
|
1329
1499
|
}
|