@fundamental-ngx/platform 0.64.0-rc.9 → 0.64.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.
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken,
|
|
2
|
+
import { InjectionToken, Input, Optional, Inject, Directive, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, Component, Injectable, forwardRef, EventEmitter, inject, DestroyRef, TemplateRef, ElementRef, booleanAttribute, ViewChildren, ContentChildren, ViewChild, Output, Self, SkipSelf, Attribute, NgModule, input, HostListener, Injector, computed, Pipe, ChangeDetectorRef, signal, effect, isDevMode, Renderer2, LOCALE_ID } from '@angular/core';
|
|
3
3
|
import * as i1$4 from '@fundamental-ngx/cdk/forms';
|
|
4
4
|
import { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL, CvaControl, CvaDirective } from '@fundamental-ngx/cdk/forms';
|
|
5
5
|
import * as i1 from '@fundamental-ngx/platform/shared';
|
|
6
6
|
import { ColumnLayoutGridClass, ResponsiveBreakPointConfig, RESPONSIVE_BREAKPOINTS_CONFIG, BaseInput, InLineLayoutCollectionBaseInput, coerceArraySafe, MatchingStrategy, CollectionBaseInput, isOptionItem, isJsObject, isFunction, isDataSource, ArrayMultiInputDataSource, ObservableMultiInputDataSource, isString, MultiInputDataSource, DATA_PROVIDERS, FormFieldGroup, FormGroupContainer, ArrayComboBoxDataSource, ObservableComboBoxDataSource, ComboBoxDataSource, FDP_DO_CHECK, FDP_FORM_SUBMIT, ArrayMultiComboBoxDataSource, ObservableMultiComboBoxDataSource, isSelectableOptionItem, MultiComboBoxDataSource } from '@fundamental-ngx/platform/shared';
|
|
7
|
-
import * as i1$1 from '@angular/forms';
|
|
8
|
-
import { Validators, FormControl, FormGroup, FormsModule, ReactiveFormsModule, ControlContainer, NgForm, NgControl, FormGroupDirective } from '@angular/forms';
|
|
9
|
-
import * as i2 from '@fundamental-ngx/cdk/utils';
|
|
10
|
-
import { uniqBy, RangeSelector, KeyUtil, TemplateDirective, InitialFocusDirective, DisplayFnPipe, warnOnce, DynamicComponentService, merge as merge$1, cloneDeep, isFunction as isFunction$1, selectStrategy, resizeObservable, FocusTrapService, SearchHighlightPipe, destroyObservable, RtlService, OnlyDigitsDirective } from '@fundamental-ngx/cdk/utils';
|
|
11
7
|
import * as i2$2 from 'rxjs';
|
|
12
8
|
import { Subject, BehaviorSubject, combineLatest, filter, tap, Subscription, isObservable, fromEvent, merge, of, timer, interval } from 'rxjs';
|
|
9
|
+
import * as i1$1 from '@angular/forms';
|
|
10
|
+
import { Validators, FormControl, FormGroup, FormsModule, ReactiveFormsModule, NgControl, ControlContainer, NgForm, FormGroupDirective } from '@angular/forms';
|
|
11
|
+
import * as i2 from '@fundamental-ngx/cdk/utils';
|
|
12
|
+
import { uniqBy, RangeSelector, KeyUtil, TemplateDirective, InitialFocusDirective, DisplayFnPipe, warnOnce, DynamicComponentService, merge as merge$1, cloneDeep, isFunction as isFunction$1, selectStrategy, FocusTrapService, SearchHighlightPipe, resizeObservable, destroyObservable, RtlService, OnlyDigitsDirective } from '@fundamental-ngx/cdk/utils';
|
|
13
13
|
import { distinctUntilChanged, map, switchMap, startWith, debounceTime, tap as tap$1, filter as filter$1, take, takeUntil, skip } from 'rxjs/operators';
|
|
14
14
|
import * as i3 from '@angular/common';
|
|
15
15
|
import { NgTemplateOutlet, CommonModule, NgClass, KeyValuePipe, formatNumber } from '@angular/common';
|
|
@@ -84,91 +84,68 @@ const DefaultGapLayout = {
|
|
|
84
84
|
S: 0
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
priorityState = firstErrorState;
|
|
87
|
+
const FDP_FORM_ERROR_DIRECTIVE = new InjectionToken('FdpFormErrorDirective');
|
|
88
|
+
|
|
89
|
+
class FormFieldErrorDescriptionDirective {
|
|
90
|
+
/** @hidden */
|
|
91
|
+
constructor(templateRef, _formFieldErrorDirective) {
|
|
92
|
+
this.templateRef = templateRef;
|
|
93
|
+
this._formFieldErrorDirective = _formFieldErrorDirective;
|
|
94
|
+
this._formFieldErrorDirective?.registerDescription(this);
|
|
95
|
+
}
|
|
96
|
+
/** @hidden */
|
|
97
|
+
static ngTemplateContextGuard(dir, ctx) {
|
|
101
98
|
return true;
|
|
102
|
-
}
|
|
103
|
-
|
|
99
|
+
}
|
|
100
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormFieldErrorDescriptionDirective, deps: [{ token: i0.TemplateRef }, { token: FDP_FORM_ERROR_DIRECTIVE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
101
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: FormFieldErrorDescriptionDirective, isStandalone: true, selector: "[fdpFormFieldErrorDescription]", inputs: { fdpFormFieldErrorDescriptionAs: "fdpFormFieldErrorDescriptionAs" }, ngImport: i0 }); }
|
|
104
102
|
}
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormFieldErrorDescriptionDirective, decorators: [{
|
|
104
|
+
type: Directive,
|
|
105
|
+
args: [{
|
|
106
|
+
selector: '[fdpFormFieldErrorDescription]',
|
|
107
|
+
standalone: true
|
|
108
|
+
}]
|
|
109
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: undefined, decorators: [{
|
|
110
|
+
type: Optional
|
|
111
|
+
}, {
|
|
112
|
+
type: Inject,
|
|
113
|
+
args: [FDP_FORM_ERROR_DIRECTIVE]
|
|
114
|
+
}] }], propDecorators: { fdpFormFieldErrorDescriptionAs: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}] } });
|
|
105
117
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
class InputMessageGroupWithTemplate extends FormInputMessageGroupComponent {
|
|
113
|
-
constructor() {
|
|
114
|
-
super(...arguments);
|
|
115
|
-
/**
|
|
116
|
-
* To allow user to determine what event he wants to trigger the messages to show
|
|
117
|
-
* Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).
|
|
118
|
-
*/
|
|
119
|
-
this.triggers = [
|
|
120
|
-
{
|
|
121
|
-
trigger: 'focusin',
|
|
122
|
-
openAction: true,
|
|
123
|
-
closeAction: false
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
trigger: 'focusout',
|
|
127
|
-
openAction: false,
|
|
128
|
-
closeAction: true
|
|
129
|
-
}
|
|
130
|
-
];
|
|
131
|
-
/** @hidden Translated aria-label for the popover body (#14260). Overrides the core key with the platform key. */
|
|
132
|
-
this._popoverAriaLabel = resolveTranslationSignalFn()('platformInputMessageGroup.popoverAriaLabel');
|
|
118
|
+
class FormFieldErrorHeadingDirective {
|
|
119
|
+
/** @hidden */
|
|
120
|
+
constructor(templateRef, _formFieldErrorDirective) {
|
|
121
|
+
this.templateRef = templateRef;
|
|
122
|
+
this._formFieldErrorDirective = _formFieldErrorDirective;
|
|
123
|
+
this._formFieldErrorDirective?.registerHeading(this);
|
|
133
124
|
}
|
|
134
|
-
|
|
135
|
-
static
|
|
125
|
+
/** @hidden */
|
|
126
|
+
static ngTemplateContextGuard(dir, ctx) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormFieldErrorHeadingDirective, deps: [{ token: i0.TemplateRef }, { token: FDP_FORM_ERROR_DIRECTIVE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
130
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: FormFieldErrorHeadingDirective, isStandalone: true, selector: "[fdpFormFieldErrorHeading]", inputs: { fdpFormFieldErrorHeadingAs: "fdpFormFieldErrorHeadingAs", fdpFormFieldErrorHeadingType: "fdpFormFieldErrorHeadingType" }, ngImport: i0 }); }
|
|
136
131
|
}
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
138
|
-
type:
|
|
139
|
-
args: [{
|
|
140
|
-
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormFieldErrorHeadingDirective, decorators: [{
|
|
133
|
+
type: Directive,
|
|
134
|
+
args: [{
|
|
135
|
+
selector: '[fdpFormFieldErrorHeading]',
|
|
136
|
+
standalone: true
|
|
137
|
+
}]
|
|
138
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: undefined, decorators: [{
|
|
139
|
+
type: Optional
|
|
140
|
+
}, {
|
|
141
|
+
type: Inject,
|
|
142
|
+
args: [FDP_FORM_ERROR_DIRECTIVE]
|
|
143
|
+
}] }], propDecorators: { fdpFormFieldErrorHeadingAs: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], fdpFormFieldErrorHeadingType: [{
|
|
141
146
|
type: Input
|
|
142
|
-
}], triggerItemTemplate: [{
|
|
143
|
-
type: ContentChild,
|
|
144
|
-
args: ['triggerItem', { static: false }]
|
|
145
147
|
}] } });
|
|
146
148
|
|
|
147
|
-
const defaultFormFieldHintOptions = {
|
|
148
|
-
placement: 'right',
|
|
149
|
-
position: 'after',
|
|
150
|
-
trigger: [
|
|
151
|
-
{ trigger: 'mouseenter', openAction: true, closeAction: false },
|
|
152
|
-
{ trigger: 'mouseleave', openAction: false, closeAction: true },
|
|
153
|
-
{ trigger: 'focusin', openAction: true, closeAction: false },
|
|
154
|
-
{ trigger: 'focusout', openAction: false, closeAction: true }
|
|
155
|
-
],
|
|
156
|
-
glyph: 'hint',
|
|
157
|
-
target: 'auto'
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
const FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT = new InjectionToken('Form field default hint options', {
|
|
161
|
-
factory: () => defaultFormFieldHintOptions
|
|
162
|
-
});
|
|
163
|
-
const FDP_FORM_FIELD_HINT_LAYOUT_CONFIG = new InjectionToken('Configuration for setting default values for configuring how places for inline help are coming', {
|
|
164
|
-
factory: () => ({
|
|
165
|
-
hintOnInputBreakpoints: ['M', 'L', 'XL'],
|
|
166
|
-
hintPlaceMinSize: 1
|
|
167
|
-
})
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
const FDP_FORM_ERROR_DIRECTIVE = new InjectionToken('FdpFormErrorDirective');
|
|
171
|
-
|
|
172
149
|
class FormFieldErrorDirective {
|
|
173
150
|
/** Error type. Defines which type to return. Either self, or from heading directive. */
|
|
174
151
|
get type() {
|
|
@@ -255,6 +232,89 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
255
232
|
type: Input
|
|
256
233
|
}] } });
|
|
257
234
|
|
|
235
|
+
/**
|
|
236
|
+
* Returns form state based on priority.
|
|
237
|
+
* @param states Error states of the form fields.
|
|
238
|
+
* @param priorityStates Array of prioritized states.
|
|
239
|
+
* @returns first found form state of `priorityStates`.
|
|
240
|
+
*/
|
|
241
|
+
function getFormState(states, priorityStates = ['error', 'warning', 'information', 'success', 'default']) {
|
|
242
|
+
let priorityState = 'default';
|
|
243
|
+
priorityStates.some((state) => {
|
|
244
|
+
const firstErrorState = states.find((formState) => formState === state);
|
|
245
|
+
if (!firstErrorState) {
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
priorityState = firstErrorState;
|
|
249
|
+
return true;
|
|
250
|
+
});
|
|
251
|
+
return priorityState;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* This extends core implementation to support richer extensibility and instead of relying
|
|
256
|
+
* only on ng-content selector this will allow you to put any content as trigger.
|
|
257
|
+
*
|
|
258
|
+
* Let's think of u
|
|
259
|
+
*/
|
|
260
|
+
class InputMessageGroupWithTemplate extends FormInputMessageGroupComponent {
|
|
261
|
+
constructor() {
|
|
262
|
+
super(...arguments);
|
|
263
|
+
/**
|
|
264
|
+
* To allow user to determine what event he wants to trigger the messages to show
|
|
265
|
+
* Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).
|
|
266
|
+
*/
|
|
267
|
+
this.triggers = [
|
|
268
|
+
{
|
|
269
|
+
trigger: 'focusin',
|
|
270
|
+
openAction: true,
|
|
271
|
+
closeAction: false
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
trigger: 'focusout',
|
|
275
|
+
openAction: false,
|
|
276
|
+
closeAction: true
|
|
277
|
+
}
|
|
278
|
+
];
|
|
279
|
+
/** @hidden Translated aria-label for the popover body (#14260). Overrides the core key with the platform key. */
|
|
280
|
+
this._popoverAriaLabel = resolveTranslationSignalFn()('platformInputMessageGroup.popoverAriaLabel');
|
|
281
|
+
}
|
|
282
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: InputMessageGroupWithTemplate, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
283
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: InputMessageGroupWithTemplate, isStandalone: true, selector: "fdp-input-message-group", inputs: { triggers: "triggers" }, queries: [{ propertyName: "triggerItemTemplate", first: true, predicate: ["triggerItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-popover\n #popover\n (isOpenChange)=\"openChanged($event)\"\n additionalBodyClass=\"fd-popover__body--input-message-group\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [fillControlMode]=\"fillControlMode\"\n [isOpen]=\"isOpen\"\n [placement]=\"placement\"\n [triggers]=\"triggers\"\n [disableScrollbar]=\"true\"\n [focusAutoCapture]=\"false\"\n [focusTrapped]=\"false\"\n [restoreFocusOnClose]=\"false\"\n [bodyAriaLabel]=\"_popoverAriaLabel()\"\n class=\"fd-form-input-message-group fd-popover--input-message-group\"\n>\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"triggerItemTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n</fd-popover>\n", styles: [".fd-popover-container-custom--message{flex-grow:1}.fd-popover-container-custom{border:none}.fd-popover__control{cursor:auto!important}fdp-input-message-group .fd-popover-custom{display:inline}fdp-input-message-group .fd-datetime .fd-popover-custom{display:inline-block}.fd-popover__body.fd-popover__body--input-message-group{margin-top:0!important;z-index:999}\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "bodyAriaLabel", "bodyRole", "bodyAriaLabelledBy", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"], outputs: ["onClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
284
|
+
}
|
|
285
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: InputMessageGroupWithTemplate, decorators: [{
|
|
286
|
+
type: Component,
|
|
287
|
+
args: [{ selector: 'fdp-input-message-group', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PopoverComponent, PopoverControlComponent, NgTemplateOutlet, PopoverBodyComponent], template: "<fd-popover\n #popover\n (isOpenChange)=\"openChanged($event)\"\n additionalBodyClass=\"fd-popover__body--input-message-group\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n [closeOnEscapeKey]=\"closeOnEscapeKey\"\n [fillControlMode]=\"fillControlMode\"\n [isOpen]=\"isOpen\"\n [placement]=\"placement\"\n [triggers]=\"triggers\"\n [disableScrollbar]=\"true\"\n [focusAutoCapture]=\"false\"\n [focusTrapped]=\"false\"\n [restoreFocusOnClose]=\"false\"\n [bodyAriaLabel]=\"_popoverAriaLabel()\"\n class=\"fd-form-input-message-group fd-popover--input-message-group\"\n>\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"triggerItemTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body>\n <ng-content></ng-content>\n </fd-popover-body>\n</fd-popover>\n", styles: [".fd-popover-container-custom--message{flex-grow:1}.fd-popover-container-custom{border:none}.fd-popover__control{cursor:auto!important}fdp-input-message-group .fd-popover-custom{display:inline}fdp-input-message-group .fd-datetime .fd-popover-custom{display:inline-block}.fd-popover__body.fd-popover__body--input-message-group{margin-top:0!important;z-index:999}\n"] }]
|
|
288
|
+
}], propDecorators: { triggers: [{
|
|
289
|
+
type: Input
|
|
290
|
+
}], triggerItemTemplate: [{
|
|
291
|
+
type: ContentChild,
|
|
292
|
+
args: ['triggerItem', { static: false }]
|
|
293
|
+
}] } });
|
|
294
|
+
|
|
295
|
+
const defaultFormFieldHintOptions = {
|
|
296
|
+
placement: 'right',
|
|
297
|
+
position: 'after',
|
|
298
|
+
trigger: [
|
|
299
|
+
{ trigger: 'mouseenter', openAction: true, closeAction: false },
|
|
300
|
+
{ trigger: 'mouseleave', openAction: false, closeAction: true },
|
|
301
|
+
{ trigger: 'focusin', openAction: true, closeAction: false },
|
|
302
|
+
{ trigger: 'focusout', openAction: false, closeAction: true }
|
|
303
|
+
],
|
|
304
|
+
glyph: 'hint',
|
|
305
|
+
target: 'auto'
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
const FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT = new InjectionToken('Form field default hint options', {
|
|
309
|
+
factory: () => defaultFormFieldHintOptions
|
|
310
|
+
});
|
|
311
|
+
const FDP_FORM_FIELD_HINT_LAYOUT_CONFIG = new InjectionToken('Configuration for setting default values for configuring how places for inline help are coming', {
|
|
312
|
+
factory: () => ({
|
|
313
|
+
hintOnInputBreakpoints: ['M', 'L', 'XL'],
|
|
314
|
+
hintPlaceMinSize: 1
|
|
315
|
+
})
|
|
316
|
+
});
|
|
317
|
+
|
|
258
318
|
class FormFieldControlExtrasComponent {
|
|
259
319
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormFieldControlExtrasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
260
320
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: FormFieldControlExtrasComponent, isStandalone: true, selector: "fdp-form-field-extras", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:flex;white-space:normal}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -4991,71 +5051,104 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
4991
5051
|
type: Input
|
|
4992
5052
|
}] } });
|
|
4993
5053
|
|
|
4994
|
-
|
|
5054
|
+
const formFieldProvider = {
|
|
5055
|
+
provide: FD_FORM_FIELD,
|
|
5056
|
+
useExisting: forwardRef(() => FormGeneratorFieldComponent)
|
|
5057
|
+
};
|
|
5058
|
+
const formGroupChildProvider$1 = {
|
|
5059
|
+
provide: FORM_GROUP_CHILD_FIELD_TOKEN,
|
|
5060
|
+
useExisting: forwardRef(() => FormGeneratorFieldComponent)
|
|
5061
|
+
};
|
|
5062
|
+
class FormGeneratorFieldComponent {
|
|
4995
5063
|
/** @hidden */
|
|
4996
|
-
|
|
4997
|
-
this.
|
|
4998
|
-
|
|
4999
|
-
|
|
5064
|
+
get _placeholder() {
|
|
5065
|
+
if (!this.field) {
|
|
5066
|
+
return '';
|
|
5067
|
+
}
|
|
5068
|
+
if (this.field.formItem?.placeholder) {
|
|
5069
|
+
return this.field.formItem?.placeholder;
|
|
5070
|
+
}
|
|
5071
|
+
if (this.field.formItem?.useMessageAsPlaceholder) {
|
|
5072
|
+
return this.field.formItem?.message;
|
|
5073
|
+
}
|
|
5074
|
+
return '';
|
|
5000
5075
|
}
|
|
5001
5076
|
/** @hidden */
|
|
5002
|
-
|
|
5003
|
-
|
|
5077
|
+
constructor(_fgService) {
|
|
5078
|
+
this._fgService = _fgService;
|
|
5079
|
+
/** @hidden */
|
|
5080
|
+
this._errorModels = [];
|
|
5004
5081
|
}
|
|
5005
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormFieldErrorDescriptionDirective, deps: [{ token: i0.TemplateRef }, { token: FDP_FORM_ERROR_DIRECTIVE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5006
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: FormFieldErrorDescriptionDirective, isStandalone: true, selector: "[fdpFormFieldErrorDescription]", inputs: { fdpFormFieldErrorDescriptionAs: "fdpFormFieldErrorDescriptionAs" }, ngImport: i0 }); }
|
|
5007
|
-
}
|
|
5008
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormFieldErrorDescriptionDirective, decorators: [{
|
|
5009
|
-
type: Directive,
|
|
5010
|
-
args: [{
|
|
5011
|
-
selector: '[fdpFormFieldErrorDescription]',
|
|
5012
|
-
standalone: true
|
|
5013
|
-
}]
|
|
5014
|
-
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: undefined, decorators: [{
|
|
5015
|
-
type: Optional
|
|
5016
|
-
}, {
|
|
5017
|
-
type: Inject,
|
|
5018
|
-
args: [FDP_FORM_ERROR_DIRECTIVE]
|
|
5019
|
-
}] }], propDecorators: { fdpFormFieldErrorDescriptionAs: [{
|
|
5020
|
-
type: Input
|
|
5021
|
-
}] } });
|
|
5022
|
-
|
|
5023
|
-
class FormFieldErrorHeadingDirective {
|
|
5024
5082
|
/** @hidden */
|
|
5025
|
-
|
|
5026
|
-
this.
|
|
5027
|
-
this._formFieldErrorDirective = _formFieldErrorDirective;
|
|
5028
|
-
this._formFieldErrorDirective?.registerHeading(this);
|
|
5083
|
+
ngOnInit() {
|
|
5084
|
+
this._errorModels = this._getErrors();
|
|
5029
5085
|
}
|
|
5030
5086
|
/** @hidden */
|
|
5031
|
-
|
|
5032
|
-
return
|
|
5087
|
+
_errorsTrackBy(_, error) {
|
|
5088
|
+
return error.type;
|
|
5033
5089
|
}
|
|
5034
|
-
|
|
5035
|
-
|
|
5090
|
+
/** @hidden */
|
|
5091
|
+
_isAdvancedError(error) {
|
|
5092
|
+
return error.heading && error.description && error.type;
|
|
5093
|
+
}
|
|
5094
|
+
/** @hidden */
|
|
5095
|
+
_getErrors() {
|
|
5096
|
+
const registeredErrors = this._fgService.validationErrorHints;
|
|
5097
|
+
const returnErrors = [
|
|
5098
|
+
{
|
|
5099
|
+
type: `${this.field.formItem.name}Validator`,
|
|
5100
|
+
value: null
|
|
5101
|
+
}
|
|
5102
|
+
];
|
|
5103
|
+
Object.entries(registeredErrors).forEach((type) => {
|
|
5104
|
+
const [errorType, errorValue] = type;
|
|
5105
|
+
returnErrors.push({
|
|
5106
|
+
type: errorType,
|
|
5107
|
+
value: errorValue
|
|
5108
|
+
});
|
|
5109
|
+
});
|
|
5110
|
+
return returnErrors;
|
|
5111
|
+
}
|
|
5112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGeneratorFieldComponent, deps: [{ token: FormGeneratorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: FormGeneratorFieldComponent, isStandalone: true, selector: "fdp-form-generator-field", inputs: { field: "field", form: "form", i18n: "i18n", formFieldName: "formFieldName", formGroupNamePath: "formGroupNamePath", rank: "rank", shouldShow: "shouldShow", hintOptions: "hintOptions" }, providers: [formFieldProvider, formGroupChildProvider$1], viewQueries: [{ propertyName: "fieldRenderer", first: true, predicate: i0.forwardRef(() => FormFieldComponent), descendants: true }], ngImport: i0, template: "<fdp-form-field\n [hint]=\"hintOptions\"\n [placeholder]=\"_placeholder\"\n [id]=\"field.formItem.id || formFieldName\"\n [column]=\"field.formItem.guiOptions?.column || 1\"\n [columnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.columnLayout)\"\n [colon]=\"field.formItem.guiOptions?.appendColon === true\"\n [label]=\"field.formItem.message\"\n [validators]=\"field.formItem.validators || []\"\n [required]=\"field.formItem.required\"\n [rank]=\"rank\"\n [labelColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.labelColumnLayout)\"\n [fieldColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.fieldColumnLayout)\"\n [gapColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.gapColumnLayout)\"\n [noLabelLayout]=\"field.formItem.guiOptions?.noLabelLayout || false\"\n [formGroup]=\"form\"\n #formField\n>\n @for (error of _errorModels; track _errorsTrackBy($index, error)) {\n <span *fdpFormFieldError=\"error.type; let directiveError\">\n @if (_isAdvancedError(directiveError)) {\n @if (directiveError.heading) {\n <span *fdpFormFieldErrorHeading=\"let validationError; type: directiveError.type\">\n {{ validationError.heading }}\n </span>\n }\n @if (directiveError.description) {\n <span *fdpFormFieldErrorDescription=\"let validationError\">\n {{ validationError.description }}\n </span>\n }\n } @else {\n <span *fdpFormFieldErrorHeading=\"let validationError\">\n {{ error.value ? error.value : validationError }}\n </span>\n }\n </span>\n }\n <ng-container\n [formField]=\"formField\"\n [form]=\"form\"\n [formGroupNamePath]=\"formGroupNamePath\"\n fdpDynamicFormControl\n [id]=\"field.formItem.id || formFieldName\"\n [name]=\"formFieldName\"\n [formItem]=\"field.formItem\"\n >\n </ng-container>\n</fdp-form-field>\n", dependencies: [{ kind: "component", type: FormFieldComponent, selector: "fdp-form-field", inputs: ["label", "id", "hint", "noLabelLayout", "validators", "rank", "placeholder", "column", "columnLayout", "labelColumnLayout", "fieldColumnLayout", "gapColumnLayout", "i18Strings", "required", "editable", "columns", "disabled", "colon", "formGroupContainer"], outputs: ["onChange", "onColumnChange"] }, { kind: "directive", type: FormFieldErrorDirective, selector: "[fdpFormFieldError]", inputs: ["fdpFormFieldErrorAs", "fdpFormFieldError", "fdpFormFieldErrorType"] }, { kind: "directive", type: FormFieldErrorHeadingDirective, selector: "[fdpFormFieldErrorHeading]", inputs: ["fdpFormFieldErrorHeadingAs", "fdpFormFieldErrorHeadingType"] }, { kind: "directive", type: FormFieldErrorDescriptionDirective, selector: "[fdpFormFieldErrorDescription]", inputs: ["fdpFormFieldErrorDescriptionAs"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: DynamicFormControlDirective, selector: "[fdpDynamicFormControl]", inputs: ["formItem", "id", "name", "form", "formGroupNamePath", "formField"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5036
5114
|
}
|
|
5037
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
5038
|
-
type:
|
|
5039
|
-
args: [{
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
5115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGeneratorFieldComponent, decorators: [{
|
|
5116
|
+
type: Component,
|
|
5117
|
+
args: [{ selector: 'fdp-form-generator-field', providers: [formFieldProvider, formGroupChildProvider$1], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
5118
|
+
FormFieldComponent,
|
|
5119
|
+
FormFieldErrorDirective,
|
|
5120
|
+
FormFieldErrorHeadingDirective,
|
|
5121
|
+
FormFieldErrorDescriptionDirective,
|
|
5122
|
+
FormsModule,
|
|
5123
|
+
ReactiveFormsModule,
|
|
5124
|
+
DynamicFormControlDirective
|
|
5125
|
+
], template: "<fdp-form-field\n [hint]=\"hintOptions\"\n [placeholder]=\"_placeholder\"\n [id]=\"field.formItem.id || formFieldName\"\n [column]=\"field.formItem.guiOptions?.column || 1\"\n [columnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.columnLayout)\"\n [colon]=\"field.formItem.guiOptions?.appendColon === true\"\n [label]=\"field.formItem.message\"\n [validators]=\"field.formItem.validators || []\"\n [required]=\"field.formItem.required\"\n [rank]=\"rank\"\n [labelColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.labelColumnLayout)\"\n [fieldColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.fieldColumnLayout)\"\n [gapColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.gapColumnLayout)\"\n [noLabelLayout]=\"field.formItem.guiOptions?.noLabelLayout || false\"\n [formGroup]=\"form\"\n #formField\n>\n @for (error of _errorModels; track _errorsTrackBy($index, error)) {\n <span *fdpFormFieldError=\"error.type; let directiveError\">\n @if (_isAdvancedError(directiveError)) {\n @if (directiveError.heading) {\n <span *fdpFormFieldErrorHeading=\"let validationError; type: directiveError.type\">\n {{ validationError.heading }}\n </span>\n }\n @if (directiveError.description) {\n <span *fdpFormFieldErrorDescription=\"let validationError\">\n {{ validationError.description }}\n </span>\n }\n } @else {\n <span *fdpFormFieldErrorHeading=\"let validationError\">\n {{ error.value ? error.value : validationError }}\n </span>\n }\n </span>\n }\n <ng-container\n [formField]=\"formField\"\n [form]=\"form\"\n [formGroupNamePath]=\"formGroupNamePath\"\n fdpDynamicFormControl\n [id]=\"field.formItem.id || formFieldName\"\n [name]=\"formFieldName\"\n [formItem]=\"field.formItem\"\n >\n </ng-container>\n</fdp-form-field>\n" }]
|
|
5126
|
+
}], ctorParameters: () => [{ type: FormGeneratorService }], propDecorators: { field: [{
|
|
5049
5127
|
type: Input
|
|
5050
|
-
}],
|
|
5128
|
+
}], form: [{
|
|
5129
|
+
type: Input
|
|
5130
|
+
}], i18n: [{
|
|
5131
|
+
type: Input
|
|
5132
|
+
}], formFieldName: [{
|
|
5133
|
+
type: Input
|
|
5134
|
+
}], formGroupNamePath: [{
|
|
5051
5135
|
type: Input
|
|
5136
|
+
}], rank: [{
|
|
5137
|
+
type: Input
|
|
5138
|
+
}], shouldShow: [{
|
|
5139
|
+
type: Input
|
|
5140
|
+
}], hintOptions: [{
|
|
5141
|
+
type: Input
|
|
5142
|
+
}], fieldRenderer: [{
|
|
5143
|
+
type: ViewChild,
|
|
5144
|
+
args: [forwardRef(() => FormFieldComponent)]
|
|
5052
5145
|
}] } });
|
|
5053
5146
|
|
|
5054
5147
|
const formFieldGroupProvider = {
|
|
5055
5148
|
provide: FormFieldGroup,
|
|
5056
5149
|
useExisting: forwardRef(() => FormFieldGroupComponent)
|
|
5057
5150
|
};
|
|
5058
|
-
const formGroupChildProvider
|
|
5151
|
+
const formGroupChildProvider = {
|
|
5059
5152
|
provide: FORM_GROUP_CHILD_FIELD_TOKEN,
|
|
5060
5153
|
useExisting: forwardRef(() => FormFieldGroupComponent)
|
|
5061
5154
|
};
|
|
@@ -5134,11 +5227,11 @@ class FormFieldGroupComponent {
|
|
|
5134
5227
|
this.formGroupContainer.removeFormFieldGroup(this);
|
|
5135
5228
|
}
|
|
5136
5229
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormFieldGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5137
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: FormFieldGroupComponent, isStandalone: true, selector: "fdp-form-field-group", inputs: { label: "label", formName: "formName", formGroupContainer: "formGroupContainer", labelColumnLayout: "labelColumnLayout", fieldColumnLayout: "fieldColumnLayout", gapColumnLayout: "gapColumnLayout", hintOptions: "hintOptions" }, providers: [formFieldGroupProvider, formGroupChildProvider
|
|
5230
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: FormFieldGroupComponent, isStandalone: true, selector: "fdp-form-field-group", inputs: { label: "label", formName: "formName", formGroupContainer: "formGroupContainer", labelColumnLayout: "labelColumnLayout", fieldColumnLayout: "fieldColumnLayout", gapColumnLayout: "gapColumnLayout", hintOptions: "hintOptions" }, providers: [formFieldGroupProvider, formGroupChildProvider], queries: [{ propertyName: "fields", predicate: FD_FORM_FIELD, descendants: true }], ngImport: i0, template: ` <ng-content></ng-content>`, isInline: true, styles: [".fd-form-group{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}.fd-form-group:after,.fd-form-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group--inline{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-form-group--with-spacing{gap:.625rem}.fd-form-group__header{border:0;-webkit-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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);border-bottom:var(--sapGroup_TitleBorderWidth) solid var(--sapGroup_TitleBorderColor);box-sizing:border-box;min-height:var(--sapElement_LineHeight);padding-inline:var(--fdFormGroupPaddingInline,1rem);width:100%}.fd-form-group__header:after,.fd-form-group__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header--no-padding{--fdFormGroupPaddingInline:0}.fd-form-group__header--no-border{border-bottom:none}.fd-form-group__header-text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-group__header-text:after,.fd-form-group__header-text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header-text--wrap{overflow:visible;text-overflow:clip;white-space:normal}\n/*! Bundled license information:\n\nfundamental-styles/dist/form-group.css:\n (*!\n * Fundamental Library Styles v0.41.8\n * Copyright (c) 2026 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"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5138
5231
|
}
|
|
5139
5232
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormFieldGroupComponent, decorators: [{
|
|
5140
5233
|
type: Component,
|
|
5141
|
-
args: [{ selector: 'fdp-form-field-group', template: ` <ng-content></ng-content>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [formFieldGroupProvider, formGroupChildProvider
|
|
5234
|
+
args: [{ selector: 'fdp-form-field-group', template: ` <ng-content></ng-content>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [formFieldGroupProvider, formGroupChildProvider], standalone: true, styles: [".fd-form-group{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}.fd-form-group:after,.fd-form-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group--inline{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-form-group--with-spacing{gap:.625rem}.fd-form-group__header{border:0;-webkit-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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);border-bottom:var(--sapGroup_TitleBorderWidth) solid var(--sapGroup_TitleBorderColor);box-sizing:border-box;min-height:var(--sapElement_LineHeight);padding-inline:var(--fdFormGroupPaddingInline,1rem);width:100%}.fd-form-group__header:after,.fd-form-group__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header--no-padding{--fdFormGroupPaddingInline:0}.fd-form-group__header--no-border{border-bottom:none}.fd-form-group__header-text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-group__header-text:after,.fd-form-group__header-text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header-text--wrap{overflow:visible;text-overflow:clip;white-space:normal}\n/*! Bundled license information:\n\nfundamental-styles/dist/form-group.css:\n (*!\n * Fundamental Library Styles v0.41.8\n * Copyright (c) 2026 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"] }]
|
|
5142
5235
|
}], propDecorators: { label: [{
|
|
5143
5236
|
type: Input
|
|
5144
5237
|
}], formName: [{
|
|
@@ -5158,27 +5251,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
5158
5251
|
args: [FD_FORM_FIELD, { descendants: true }]
|
|
5159
5252
|
}] } });
|
|
5160
5253
|
|
|
5161
|
-
class FormGroupHeaderComponent {
|
|
5162
|
-
constructor() {
|
|
5163
|
-
/** Whether the header should wrap on multiple lines */
|
|
5164
|
-
this.allowWrap = input(false, { ...(ngDevMode ? { debugName: "allowWrap" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
5165
|
-
/** Fields Group */
|
|
5166
|
-
this.fieldGroup = input(null, /* @ts-ignore */
|
|
5167
|
-
...(ngDevMode ? [{ debugName: "fieldGroup" }] : /* istanbul ignore next */ []));
|
|
5168
|
-
/** Hint options */
|
|
5169
|
-
this.hintOptions = computed(() => this.fieldGroup()?.hintOptions, /* @ts-ignore */
|
|
5170
|
-
...(ngDevMode ? [{ debugName: "hintOptions" }] : /* istanbul ignore next */ []));
|
|
5171
|
-
}
|
|
5172
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGroupHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5173
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: FormGroupHeaderComponent, isStandalone: true, selector: "[fdp-form-group-header]", inputs: { allowWrap: { classPropertyName: "allowWrap", publicName: "allowWrap", isSignal: true, isRequired: false, transformFunction: null }, fieldGroup: { classPropertyName: "fieldGroup", publicName: "fieldGroup", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "fd-form-group__header" }, ngImport: i0, template: "@if (fieldGroup() && hintOptions()?.position === 'before') {\n <ng-template [ngTemplateOutlet]=\"inlineHelpRef\"></ng-template>\n}\n<h6 class=\"fd-form-group__header-text\" [class.fd-form-group__header-text--wrap]=\"allowWrap()\">\n {{ fieldGroup()?.label }}\n</h6>\n@if (fieldGroup() && hintOptions()?.position === 'after') {\n <ng-template [ngTemplateOutlet]=\"inlineHelpRef\"></ng-template>\n}\n<ng-template #inlineHelpRef>\n @if (hintOptions(); as options) {\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [style.vertical-align]=\"'middle'\"\n [fd-inline-help]=\"options.content\"\n [glyph]=\"options.glyph\"\n [placement]=\"options.placement ?? null\"\n [triggers]=\"options.trigger ?? []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["emphasized", "disabled", "inverted", "subtle", "undecorated", "touchTarget"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "size", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { kind: "directive", type: InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["fd-inline-help", "placement", "triggers", "closeOnOutsideClick", "additionalBodyClass", "disabled", "bodyId", "bodyRole", "noArrow", "closeOnEscapeKey", "closeOnNavigation", "restoreFocusOnClose", "appendTo", "fixedPosition", "maxWidth", "scrollStrategy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5174
|
-
}
|
|
5175
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGroupHeaderComponent, decorators: [{
|
|
5176
|
-
type: Component,
|
|
5177
|
-
args: [{ selector: '[fdp-form-group-header]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
5178
|
-
class: 'fd-form-group__header'
|
|
5179
|
-
}, imports: [NgTemplateOutlet, LinkComponent, IconComponent, InlineHelpDirective], template: "@if (fieldGroup() && hintOptions()?.position === 'before') {\n <ng-template [ngTemplateOutlet]=\"inlineHelpRef\"></ng-template>\n}\n<h6 class=\"fd-form-group__header-text\" [class.fd-form-group__header-text--wrap]=\"allowWrap()\">\n {{ fieldGroup()?.label }}\n</h6>\n@if (fieldGroup() && hintOptions()?.position === 'after') {\n <ng-template [ngTemplateOutlet]=\"inlineHelpRef\"></ng-template>\n}\n<ng-template #inlineHelpRef>\n @if (hintOptions(); as options) {\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [style.vertical-align]=\"'middle'\"\n [fd-inline-help]=\"options.content\"\n [glyph]=\"options.glyph\"\n [placement]=\"options.placement ?? null\"\n [triggers]=\"options.trigger ?? []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n }\n</ng-template>\n" }]
|
|
5180
|
-
}], propDecorators: { allowWrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowWrap", required: false }] }], fieldGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldGroup", required: false }] }] } });
|
|
5181
|
-
|
|
5182
5254
|
class Field {
|
|
5183
5255
|
/** @hidden */
|
|
5184
5256
|
constructor(name, rank, renderer, column) {
|
|
@@ -5197,832 +5269,170 @@ class FieldGroup {
|
|
|
5197
5269
|
}
|
|
5198
5270
|
}
|
|
5199
5271
|
|
|
5200
|
-
|
|
5201
|
-
|
|
5202
|
-
|
|
5203
|
-
return row.value instanceof FieldGroup ? row.value.fields : row.value;
|
|
5204
|
-
}
|
|
5205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FieldGroupRowValuePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
5206
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: FieldGroupRowValuePipe, isStandalone: true, name: "fieldGroupRowValue" }); }
|
|
5272
|
+
/** @hidden */
|
|
5273
|
+
function isFieldChild(child) {
|
|
5274
|
+
return child instanceof FormFieldComponent;
|
|
5207
5275
|
}
|
|
5208
|
-
|
|
5209
|
-
|
|
5276
|
+
/** @hidden */
|
|
5277
|
+
function isFieldGroupWrapperChild(child) {
|
|
5278
|
+
return child instanceof FormGeneratorFieldComponent;
|
|
5279
|
+
}
|
|
5280
|
+
/** @hidden */
|
|
5281
|
+
function isFieldGroupChild(child) {
|
|
5282
|
+
return child instanceof FormFieldGroupComponent;
|
|
5283
|
+
}
|
|
5284
|
+
/** @hidden */
|
|
5285
|
+
function getFormField(field) {
|
|
5286
|
+
return isFieldGroupWrapperChild(field) ? field.fieldRenderer : field;
|
|
5287
|
+
}
|
|
5288
|
+
/** @hidden */
|
|
5289
|
+
function getField(field) {
|
|
5290
|
+
field = isFieldGroupWrapperChild(field) ? field.fieldRenderer : field;
|
|
5291
|
+
return new Field(field.id, field.rank, field.renderer, field.column);
|
|
5292
|
+
}
|
|
5293
|
+
|
|
5294
|
+
/**
|
|
5295
|
+
* @deprecated
|
|
5296
|
+
* Use direct imports of components and directives.
|
|
5297
|
+
*/
|
|
5298
|
+
class PlatformAutoCompleteModule {
|
|
5299
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformAutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5300
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: PlatformAutoCompleteModule, imports: [AutoCompleteDirective], exports: [AutoCompleteDirective] }); }
|
|
5301
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformAutoCompleteModule }); }
|
|
5302
|
+
}
|
|
5303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformAutoCompleteModule, decorators: [{
|
|
5304
|
+
type: NgModule,
|
|
5210
5305
|
args: [{
|
|
5211
|
-
|
|
5212
|
-
|
|
5306
|
+
imports: [AutoCompleteDirective],
|
|
5307
|
+
exports: [AutoCompleteDirective]
|
|
5213
5308
|
}]
|
|
5214
5309
|
}] });
|
|
5215
5310
|
|
|
5216
5311
|
/**
|
|
5217
|
-
* @
|
|
5218
|
-
*
|
|
5219
|
-
*
|
|
5220
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5221
|
-
* you may not use this file except in compliance with the License.
|
|
5222
|
-
* You may obtain a copy of the License at
|
|
5223
|
-
*
|
|
5224
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5225
|
-
*
|
|
5226
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
5227
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5228
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5229
|
-
* See the License for the specific language governing permissions and
|
|
5230
|
-
* limitations under the License.
|
|
5231
|
-
*
|
|
5232
|
-
*
|
|
5312
|
+
* @deprecated
|
|
5313
|
+
* Use direct imports of components and directives.
|
|
5233
5314
|
*/
|
|
5234
|
-
|
|
5235
|
-
|
|
5236
|
-
|
|
5237
|
-
};
|
|
5238
|
-
|
|
5239
|
-
|
|
5240
|
-
|
|
5241
|
-
|
|
5242
|
-
|
|
5243
|
-
|
|
5244
|
-
|
|
5245
|
-
|
|
5246
|
-
* Well behaved form that has information side by side in multiple
|
|
5247
|
-
* columns needs to also know how to merge properly.
|
|
5248
|
-
*
|
|
5249
|
-
* Just to get the idea about the structure without actual input components inside
|
|
5250
|
-
*
|
|
5251
|
-
* ```html
|
|
5252
|
-
* <fdp-form-group [hintPlacement]="'inline'" columnLayout="XL2-L2-M1-S1">
|
|
5253
|
-
* <fdp-form-field [id]="'Field A'" [rank]="10" column="1">
|
|
5254
|
-
* </fdp-form-field>
|
|
5255
|
-
*
|
|
5256
|
-
* <fdp-form-field [id]="'Field B'" [rank]="30" column="1">
|
|
5257
|
-
* </fdp-form-field>
|
|
5258
|
-
*
|
|
5259
|
-
* <fdp-form-field [id]="'Field C'" [rank]="20" column="1">
|
|
5260
|
-
* </fdp-form-field>
|
|
5261
|
-
*
|
|
5262
|
-
* <fdp-form-field [id]="Field D" [rank]="20" column="2">
|
|
5263
|
-
* </fdp-form-field>
|
|
5264
|
-
*
|
|
5265
|
-
*
|
|
5266
|
-
* <fdp-form-field [id]="'Field E'" [rank]="30" column="2">
|
|
5267
|
-
* </fdp-form-field>
|
|
5268
|
-
* </fdp-form-group>
|
|
5315
|
+
class PlatformCheckboxModule {
|
|
5316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5317
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: PlatformCheckboxModule, imports: [CheckboxComponent], exports: [CheckboxComponent] }); }
|
|
5318
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformCheckboxModule, imports: [CheckboxComponent] }); }
|
|
5319
|
+
}
|
|
5320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformCheckboxModule, decorators: [{
|
|
5321
|
+
type: NgModule,
|
|
5322
|
+
args: [{
|
|
5323
|
+
imports: [CheckboxComponent],
|
|
5324
|
+
exports: [CheckboxComponent]
|
|
5325
|
+
}]
|
|
5326
|
+
}] });
|
|
5269
5327
|
|
|
5270
|
-
|
|
5271
|
-
|
|
5272
|
-
|
|
5273
|
-
*
|
|
5274
|
-
* Which can be translated like this
|
|
5275
|
-
* [Field A] - First column, rank 10
|
|
5276
|
-
* [Field B] - First column, rank 30
|
|
5277
|
-
* [Field C] - First column, rank 20
|
|
5278
|
-
* [Field D] - Second column, rank 20
|
|
5279
|
-
* [Field E] - Second column, rank 30
|
|
5280
|
-
*
|
|
5281
|
-
* What we expect that it creates following form with two column layout:
|
|
5282
|
-
* [Field A] [Field D]
|
|
5283
|
-
* [Field C] [Field E]
|
|
5284
|
-
* [Field B]
|
|
5285
|
-
*
|
|
5286
|
-
* You can see all is sorted accordingly by rank (C goes before B).
|
|
5287
|
-
*
|
|
5288
|
-
* When you move into smaller device and all is merged into one columns the naive solution would be:
|
|
5289
|
-
*
|
|
5290
|
-
* [Field A]
|
|
5291
|
-
* [Field C]
|
|
5292
|
-
* [Field B]
|
|
5293
|
-
* [Field D]
|
|
5294
|
-
* [Field E]
|
|
5295
|
-
*
|
|
5296
|
-
* The fields needs to restructure according to their original positioning. When Field D was on the
|
|
5297
|
-
* top why we should move it to the bottom? The more correct solution should be following.
|
|
5298
|
-
*
|
|
5299
|
-
* [Field A]
|
|
5300
|
-
* [Field D]
|
|
5301
|
-
* [Field C]
|
|
5302
|
-
* [Field E]
|
|
5303
|
-
* [Field B]
|
|
5304
|
-
*
|
|
5305
|
-
* Fields nicely merge together. they don't wrap.
|
|
5306
|
-
*
|
|
5307
|
-
*
|
|
5308
|
-
* Besides this layout support it also wraps form functionality and it can work with FormGroup.
|
|
5309
|
-
* You can also decide if you want your form with <form> element or without it.
|
|
5310
|
-
*
|
|
5311
|
-
*
|
|
5312
|
-
*/
|
|
5313
|
-
class FormGroupComponent {
|
|
5314
|
-
/**
|
|
5315
|
-
* Defines column layout for inline items.
|
|
5316
|
-
*/
|
|
5317
|
-
set inlineColumnLayout(value) {
|
|
5318
|
-
this._inlineColumnLayout = normalizeColumnLayout(value);
|
|
5319
|
-
this._updateInlineColumnLayout();
|
|
5320
|
-
}
|
|
5321
|
-
get inlineColumnLayout() {
|
|
5322
|
-
return this._inlineColumnLayout;
|
|
5323
|
-
}
|
|
5328
|
+
const COMBOBOX_COMPONENT = new InjectionToken('ComboboxInterface');
|
|
5329
|
+
|
|
5330
|
+
class ComboboxMobileComponent extends MobileModeBase {
|
|
5324
5331
|
/** @hidden */
|
|
5325
|
-
constructor() {
|
|
5326
|
-
|
|
5327
|
-
|
|
5328
|
-
|
|
5329
|
-
|
|
5330
|
-
|
|
5331
|
-
this.noLabelLayout = false;
|
|
5332
|
-
/**
|
|
5333
|
-
* Defines label's column layout.
|
|
5334
|
-
*/
|
|
5335
|
-
this.labelColumnLayout = DefaultHorizontalLabelLayout;
|
|
5336
|
-
/**
|
|
5337
|
-
* Defines field's column layout.
|
|
5338
|
-
*/
|
|
5339
|
-
this.fieldColumnLayout = DefaultHorizontalFieldLayout;
|
|
5340
|
-
/**
|
|
5341
|
-
* Defines gap column layout.
|
|
5342
|
-
*/
|
|
5343
|
-
this.gapColumnLayout = DefaultGapLayout;
|
|
5344
|
-
/** Whether to hide form's main title. Default is false. */
|
|
5345
|
-
this.hideMainTItle = false;
|
|
5346
|
-
/** Whether to wrap all the provided content in a `<form>` */
|
|
5347
|
-
this.useForm = false;
|
|
5348
|
-
/** Whether all form items should have identical layout provided for form group */
|
|
5349
|
-
this.unifiedLayout = true;
|
|
5350
|
-
/**
|
|
5351
|
-
* onSubmit event
|
|
5352
|
-
*/
|
|
5353
|
-
this.onSubmit = new EventEmitter();
|
|
5354
|
-
/**
|
|
5355
|
-
* @hidden
|
|
5356
|
-
* Packed fields which should be rendered
|
|
5357
|
-
*/
|
|
5358
|
-
this.formRows = {};
|
|
5359
|
-
/** @hidden */
|
|
5360
|
-
this.contentDensityObserver = inject(ContentDensityObserver);
|
|
5361
|
-
/** @hidden */
|
|
5362
|
-
this._destroyRef = inject(DestroyRef);
|
|
5363
|
-
/** @hidden */
|
|
5364
|
-
this._inlineColumnLayout = DefaultVerticalFieldLayout;
|
|
5365
|
-
/**
|
|
5366
|
-
* @hidden
|
|
5367
|
-
*
|
|
5368
|
-
* List of direct FdpFormGroup's children.
|
|
5369
|
-
*
|
|
5370
|
-
* Since "formGroupChildren" uses "{ descendants: true }" option that means
|
|
5371
|
-
* "formGroupChildren" will keep track of nested FdpFormGroup fields as well.
|
|
5372
|
-
* This list relies on the injection mechanism so nested FdpFormGroup's fields/fieldGroups
|
|
5373
|
-
* will be omitted
|
|
5332
|
+
constructor(comboboxComponent) {
|
|
5333
|
+
super(comboboxComponent, MobileModeControl.COMBOBOX);
|
|
5334
|
+
/** @hidden
|
|
5335
|
+
* For internal usage
|
|
5336
|
+
* Control element, which will be rendered inside dialog.
|
|
5337
|
+
* List element, which will be rendered inside dialog.
|
|
5374
5338
|
*/
|
|
5375
|
-
this.
|
|
5376
|
-
/** @hidden */
|
|
5377
|
-
this._subscriptions = new Subscription();
|
|
5378
|
-
/** @hidden */
|
|
5379
|
-
this._cd = inject(ChangeDetectorRef);
|
|
5380
|
-
/** @hidden */
|
|
5381
|
-
this._elementRef = inject(ElementRef);
|
|
5382
|
-
/** @hidden */
|
|
5383
|
-
this._formContainer = inject(ControlContainer, { optional: true });
|
|
5384
|
-
/** @hidden */
|
|
5385
|
-
this._defaultHintOptions = inject(FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT);
|
|
5386
|
-
/** @hidden used for template side Type correction */
|
|
5387
|
-
this.$fieldGroup = (f) => f;
|
|
5388
|
-
this.formGroup = (this._formContainer ? this._formContainer.control : new FormGroup({}));
|
|
5389
|
-
}
|
|
5390
|
-
/** @hidden */
|
|
5391
|
-
ngOnChanges(changes) {
|
|
5392
|
-
this.buildComponentCssClass();
|
|
5393
|
-
if (changes.hint) {
|
|
5394
|
-
if (typeof this.hint === 'string' || this.hint instanceof TemplateRef) {
|
|
5395
|
-
this._hintOptions = {
|
|
5396
|
-
...this._defaultHintOptions,
|
|
5397
|
-
content: this.hint
|
|
5398
|
-
};
|
|
5399
|
-
}
|
|
5400
|
-
else {
|
|
5401
|
-
this._hintOptions = {
|
|
5402
|
-
...this._defaultHintOptions,
|
|
5403
|
-
...this.hint
|
|
5404
|
-
};
|
|
5405
|
-
}
|
|
5406
|
-
}
|
|
5339
|
+
this.childContent = null;
|
|
5407
5340
|
}
|
|
5408
5341
|
/** @hidden */
|
|
5409
5342
|
ngOnInit() {
|
|
5410
|
-
|
|
5411
|
-
this.formGroup = new FormGroup({});
|
|
5412
|
-
}
|
|
5413
|
-
this.buildComponentCssClass();
|
|
5414
|
-
this._updateInlineColumnLayout();
|
|
5415
|
-
}
|
|
5416
|
-
/** @hidden */
|
|
5417
|
-
ngAfterContentInit() {
|
|
5418
|
-
this.i18Strings = this.i18Strings ? this.i18Strings : this.i18Template;
|
|
5419
|
-
this._setUserLayout();
|
|
5420
|
-
this._updateFieldByColumn();
|
|
5421
|
-
this._updateFormFieldsProperties();
|
|
5422
|
-
this._listenToFormGroupChildren();
|
|
5423
|
-
this._listenFormFieldColumnChange();
|
|
5424
|
-
this._cd.markForCheck();
|
|
5425
|
-
}
|
|
5426
|
-
/** @hidden */
|
|
5427
|
-
ngAfterViewInit() {
|
|
5428
|
-
this.i18Strings = this.i18Strings ? this.i18Strings : this.i18Template;
|
|
5429
|
-
this._setUserLayout();
|
|
5430
|
-
this._updateFieldByColumn();
|
|
5431
|
-
this._updateFormFieldsProperties();
|
|
5432
|
-
this._listenToFormGroupChildren();
|
|
5433
|
-
this._listenFormFieldColumnChange();
|
|
5434
|
-
this._trackFormGroupResize();
|
|
5435
|
-
this._cd.markForCheck();
|
|
5436
|
-
this._cd.detectChanges();
|
|
5437
|
-
}
|
|
5438
|
-
/** @hidden */
|
|
5439
|
-
ngOnDestroy() {
|
|
5440
|
-
this._subscriptions.unsubscribe();
|
|
5441
|
-
}
|
|
5442
|
-
/** @hidden */
|
|
5443
|
-
addFormField(formField) {
|
|
5444
|
-
// It's needed to set default FormField properties
|
|
5445
|
-
// on early stage otherwise validation errors
|
|
5446
|
-
// will be thrown on FormField level (e.g. i18string are not defined)
|
|
5447
|
-
this._updateFormFieldProperties(formField);
|
|
5448
|
-
// keep track of directly registered children
|
|
5449
|
-
this._addDirectFormGroupChild(formField);
|
|
5450
|
-
}
|
|
5451
|
-
/** @hidden */
|
|
5452
|
-
removeFormField(formField) {
|
|
5453
|
-
this._removeDirectFormGroupChild(formField);
|
|
5343
|
+
this._listenOnMultiInputOpenChange();
|
|
5454
5344
|
}
|
|
5455
5345
|
/** @hidden */
|
|
5456
|
-
|
|
5457
|
-
this.
|
|
5346
|
+
handleDismiss() {
|
|
5347
|
+
this.dialogRef.dismiss();
|
|
5348
|
+
this._component.dialogDismiss(this._selectedBackup);
|
|
5458
5349
|
}
|
|
5459
5350
|
/** @hidden */
|
|
5460
|
-
|
|
5461
|
-
this.
|
|
5351
|
+
handleApprove() {
|
|
5352
|
+
this.dialogRef.close();
|
|
5353
|
+
this._component.dialogApprove();
|
|
5462
5354
|
}
|
|
5463
5355
|
/** @hidden */
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
|
|
5467
|
-
|
|
5468
|
-
|
|
5356
|
+
_toggleDialog(open) {
|
|
5357
|
+
if (!open) {
|
|
5358
|
+
return;
|
|
5359
|
+
}
|
|
5360
|
+
this._selectedBackup = this._component.inputText;
|
|
5361
|
+
if (!this._dialogService.hasOpenDialogs()) {
|
|
5362
|
+
this._open();
|
|
5469
5363
|
}
|
|
5470
5364
|
}
|
|
5471
5365
|
/** @hidden */
|
|
5472
|
-
|
|
5473
|
-
this.
|
|
5474
|
-
|
|
5475
|
-
|
|
5476
|
-
trackByFn(index) {
|
|
5477
|
-
return index;
|
|
5478
|
-
}
|
|
5479
|
-
/** @hidden */
|
|
5480
|
-
trackByFieldName(index, field) {
|
|
5481
|
-
return field ? field.name : undefined;
|
|
5482
|
-
}
|
|
5483
|
-
/** @hidden */
|
|
5484
|
-
buildComponentCssClass() {
|
|
5485
|
-
return ['fd-container', this.class];
|
|
5366
|
+
_listenOnMultiInputOpenChange() {
|
|
5367
|
+
this._component.openChange
|
|
5368
|
+
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
5369
|
+
.subscribe((isOpen) => this._toggleDialog(isOpen));
|
|
5486
5370
|
}
|
|
5487
5371
|
/** @hidden */
|
|
5488
|
-
|
|
5489
|
-
this.
|
|
5490
|
-
|
|
5491
|
-
|
|
5372
|
+
_open() {
|
|
5373
|
+
this.dialogRef = this._dialogService.open(this.dialogTemplate, {
|
|
5374
|
+
mobile: true,
|
|
5375
|
+
disablePaddings: true,
|
|
5376
|
+
...this.dialogConfig,
|
|
5377
|
+
backdropClickCloseable: false,
|
|
5378
|
+
container: this._elementRef.nativeElement
|
|
5492
5379
|
});
|
|
5493
|
-
|
|
5494
|
-
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5498
|
-
|
|
5499
|
-
|
|
5500
|
-
|
|
5501
|
-
|
|
5502
|
-
* @hidden
|
|
5503
|
-
* Assign a fields or field group to specified columns with rank.
|
|
5504
|
-
* if `columnLayoutType` is given a fields without column property will set on last column.
|
|
5505
|
-
* Otherwise the fields set 1 column.
|
|
5506
|
-
*/
|
|
5507
|
-
_updateFieldByColumn() {
|
|
5508
|
-
const formChildren = this._getFormGroupChildren();
|
|
5509
|
-
const rows = {};
|
|
5510
|
-
let rowNumber = 0;
|
|
5511
|
-
let columns = {};
|
|
5512
|
-
for (const child of formChildren) {
|
|
5513
|
-
if (isFieldChild(child)) {
|
|
5514
|
-
const field = getField(child);
|
|
5515
|
-
const columnNumber = this._validateFieldColumn(child.column);
|
|
5516
|
-
if (!columns[columnNumber]) {
|
|
5517
|
-
columns[columnNumber] = [];
|
|
5518
|
-
}
|
|
5519
|
-
columns[columnNumber].push(field);
|
|
5520
|
-
}
|
|
5521
|
-
if (isFieldGroupChild(child)) {
|
|
5522
|
-
const fieldGroupColumns = {};
|
|
5523
|
-
if (Object.keys(columns).length) {
|
|
5524
|
-
rows[rowNumber] = columns;
|
|
5525
|
-
columns = {};
|
|
5526
|
-
rowNumber++;
|
|
5380
|
+
// Have to fire "detectChanges" to fix "ExpressionChangedAfterItHasBeenCheckedError"
|
|
5381
|
+
this.dialogRef.afterLoaded.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
5382
|
+
this._component.detectChanges();
|
|
5383
|
+
});
|
|
5384
|
+
const refSub = this.dialogRef.afterClosed.subscribe({
|
|
5385
|
+
error: (type) => {
|
|
5386
|
+
if (type === 'escape') {
|
|
5387
|
+
this._component.dialogDismiss(this._selectedBackup);
|
|
5388
|
+
refSub.unsubscribe();
|
|
5527
5389
|
}
|
|
5528
|
-
const groupFields = child.fields.map((field) => getField(field));
|
|
5529
|
-
groupFields.forEach((groupField) => {
|
|
5530
|
-
const columnNumber = this._validateFieldColumn(groupField.column);
|
|
5531
|
-
if (!fieldGroupColumns[columnNumber]) {
|
|
5532
|
-
fieldGroupColumns[columnNumber] = [];
|
|
5533
|
-
}
|
|
5534
|
-
fieldGroupColumns[columnNumber].push(groupField);
|
|
5535
|
-
});
|
|
5536
|
-
rows[rowNumber] = new FieldGroup(child.label, fieldGroupColumns, child.hintOptions);
|
|
5537
|
-
rowNumber++;
|
|
5538
5390
|
}
|
|
5539
|
-
}
|
|
5540
|
-
rows[rowNumber] = columns;
|
|
5541
|
-
this.formRows = rows;
|
|
5391
|
+
});
|
|
5542
5392
|
}
|
|
5543
|
-
|
|
5544
|
-
|
|
5545
|
-
if (this.columnLayout && columnNumber) {
|
|
5546
|
-
if (isNaN(columnNumber)) {
|
|
5547
|
-
throw new Error('Input a valid column number');
|
|
5548
|
-
}
|
|
5549
|
-
if (columnNumber > this.xlColumnsNumber) {
|
|
5550
|
-
throw new Error(`Columns cannot be more than ${this.xlColumnsNumber}`);
|
|
5551
|
-
}
|
|
5552
|
-
return columnNumber;
|
|
5553
|
-
}
|
|
5554
|
-
return this.xlColumnsNumber;
|
|
5555
|
-
}
|
|
5556
|
-
/** @hidden */
|
|
5557
|
-
_updateFormFieldsProperties() {
|
|
5558
|
-
this._getFormGroupChildren().forEach((formField) => {
|
|
5559
|
-
if (isFieldChild(formField)) {
|
|
5560
|
-
this._updateFormFieldProperties(formField);
|
|
5561
|
-
}
|
|
5562
|
-
if (isFieldGroupChild(formField)) {
|
|
5563
|
-
formField.fields.forEach((field) => this._updateFormFieldProperties(getFormField(field)));
|
|
5564
|
-
}
|
|
5565
|
-
});
|
|
5566
|
-
}
|
|
5567
|
-
/**
|
|
5568
|
-
* @hidden
|
|
5569
|
-
* Pass some global properties to each field. Even formGroup cna be inject directly inside form
|
|
5570
|
-
* field we are using here a setter method to initialize the
|
|
5571
|
-
*
|
|
5572
|
-
*/
|
|
5573
|
-
_updateFormFieldProperties(formField) {
|
|
5574
|
-
if (this.unifiedLayout) {
|
|
5575
|
-
formField.editable = this.editable;
|
|
5576
|
-
formField.noLabelLayout = this.noLabelLayout;
|
|
5577
|
-
}
|
|
5578
|
-
formField.setDefaultColumnLayout();
|
|
5579
|
-
formField.i18Strings = formField.i18Strings ? formField.i18Strings : this.i18Strings;
|
|
5580
|
-
formField.setErrorDirectives(this._errorDirectives);
|
|
5581
|
-
}
|
|
5582
|
-
/**
|
|
5583
|
-
* @hidden
|
|
5584
|
-
* if `columnLayoutType` is given, set those column layouts appropriately. Otherwise, a layout will set on 1 column
|
|
5585
|
-
*/
|
|
5586
|
-
_setUserLayout() {
|
|
5587
|
-
if (this.columnLayout) {
|
|
5588
|
-
this._getColumnNumbers(this.columnLayout);
|
|
5589
|
-
if (isNaN(this.xlColumnsNumber) || isNaN(this.lgColumnsNumber) || isNaN(this.mdColumnsNumber)) {
|
|
5590
|
-
throw new Error('Input a valid number for columns');
|
|
5591
|
-
}
|
|
5592
|
-
if (this.xlColumnsNumber > 12 || this.lgColumnsNumber > 12 || this.mdColumnsNumber > 12) {
|
|
5593
|
-
throw new Error('Columns cannot be more than 12');
|
|
5594
|
-
}
|
|
5595
|
-
const lgColumns = 12 / this.lgColumnsNumber;
|
|
5596
|
-
const mdColumns = 12 / this.mdColumnsNumber;
|
|
5597
|
-
const xlColumns = 12 / this.xlColumnsNumber;
|
|
5598
|
-
// for `lg` single-column layout, Styles does not use any class, and providing `fd-col-lg--12` has unintended side-effects
|
|
5599
|
-
// therefore, we remove the lg class for single-column layout
|
|
5600
|
-
if (lgColumns === 12) {
|
|
5601
|
-
this.xlCol = `fd-col-xl--${xlColumns} fd-col-md--${mdColumns}`;
|
|
5602
|
-
}
|
|
5603
|
-
else {
|
|
5604
|
-
this.xlCol = `fd-col-xl--${xlColumns} fd-col-md--${mdColumns} fd-col-lg--${lgColumns}`;
|
|
5605
|
-
}
|
|
5606
|
-
}
|
|
5607
|
-
else {
|
|
5608
|
-
this.xlCol = `fd-col-xl--12 fd-col-md--12 fd-col-lg--12`;
|
|
5609
|
-
}
|
|
5610
|
-
}
|
|
5611
|
-
/** @hidden */
|
|
5612
|
-
_getColumnNumbers(layout) {
|
|
5613
|
-
const [xl, lg, md] = layout.split('-');
|
|
5614
|
-
this.xlColumnsNumber = parseInt(xl.slice(2, xl.length), 10);
|
|
5615
|
-
this.lgColumnsNumber = parseInt(lg.slice(1, lg.length), 10);
|
|
5616
|
-
this.mdColumnsNumber = parseInt(md.slice(1, md.length), 10);
|
|
5617
|
-
}
|
|
5618
|
-
/** @hidden */
|
|
5619
|
-
_addDirectFormGroupChild(child) {
|
|
5620
|
-
if (this._formGroupDirectChildren.indexOf(child) > -1) {
|
|
5621
|
-
return;
|
|
5622
|
-
}
|
|
5623
|
-
this._formGroupDirectChildren.push(child);
|
|
5624
|
-
}
|
|
5625
|
-
/** @hidden */
|
|
5626
|
-
_removeDirectFormGroupChild(child) {
|
|
5627
|
-
this._formGroupDirectChildren = this._formGroupDirectChildren.filter((_child) => _child !== child);
|
|
5628
|
-
}
|
|
5629
|
-
/**
|
|
5630
|
-
* @hidden
|
|
5631
|
-
* Get direct form group children in the original order
|
|
5632
|
-
*/
|
|
5633
|
-
_getFormGroupChildren() {
|
|
5634
|
-
if (!this.formGroupChildren) {
|
|
5635
|
-
return [];
|
|
5636
|
-
}
|
|
5637
|
-
const children = this.formGroupChildren
|
|
5638
|
-
.toArray()
|
|
5639
|
-
.map((child) => (isFieldGroupWrapperChild(child) ? child.fieldRenderer : child));
|
|
5640
|
-
return children.filter((child) => this._formGroupDirectChildren.includes(child));
|
|
5641
|
-
}
|
|
5642
|
-
/** @hidden */
|
|
5643
|
-
_updateInlineColumnLayout() {
|
|
5644
|
-
this._inlineColumnLayoutClass = generateColumnClass(this.inlineColumnLayout);
|
|
5645
|
-
}
|
|
5646
|
-
/**
|
|
5647
|
-
* @hidden
|
|
5648
|
-
* have to trigger change detection here in order to re-check contents
|
|
5649
|
-
* inside "FormField.renderer" template every time component's dimensions changed
|
|
5650
|
-
*/
|
|
5651
|
-
_trackFormGroupResize() {
|
|
5652
|
-
this._subscriptions.add(resizeObservable(this._elementRef.nativeElement)
|
|
5653
|
-
.pipe(debounceTime(20))
|
|
5654
|
-
.subscribe(() => this._cd.markForCheck()));
|
|
5655
|
-
}
|
|
5656
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5657
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: FormGroupComponent, isStandalone: true, selector: "fdp-form-group", inputs: { id: "id", name: "name", editable: "editable", noLabelLayout: "noLabelLayout", class: "class", hint: "hint", inlineColumnLayout: "inlineColumnLayout", labelColumnLayout: "labelColumnLayout", fieldColumnLayout: "fieldColumnLayout", gapColumnLayout: "gapColumnLayout", formGroup: "formGroup", topTitle: "topTitle", mainTitle: "mainTitle", hideMainTItle: "hideMainTItle", object: "object", i18Strings: "i18Strings", useForm: ["useForm", "useForm", booleanAttribute], columnLayout: "columnLayout", unifiedLayout: "unifiedLayout" }, outputs: { onSubmit: "onSubmit" }, providers: [formGroupProvider, FormFieldLayoutService, contentDensityObserverProviders()], queries: [{ propertyName: "i18Template", first: true, predicate: ["i18n"], descendants: true, static: true }, { propertyName: "formGroupChildren", predicate: FORM_GROUP_CHILD_FIELD_TOKEN, descendants: true }, { propertyName: "_errorDirectives", predicate: FormFieldErrorDirective }], viewQueries: [{ propertyName: "nativeForm", first: true, predicate: ["nativeForm"], descendants: true, read: NgForm }], usesOnChanges: true, ngImport: i0, template: "@if (useForm) {\n <form #nativeForm (ngSubmit)=\"onSubmit.emit($event)\" [id]=\"id\" [name]=\"name\">\n <ng-template [ngTemplateOutlet]=\"body\"></ng-template>\n </form>\n} @else {\n <!-- Render fields and field groups with assigned columns -->\n <ng-template [ngTemplateOutlet]=\"fields\"></ng-template>\n}\n<ng-template #body>\n <!-- Render fields and field groups with assigned columns -->\n <ng-template [ngTemplateOutlet]=\"fields\"></ng-template>\n</ng-template>\n<ng-template #fields>\n @if (mainTitle && !hideMainTItle) {\n <div class=\"fd-form-header\">\n <ng-template [ngTemplateOutlet]=\"mainTitleTemplate\"></ng-template>\n </div>\n }\n <div\n class=\"fd-container fd-form-layout-grid-container\"\n [class.is-compact]=\"contentDensityObserver.isCompactSignal()\"\n >\n @for (column of formRows | keyvalue; track $index) {\n <div class=\"fd-row\">\n @for (fields of column | fieldGroupRowValue | keyvalue; track $index) {\n @if ($fieldGroup(column.value); as value) {\n @if (value.label && $index === 0) {\n <div class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"xlCol\">\n <div fdp-form-group-header [fieldGroup]=\"$index === 0 ? value : null\"></div>\n </div>\n </div>\n }\n }\n\n <div class=\"fd-col fd-form-group\" [class]=\"xlCol\">\n @for (field of fields.value; track trackByFieldName($index, field)) {\n <div class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"_inlineColumnLayoutClass\" [style.order]=\"field.rank\">\n <ng-template [ngTemplateOutlet]=\"field?.renderer || null\"></ng-template>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n<!-- For nested form-group -->\n<ng-content select=\"fdp-form-group\"></ng-content>\n<ng-template #mainTitleTemplate>\n @if (_hintOptions && _hintOptions.content && _hintOptions.position === 'before') {\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n }\n <h5 class=\"fd-form-header__text\">\n {{ mainTitle }}\n </h5>\n @if (_hintOptions && _hintOptions.content && _hintOptions.position === 'after') {\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n }\n <ng-template #hintTemplate>\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"_hintOptions!.content\"\n [glyph]=\"_hintOptions!.glyph\"\n [placement]=\"_hintOptions!.placement ?? null\"\n [triggers]=\"_hintOptions!.trigger ?? []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n </ng-template>\n</ng-template>\n", styles: [".fd-col,.fd-container,.fd-row{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-col:after,.fd-col:before,.fd-container:after,.fd-container:before,.fd-row:after,.fd-row:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;padding-block:0;padding-inline:.25rem;position:relative}.fd-container .fd-row{margin-inline:-.25rem;min-width:calc(100% + .5rem)}.fd-container>.fd-row>.fd-col{padding-block:.25rem}.fd-container.fd-container--no-gap .fd-row,.fd-container.fd-container--no-horizontal-gap .fd-row{margin-inline:0}.fd-container.fd-container--no-gap .fd-row .fd-col,.fd-container.fd-container--no-horizontal-gap .fd-row .fd-col{padding-inline:0}.fd-container.fd-container--no-gap>.fd-row>.fd-col,.fd-container.fd-container--no-vertical-gap>.fd-row>.fd-col{padding-block:0}.fd-container[dir=rtl],[dir=rtl] .fd-container{direction:rtl}.fd-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;position:relative}.fd-col{max-width:100%;min-width:100%;padding-inline:.25rem}.fd-col--0{max-width:0;min-width:0%}.fd-col--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col--3{max-width:25%;min-width:25%}.fd-col--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col--6{max-width:50%;min-width:50%}.fd-col--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col--9{max-width:75%;min-width:75%}.fd-col--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col--12{max-width:100%;min-width:100%}.fd-col--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}.fd-col--full{max-width:none;min-width:8.3333333333%;-webkit-box-flex:1;-ms-flex:1;flex:1}.fd-col--wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}@media(width>=600px){.fd-container{padding-block:0;padding-inline:.5rem}.fd-container .fd-row{margin-inline:-.5rem;min-width:calc(100% + 1rem)}.fd-container>.fd-row>.fd-col{padding-block:.5rem}.fd-col{padding-inline:.5rem}.fd-col-md--0{max-width:0;min-width:0%}.fd-col-md--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-md--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-md--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-md--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-md--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-md--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-md--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-md--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-md--3{max-width:25%;min-width:25%}.fd-col-md--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-md--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-md--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-md--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-md--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-md--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-md--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-md--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-md--6{max-width:50%;min-width:50%}.fd-col-md--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-md--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-md--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-md--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-md--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-md--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-md--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-md--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-md--9{max-width:75%;min-width:75%}.fd-col-md--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-md--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-md--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-md--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-md--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-md--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-md--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-md--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-md--12{max-width:100%;min-width:100%}.fd-col-md--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-md--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}@media(width>=1024px){.fd-col-lg--0{max-width:0;min-width:0%}.fd-col-lg--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-lg--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-lg--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-lg--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-lg--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-lg--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-lg--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-lg--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-lg--3{max-width:25%;min-width:25%}.fd-col-lg--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-lg--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-lg--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-lg--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-lg--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-lg--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-lg--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-lg--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-lg--6{max-width:50%;min-width:50%}.fd-col-lg--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-lg--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-lg--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-lg--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-lg--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-lg--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-lg--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-lg--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-lg--9{max-width:75%;min-width:75%}.fd-col-lg--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-lg--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-lg--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-lg--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-lg--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-lg--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-lg--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-lg--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-lg--12{max-width:100%;min-width:100%}.fd-col-lg--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-lg--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}@media(width>=1440px){.fd-col-xl--0{max-width:0;min-width:0%}.fd-col-xl--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-xl--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-xl--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-xl--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-xl--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-xl--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-xl--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-xl--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-xl--3{max-width:25%;min-width:25%}.fd-col-xl--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-xl--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-xl--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-xl--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-xl--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-xl--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-xl--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-xl--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-xl--6{max-width:50%;min-width:50%}.fd-col-xl--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-xl--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-xl--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-xl--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-xl--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-xl--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-xl--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-xl--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-xl--9{max-width:75%;min-width:75%}.fd-col-xl--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-xl--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-xl--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-xl--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-xl--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-xl--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-xl--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-xl--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-xl--12{max-width:100%;min-width:100%}.fd-col-xl--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-xl--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}.fd-container.fd-form-layout-grid-container .fd-form-group,.fd-container.fd-form-layout-grid-container.fd-form-group{padding-block:1rem!important;padding-inline:1rem!important}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-group,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-group{padding-block:0!important;padding-inline:0!important}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label{-webkit-margin-end:0;margin-inline-end:0;white-space:normal}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--colon,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--colon{-webkit-padding-end:.25rem;padding-inline-end:.25rem}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--required,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--required{-webkit-padding-end:.5rem;padding-inline-end:.5rem}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--required.fd-form-label--colon,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--required.fd-form-label--colon{-webkit-padding-end:.75rem;padding-inline-end:.75rem}.fd-container.fd-form-layout-grid-container .fd-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.fd-container.fd-form-layout-grid-container .fd-row .fd-col{overflow:hidden;padding-block:0;text-overflow:ellipsis;white-space:nowrap}.fd-container.fd-form-layout-grid-container .fd-row .fd-col:not(.fd-form-group){-ms-flex-item-align:center;align-self:center}@media(width>=0){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label{float:right}}@media(width>=0)and (width<=599px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=600px){.fd-container.fd-form-layout-grid-container{padding-block:0;padding-inline:.25rem}.fd-container.fd-form-layout-grid-container .fd-row{margin-block:0;margin-inline:-.25rem;min-width:calc(100% + .5rem)}.fd-container.fd-form-layout-grid-container .fd-row .fd-col{padding-block:0;padding-inline:.25rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label{float:right}}@media(width>=600px)and (width<=1023px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=1024px){.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label{float:right}}@media(width>=1024px)and (width<=1443px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=1440px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label{float:right}}.fd-section{background-color:var(--sapToolbar_Background);border:0;border-bottom:none;-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 1.5rem;padding-inline:0;padding-inline:.5rem}.fd-section:after,.fd-section:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section:after{clear:both;content:\"\";display:table}@media(min-width:600px){.fd-section{padding-inline:2rem}}@media(min-width:1440px){.fd-section{padding-inline:3rem}}.fd-section--no-border,.fd-section:last-child{border-bottom:0}.fd-section--bleed,.fd-section--full-bleed{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-section--bleed:after,.fd-section--bleed:before,.fd-section--full-bleed:after,.fd-section--full-bleed:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:.5rem}@media(min-width:600px){.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:2rem}}@media(min-width:1440px){.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:3rem}}.fd-section__header{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;min-height:1.5rem;padding-block:0;padding-inline:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-margin-after:1.5rem;margin-block-end:1.5rem}.fd-section__header:after,.fd-section__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__title{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapTitleColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader2Size);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:2rem;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-margin-after:0;margin-block-end:0}.fd-section__title:after,.fd-section__title:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__actions{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;-webkit-margin-start:auto;margin-inline-start:auto}.fd-section__actions:after,.fd-section__actions:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__footer{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-pack:center;-ms-flex-pack:center;justify-content:center}.fd-section__footer:after,.fd-section__footer:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group{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}.fd-form-group:after,.fd-form-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group--inline{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-form-group--with-spacing{gap:.625rem}.fd-form-group__header{border:0;-webkit-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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);border-bottom:var(--sapGroup_TitleBorderWidth) solid var(--sapGroup_TitleBorderColor);box-sizing:border-box;min-height:var(--sapElement_LineHeight);padding-inline:var(--fdFormGroupPaddingInline,1rem);width:100%}.fd-form-group__header:after,.fd-form-group__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header--no-padding{--fdFormGroupPaddingInline:0}.fd-form-group__header--no-border{border-bottom:none}.fd-form-group__header-text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-group__header-text:after,.fd-form-group__header-text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header-text--wrap{overflow:visible;text-overflow:clip;white-space:normal}.fd-form-header{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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);-webkit-box-shadow:0 var(--fdFormHeader_Border_Width) 0 var(--sapGroup_TitleBorderColor);box-shadow:0 var(--fdFormHeader_Border_Width) 0 var(--sapGroup_TitleBorderColor);height:var(--sapElement_LineHeight);padding-inline:1rem;width:100%}.fd-form-header:after,.fd-form-header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-header__text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-header__text:after,.fd-form-header__text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}fdp-form-group{display:block}fdp-form-group .fd-form-group{display:block}fdp-form-group .fd-form-group.fd-form-group--inline{display:flex;flex-wrap:wrap;justify-content:flex-start}fdp-form-group .fd-form-group__header{padding-inline:1rem}fdp-form-group .fd-row:empty{display:none}fdp-form-group .fd-form-group__header{margin-block-start:1rem}.fd-form-label{overflow:hidden}\n/*! Bundled license information:\n\nfundamental-styles/dist/form-header.css:\n (*!\n * Fundamental Library Styles v0.41.8\n * Copyright (c) 2026 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: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormGroupHeaderComponent, selector: "[fdp-form-group-header]", inputs: ["allowWrap", "fieldGroup"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["emphasized", "disabled", "inverted", "subtle", "undecorated", "touchTarget"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "size", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { kind: "directive", type: InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["fd-inline-help", "placement", "triggers", "closeOnOutsideClick", "additionalBodyClass", "disabled", "bodyId", "bodyRole", "noArrow", "closeOnEscapeKey", "closeOnNavigation", "restoreFocusOnClose", "appendTo", "fixedPosition", "maxWidth", "scrollStrategy"] }, { kind: "ngmodule", type: ContentDensityModule }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: FieldGroupRowValuePipe, name: "fieldGroupRowValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5393
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ComboboxMobileComponent, deps: [{ token: COMBOBOX_COMPONENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5394
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: ComboboxMobileComponent, isStandalone: true, selector: "fdp-combobox-mobile", viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-template [ngTemplateOutlet]=\"childContent?.controlTemplate || null\"></ng-template>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"childContent?.listTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\"> </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i1$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1$2.DialogHeaderComponent, selector: "fd-dialog-header", inputs: ["inShellbar"] }, { kind: "component", type: i1$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "directive", type: i1$2.DialogTemplateDirective, selector: "[fdDialogTemplate]", inputs: ["fdDialogTemplateConfig"] }, { kind: "directive", type: i2.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i3$1.BarMiddleDirective, selector: "[fd-bar-middle]", inputs: ["stackContentsVertically"] }, { kind: "directive", type: i3$1.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3$1.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["twoLineClamp", "headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "ngmodule", type: BarModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5658
5395
|
}
|
|
5659
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
5396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ComboboxMobileComponent, decorators: [{
|
|
5660
5397
|
type: Component,
|
|
5661
|
-
args: [{ selector: 'fdp-
|
|
5662
|
-
|
|
5398
|
+
args: [{ selector: 'fdp-combobox-mobile', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
5399
|
+
DialogModule,
|
|
5400
|
+
TitleComponent,
|
|
5401
|
+
TemplateDirective,
|
|
5402
|
+
BarModule,
|
|
5663
5403
|
NgTemplateOutlet,
|
|
5664
|
-
|
|
5665
|
-
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
5669
|
-
|
|
5670
|
-
|
|
5671
|
-
], template: "@if (useForm) {\n <form #nativeForm (ngSubmit)=\"onSubmit.emit($event)\" [id]=\"id\" [name]=\"name\">\n <ng-template [ngTemplateOutlet]=\"body\"></ng-template>\n </form>\n} @else {\n <!-- Render fields and field groups with assigned columns -->\n <ng-template [ngTemplateOutlet]=\"fields\"></ng-template>\n}\n<ng-template #body>\n <!-- Render fields and field groups with assigned columns -->\n <ng-template [ngTemplateOutlet]=\"fields\"></ng-template>\n</ng-template>\n<ng-template #fields>\n @if (mainTitle && !hideMainTItle) {\n <div class=\"fd-form-header\">\n <ng-template [ngTemplateOutlet]=\"mainTitleTemplate\"></ng-template>\n </div>\n }\n <div\n class=\"fd-container fd-form-layout-grid-container\"\n [class.is-compact]=\"contentDensityObserver.isCompactSignal()\"\n >\n @for (column of formRows | keyvalue; track $index) {\n <div class=\"fd-row\">\n @for (fields of column | fieldGroupRowValue | keyvalue; track $index) {\n @if ($fieldGroup(column.value); as value) {\n @if (value.label && $index === 0) {\n <div class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"xlCol\">\n <div fdp-form-group-header [fieldGroup]=\"$index === 0 ? value : null\"></div>\n </div>\n </div>\n }\n }\n\n <div class=\"fd-col fd-form-group\" [class]=\"xlCol\">\n @for (field of fields.value; track trackByFieldName($index, field)) {\n <div class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"_inlineColumnLayoutClass\" [style.order]=\"field.rank\">\n <ng-template [ngTemplateOutlet]=\"field?.renderer || null\"></ng-template>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n<!-- For nested form-group -->\n<ng-content select=\"fdp-form-group\"></ng-content>\n<ng-template #mainTitleTemplate>\n @if (_hintOptions && _hintOptions.content && _hintOptions.position === 'before') {\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n }\n <h5 class=\"fd-form-header__text\">\n {{ mainTitle }}\n </h5>\n @if (_hintOptions && _hintOptions.content && _hintOptions.position === 'after') {\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n }\n <ng-template #hintTemplate>\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"_hintOptions!.content\"\n [glyph]=\"_hintOptions!.glyph\"\n [placement]=\"_hintOptions!.placement ?? null\"\n [triggers]=\"_hintOptions!.trigger ?? []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n </ng-template>\n</ng-template>\n", styles: [".fd-col,.fd-container,.fd-row{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-col:after,.fd-col:before,.fd-container:after,.fd-container:before,.fd-row:after,.fd-row:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;padding-block:0;padding-inline:.25rem;position:relative}.fd-container .fd-row{margin-inline:-.25rem;min-width:calc(100% + .5rem)}.fd-container>.fd-row>.fd-col{padding-block:.25rem}.fd-container.fd-container--no-gap .fd-row,.fd-container.fd-container--no-horizontal-gap .fd-row{margin-inline:0}.fd-container.fd-container--no-gap .fd-row .fd-col,.fd-container.fd-container--no-horizontal-gap .fd-row .fd-col{padding-inline:0}.fd-container.fd-container--no-gap>.fd-row>.fd-col,.fd-container.fd-container--no-vertical-gap>.fd-row>.fd-col{padding-block:0}.fd-container[dir=rtl],[dir=rtl] .fd-container{direction:rtl}.fd-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;position:relative}.fd-col{max-width:100%;min-width:100%;padding-inline:.25rem}.fd-col--0{max-width:0;min-width:0%}.fd-col--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col--3{max-width:25%;min-width:25%}.fd-col--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col--6{max-width:50%;min-width:50%}.fd-col--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col--9{max-width:75%;min-width:75%}.fd-col--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col--12{max-width:100%;min-width:100%}.fd-col--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}.fd-col--full{max-width:none;min-width:8.3333333333%;-webkit-box-flex:1;-ms-flex:1;flex:1}.fd-col--wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}@media(width>=600px){.fd-container{padding-block:0;padding-inline:.5rem}.fd-container .fd-row{margin-inline:-.5rem;min-width:calc(100% + 1rem)}.fd-container>.fd-row>.fd-col{padding-block:.5rem}.fd-col{padding-inline:.5rem}.fd-col-md--0{max-width:0;min-width:0%}.fd-col-md--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-md--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-md--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-md--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-md--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-md--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-md--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-md--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-md--3{max-width:25%;min-width:25%}.fd-col-md--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-md--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-md--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-md--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-md--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-md--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-md--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-md--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-md--6{max-width:50%;min-width:50%}.fd-col-md--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-md--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-md--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-md--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-md--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-md--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-md--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-md--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-md--9{max-width:75%;min-width:75%}.fd-col-md--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-md--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-md--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-md--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-md--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-md--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-md--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-md--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-md--12{max-width:100%;min-width:100%}.fd-col-md--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-md--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}@media(width>=1024px){.fd-col-lg--0{max-width:0;min-width:0%}.fd-col-lg--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-lg--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-lg--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-lg--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-lg--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-lg--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-lg--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-lg--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-lg--3{max-width:25%;min-width:25%}.fd-col-lg--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-lg--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-lg--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-lg--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-lg--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-lg--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-lg--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-lg--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-lg--6{max-width:50%;min-width:50%}.fd-col-lg--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-lg--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-lg--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-lg--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-lg--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-lg--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-lg--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-lg--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-lg--9{max-width:75%;min-width:75%}.fd-col-lg--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-lg--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-lg--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-lg--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-lg--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-lg--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-lg--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-lg--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-lg--12{max-width:100%;min-width:100%}.fd-col-lg--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-lg--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}@media(width>=1440px){.fd-col-xl--0{max-width:0;min-width:0%}.fd-col-xl--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-xl--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-xl--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-xl--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-xl--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-xl--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-xl--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-xl--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-xl--3{max-width:25%;min-width:25%}.fd-col-xl--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-xl--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-xl--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-xl--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-xl--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-xl--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-xl--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-xl--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-xl--6{max-width:50%;min-width:50%}.fd-col-xl--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-xl--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-xl--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-xl--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-xl--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-xl--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-xl--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-xl--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-xl--9{max-width:75%;min-width:75%}.fd-col-xl--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-xl--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-xl--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-xl--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-xl--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-xl--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-xl--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-xl--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-xl--12{max-width:100%;min-width:100%}.fd-col-xl--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-xl--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}.fd-container.fd-form-layout-grid-container .fd-form-group,.fd-container.fd-form-layout-grid-container.fd-form-group{padding-block:1rem!important;padding-inline:1rem!important}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-group,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-group{padding-block:0!important;padding-inline:0!important}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label{-webkit-margin-end:0;margin-inline-end:0;white-space:normal}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--colon,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--colon{-webkit-padding-end:.25rem;padding-inline-end:.25rem}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--required,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--required{-webkit-padding-end:.5rem;padding-inline-end:.5rem}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--required.fd-form-label--colon,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--required.fd-form-label--colon{-webkit-padding-end:.75rem;padding-inline-end:.75rem}.fd-container.fd-form-layout-grid-container .fd-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.fd-container.fd-form-layout-grid-container .fd-row .fd-col{overflow:hidden;padding-block:0;text-overflow:ellipsis;white-space:nowrap}.fd-container.fd-form-layout-grid-container .fd-row .fd-col:not(.fd-form-group){-ms-flex-item-align:center;align-self:center}@media(width>=0){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label{float:right}}@media(width>=0)and (width<=599px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=600px){.fd-container.fd-form-layout-grid-container{padding-block:0;padding-inline:.25rem}.fd-container.fd-form-layout-grid-container .fd-row{margin-block:0;margin-inline:-.25rem;min-width:calc(100% + .5rem)}.fd-container.fd-form-layout-grid-container .fd-row .fd-col{padding-block:0;padding-inline:.25rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label{float:right}}@media(width>=600px)and (width<=1023px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=1024px){.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label{float:right}}@media(width>=1024px)and (width<=1443px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=1440px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label{float:right}}.fd-section{background-color:var(--sapToolbar_Background);border:0;border-bottom:none;-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 1.5rem;padding-inline:0;padding-inline:.5rem}.fd-section:after,.fd-section:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section:after{clear:both;content:\"\";display:table}@media(min-width:600px){.fd-section{padding-inline:2rem}}@media(min-width:1440px){.fd-section{padding-inline:3rem}}.fd-section--no-border,.fd-section:last-child{border-bottom:0}.fd-section--bleed,.fd-section--full-bleed{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-section--bleed:after,.fd-section--bleed:before,.fd-section--full-bleed:after,.fd-section--full-bleed:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:.5rem}@media(min-width:600px){.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:2rem}}@media(min-width:1440px){.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:3rem}}.fd-section__header{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;min-height:1.5rem;padding-block:0;padding-inline:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-margin-after:1.5rem;margin-block-end:1.5rem}.fd-section__header:after,.fd-section__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__title{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapTitleColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader2Size);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:2rem;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-margin-after:0;margin-block-end:0}.fd-section__title:after,.fd-section__title:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__actions{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;-webkit-margin-start:auto;margin-inline-start:auto}.fd-section__actions:after,.fd-section__actions:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__footer{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-pack:center;-ms-flex-pack:center;justify-content:center}.fd-section__footer:after,.fd-section__footer:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group{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}.fd-form-group:after,.fd-form-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group--inline{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-form-group--with-spacing{gap:.625rem}.fd-form-group__header{border:0;-webkit-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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);border-bottom:var(--sapGroup_TitleBorderWidth) solid var(--sapGroup_TitleBorderColor);box-sizing:border-box;min-height:var(--sapElement_LineHeight);padding-inline:var(--fdFormGroupPaddingInline,1rem);width:100%}.fd-form-group__header:after,.fd-form-group__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header--no-padding{--fdFormGroupPaddingInline:0}.fd-form-group__header--no-border{border-bottom:none}.fd-form-group__header-text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-group__header-text:after,.fd-form-group__header-text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header-text--wrap{overflow:visible;text-overflow:clip;white-space:normal}.fd-form-header{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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);-webkit-box-shadow:0 var(--fdFormHeader_Border_Width) 0 var(--sapGroup_TitleBorderColor);box-shadow:0 var(--fdFormHeader_Border_Width) 0 var(--sapGroup_TitleBorderColor);height:var(--sapElement_LineHeight);padding-inline:1rem;width:100%}.fd-form-header:after,.fd-form-header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-header__text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-header__text:after,.fd-form-header__text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}fdp-form-group{display:block}fdp-form-group .fd-form-group{display:block}fdp-form-group .fd-form-group.fd-form-group--inline{display:flex;flex-wrap:wrap;justify-content:flex-start}fdp-form-group .fd-form-group__header{padding-inline:1rem}fdp-form-group .fd-row:empty{display:none}fdp-form-group .fd-form-group__header{margin-block-start:1rem}.fd-form-label{overflow:hidden}\n/*! Bundled license information:\n\nfundamental-styles/dist/form-header.css:\n (*!\n * Fundamental Library Styles v0.41.8\n * Copyright (c) 2026 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"] }]
|
|
5672
|
-
}], ctorParameters: () => [], propDecorators: { id: [{
|
|
5673
|
-
type: Input
|
|
5674
|
-
}], name: [{
|
|
5675
|
-
type: Input
|
|
5676
|
-
}], editable: [{
|
|
5677
|
-
type: Input
|
|
5678
|
-
}], noLabelLayout: [{
|
|
5679
|
-
type: Input
|
|
5680
|
-
}], class: [{
|
|
5681
|
-
type: Input
|
|
5682
|
-
}], hint: [{
|
|
5683
|
-
type: Input
|
|
5684
|
-
}], inlineColumnLayout: [{
|
|
5685
|
-
type: Input
|
|
5686
|
-
}], labelColumnLayout: [{
|
|
5687
|
-
type: Input
|
|
5688
|
-
}], fieldColumnLayout: [{
|
|
5689
|
-
type: Input
|
|
5690
|
-
}], gapColumnLayout: [{
|
|
5691
|
-
type: Input
|
|
5692
|
-
}], formGroup: [{
|
|
5693
|
-
type: Input
|
|
5694
|
-
}], topTitle: [{
|
|
5695
|
-
type: Input
|
|
5696
|
-
}], mainTitle: [{
|
|
5697
|
-
type: Input
|
|
5698
|
-
}], hideMainTItle: [{
|
|
5699
|
-
type: Input
|
|
5700
|
-
}], object: [{
|
|
5701
|
-
type: Input
|
|
5702
|
-
}], i18Strings: [{
|
|
5703
|
-
type: Input
|
|
5704
|
-
}], useForm: [{
|
|
5705
|
-
type: Input,
|
|
5706
|
-
args: [{ transform: booleanAttribute }]
|
|
5707
|
-
}], columnLayout: [{
|
|
5708
|
-
type: Input
|
|
5709
|
-
}], unifiedLayout: [{
|
|
5710
|
-
type: Input
|
|
5711
|
-
}], onSubmit: [{
|
|
5712
|
-
type: Output
|
|
5713
|
-
}], nativeForm: [{
|
|
5404
|
+
CdkScrollable,
|
|
5405
|
+
ScrollbarDirective
|
|
5406
|
+
], template: "<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-template [ngTemplateOutlet]=\"childContent?.controlTemplate || null\"></ng-template>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"childContent?.listTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\"> </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n" }]
|
|
5407
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
5408
|
+
type: Inject,
|
|
5409
|
+
args: [COMBOBOX_COMPONENT]
|
|
5410
|
+
}] }], propDecorators: { dialogTemplate: [{
|
|
5714
5411
|
type: ViewChild,
|
|
5715
|
-
args: ['
|
|
5716
|
-
}], i18Template: [{
|
|
5717
|
-
type: ContentChild,
|
|
5718
|
-
args: ['i18n', { static: true }]
|
|
5719
|
-
}], formGroupChildren: [{
|
|
5720
|
-
type: ContentChildren,
|
|
5721
|
-
args: [FORM_GROUP_CHILD_FIELD_TOKEN, { descendants: true }]
|
|
5722
|
-
}], _errorDirectives: [{
|
|
5723
|
-
type: ContentChildren,
|
|
5724
|
-
args: [FormFieldErrorDirective]
|
|
5412
|
+
args: ['dialogTemplate']
|
|
5725
5413
|
}] } });
|
|
5726
5414
|
|
|
5727
|
-
const EXPORTABLE_DECLARATIONS = [
|
|
5728
|
-
FormGroupComponent,
|
|
5729
|
-
FormFieldComponent,
|
|
5730
|
-
InputMessageGroupWithTemplate,
|
|
5731
|
-
FormFieldGroupComponent,
|
|
5732
|
-
FormFieldControlExtrasComponent,
|
|
5733
|
-
FormGroupHeaderComponent,
|
|
5734
|
-
FieldGroupRowValuePipe,
|
|
5735
|
-
FormFieldErrorDirective,
|
|
5736
|
-
FormFieldErrorHeadingDirective,
|
|
5737
|
-
FormFieldErrorDescriptionDirective
|
|
5738
|
-
];
|
|
5739
5415
|
/**
|
|
5740
5416
|
* @deprecated
|
|
5741
5417
|
* Use direct imports of components and directives.
|
|
5742
5418
|
*/
|
|
5743
|
-
class
|
|
5744
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
5745
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type:
|
|
5746
|
-
|
|
5747
|
-
InputMessageGroupWithTemplate,
|
|
5748
|
-
FormFieldGroupComponent,
|
|
5749
|
-
FormFieldControlExtrasComponent,
|
|
5750
|
-
FormGroupHeaderComponent,
|
|
5751
|
-
FieldGroupRowValuePipe,
|
|
5752
|
-
FormFieldErrorDirective,
|
|
5753
|
-
FormFieldErrorHeadingDirective,
|
|
5754
|
-
FormFieldErrorDescriptionDirective], exports: [FormGroupComponent,
|
|
5755
|
-
FormFieldComponent,
|
|
5756
|
-
InputMessageGroupWithTemplate,
|
|
5757
|
-
FormFieldGroupComponent,
|
|
5758
|
-
FormFieldControlExtrasComponent,
|
|
5759
|
-
FormGroupHeaderComponent,
|
|
5760
|
-
FieldGroupRowValuePipe,
|
|
5761
|
-
FormFieldErrorDirective,
|
|
5762
|
-
FormFieldErrorHeadingDirective,
|
|
5763
|
-
FormFieldErrorDescriptionDirective] }); }
|
|
5764
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FdpFormGroupModule, imports: [FormGroupComponent,
|
|
5765
|
-
FormFieldComponent,
|
|
5766
|
-
InputMessageGroupWithTemplate,
|
|
5767
|
-
FormGroupHeaderComponent] }); }
|
|
5419
|
+
class PlatformComboboxMobileModule {
|
|
5420
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxMobileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5421
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxMobileModule, imports: [ComboboxMobileComponent], exports: [ComboboxMobileComponent] }); }
|
|
5422
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxMobileModule, imports: [ComboboxMobileComponent] }); }
|
|
5768
5423
|
}
|
|
5769
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
5424
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxMobileModule, decorators: [{
|
|
5770
5425
|
type: NgModule,
|
|
5771
5426
|
args: [{
|
|
5772
|
-
imports: [
|
|
5773
|
-
exports: [
|
|
5427
|
+
imports: [ComboboxMobileComponent],
|
|
5428
|
+
exports: [ComboboxMobileComponent]
|
|
5774
5429
|
}]
|
|
5775
5430
|
}] });
|
|
5776
5431
|
|
|
5777
|
-
|
|
5778
|
-
|
|
5779
|
-
|
|
5780
|
-
|
|
5781
|
-
const formGroupChildProvider = {
|
|
5782
|
-
provide: FORM_GROUP_CHILD_FIELD_TOKEN,
|
|
5783
|
-
useExisting: forwardRef(() => FormGeneratorFieldComponent)
|
|
5784
|
-
};
|
|
5785
|
-
class FormGeneratorFieldComponent {
|
|
5786
|
-
/** @hidden */
|
|
5787
|
-
get _placeholder() {
|
|
5788
|
-
if (!this.field) {
|
|
5789
|
-
return '';
|
|
5790
|
-
}
|
|
5791
|
-
if (this.field.formItem?.placeholder) {
|
|
5792
|
-
return this.field.formItem?.placeholder;
|
|
5793
|
-
}
|
|
5794
|
-
if (this.field.formItem?.useMessageAsPlaceholder) {
|
|
5795
|
-
return this.field.formItem?.message;
|
|
5796
|
-
}
|
|
5797
|
-
return '';
|
|
5798
|
-
}
|
|
5799
|
-
/** @hidden */
|
|
5800
|
-
constructor(_fgService) {
|
|
5801
|
-
this._fgService = _fgService;
|
|
5802
|
-
/** @hidden */
|
|
5803
|
-
this._errorModels = [];
|
|
5804
|
-
}
|
|
5805
|
-
/** @hidden */
|
|
5806
|
-
ngOnInit() {
|
|
5807
|
-
this._errorModels = this._getErrors();
|
|
5808
|
-
}
|
|
5809
|
-
/** @hidden */
|
|
5810
|
-
_errorsTrackBy(_, error) {
|
|
5811
|
-
return error.type;
|
|
5812
|
-
}
|
|
5813
|
-
/** @hidden */
|
|
5814
|
-
_isAdvancedError(error) {
|
|
5815
|
-
return error.heading && error.description && error.type;
|
|
5816
|
-
}
|
|
5817
|
-
/** @hidden */
|
|
5818
|
-
_getErrors() {
|
|
5819
|
-
const registeredErrors = this._fgService.validationErrorHints;
|
|
5820
|
-
const returnErrors = [
|
|
5821
|
-
{
|
|
5822
|
-
type: `${this.field.formItem.name}Validator`,
|
|
5823
|
-
value: null
|
|
5824
|
-
}
|
|
5825
|
-
];
|
|
5826
|
-
Object.entries(registeredErrors).forEach((type) => {
|
|
5827
|
-
const [errorType, errorValue] = type;
|
|
5828
|
-
returnErrors.push({
|
|
5829
|
-
type: errorType,
|
|
5830
|
-
value: errorValue
|
|
5831
|
-
});
|
|
5832
|
-
});
|
|
5833
|
-
return returnErrors;
|
|
5834
|
-
}
|
|
5835
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGeneratorFieldComponent, deps: [{ token: FormGeneratorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5836
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: FormGeneratorFieldComponent, isStandalone: true, selector: "fdp-form-generator-field", inputs: { field: "field", form: "form", i18n: "i18n", formFieldName: "formFieldName", formGroupNamePath: "formGroupNamePath", rank: "rank", shouldShow: "shouldShow", hintOptions: "hintOptions" }, providers: [formFieldProvider, formGroupChildProvider], viewQueries: [{ propertyName: "fieldRenderer", first: true, predicate: i0.forwardRef(() => FormFieldComponent), descendants: true }], ngImport: i0, template: "<fdp-form-field\n [hint]=\"hintOptions\"\n [placeholder]=\"_placeholder\"\n [id]=\"field.formItem.id || formFieldName\"\n [column]=\"field.formItem.guiOptions?.column || 1\"\n [columnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.columnLayout)\"\n [colon]=\"field.formItem.guiOptions?.appendColon === true\"\n [label]=\"field.formItem.message\"\n [validators]=\"field.formItem.validators || []\"\n [required]=\"field.formItem.required\"\n [rank]=\"rank\"\n [labelColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.labelColumnLayout)\"\n [fieldColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.fieldColumnLayout)\"\n [gapColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.gapColumnLayout)\"\n [noLabelLayout]=\"field.formItem.guiOptions?.noLabelLayout || false\"\n [formGroup]=\"form\"\n #formField\n>\n @for (error of _errorModels; track _errorsTrackBy($index, error)) {\n <span *fdpFormFieldError=\"error.type; let directiveError\">\n @if (_isAdvancedError(directiveError)) {\n @if (directiveError.heading) {\n <span *fdpFormFieldErrorHeading=\"let validationError; type: directiveError.type\">\n {{ validationError.heading }}\n </span>\n }\n @if (directiveError.description) {\n <span *fdpFormFieldErrorDescription=\"let validationError\">\n {{ validationError.description }}\n </span>\n }\n } @else {\n <span *fdpFormFieldErrorHeading=\"let validationError\">\n {{ error.value ? error.value : validationError }}\n </span>\n }\n </span>\n }\n <ng-container\n [formField]=\"formField\"\n [form]=\"form\"\n [formGroupNamePath]=\"formGroupNamePath\"\n fdpDynamicFormControl\n [id]=\"field.formItem.id || formFieldName\"\n [name]=\"formFieldName\"\n [formItem]=\"field.formItem\"\n >\n </ng-container>\n</fdp-form-field>\n", dependencies: [{ kind: "ngmodule", type: FdpFormGroupModule }, { kind: "component", type: FormFieldComponent, selector: "fdp-form-field", inputs: ["label", "id", "hint", "noLabelLayout", "validators", "rank", "placeholder", "column", "columnLayout", "labelColumnLayout", "fieldColumnLayout", "gapColumnLayout", "i18Strings", "required", "editable", "columns", "disabled", "colon", "formGroupContainer"], outputs: ["onChange", "onColumnChange"] }, { kind: "directive", type: FormFieldErrorDirective, selector: "[fdpFormFieldError]", inputs: ["fdpFormFieldErrorAs", "fdpFormFieldError", "fdpFormFieldErrorType"] }, { kind: "directive", type: FormFieldErrorHeadingDirective, selector: "[fdpFormFieldErrorHeading]", inputs: ["fdpFormFieldErrorHeadingAs", "fdpFormFieldErrorHeadingType"] }, { kind: "directive", type: FormFieldErrorDescriptionDirective, selector: "[fdpFormFieldErrorDescription]", inputs: ["fdpFormFieldErrorDescriptionAs"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: DynamicFormControlDirective, selector: "[fdpDynamicFormControl]", inputs: ["formItem", "id", "name", "form", "formGroupNamePath", "formField"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5837
|
-
}
|
|
5838
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGeneratorFieldComponent, decorators: [{
|
|
5839
|
-
type: Component,
|
|
5840
|
-
args: [{ selector: 'fdp-form-generator-field', providers: [formFieldProvider, formGroupChildProvider], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FdpFormGroupModule, FormsModule, ReactiveFormsModule, DynamicFormControlDirective], template: "<fdp-form-field\n [hint]=\"hintOptions\"\n [placeholder]=\"_placeholder\"\n [id]=\"field.formItem.id || formFieldName\"\n [column]=\"field.formItem.guiOptions?.column || 1\"\n [columnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.columnLayout)\"\n [colon]=\"field.formItem.guiOptions?.appendColon === true\"\n [label]=\"field.formItem.message\"\n [validators]=\"field.formItem.validators || []\"\n [required]=\"field.formItem.required\"\n [rank]=\"rank\"\n [labelColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.labelColumnLayout)\"\n [fieldColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.fieldColumnLayout)\"\n [gapColumnLayout]=\"$safeNavigationMigration(field.formItem.guiOptions?.gapColumnLayout)\"\n [noLabelLayout]=\"field.formItem.guiOptions?.noLabelLayout || false\"\n [formGroup]=\"form\"\n #formField\n>\n @for (error of _errorModels; track _errorsTrackBy($index, error)) {\n <span *fdpFormFieldError=\"error.type; let directiveError\">\n @if (_isAdvancedError(directiveError)) {\n @if (directiveError.heading) {\n <span *fdpFormFieldErrorHeading=\"let validationError; type: directiveError.type\">\n {{ validationError.heading }}\n </span>\n }\n @if (directiveError.description) {\n <span *fdpFormFieldErrorDescription=\"let validationError\">\n {{ validationError.description }}\n </span>\n }\n } @else {\n <span *fdpFormFieldErrorHeading=\"let validationError\">\n {{ error.value ? error.value : validationError }}\n </span>\n }\n </span>\n }\n <ng-container\n [formField]=\"formField\"\n [form]=\"form\"\n [formGroupNamePath]=\"formGroupNamePath\"\n fdpDynamicFormControl\n [id]=\"field.formItem.id || formFieldName\"\n [name]=\"formFieldName\"\n [formItem]=\"field.formItem\"\n >\n </ng-container>\n</fdp-form-field>\n" }]
|
|
5841
|
-
}], ctorParameters: () => [{ type: FormGeneratorService }], propDecorators: { field: [{
|
|
5842
|
-
type: Input
|
|
5843
|
-
}], form: [{
|
|
5844
|
-
type: Input
|
|
5845
|
-
}], i18n: [{
|
|
5846
|
-
type: Input
|
|
5847
|
-
}], formFieldName: [{
|
|
5848
|
-
type: Input
|
|
5849
|
-
}], formGroupNamePath: [{
|
|
5850
|
-
type: Input
|
|
5851
|
-
}], rank: [{
|
|
5852
|
-
type: Input
|
|
5853
|
-
}], shouldShow: [{
|
|
5854
|
-
type: Input
|
|
5855
|
-
}], hintOptions: [{
|
|
5856
|
-
type: Input
|
|
5857
|
-
}], fieldRenderer: [{
|
|
5858
|
-
type: ViewChild,
|
|
5859
|
-
args: [forwardRef(() => FormFieldComponent)]
|
|
5860
|
-
}] } });
|
|
5861
|
-
|
|
5862
|
-
/** @hidden */
|
|
5863
|
-
function isFieldChild(child) {
|
|
5864
|
-
return child instanceof FormFieldComponent;
|
|
5865
|
-
}
|
|
5866
|
-
/** @hidden */
|
|
5867
|
-
function isFieldGroupWrapperChild(child) {
|
|
5868
|
-
return child instanceof FormGeneratorFieldComponent;
|
|
5869
|
-
}
|
|
5870
|
-
/** @hidden */
|
|
5871
|
-
function isFieldGroupChild(child) {
|
|
5872
|
-
return child instanceof FormFieldGroupComponent;
|
|
5873
|
-
}
|
|
5874
|
-
/** @hidden */
|
|
5875
|
-
function getFormField(field) {
|
|
5876
|
-
return isFieldGroupWrapperChild(field) ? field.fieldRenderer : field;
|
|
5877
|
-
}
|
|
5878
|
-
/** @hidden */
|
|
5879
|
-
function getField(field) {
|
|
5880
|
-
field = isFieldGroupWrapperChild(field) ? field.fieldRenderer : field;
|
|
5881
|
-
return new Field(field.id, field.rank, field.renderer, field.column);
|
|
5882
|
-
}
|
|
5883
|
-
|
|
5884
|
-
/**
|
|
5885
|
-
* @deprecated
|
|
5886
|
-
* Use direct imports of components and directives.
|
|
5887
|
-
*/
|
|
5888
|
-
class PlatformAutoCompleteModule {
|
|
5889
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformAutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5890
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: PlatformAutoCompleteModule, imports: [AutoCompleteDirective], exports: [AutoCompleteDirective] }); }
|
|
5891
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformAutoCompleteModule }); }
|
|
5892
|
-
}
|
|
5893
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformAutoCompleteModule, decorators: [{
|
|
5894
|
-
type: NgModule,
|
|
5895
|
-
args: [{
|
|
5896
|
-
imports: [AutoCompleteDirective],
|
|
5897
|
-
exports: [AutoCompleteDirective]
|
|
5898
|
-
}]
|
|
5899
|
-
}] });
|
|
5900
|
-
|
|
5901
|
-
/**
|
|
5902
|
-
* @deprecated
|
|
5903
|
-
* Use direct imports of components and directives.
|
|
5904
|
-
*/
|
|
5905
|
-
class PlatformCheckboxModule {
|
|
5906
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
5907
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: PlatformCheckboxModule, imports: [CheckboxComponent], exports: [CheckboxComponent] }); }
|
|
5908
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformCheckboxModule, imports: [CheckboxComponent] }); }
|
|
5909
|
-
}
|
|
5910
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformCheckboxModule, decorators: [{
|
|
5911
|
-
type: NgModule,
|
|
5912
|
-
args: [{
|
|
5913
|
-
imports: [CheckboxComponent],
|
|
5914
|
-
exports: [CheckboxComponent]
|
|
5915
|
-
}]
|
|
5916
|
-
}] });
|
|
5917
|
-
|
|
5918
|
-
const COMBOBOX_COMPONENT = new InjectionToken('ComboboxInterface');
|
|
5919
|
-
|
|
5920
|
-
class ComboboxMobileComponent extends MobileModeBase {
|
|
5921
|
-
/** @hidden */
|
|
5922
|
-
constructor(comboboxComponent) {
|
|
5923
|
-
super(comboboxComponent, MobileModeControl.COMBOBOX);
|
|
5924
|
-
/** @hidden
|
|
5925
|
-
* For internal usage
|
|
5926
|
-
* Control element, which will be rendered inside dialog.
|
|
5927
|
-
* List element, which will be rendered inside dialog.
|
|
5928
|
-
*/
|
|
5929
|
-
this.childContent = null;
|
|
5930
|
-
}
|
|
5931
|
-
/** @hidden */
|
|
5932
|
-
ngOnInit() {
|
|
5933
|
-
this._listenOnMultiInputOpenChange();
|
|
5934
|
-
}
|
|
5935
|
-
/** @hidden */
|
|
5936
|
-
handleDismiss() {
|
|
5937
|
-
this.dialogRef.dismiss();
|
|
5938
|
-
this._component.dialogDismiss(this._selectedBackup);
|
|
5939
|
-
}
|
|
5940
|
-
/** @hidden */
|
|
5941
|
-
handleApprove() {
|
|
5942
|
-
this.dialogRef.close();
|
|
5943
|
-
this._component.dialogApprove();
|
|
5944
|
-
}
|
|
5945
|
-
/** @hidden */
|
|
5946
|
-
_toggleDialog(open) {
|
|
5947
|
-
if (!open) {
|
|
5948
|
-
return;
|
|
5949
|
-
}
|
|
5950
|
-
this._selectedBackup = this._component.inputText;
|
|
5951
|
-
if (!this._dialogService.hasOpenDialogs()) {
|
|
5952
|
-
this._open();
|
|
5953
|
-
}
|
|
5954
|
-
}
|
|
5955
|
-
/** @hidden */
|
|
5956
|
-
_listenOnMultiInputOpenChange() {
|
|
5957
|
-
this._component.openChange
|
|
5958
|
-
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
5959
|
-
.subscribe((isOpen) => this._toggleDialog(isOpen));
|
|
5960
|
-
}
|
|
5961
|
-
/** @hidden */
|
|
5962
|
-
_open() {
|
|
5963
|
-
this.dialogRef = this._dialogService.open(this.dialogTemplate, {
|
|
5964
|
-
mobile: true,
|
|
5965
|
-
disablePaddings: true,
|
|
5966
|
-
...this.dialogConfig,
|
|
5967
|
-
backdropClickCloseable: false,
|
|
5968
|
-
container: this._elementRef.nativeElement
|
|
5969
|
-
});
|
|
5970
|
-
// Have to fire "detectChanges" to fix "ExpressionChangedAfterItHasBeenCheckedError"
|
|
5971
|
-
this.dialogRef.afterLoaded.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
5972
|
-
this._component.detectChanges();
|
|
5973
|
-
});
|
|
5974
|
-
const refSub = this.dialogRef.afterClosed.subscribe({
|
|
5975
|
-
error: (type) => {
|
|
5976
|
-
if (type === 'escape') {
|
|
5977
|
-
this._component.dialogDismiss(this._selectedBackup);
|
|
5978
|
-
refSub.unsubscribe();
|
|
5979
|
-
}
|
|
5980
|
-
}
|
|
5981
|
-
});
|
|
5982
|
-
}
|
|
5983
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ComboboxMobileComponent, deps: [{ token: COMBOBOX_COMPONENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5984
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: ComboboxMobileComponent, isStandalone: true, selector: "fdp-combobox-mobile", viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-template [ngTemplateOutlet]=\"childContent?.controlTemplate || null\"></ng-template>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"childContent?.listTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\"> </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1$2.DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: i1$2.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1$2.DialogHeaderComponent, selector: "fd-dialog-header", inputs: ["inShellbar"] }, { kind: "component", type: i1$2.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "directive", type: i1$2.DialogTemplateDirective, selector: "[fdDialogTemplate]", inputs: ["fdDialogTemplateConfig"] }, { kind: "directive", type: i2.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i3$1.BarMiddleDirective, selector: "[fd-bar-middle]", inputs: ["stackContentsVertically"] }, { kind: "directive", type: i3$1.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3$1.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["twoLineClamp", "headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "ngmodule", type: BarModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5985
|
-
}
|
|
5986
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ComboboxMobileComponent, decorators: [{
|
|
5987
|
-
type: Component,
|
|
5988
|
-
args: [{ selector: 'fdp-combobox-mobile', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
5989
|
-
DialogModule,
|
|
5990
|
-
TitleComponent,
|
|
5991
|
-
TemplateDirective,
|
|
5992
|
-
BarModule,
|
|
5993
|
-
NgTemplateOutlet,
|
|
5994
|
-
CdkScrollable,
|
|
5995
|
-
ScrollbarDirective
|
|
5996
|
-
], template: "<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n @if (mobileConfig.title) {\n <h1 fd-title>{{ mobileConfig.title }}</h1>\n }\n @if (mobileConfig.hasCloseButton) {\n <button fd-dialog-close-button [mobile]=\"true\" (click)=\"handleDismiss()\"></button>\n }\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-template [ngTemplateOutlet]=\"childContent?.controlTemplate || null\"></ng-template>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ng-template [ngTemplateOutlet]=\"childContent?.listTemplate || null\"></ng-template>\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (mobileConfig.approveButtonText) {\n <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"handleApprove()\">\n </fd-button-bar>\n }\n @if (mobileConfig.cancelButtonText) {\n <fd-button-bar [label]=\"mobileConfig.cancelButtonText!\" (click)=\"handleDismiss()\"> </fd-button-bar>\n }\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n" }]
|
|
5997
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
5998
|
-
type: Inject,
|
|
5999
|
-
args: [COMBOBOX_COMPONENT]
|
|
6000
|
-
}] }], propDecorators: { dialogTemplate: [{
|
|
6001
|
-
type: ViewChild,
|
|
6002
|
-
args: ['dialogTemplate']
|
|
6003
|
-
}] } });
|
|
6004
|
-
|
|
6005
|
-
/**
|
|
6006
|
-
* @deprecated
|
|
6007
|
-
* Use direct imports of components and directives.
|
|
6008
|
-
*/
|
|
6009
|
-
class PlatformComboboxMobileModule {
|
|
6010
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxMobileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6011
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxMobileModule, imports: [ComboboxMobileComponent], exports: [ComboboxMobileComponent] }); }
|
|
6012
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxMobileModule, imports: [ComboboxMobileComponent] }); }
|
|
6013
|
-
}
|
|
6014
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxMobileModule, decorators: [{
|
|
6015
|
-
type: NgModule,
|
|
6016
|
-
args: [{
|
|
6017
|
-
imports: [ComboboxMobileComponent],
|
|
6018
|
-
exports: [ComboboxMobileComponent]
|
|
6019
|
-
}]
|
|
6020
|
-
}] });
|
|
6021
|
-
|
|
6022
|
-
/**
|
|
6023
|
-
* Default options for Combobox
|
|
6024
|
-
*/
|
|
6025
|
-
class ComboboxConfig {
|
|
5432
|
+
/**
|
|
5433
|
+
* Default options for Combobox
|
|
5434
|
+
*/
|
|
5435
|
+
class ComboboxConfig {
|
|
6026
5436
|
/** @hidden */
|
|
6027
5437
|
constructor(platformConfig) {
|
|
6028
5438
|
/**
|
|
@@ -6862,671 +6272,1269 @@ class ComboboxComponent extends BaseCombobox {
|
|
|
6862
6272
|
this.dataSource = new ComboBoxDataSource(providers.get(this.entityClass));
|
|
6863
6273
|
}
|
|
6864
6274
|
}
|
|
6865
|
-
/** @hidden */
|
|
6275
|
+
/** @hidden */
|
|
6276
|
+
ngAfterViewInit() {
|
|
6277
|
+
super.ngAfterViewInit();
|
|
6278
|
+
if (this.mobile) {
|
|
6279
|
+
this._setUpMobileMode();
|
|
6280
|
+
}
|
|
6281
|
+
}
|
|
6282
|
+
/** @hidden */
|
|
6283
|
+
_onBlur(event) {
|
|
6284
|
+
if (this.mobile) {
|
|
6285
|
+
return;
|
|
6286
|
+
}
|
|
6287
|
+
const target = event.relatedTarget;
|
|
6288
|
+
if (target) {
|
|
6289
|
+
const isList = !!target.closest('.fdp-combobox__list-container');
|
|
6290
|
+
const isListItem = !!target.closest('.fd-list__item');
|
|
6291
|
+
if (isList || isListItem) {
|
|
6292
|
+
return;
|
|
6293
|
+
}
|
|
6294
|
+
}
|
|
6295
|
+
if ((!this._selectedElement && !this.inputText) || this._selectedElement?.label === this.inputText) {
|
|
6296
|
+
return;
|
|
6297
|
+
}
|
|
6298
|
+
const optionItem = this._getSelectedOptionItem(this.inputText);
|
|
6299
|
+
this._updateModel(optionItem ? optionItem.value : this.inputText);
|
|
6300
|
+
}
|
|
6301
|
+
/** @hidden Method to emit change event */
|
|
6302
|
+
emitChangeEvent(modelValue) {
|
|
6303
|
+
const event = new ComboboxSelectionChangeEvent(this, modelValue);
|
|
6304
|
+
this.selectionChange.emit(event);
|
|
6305
|
+
}
|
|
6306
|
+
/** @hidden Method to set selected item */
|
|
6307
|
+
selectOptionItem(item, shouldClosePopover = true) {
|
|
6308
|
+
if (this.mobile) {
|
|
6309
|
+
this._selectedElement = item;
|
|
6310
|
+
this.inputText = item.label;
|
|
6311
|
+
this.detectChanges();
|
|
6312
|
+
return;
|
|
6313
|
+
}
|
|
6314
|
+
this.inputText = item.label;
|
|
6315
|
+
this._checkAndUpdate(item);
|
|
6316
|
+
if (shouldClosePopover) {
|
|
6317
|
+
this.isOpenChangeHandle(false);
|
|
6318
|
+
}
|
|
6319
|
+
}
|
|
6320
|
+
/** @hidden Method to set as selected */
|
|
6321
|
+
setAsSelected(item) {
|
|
6322
|
+
const selectedItem = item[0];
|
|
6323
|
+
if (this.isSelectedOptionItem(selectedItem)) {
|
|
6324
|
+
return;
|
|
6325
|
+
}
|
|
6326
|
+
this._selectedElement = (this.isGroup && selectedItem?.children?.[0]) || selectedItem;
|
|
6327
|
+
this.inputText = this.displayValue(this._selectedElement);
|
|
6328
|
+
}
|
|
6329
|
+
/** @hidden Define is selected item selected */
|
|
6330
|
+
isSelectedOptionItem(selectedItem) {
|
|
6331
|
+
if (!!this._selectedElement && !!selectedItem) {
|
|
6332
|
+
if (this.lookupKey) {
|
|
6333
|
+
return this.lookupValue(this._selectedElement) === this.lookupValue(selectedItem);
|
|
6334
|
+
}
|
|
6335
|
+
else {
|
|
6336
|
+
return selectedItem.value === this._selectedElement.value;
|
|
6337
|
+
}
|
|
6338
|
+
}
|
|
6339
|
+
else {
|
|
6340
|
+
return false;
|
|
6341
|
+
}
|
|
6342
|
+
}
|
|
6343
|
+
/** @hidden Define is selected item selected by display value */
|
|
6344
|
+
isSelectedOptionItemByDisplayValue(selectedItem) {
|
|
6345
|
+
return this._selectedElement?.label === selectedItem;
|
|
6346
|
+
}
|
|
6347
|
+
/** Handle dialog dismissing, closes popover and sets backup data. */
|
|
6348
|
+
dialogDismiss(term) {
|
|
6349
|
+
if (this._selectedElement?.label !== term) {
|
|
6350
|
+
this._selectedElement = this._getSelectedOptionItem(term);
|
|
6351
|
+
}
|
|
6352
|
+
this.inputText = term;
|
|
6353
|
+
this.isOpenChangeHandle(false);
|
|
6354
|
+
}
|
|
6355
|
+
/** Handle dialog approval, closes popover and propagates data changes. */
|
|
6356
|
+
dialogApprove() {
|
|
6357
|
+
if (this._selectedElement?.label === this.inputText) {
|
|
6358
|
+
this._updateModel(this._selectedElement.value);
|
|
6359
|
+
}
|
|
6360
|
+
else {
|
|
6361
|
+
const optionItem = this._getSelectedOptionItem(this.inputText);
|
|
6362
|
+
this._updateModel(optionItem ? optionItem.value : this.inputText);
|
|
6363
|
+
}
|
|
6364
|
+
this.isOpenChangeHandle(false);
|
|
6365
|
+
}
|
|
6366
|
+
/** @hidden */
|
|
6367
|
+
onItemFocused(value) {
|
|
6368
|
+
if (!this._itemMousedown && !this.mobile) {
|
|
6369
|
+
this.selectOptionItem(value, false);
|
|
6370
|
+
}
|
|
6371
|
+
this._itemMousedown = false;
|
|
6372
|
+
}
|
|
6373
|
+
/** @hidden */
|
|
6374
|
+
_getLabelledBy() {
|
|
6375
|
+
let retVal = this.ariaLabelledBy;
|
|
6376
|
+
if (this.stateMessage) {
|
|
6377
|
+
retVal = retVal + ' fdp-list-message-combobox-state-message-' + this.id;
|
|
6378
|
+
}
|
|
6379
|
+
if (this.advancedStateMessage?.hasErrors && this.advancedStateMessage?.template) {
|
|
6380
|
+
retVal = retVal + ' fdp-list-message-combobox-error-message-' + this.id;
|
|
6381
|
+
}
|
|
6382
|
+
return retVal;
|
|
6383
|
+
}
|
|
6384
|
+
/** @hidden if not selected update model */
|
|
6385
|
+
_checkAndUpdate(modelValue) {
|
|
6386
|
+
if (this.isSelectedOptionItem(modelValue)) {
|
|
6387
|
+
return;
|
|
6388
|
+
}
|
|
6389
|
+
this._updateModel(modelValue.value);
|
|
6390
|
+
}
|
|
6391
|
+
/** @hidden Update model */
|
|
6392
|
+
_updateModel(value) {
|
|
6393
|
+
// setting value, it will call setValue()
|
|
6394
|
+
this.value = value;
|
|
6395
|
+
this.emitChangeEvent(value ? value : null);
|
|
6396
|
+
}
|
|
6397
|
+
/** @hidden */
|
|
6398
|
+
async _setUpMobileMode() {
|
|
6399
|
+
const injector = Injector.create({
|
|
6400
|
+
providers: [{ provide: COMBOBOX_COMPONENT, useValue: this }],
|
|
6401
|
+
parent: this._injector
|
|
6402
|
+
});
|
|
6403
|
+
this._dynamicComponentService.createDynamicComponent({ listTemplate: this.listTemplate, controlTemplate: this.controlTemplate }, ComboboxMobileComponent, {
|
|
6404
|
+
containerRef: this._viewContainerRef
|
|
6405
|
+
}, { injector });
|
|
6406
|
+
}
|
|
6407
|
+
/** @hidden */
|
|
6408
|
+
_getSelectedOptionItem(text) {
|
|
6409
|
+
if (!this.isGroup) {
|
|
6410
|
+
return this._suggestions.find((item) => item.label === text);
|
|
6411
|
+
}
|
|
6412
|
+
return this._suggestions
|
|
6413
|
+
.reduce((result, item) => {
|
|
6414
|
+
result.push(...(item.children ?? []));
|
|
6415
|
+
return result;
|
|
6416
|
+
}, [])
|
|
6417
|
+
.find((item) => item.label === text);
|
|
6418
|
+
}
|
|
6419
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ComboboxComponent, deps: [{ token: i1$2.DialogConfig, optional: true }, { token: i2.DynamicComponentService }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: DATA_PROVIDERS, optional: true }, { token: ComboboxConfig }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6420
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: ComboboxComponent, isStandalone: true, selector: "fdp-combobox", outputs: { selectionChange: "selectionChange" }, providers: [
|
|
6421
|
+
{ provide: FD_FORM_FIELD_CONTROL, useExisting: ComboboxComponent, multi: true },
|
|
6422
|
+
contentDensityObserverProviders()
|
|
6423
|
+
], viewQueries: [{ propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"mobile ? controlTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-template [ngTemplateOutlet]=\"listTemplate\"></ng-template>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"_getLabelledBy()\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n @if (isOpen) {\n <div class=\"fdp-combobox__count-list-results\" role=\"status\">\n @if (_flatSuggestions.length || '0'; as count) {\n {{\n (\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate: { count: count }\n )()\n }}\n }\n </div>\n }\n @if (mobile || isOpen ? null : !!stateMessage) {\n <fd-form-message [type]=\"state\" [innerHtml]=\"stateMessage\"></fd-form-message>\n }\n </fd-form-input-message-group>\n</ng-template>\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n (keydown.tab)=\"_close()\"\n (keydown.shift.tab)=\"_close()\"\n >\n @if (stateMessage) {\n <li\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n [attr.id]=\"'fdp-list-message-combobox-state-message-' + id\"\n ></li>\n }\n @if (advancedStateMessage?.hasErrors && advancedStateMessage?.template) {\n <li\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [attr.id]=\"'fdp-list-message-combobox-error-message-' + id\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n }\n <ng-content></ng-content>\n @if (isGroup) {\n @for (group of _suggestions; track group) {\n @if (!groupItemTemplate) {\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n }\n @for (optionItem of group.children; track optionItem; let i = $index) {\n <li\n (click)=\"handleOptionItem(optionItem)\"\n (mousedown)=\"_itemMousedown = true\"\n (focus)=\"onItemFocused(optionItem)\"\n fd-list-item\n ariaRole=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n } @else {\n @for (optionItem of _suggestions; track optionItem; let i = $index) {\n <li\n (click)=\"handleOptionItem(optionItem)\"\n (mousedown)=\"_itemMousedown = true\"\n (focus)=\"onItemFocused(optionItem)\"\n fd-list-item\n ariaRole=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n </ul>\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n @if (isSelectedOptionItem(optionItem) && !!selectedItemTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n @if (!(isSelectedOptionItem(optionItem) && selectedItemTemplate)) {\n <ng-template\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-template>\n <ng-template\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n @if (!optionItemTemplate) {\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight: inputText\"></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n @if (showSecondaryText) {\n @if (!secondaryItemTemplate) {\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight: inputText\"\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n }\n }\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "bodyAriaLabel", "bodyRole", "bodyAriaLabelledBy", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"], outputs: ["onClose"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i3$2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i3$2.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter", "searchResultsList"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "counterRole", "counterAriaLabel", "active", "unread", "byline", "ariaRole", "id", "preventClick", "settingsListTpl", "suggestion"], outputs: ["keyDown"], exportAs: ["fdListItem"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate", "scope"] }, { kind: "directive", type: i6.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListMessageDirective, selector: "[fd-list-message], [fdListMessage]", inputs: ["type", "class"] }, { kind: "ngmodule", type: ContentDensityModule }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6424
|
+
}
|
|
6425
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ComboboxComponent, decorators: [{
|
|
6426
|
+
type: Component,
|
|
6427
|
+
args: [{ selector: 'fdp-combobox', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
6428
|
+
{ provide: FD_FORM_FIELD_CONTROL, useExisting: ComboboxComponent, multi: true },
|
|
6429
|
+
contentDensityObserverProviders()
|
|
6430
|
+
], imports: [
|
|
6431
|
+
NgTemplateOutlet,
|
|
6432
|
+
PopoverComponent,
|
|
6433
|
+
PopoverControlComponent,
|
|
6434
|
+
PopoverBodyComponent,
|
|
6435
|
+
FormInputMessageGroupComponent,
|
|
6436
|
+
InputGroupModule,
|
|
6437
|
+
FormsModule,
|
|
6438
|
+
AutoCompleteDirective,
|
|
6439
|
+
FormMessageComponent,
|
|
6440
|
+
ListModule,
|
|
6441
|
+
NgClass,
|
|
6442
|
+
ListSecondaryDirective,
|
|
6443
|
+
SearchHighlightPipe,
|
|
6444
|
+
FdTranslatePipe,
|
|
6445
|
+
ContentDensityModule
|
|
6446
|
+
], template: "<ng-template [ngTemplateOutlet]=\"mobile ? controlTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-template [ngTemplateOutlet]=\"listTemplate\"></ng-template>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"_getLabelledBy()\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n @if (isOpen) {\n <div class=\"fdp-combobox__count-list-results\" role=\"status\">\n @if (_flatSuggestions.length || '0'; as count) {\n {{\n (\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate: { count: count }\n )()\n }}\n }\n </div>\n }\n @if (mobile || isOpen ? null : !!stateMessage) {\n <fd-form-message [type]=\"state\" [innerHtml]=\"stateMessage\"></fd-form-message>\n }\n </fd-form-input-message-group>\n</ng-template>\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n (keydown.tab)=\"_close()\"\n (keydown.shift.tab)=\"_close()\"\n >\n @if (stateMessage) {\n <li\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n [attr.id]=\"'fdp-list-message-combobox-state-message-' + id\"\n ></li>\n }\n @if (advancedStateMessage?.hasErrors && advancedStateMessage?.template) {\n <li\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [attr.id]=\"'fdp-list-message-combobox-error-message-' + id\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n }\n <ng-content></ng-content>\n @if (isGroup) {\n @for (group of _suggestions; track group) {\n @if (!groupItemTemplate) {\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n }\n @for (optionItem of group.children; track optionItem; let i = $index) {\n <li\n (click)=\"handleOptionItem(optionItem)\"\n (mousedown)=\"_itemMousedown = true\"\n (focus)=\"onItemFocused(optionItem)\"\n fd-list-item\n ariaRole=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n } @else {\n @for (optionItem of _suggestions; track optionItem; let i = $index) {\n <li\n (click)=\"handleOptionItem(optionItem)\"\n (mousedown)=\"_itemMousedown = true\"\n (focus)=\"onItemFocused(optionItem)\"\n fd-list-item\n ariaRole=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n </ul>\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n @if (isSelectedOptionItem(optionItem) && !!selectedItemTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n @if (!(isSelectedOptionItem(optionItem) && selectedItemTemplate)) {\n <ng-template\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-template>\n <ng-template\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n @if (!optionItemTemplate) {\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight: inputText\"></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n @if (showSecondaryText) {\n @if (!secondaryItemTemplate) {\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight: inputText\"\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n }\n }\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"] }]
|
|
6447
|
+
}], ctorParameters: () => [{ type: i1$2.DialogConfig, decorators: [{
|
|
6448
|
+
type: Optional
|
|
6449
|
+
}] }, { type: i2.DynamicComponentService }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: Map, decorators: [{
|
|
6450
|
+
type: Optional
|
|
6451
|
+
}, {
|
|
6452
|
+
type: Inject,
|
|
6453
|
+
args: [DATA_PROVIDERS]
|
|
6454
|
+
}] }, { type: ComboboxConfig }], propDecorators: { selectionChange: [{
|
|
6455
|
+
type: Output
|
|
6456
|
+
}], searchInputElement: [{
|
|
6457
|
+
type: ViewChild,
|
|
6458
|
+
args: ['searchInputElement']
|
|
6459
|
+
}], controlTemplate: [{
|
|
6460
|
+
type: ViewChild,
|
|
6461
|
+
args: ['controlTemplate']
|
|
6462
|
+
}], listTemplate: [{
|
|
6463
|
+
type: ViewChild,
|
|
6464
|
+
args: ['listTemplate']
|
|
6465
|
+
}] } });
|
|
6466
|
+
|
|
6467
|
+
const EXPORTABLE_COMPONENTS = [
|
|
6468
|
+
ComboboxComponent,
|
|
6469
|
+
ComboboxItemDirective,
|
|
6470
|
+
ComboboxSelectedItemDirective,
|
|
6471
|
+
ComboboxItemGroupDirective,
|
|
6472
|
+
ComboboxSecondaryItemDirective
|
|
6473
|
+
];
|
|
6474
|
+
/**
|
|
6475
|
+
* @deprecated
|
|
6476
|
+
* Use direct imports of components and directives.
|
|
6477
|
+
*/
|
|
6478
|
+
class PlatformComboboxModule {
|
|
6479
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6480
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxModule, imports: [ComboboxComponent,
|
|
6481
|
+
ComboboxItemDirective,
|
|
6482
|
+
ComboboxSelectedItemDirective,
|
|
6483
|
+
ComboboxItemGroupDirective,
|
|
6484
|
+
ComboboxSecondaryItemDirective], exports: [ComboboxComponent,
|
|
6485
|
+
ComboboxItemDirective,
|
|
6486
|
+
ComboboxSelectedItemDirective,
|
|
6487
|
+
ComboboxItemGroupDirective,
|
|
6488
|
+
ComboboxSecondaryItemDirective] }); }
|
|
6489
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxModule, imports: [ComboboxComponent] }); }
|
|
6490
|
+
}
|
|
6491
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxModule, decorators: [{
|
|
6492
|
+
type: NgModule,
|
|
6493
|
+
args: [{
|
|
6494
|
+
imports: [...EXPORTABLE_COMPONENTS],
|
|
6495
|
+
exports: [...EXPORTABLE_COMPONENTS]
|
|
6496
|
+
}]
|
|
6497
|
+
}] });
|
|
6498
|
+
|
|
6499
|
+
/**
|
|
6500
|
+
* @deprecated
|
|
6501
|
+
* Use direct imports of components and directives.
|
|
6502
|
+
*/
|
|
6503
|
+
class PlatformDatePickerModule {
|
|
6504
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6505
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatePickerModule, imports: [PlatformDatePickerComponent], exports: [PlatformDatePickerComponent] }); }
|
|
6506
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatePickerModule, imports: [PlatformDatePickerComponent] }); }
|
|
6507
|
+
}
|
|
6508
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatePickerModule, decorators: [{
|
|
6509
|
+
type: NgModule,
|
|
6510
|
+
args: [{
|
|
6511
|
+
imports: [PlatformDatePickerComponent],
|
|
6512
|
+
exports: [PlatformDatePickerComponent]
|
|
6513
|
+
}]
|
|
6514
|
+
}] });
|
|
6515
|
+
|
|
6516
|
+
/** @hidden */
|
|
6517
|
+
function createMissingDateImplementationError(provider) {
|
|
6518
|
+
return Error(`FdpDatetimePicker: No provider found for ${provider}. You must import one of the following ` +
|
|
6519
|
+
`modules at your application root: FdDatetimeModule, or provide a ` +
|
|
6520
|
+
`custom implementation.`);
|
|
6521
|
+
}
|
|
6522
|
+
|
|
6523
|
+
class PlatformDatetimePickerComponent extends BaseInput {
|
|
6524
|
+
/**
|
|
6525
|
+
* value for datetime
|
|
6526
|
+
*/
|
|
6527
|
+
set value(value) {
|
|
6528
|
+
super.setValue(value);
|
|
6529
|
+
}
|
|
6530
|
+
get value() {
|
|
6531
|
+
return super.getValue();
|
|
6532
|
+
}
|
|
6533
|
+
/**
|
|
6534
|
+
* The state of the form control - applies css classes.
|
|
6535
|
+
* Can be `success`, `error`, `warning`, `information` or blank for default.
|
|
6536
|
+
*/
|
|
6537
|
+
set state(state) {
|
|
6538
|
+
super.state = state;
|
|
6539
|
+
}
|
|
6540
|
+
get state() {
|
|
6541
|
+
if (this.dateTimePickerComponent?.isInvalidDateInput) {
|
|
6542
|
+
// if any other error from core dtp
|
|
6543
|
+
return 'error';
|
|
6544
|
+
}
|
|
6545
|
+
return super.state;
|
|
6546
|
+
}
|
|
6547
|
+
/** @hidden */
|
|
6548
|
+
get _isRequired() {
|
|
6549
|
+
return !!this.formField?.required;
|
|
6550
|
+
}
|
|
6551
|
+
/** @hidden */
|
|
6552
|
+
constructor() {
|
|
6553
|
+
super();
|
|
6554
|
+
/**
|
|
6555
|
+
* The placement of the popover. It can be one of: top, top-start, top-end, bottom,
|
|
6556
|
+
* bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.
|
|
6557
|
+
*/
|
|
6558
|
+
this.placement = 'bottom-start';
|
|
6559
|
+
/** Whether to perform visual validation on the picker input. */
|
|
6560
|
+
this.useValidation = true;
|
|
6561
|
+
/** Whether the popover is open. Two-way binding is supported. */
|
|
6562
|
+
this.isOpen = false;
|
|
6563
|
+
/** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/
|
|
6564
|
+
this.activeView = FdCalendarViewEnum.Day;
|
|
6565
|
+
/** Whether a null input is considered valid. */
|
|
6566
|
+
this.allowNull = true;
|
|
6567
|
+
/**
|
|
6568
|
+
* @Input when set to true time component will use 2 digits for each number.
|
|
6569
|
+
* For example 9 will become 09
|
|
6570
|
+
* but 12 will be kept as 12.
|
|
6571
|
+
* Only uses by time component and does not change input format
|
|
6572
|
+
*/
|
|
6573
|
+
this.keepTwoDigitsTime = false;
|
|
6574
|
+
/**
|
|
6575
|
+
* Whether AddOn Button should be focusable
|
|
6576
|
+
* @default true
|
|
6577
|
+
*/
|
|
6578
|
+
this.buttonFocusable = true;
|
|
6579
|
+
/**
|
|
6580
|
+
* Special days mark, it can be used by passing array of object with
|
|
6581
|
+
* Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:
|
|
6582
|
+
* https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section
|
|
6583
|
+
* Rule accepts method with FdDate object as a parameter. ex:
|
|
6584
|
+
* `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.
|
|
6585
|
+
*/
|
|
6586
|
+
this.specialDaysRules = [];
|
|
6587
|
+
/**
|
|
6588
|
+
* Object to customize year grid,
|
|
6589
|
+
* Row, Columns and method to display year can be modified
|
|
6590
|
+
*/
|
|
6591
|
+
this.yearGrid = {
|
|
6592
|
+
rows: 4,
|
|
6593
|
+
cols: 5
|
|
6594
|
+
};
|
|
6595
|
+
/**
|
|
6596
|
+
* Object to customize aggregated year grid,
|
|
6597
|
+
* Row, Columns and method to display year can be modified
|
|
6598
|
+
*/
|
|
6599
|
+
this.aggregatedYearGrid = {
|
|
6600
|
+
rows: 4,
|
|
6601
|
+
cols: 3
|
|
6602
|
+
};
|
|
6603
|
+
/**
|
|
6604
|
+
* Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class
|
|
6605
|
+
*/
|
|
6606
|
+
this.markWeekends = true;
|
|
6607
|
+
/** @Input Whether to show spinner buttons */
|
|
6608
|
+
this.spinnerButtons = true;
|
|
6609
|
+
/**
|
|
6610
|
+
* Whether user wants to show week numbers next to days
|
|
6611
|
+
*/
|
|
6612
|
+
this.showWeekNumbers = true;
|
|
6613
|
+
/** Whether or not to show the datetime picker footer with submit/cancel buttons. */
|
|
6614
|
+
this.showFooter = true;
|
|
6615
|
+
/**
|
|
6616
|
+
* Whether to recalculate value from the input as user types or on blur.
|
|
6617
|
+
* By default, updates the value as user types.
|
|
6618
|
+
* @default false
|
|
6619
|
+
*/
|
|
6620
|
+
this.processInputOnBlur = false;
|
|
6621
|
+
/**
|
|
6622
|
+
* Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.
|
|
6623
|
+
*/
|
|
6624
|
+
this.preventScrollOnFocus = false;
|
|
6625
|
+
/** Whether date picker should rendered in mobile mode. */
|
|
6626
|
+
this.mobile = false;
|
|
6627
|
+
/** Whether calendar is used inside mobile in landscape mode, it also adds close button on right side */
|
|
6628
|
+
this.mobileLandscape = false;
|
|
6629
|
+
/** Whether calendar is used inside mobile in portrait mode */
|
|
6630
|
+
this.mobilePortrait = false;
|
|
6631
|
+
/** Event emitted when the state of the isOpen property changes. */
|
|
6632
|
+
this.isOpenChange = new EventEmitter();
|
|
6633
|
+
/** Event thrown every time calendar active view is changed */
|
|
6634
|
+
this.activeViewChange = new EventEmitter();
|
|
6635
|
+
/** Event emitted when the date changes. This can be a time or day change. */
|
|
6636
|
+
this.datetimeChange = new EventEmitter();
|
|
6637
|
+
/** Event emitted when popover closes. */
|
|
6638
|
+
this.onClose = new EventEmitter();
|
|
6639
|
+
/**
|
|
6640
|
+
* Whether to show the calendar legend for special days.
|
|
6641
|
+
* When enabled, displays a legend below the calendar showing the special day markers and their descriptions.
|
|
6642
|
+
* @default false
|
|
6643
|
+
*/
|
|
6644
|
+
this.showCalendarLegend = input(false, { ...(ngDevMode ? { debugName: "showCalendarLegend" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
6645
|
+
/**
|
|
6646
|
+
* Whether to display the calendar legend in column layout.
|
|
6647
|
+
* When true, legend items are displayed vertically in a single column.
|
|
6648
|
+
* When false, legend items are displayed horizontally in rows.
|
|
6649
|
+
* @default false
|
|
6650
|
+
*/
|
|
6651
|
+
this.legendCol = input(false, { ...(ngDevMode ? { debugName: "legendCol" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
6652
|
+
/** @hidden */
|
|
6653
|
+
this._dateTimeAdapter = inject(DatetimeAdapter, {
|
|
6654
|
+
optional: true
|
|
6655
|
+
});
|
|
6656
|
+
/** @hidden */
|
|
6657
|
+
this._dateTimeFormats = inject(DATE_TIME_FORMATS, {
|
|
6658
|
+
optional: true
|
|
6659
|
+
});
|
|
6660
|
+
/**
|
|
6661
|
+
* Function used to disable certain dates in the calendar.
|
|
6662
|
+
* @param fdDate FdDate
|
|
6663
|
+
*/
|
|
6664
|
+
this.disableFunction = () => false;
|
|
6665
|
+
/**
|
|
6666
|
+
* Method that handles changes when popover is opened or closed.
|
|
6667
|
+
*/
|
|
6668
|
+
this.handleOpenChange = (open) => {
|
|
6669
|
+
this.isOpenChange.emit(open);
|
|
6670
|
+
};
|
|
6671
|
+
/**
|
|
6672
|
+
* Method that handle calendar active view change and throws event.
|
|
6673
|
+
*/
|
|
6674
|
+
this.handleActiveViewChange = (fdCalendarView) => {
|
|
6675
|
+
this.activeViewChange.emit(fdCalendarView);
|
|
6676
|
+
};
|
|
6677
|
+
if (!this._dateTimeAdapter) {
|
|
6678
|
+
throw createMissingDateImplementationError('DateTimeAdapter');
|
|
6679
|
+
}
|
|
6680
|
+
if (!this._dateTimeFormats) {
|
|
6681
|
+
throw createMissingDateImplementationError('DATE_TIME_FORMATS');
|
|
6682
|
+
}
|
|
6683
|
+
// default model value
|
|
6684
|
+
this.value = this._dateTimeAdapter.now();
|
|
6685
|
+
}
|
|
6686
|
+
/**
|
|
6687
|
+
* @hidden
|
|
6688
|
+
*/
|
|
6866
6689
|
ngAfterViewInit() {
|
|
6867
|
-
|
|
6868
|
-
if (this.
|
|
6869
|
-
this.
|
|
6690
|
+
// if used with platform forms, adjust width of datetimepicker to take 100% container space
|
|
6691
|
+
if (this.formField) {
|
|
6692
|
+
this._adjustPickerWidth();
|
|
6870
6693
|
}
|
|
6871
6694
|
}
|
|
6872
6695
|
/** @hidden */
|
|
6873
|
-
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
}
|
|
6877
|
-
const target = event.relatedTarget;
|
|
6878
|
-
if (target) {
|
|
6879
|
-
const isList = !!target.closest('.fdp-combobox__list-container');
|
|
6880
|
-
const isListItem = !!target.closest('.fd-list__item');
|
|
6881
|
-
if (isList || isListItem) {
|
|
6882
|
-
return;
|
|
6883
|
-
}
|
|
6884
|
-
}
|
|
6885
|
-
if ((!this._selectedElement && !this.inputText) || this._selectedElement?.label === this.inputText) {
|
|
6886
|
-
return;
|
|
6887
|
-
}
|
|
6888
|
-
const optionItem = this._getSelectedOptionItem(this.inputText);
|
|
6889
|
-
this._updateModel(optionItem ? optionItem.value : this.inputText);
|
|
6890
|
-
}
|
|
6891
|
-
/** @hidden Method to emit change event */
|
|
6892
|
-
emitChangeEvent(modelValue) {
|
|
6893
|
-
const event = new ComboboxSelectionChangeEvent(this, modelValue);
|
|
6894
|
-
this.selectionChange.emit(event);
|
|
6895
|
-
}
|
|
6896
|
-
/** @hidden Method to set selected item */
|
|
6897
|
-
selectOptionItem(item, shouldClosePopover = true) {
|
|
6898
|
-
if (this.mobile) {
|
|
6899
|
-
this._selectedElement = item;
|
|
6900
|
-
this.inputText = item.label;
|
|
6901
|
-
this.detectChanges();
|
|
6902
|
-
return;
|
|
6903
|
-
}
|
|
6904
|
-
this.inputText = item.label;
|
|
6905
|
-
this._checkAndUpdate(item);
|
|
6906
|
-
if (shouldClosePopover) {
|
|
6907
|
-
this.isOpenChangeHandle(false);
|
|
6908
|
-
}
|
|
6696
|
+
writeValue(value) {
|
|
6697
|
+
super.writeValue(value);
|
|
6698
|
+
this.markForCheck();
|
|
6909
6699
|
}
|
|
6910
|
-
/**
|
|
6911
|
-
|
|
6912
|
-
|
|
6913
|
-
|
|
6914
|
-
|
|
6915
|
-
|
|
6916
|
-
this.
|
|
6917
|
-
this.inputText = this.displayValue(this._selectedElement);
|
|
6700
|
+
/**
|
|
6701
|
+
* @hidden
|
|
6702
|
+
* override base functionality to catch new disabled state
|
|
6703
|
+
*/
|
|
6704
|
+
setDisabledState(disabled) {
|
|
6705
|
+
super.setDisabledState(disabled);
|
|
6706
|
+
this.dateTimePickerComponent?.setDisabledState(disabled);
|
|
6918
6707
|
}
|
|
6919
|
-
/**
|
|
6920
|
-
|
|
6921
|
-
|
|
6922
|
-
|
|
6923
|
-
|
|
6708
|
+
/**
|
|
6709
|
+
* @hidden
|
|
6710
|
+
* logic to handle validation from both platform forms and core datetiimepicker
|
|
6711
|
+
* @param datetime inputted
|
|
6712
|
+
*/
|
|
6713
|
+
handleDatetimeInputChange(datetime) {
|
|
6714
|
+
if (this.dateTimePickerComponent) {
|
|
6715
|
+
if (this.dateTimePickerComponent._isInvalidDateInput) {
|
|
6716
|
+
if (this.ngControl?.control && this._control.value) {
|
|
6717
|
+
this.ngControl.control.setErrors(this._control.errors);
|
|
6718
|
+
}
|
|
6719
|
+
this.state = 'error';
|
|
6924
6720
|
}
|
|
6925
6721
|
else {
|
|
6926
|
-
|
|
6722
|
+
if (!this.dateTimePickerComponent._inputFieldDate && !this.allowNull) {
|
|
6723
|
+
this.state = 'error'; // null value in not allowNull should throw error
|
|
6724
|
+
}
|
|
6725
|
+
else {
|
|
6726
|
+
this.state = undefined; // resetting to default state
|
|
6727
|
+
}
|
|
6927
6728
|
}
|
|
6729
|
+
// only set the value if it is a valid datetime object
|
|
6730
|
+
if (this.dateTimePickerComponent._inputFieldDate) {
|
|
6731
|
+
this.value = datetime;
|
|
6732
|
+
}
|
|
6733
|
+
this.stateChanges.next('datetime picker: handleDatetimeInputChange');
|
|
6928
6734
|
}
|
|
6929
|
-
|
|
6930
|
-
|
|
6931
|
-
}
|
|
6932
|
-
}
|
|
6933
|
-
/** @hidden Define is selected item selected by display value */
|
|
6934
|
-
isSelectedOptionItemByDisplayValue(selectedItem) {
|
|
6935
|
-
return this._selectedElement?.label === selectedItem;
|
|
6936
|
-
}
|
|
6937
|
-
/** Handle dialog dismissing, closes popover and sets backup data. */
|
|
6938
|
-
dialogDismiss(term) {
|
|
6939
|
-
if (this._selectedElement?.label !== term) {
|
|
6940
|
-
this._selectedElement = this._getSelectedOptionItem(term);
|
|
6941
|
-
}
|
|
6942
|
-
this.inputText = term;
|
|
6943
|
-
this.isOpenChangeHandle(false);
|
|
6944
|
-
}
|
|
6945
|
-
/** Handle dialog approval, closes popover and propagates data changes. */
|
|
6946
|
-
dialogApprove() {
|
|
6947
|
-
if (this._selectedElement?.label === this.inputText) {
|
|
6948
|
-
this._updateModel(this._selectedElement.value);
|
|
6949
|
-
}
|
|
6950
|
-
else {
|
|
6951
|
-
const optionItem = this._getSelectedOptionItem(this.inputText);
|
|
6952
|
-
this._updateModel(optionItem ? optionItem.value : this.inputText);
|
|
6953
|
-
}
|
|
6954
|
-
this.isOpenChangeHandle(false);
|
|
6955
|
-
}
|
|
6956
|
-
/** @hidden */
|
|
6957
|
-
onItemFocused(value) {
|
|
6958
|
-
if (!this._itemMousedown && !this.mobile) {
|
|
6959
|
-
this.selectOptionItem(value, false);
|
|
6960
|
-
}
|
|
6961
|
-
this._itemMousedown = false;
|
|
6962
|
-
}
|
|
6963
|
-
/** @hidden */
|
|
6964
|
-
_getLabelledBy() {
|
|
6965
|
-
let retVal = this.ariaLabelledBy;
|
|
6966
|
-
if (this.stateMessage) {
|
|
6967
|
-
retVal = retVal + ' fdp-list-message-combobox-state-message-' + this.id;
|
|
6968
|
-
}
|
|
6969
|
-
if (this.advancedStateMessage?.hasErrors && this.advancedStateMessage?.template) {
|
|
6970
|
-
retVal = retVal + ' fdp-list-message-combobox-error-message-' + this.id;
|
|
6971
|
-
}
|
|
6972
|
-
return retVal;
|
|
6735
|
+
this.datetimeChange.emit(datetime);
|
|
6736
|
+
this.onTouched();
|
|
6973
6737
|
}
|
|
6974
|
-
/**
|
|
6975
|
-
|
|
6976
|
-
|
|
6738
|
+
/**
|
|
6739
|
+
* @hidden
|
|
6740
|
+
* method that adjusts width of datetimepicker to take 100% container space
|
|
6741
|
+
*/
|
|
6742
|
+
_adjustPickerWidth() {
|
|
6743
|
+
const customPopoverEl = this._elRef.nativeElement.querySelector('.fd-datetime .fd-popover-custom');
|
|
6744
|
+
if (!customPopoverEl) {
|
|
6977
6745
|
return;
|
|
6978
6746
|
}
|
|
6979
|
-
|
|
6980
|
-
}
|
|
6981
|
-
/** @hidden Update model */
|
|
6982
|
-
_updateModel(value) {
|
|
6983
|
-
// setting value, it will call setValue()
|
|
6984
|
-
this.value = value;
|
|
6985
|
-
this.emitChangeEvent(value ? value : null);
|
|
6986
|
-
}
|
|
6987
|
-
/** @hidden */
|
|
6988
|
-
async _setUpMobileMode() {
|
|
6989
|
-
const injector = Injector.create({
|
|
6990
|
-
providers: [{ provide: COMBOBOX_COMPONENT, useValue: this }],
|
|
6991
|
-
parent: this._injector
|
|
6992
|
-
});
|
|
6993
|
-
this._dynamicComponentService.createDynamicComponent({ listTemplate: this.listTemplate, controlTemplate: this.controlTemplate }, ComboboxMobileComponent, {
|
|
6994
|
-
containerRef: this._viewContainerRef
|
|
6995
|
-
}, { injector });
|
|
6996
|
-
}
|
|
6997
|
-
/** @hidden */
|
|
6998
|
-
_getSelectedOptionItem(text) {
|
|
6999
|
-
if (!this.isGroup) {
|
|
7000
|
-
return this._suggestions.find((item) => item.label === text);
|
|
7001
|
-
}
|
|
7002
|
-
return this._suggestions
|
|
7003
|
-
.reduce((result, item) => {
|
|
7004
|
-
result.push(...(item.children ?? []));
|
|
7005
|
-
return result;
|
|
7006
|
-
}, [])
|
|
7007
|
-
.find((item) => item.label === text);
|
|
6747
|
+
customPopoverEl.style.display = 'inline';
|
|
7008
6748
|
}
|
|
7009
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
7010
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
7011
|
-
{ provide: FD_FORM_FIELD_CONTROL, useExisting: ComboboxComponent, multi: true },
|
|
7012
|
-
contentDensityObserverProviders()
|
|
7013
|
-
], viewQueries: [{ propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"mobile ? controlTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-template [ngTemplateOutlet]=\"listTemplate\"></ng-template>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"_getLabelledBy()\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n @if (isOpen) {\n <div class=\"fdp-combobox__count-list-results\" role=\"status\">\n @if (_flatSuggestions.length || '0'; as count) {\n {{\n (\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate: { count: count }\n )()\n }}\n }\n </div>\n }\n @if (mobile || isOpen ? null : !!stateMessage) {\n <fd-form-message [type]=\"state\" [innerHtml]=\"stateMessage\"></fd-form-message>\n }\n </fd-form-input-message-group>\n</ng-template>\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n (keydown.tab)=\"_close()\"\n (keydown.shift.tab)=\"_close()\"\n >\n @if (stateMessage) {\n <li\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n [attr.id]=\"'fdp-list-message-combobox-state-message-' + id\"\n ></li>\n }\n @if (advancedStateMessage?.hasErrors && advancedStateMessage?.template) {\n <li\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [attr.id]=\"'fdp-list-message-combobox-error-message-' + id\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n }\n <ng-content></ng-content>\n @if (isGroup) {\n @for (group of _suggestions; track group) {\n @if (!groupItemTemplate) {\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n }\n @for (optionItem of group.children; track optionItem; let i = $index) {\n <li\n (click)=\"handleOptionItem(optionItem)\"\n (mousedown)=\"_itemMousedown = true\"\n (focus)=\"onItemFocused(optionItem)\"\n fd-list-item\n ariaRole=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n } @else {\n @for (optionItem of _suggestions; track optionItem; let i = $index) {\n <li\n (click)=\"handleOptionItem(optionItem)\"\n (mousedown)=\"_itemMousedown = true\"\n (focus)=\"onItemFocused(optionItem)\"\n fd-list-item\n ariaRole=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n </ul>\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n @if (isSelectedOptionItem(optionItem) && !!selectedItemTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n @if (!(isSelectedOptionItem(optionItem) && selectedItemTemplate)) {\n <ng-template\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-template>\n <ng-template\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n @if (!optionItemTemplate) {\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight: inputText\"></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n @if (showSecondaryText) {\n @if (!secondaryItemTemplate) {\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight: inputText\"\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n }\n }\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "bodyAriaLabel", "bodyRole", "bodyAriaLabelledBy", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"], outputs: ["onClose"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen", "preventSpaceKeyScroll"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i3$2.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i3$2.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "subline", "theme", "unreadIndicator", "role", "settingsList", "settingsListFooter", "searchResultsList"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "counterRole", "counterAriaLabel", "active", "unread", "byline", "ariaRole", "id", "preventClick", "settingsListTpl", "suggestion"], outputs: ["keyDown"], exportAs: ["fdListItem"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap", "truncate", "scope"] }, { kind: "directive", type: i6.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListMessageDirective, selector: "[fd-list-message], [fdListMessage]", inputs: ["type", "class"] }, { kind: "ngmodule", type: ContentDensityModule }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6749
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatetimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6750
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: PlatformDatetimePickerComponent, isStandalone: true, selector: "fdp-datetime-picker", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: false, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: false, isRequired: false, transformFunction: null }, meridian: { classPropertyName: "meridian", publicName: "meridian", isSignal: false, isRequired: false, transformFunction: null }, displaySeconds: { classPropertyName: "displaySeconds", publicName: "displaySeconds", isSignal: false, isRequired: false, transformFunction: null }, displayMinutes: { classPropertyName: "displayMinutes", publicName: "displayMinutes", isSignal: false, isRequired: false, transformFunction: null }, displayHours: { classPropertyName: "displayHours", publicName: "displayHours", isSignal: false, isRequired: false, transformFunction: null }, useValidation: { classPropertyName: "useValidation", publicName: "useValidation", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: false, isRequired: false, transformFunction: null }, startingDayOfWeek: { classPropertyName: "startingDayOfWeek", publicName: "startingDayOfWeek", isSignal: false, isRequired: false, transformFunction: null }, activeView: { classPropertyName: "activeView", publicName: "activeView", isSignal: false, isRequired: false, transformFunction: null }, allowNull: { classPropertyName: "allowNull", publicName: "allowNull", isSignal: false, isRequired: false, transformFunction: null }, keepTwoDigitsTime: { classPropertyName: "keepTwoDigitsTime", publicName: "keepTwoDigitsTime", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: false, isRequired: false, transformFunction: null }, buttonFocusable: { classPropertyName: "buttonFocusable", publicName: "buttonFocusable", isSignal: false, isRequired: false, transformFunction: null }, specialDaysRules: { classPropertyName: "specialDaysRules", publicName: "specialDaysRules", isSignal: false, isRequired: false, transformFunction: null }, yearGrid: { classPropertyName: "yearGrid", publicName: "yearGrid", isSignal: false, isRequired: false, transformFunction: null }, aggregatedYearGrid: { classPropertyName: "aggregatedYearGrid", publicName: "aggregatedYearGrid", isSignal: false, isRequired: false, transformFunction: null }, markWeekends: { classPropertyName: "markWeekends", publicName: "markWeekends", isSignal: false, isRequired: false, transformFunction: null }, spinnerButtons: { classPropertyName: "spinnerButtons", publicName: "spinnerButtons", isSignal: false, isRequired: false, transformFunction: null }, showWeekNumbers: { classPropertyName: "showWeekNumbers", publicName: "showWeekNumbers", isSignal: false, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: false, isRequired: false, transformFunction: null }, processInputOnBlur: { classPropertyName: "processInputOnBlur", publicName: "processInputOnBlur", isSignal: false, isRequired: false, transformFunction: null }, preventScrollOnFocus: { classPropertyName: "preventScrollOnFocus", publicName: "preventScrollOnFocus", isSignal: false, isRequired: false, transformFunction: null }, mobile: { classPropertyName: "mobile", publicName: "mobile", isSignal: false, isRequired: false, transformFunction: null }, mobileConfig: { classPropertyName: "mobileConfig", publicName: "mobileConfig", isSignal: false, isRequired: false, transformFunction: null }, mobileLandscape: { classPropertyName: "mobileLandscape", publicName: "mobileLandscape", isSignal: false, isRequired: false, transformFunction: null }, mobilePortrait: { classPropertyName: "mobilePortrait", publicName: "mobilePortrait", isSignal: false, isRequired: false, transformFunction: null }, showCalendarLegend: { classPropertyName: "showCalendarLegend", publicName: "showCalendarLegend", isSignal: true, isRequired: false, transformFunction: null }, legendCol: { classPropertyName: "legendCol", publicName: "legendCol", isSignal: true, isRequired: false, transformFunction: null }, disableFunction: { classPropertyName: "disableFunction", publicName: "disableFunction", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { isOpenChange: "isOpenChange", activeViewChange: "activeViewChange", datetimeChange: "datetimeChange", onClose: "onClose" }, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: PlatformDatetimePickerComponent, multi: true }], viewQueries: [{ propertyName: "dateTimePickerComponent", first: true, predicate: DatetimePickerComponent, descendants: true }, { propertyName: "_elRef", first: true, predicate: DatetimePickerComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "_control", first: true, predicate: DatetimePickerComponent, descendants: true, read: NgControl, static: true }], usesInheritance: true, ngImport: i0, template: "<fd-datetime-picker\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"_isRequired\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.ariaDescribedBy]=\"ariaDescribedBy\"\n [inputId]=\"id\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n [meridian]=\"meridian\"\n [disabled]=\"disabled\"\n [displaySeconds]=\"displaySeconds\"\n [displayMinutes]=\"displayMinutes\"\n [displayHours]=\"displayHours\"\n [useValidation]=\"useValidation\"\n [isOpen]=\"isOpen\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [activeView]=\"activeView\"\n [allowNull]=\"allowNull && !_isRequired\"\n [keepTwoDigitsTime]=\"keepTwoDigitsTime\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [specialDaysRules]=\"specialDaysRules\"\n [showCalendarLegend]=\"showCalendarLegend()\"\n [legendCol]=\"legendCol()\"\n [yearGrid]=\"yearGrid\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [markWeekends]=\"markWeekends\"\n [spinnerButtons]=\"spinnerButtons\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [showFooter]=\"showFooter\"\n [disableFunction]=\"disableFunction\"\n [processInputOnBlur]=\"processInputOnBlur\"\n [preventScrollOnFocus]=\"preventScrollOnFocus\"\n [mobile]=\"mobile\"\n [mobileConfig]=\"mobileConfig\"\n [mobileLandscape]=\"mobileLandscape\"\n [mobilePortrait]=\"mobilePortrait\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"handleDatetimeInputChange($event)\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n (isOpenChange)=\"handleOpenChange($event)\"\n (touched)=\"onTouched()\"\n>\n <ng-content></ng-content>\n</fd-datetime-picker>\n", dependencies: [{ kind: "component", type: DatetimePickerComponent, selector: "fd-datetime-picker", inputs: ["placeholder", "placement", "appendTo", "disabled", "inputId", "required", "customDateTimeFormat", "meridian", "displaySeconds", "ariaLabelledBy", "message", "messageTriggers", "displayMinutes", "displayHours", "useValidation", "date", "isOpen", "startingDayOfWeek", "activeView", "allowNull", "keepTwoDigitsTime", "state", "buttonFocusable", "yearGrid", "aggregatedYearGrid", "markWeekends", "spinnerButtons", "showWeekNumbers", "showFooter", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "isFullWidth", "specialDaysRules", "showCalendarLegend", "legendCol", "disableFunction"], outputs: ["isOpenChange", "activeViewChange", "dateChange", "calendarChange", "timeChange", "onClose", "touched"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7014
6751
|
}
|
|
7015
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
6752
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatetimePickerComponent, decorators: [{
|
|
7016
6753
|
type: Component,
|
|
7017
|
-
args: [{ selector: 'fdp-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
|
|
7021
|
-
|
|
7022
|
-
|
|
7023
|
-
|
|
7024
|
-
|
|
7025
|
-
|
|
7026
|
-
|
|
7027
|
-
|
|
7028
|
-
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
|
|
7033
|
-
|
|
7034
|
-
|
|
7035
|
-
|
|
7036
|
-
], template: "<ng-template [ngTemplateOutlet]=\"mobile ? controlTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"false\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"controlTemplate\"></ng-template>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-template [ngTemplateOutlet]=\"listTemplate\"></ng-template>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"_getLabelledBy()\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n @if (isOpen) {\n <div class=\"fdp-combobox__count-list-results\" role=\"status\">\n @if (_flatSuggestions.length || '0'; as count) {\n {{\n (\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate: { count: count }\n )()\n }}\n }\n </div>\n }\n @if (mobile || isOpen ? null : !!stateMessage) {\n <fd-form-message [type]=\"state\" [innerHtml]=\"stateMessage\"></fd-form-message>\n }\n </fd-form-input-message-group>\n</ng-template>\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n (keydown.tab)=\"_close()\"\n (keydown.shift.tab)=\"_close()\"\n >\n @if (stateMessage) {\n <li\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n [attr.id]=\"'fdp-list-message-combobox-state-message-' + id\"\n ></li>\n }\n @if (advancedStateMessage?.hasErrors && advancedStateMessage?.template) {\n <li\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [attr.id]=\"'fdp-list-message-combobox-error-message-' + id\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n }\n <ng-content></ng-content>\n @if (isGroup) {\n @for (group of _suggestions; track group) {\n @if (!groupItemTemplate) {\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n }\n @for (optionItem of group.children; track optionItem; let i = $index) {\n <li\n (click)=\"handleOptionItem(optionItem)\"\n (mousedown)=\"_itemMousedown = true\"\n (focus)=\"onItemFocused(optionItem)\"\n fd-list-item\n ariaRole=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n } @else {\n @for (optionItem of _suggestions; track optionItem; let i = $index) {\n <li\n (click)=\"handleOptionItem(optionItem)\"\n (mousedown)=\"_itemMousedown = true\"\n (focus)=\"onItemFocused(optionItem)\"\n fd-list-item\n ariaRole=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n [value]=\"optionItem\"\n >\n <ng-template\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-template>\n </li>\n }\n }\n </ul>\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n @if (isSelectedOptionItem(optionItem) && !!selectedItemTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n @if (!(isSelectedOptionItem(optionItem) && selectedItemTemplate)) {\n <ng-template\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-template>\n <ng-template\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n @if (!optionItemTemplate) {\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight: inputText\"></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n }\n</ng-template>\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n @if (showSecondaryText) {\n @if (!secondaryItemTemplate) {\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight: inputText\"\n ></span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n }\n }\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"] }]
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
|
|
7042
|
-
|
|
7043
|
-
|
|
7044
|
-
|
|
6754
|
+
args: [{ selector: 'fdp-datetime-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: PlatformDatetimePickerComponent, multi: true }], imports: [DatetimePickerComponent, FormsModule], template: "<fd-datetime-picker\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"_isRequired\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.ariaDescribedBy]=\"ariaDescribedBy\"\n [inputId]=\"id\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n [meridian]=\"meridian\"\n [disabled]=\"disabled\"\n [displaySeconds]=\"displaySeconds\"\n [displayMinutes]=\"displayMinutes\"\n [displayHours]=\"displayHours\"\n [useValidation]=\"useValidation\"\n [isOpen]=\"isOpen\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [activeView]=\"activeView\"\n [allowNull]=\"allowNull && !_isRequired\"\n [keepTwoDigitsTime]=\"keepTwoDigitsTime\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [specialDaysRules]=\"specialDaysRules\"\n [showCalendarLegend]=\"showCalendarLegend()\"\n [legendCol]=\"legendCol()\"\n [yearGrid]=\"yearGrid\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [markWeekends]=\"markWeekends\"\n [spinnerButtons]=\"spinnerButtons\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [showFooter]=\"showFooter\"\n [disableFunction]=\"disableFunction\"\n [processInputOnBlur]=\"processInputOnBlur\"\n [preventScrollOnFocus]=\"preventScrollOnFocus\"\n [mobile]=\"mobile\"\n [mobileConfig]=\"mobileConfig\"\n [mobileLandscape]=\"mobileLandscape\"\n [mobilePortrait]=\"mobilePortrait\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"handleDatetimeInputChange($event)\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n (isOpenChange)=\"handleOpenChange($event)\"\n (touched)=\"onTouched()\"\n>\n <ng-content></ng-content>\n</fd-datetime-picker>\n" }]
|
|
6755
|
+
}], ctorParameters: () => [], propDecorators: { value: [{
|
|
6756
|
+
type: Input
|
|
6757
|
+
}], placement: [{
|
|
6758
|
+
type: Input
|
|
6759
|
+
}], appendTo: [{
|
|
6760
|
+
type: Input
|
|
6761
|
+
}], meridian: [{
|
|
6762
|
+
type: Input
|
|
6763
|
+
}], displaySeconds: [{
|
|
6764
|
+
type: Input
|
|
6765
|
+
}], displayMinutes: [{
|
|
6766
|
+
type: Input
|
|
6767
|
+
}], displayHours: [{
|
|
6768
|
+
type: Input
|
|
6769
|
+
}], useValidation: [{
|
|
6770
|
+
type: Input
|
|
6771
|
+
}], isOpen: [{
|
|
6772
|
+
type: Input
|
|
6773
|
+
}], startingDayOfWeek: [{
|
|
6774
|
+
type: Input
|
|
6775
|
+
}], activeView: [{
|
|
6776
|
+
type: Input
|
|
6777
|
+
}], allowNull: [{
|
|
6778
|
+
type: Input
|
|
6779
|
+
}], keepTwoDigitsTime: [{
|
|
6780
|
+
type: Input
|
|
6781
|
+
}], state: [{
|
|
6782
|
+
type: Input
|
|
6783
|
+
}], buttonFocusable: [{
|
|
6784
|
+
type: Input
|
|
6785
|
+
}], specialDaysRules: [{
|
|
6786
|
+
type: Input
|
|
6787
|
+
}], yearGrid: [{
|
|
6788
|
+
type: Input
|
|
6789
|
+
}], aggregatedYearGrid: [{
|
|
6790
|
+
type: Input
|
|
6791
|
+
}], markWeekends: [{
|
|
6792
|
+
type: Input
|
|
6793
|
+
}], spinnerButtons: [{
|
|
6794
|
+
type: Input
|
|
6795
|
+
}], showWeekNumbers: [{
|
|
6796
|
+
type: Input
|
|
6797
|
+
}], showFooter: [{
|
|
6798
|
+
type: Input
|
|
6799
|
+
}], processInputOnBlur: [{
|
|
6800
|
+
type: Input
|
|
6801
|
+
}], preventScrollOnFocus: [{
|
|
6802
|
+
type: Input
|
|
6803
|
+
}], mobile: [{
|
|
6804
|
+
type: Input
|
|
6805
|
+
}], mobileConfig: [{
|
|
6806
|
+
type: Input
|
|
6807
|
+
}], mobileLandscape: [{
|
|
6808
|
+
type: Input
|
|
6809
|
+
}], mobilePortrait: [{
|
|
6810
|
+
type: Input
|
|
6811
|
+
}], isOpenChange: [{
|
|
7045
6812
|
type: Output
|
|
7046
|
-
}],
|
|
6813
|
+
}], activeViewChange: [{
|
|
6814
|
+
type: Output
|
|
6815
|
+
}], datetimeChange: [{
|
|
6816
|
+
type: Output
|
|
6817
|
+
}], onClose: [{
|
|
6818
|
+
type: Output
|
|
6819
|
+
}], dateTimePickerComponent: [{
|
|
7047
6820
|
type: ViewChild,
|
|
7048
|
-
args: [
|
|
7049
|
-
}],
|
|
6821
|
+
args: [DatetimePickerComponent]
|
|
6822
|
+
}], _elRef: [{
|
|
7050
6823
|
type: ViewChild,
|
|
7051
|
-
args: [
|
|
7052
|
-
}],
|
|
6824
|
+
args: [DatetimePickerComponent, { static: true, read: ElementRef }]
|
|
6825
|
+
}], _control: [{
|
|
7053
6826
|
type: ViewChild,
|
|
7054
|
-
args: [
|
|
6827
|
+
args: [DatetimePickerComponent, { static: true, read: NgControl }]
|
|
6828
|
+
}], showCalendarLegend: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCalendarLegend", required: false }] }], legendCol: [{ type: i0.Input, args: [{ isSignal: true, alias: "legendCol", required: false }] }], disableFunction: [{
|
|
6829
|
+
type: Input
|
|
7055
6830
|
}] } });
|
|
7056
6831
|
|
|
7057
|
-
const EXPORTABLE_COMPONENTS = [
|
|
7058
|
-
ComboboxComponent,
|
|
7059
|
-
ComboboxItemDirective,
|
|
7060
|
-
ComboboxSelectedItemDirective,
|
|
7061
|
-
ComboboxItemGroupDirective,
|
|
7062
|
-
ComboboxSecondaryItemDirective
|
|
7063
|
-
];
|
|
7064
6832
|
/**
|
|
7065
6833
|
* @deprecated
|
|
7066
6834
|
* Use direct imports of components and directives.
|
|
7067
6835
|
*/
|
|
7068
|
-
class
|
|
7069
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
7070
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type:
|
|
7071
|
-
|
|
7072
|
-
ComboboxSelectedItemDirective,
|
|
7073
|
-
ComboboxItemGroupDirective,
|
|
7074
|
-
ComboboxSecondaryItemDirective], exports: [ComboboxComponent,
|
|
7075
|
-
ComboboxItemDirective,
|
|
7076
|
-
ComboboxSelectedItemDirective,
|
|
7077
|
-
ComboboxItemGroupDirective,
|
|
7078
|
-
ComboboxSecondaryItemDirective] }); }
|
|
7079
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformComboboxModule, imports: [ComboboxComponent] }); }
|
|
6836
|
+
class PlatformDatetimePickerModule {
|
|
6837
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatetimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6838
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatetimePickerModule, imports: [PlatformDatetimePickerComponent], exports: [PlatformDatetimePickerComponent] }); }
|
|
6839
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatetimePickerModule, imports: [PlatformDatetimePickerComponent] }); }
|
|
7080
6840
|
}
|
|
7081
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
6841
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PlatformDatetimePickerModule, decorators: [{
|
|
7082
6842
|
type: NgModule,
|
|
7083
6843
|
args: [{
|
|
7084
|
-
imports: [
|
|
7085
|
-
exports: [
|
|
6844
|
+
imports: [PlatformDatetimePickerComponent],
|
|
6845
|
+
exports: [PlatformDatetimePickerComponent]
|
|
7086
6846
|
}]
|
|
7087
6847
|
}] });
|
|
7088
6848
|
|
|
6849
|
+
const defaultFormGeneratorHintOptions = {
|
|
6850
|
+
placement: 'right',
|
|
6851
|
+
position: 'after',
|
|
6852
|
+
trigger: [
|
|
6853
|
+
{ trigger: 'mouseenter', openAction: true, closeAction: false },
|
|
6854
|
+
{ trigger: 'mouseleave', openAction: false, closeAction: true },
|
|
6855
|
+
{ trigger: 'focusin', openAction: true, closeAction: false },
|
|
6856
|
+
{ trigger: 'focusout', openAction: false, closeAction: true }
|
|
6857
|
+
],
|
|
6858
|
+
glyph: 'hint',
|
|
6859
|
+
target: 'auto'
|
|
6860
|
+
};
|
|
6861
|
+
|
|
7089
6862
|
/**
|
|
7090
|
-
* @
|
|
7091
|
-
*
|
|
6863
|
+
* @description
|
|
6864
|
+
* Structural directive, which hides current form item and toggles validation rules for it.
|
|
7092
6865
|
*/
|
|
7093
|
-
class
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
|
|
6866
|
+
class DynamicFormControlFieldDirective {
|
|
6867
|
+
/**
|
|
6868
|
+
* @description Form control instance.
|
|
6869
|
+
*/
|
|
6870
|
+
set fdpDynamicFormControlField(value) {
|
|
6871
|
+
this._control = value;
|
|
6872
|
+
this._originalValidators = this._control.formItem.validators;
|
|
6873
|
+
this._originalAsyncValidators = this._control.formItem.asyncValidators;
|
|
6874
|
+
this._updateView();
|
|
6875
|
+
}
|
|
6876
|
+
/**
|
|
6877
|
+
* @description boolean flag representing if current item should be shown.
|
|
6878
|
+
*/
|
|
6879
|
+
set fdpDynamicFormControlFieldShow(value) {
|
|
6880
|
+
this.shouldShowFormItem = value;
|
|
6881
|
+
this._updateView();
|
|
6882
|
+
}
|
|
6883
|
+
/** @hidden */
|
|
6884
|
+
constructor(_templateRef, _viewContainer) {
|
|
6885
|
+
this._templateRef = _templateRef;
|
|
6886
|
+
this._viewContainer = _viewContainer;
|
|
6887
|
+
/**
|
|
6888
|
+
* @hidden
|
|
6889
|
+
*/
|
|
6890
|
+
this._componentRemoved = true;
|
|
6891
|
+
}
|
|
6892
|
+
/** @hidden */
|
|
6893
|
+
ngOnInit() {
|
|
6894
|
+
this._updateView();
|
|
6895
|
+
}
|
|
6896
|
+
/**
|
|
6897
|
+
* @description If false, validation will be skipped from the form item control
|
|
6898
|
+
*/
|
|
6899
|
+
set shouldShowFormItem(value) {
|
|
6900
|
+
if (value === this._shouldShowFormItem) {
|
|
6901
|
+
return;
|
|
6902
|
+
}
|
|
6903
|
+
this._shouldShowFormItem = value;
|
|
6904
|
+
if (!value) {
|
|
6905
|
+
this._control.clearValidators();
|
|
6906
|
+
this._control.clearAsyncValidators();
|
|
6907
|
+
}
|
|
6908
|
+
else {
|
|
6909
|
+
this._control.setValidators(this._originalValidators ?? []);
|
|
6910
|
+
this._control.setAsyncValidators(this._originalAsyncValidators ?? []);
|
|
6911
|
+
}
|
|
6912
|
+
this._control.updateValueAndValidity({ emitEvent: false });
|
|
6913
|
+
}
|
|
6914
|
+
/** @hidden */
|
|
6915
|
+
_updateView() {
|
|
6916
|
+
if (this._shouldShowFormItem && this._componentRemoved) {
|
|
6917
|
+
this._viewContainer.createEmbeddedView(this._templateRef);
|
|
6918
|
+
this._componentRemoved = false;
|
|
6919
|
+
}
|
|
6920
|
+
else if (!this._shouldShowFormItem) {
|
|
6921
|
+
this._viewContainer.clear();
|
|
6922
|
+
this._componentRemoved = true;
|
|
6923
|
+
}
|
|
6924
|
+
}
|
|
6925
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DynamicFormControlFieldDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6926
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: DynamicFormControlFieldDirective, isStandalone: true, selector: "[fdpDynamicFormControlField]", inputs: { fdpDynamicFormControlField: "fdpDynamicFormControlField", fdpDynamicFormControlFieldShow: "fdpDynamicFormControlFieldShow" }, ngImport: i0 }); }
|
|
7097
6927
|
}
|
|
7098
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
7099
|
-
type:
|
|
6928
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DynamicFormControlFieldDirective, decorators: [{
|
|
6929
|
+
type: Directive,
|
|
7100
6930
|
args: [{
|
|
7101
|
-
|
|
7102
|
-
|
|
6931
|
+
selector: '[fdpDynamicFormControlField]',
|
|
6932
|
+
standalone: true
|
|
7103
6933
|
}]
|
|
7104
|
-
}] }
|
|
6934
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { fdpDynamicFormControlField: [{
|
|
6935
|
+
type: Input
|
|
6936
|
+
}], fdpDynamicFormControlFieldShow: [{
|
|
6937
|
+
type: Input
|
|
6938
|
+
}] } });
|
|
7105
6939
|
|
|
7106
|
-
|
|
7107
|
-
|
|
7108
|
-
|
|
7109
|
-
|
|
7110
|
-
|
|
6940
|
+
class FormGroupHeaderComponent {
|
|
6941
|
+
constructor() {
|
|
6942
|
+
/** Whether the header should wrap on multiple lines */
|
|
6943
|
+
this.allowWrap = input(false, { ...(ngDevMode ? { debugName: "allowWrap" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
6944
|
+
/** Fields Group */
|
|
6945
|
+
this.fieldGroup = input(null, /* @ts-ignore */
|
|
6946
|
+
...(ngDevMode ? [{ debugName: "fieldGroup" }] : /* istanbul ignore next */ []));
|
|
6947
|
+
/** Hint options */
|
|
6948
|
+
this.hintOptions = computed(() => this.fieldGroup()?.hintOptions, /* @ts-ignore */
|
|
6949
|
+
...(ngDevMode ? [{ debugName: "hintOptions" }] : /* istanbul ignore next */ []));
|
|
6950
|
+
}
|
|
6951
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGroupHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6952
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: FormGroupHeaderComponent, isStandalone: true, selector: "[fdp-form-group-header]", inputs: { allowWrap: { classPropertyName: "allowWrap", publicName: "allowWrap", isSignal: true, isRequired: false, transformFunction: null }, fieldGroup: { classPropertyName: "fieldGroup", publicName: "fieldGroup", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "fd-form-group__header" }, ngImport: i0, template: "@if (fieldGroup() && hintOptions()?.position === 'before') {\n <ng-template [ngTemplateOutlet]=\"inlineHelpRef\"></ng-template>\n}\n<h6 class=\"fd-form-group__header-text\" [class.fd-form-group__header-text--wrap]=\"allowWrap()\">\n {{ fieldGroup()?.label }}\n</h6>\n@if (fieldGroup() && hintOptions()?.position === 'after') {\n <ng-template [ngTemplateOutlet]=\"inlineHelpRef\"></ng-template>\n}\n<ng-template #inlineHelpRef>\n @if (hintOptions(); as options) {\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [style.vertical-align]=\"'middle'\"\n [fd-inline-help]=\"options.content\"\n [glyph]=\"options.glyph\"\n [placement]=\"options.placement ?? null\"\n [triggers]=\"options.trigger ?? []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["emphasized", "disabled", "inverted", "subtle", "undecorated", "touchTarget"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "size", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { kind: "directive", type: InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["fd-inline-help", "placement", "triggers", "closeOnOutsideClick", "additionalBodyClass", "disabled", "bodyId", "bodyRole", "noArrow", "closeOnEscapeKey", "closeOnNavigation", "restoreFocusOnClose", "appendTo", "fixedPosition", "maxWidth", "scrollStrategy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6953
|
+
}
|
|
6954
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGroupHeaderComponent, decorators: [{
|
|
6955
|
+
type: Component,
|
|
6956
|
+
args: [{ selector: '[fdp-form-group-header]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
6957
|
+
class: 'fd-form-group__header'
|
|
6958
|
+
}, imports: [NgTemplateOutlet, LinkComponent, IconComponent, InlineHelpDirective], template: "@if (fieldGroup() && hintOptions()?.position === 'before') {\n <ng-template [ngTemplateOutlet]=\"inlineHelpRef\"></ng-template>\n}\n<h6 class=\"fd-form-group__header-text\" [class.fd-form-group__header-text--wrap]=\"allowWrap()\">\n {{ fieldGroup()?.label }}\n</h6>\n@if (fieldGroup() && hintOptions()?.position === 'after') {\n <ng-template [ngTemplateOutlet]=\"inlineHelpRef\"></ng-template>\n}\n<ng-template #inlineHelpRef>\n @if (hintOptions(); as options) {\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [style.vertical-align]=\"'middle'\"\n [fd-inline-help]=\"options.content\"\n [glyph]=\"options.glyph\"\n [placement]=\"options.placement ?? null\"\n [triggers]=\"options.trigger ?? []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n }\n</ng-template>\n" }]
|
|
6959
|
+
}], propDecorators: { allowWrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowWrap", required: false }] }], fieldGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldGroup", required: false }] }] } });
|
|
6960
|
+
|
|
6961
|
+
class FieldGroupRowValuePipe {
|
|
6962
|
+
/** @hidden */
|
|
6963
|
+
transform(row) {
|
|
6964
|
+
return row.value instanceof FieldGroup ? row.value.fields : row.value;
|
|
6965
|
+
}
|
|
6966
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FieldGroupRowValuePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
6967
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: FieldGroupRowValuePipe, isStandalone: true, name: "fieldGroupRowValue" }); }
|
|
7111
6968
|
}
|
|
6969
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FieldGroupRowValuePipe, decorators: [{
|
|
6970
|
+
type: Pipe,
|
|
6971
|
+
args: [{
|
|
6972
|
+
name: 'fieldGroupRowValue',
|
|
6973
|
+
standalone: true
|
|
6974
|
+
}]
|
|
6975
|
+
}] });
|
|
6976
|
+
|
|
6977
|
+
/**
|
|
6978
|
+
* @license
|
|
6979
|
+
* F. Kolar
|
|
6980
|
+
*
|
|
6981
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6982
|
+
* you may not use this file except in compliance with the License.
|
|
6983
|
+
* You may obtain a copy of the License at
|
|
6984
|
+
*
|
|
6985
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
6986
|
+
*
|
|
6987
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
6988
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
6989
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
6990
|
+
* See the License for the specific language governing permissions and
|
|
6991
|
+
* limitations under the License.
|
|
6992
|
+
*
|
|
6993
|
+
*
|
|
6994
|
+
*/
|
|
6995
|
+
const formGroupProvider = {
|
|
6996
|
+
provide: FormGroupContainer,
|
|
6997
|
+
useExisting: forwardRef(() => FormGroupComponent)
|
|
6998
|
+
};
|
|
6999
|
+
let formGroupUniqueId = 0;
|
|
7000
|
+
/**
|
|
7001
|
+
*
|
|
7002
|
+
* FormGroup represent high order container aggregating FormFields and ability to distribute these
|
|
7003
|
+
* fields into columns. It mainly hides implementation details that we need to deal with every
|
|
7004
|
+
* time we are building a form. We have input fields , error managements, different states,
|
|
7005
|
+
* hints and many more.
|
|
7006
|
+
*
|
|
7007
|
+
* Well behaved form that has information side by side in multiple
|
|
7008
|
+
* columns needs to also know how to merge properly.
|
|
7009
|
+
*
|
|
7010
|
+
* Just to get the idea about the structure without actual input components inside
|
|
7011
|
+
*
|
|
7012
|
+
* ```html
|
|
7013
|
+
* <fdp-form-group [hintPlacement]="'inline'" columnLayout="XL2-L2-M1-S1">
|
|
7014
|
+
* <fdp-form-field [id]="'Field A'" [rank]="10" column="1">
|
|
7015
|
+
* </fdp-form-field>
|
|
7016
|
+
*
|
|
7017
|
+
* <fdp-form-field [id]="'Field B'" [rank]="30" column="1">
|
|
7018
|
+
* </fdp-form-field>
|
|
7019
|
+
*
|
|
7020
|
+
* <fdp-form-field [id]="'Field C'" [rank]="20" column="1">
|
|
7021
|
+
* </fdp-form-field>
|
|
7022
|
+
*
|
|
7023
|
+
* <fdp-form-field [id]="Field D" [rank]="20" column="2">
|
|
7024
|
+
* </fdp-form-field>
|
|
7025
|
+
*
|
|
7026
|
+
*
|
|
7027
|
+
* <fdp-form-field [id]="'Field E'" [rank]="30" column="2">
|
|
7028
|
+
* </fdp-form-field>
|
|
7029
|
+
* </fdp-form-group>
|
|
7112
7030
|
|
|
7113
|
-
|
|
7114
|
-
|
|
7115
|
-
|
|
7116
|
-
|
|
7117
|
-
|
|
7118
|
-
|
|
7119
|
-
|
|
7120
|
-
|
|
7121
|
-
|
|
7122
|
-
|
|
7031
|
+
*
|
|
7032
|
+
* ````
|
|
7033
|
+
*
|
|
7034
|
+
*
|
|
7035
|
+
* Which can be translated like this
|
|
7036
|
+
* [Field A] - First column, rank 10
|
|
7037
|
+
* [Field B] - First column, rank 30
|
|
7038
|
+
* [Field C] - First column, rank 20
|
|
7039
|
+
* [Field D] - Second column, rank 20
|
|
7040
|
+
* [Field E] - Second column, rank 30
|
|
7041
|
+
*
|
|
7042
|
+
* What we expect that it creates following form with two column layout:
|
|
7043
|
+
* [Field A] [Field D]
|
|
7044
|
+
* [Field C] [Field E]
|
|
7045
|
+
* [Field B]
|
|
7046
|
+
*
|
|
7047
|
+
* You can see all is sorted accordingly by rank (C goes before B).
|
|
7048
|
+
*
|
|
7049
|
+
* When you move into smaller device and all is merged into one columns the naive solution would be:
|
|
7050
|
+
*
|
|
7051
|
+
* [Field A]
|
|
7052
|
+
* [Field C]
|
|
7053
|
+
* [Field B]
|
|
7054
|
+
* [Field D]
|
|
7055
|
+
* [Field E]
|
|
7056
|
+
*
|
|
7057
|
+
* The fields needs to restructure according to their original positioning. When Field D was on the
|
|
7058
|
+
* top why we should move it to the bottom? The more correct solution should be following.
|
|
7059
|
+
*
|
|
7060
|
+
* [Field A]
|
|
7061
|
+
* [Field D]
|
|
7062
|
+
* [Field C]
|
|
7063
|
+
* [Field E]
|
|
7064
|
+
* [Field B]
|
|
7065
|
+
*
|
|
7066
|
+
* Fields nicely merge together. they don't wrap.
|
|
7067
|
+
*
|
|
7068
|
+
*
|
|
7069
|
+
* Besides this layout support it also wraps form functionality and it can work with FormGroup.
|
|
7070
|
+
* You can also decide if you want your form with <form> element or without it.
|
|
7071
|
+
*
|
|
7072
|
+
*
|
|
7073
|
+
*/
|
|
7074
|
+
class FormGroupComponent {
|
|
7123
7075
|
/**
|
|
7124
|
-
*
|
|
7125
|
-
* Can be `success`, `error`, `warning`, `information` or blank for default.
|
|
7076
|
+
* Defines column layout for inline items.
|
|
7126
7077
|
*/
|
|
7127
|
-
set
|
|
7128
|
-
|
|
7129
|
-
|
|
7130
|
-
get state() {
|
|
7131
|
-
if (this.dateTimePickerComponent?.isInvalidDateInput) {
|
|
7132
|
-
// if any other error from core dtp
|
|
7133
|
-
return 'error';
|
|
7134
|
-
}
|
|
7135
|
-
return super.state;
|
|
7078
|
+
set inlineColumnLayout(value) {
|
|
7079
|
+
this._inlineColumnLayout = normalizeColumnLayout(value);
|
|
7080
|
+
this._updateInlineColumnLayout();
|
|
7136
7081
|
}
|
|
7137
|
-
|
|
7138
|
-
|
|
7139
|
-
return !!this.formField?.required;
|
|
7082
|
+
get inlineColumnLayout() {
|
|
7083
|
+
return this._inlineColumnLayout;
|
|
7140
7084
|
}
|
|
7141
7085
|
/** @hidden */
|
|
7142
7086
|
constructor() {
|
|
7143
|
-
|
|
7144
|
-
|
|
7145
|
-
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
this.
|
|
7149
|
-
/** Whether to perform visual validation on the picker input. */
|
|
7150
|
-
this.useValidation = true;
|
|
7151
|
-
/** Whether the popover is open. Two-way binding is supported. */
|
|
7152
|
-
this.isOpen = false;
|
|
7153
|
-
/** Actually shown active view one of 'day' | 'month' | 'year' in calendar component*/
|
|
7154
|
-
this.activeView = FdCalendarViewEnum.Day;
|
|
7155
|
-
/** Whether a null input is considered valid. */
|
|
7156
|
-
this.allowNull = true;
|
|
7157
|
-
/**
|
|
7158
|
-
* @Input when set to true time component will use 2 digits for each number.
|
|
7159
|
-
* For example 9 will become 09
|
|
7160
|
-
* but 12 will be kept as 12.
|
|
7161
|
-
* Only uses by time component and does not change input format
|
|
7162
|
-
*/
|
|
7163
|
-
this.keepTwoDigitsTime = false;
|
|
7164
|
-
/**
|
|
7165
|
-
* Whether AddOn Button should be focusable
|
|
7166
|
-
* @default true
|
|
7167
|
-
*/
|
|
7168
|
-
this.buttonFocusable = true;
|
|
7169
|
-
/**
|
|
7170
|
-
* Special days mark, it can be used by passing array of object with
|
|
7171
|
-
* Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:
|
|
7172
|
-
* https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section
|
|
7173
|
-
* Rule accepts method with FdDate object as a parameter. ex:
|
|
7174
|
-
* `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.
|
|
7175
|
-
*/
|
|
7176
|
-
this.specialDaysRules = [];
|
|
7177
|
-
/**
|
|
7178
|
-
* Object to customize year grid,
|
|
7179
|
-
* Row, Columns and method to display year can be modified
|
|
7180
|
-
*/
|
|
7181
|
-
this.yearGrid = {
|
|
7182
|
-
rows: 4,
|
|
7183
|
-
cols: 5
|
|
7184
|
-
};
|
|
7185
|
-
/**
|
|
7186
|
-
* Object to customize aggregated year grid,
|
|
7187
|
-
* Row, Columns and method to display year can be modified
|
|
7188
|
-
*/
|
|
7189
|
-
this.aggregatedYearGrid = {
|
|
7190
|
-
rows: 4,
|
|
7191
|
-
cols: 3
|
|
7192
|
-
};
|
|
7193
|
-
/**
|
|
7194
|
-
* Whether user wants to mark sunday/saturday with `fd-calendar__item--weekend` class
|
|
7195
|
-
*/
|
|
7196
|
-
this.markWeekends = true;
|
|
7197
|
-
/** @Input Whether to show spinner buttons */
|
|
7198
|
-
this.spinnerButtons = true;
|
|
7087
|
+
/** Id for the form group element */
|
|
7088
|
+
this.id = `fdp-form-group-${formGroupUniqueId++}`;
|
|
7089
|
+
/** Indicates if group is editable */
|
|
7090
|
+
this.editable = true;
|
|
7091
|
+
/** Indicates when labels should not be displayed */
|
|
7092
|
+
this.noLabelLayout = false;
|
|
7199
7093
|
/**
|
|
7200
|
-
*
|
|
7094
|
+
* Defines label's column layout.
|
|
7201
7095
|
*/
|
|
7202
|
-
this.
|
|
7203
|
-
/** Whether or not to show the datetime picker footer with submit/cancel buttons. */
|
|
7204
|
-
this.showFooter = true;
|
|
7096
|
+
this.labelColumnLayout = DefaultHorizontalLabelLayout;
|
|
7205
7097
|
/**
|
|
7206
|
-
*
|
|
7207
|
-
* By default, updates the value as user types.
|
|
7208
|
-
* @default false
|
|
7098
|
+
* Defines field's column layout.
|
|
7209
7099
|
*/
|
|
7210
|
-
this.
|
|
7100
|
+
this.fieldColumnLayout = DefaultHorizontalFieldLayout;
|
|
7211
7101
|
/**
|
|
7212
|
-
*
|
|
7102
|
+
* Defines gap column layout.
|
|
7213
7103
|
*/
|
|
7214
|
-
this.
|
|
7215
|
-
/** Whether
|
|
7216
|
-
this.
|
|
7217
|
-
/** Whether
|
|
7218
|
-
this.
|
|
7219
|
-
/** Whether
|
|
7220
|
-
this.
|
|
7221
|
-
/** Event emitted when the state of the isOpen property changes. */
|
|
7222
|
-
this.isOpenChange = new EventEmitter();
|
|
7223
|
-
/** Event thrown every time calendar active view is changed */
|
|
7224
|
-
this.activeViewChange = new EventEmitter();
|
|
7225
|
-
/** Event emitted when the date changes. This can be a time or day change. */
|
|
7226
|
-
this.datetimeChange = new EventEmitter();
|
|
7227
|
-
/** Event emitted when popover closes. */
|
|
7228
|
-
this.onClose = new EventEmitter();
|
|
7104
|
+
this.gapColumnLayout = DefaultGapLayout;
|
|
7105
|
+
/** Whether to hide form's main title. Default is false. */
|
|
7106
|
+
this.hideMainTItle = false;
|
|
7107
|
+
/** Whether to wrap all the provided content in a `<form>` */
|
|
7108
|
+
this.useForm = false;
|
|
7109
|
+
/** Whether all form items should have identical layout provided for form group */
|
|
7110
|
+
this.unifiedLayout = true;
|
|
7229
7111
|
/**
|
|
7230
|
-
*
|
|
7231
|
-
* When enabled, displays a legend below the calendar showing the special day markers and their descriptions.
|
|
7232
|
-
* @default false
|
|
7112
|
+
* onSubmit event
|
|
7233
7113
|
*/
|
|
7234
|
-
this.
|
|
7114
|
+
this.onSubmit = new EventEmitter();
|
|
7235
7115
|
/**
|
|
7236
|
-
*
|
|
7237
|
-
*
|
|
7238
|
-
* When false, legend items are displayed horizontally in rows.
|
|
7239
|
-
* @default false
|
|
7116
|
+
* @hidden
|
|
7117
|
+
* Packed fields which should be rendered
|
|
7240
7118
|
*/
|
|
7241
|
-
this.
|
|
7119
|
+
this.formRows = {};
|
|
7242
7120
|
/** @hidden */
|
|
7243
|
-
this.
|
|
7244
|
-
optional: true
|
|
7245
|
-
});
|
|
7121
|
+
this.contentDensityObserver = inject(ContentDensityObserver);
|
|
7246
7122
|
/** @hidden */
|
|
7247
|
-
this.
|
|
7248
|
-
|
|
7249
|
-
|
|
7250
|
-
/**
|
|
7251
|
-
* Function used to disable certain dates in the calendar.
|
|
7252
|
-
* @param fdDate FdDate
|
|
7253
|
-
*/
|
|
7254
|
-
this.disableFunction = () => false;
|
|
7255
|
-
/**
|
|
7256
|
-
* Method that handles changes when popover is opened or closed.
|
|
7257
|
-
*/
|
|
7258
|
-
this.handleOpenChange = (open) => {
|
|
7259
|
-
this.isOpenChange.emit(open);
|
|
7260
|
-
};
|
|
7123
|
+
this._destroyRef = inject(DestroyRef);
|
|
7124
|
+
/** @hidden */
|
|
7125
|
+
this._inlineColumnLayout = DefaultVerticalFieldLayout;
|
|
7261
7126
|
/**
|
|
7262
|
-
*
|
|
7127
|
+
* @hidden
|
|
7128
|
+
*
|
|
7129
|
+
* List of direct FdpFormGroup's children.
|
|
7130
|
+
*
|
|
7131
|
+
* Since "formGroupChildren" uses "{ descendants: true }" option that means
|
|
7132
|
+
* "formGroupChildren" will keep track of nested FdpFormGroup fields as well.
|
|
7133
|
+
* This list relies on the injection mechanism so nested FdpFormGroup's fields/fieldGroups
|
|
7134
|
+
* will be omitted
|
|
7263
7135
|
*/
|
|
7264
|
-
this.
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
|
|
7268
|
-
|
|
7136
|
+
this._formGroupDirectChildren = [];
|
|
7137
|
+
/** @hidden */
|
|
7138
|
+
this._subscriptions = new Subscription();
|
|
7139
|
+
/** @hidden */
|
|
7140
|
+
this._cd = inject(ChangeDetectorRef);
|
|
7141
|
+
/** @hidden */
|
|
7142
|
+
this._elementRef = inject(ElementRef);
|
|
7143
|
+
/** @hidden */
|
|
7144
|
+
this._formContainer = inject(ControlContainer, { optional: true });
|
|
7145
|
+
/** @hidden */
|
|
7146
|
+
this._defaultHintOptions = inject(FDP_FORM_FIELD_HINT_OPTIONS_DEFAULT);
|
|
7147
|
+
/** @hidden used for template side Type correction */
|
|
7148
|
+
this.$fieldGroup = (f) => f;
|
|
7149
|
+
this.formGroup = (this._formContainer ? this._formContainer.control : new FormGroup({}));
|
|
7150
|
+
}
|
|
7151
|
+
/** @hidden */
|
|
7152
|
+
ngOnChanges(changes) {
|
|
7153
|
+
this.buildComponentCssClass();
|
|
7154
|
+
if (changes.hint) {
|
|
7155
|
+
if (typeof this.hint === 'string' || this.hint instanceof TemplateRef) {
|
|
7156
|
+
this._hintOptions = {
|
|
7157
|
+
...this._defaultHintOptions,
|
|
7158
|
+
content: this.hint
|
|
7159
|
+
};
|
|
7160
|
+
}
|
|
7161
|
+
else {
|
|
7162
|
+
this._hintOptions = {
|
|
7163
|
+
...this._defaultHintOptions,
|
|
7164
|
+
...this.hint
|
|
7165
|
+
};
|
|
7166
|
+
}
|
|
7269
7167
|
}
|
|
7270
|
-
|
|
7271
|
-
|
|
7168
|
+
}
|
|
7169
|
+
/** @hidden */
|
|
7170
|
+
ngOnInit() {
|
|
7171
|
+
if (!this.formGroup) {
|
|
7172
|
+
this.formGroup = new FormGroup({});
|
|
7272
7173
|
}
|
|
7273
|
-
|
|
7274
|
-
this.
|
|
7174
|
+
this.buildComponentCssClass();
|
|
7175
|
+
this._updateInlineColumnLayout();
|
|
7176
|
+
}
|
|
7177
|
+
/** @hidden */
|
|
7178
|
+
ngAfterContentInit() {
|
|
7179
|
+
this.i18Strings = this.i18Strings ? this.i18Strings : this.i18Template;
|
|
7180
|
+
this._setUserLayout();
|
|
7181
|
+
this._updateFieldByColumn();
|
|
7182
|
+
this._updateFormFieldsProperties();
|
|
7183
|
+
this._listenToFormGroupChildren();
|
|
7184
|
+
this._listenFormFieldColumnChange();
|
|
7185
|
+
this._cd.markForCheck();
|
|
7186
|
+
}
|
|
7187
|
+
/** @hidden */
|
|
7188
|
+
ngAfterViewInit() {
|
|
7189
|
+
this.i18Strings = this.i18Strings ? this.i18Strings : this.i18Template;
|
|
7190
|
+
this._setUserLayout();
|
|
7191
|
+
this._updateFieldByColumn();
|
|
7192
|
+
this._updateFormFieldsProperties();
|
|
7193
|
+
this._listenToFormGroupChildren();
|
|
7194
|
+
this._listenFormFieldColumnChange();
|
|
7195
|
+
this._trackFormGroupResize();
|
|
7196
|
+
this._cd.markForCheck();
|
|
7197
|
+
this._cd.detectChanges();
|
|
7198
|
+
}
|
|
7199
|
+
/** @hidden */
|
|
7200
|
+
ngOnDestroy() {
|
|
7201
|
+
this._subscriptions.unsubscribe();
|
|
7202
|
+
}
|
|
7203
|
+
/** @hidden */
|
|
7204
|
+
addFormField(formField) {
|
|
7205
|
+
// It's needed to set default FormField properties
|
|
7206
|
+
// on early stage otherwise validation errors
|
|
7207
|
+
// will be thrown on FormField level (e.g. i18string are not defined)
|
|
7208
|
+
this._updateFormFieldProperties(formField);
|
|
7209
|
+
// keep track of directly registered children
|
|
7210
|
+
this._addDirectFormGroupChild(formField);
|
|
7211
|
+
}
|
|
7212
|
+
/** @hidden */
|
|
7213
|
+
removeFormField(formField) {
|
|
7214
|
+
this._removeDirectFormGroupChild(formField);
|
|
7215
|
+
}
|
|
7216
|
+
/** @hidden */
|
|
7217
|
+
addFormFieldGroup(formFieldGroup) {
|
|
7218
|
+
this._addDirectFormGroupChild(formFieldGroup);
|
|
7219
|
+
}
|
|
7220
|
+
/** @hidden */
|
|
7221
|
+
removeFormFieldGroup(formFieldGroup) {
|
|
7222
|
+
this._removeDirectFormGroupChild(formFieldGroup);
|
|
7223
|
+
}
|
|
7224
|
+
/** @hidden */
|
|
7225
|
+
addFormControl(name, control) {
|
|
7226
|
+
this.formGroup.setControl(name, control);
|
|
7227
|
+
// letting control to set value. when provided value is 'false'.
|
|
7228
|
+
if (this.object) {
|
|
7229
|
+
control.patchValue(this.object[name]);
|
|
7230
|
+
}
|
|
7231
|
+
}
|
|
7232
|
+
/** @hidden */
|
|
7233
|
+
removeFormControl(name) {
|
|
7234
|
+
this.formGroup.removeControl(name);
|
|
7235
|
+
}
|
|
7236
|
+
/** @hidden */
|
|
7237
|
+
trackByFn(index) {
|
|
7238
|
+
return index;
|
|
7239
|
+
}
|
|
7240
|
+
/** @hidden */
|
|
7241
|
+
trackByFieldName(index, field) {
|
|
7242
|
+
return field ? field.name : undefined;
|
|
7243
|
+
}
|
|
7244
|
+
/** @hidden */
|
|
7245
|
+
buildComponentCssClass() {
|
|
7246
|
+
return ['fd-container', this.class];
|
|
7247
|
+
}
|
|
7248
|
+
/** @hidden */
|
|
7249
|
+
_listenToFormGroupChildren() {
|
|
7250
|
+
this.formGroupChildren.changes.subscribe(() => {
|
|
7251
|
+
this._updateFieldByColumn();
|
|
7252
|
+
this._cd.markForCheck();
|
|
7253
|
+
});
|
|
7254
|
+
}
|
|
7255
|
+
/** @hidden */
|
|
7256
|
+
_listenFormFieldColumnChange() {
|
|
7257
|
+
this.formGroupChildren.forEach((field) => field.onColumnChange?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
7258
|
+
this._updateFieldByColumn();
|
|
7259
|
+
this._cd.markForCheck();
|
|
7260
|
+
}));
|
|
7275
7261
|
}
|
|
7276
7262
|
/**
|
|
7277
7263
|
* @hidden
|
|
7264
|
+
* Assign a fields or field group to specified columns with rank.
|
|
7265
|
+
* if `columnLayoutType` is given a fields without column property will set on last column.
|
|
7266
|
+
* Otherwise the fields set 1 column.
|
|
7278
7267
|
*/
|
|
7279
|
-
|
|
7280
|
-
|
|
7281
|
-
|
|
7282
|
-
|
|
7268
|
+
_updateFieldByColumn() {
|
|
7269
|
+
const formChildren = this._getFormGroupChildren();
|
|
7270
|
+
const rows = {};
|
|
7271
|
+
let rowNumber = 0;
|
|
7272
|
+
let columns = {};
|
|
7273
|
+
for (const child of formChildren) {
|
|
7274
|
+
if (isFieldChild(child)) {
|
|
7275
|
+
const field = getField(child);
|
|
7276
|
+
const columnNumber = this._validateFieldColumn(child.column);
|
|
7277
|
+
if (!columns[columnNumber]) {
|
|
7278
|
+
columns[columnNumber] = [];
|
|
7279
|
+
}
|
|
7280
|
+
columns[columnNumber].push(field);
|
|
7281
|
+
}
|
|
7282
|
+
if (isFieldGroupChild(child)) {
|
|
7283
|
+
const fieldGroupColumns = {};
|
|
7284
|
+
if (Object.keys(columns).length) {
|
|
7285
|
+
rows[rowNumber] = columns;
|
|
7286
|
+
columns = {};
|
|
7287
|
+
rowNumber++;
|
|
7288
|
+
}
|
|
7289
|
+
const groupFields = child.fields.map((field) => getField(field));
|
|
7290
|
+
groupFields.forEach((groupField) => {
|
|
7291
|
+
const columnNumber = this._validateFieldColumn(groupField.column);
|
|
7292
|
+
if (!fieldGroupColumns[columnNumber]) {
|
|
7293
|
+
fieldGroupColumns[columnNumber] = [];
|
|
7294
|
+
}
|
|
7295
|
+
fieldGroupColumns[columnNumber].push(groupField);
|
|
7296
|
+
});
|
|
7297
|
+
rows[rowNumber] = new FieldGroup(child.label, fieldGroupColumns, child.hintOptions);
|
|
7298
|
+
rowNumber++;
|
|
7299
|
+
}
|
|
7300
|
+
}
|
|
7301
|
+
rows[rowNumber] = columns;
|
|
7302
|
+
this.formRows = rows;
|
|
7303
|
+
}
|
|
7304
|
+
/** @hidden Validate column number */
|
|
7305
|
+
_validateFieldColumn(columnNumber) {
|
|
7306
|
+
if (this.columnLayout && columnNumber) {
|
|
7307
|
+
if (isNaN(columnNumber)) {
|
|
7308
|
+
throw new Error('Input a valid column number');
|
|
7309
|
+
}
|
|
7310
|
+
if (columnNumber > this.xlColumnsNumber) {
|
|
7311
|
+
throw new Error(`Columns cannot be more than ${this.xlColumnsNumber}`);
|
|
7312
|
+
}
|
|
7313
|
+
return columnNumber;
|
|
7283
7314
|
}
|
|
7315
|
+
return this.xlColumnsNumber;
|
|
7284
7316
|
}
|
|
7285
7317
|
/** @hidden */
|
|
7286
|
-
|
|
7287
|
-
|
|
7288
|
-
|
|
7318
|
+
_updateFormFieldsProperties() {
|
|
7319
|
+
this._getFormGroupChildren().forEach((formField) => {
|
|
7320
|
+
if (isFieldChild(formField)) {
|
|
7321
|
+
this._updateFormFieldProperties(formField);
|
|
7322
|
+
}
|
|
7323
|
+
if (isFieldGroupChild(formField)) {
|
|
7324
|
+
formField.fields.forEach((field) => this._updateFormFieldProperties(getFormField(field)));
|
|
7325
|
+
}
|
|
7326
|
+
});
|
|
7289
7327
|
}
|
|
7290
7328
|
/**
|
|
7291
7329
|
* @hidden
|
|
7292
|
-
*
|
|
7330
|
+
* Pass some global properties to each field. Even formGroup cna be inject directly inside form
|
|
7331
|
+
* field we are using here a setter method to initialize the
|
|
7332
|
+
*
|
|
7293
7333
|
*/
|
|
7294
|
-
|
|
7295
|
-
|
|
7296
|
-
|
|
7334
|
+
_updateFormFieldProperties(formField) {
|
|
7335
|
+
if (this.unifiedLayout) {
|
|
7336
|
+
formField.editable = this.editable;
|
|
7337
|
+
formField.noLabelLayout = this.noLabelLayout;
|
|
7338
|
+
}
|
|
7339
|
+
formField.setDefaultColumnLayout();
|
|
7340
|
+
formField.i18Strings = formField.i18Strings ? formField.i18Strings : this.i18Strings;
|
|
7341
|
+
formField.setErrorDirectives(this._errorDirectives);
|
|
7297
7342
|
}
|
|
7298
7343
|
/**
|
|
7299
7344
|
* @hidden
|
|
7300
|
-
*
|
|
7301
|
-
* @param datetime inputted
|
|
7345
|
+
* if `columnLayoutType` is given, set those column layouts appropriately. Otherwise, a layout will set on 1 column
|
|
7302
7346
|
*/
|
|
7303
|
-
|
|
7304
|
-
if (this.
|
|
7305
|
-
|
|
7306
|
-
|
|
7307
|
-
|
|
7308
|
-
}
|
|
7309
|
-
this.state = 'error';
|
|
7347
|
+
_setUserLayout() {
|
|
7348
|
+
if (this.columnLayout) {
|
|
7349
|
+
this._getColumnNumbers(this.columnLayout);
|
|
7350
|
+
if (isNaN(this.xlColumnsNumber) || isNaN(this.lgColumnsNumber) || isNaN(this.mdColumnsNumber)) {
|
|
7351
|
+
throw new Error('Input a valid number for columns');
|
|
7310
7352
|
}
|
|
7311
|
-
|
|
7312
|
-
|
|
7313
|
-
this.state = 'error'; // null value in not allowNull should throw error
|
|
7314
|
-
}
|
|
7315
|
-
else {
|
|
7316
|
-
this.state = undefined; // resetting to default state
|
|
7317
|
-
}
|
|
7353
|
+
if (this.xlColumnsNumber > 12 || this.lgColumnsNumber > 12 || this.mdColumnsNumber > 12) {
|
|
7354
|
+
throw new Error('Columns cannot be more than 12');
|
|
7318
7355
|
}
|
|
7319
|
-
|
|
7320
|
-
|
|
7321
|
-
|
|
7356
|
+
const lgColumns = 12 / this.lgColumnsNumber;
|
|
7357
|
+
const mdColumns = 12 / this.mdColumnsNumber;
|
|
7358
|
+
const xlColumns = 12 / this.xlColumnsNumber;
|
|
7359
|
+
// for `lg` single-column layout, Styles does not use any class, and providing `fd-col-lg--12` has unintended side-effects
|
|
7360
|
+
// therefore, we remove the lg class for single-column layout
|
|
7361
|
+
if (lgColumns === 12) {
|
|
7362
|
+
this.xlCol = `fd-col-xl--${xlColumns} fd-col-md--${mdColumns}`;
|
|
7363
|
+
}
|
|
7364
|
+
else {
|
|
7365
|
+
this.xlCol = `fd-col-xl--${xlColumns} fd-col-md--${mdColumns} fd-col-lg--${lgColumns}`;
|
|
7322
7366
|
}
|
|
7323
|
-
this.stateChanges.next('datetime picker: handleDatetimeInputChange');
|
|
7324
7367
|
}
|
|
7325
|
-
|
|
7326
|
-
|
|
7368
|
+
else {
|
|
7369
|
+
this.xlCol = `fd-col-xl--12 fd-col-md--12 fd-col-lg--12`;
|
|
7370
|
+
}
|
|
7371
|
+
}
|
|
7372
|
+
/** @hidden */
|
|
7373
|
+
_getColumnNumbers(layout) {
|
|
7374
|
+
const [xl, lg, md] = layout.split('-');
|
|
7375
|
+
this.xlColumnsNumber = parseInt(xl.slice(2, xl.length), 10);
|
|
7376
|
+
this.lgColumnsNumber = parseInt(lg.slice(1, lg.length), 10);
|
|
7377
|
+
this.mdColumnsNumber = parseInt(md.slice(1, md.length), 10);
|
|
7378
|
+
}
|
|
7379
|
+
/** @hidden */
|
|
7380
|
+
_addDirectFormGroupChild(child) {
|
|
7381
|
+
if (this._formGroupDirectChildren.indexOf(child) > -1) {
|
|
7382
|
+
return;
|
|
7383
|
+
}
|
|
7384
|
+
this._formGroupDirectChildren.push(child);
|
|
7385
|
+
}
|
|
7386
|
+
/** @hidden */
|
|
7387
|
+
_removeDirectFormGroupChild(child) {
|
|
7388
|
+
this._formGroupDirectChildren = this._formGroupDirectChildren.filter((_child) => _child !== child);
|
|
7327
7389
|
}
|
|
7328
7390
|
/**
|
|
7329
7391
|
* @hidden
|
|
7330
|
-
*
|
|
7392
|
+
* Get direct form group children in the original order
|
|
7393
|
+
*/
|
|
7394
|
+
_getFormGroupChildren() {
|
|
7395
|
+
if (!this.formGroupChildren) {
|
|
7396
|
+
return [];
|
|
7397
|
+
}
|
|
7398
|
+
const children = this.formGroupChildren
|
|
7399
|
+
.toArray()
|
|
7400
|
+
.map((child) => (isFieldGroupWrapperChild(child) ? child.fieldRenderer : child));
|
|
7401
|
+
return children.filter((child) => this._formGroupDirectChildren.includes(child));
|
|
7402
|
+
}
|
|
7403
|
+
/** @hidden */
|
|
7404
|
+
_updateInlineColumnLayout() {
|
|
7405
|
+
this._inlineColumnLayoutClass = generateColumnClass(this.inlineColumnLayout);
|
|
7406
|
+
}
|
|
7407
|
+
/**
|
|
7408
|
+
* @hidden
|
|
7409
|
+
* have to trigger change detection here in order to re-check contents
|
|
7410
|
+
* inside "FormField.renderer" template every time component's dimensions changed
|
|
7331
7411
|
*/
|
|
7332
|
-
|
|
7333
|
-
|
|
7334
|
-
|
|
7335
|
-
|
|
7336
|
-
}
|
|
7337
|
-
customPopoverEl.style.display = 'inline';
|
|
7412
|
+
_trackFormGroupResize() {
|
|
7413
|
+
this._subscriptions.add(resizeObservable(this._elementRef.nativeElement)
|
|
7414
|
+
.pipe(debounceTime(20))
|
|
7415
|
+
.subscribe(() => this._cd.markForCheck()));
|
|
7338
7416
|
}
|
|
7339
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
7340
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: PlatformDatetimePickerComponent, isStandalone: true, selector: "fdp-datetime-picker", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: false, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: false, isRequired: false, transformFunction: null }, meridian: { classPropertyName: "meridian", publicName: "meridian", isSignal: false, isRequired: false, transformFunction: null }, displaySeconds: { classPropertyName: "displaySeconds", publicName: "displaySeconds", isSignal: false, isRequired: false, transformFunction: null }, displayMinutes: { classPropertyName: "displayMinutes", publicName: "displayMinutes", isSignal: false, isRequired: false, transformFunction: null }, displayHours: { classPropertyName: "displayHours", publicName: "displayHours", isSignal: false, isRequired: false, transformFunction: null }, useValidation: { classPropertyName: "useValidation", publicName: "useValidation", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: false, isRequired: false, transformFunction: null }, startingDayOfWeek: { classPropertyName: "startingDayOfWeek", publicName: "startingDayOfWeek", isSignal: false, isRequired: false, transformFunction: null }, activeView: { classPropertyName: "activeView", publicName: "activeView", isSignal: false, isRequired: false, transformFunction: null }, allowNull: { classPropertyName: "allowNull", publicName: "allowNull", isSignal: false, isRequired: false, transformFunction: null }, keepTwoDigitsTime: { classPropertyName: "keepTwoDigitsTime", publicName: "keepTwoDigitsTime", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: false, isRequired: false, transformFunction: null }, buttonFocusable: { classPropertyName: "buttonFocusable", publicName: "buttonFocusable", isSignal: false, isRequired: false, transformFunction: null }, specialDaysRules: { classPropertyName: "specialDaysRules", publicName: "specialDaysRules", isSignal: false, isRequired: false, transformFunction: null }, yearGrid: { classPropertyName: "yearGrid", publicName: "yearGrid", isSignal: false, isRequired: false, transformFunction: null }, aggregatedYearGrid: { classPropertyName: "aggregatedYearGrid", publicName: "aggregatedYearGrid", isSignal: false, isRequired: false, transformFunction: null }, markWeekends: { classPropertyName: "markWeekends", publicName: "markWeekends", isSignal: false, isRequired: false, transformFunction: null }, spinnerButtons: { classPropertyName: "spinnerButtons", publicName: "spinnerButtons", isSignal: false, isRequired: false, transformFunction: null }, showWeekNumbers: { classPropertyName: "showWeekNumbers", publicName: "showWeekNumbers", isSignal: false, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: false, isRequired: false, transformFunction: null }, processInputOnBlur: { classPropertyName: "processInputOnBlur", publicName: "processInputOnBlur", isSignal: false, isRequired: false, transformFunction: null }, preventScrollOnFocus: { classPropertyName: "preventScrollOnFocus", publicName: "preventScrollOnFocus", isSignal: false, isRequired: false, transformFunction: null }, mobile: { classPropertyName: "mobile", publicName: "mobile", isSignal: false, isRequired: false, transformFunction: null }, mobileConfig: { classPropertyName: "mobileConfig", publicName: "mobileConfig", isSignal: false, isRequired: false, transformFunction: null }, mobileLandscape: { classPropertyName: "mobileLandscape", publicName: "mobileLandscape", isSignal: false, isRequired: false, transformFunction: null }, mobilePortrait: { classPropertyName: "mobilePortrait", publicName: "mobilePortrait", isSignal: false, isRequired: false, transformFunction: null }, showCalendarLegend: { classPropertyName: "showCalendarLegend", publicName: "showCalendarLegend", isSignal: true, isRequired: false, transformFunction: null }, legendCol: { classPropertyName: "legendCol", publicName: "legendCol", isSignal: true, isRequired: false, transformFunction: null }, disableFunction: { classPropertyName: "disableFunction", publicName: "disableFunction", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { isOpenChange: "isOpenChange", activeViewChange: "activeViewChange", datetimeChange: "datetimeChange", onClose: "onClose" }, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: PlatformDatetimePickerComponent, multi: true }], viewQueries: [{ propertyName: "dateTimePickerComponent", first: true, predicate: DatetimePickerComponent, descendants: true }, { propertyName: "_elRef", first: true, predicate: DatetimePickerComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "_control", first: true, predicate: DatetimePickerComponent, descendants: true, read: NgControl, static: true }], usesInheritance: true, ngImport: i0, template: "<fd-datetime-picker\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"_isRequired\"\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [attr.ariaDescribedBy]=\"ariaDescribedBy\"\n [inputId]=\"id\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [placement]=\"placement\"\n [appendTo]=\"appendTo\"\n [meridian]=\"meridian\"\n [disabled]=\"disabled\"\n [displaySeconds]=\"displaySeconds\"\n [displayMinutes]=\"displayMinutes\"\n [displayHours]=\"displayHours\"\n [useValidation]=\"useValidation\"\n [isOpen]=\"isOpen\"\n [startingDayOfWeek]=\"startingDayOfWeek\"\n [activeView]=\"activeView\"\n [allowNull]=\"allowNull && !_isRequired\"\n [keepTwoDigitsTime]=\"keepTwoDigitsTime\"\n [state]=\"state\"\n [buttonFocusable]=\"buttonFocusable\"\n [specialDaysRules]=\"specialDaysRules\"\n [showCalendarLegend]=\"showCalendarLegend()\"\n [legendCol]=\"legendCol()\"\n [yearGrid]=\"yearGrid\"\n [aggregatedYearGrid]=\"aggregatedYearGrid\"\n [markWeekends]=\"markWeekends\"\n [spinnerButtons]=\"spinnerButtons\"\n [showWeekNumbers]=\"showWeekNumbers\"\n [showFooter]=\"showFooter\"\n [disableFunction]=\"disableFunction\"\n [processInputOnBlur]=\"processInputOnBlur\"\n [preventScrollOnFocus]=\"preventScrollOnFocus\"\n [mobile]=\"mobile\"\n [mobileConfig]=\"mobileConfig\"\n [mobileLandscape]=\"mobileLandscape\"\n [mobilePortrait]=\"mobilePortrait\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"handleDatetimeInputChange($event)\"\n (activeViewChange)=\"handleActiveViewChange($event)\"\n (isOpenChange)=\"handleOpenChange($event)\"\n (touched)=\"onTouched()\"\n>\n <ng-content></ng-content>\n</fd-datetime-picker>\n", dependencies: [{ kind: "component", type: DatetimePickerComponent, selector: "fd-datetime-picker", inputs: ["placeholder", "placement", "appendTo", "disabled", "inputId", "required", "customDateTimeFormat", "meridian", "displaySeconds", "ariaLabelledBy", "message", "messageTriggers", "displayMinutes", "displayHours", "useValidation", "date", "isOpen", "startingDayOfWeek", "activeView", "allowNull", "keepTwoDigitsTime", "state", "buttonFocusable", "yearGrid", "aggregatedYearGrid", "markWeekends", "spinnerButtons", "showWeekNumbers", "showFooter", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "isFullWidth", "specialDaysRules", "showCalendarLegend", "legendCol", "disableFunction"], outputs: ["isOpenChange", "activeViewChange", "dateChange", "calendarChange", "timeChange", "onClose", "touched"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7417
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7418
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: FormGroupComponent, isStandalone: true, selector: "fdp-form-group", inputs: { id: "id", name: "name", editable: "editable", noLabelLayout: "noLabelLayout", class: "class", hint: "hint", inlineColumnLayout: "inlineColumnLayout", labelColumnLayout: "labelColumnLayout", fieldColumnLayout: "fieldColumnLayout", gapColumnLayout: "gapColumnLayout", formGroup: "formGroup", topTitle: "topTitle", mainTitle: "mainTitle", hideMainTItle: "hideMainTItle", object: "object", i18Strings: "i18Strings", useForm: ["useForm", "useForm", booleanAttribute], columnLayout: "columnLayout", unifiedLayout: "unifiedLayout" }, outputs: { onSubmit: "onSubmit" }, providers: [formGroupProvider, FormFieldLayoutService, contentDensityObserverProviders()], queries: [{ propertyName: "i18Template", first: true, predicate: ["i18n"], descendants: true, static: true }, { propertyName: "formGroupChildren", predicate: FORM_GROUP_CHILD_FIELD_TOKEN, descendants: true }, { propertyName: "_errorDirectives", predicate: FormFieldErrorDirective }], viewQueries: [{ propertyName: "nativeForm", first: true, predicate: ["nativeForm"], descendants: true, read: NgForm }], usesOnChanges: true, ngImport: i0, template: "@if (useForm) {\n <form #nativeForm (ngSubmit)=\"onSubmit.emit($event)\" [id]=\"id\" [name]=\"name\">\n <ng-template [ngTemplateOutlet]=\"body\"></ng-template>\n </form>\n} @else {\n <!-- Render fields and field groups with assigned columns -->\n <ng-template [ngTemplateOutlet]=\"fields\"></ng-template>\n}\n<ng-template #body>\n <!-- Render fields and field groups with assigned columns -->\n <ng-template [ngTemplateOutlet]=\"fields\"></ng-template>\n</ng-template>\n<ng-template #fields>\n @if (mainTitle && !hideMainTItle) {\n <div class=\"fd-form-header\">\n <ng-template [ngTemplateOutlet]=\"mainTitleTemplate\"></ng-template>\n </div>\n }\n <div\n class=\"fd-container fd-form-layout-grid-container\"\n [class.is-compact]=\"contentDensityObserver.isCompactSignal()\"\n >\n @for (column of formRows | keyvalue; track $index) {\n <div class=\"fd-row\">\n @for (fields of column | fieldGroupRowValue | keyvalue; track $index) {\n @if ($fieldGroup(column.value); as value) {\n @if (value.label && $index === 0) {\n <div class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"xlCol\">\n <div fdp-form-group-header [fieldGroup]=\"$index === 0 ? value : null\"></div>\n </div>\n </div>\n }\n }\n\n <div class=\"fd-col fd-form-group\" [class]=\"xlCol\">\n @for (field of fields.value; track trackByFieldName($index, field)) {\n <div class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"_inlineColumnLayoutClass\" [style.order]=\"field.rank\">\n <ng-template [ngTemplateOutlet]=\"field?.renderer || null\"></ng-template>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n<!-- For nested form-group -->\n<ng-content select=\"fdp-form-group\"></ng-content>\n<ng-template #mainTitleTemplate>\n @if (_hintOptions && _hintOptions.content && _hintOptions.position === 'before') {\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n }\n <h5 class=\"fd-form-header__text\">\n {{ mainTitle }}\n </h5>\n @if (_hintOptions && _hintOptions.content && _hintOptions.position === 'after') {\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n }\n <ng-template #hintTemplate>\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"_hintOptions!.content\"\n [glyph]=\"_hintOptions!.glyph\"\n [placement]=\"_hintOptions!.placement ?? null\"\n [triggers]=\"_hintOptions!.trigger ?? []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n </ng-template>\n</ng-template>\n", styles: [".fd-col,.fd-container,.fd-row{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-col:after,.fd-col:before,.fd-container:after,.fd-container:before,.fd-row:after,.fd-row:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;padding-block:0;padding-inline:.25rem;position:relative}.fd-container .fd-row{margin-inline:-.25rem;min-width:calc(100% + .5rem)}.fd-container>.fd-row>.fd-col{padding-block:.25rem}.fd-container.fd-container--no-gap .fd-row,.fd-container.fd-container--no-horizontal-gap .fd-row{margin-inline:0}.fd-container.fd-container--no-gap .fd-row .fd-col,.fd-container.fd-container--no-horizontal-gap .fd-row .fd-col{padding-inline:0}.fd-container.fd-container--no-gap>.fd-row>.fd-col,.fd-container.fd-container--no-vertical-gap>.fd-row>.fd-col{padding-block:0}.fd-container[dir=rtl],[dir=rtl] .fd-container{direction:rtl}.fd-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;position:relative}.fd-col{max-width:100%;min-width:100%;padding-inline:.25rem}.fd-col--0{max-width:0;min-width:0%}.fd-col--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col--3{max-width:25%;min-width:25%}.fd-col--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col--6{max-width:50%;min-width:50%}.fd-col--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col--9{max-width:75%;min-width:75%}.fd-col--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col--12{max-width:100%;min-width:100%}.fd-col--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}.fd-col--full{max-width:none;min-width:8.3333333333%;-webkit-box-flex:1;-ms-flex:1;flex:1}.fd-col--wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}@media(width>=600px){.fd-container{padding-block:0;padding-inline:.5rem}.fd-container .fd-row{margin-inline:-.5rem;min-width:calc(100% + 1rem)}.fd-container>.fd-row>.fd-col{padding-block:.5rem}.fd-col{padding-inline:.5rem}.fd-col-md--0{max-width:0;min-width:0%}.fd-col-md--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-md--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-md--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-md--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-md--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-md--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-md--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-md--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-md--3{max-width:25%;min-width:25%}.fd-col-md--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-md--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-md--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-md--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-md--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-md--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-md--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-md--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-md--6{max-width:50%;min-width:50%}.fd-col-md--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-md--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-md--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-md--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-md--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-md--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-md--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-md--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-md--9{max-width:75%;min-width:75%}.fd-col-md--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-md--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-md--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-md--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-md--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-md--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-md--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-md--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-md--12{max-width:100%;min-width:100%}.fd-col-md--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-md--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}@media(width>=1024px){.fd-col-lg--0{max-width:0;min-width:0%}.fd-col-lg--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-lg--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-lg--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-lg--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-lg--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-lg--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-lg--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-lg--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-lg--3{max-width:25%;min-width:25%}.fd-col-lg--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-lg--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-lg--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-lg--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-lg--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-lg--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-lg--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-lg--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-lg--6{max-width:50%;min-width:50%}.fd-col-lg--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-lg--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-lg--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-lg--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-lg--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-lg--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-lg--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-lg--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-lg--9{max-width:75%;min-width:75%}.fd-col-lg--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-lg--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-lg--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-lg--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-lg--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-lg--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-lg--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-lg--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-lg--12{max-width:100%;min-width:100%}.fd-col-lg--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-lg--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}@media(width>=1440px){.fd-col-xl--0{max-width:0;min-width:0%}.fd-col-xl--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-xl--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-xl--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-xl--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-xl--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-xl--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-xl--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-xl--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-xl--3{max-width:25%;min-width:25%}.fd-col-xl--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-xl--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-xl--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-xl--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-xl--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-xl--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-xl--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-xl--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-xl--6{max-width:50%;min-width:50%}.fd-col-xl--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-xl--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-xl--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-xl--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-xl--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-xl--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-xl--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-xl--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-xl--9{max-width:75%;min-width:75%}.fd-col-xl--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-xl--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-xl--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-xl--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-xl--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-xl--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-xl--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-xl--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-xl--12{max-width:100%;min-width:100%}.fd-col-xl--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-xl--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}.fd-container.fd-form-layout-grid-container .fd-form-group,.fd-container.fd-form-layout-grid-container.fd-form-group{padding-block:1rem!important;padding-inline:1rem!important}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-group,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-group{padding-block:0!important;padding-inline:0!important}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label{-webkit-margin-end:0;margin-inline-end:0;white-space:normal}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--colon,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--colon{-webkit-padding-end:.25rem;padding-inline-end:.25rem}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--required,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--required{-webkit-padding-end:.5rem;padding-inline-end:.5rem}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--required.fd-form-label--colon,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--required.fd-form-label--colon{-webkit-padding-end:.75rem;padding-inline-end:.75rem}.fd-container.fd-form-layout-grid-container .fd-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.fd-container.fd-form-layout-grid-container .fd-row .fd-col{overflow:hidden;padding-block:0;text-overflow:ellipsis;white-space:nowrap}.fd-container.fd-form-layout-grid-container .fd-row .fd-col:not(.fd-form-group){-ms-flex-item-align:center;align-self:center}@media(width>=0){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label{float:right}}@media(width>=0)and (width<=599px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=600px){.fd-container.fd-form-layout-grid-container{padding-block:0;padding-inline:.25rem}.fd-container.fd-form-layout-grid-container .fd-row{margin-block:0;margin-inline:-.25rem;min-width:calc(100% + .5rem)}.fd-container.fd-form-layout-grid-container .fd-row .fd-col{padding-block:0;padding-inline:.25rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label{float:right}}@media(width>=600px)and (width<=1023px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=1024px){.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label{float:right}}@media(width>=1024px)and (width<=1443px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=1440px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label{float:right}}.fd-section{background-color:var(--sapToolbar_Background);border:0;border-bottom:none;-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 1.5rem;padding-inline:0;padding-inline:.5rem}.fd-section:after,.fd-section:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section:after{clear:both;content:\"\";display:table}@media(min-width:600px){.fd-section{padding-inline:2rem}}@media(min-width:1440px){.fd-section{padding-inline:3rem}}.fd-section--no-border,.fd-section:last-child{border-bottom:0}.fd-section--bleed,.fd-section--full-bleed{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-section--bleed:after,.fd-section--bleed:before,.fd-section--full-bleed:after,.fd-section--full-bleed:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:.5rem}@media(min-width:600px){.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:2rem}}@media(min-width:1440px){.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:3rem}}.fd-section__header{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;min-height:1.5rem;padding-block:0;padding-inline:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-margin-after:1.5rem;margin-block-end:1.5rem}.fd-section__header:after,.fd-section__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__title{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapTitleColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader2Size);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:2rem;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-margin-after:0;margin-block-end:0}.fd-section__title:after,.fd-section__title:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__actions{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;-webkit-margin-start:auto;margin-inline-start:auto}.fd-section__actions:after,.fd-section__actions:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__footer{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-pack:center;-ms-flex-pack:center;justify-content:center}.fd-section__footer:after,.fd-section__footer:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group{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}.fd-form-group:after,.fd-form-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group--inline{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-form-group--with-spacing{gap:.625rem}.fd-form-group__header{border:0;-webkit-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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);border-bottom:var(--sapGroup_TitleBorderWidth) solid var(--sapGroup_TitleBorderColor);box-sizing:border-box;min-height:var(--sapElement_LineHeight);padding-inline:var(--fdFormGroupPaddingInline,1rem);width:100%}.fd-form-group__header:after,.fd-form-group__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header--no-padding{--fdFormGroupPaddingInline:0}.fd-form-group__header--no-border{border-bottom:none}.fd-form-group__header-text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-group__header-text:after,.fd-form-group__header-text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header-text--wrap{overflow:visible;text-overflow:clip;white-space:normal}.fd-form-header{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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);-webkit-box-shadow:0 var(--fdFormHeader_Border_Width) 0 var(--sapGroup_TitleBorderColor);box-shadow:0 var(--fdFormHeader_Border_Width) 0 var(--sapGroup_TitleBorderColor);height:var(--sapElement_LineHeight);padding-inline:1rem;width:100%}.fd-form-header:after,.fd-form-header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-header__text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-header__text:after,.fd-form-header__text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}fdp-form-group{display:block}fdp-form-group .fd-form-group{display:block}fdp-form-group .fd-form-group.fd-form-group--inline{display:flex;flex-wrap:wrap;justify-content:flex-start}fdp-form-group .fd-form-group__header{padding-inline:1rem}fdp-form-group .fd-row:empty{display:none}fdp-form-group .fd-form-group__header{margin-block-start:1rem}.fd-form-label{overflow:hidden}\n/*! Bundled license information:\n\nfundamental-styles/dist/form-header.css:\n (*!\n * Fundamental Library Styles v0.41.8\n * Copyright (c) 2026 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: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormGroupHeaderComponent, selector: "[fdp-form-group-header]", inputs: ["allowWrap", "fieldGroup"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["emphasized", "disabled", "inverted", "subtle", "undecorated", "touchTarget"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "size", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { kind: "directive", type: InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["fd-inline-help", "placement", "triggers", "closeOnOutsideClick", "additionalBodyClass", "disabled", "bodyId", "bodyRole", "noArrow", "closeOnEscapeKey", "closeOnNavigation", "restoreFocusOnClose", "appendTo", "fixedPosition", "maxWidth", "scrollStrategy"] }, { kind: "ngmodule", type: ContentDensityModule }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: FieldGroupRowValuePipe, name: "fieldGroupRowValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7341
7419
|
}
|
|
7342
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
7420
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FormGroupComponent, decorators: [{
|
|
7343
7421
|
type: Component,
|
|
7344
|
-
args: [{ selector: 'fdp-
|
|
7345
|
-
|
|
7346
|
-
|
|
7347
|
-
|
|
7348
|
-
|
|
7349
|
-
|
|
7350
|
-
|
|
7351
|
-
|
|
7352
|
-
|
|
7353
|
-
|
|
7354
|
-
type: Input
|
|
7355
|
-
|
|
7356
|
-
type: Input
|
|
7357
|
-
}], displayHours: [{
|
|
7358
|
-
type: Input
|
|
7359
|
-
}], useValidation: [{
|
|
7360
|
-
type: Input
|
|
7361
|
-
}], isOpen: [{
|
|
7362
|
-
type: Input
|
|
7363
|
-
}], startingDayOfWeek: [{
|
|
7364
|
-
type: Input
|
|
7365
|
-
}], activeView: [{
|
|
7422
|
+
args: [{ selector: 'fdp-form-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [formGroupProvider, FormFieldLayoutService, contentDensityObserverProviders()], imports: [
|
|
7423
|
+
FormsModule,
|
|
7424
|
+
NgTemplateOutlet,
|
|
7425
|
+
FormGroupHeaderComponent,
|
|
7426
|
+
LinkComponent,
|
|
7427
|
+
IconComponent,
|
|
7428
|
+
InlineHelpDirective,
|
|
7429
|
+
KeyValuePipe,
|
|
7430
|
+
FieldGroupRowValuePipe,
|
|
7431
|
+
ContentDensityModule
|
|
7432
|
+
], template: "@if (useForm) {\n <form #nativeForm (ngSubmit)=\"onSubmit.emit($event)\" [id]=\"id\" [name]=\"name\">\n <ng-template [ngTemplateOutlet]=\"body\"></ng-template>\n </form>\n} @else {\n <!-- Render fields and field groups with assigned columns -->\n <ng-template [ngTemplateOutlet]=\"fields\"></ng-template>\n}\n<ng-template #body>\n <!-- Render fields and field groups with assigned columns -->\n <ng-template [ngTemplateOutlet]=\"fields\"></ng-template>\n</ng-template>\n<ng-template #fields>\n @if (mainTitle && !hideMainTItle) {\n <div class=\"fd-form-header\">\n <ng-template [ngTemplateOutlet]=\"mainTitleTemplate\"></ng-template>\n </div>\n }\n <div\n class=\"fd-container fd-form-layout-grid-container\"\n [class.is-compact]=\"contentDensityObserver.isCompactSignal()\"\n >\n @for (column of formRows | keyvalue; track $index) {\n <div class=\"fd-row\">\n @for (fields of column | fieldGroupRowValue | keyvalue; track $index) {\n @if ($fieldGroup(column.value); as value) {\n @if (value.label && $index === 0) {\n <div class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"xlCol\">\n <div fdp-form-group-header [fieldGroup]=\"$index === 0 ? value : null\"></div>\n </div>\n </div>\n }\n }\n\n <div class=\"fd-col fd-form-group\" [class]=\"xlCol\">\n @for (field of fields.value; track trackByFieldName($index, field)) {\n <div class=\"fd-row fd-form-item\">\n <div class=\"fd-col\" [class]=\"_inlineColumnLayoutClass\" [style.order]=\"field.rank\">\n <ng-template [ngTemplateOutlet]=\"field?.renderer || null\"></ng-template>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</ng-template>\n<!-- For nested form-group -->\n<ng-content select=\"fdp-form-group\"></ng-content>\n<ng-template #mainTitleTemplate>\n @if (_hintOptions && _hintOptions.content && _hintOptions.position === 'before') {\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n }\n <h5 class=\"fd-form-header__text\">\n {{ mainTitle }}\n </h5>\n @if (_hintOptions && _hintOptions.content && _hintOptions.position === 'after') {\n <ng-template [ngTemplateOutlet]=\"hintTemplate\"></ng-template>\n }\n <ng-template #hintTemplate>\n <span fd-link [undecorated]=\"true\">\n <fd-icon\n [fd-inline-help]=\"_hintOptions!.content\"\n [glyph]=\"_hintOptions!.glyph\"\n [placement]=\"_hintOptions!.placement ?? null\"\n [triggers]=\"_hintOptions!.trigger ?? []\"\n tabindex=\"0\"\n ></fd-icon>\n </span>\n </ng-template>\n</ng-template>\n", styles: [".fd-col,.fd-container,.fd-row{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-col:after,.fd-col:before,.fd-container:after,.fd-container:before,.fd-row:after,.fd-row:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;padding-block:0;padding-inline:.25rem;position:relative}.fd-container .fd-row{margin-inline:-.25rem;min-width:calc(100% + .5rem)}.fd-container>.fd-row>.fd-col{padding-block:.25rem}.fd-container.fd-container--no-gap .fd-row,.fd-container.fd-container--no-horizontal-gap .fd-row{margin-inline:0}.fd-container.fd-container--no-gap .fd-row .fd-col,.fd-container.fd-container--no-horizontal-gap .fd-row .fd-col{padding-inline:0}.fd-container.fd-container--no-gap>.fd-row>.fd-col,.fd-container.fd-container--no-vertical-gap>.fd-row>.fd-col{padding-block:0}.fd-container[dir=rtl],[dir=rtl] .fd-container{direction:rtl}.fd-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;min-width:100%;position:relative}.fd-col{max-width:100%;min-width:100%;padding-inline:.25rem}.fd-col--0{max-width:0;min-width:0%}.fd-col--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col--3{max-width:25%;min-width:25%}.fd-col--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col--6{max-width:50%;min-width:50%}.fd-col--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col--9{max-width:75%;min-width:75%}.fd-col--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col--12{max-width:100%;min-width:100%}.fd-col--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}.fd-col--full{max-width:none;min-width:8.3333333333%;-webkit-box-flex:1;-ms-flex:1;flex:1}.fd-col--wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}@media(width>=600px){.fd-container{padding-block:0;padding-inline:.5rem}.fd-container .fd-row{margin-inline:-.5rem;min-width:calc(100% + 1rem)}.fd-container>.fd-row>.fd-col{padding-block:.5rem}.fd-col{padding-inline:.5rem}.fd-col-md--0{max-width:0;min-width:0%}.fd-col-md--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-md--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-md--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-md--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-md--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-md--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-md--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-md--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-md--3{max-width:25%;min-width:25%}.fd-col-md--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-md--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-md--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-md--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-md--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-md--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-md--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-md--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-md--6{max-width:50%;min-width:50%}.fd-col-md--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-md--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-md--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-md--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-md--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-md--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-md--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-md--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-md--9{max-width:75%;min-width:75%}.fd-col-md--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-md--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-md--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-md--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-md--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-md--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-md--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-md--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-md--12{max-width:100%;min-width:100%}.fd-col-md--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-md--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}@media(width>=1024px){.fd-col-lg--0{max-width:0;min-width:0%}.fd-col-lg--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-lg--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-lg--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-lg--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-lg--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-lg--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-lg--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-lg--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-lg--3{max-width:25%;min-width:25%}.fd-col-lg--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-lg--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-lg--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-lg--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-lg--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-lg--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-lg--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-lg--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-lg--6{max-width:50%;min-width:50%}.fd-col-lg--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-lg--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-lg--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-lg--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-lg--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-lg--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-lg--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-lg--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-lg--9{max-width:75%;min-width:75%}.fd-col-lg--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-lg--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-lg--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-lg--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-lg--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-lg--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-lg--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-lg--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-lg--12{max-width:100%;min-width:100%}.fd-col-lg--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-lg--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}@media(width>=1440px){.fd-col-xl--0{max-width:0;min-width:0%}.fd-col-xl--offset-0{-webkit-margin-start:0;margin-inline-start:0}.fd-col-xl--offset-after-0{-webkit-margin-end:0;margin-inline-end:0}.fd-col-xl--1{max-width:8.3333333333%;min-width:8.3333333333%}.fd-col-xl--offset-1{-webkit-margin-start:8.3333333333%;margin-inline-start:8.3333333333%}.fd-col-xl--offset-after-1{-webkit-margin-end:8.3333333333%;margin-inline-end:8.3333333333%}.fd-col-xl--2{max-width:16.6666666667%;min-width:16.6666666667%}.fd-col-xl--offset-2{-webkit-margin-start:16.6666666667%;margin-inline-start:16.6666666667%}.fd-col-xl--offset-after-2{-webkit-margin-end:16.6666666667%;margin-inline-end:16.6666666667%}.fd-col-xl--3{max-width:25%;min-width:25%}.fd-col-xl--offset-3{-webkit-margin-start:25%;margin-inline-start:25%}.fd-col-xl--offset-after-3{-webkit-margin-end:25%;margin-inline-end:25%}.fd-col-xl--4{max-width:33.3333333333%;min-width:33.3333333333%}.fd-col-xl--offset-4{-webkit-margin-start:33.3333333333%;margin-inline-start:33.3333333333%}.fd-col-xl--offset-after-4{-webkit-margin-end:33.3333333333%;margin-inline-end:33.3333333333%}.fd-col-xl--5{max-width:41.6666666667%;min-width:41.6666666667%}.fd-col-xl--offset-5{-webkit-margin-start:41.6666666667%;margin-inline-start:41.6666666667%}.fd-col-xl--offset-after-5{-webkit-margin-end:41.6666666667%;margin-inline-end:41.6666666667%}.fd-col-xl--6{max-width:50%;min-width:50%}.fd-col-xl--offset-6{-webkit-margin-start:50%;margin-inline-start:50%}.fd-col-xl--offset-after-6{-webkit-margin-end:50%;margin-inline-end:50%}.fd-col-xl--7{max-width:58.3333333333%;min-width:58.3333333333%}.fd-col-xl--offset-7{-webkit-margin-start:58.3333333333%;margin-inline-start:58.3333333333%}.fd-col-xl--offset-after-7{-webkit-margin-end:58.3333333333%;margin-inline-end:58.3333333333%}.fd-col-xl--8{max-width:66.6666666667%;min-width:66.6666666667%}.fd-col-xl--offset-8{-webkit-margin-start:66.6666666667%;margin-inline-start:66.6666666667%}.fd-col-xl--offset-after-8{-webkit-margin-end:66.6666666667%;margin-inline-end:66.6666666667%}.fd-col-xl--9{max-width:75%;min-width:75%}.fd-col-xl--offset-9{-webkit-margin-start:75%;margin-inline-start:75%}.fd-col-xl--offset-after-9{-webkit-margin-end:75%;margin-inline-end:75%}.fd-col-xl--10{max-width:83.3333333333%;min-width:83.3333333333%}.fd-col-xl--offset-10{-webkit-margin-start:83.3333333333%;margin-inline-start:83.3333333333%}.fd-col-xl--offset-after-10{-webkit-margin-end:83.3333333333%;margin-inline-end:83.3333333333%}.fd-col-xl--11{max-width:91.6666666667%;min-width:91.6666666667%}.fd-col-xl--offset-11{-webkit-margin-start:91.6666666667%;margin-inline-start:91.6666666667%}.fd-col-xl--offset-after-11{-webkit-margin-end:91.6666666667%;margin-inline-end:91.6666666667%}.fd-col-xl--12{max-width:100%;min-width:100%}.fd-col-xl--offset-12{-webkit-margin-start:100%;margin-inline-start:100%}.fd-col-xl--offset-after-12{-webkit-margin-end:100%;margin-inline-end:100%}}.fd-container.fd-form-layout-grid-container .fd-form-group,.fd-container.fd-form-layout-grid-container.fd-form-group{padding-block:1rem!important;padding-inline:1rem!important}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-group,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-group{padding-block:0!important;padding-inline:0!important}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label{-webkit-margin-end:0;margin-inline-end:0;white-space:normal}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--colon,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--colon{-webkit-padding-end:.25rem;padding-inline-end:.25rem}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--required,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--required{-webkit-padding-end:.5rem;padding-inline-end:.5rem}.fd-container.fd-form-layout-grid-container .fd-form-group .fd-form-item .fd-form-label--required.fd-form-label--colon,.fd-container.fd-form-layout-grid-container.fd-form-group .fd-form-item .fd-form-label--required.fd-form-label--colon{-webkit-padding-end:.75rem;padding-inline-end:.75rem}.fd-container.fd-form-layout-grid-container .fd-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.fd-container.fd-form-layout-grid-container .fd-row .fd-col{overflow:hidden;padding-block:0;text-overflow:ellipsis;white-space:nowrap}.fd-container.fd-form-layout-grid-container .fd-row .fd-col:not(.fd-form-group){-ms-flex-item-align:center;align-self:center}@media(width>=0){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col>.fd-form-label{float:right}}@media(width>=0)and (width<=599px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=600px){.fd-container.fd-form-layout-grid-container{padding-block:0;padding-inline:.25rem}.fd-container.fd-form-layout-grid-container .fd-row{margin-block:0;margin-inline:-.25rem;min-width:calc(100% + .5rem)}.fd-container.fd-form-layout-grid-container .fd-row .fd-col{padding-block:0;padding-inline:.25rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-md>.fd-form-label{float:right}}@media(width>=600px)and (width<=1023px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--md-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=1024px){.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-lg>.fd-form-label{float:right}}@media(width>=1024px)and (width<=1443px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--lg-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}}@media(width>=1440px){.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical .fd-form-group .fd-form-item,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical.fd-form-group .fd-form-item{margin-top:.625rem}.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical .fd-form-group .fd-form-item:first-of-type,.fd-container.fd-form-layout-grid-container.fd-form-layout-grid-container--xl-vertical.fd-form-group .fd-form-item:first-of-type{margin-top:0}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--1>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--2>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--3>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--4>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--5>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--6>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--7>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--8>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--9>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--10>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label{float:right;text-align:right;-webkit-padding-after:0;padding-block-end:0;width:100%}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--11>.fd-form-label{float:left;text-align:left}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label,.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label{float:left;text-align:start;width:auto;-webkit-padding-after:.125rem;padding-block-end:.125rem}.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label[dir=rtl],.fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label[dir=rtl],[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl--12>.fd-form-label,[dir=rtl] .fd-container.fd-form-layout-grid-container .fd-row .fd-col-xl>.fd-form-label{float:right}}.fd-section{background-color:var(--sapToolbar_Background);border:0;border-bottom:none;-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 1.5rem;padding-inline:0;padding-inline:.5rem}.fd-section:after,.fd-section:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section:after{clear:both;content:\"\";display:table}@media(min-width:600px){.fd-section{padding-inline:2rem}}@media(min-width:1440px){.fd-section{padding-inline:3rem}}.fd-section--no-border,.fd-section:last-child{border-bottom:0}.fd-section--bleed,.fd-section--full-bleed{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-section--bleed:after,.fd-section--bleed:before,.fd-section--full-bleed:after,.fd-section--full-bleed:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:.5rem}@media(min-width:600px){.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:2rem}}@media(min-width:1440px){.fd-section--bleed .fd-section__footer,.fd-section--bleed .fd-section__header,.fd-section--full-bleed .fd-section__footer,.fd-section--full-bleed .fd-section__header{padding-inline:3rem}}.fd-section__header{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;min-height:1.5rem;padding-block:0;padding-inline:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-margin-after:1.5rem;margin-block-end:1.5rem}.fd-section__header:after,.fd-section__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__title{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapTitleColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontHeader2Size);font-weight:400;forced-color-adjust:none;line-height:normal;line-height:2rem;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-margin-after:0;margin-block-end:0}.fd-section__title:after,.fd-section__title:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__actions{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;-webkit-margin-start:auto;margin-inline-start:auto}.fd-section__actions:after,.fd-section__actions:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-section__footer{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-pack:center;-ms-flex-pack:center;justify-content:center}.fd-section__footer:after,.fd-section__footer:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group{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}.fd-form-group:after,.fd-form-group:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group--inline{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-form-group--with-spacing{gap:.625rem}.fd-form-group__header{border:0;-webkit-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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);border-bottom:var(--sapGroup_TitleBorderWidth) solid var(--sapGroup_TitleBorderColor);box-sizing:border-box;min-height:var(--sapElement_LineHeight);padding-inline:var(--fdFormGroupPaddingInline,1rem);width:100%}.fd-form-group__header:after,.fd-form-group__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header--no-padding{--fdFormGroupPaddingInline:0}.fd-form-group__header--no-border{border-bottom:none}.fd-form-group__header-text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-group__header-text:after,.fd-form-group__header-text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-group__header-text--wrap{overflow:visible;text-overflow:clip;white-space:normal}.fd-form-header{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-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapGroup_TitleBackground);-webkit-box-shadow:0 var(--fdFormHeader_Border_Width) 0 var(--sapGroup_TitleBorderColor);box-shadow:0 var(--fdFormHeader_Border_Width) 0 var(--sapGroup_TitleBorderColor);height:var(--sapElement_LineHeight);padding-inline:1rem;width:100%}.fd-form-header:after,.fd-form-header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-form-header__text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);font-family:var(--sapFontFamily);font-family:var(--sapFontHeaderFamily);font-size:var(--sapFontSize);font-size:var(--sapGroup_Title_FontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:ellipsis;white-space:nowrap}.fd-form-header__text:after,.fd-form-header__text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}fdp-form-group{display:block}fdp-form-group .fd-form-group{display:block}fdp-form-group .fd-form-group.fd-form-group--inline{display:flex;flex-wrap:wrap;justify-content:flex-start}fdp-form-group .fd-form-group__header{padding-inline:1rem}fdp-form-group .fd-row:empty{display:none}fdp-form-group .fd-form-group__header{margin-block-start:1rem}.fd-form-label{overflow:hidden}\n/*! Bundled license information:\n\nfundamental-styles/dist/form-header.css:\n (*!\n * Fundamental Library Styles v0.41.8\n * Copyright (c) 2026 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"] }]
|
|
7433
|
+
}], ctorParameters: () => [], propDecorators: { id: [{
|
|
7366
7434
|
type: Input
|
|
7367
|
-
}],
|
|
7435
|
+
}], name: [{
|
|
7368
7436
|
type: Input
|
|
7369
|
-
}],
|
|
7437
|
+
}], editable: [{
|
|
7370
7438
|
type: Input
|
|
7371
|
-
}],
|
|
7439
|
+
}], noLabelLayout: [{
|
|
7372
7440
|
type: Input
|
|
7373
|
-
}],
|
|
7441
|
+
}], class: [{
|
|
7374
7442
|
type: Input
|
|
7375
|
-
}],
|
|
7443
|
+
}], hint: [{
|
|
7376
7444
|
type: Input
|
|
7377
|
-
}],
|
|
7445
|
+
}], inlineColumnLayout: [{
|
|
7378
7446
|
type: Input
|
|
7379
|
-
}],
|
|
7447
|
+
}], labelColumnLayout: [{
|
|
7380
7448
|
type: Input
|
|
7381
|
-
}],
|
|
7449
|
+
}], fieldColumnLayout: [{
|
|
7382
7450
|
type: Input
|
|
7383
|
-
}],
|
|
7451
|
+
}], gapColumnLayout: [{
|
|
7384
7452
|
type: Input
|
|
7385
|
-
}],
|
|
7453
|
+
}], formGroup: [{
|
|
7386
7454
|
type: Input
|
|
7387
|
-
}],
|
|
7455
|
+
}], topTitle: [{
|
|
7388
7456
|
type: Input
|
|
7389
|
-
}],
|
|
7457
|
+
}], mainTitle: [{
|
|
7390
7458
|
type: Input
|
|
7391
|
-
}],
|
|
7459
|
+
}], hideMainTItle: [{
|
|
7392
7460
|
type: Input
|
|
7393
|
-
}],
|
|
7461
|
+
}], object: [{
|
|
7394
7462
|
type: Input
|
|
7395
|
-
}],
|
|
7463
|
+
}], i18Strings: [{
|
|
7396
7464
|
type: Input
|
|
7397
|
-
}],
|
|
7465
|
+
}], useForm: [{
|
|
7466
|
+
type: Input,
|
|
7467
|
+
args: [{ transform: booleanAttribute }]
|
|
7468
|
+
}], columnLayout: [{
|
|
7398
7469
|
type: Input
|
|
7399
|
-
}],
|
|
7470
|
+
}], unifiedLayout: [{
|
|
7400
7471
|
type: Input
|
|
7401
|
-
}],
|
|
7402
|
-
type: Output
|
|
7403
|
-
}], activeViewChange: [{
|
|
7404
|
-
type: Output
|
|
7405
|
-
}], datetimeChange: [{
|
|
7406
|
-
type: Output
|
|
7407
|
-
}], onClose: [{
|
|
7472
|
+
}], onSubmit: [{
|
|
7408
7473
|
type: Output
|
|
7409
|
-
}],
|
|
7410
|
-
type: ViewChild,
|
|
7411
|
-
args: [DatetimePickerComponent]
|
|
7412
|
-
}], _elRef: [{
|
|
7413
|
-
type: ViewChild,
|
|
7414
|
-
args: [DatetimePickerComponent, { static: true, read: ElementRef }]
|
|
7415
|
-
}], _control: [{
|
|
7474
|
+
}], nativeForm: [{
|
|
7416
7475
|
type: ViewChild,
|
|
7417
|
-
args: [
|
|
7418
|
-
}],
|
|
7419
|
-
type:
|
|
7476
|
+
args: ['nativeForm', { read: NgForm }]
|
|
7477
|
+
}], i18Template: [{
|
|
7478
|
+
type: ContentChild,
|
|
7479
|
+
args: ['i18n', { static: true }]
|
|
7480
|
+
}], formGroupChildren: [{
|
|
7481
|
+
type: ContentChildren,
|
|
7482
|
+
args: [FORM_GROUP_CHILD_FIELD_TOKEN, { descendants: true }]
|
|
7483
|
+
}], _errorDirectives: [{
|
|
7484
|
+
type: ContentChildren,
|
|
7485
|
+
args: [FormFieldErrorDirective]
|
|
7420
7486
|
}] } });
|
|
7421
7487
|
|
|
7488
|
+
const EXPORTABLE_DECLARATIONS = [
|
|
7489
|
+
FormGroupComponent,
|
|
7490
|
+
FormFieldComponent,
|
|
7491
|
+
InputMessageGroupWithTemplate,
|
|
7492
|
+
FormFieldGroupComponent,
|
|
7493
|
+
FormFieldControlExtrasComponent,
|
|
7494
|
+
FormGroupHeaderComponent,
|
|
7495
|
+
FieldGroupRowValuePipe,
|
|
7496
|
+
FormFieldErrorDirective,
|
|
7497
|
+
FormFieldErrorHeadingDirective,
|
|
7498
|
+
FormFieldErrorDescriptionDirective
|
|
7499
|
+
];
|
|
7422
7500
|
/**
|
|
7423
7501
|
* @deprecated
|
|
7424
7502
|
* Use direct imports of components and directives.
|
|
7425
7503
|
*/
|
|
7426
|
-
class
|
|
7427
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
7428
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type:
|
|
7429
|
-
|
|
7504
|
+
class FdpFormGroupModule {
|
|
7505
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FdpFormGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7506
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.5", ngImport: i0, type: FdpFormGroupModule, imports: [FormGroupComponent,
|
|
7507
|
+
FormFieldComponent,
|
|
7508
|
+
InputMessageGroupWithTemplate,
|
|
7509
|
+
FormFieldGroupComponent,
|
|
7510
|
+
FormFieldControlExtrasComponent,
|
|
7511
|
+
FormGroupHeaderComponent,
|
|
7512
|
+
FieldGroupRowValuePipe,
|
|
7513
|
+
FormFieldErrorDirective,
|
|
7514
|
+
FormFieldErrorHeadingDirective,
|
|
7515
|
+
FormFieldErrorDescriptionDirective], exports: [FormGroupComponent,
|
|
7516
|
+
FormFieldComponent,
|
|
7517
|
+
InputMessageGroupWithTemplate,
|
|
7518
|
+
FormFieldGroupComponent,
|
|
7519
|
+
FormFieldControlExtrasComponent,
|
|
7520
|
+
FormGroupHeaderComponent,
|
|
7521
|
+
FieldGroupRowValuePipe,
|
|
7522
|
+
FormFieldErrorDirective,
|
|
7523
|
+
FormFieldErrorHeadingDirective,
|
|
7524
|
+
FormFieldErrorDescriptionDirective] }); }
|
|
7525
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FdpFormGroupModule, imports: [FormGroupComponent,
|
|
7526
|
+
FormFieldComponent,
|
|
7527
|
+
InputMessageGroupWithTemplate,
|
|
7528
|
+
FormGroupHeaderComponent] }); }
|
|
7430
7529
|
}
|
|
7431
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type:
|
|
7530
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: FdpFormGroupModule, decorators: [{
|
|
7432
7531
|
type: NgModule,
|
|
7433
7532
|
args: [{
|
|
7434
|
-
imports: [
|
|
7435
|
-
exports: [
|
|
7533
|
+
imports: [...EXPORTABLE_DECLARATIONS],
|
|
7534
|
+
exports: [...EXPORTABLE_DECLARATIONS]
|
|
7436
7535
|
}]
|
|
7437
7536
|
}] });
|
|
7438
7537
|
|
|
7439
|
-
const defaultFormGeneratorHintOptions = {
|
|
7440
|
-
placement: 'right',
|
|
7441
|
-
position: 'after',
|
|
7442
|
-
trigger: [
|
|
7443
|
-
{ trigger: 'mouseenter', openAction: true, closeAction: false },
|
|
7444
|
-
{ trigger: 'mouseleave', openAction: false, closeAction: true },
|
|
7445
|
-
{ trigger: 'focusin', openAction: true, closeAction: false },
|
|
7446
|
-
{ trigger: 'focusout', openAction: false, closeAction: true }
|
|
7447
|
-
],
|
|
7448
|
-
glyph: 'hint',
|
|
7449
|
-
target: 'auto'
|
|
7450
|
-
};
|
|
7451
|
-
|
|
7452
|
-
/**
|
|
7453
|
-
* @description
|
|
7454
|
-
* Structural directive, which hides current form item and toggles validation rules for it.
|
|
7455
|
-
*/
|
|
7456
|
-
class DynamicFormControlFieldDirective {
|
|
7457
|
-
/**
|
|
7458
|
-
* @description Form control instance.
|
|
7459
|
-
*/
|
|
7460
|
-
set fdpDynamicFormControlField(value) {
|
|
7461
|
-
this._control = value;
|
|
7462
|
-
this._originalValidators = this._control.formItem.validators;
|
|
7463
|
-
this._originalAsyncValidators = this._control.formItem.asyncValidators;
|
|
7464
|
-
this._updateView();
|
|
7465
|
-
}
|
|
7466
|
-
/**
|
|
7467
|
-
* @description boolean flag representing if current item should be shown.
|
|
7468
|
-
*/
|
|
7469
|
-
set fdpDynamicFormControlFieldShow(value) {
|
|
7470
|
-
this.shouldShowFormItem = value;
|
|
7471
|
-
this._updateView();
|
|
7472
|
-
}
|
|
7473
|
-
/** @hidden */
|
|
7474
|
-
constructor(_templateRef, _viewContainer) {
|
|
7475
|
-
this._templateRef = _templateRef;
|
|
7476
|
-
this._viewContainer = _viewContainer;
|
|
7477
|
-
/**
|
|
7478
|
-
* @hidden
|
|
7479
|
-
*/
|
|
7480
|
-
this._componentRemoved = true;
|
|
7481
|
-
}
|
|
7482
|
-
/** @hidden */
|
|
7483
|
-
ngOnInit() {
|
|
7484
|
-
this._updateView();
|
|
7485
|
-
}
|
|
7486
|
-
/**
|
|
7487
|
-
* @description If false, validation will be skipped from the form item control
|
|
7488
|
-
*/
|
|
7489
|
-
set shouldShowFormItem(value) {
|
|
7490
|
-
if (value === this._shouldShowFormItem) {
|
|
7491
|
-
return;
|
|
7492
|
-
}
|
|
7493
|
-
this._shouldShowFormItem = value;
|
|
7494
|
-
if (!value) {
|
|
7495
|
-
this._control.clearValidators();
|
|
7496
|
-
this._control.clearAsyncValidators();
|
|
7497
|
-
}
|
|
7498
|
-
else {
|
|
7499
|
-
this._control.setValidators(this._originalValidators ?? []);
|
|
7500
|
-
this._control.setAsyncValidators(this._originalAsyncValidators ?? []);
|
|
7501
|
-
}
|
|
7502
|
-
this._control.updateValueAndValidity({ emitEvent: false });
|
|
7503
|
-
}
|
|
7504
|
-
/** @hidden */
|
|
7505
|
-
_updateView() {
|
|
7506
|
-
if (this._shouldShowFormItem && this._componentRemoved) {
|
|
7507
|
-
this._viewContainer.createEmbeddedView(this._templateRef);
|
|
7508
|
-
this._componentRemoved = false;
|
|
7509
|
-
}
|
|
7510
|
-
else if (!this._shouldShowFormItem) {
|
|
7511
|
-
this._viewContainer.clear();
|
|
7512
|
-
this._componentRemoved = true;
|
|
7513
|
-
}
|
|
7514
|
-
}
|
|
7515
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DynamicFormControlFieldDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7516
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: DynamicFormControlFieldDirective, isStandalone: true, selector: "[fdpDynamicFormControlField]", inputs: { fdpDynamicFormControlField: "fdpDynamicFormControlField", fdpDynamicFormControlFieldShow: "fdpDynamicFormControlFieldShow" }, ngImport: i0 }); }
|
|
7517
|
-
}
|
|
7518
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DynamicFormControlFieldDirective, decorators: [{
|
|
7519
|
-
type: Directive,
|
|
7520
|
-
args: [{
|
|
7521
|
-
selector: '[fdpDynamicFormControlField]',
|
|
7522
|
-
standalone: true
|
|
7523
|
-
}]
|
|
7524
|
-
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { fdpDynamicFormControlField: [{
|
|
7525
|
-
type: Input
|
|
7526
|
-
}], fdpDynamicFormControlFieldShow: [{
|
|
7527
|
-
type: Input
|
|
7528
|
-
}] } });
|
|
7529
|
-
|
|
7530
7538
|
const FDP_FORM_GENERATOR_DEFAULT_HINT_OPTIONS = new InjectionToken('Default options for form-generator hint', {
|
|
7531
7539
|
factory: () => defaultFormGeneratorHintOptions
|
|
7532
7540
|
});
|