@quadrel-enterprise-ui/framework 20.11.0 → 20.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, Directive, InjectionToken, HostBinding, Input, ViewEncapsulation, Component, Injectable, Injector, HostListener, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, NgModule, EventEmitter, Output, Renderer2, Pipe, ViewContainerRef, NO_ERRORS_SCHEMA, SecurityContext, NgZone, ViewChildren, forwardRef, DestroyRef, ContentChildren, ContentChild, QueryList, CUSTOM_ELEMENTS_SCHEMA, provideAppInitializer, TemplateRef } from '@angular/core';
|
|
2
|
+
import { inject, ElementRef, Directive, InjectionToken, HostBinding, Input, ViewEncapsulation, Component, Injectable, Injector, HostListener, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, NgModule, EventEmitter, Output, Renderer2, Pipe, ViewContainerRef, NO_ERRORS_SCHEMA, SecurityContext, NgZone, ViewChildren, forwardRef, DestroyRef, ContentChildren, ContentChild, isDevMode, QueryList, CUSTOM_ELEMENTS_SCHEMA, provideAppInitializer, TemplateRef } from '@angular/core';
|
|
3
3
|
import { Dialog, DialogRef, DialogModule } from '@angular/cdk/dialog';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
5
|
import { CommonModule, NgFor, NgIf, NgClass, NgTemplateOutlet, AsyncPipe } from '@angular/common';
|
|
@@ -52,7 +52,7 @@ class QdButtonLinkDirective {
|
|
|
52
52
|
ngOnInit() {
|
|
53
53
|
// TODO: Delete directive "qd-button-link" in Version 21
|
|
54
54
|
if (this._elementRef.nativeElement.attributes.hasOwnProperty('qd-button-link')) {
|
|
55
|
-
console.warn('
|
|
55
|
+
console.warn('Quadrel Framework | QdButtonLink - The directive "qd-button-link" is deprecated. Please use "qdButtonLink" instead.');
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdButtonLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -649,7 +649,7 @@ class QdIconComponent {
|
|
|
649
649
|
this.iconCode = icon.htmlEntity;
|
|
650
650
|
}
|
|
651
651
|
if (!icon) {
|
|
652
|
-
console.error(`
|
|
652
|
+
console.error(`Quadrel Framework | QdIcon - "${this.icon}" does not appear to be a valid Quadrel Icon. Please check documentation for available icons.`);
|
|
653
653
|
}
|
|
654
654
|
}
|
|
655
655
|
insertIconSvgOnce() {
|
|
@@ -698,7 +698,7 @@ class QdSnackbarService {
|
|
|
698
698
|
if (this.isPausing)
|
|
699
699
|
return;
|
|
700
700
|
if (!this._overlayRef) {
|
|
701
|
-
console.error('
|
|
701
|
+
console.error('Quadrel Framework | QdNotifications - You are trying to open a notification as snackbar but there is no Snackbar Listener initialized.');
|
|
702
702
|
return;
|
|
703
703
|
}
|
|
704
704
|
this._notificationsSubject.next([...this._notificationsSubject.value, notification]);
|
|
@@ -916,7 +916,7 @@ class QdNotificationsService {
|
|
|
916
916
|
return;
|
|
917
917
|
if (this.zeroToInfinity(snackbarNotificationLifeTime) >
|
|
918
918
|
this.zeroToInfinity(this.getNotificationLifeTime(notification))) {
|
|
919
|
-
console.warn('The life time of the snackbar notification must be shorter than the life time of the main notification.');
|
|
919
|
+
console.warn('Quadrel Framework | QdNotifications - The life time of the snackbar notification must be shorter than the life time of the main notification.');
|
|
920
920
|
return;
|
|
921
921
|
}
|
|
922
922
|
setTimeout(() => this.snackbarService.close(notification.uuid), snackbarNotificationLifeTime * 1000);
|
|
@@ -926,7 +926,7 @@ class QdNotificationsService {
|
|
|
926
926
|
if (osNotificationLifeTime === undefined)
|
|
927
927
|
return;
|
|
928
928
|
if (this.zeroToInfinity(osNotificationLifeTime) > this.zeroToInfinity(this.getNotificationLifeTime(notification))) {
|
|
929
|
-
console.warn('The life time of the OS notification must be shorter than the life time of the main notification.');
|
|
929
|
+
console.warn('Quadrel Framework | QdNotifications - The life time of the OS notification must be shorter than the life time of the main notification.');
|
|
930
930
|
return;
|
|
931
931
|
}
|
|
932
932
|
setTimeout(() => this.osNotificationsService.close(notification.uuid), osNotificationLifeTime * 1000);
|
|
@@ -1046,7 +1046,7 @@ class QdButtonComponent {
|
|
|
1046
1046
|
ngOnInit() {
|
|
1047
1047
|
// TODO: Delete directive "qd-button" in Version 20
|
|
1048
1048
|
if (this._elementRef.nativeElement.attributes.hasOwnProperty('qd-button')) {
|
|
1049
|
-
console.warn('
|
|
1049
|
+
console.warn('Quadrel Framework | QdButton - The directive "qd-button" is deprecated. Please use "qdButton" instead.');
|
|
1050
1050
|
}
|
|
1051
1051
|
}
|
|
1052
1052
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -1265,7 +1265,7 @@ class QdDialogService {
|
|
|
1265
1265
|
this.clearPageDialogCanCloseForce();
|
|
1266
1266
|
this.updateDialogData(data);
|
|
1267
1267
|
if (!this.pageDialogHost)
|
|
1268
|
-
throw new Error('
|
|
1268
|
+
throw new Error('Quadrel Framework | QdDialog - Page dialog host component is not provided.');
|
|
1269
1269
|
this.open(this.pageDialogHost, { dialogSize: QdDialogSize.FullWidth });
|
|
1270
1270
|
this.navigateInsideDialog(routePath || this.getFirstDialogOutletRoutePathOrThrow());
|
|
1271
1271
|
}
|
|
@@ -1326,7 +1326,7 @@ class QdDialogService {
|
|
|
1326
1326
|
getFirstDialogOutletRoutePathOrThrow() {
|
|
1327
1327
|
const firstDialogOutletRoutePath = this.router.config.find(route => route.outlet === 'dialog')?.path;
|
|
1328
1328
|
if (!firstDialogOutletRoutePath || this.hasRoutePathParameters(firstDialogOutletRoutePath)) {
|
|
1329
|
-
throw new Error('
|
|
1329
|
+
throw new Error('Quadrel Framework | QdDialog - Please provide a route for the openPageDialogWithBreadcrumbs method. ' +
|
|
1330
1330
|
'The main dialog route could not be determined automatically.');
|
|
1331
1331
|
}
|
|
1332
1332
|
return firstDialogOutletRoutePath;
|
|
@@ -1368,7 +1368,7 @@ class QdIconButtonComponent {
|
|
|
1368
1368
|
ngOnInit() {
|
|
1369
1369
|
// TODO: Delete directive "qd-icon-button" in Version 15
|
|
1370
1370
|
if (this._elementRef.nativeElement.attributes.hasOwnProperty('qd-icon-button')) {
|
|
1371
|
-
console.warn('
|
|
1371
|
+
console.warn('Quadrel Framework | QdIconButton - The directive "qd-icon-button" is deprecated. Please use "qdIconButton" instead.');
|
|
1372
1372
|
}
|
|
1373
1373
|
}
|
|
1374
1374
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdIconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -6690,7 +6690,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
6690
6690
|
class QdProjectionGuardComponent {
|
|
6691
6691
|
elementRef = inject(ElementRef);
|
|
6692
6692
|
isDisabled = false;
|
|
6693
|
-
warningMessage = '
|
|
6693
|
+
warningMessage = 'Quadrel Framework | QdProjectionGuard - This content is not supported and cannot be displayed:';
|
|
6694
6694
|
wildcardSlot;
|
|
6695
6695
|
ngAfterContentInit() {
|
|
6696
6696
|
if (this.isDisabled)
|
|
@@ -7100,10 +7100,10 @@ class QdPushEventsService {
|
|
|
7100
7100
|
this._listeners = [];
|
|
7101
7101
|
}
|
|
7102
7102
|
logWarn(message) {
|
|
7103
|
-
console.warn(`
|
|
7103
|
+
console.warn(`Quadrel Framework | QdPushEvents - ${message}`);
|
|
7104
7104
|
}
|
|
7105
7105
|
logError(message, err) {
|
|
7106
|
-
console.error(`
|
|
7106
|
+
console.error(`Quadrel Framework | QdPushEvents - ${message}`, err);
|
|
7107
7107
|
}
|
|
7108
7108
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPushEventsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
7109
7109
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPushEventsService, providedIn: 'root' });
|
|
@@ -7180,7 +7180,7 @@ class QdTooltipOnClickDirective {
|
|
|
7180
7180
|
truncateText(text) {
|
|
7181
7181
|
if (text.length <= MAX_TOOLTIP_CHARACTER)
|
|
7182
7182
|
return text.trim();
|
|
7183
|
-
console.warn(`
|
|
7183
|
+
console.warn(`Quadrel Framework | QdTooltip - Tooltip content exceeds ${MAX_TOOLTIP_CHARACTER} characters. It will be truncated.`);
|
|
7184
7184
|
return `${text.substring(0, MAX_TOOLTIP_CHARACTER).trim()}...`;
|
|
7185
7185
|
}
|
|
7186
7186
|
translate(key) {
|
|
@@ -7871,7 +7871,7 @@ class QdAutofocusDirective {
|
|
|
7871
7871
|
if (!this.qdAutofocus)
|
|
7872
7872
|
return;
|
|
7873
7873
|
if (this.autofocusService.isAutofocusActivated) {
|
|
7874
|
-
console.warn('
|
|
7874
|
+
console.warn('Quadrel Framework | QdAutofocus - "hasAutofocus" can be used only once.');
|
|
7875
7875
|
return;
|
|
7876
7876
|
}
|
|
7877
7877
|
this.autofocusService.isAutofocusActivated = true;
|
|
@@ -8194,7 +8194,7 @@ class QdEventBrokerService {
|
|
|
8194
8194
|
}
|
|
8195
8195
|
consume(topic) {
|
|
8196
8196
|
if (!this._topics.has(topic)) {
|
|
8197
|
-
console.warn(`
|
|
8197
|
+
console.warn(`Quadrel Framework | QdEventBroker - Topic "${topic}" does not exist.`);
|
|
8198
8198
|
return EMPTY;
|
|
8199
8199
|
}
|
|
8200
8200
|
return this._topics.get(topic).pipe(filter(event => event.payload != null), distinctUntilChanged((prev, curr) => isEqual(prev, curr)), shareReplay(1));
|
|
@@ -8558,11 +8558,11 @@ class QdCheckboxChipsComponent {
|
|
|
8558
8558
|
if (this.formControlName) {
|
|
8559
8559
|
this.control = this.controlContainer.control.get(this.formControlName);
|
|
8560
8560
|
if (!(this.control instanceof QdFormControl)) {
|
|
8561
|
-
console.warn('
|
|
8561
|
+
console.warn('Quadrel Framework | QdCheckboxChips - Please use the QdFormControl instead of the Angular FormControl.');
|
|
8562
8562
|
}
|
|
8563
8563
|
}
|
|
8564
8564
|
else {
|
|
8565
|
-
console.warn('
|
|
8565
|
+
console.warn('Quadrel Framework | QdCheckboxChips - Missing FormControlName directive from host element of the component.');
|
|
8566
8566
|
}
|
|
8567
8567
|
}
|
|
8568
8568
|
this._subs.add(this.actionEmitterService.hintEventEmitter$.subscribe(() => this.clickHint.emit()));
|
|
@@ -9010,7 +9010,7 @@ class QdCheckboxesComponent {
|
|
|
9010
9010
|
this.control = this.controlContainer.control.get(this.formControlName);
|
|
9011
9011
|
}
|
|
9012
9012
|
else {
|
|
9013
|
-
console.warn('
|
|
9013
|
+
console.warn('Quadrel Framework | QdCheckboxGroup - Missing FormControlName directive from host element of the component.');
|
|
9014
9014
|
}
|
|
9015
9015
|
}
|
|
9016
9016
|
this.setInitialValues();
|
|
@@ -9604,7 +9604,7 @@ class QdFormOptionsResolverRegistry {
|
|
|
9604
9604
|
return null;
|
|
9605
9605
|
const matches = this.resolvers.filter(r => r?.name === this.resolverName);
|
|
9606
9606
|
if (matches.length > 1)
|
|
9607
|
-
throw new Error(`
|
|
9607
|
+
throw new Error(`Quadrel Framework | QdForms - Multiple QdFormOptionsResolvers with the name "${this.resolverName}" found. Resolver names must be unique.`);
|
|
9608
9608
|
return matches[0] ?? null;
|
|
9609
9609
|
}
|
|
9610
9610
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdFormOptionsResolverRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -9704,9 +9704,9 @@ class QdFormOptionsService {
|
|
|
9704
9704
|
}
|
|
9705
9705
|
validateOptionsSetup(componentName) {
|
|
9706
9706
|
if (!this.hasOptions())
|
|
9707
|
-
console.warn(`
|
|
9707
|
+
console.warn(`Quadrel Framework | ${componentName} - No options defined. Either provide "options" or configure a resolver via "optionsResolverName".`);
|
|
9708
9708
|
if (this._config?.options?.length && this._resolver)
|
|
9709
|
-
console.warn(`
|
|
9709
|
+
console.warn(`Quadrel Framework | ${componentName} - Config key "options" ignored because QD_FORM_OPTIONS_RESOLVER is configured.`);
|
|
9710
9710
|
}
|
|
9711
9711
|
load(value) {
|
|
9712
9712
|
if (value === this._lastLoadedValue)
|
|
@@ -10203,7 +10203,7 @@ class QdDropdownComponent {
|
|
|
10203
10203
|
this.control = directive.control;
|
|
10204
10204
|
return;
|
|
10205
10205
|
}
|
|
10206
|
-
console.warn('
|
|
10206
|
+
console.warn('Quadrel Framework | QdDropdown - Missing FormControlName directive from host element of the component.');
|
|
10207
10207
|
}
|
|
10208
10208
|
updateConfiguration() {
|
|
10209
10209
|
this.label = getLabel(this.config);
|
|
@@ -10612,8 +10612,8 @@ class QdInputOptionsDirective extends QdPopoverOnClickDirective {
|
|
|
10612
10612
|
}
|
|
10613
10613
|
logWarningIfBothOptionsAndResolverAreUsed() {
|
|
10614
10614
|
if (this.config?.options && this.config.options.length > 0 && !!this._optionsResolver) {
|
|
10615
|
-
console.warn('
|
|
10616
|
-
'the options will be ignored
|
|
10615
|
+
console.warn('Quadrel Framework | QdInput - If both options and QD_FORM_OPTIONS_RESOLVER are used, ' +
|
|
10616
|
+
'the options will be ignored.');
|
|
10617
10617
|
}
|
|
10618
10618
|
}
|
|
10619
10619
|
closePopover() {
|
|
@@ -11051,7 +11051,7 @@ class QdInputComponent {
|
|
|
11051
11051
|
this.control = this.controlContainer.control.get(this.formControlName);
|
|
11052
11052
|
// TODO remove logic for support of angular FormControl with angular 20 update
|
|
11053
11053
|
if (!(this.control instanceof QdFormControl))
|
|
11054
|
-
console.warn('
|
|
11054
|
+
console.warn('Quadrel Framework | QdInput - Please use the QdFormControl instead of the Angular FormControl.');
|
|
11055
11055
|
}
|
|
11056
11056
|
}
|
|
11057
11057
|
this.writeValue(this.value ?? getValue(this.config));
|
|
@@ -11576,7 +11576,7 @@ class QdDatepickerComponent {
|
|
|
11576
11576
|
this.control = this.controlContainer.control.get(this.formControlName);
|
|
11577
11577
|
}
|
|
11578
11578
|
else {
|
|
11579
|
-
console.warn('
|
|
11579
|
+
console.warn('Quadrel Framework | QdDatepicker - Missing FormControlName directive from host element of the component.');
|
|
11580
11580
|
}
|
|
11581
11581
|
}
|
|
11582
11582
|
initInnerControl() {
|
|
@@ -12147,7 +12147,7 @@ class QdTranslateService {
|
|
|
12147
12147
|
else if (translatable.translation) {
|
|
12148
12148
|
translation = translatable.translation[this.translateService.currentLang || 'de'];
|
|
12149
12149
|
if (translation === undefined) {
|
|
12150
|
-
console.error(`Language "${this.translateService.currentLang}" is not implemented
|
|
12150
|
+
console.error(`Quadrel Framework | QdTranslate - Language "${this.translateService.currentLang}" is not implemented.`);
|
|
12151
12151
|
}
|
|
12152
12152
|
}
|
|
12153
12153
|
return translation || '';
|
|
@@ -12732,21 +12732,7 @@ function removeListItem(list, el) {
|
|
|
12732
12732
|
if (index > -1)
|
|
12733
12733
|
list.splice(index, 1);
|
|
12734
12734
|
}
|
|
12735
|
-
const validatorsDroppedWithOptsWarning =
|
|
12736
|
-
It looks like you're constructing using a QdFormControl with both an options argument and an
|
|
12737
|
-
validators argument. Mixing these arguments will cause your validators in the argument to be dropped.
|
|
12738
|
-
You should either put all your validators in the options object, or in separate validators
|
|
12739
|
-
arguments. For example:
|
|
12740
|
-
|
|
12741
|
-
// Using validators arguments
|
|
12742
|
-
fc = new QdFormControl(42, Validators.required, myAsyncValidator);
|
|
12743
|
-
|
|
12744
|
-
// Using AbstractControlOptions
|
|
12745
|
-
fc = new QdFormControl(42, {validators: Validators.required, asyncValidators: myAV});
|
|
12746
|
-
|
|
12747
|
-
// Do NOT mix them: validators in additional argument will be dropped!
|
|
12748
|
-
fc = new QdFormControl(42, {validators: Validators.required}, /* Oops! */ myAsyncValidator);
|
|
12749
|
-
`;
|
|
12735
|
+
const validatorsDroppedWithOptsWarning = 'Quadrel Framework | QdForms - QdFormControl received both an options object and a separate validators argument. The standalone validators argument is dropped. Pass all validators inside the options object or via the separate arguments, not both.';
|
|
12750
12736
|
|
|
12751
12737
|
function hasUnit(control) {
|
|
12752
12738
|
return control.value?.value != null && control.value?.unit != null;
|
|
@@ -13113,7 +13099,7 @@ class QdMultiInputComponent {
|
|
|
13113
13099
|
* TODO remove logic for support of [formControlName] directive and FormControl with angular 14 update
|
|
13114
13100
|
*/
|
|
13115
13101
|
set formControlName(formControlName) {
|
|
13116
|
-
console.warn('
|
|
13102
|
+
console.warn('Quadrel Framework | QdMultiInput - Please use <qd-multi-input> with the QdFormArray form control and the [formArrayName] directive.');
|
|
13117
13103
|
this._formControlName = formControlName;
|
|
13118
13104
|
}
|
|
13119
13105
|
get formControlName() {
|
|
@@ -13223,7 +13209,7 @@ class QdMultiInputComponent {
|
|
|
13223
13209
|
if (this.formArrayName) {
|
|
13224
13210
|
const formArray = this.controlContainer.control.get(this.formArrayName);
|
|
13225
13211
|
if (!formArray) {
|
|
13226
|
-
console.warn('
|
|
13212
|
+
console.warn('Quadrel Framework | QdMultiInput - No form control found for the provided [formArrayName]', this.formArrayName);
|
|
13227
13213
|
return;
|
|
13228
13214
|
}
|
|
13229
13215
|
// Updating form array programmatically from outside
|
|
@@ -13242,7 +13228,7 @@ class QdMultiInputComponent {
|
|
|
13242
13228
|
else {
|
|
13243
13229
|
// TODO remove logic for support of Angular FormControl with angular 19 update
|
|
13244
13230
|
this.formArray = this.qdFormArrayFactoryService.createQdFormArrayFromFormControl(formArray);
|
|
13245
|
-
console.warn('
|
|
13231
|
+
console.warn('Quadrel Framework | QdMultiInput - Please use <qd-multi-input> with the QdFormArray form control.');
|
|
13246
13232
|
}
|
|
13247
13233
|
this.disabled = formArray.disabled;
|
|
13248
13234
|
this._onDisabledChange = (disabled) => {
|
|
@@ -13251,7 +13237,7 @@ class QdMultiInputComponent {
|
|
|
13251
13237
|
this.formArray.registerOnDisabledChange(this._onDisabledChange);
|
|
13252
13238
|
}
|
|
13253
13239
|
else {
|
|
13254
|
-
console.warn('
|
|
13240
|
+
console.warn('Quadrel Framework | QdMultiInput - Missing [formArrayName] directive from host element of the component.');
|
|
13255
13241
|
}
|
|
13256
13242
|
}
|
|
13257
13243
|
ngOnChanges(changes) {
|
|
@@ -13777,7 +13763,7 @@ class QdPinCodeComponent {
|
|
|
13777
13763
|
this.control = this.controlContainer.control.get(this.formControlName);
|
|
13778
13764
|
}
|
|
13779
13765
|
else {
|
|
13780
|
-
console.warn('
|
|
13766
|
+
console.warn('Quadrel Framework | QdPinCode - Missing FormControlName directive from host element of the component.');
|
|
13781
13767
|
}
|
|
13782
13768
|
}
|
|
13783
13769
|
this._subs.add(this.actionEmitterService.hintEventEmitter$.subscribe(() => this.clickHint.emit()));
|
|
@@ -14237,7 +14223,7 @@ class QdRadioButtonsComponent {
|
|
|
14237
14223
|
this.control = this.controlContainer.control.get(this.formControlName);
|
|
14238
14224
|
}
|
|
14239
14225
|
else {
|
|
14240
|
-
console.warn('
|
|
14226
|
+
console.warn('Quadrel Framework | QdRadioButtons - Missing FormControlName directive from host element of the component.');
|
|
14241
14227
|
}
|
|
14242
14228
|
}
|
|
14243
14229
|
this.initRadioButtonList();
|
|
@@ -14642,7 +14628,7 @@ class QdRichtextComponent {
|
|
|
14642
14628
|
this.control = this.controlContainer.control?.get(this.formControlName) ?? undefined;
|
|
14643
14629
|
}
|
|
14644
14630
|
else {
|
|
14645
|
-
console.warn('
|
|
14631
|
+
console.warn('Quadrel Framework | QdSwitches - Missing FormControlName directive from host element of the component.');
|
|
14646
14632
|
}
|
|
14647
14633
|
}
|
|
14648
14634
|
this._subs.add(this.actionEmitterService.hintEventEmitter$.subscribe(() => this.clickHint.emit()));
|
|
@@ -14967,7 +14953,7 @@ class QdSwitchesComponent {
|
|
|
14967
14953
|
this.control = this.controlContainer.control.get(this.formControlName);
|
|
14968
14954
|
}
|
|
14969
14955
|
else {
|
|
14970
|
-
console.warn('
|
|
14956
|
+
console.warn('Quadrel Framework | QdSwitches - Missing FormControlName directive from host element of the component.');
|
|
14971
14957
|
}
|
|
14972
14958
|
}
|
|
14973
14959
|
this.switchesService.setList(this.options);
|
|
@@ -15235,11 +15221,11 @@ class QdTextareaComponent {
|
|
|
15235
15221
|
this.control = this.controlContainer.control.get(this.formControlName);
|
|
15236
15222
|
// TODO remove logic for support of angular FormControl with angular 18 update
|
|
15237
15223
|
if (!(this.control instanceof QdFormControl)) {
|
|
15238
|
-
console.warn('
|
|
15224
|
+
console.warn('Quadrel Framework | QdTextarea - Please use the QdFormControl instead of the Angular FormControl.');
|
|
15239
15225
|
}
|
|
15240
15226
|
}
|
|
15241
15227
|
else {
|
|
15242
|
-
console.warn('
|
|
15228
|
+
console.warn('Quadrel Framework | QdTextarea - Missing FormControlName directive from host element of the component.');
|
|
15243
15229
|
}
|
|
15244
15230
|
}
|
|
15245
15231
|
this.valueForView = this.value || getValue(this.config);
|
|
@@ -16296,7 +16282,7 @@ class QdButtonStackButtonComponent {
|
|
|
16296
16282
|
ngOnInit() {
|
|
16297
16283
|
// TODO: Delete directive "qd-button-stack" in Version 15
|
|
16298
16284
|
if (this._elementRef.nativeElement.attributes.hasOwnProperty('qd-button-stack')) {
|
|
16299
|
-
console.warn('
|
|
16285
|
+
console.warn('Quadrel Framework | QdButtonStack - The directive "qd-button-stack" is deprecated. Please use "qdButtonStack" instead.');
|
|
16300
16286
|
}
|
|
16301
16287
|
}
|
|
16302
16288
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdButtonStackButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -16389,7 +16375,7 @@ class QdMenuButtonComponent {
|
|
|
16389
16375
|
}
|
|
16390
16376
|
ngOnInit() {
|
|
16391
16377
|
if (!this.config)
|
|
16392
|
-
console.error('
|
|
16378
|
+
console.error('Quadrel Framework | QdMenuButton - Please provide a valid config.');
|
|
16393
16379
|
}
|
|
16394
16380
|
hasUnhiddenActions() {
|
|
16395
16381
|
return this.config?.actions?.some(action => !action.isHidden) ?? false;
|
|
@@ -16648,7 +16634,7 @@ class QdColumnAutoFillDirective {
|
|
|
16648
16634
|
}
|
|
16649
16635
|
}
|
|
16650
16636
|
logErrorMessage(message) {
|
|
16651
|
-
console.error(
|
|
16637
|
+
console.error(`Quadrel Framework | QdColumnAutoFill - ${message}`);
|
|
16652
16638
|
}
|
|
16653
16639
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdColumnAutoFillDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
16654
16640
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: QdColumnAutoFillDirective, isStandalone: false, selector: "[qdColumnAutoFill]", ngImport: i0 });
|
|
@@ -16697,7 +16683,7 @@ class QdColumnsDisableAutoFillDirective {
|
|
|
16697
16683
|
}
|
|
16698
16684
|
}
|
|
16699
16685
|
logErrorMessage(message) {
|
|
16700
|
-
console.error(
|
|
16686
|
+
console.error(`Quadrel Framework | QdColumnsDisableAutoFill - ${message}`);
|
|
16701
16687
|
}
|
|
16702
16688
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdColumnsDisableAutoFillDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
16703
16689
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: QdColumnsDisableAutoFillDirective, isStandalone: false, selector: "[qdColumnsDisableAutoFill]", ngImport: i0 });
|
|
@@ -16971,7 +16957,7 @@ class QdColumnDisableResponsiveColspansDirective {
|
|
|
16971
16957
|
}
|
|
16972
16958
|
}
|
|
16973
16959
|
logErrorMessage(message) {
|
|
16974
|
-
console.error(
|
|
16960
|
+
console.error(`Quadrel Framework | QdColumnDisableResponsiveColspans - ${message}`);
|
|
16975
16961
|
}
|
|
16976
16962
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdColumnDisableResponsiveColspansDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
16977
16963
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: QdColumnDisableResponsiveColspansDirective, isStandalone: false, selector: "[qdColumnDisableResponsiveColspans]", ngImport: i0 });
|
|
@@ -17030,7 +17016,7 @@ class QdColumnsMaxDirective {
|
|
|
17030
17016
|
}
|
|
17031
17017
|
}
|
|
17032
17018
|
logErrorMessage(message) {
|
|
17033
|
-
console.error(
|
|
17019
|
+
console.error(`Quadrel Framework | QdColumnsMax - ${message}`);
|
|
17034
17020
|
}
|
|
17035
17021
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdColumnsMaxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
17036
17022
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: QdColumnsMaxDirective, isStandalone: false, selector: "[qdColumnsMax]", inputs: { qdColumnsMax: "qdColumnsMax" }, ngImport: i0 });
|
|
@@ -17197,7 +17183,7 @@ class QdColumnBreakBeforeDirective {
|
|
|
17197
17183
|
}
|
|
17198
17184
|
}
|
|
17199
17185
|
logErrorMessage(message) {
|
|
17200
|
-
console.error(
|
|
17186
|
+
console.error(`Quadrel Framework | QdColumnBreakBefore - ${message}`);
|
|
17201
17187
|
}
|
|
17202
17188
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdColumnBreakBeforeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
17203
17189
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: QdColumnBreakBeforeDirective, isStandalone: false, selector: "[qdColumnBreakBefore]", ngImport: i0 });
|
|
@@ -17248,7 +17234,7 @@ class QdColumnNextInSameRowDirective {
|
|
|
17248
17234
|
}
|
|
17249
17235
|
if (!nextSiblingColspan) {
|
|
17250
17236
|
this.logErrorMessage('The next sibling of the element marked with qdColumnNextInSameRow ' +
|
|
17251
|
-
'has to be an element with a qdColumn directive
|
|
17237
|
+
'has to be an element with a qdColumn directive.');
|
|
17252
17238
|
}
|
|
17253
17239
|
if (nextSiblingColspan) {
|
|
17254
17240
|
this._renderer.addClass(this.element, QdColumnNextInSameRowDirective.className);
|
|
@@ -17270,7 +17256,7 @@ class QdColumnNextInSameRowDirective {
|
|
|
17270
17256
|
return QdColumnDirective.getQdColumnColspan(nextSibling);
|
|
17271
17257
|
}
|
|
17272
17258
|
logErrorMessage(message) {
|
|
17273
|
-
console.error(
|
|
17259
|
+
console.error(`Quadrel Framework | QdColumnNextInSameRow - ${message}`);
|
|
17274
17260
|
}
|
|
17275
17261
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdColumnNextInSameRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
17276
17262
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: QdColumnNextInSameRowDirective, isStandalone: false, selector: "[qdColumnNextInSameRow]", ngImport: i0 });
|
|
@@ -17320,7 +17306,7 @@ class QdColumnFullGridWidthDirective {
|
|
|
17320
17306
|
}
|
|
17321
17307
|
}
|
|
17322
17308
|
logErrorMessage(message) {
|
|
17323
|
-
console.error(
|
|
17309
|
+
console.error(`Quadrel Framework | QdColumnFullGridWidth - ${message}`);
|
|
17324
17310
|
}
|
|
17325
17311
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdColumnFullGridWidthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
17326
17312
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: QdColumnFullGridWidthDirective, isStandalone: false, selector: "[qdColumnFullGridWidth]", ngImport: i0 });
|
|
@@ -17368,7 +17354,7 @@ class QdColumnsDisableResponsiveColspansDirective {
|
|
|
17368
17354
|
}
|
|
17369
17355
|
}
|
|
17370
17356
|
logErrorMessage(message) {
|
|
17371
|
-
console.error(
|
|
17357
|
+
console.error(`Quadrel Framework | QdColumnsDisableResponsiveColspans - ${message}`);
|
|
17372
17358
|
}
|
|
17373
17359
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdColumnsDisableResponsiveColspansDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
17374
17360
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.18", type: QdColumnsDisableResponsiveColspansDirective, isStandalone: false, selector: "[qdColumnsDisableResponsiveColspans]", ngImport: i0 });
|
|
@@ -18166,7 +18152,7 @@ class QdPendingChangesGuardDirective {
|
|
|
18166
18152
|
formGroup;
|
|
18167
18153
|
constructor() {
|
|
18168
18154
|
if (!this.ngForm && !this.formGroupDirective) {
|
|
18169
|
-
console.error('
|
|
18155
|
+
console.error('Quadrel Framework | QdPendingChangesGuard - requires NgForm or FormGroupDirective to be present on the host element.');
|
|
18170
18156
|
}
|
|
18171
18157
|
}
|
|
18172
18158
|
ngOnInit() {
|
|
@@ -19341,7 +19327,7 @@ class QdFileCollectorComponent {
|
|
|
19341
19327
|
isEqual$1(config.allowedFileNamePattern, this.fileTypeService.getFileNamePattern(config.allowedFileTypes)));
|
|
19342
19328
|
}
|
|
19343
19329
|
logError(message) {
|
|
19344
|
-
console.error(`
|
|
19330
|
+
console.error(`Quadrel Framework | QdFileCollector - ${message}`);
|
|
19345
19331
|
}
|
|
19346
19332
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdFileCollectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19347
19333
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdFileCollectorComponent, isStandalone: false, selector: "qd-file-collector", inputs: { config: "config", testId: ["data-test-id", "testId"] }, providers: [QdFileCollectorService, QdFileCollectorValidationService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<button\n qdButton\n qdButtonGhost\n icon=\"plus\"\n *ngIf=\"canShowAddButton\"\n (click)=\"clickFileInput()\"\n [data-test-id]=\"testId + '-button-add-new'\"\n>\n {{ config?.standaloneAddNewLabel?.i18n || \"i18n.qd.fileCollector.standalone.addNew\" | translate }}\n</button>\n\n<input\n [disabled]=\"config?.readonly || config?.viewonly\"\n type=\"file\"\n (change)=\"handleFiles($event)\"\n #fileInput\n hidden\n multiple=\"multiple\"\n/>\n\n<qd-file-collector-allowed-files-description\n *ngIf=\"!config?.readonly && !config?.viewonly\"\n [attr.data-test-id]=\"testId + '-allowed-files-description'\"\n></qd-file-collector-allowed-files-description>\n\n<ng-container *ngFor=\"let fileUpload of this.fileUploads; let i = index\">\n <qd-file-collector-item\n *ngIf=\"!fileUpload.error && fileUpload.progress === 100\"\n [progress]=\"fileUpload.progress\"\n [newlyUploaded]=\"fileUpload.newlyUploaded\"\n [collectedFile]=\"fileUpload.collectedFile\"\n [error]=\"fileUpload.error\"\n [readonly]=\"config?.readonly\"\n [viewonly]=\"config?.viewonly\"\n [downloadFilesWithHttpClient]=\"config?.downloadFilesWithHttpClient\"\n [data-test-id]=\"testId + '-item-' + i\"\n ></qd-file-collector-item>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column}:host>.qd-button{align-self:end;margin-bottom:1.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: QdButtonComponent, selector: "button[qdButton], a[qdButton], button[qd-button]", inputs: ["disabled", "color", "icon", "data-test-id", "additionalInfo"] }, { kind: "directive", type: QdButtonGhostDirective, selector: "button[qdButtonGhost], a[qdButtonGhost]" }, { kind: "component", type: QdFileCollectorAllowedFilesDescriptionComponent, selector: "qd-file-collector-allowed-files-description" }, { kind: "component", type: QdFileCollectorItemComponent, selector: "qd-file-collector-item", inputs: ["progress", "newlyUploaded", "collectedFile", "error", "readonly", "viewonly", "downloadFilesWithHttpClient", "data-test-id"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
@@ -19582,7 +19568,7 @@ function resetCategoryFilter$1(state, categoryIndex) {
|
|
|
19582
19568
|
const isIsoTimestampValid = (isoTimestamp) => {
|
|
19583
19569
|
const valid = new RegExp(/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d((:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|([+-][0-2]\d:[0-5]\d|Z))/).test(isoTimestamp);
|
|
19584
19570
|
if (!valid && isoTimestamp !== '') {
|
|
19585
|
-
console.warn('
|
|
19571
|
+
console.warn('Quadrel Framework | QdFilter - The given ISO 8601 date string is not valid.');
|
|
19586
19572
|
}
|
|
19587
19573
|
return valid;
|
|
19588
19574
|
};
|
|
@@ -19694,7 +19680,7 @@ function validateFilterSelection(filterSelection, filterCategories, selectionSou
|
|
|
19694
19680
|
Object.keys(filterSelection).forEach(selectionCategory => {
|
|
19695
19681
|
const categoryInFilter = filterCategories.find(category => category.category === selectionCategory);
|
|
19696
19682
|
if (!categoryInFilter) {
|
|
19697
|
-
console.warn(`The category "${selectionCategory}" that is given in the ${selectionSource} is not part of the filter
|
|
19683
|
+
console.warn(`Quadrel Framework | QdFilter - The category "${selectionCategory}" that is given in the ${selectionSource} is not part of the filter.`);
|
|
19698
19684
|
return;
|
|
19699
19685
|
}
|
|
19700
19686
|
switch (categoryInFilter.type) {
|
|
@@ -19704,8 +19690,8 @@ function validateFilterSelection(filterSelection, filterCategories, selectionSou
|
|
|
19704
19690
|
const items = categoryInFilter.items;
|
|
19705
19691
|
filterSelection[selectionCategory].forEach(selectionItem => {
|
|
19706
19692
|
if (!items.some(item => item.item === selectionItem)) {
|
|
19707
|
-
console.warn(`The item "${selectionItem}" that is given in the ${selectionSource} ` +
|
|
19708
|
-
`is not contained in the filter category "${selectionCategory}"
|
|
19693
|
+
console.warn(`Quadrel Framework | QdFilter - The item "${selectionItem}" that is given in the ${selectionSource} ` +
|
|
19694
|
+
`is not contained in the filter category "${selectionCategory}".`);
|
|
19709
19695
|
}
|
|
19710
19696
|
});
|
|
19711
19697
|
break;
|
|
@@ -19715,7 +19701,7 @@ function validateFilterSelection(filterSelection, filterCategories, selectionSou
|
|
|
19715
19701
|
case 'dateTimeRange':
|
|
19716
19702
|
filterSelection[selectionCategory].forEach((selectionItem, itemIndex) => {
|
|
19717
19703
|
if (selectionItem !== '' && isNaN(Date.parse(selectionItem))) {
|
|
19718
|
-
console.error(`The given ${selectionSource} contains an invalid date for the category "${selectionCategory}"
|
|
19704
|
+
console.error(`Quadrel Framework | QdFilter - The given ${selectionSource} contains an invalid date for the category "${selectionCategory}".`);
|
|
19719
19705
|
filterSelection[selectionCategory][itemIndex] = '';
|
|
19720
19706
|
}
|
|
19721
19707
|
});
|
|
@@ -19727,7 +19713,7 @@ function validateFilterSelection(filterSelection, filterCategories, selectionSou
|
|
|
19727
19713
|
const initialState$2 = {};
|
|
19728
19714
|
const _filterReducer = createReducer(initialState$2, on(QdFilterActions.initFilterState, (state, { filterId, filterData }) => {
|
|
19729
19715
|
if (filterData === undefined || filterData.categories.length === 0) {
|
|
19730
|
-
console.warn('
|
|
19716
|
+
console.warn('Quadrel Framework | QdFilter - The "filterData" input is invalid. To use this input, please read the documentation.');
|
|
19731
19717
|
return state;
|
|
19732
19718
|
}
|
|
19733
19719
|
return updateStateWithNewFilter(state, filterId, createFilterState(filterData));
|
|
@@ -19767,7 +19753,7 @@ const _filterReducer = createReducer(initialState$2, on(QdFilterActions.initFilt
|
|
|
19767
19753
|
}), on(QdFilterActions.updateCategoryTranslation, (state, { filterId, filterData }) => {
|
|
19768
19754
|
const newFilter = getNewFilter(state, filterId);
|
|
19769
19755
|
if (filterData === undefined || filterData.categories.length === 0) {
|
|
19770
|
-
console.warn('
|
|
19756
|
+
console.warn('Quadrel Framework | QdFilter - The "filterData" input is invalid. To use this input, please read the documentation.');
|
|
19771
19757
|
return state;
|
|
19772
19758
|
}
|
|
19773
19759
|
newFilter.categories.forEach((_category, i) => {
|
|
@@ -20963,7 +20949,7 @@ class QdFilterRouterConnectorService {
|
|
|
20963
20949
|
return of(false);
|
|
20964
20950
|
}
|
|
20965
20951
|
if (this._connectedFilter) {
|
|
20966
|
-
console.error('
|
|
20952
|
+
console.error('Quadrel Framework | QdFilter - More than one filter with enabled "connectWithRouter" config is not allowed. ' +
|
|
20967
20953
|
'Please set connectWithRouter to false except for one filter.');
|
|
20968
20954
|
return of(false);
|
|
20969
20955
|
}
|
|
@@ -21251,7 +21237,7 @@ class QdFilterComponent {
|
|
|
21251
21237
|
}
|
|
21252
21238
|
validateConfig() {
|
|
21253
21239
|
if (this.filterData?.outputLegacyQueryStringFormat !== false && this.queryStringOutput.observers.length > 0) {
|
|
21254
|
-
console.warn('
|
|
21240
|
+
console.warn('Quadrel Framework | QdFilter - You use the "queryStringOutput" with the legacy format. To use the new format please set "outputLegacyQueryStringFormat" to false. The legacy format will be removed in future releases.');
|
|
21255
21241
|
}
|
|
21256
21242
|
}
|
|
21257
21243
|
init() {
|
|
@@ -21938,9 +21924,9 @@ class NavigationTileComponent {
|
|
|
21938
21924
|
}
|
|
21939
21925
|
validate() {
|
|
21940
21926
|
if (!this.title)
|
|
21941
|
-
console.error('
|
|
21927
|
+
console.error('Quadrel Framework | QdNavigationTile - You should provide a title.');
|
|
21942
21928
|
if (!this.icon)
|
|
21943
|
-
console.error('
|
|
21929
|
+
console.error('Quadrel Framework | QdNavigationTile - You should provide an icon.');
|
|
21944
21930
|
}
|
|
21945
21931
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: NavigationTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21946
21932
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: NavigationTileComponent, isStandalone: false, selector: "a[qd-navigation-tile]", inputs: { title: "title", icon: "icon" }, ngImport: i0, template: "<qd-icon *ngIf=\"icon\" [icon]=\"icon\"></qd-icon>\n<small>{{ title | translate }}</small>\n", styles: [":host{display:block;height:10rem;align-items:unset;padding:.75rem;border:1px solid rgb(213,213,213);background-color:#fff;color:unset;line-height:unset;text-align:unset;text-decoration:unset}qd-icon{display:block;margin-bottom:2.8125rem;font-size:2rem}small{color:#171717;font-size:14px;font-weight:500;line-height:20px;text-wrap:normal}@media (min-width: 1280px){small{font-size:1rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
@@ -22038,7 +22024,7 @@ class QdSearchRouterConnectorService {
|
|
|
22038
22024
|
return of(false);
|
|
22039
22025
|
}
|
|
22040
22026
|
if (this._connectedSearch) {
|
|
22041
|
-
console.error('
|
|
22027
|
+
console.error('Quadrel Framework | QdSearch - More than one search with enabled "connectWithRouter" config is not allowed. ' +
|
|
22042
22028
|
'Please set connectWithRouter to false except for one search.');
|
|
22043
22029
|
return of(false);
|
|
22044
22030
|
}
|
|
@@ -22493,7 +22479,7 @@ class QdContextService {
|
|
|
22493
22479
|
setValue(contextId, selection) {
|
|
22494
22480
|
const index = this._configuredContexts.value.findIndex(context => context.id === contextId);
|
|
22495
22481
|
if (index < 0)
|
|
22496
|
-
throw new Error(`
|
|
22482
|
+
throw new Error(`Quadrel Framework | QdContext - Cannot set value of unconfigured context ${contextId}`);
|
|
22497
22483
|
this._values.next([
|
|
22498
22484
|
...this._values.value.filter(value => value.contextId !== contextId),
|
|
22499
22485
|
{ contextId, value: selection }
|
|
@@ -23131,7 +23117,7 @@ class QdTableResolverService {
|
|
|
23131
23117
|
refresh(resolverOptions = {}) {
|
|
23132
23118
|
const resolver = this.tableDataResolver;
|
|
23133
23119
|
if (!resolver)
|
|
23134
|
-
return console.warn('
|
|
23120
|
+
return console.warn('Quadrel Framework | QdTable - Refresh skipped: resolver not provided.');
|
|
23135
23121
|
const { pageIndex } = resolverOptions;
|
|
23136
23122
|
if (this._refreshSubscription)
|
|
23137
23123
|
this._refreshSubscription.unsubscribe();
|
|
@@ -23255,7 +23241,7 @@ class QdTableResponsiveRowService {
|
|
|
23255
23241
|
const maxCurrentColumns = this.columnMapping[this._currentBreakpoint];
|
|
23256
23242
|
let columnsDefinitions = this._config.columns.map(column => column.column);
|
|
23257
23243
|
if (this.mainColumnIndex >= maxCurrentColumns) {
|
|
23258
|
-
console.warn('
|
|
23244
|
+
console.warn('Quadrel Framework | QdTable - The index of the "mainColumn" cannot be equal or greater than maximum columns for this breakpoint.');
|
|
23259
23245
|
return columnsDefinitions;
|
|
23260
23246
|
}
|
|
23261
23247
|
if (maxCurrentColumns >= columnsLength)
|
|
@@ -23655,10 +23641,10 @@ class QdTablePaginatorComponent {
|
|
|
23655
23641
|
}
|
|
23656
23642
|
isConfigValid() {
|
|
23657
23643
|
if (this.config?.hasPagination) {
|
|
23658
|
-
console.warn('
|
|
23644
|
+
console.warn('Quadrel Framework | QdTable Pagination - The config "hasPagination" is deprecated. Please use "pagination" instead.');
|
|
23659
23645
|
}
|
|
23660
23646
|
if (!this.tableDataResolver) {
|
|
23661
|
-
console.error('
|
|
23647
|
+
console.error('Quadrel Framework | QdTable Pagination - Provide a resolver for pagination. Please use the "QD_TABLE_DATA_RESOLVER_TOKEN" injection token.');
|
|
23662
23648
|
return false;
|
|
23663
23649
|
}
|
|
23664
23650
|
return true;
|
|
@@ -23952,7 +23938,7 @@ class QdTableBodyComponent {
|
|
|
23952
23938
|
}
|
|
23953
23939
|
primaryAction(rowData, index) {
|
|
23954
23940
|
if (!this.config.primaryAction?.handler)
|
|
23955
|
-
return console.warn('
|
|
23941
|
+
return console.warn('Quadrel Framework | QdTable - No handler defined for primary action.');
|
|
23956
23942
|
if (this.config.primaryAction?.highlightOnRevisit) {
|
|
23957
23943
|
this.tableStoreService.setLastVisitedRow(resolveRowIdentifier(rowData, index, this.config.trackRowBy));
|
|
23958
23944
|
}
|
|
@@ -24014,7 +24000,7 @@ class QdTableEmptyStateComponent {
|
|
|
24014
24000
|
}
|
|
24015
24001
|
getI18n() {
|
|
24016
24002
|
if (!this.emptyStateService.i18ns)
|
|
24017
|
-
console.warn('
|
|
24003
|
+
console.warn('Quadrel Framework | QdTable - No translations available.');
|
|
24018
24004
|
return this.emptyStateService.i18ns;
|
|
24019
24005
|
}
|
|
24020
24006
|
handleClick() {
|
|
@@ -24473,7 +24459,7 @@ class QdTableComponent {
|
|
|
24473
24459
|
}
|
|
24474
24460
|
registerConnector(connectorName) {
|
|
24475
24461
|
if (!this.tableDataResolver) {
|
|
24476
|
-
console.warn('
|
|
24462
|
+
console.warn('Quadrel Framework | QdTable - qdConnectToFilter only works with a resolver. Please inject the resolver using QD_TABLE_DATA_RESOLVER_TOKEN.');
|
|
24477
24463
|
return;
|
|
24478
24464
|
}
|
|
24479
24465
|
this._connectors.push({ connectorName, connectorState: QdTableConnectorState.AWAITING });
|
|
@@ -24522,7 +24508,7 @@ class QdTableComponent {
|
|
|
24522
24508
|
this.secondaryActionOutput.emit(recentAction);
|
|
24523
24509
|
const action = this.config.secondaryActions?.find(a => a.type === recentAction.type);
|
|
24524
24510
|
if (!action?.handler)
|
|
24525
|
-
return console.warn('
|
|
24511
|
+
return console.warn('Quadrel Framework | QdTable - No handler defined for secondary action:', recentAction.type);
|
|
24526
24512
|
if (action.highlightOnRevisit) {
|
|
24527
24513
|
this.tableStoreService.setLastVisitedRow(resolveRowIdentifier(recentAction.rowData, recentAction.index, this.config.trackRowBy));
|
|
24528
24514
|
}
|
|
@@ -24546,13 +24532,13 @@ class QdTableComponent {
|
|
|
24546
24532
|
if (!this.config.refreshOnPushEvent)
|
|
24547
24533
|
return;
|
|
24548
24534
|
if (!this.config.uid) {
|
|
24549
|
-
console.error('
|
|
24550
|
-
'The table uid has to match the path of the server side event.');
|
|
24535
|
+
console.error('Quadrel Framework | QdTable - A "uid" has to be defined when "refreshOnPushEvent" is enabled. ' +
|
|
24536
|
+
'The table "uid" has to match the path of the server side event.');
|
|
24551
24537
|
return;
|
|
24552
24538
|
}
|
|
24553
24539
|
if (!this.pushEventsService || !this.pushEventsService.isConnectedOrConnecting()) {
|
|
24554
|
-
console.error('
|
|
24555
|
-
'if you enable the refreshOnPushEvent flag in the table.');
|
|
24540
|
+
console.error('Quadrel Framework | QdTable - You have to connect the QdPushEventsService on your own ' +
|
|
24541
|
+
'if you enable the "refreshOnPushEvent" flag in the table.');
|
|
24556
24542
|
return;
|
|
24557
24543
|
}
|
|
24558
24544
|
const pushEventsService = this.pushEventsService;
|
|
@@ -24565,11 +24551,11 @@ class QdTableComponent {
|
|
|
24565
24551
|
return data.path.includes(this.config.uid);
|
|
24566
24552
|
}
|
|
24567
24553
|
catch (error) {
|
|
24568
|
-
console.warn('Failed to process messageEvent:', error);
|
|
24554
|
+
console.warn('Quadrel Framework | QdTable - Failed to process messageEvent:', error);
|
|
24569
24555
|
return false;
|
|
24570
24556
|
}
|
|
24571
24557
|
}), catchError(error => {
|
|
24572
|
-
console.error('Error in event stream:', error);
|
|
24558
|
+
console.error('Quadrel Framework | QdTable - Error in event stream:', error);
|
|
24573
24559
|
return NEVER;
|
|
24574
24560
|
}))
|
|
24575
24561
|
.subscribe(() => this.triggerRefresh());
|
|
@@ -24589,14 +24575,14 @@ class QdTableComponent {
|
|
|
24589
24575
|
}
|
|
24590
24576
|
validateConfig() {
|
|
24591
24577
|
if (!this.config.i18ns) {
|
|
24592
|
-
console.warn('
|
|
24578
|
+
console.warn('Quadrel Framework | QdTable - No translations available for the secondaryActions.');
|
|
24593
24579
|
}
|
|
24594
24580
|
if (this.hasHighlightOnRevisit() && !this.config.uid) {
|
|
24595
|
-
console.warn('
|
|
24581
|
+
console.warn('Quadrel Framework | QdTable - A "uid" has to be defined when "highlightOnRevisit" is enabled. ' +
|
|
24596
24582
|
'Without a uid, the table state does not persist across navigation.');
|
|
24597
24583
|
}
|
|
24598
24584
|
if (this.config.selection?.type === 'multiSelect' && this.hasPagination && !this.config.trackRowBy) {
|
|
24599
|
-
throw new Error('
|
|
24585
|
+
throw new Error('Quadrel Framework | QdTable - "trackRowBy" is required when combining "selection: multiSelect" with pagination. ' +
|
|
24600
24586
|
'Provide a trackRowBy function (e.g. `trackRowBy: row => row.uid`) that returns a unique identifier ' +
|
|
24601
24587
|
'per row, otherwise selections cannot be persisted across pages, page-size or sort changes.');
|
|
24602
24588
|
}
|
|
@@ -24612,7 +24598,7 @@ class QdTableComponent {
|
|
|
24612
24598
|
mapColumnFillsWidth() {
|
|
24613
24599
|
if (!this.config.mainColumnNotFillingWidth)
|
|
24614
24600
|
return;
|
|
24615
|
-
console.warn('
|
|
24601
|
+
console.warn('Quadrel Framework | QdTable - The config key "mainColumnNotFillingWidth" is deprecated. Please use "whichColumnFillsWidth" instead.');
|
|
24616
24602
|
if (this.config.whichColumnFillsWidth)
|
|
24617
24603
|
return;
|
|
24618
24604
|
this.config.whichColumnFillsWidth = 'none';
|
|
@@ -24865,7 +24851,7 @@ class QdConnectorTableFilterDirective {
|
|
|
24865
24851
|
constructor() {
|
|
24866
24852
|
const toolbarComponentsService = this.toolbarComponentsService;
|
|
24867
24853
|
if (!toolbarComponentsService)
|
|
24868
|
-
throw new Error('
|
|
24854
|
+
throw new Error('Quadrel Framework | QdConnectorTableFilter - Please use this directive only within <qd-section>.');
|
|
24869
24855
|
this.tableComponent.registerConnector('filter');
|
|
24870
24856
|
}
|
|
24871
24857
|
ngAfterViewInit() {
|
|
@@ -24887,7 +24873,7 @@ class QdConnectorTableFilterDirective {
|
|
|
24887
24873
|
}
|
|
24888
24874
|
validateAndApplyConfig() {
|
|
24889
24875
|
if (this.filterComponent.hasFilterData())
|
|
24890
|
-
console.error('
|
|
24876
|
+
console.error('Quadrel Framework | QdConnectorTableFilter - Please remove the redundant "filterConfig" in the "sectionConfig". Will be overridden by this directive.');
|
|
24891
24877
|
this.filterComponent.setFilterConfig({ ...this.qdConnectToFilter, emitOutputsInitially: true });
|
|
24892
24878
|
}
|
|
24893
24879
|
subscribeToFilterChanges() {
|
|
@@ -24951,7 +24937,7 @@ class QdConnectorTableSearchDirective {
|
|
|
24951
24937
|
constructor() {
|
|
24952
24938
|
const toolbarComponentsService = this.toolbarComponentsService;
|
|
24953
24939
|
if (!toolbarComponentsService)
|
|
24954
|
-
throw new Error('
|
|
24940
|
+
throw new Error('Quadrel Framework | QdConnectorTableSearch - Please use this directive only within <qd-section>.');
|
|
24955
24941
|
this.tableComponent.registerConnector('search');
|
|
24956
24942
|
}
|
|
24957
24943
|
ngAfterViewInit() {
|
|
@@ -24969,7 +24955,7 @@ class QdConnectorTableSearchDirective {
|
|
|
24969
24955
|
}
|
|
24970
24956
|
validateAndApplyConfig() {
|
|
24971
24957
|
if (this.searchComponent.hasConfigData())
|
|
24972
|
-
console.warn('
|
|
24958
|
+
console.warn('Quadrel Framework | QdConnectorTableSearch - Please remove the redundant "searchConfig" in the "sectionConfig". Will be overridden by this directive.');
|
|
24973
24959
|
this.searchComponent.configData = { emitEmptySearch: true, ...this.qdConnectToSearch };
|
|
24974
24960
|
}
|
|
24975
24961
|
subscribeToSearchChanges() {
|
|
@@ -25038,7 +25024,7 @@ class QdSectionAdapterDirective {
|
|
|
25038
25024
|
const toRemove = Array.from(host.children).filter(child => child.tagName !== 'QD-SECTION');
|
|
25039
25025
|
toRemove.forEach(el => {
|
|
25040
25026
|
this.renderer.removeChild(host, el);
|
|
25041
|
-
console.warn('
|
|
25027
|
+
console.warn('Quadrel Framework | QdSectionAdapter - Only "qd-section" is supported. The following content is not rendered:', el);
|
|
25042
25028
|
});
|
|
25043
25029
|
}
|
|
25044
25030
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdSectionAdapterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -25158,13 +25144,13 @@ class QdSectionToolbarActionComponent {
|
|
|
25158
25144
|
}
|
|
25159
25145
|
validateConfig() {
|
|
25160
25146
|
if (this._config.action) {
|
|
25161
|
-
console.warn('
|
|
25147
|
+
console.warn('Quadrel Framework | QdSection - The "action" key is deprecated and will be removed in v18. Use "actions" instead.');
|
|
25162
25148
|
}
|
|
25163
25149
|
if (this._config.action && this._config.actions) {
|
|
25164
|
-
console.error('
|
|
25150
|
+
console.error('Quadrel Framework | QdSection - Both "action" and "actions" are defined in the configuration. Please use only "actions".');
|
|
25165
25151
|
}
|
|
25166
25152
|
if (this._config.actions && this._config.actions.filter(action => action.type === 'addNew').length > 1) {
|
|
25167
|
-
console.error('
|
|
25153
|
+
console.error('Quadrel Framework | QdSection - The action type "addNew" is used multiple times in "actions". Please use "addNew" only once.');
|
|
25168
25154
|
}
|
|
25169
25155
|
}
|
|
25170
25156
|
// TODO: Remove in v19
|
|
@@ -26182,7 +26168,7 @@ class QdTreeEmptyStateComponent {
|
|
|
26182
26168
|
config;
|
|
26183
26169
|
getI18n() {
|
|
26184
26170
|
if (!this.emptyStateService.i18ns)
|
|
26185
|
-
console.warn('
|
|
26171
|
+
console.warn('Quadrel Framework | QdTree - No translations available.');
|
|
26186
26172
|
return this.emptyStateService.i18ns;
|
|
26187
26173
|
}
|
|
26188
26174
|
handleClick() {
|
|
@@ -26371,7 +26357,7 @@ class QdTreeComponent {
|
|
|
26371
26357
|
}
|
|
26372
26358
|
validateConfig() {
|
|
26373
26359
|
if (!this.config.i18ns) {
|
|
26374
|
-
console.warn('
|
|
26360
|
+
console.warn('Quadrel Framework | QdTree - No translations available for the secondaryActions.');
|
|
26375
26361
|
}
|
|
26376
26362
|
}
|
|
26377
26363
|
initializeGroupService() {
|
|
@@ -26380,7 +26366,7 @@ class QdTreeComponent {
|
|
|
26380
26366
|
}
|
|
26381
26367
|
catch (err) {
|
|
26382
26368
|
if (err instanceof QdGroupedIndicesNotConsecutiveError) {
|
|
26383
|
-
console.error('
|
|
26369
|
+
console.error('Quadrel Framework | QdTree - Non-sequential "tree" content types are not allowed.');
|
|
26384
26370
|
}
|
|
26385
26371
|
}
|
|
26386
26372
|
}
|
|
@@ -26414,7 +26400,7 @@ class QdTreeComponent {
|
|
|
26414
26400
|
this.secondaryActionOutput.emit(recentAction);
|
|
26415
26401
|
const action = this.config.secondaryActions?.find(a => a.type === recentAction.type);
|
|
26416
26402
|
if (!action?.handler)
|
|
26417
|
-
return console.warn('
|
|
26403
|
+
return console.warn('Quadrel Framework | QdTree - No handler defined for secondary action:', recentAction.type);
|
|
26418
26404
|
action.handler(recentAction);
|
|
26419
26405
|
});
|
|
26420
26406
|
}
|
|
@@ -26665,7 +26651,7 @@ class QdPageFooterService {
|
|
|
26665
26651
|
updates.forEach(({ actionKey, partialAction }) => {
|
|
26666
26652
|
const action = currentActionsMap.get(actionKey);
|
|
26667
26653
|
if (!action)
|
|
26668
|
-
return console.warn(`
|
|
26654
|
+
return console.warn(`Quadrel Framework | QdPageFooter - Action with key "${actionKey}" not found.`);
|
|
26669
26655
|
updatedActionsMap.set(actionKey, { ...action, ...partialAction });
|
|
26670
26656
|
});
|
|
26671
26657
|
this._pageFooterActions.next(updatedActionsMap);
|
|
@@ -26856,6 +26842,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
26856
26842
|
args: ['attr.class']
|
|
26857
26843
|
}] } });
|
|
26858
26844
|
|
|
26845
|
+
/**
|
|
26846
|
+
* @description Creates a replay-backed stream for pushing partial header-facet
|
|
26847
|
+
* updates into `QdPageConfig.metadata$`.
|
|
26848
|
+
*
|
|
26849
|
+
* The returned `ReplaySubject<Partial<T>>(1)` buffers the most recent emission
|
|
26850
|
+
* so late subscribers still receive the latest value. The page-header component
|
|
26851
|
+
* subscribes to `metadata$` inside its own `ngOnInit`, which runs AFTER the
|
|
26852
|
+
* consuming page component's `ngOnInit`. Consumers that emit synchronously
|
|
26853
|
+
* during their `ngOnInit` (e.g. from a `combineLatest` over already-populated
|
|
26854
|
+
* store selectors) would otherwise lose that first emission if `metadata$` were
|
|
26855
|
+
* a plain `Subject`.
|
|
26856
|
+
*
|
|
26857
|
+
* @example
|
|
26858
|
+
* ```ts
|
|
26859
|
+
* class MyPageComponent {
|
|
26860
|
+
* private metadataUpdates$ = createMetadataStream<MyObject>();
|
|
26861
|
+
*
|
|
26862
|
+
* pageConfig: QdPageConfig<MyObject> = {
|
|
26863
|
+
* // ...
|
|
26864
|
+
* metadata$: this.metadataUpdates$
|
|
26865
|
+
* };
|
|
26866
|
+
*
|
|
26867
|
+
* ngOnInit(): void {
|
|
26868
|
+
* combineLatest([this.state$, this.data$])
|
|
26869
|
+
* .pipe(map(([state, data]) => this.mapHeader(state, data)))
|
|
26870
|
+
* .subscribe(header => this.metadataUpdates$.next(header));
|
|
26871
|
+
* }
|
|
26872
|
+
* }
|
|
26873
|
+
* ```
|
|
26874
|
+
*/
|
|
26875
|
+
function createMetadataStream() {
|
|
26876
|
+
return new ReplaySubject(1);
|
|
26877
|
+
}
|
|
26878
|
+
|
|
26859
26879
|
/**
|
|
26860
26880
|
* Token for resolving page object data
|
|
26861
26881
|
*/
|
|
@@ -27151,7 +27171,7 @@ class QdDynamicFacetComponent {
|
|
|
27151
27171
|
ngOnInit() {
|
|
27152
27172
|
const facet = this.dynamicFacetsService.getFacet(this.facet.options.type);
|
|
27153
27173
|
if (!facet) {
|
|
27154
|
-
console.error('
|
|
27174
|
+
console.error('Quadrel Framework | QdPage - Facet could not be found.');
|
|
27155
27175
|
return;
|
|
27156
27176
|
}
|
|
27157
27177
|
const viewContainerRef = this.dynamicFacet.viewContainerRef;
|
|
@@ -27200,13 +27220,13 @@ class QdPageCommitActionExecutor {
|
|
|
27200
27220
|
onAfterSnapshot?.();
|
|
27201
27221
|
}
|
|
27202
27222
|
catch (err) {
|
|
27203
|
-
console.error('
|
|
27223
|
+
console.error('Quadrel Framework | QdPage - internal onAfterSnapshot hook threw after form was marked as saved.', err);
|
|
27204
27224
|
}
|
|
27205
27225
|
try {
|
|
27206
27226
|
action.onSuccess?.();
|
|
27207
27227
|
}
|
|
27208
27228
|
catch (err) {
|
|
27209
|
-
console.error('
|
|
27229
|
+
console.error('Quadrel Framework | QdPage - onSuccess callback threw after form was marked as saved.', err);
|
|
27210
27230
|
}
|
|
27211
27231
|
});
|
|
27212
27232
|
};
|
|
@@ -27225,14 +27245,14 @@ class QdPageCommitActionExecutor {
|
|
|
27225
27245
|
}
|
|
27226
27246
|
static handleError(action, err) {
|
|
27227
27247
|
if (!action.onError) {
|
|
27228
|
-
console.error('
|
|
27248
|
+
console.error('Quadrel Framework | QdPage - Commit action observable errored — form was not marked as saved. Provide an `onError` hook on the action, or handle errors in the handler.', err);
|
|
27229
27249
|
return;
|
|
27230
27250
|
}
|
|
27231
27251
|
try {
|
|
27232
27252
|
action.onError(err);
|
|
27233
27253
|
}
|
|
27234
27254
|
catch (callbackErr) {
|
|
27235
|
-
console.error('
|
|
27255
|
+
console.error('Quadrel Framework | QdPage - onError callback threw.', callbackErr);
|
|
27236
27256
|
}
|
|
27237
27257
|
}
|
|
27238
27258
|
}
|
|
@@ -27367,7 +27387,7 @@ class QdFormGroupManagerService {
|
|
|
27367
27387
|
captured.set(key, structuredClone(fg.getRawValue()));
|
|
27368
27388
|
}
|
|
27369
27389
|
catch (err) {
|
|
27370
|
-
throw new Error(`
|
|
27390
|
+
throw new Error(`Quadrel Framework | QdFormGroupManager - captureFormValues() failed for group "${key}". ` +
|
|
27371
27391
|
`Form values must be structured-cloneable. Non-cloneable values like functions, ` +
|
|
27372
27392
|
`symbols, or DOM nodes are not supported. Original error: ${String(err)}`);
|
|
27373
27393
|
}
|
|
@@ -27461,7 +27481,7 @@ class QdFormGroupManagerService {
|
|
|
27461
27481
|
initFormArrayFromValues(array, values) {
|
|
27462
27482
|
const protoValue = values[0];
|
|
27463
27483
|
if (!protoValue || typeof protoValue !== 'object') {
|
|
27464
|
-
console.warn('
|
|
27484
|
+
console.warn('Quadrel Framework | QdFormGroupManager - Cannot restore FormArray: no prototype and value is not object-like.');
|
|
27465
27485
|
return;
|
|
27466
27486
|
}
|
|
27467
27487
|
for (let i = 0; i < values.length; i++) {
|
|
@@ -27483,7 +27503,7 @@ class QdFormGroupManagerService {
|
|
|
27483
27503
|
const arrControls = control.controls.map(c => this.deepCloneControl(c));
|
|
27484
27504
|
return new FormArray(arrControls, control.validator, control.asyncValidator);
|
|
27485
27505
|
}
|
|
27486
|
-
throw new Error('
|
|
27506
|
+
throw new Error('Quadrel Framework | QdFormGroupManager - Unsupported control type.');
|
|
27487
27507
|
}
|
|
27488
27508
|
areFormGroupsValid(fg) {
|
|
27489
27509
|
return Object.values(fg.controls).every(c => (c.disabled && !c.validator && !c.asyncValidator ? true : c.valid));
|
|
@@ -27685,6 +27705,9 @@ class QdPageObjectHeaderComponent {
|
|
|
27685
27705
|
_isLoadingSubject = new BehaviorSubject(false);
|
|
27686
27706
|
_customActionsSubject = new BehaviorSubject({ actions: [] });
|
|
27687
27707
|
_customActionsSub;
|
|
27708
|
+
_metadataSub;
|
|
27709
|
+
_pendingMetadata = {};
|
|
27710
|
+
_metadataStreamTypeWarned = false;
|
|
27688
27711
|
_destroyed$ = new Subject();
|
|
27689
27712
|
_availableContexts = 0;
|
|
27690
27713
|
pageObjectData$ = this._pageObjectDataSubject.asObservable();
|
|
@@ -27775,19 +27798,21 @@ class QdPageObjectHeaderComponent {
|
|
|
27775
27798
|
if (originalUpdateMetadata)
|
|
27776
27799
|
originalUpdateMetadata(props);
|
|
27777
27800
|
};
|
|
27778
|
-
this.setupResolverTrigger();
|
|
27779
27801
|
}
|
|
27780
27802
|
}
|
|
27781
27803
|
ngOnInit() {
|
|
27782
27804
|
if (this.pageObjectResolver)
|
|
27783
27805
|
this.setupResolverTrigger();
|
|
27784
27806
|
this.updateCustomActions();
|
|
27807
|
+
this.subscribeToMetadataStream();
|
|
27785
27808
|
this.formGroupManagerService.takeFormGroupsSnapshot();
|
|
27786
27809
|
this.initContexts();
|
|
27787
27810
|
}
|
|
27788
27811
|
ngOnChanges(changes) {
|
|
27789
|
-
if (changes['config'] && !changes['config'].firstChange)
|
|
27812
|
+
if (changes['config'] && !changes['config'].firstChange) {
|
|
27790
27813
|
this.updateCustomActions();
|
|
27814
|
+
this.subscribeToMetadataStream();
|
|
27815
|
+
}
|
|
27791
27816
|
}
|
|
27792
27817
|
ngOnDestroy() {
|
|
27793
27818
|
this.pageStoreService.toggleViewonly(false);
|
|
@@ -27795,8 +27820,8 @@ class QdPageObjectHeaderComponent {
|
|
|
27795
27820
|
this._destroyed$.complete();
|
|
27796
27821
|
}
|
|
27797
27822
|
updateMetadata(metadata) {
|
|
27798
|
-
|
|
27799
|
-
this._pageObjectDataSubject.next(
|
|
27823
|
+
this._pendingMetadata = { ...this._pendingMetadata, ...metadata };
|
|
27824
|
+
this._pageObjectDataSubject.next({ ...this._pageObjectDataSubject.value, ...metadata });
|
|
27800
27825
|
}
|
|
27801
27826
|
handleAction(facet) {
|
|
27802
27827
|
facet?.action?.handler();
|
|
@@ -27860,7 +27885,10 @@ class QdPageObjectHeaderComponent {
|
|
|
27860
27885
|
setupResolverTrigger() {
|
|
27861
27886
|
this.resolverTriggerService
|
|
27862
27887
|
.shouldTriggerResolver(this.pageObjectResolver.config?.triggerOn ?? 'pathParamsChange')
|
|
27863
|
-
.pipe(takeUntil(this._destroyed$), filter(shouldTrigger => shouldTrigger), tap(() => this._isLoadingSubject.next(true)), switchMap(() => this.pageObjectResolver.resolve()), tap(objectData =>
|
|
27888
|
+
.pipe(takeUntil(this._destroyed$), filter(shouldTrigger => shouldTrigger), tap(() => this._isLoadingSubject.next(true)), switchMap(() => this.pageObjectResolver.resolve()), tap(objectData => {
|
|
27889
|
+
this._pageObjectDataSubject.next({ ...objectData, ...this._pendingMetadata });
|
|
27890
|
+
this._pendingMetadata = {};
|
|
27891
|
+
}), tap(() => this._isLoadingSubject.next(false)), tap(() => this.formGroupManagerService.takeFormGroupsSnapshot()))
|
|
27864
27892
|
.subscribe();
|
|
27865
27893
|
}
|
|
27866
27894
|
initContexts() {
|
|
@@ -27892,6 +27920,26 @@ class QdPageObjectHeaderComponent {
|
|
|
27892
27920
|
}
|
|
27893
27921
|
this.subscribeToViewOnlyMode();
|
|
27894
27922
|
}
|
|
27923
|
+
subscribeToMetadataStream() {
|
|
27924
|
+
this._metadataSub?.unsubscribe();
|
|
27925
|
+
const metadata$ = this.config.metadata$;
|
|
27926
|
+
if (!metadata$)
|
|
27927
|
+
return;
|
|
27928
|
+
this.warnOnNonReplayMetadataStream(metadata$);
|
|
27929
|
+
this._metadataSub = metadata$.pipe(takeUntil(this._destroyed$)).subscribe(partial => this.updateMetadata(partial));
|
|
27930
|
+
}
|
|
27931
|
+
warnOnNonReplayMetadataStream(metadata$) {
|
|
27932
|
+
if (!isDevMode() || this._metadataStreamTypeWarned)
|
|
27933
|
+
return;
|
|
27934
|
+
if (metadata$ instanceof Subject &&
|
|
27935
|
+
!(metadata$ instanceof ReplaySubject) &&
|
|
27936
|
+
!(metadata$ instanceof BehaviorSubject)) {
|
|
27937
|
+
this._metadataStreamTypeWarned = true;
|
|
27938
|
+
console.warn('Quadrel Framework | QdPageObjectHeader - metadata$ is a plain Subject. Emissions fired before the ' +
|
|
27939
|
+
"header subscribes (e.g. during the consuming component's ngOnInit) will be lost. " +
|
|
27940
|
+
'Use createMetadataStream() or pass a ReplaySubject(1)/BehaviorSubject instead.');
|
|
27941
|
+
}
|
|
27942
|
+
}
|
|
27895
27943
|
subscribeToViewOnlyMode() {
|
|
27896
27944
|
this._customActionsSub?.unsubscribe();
|
|
27897
27945
|
this._customActionsSub = this.pageStoreService.isViewonly$
|
|
@@ -27999,7 +28047,7 @@ class QdPageStepperAdapterDirective {
|
|
|
27999
28047
|
const toRemove = Array.from(host.children).filter(child => child.tagName !== 'QD-PAGE-STEPPER');
|
|
28000
28048
|
toRemove.forEach(el => {
|
|
28001
28049
|
this.renderer.removeChild(host, el);
|
|
28002
|
-
console.warn('
|
|
28050
|
+
console.warn('Quadrel Framework | QdPageStepperAdapter - Only "qd-page-stepper" is supported. The following content is not rendered:', el);
|
|
28003
28051
|
});
|
|
28004
28052
|
}
|
|
28005
28053
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageStepperAdapterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -28149,7 +28197,7 @@ class QdPageStepperComponent extends CdkStepper {
|
|
|
28149
28197
|
ngOnInit() {
|
|
28150
28198
|
this.linear = true;
|
|
28151
28199
|
if (this.footerService && (this.config?.submit || this.config?.cancel)) {
|
|
28152
|
-
throw new Error('
|
|
28200
|
+
throw new Error('Quadrel Framework | QdPageStepper - When using <qd-page-stepper> inside <qd-page>, don\'t use the "submit" and "cancel" attributes. Instead, use the QdPageConfig.');
|
|
28153
28201
|
}
|
|
28154
28202
|
if (this.footerService) {
|
|
28155
28203
|
this.selectedIndexChange.pipe(takeUntil(this._destroyed$)).subscribe(() => this.updateFooterActionsVisibility());
|
|
@@ -28355,7 +28403,7 @@ class QdPageStepperComponent extends CdkStepper {
|
|
|
28355
28403
|
.subscribe(isValid => this.footerService.updateActions([{ actionKey: 'submit', partialAction: { isDisabled: !isValid } }]));
|
|
28356
28404
|
}
|
|
28357
28405
|
blockCdkInput(inputName) {
|
|
28358
|
-
throw new Error(`
|
|
28406
|
+
throw new Error(`Quadrel Framework | QdPageStepper - The "${inputName}" attribute is not allowed. Please use QdPageStepperConfig instead.`);
|
|
28359
28407
|
}
|
|
28360
28408
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28361
28409
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdPageStepperComponent, isStandalone: true, selector: "qd-page-stepper", inputs: { config: "config", testId: ["data-test-id", "testId"] }, outputs: { submitted: "submitted" }, host: { properties: { "class.standalone": "!footerService" }, classAttribute: "qd-stepper" }, providers: [{ provide: CdkStepper, useExisting: QdPageStepperComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"qd-stepper-items-container\" *ngIf=\"steps.length > 1\">\n <qd-page-step-header\n *ngFor=\"let step of steps; let i = index\"\n (click)=\"handleClickHeader(step, i)\"\n [id]=\"_getStepLabelId(i)\"\n [ngClass]=\"'qd-step'\"\n [index]=\"i\"\n [state]=\"_getIndicatorType(i, step.state)\"\n [label]=\"step.config.label.i18n | translate\"\n [selected]=\"selectedIndex === i\"\n [active]=\"step.completed || selectedIndex === i || !linear\"\n [optional]=\"step.optional\"\n [locked]=\"!step.editable && i < selectedIndex\"\n >\n </qd-page-step-header>\n</div>\n\n<div class=\"stepper-content\">\n <ng-container [ngTemplateOutlet]=\"selected?.content\"></ng-container>\n</div>\n\n<div class=\"qd-stepper-action-area\" *ngIf=\"!footerService\">\n <button qdButton qdButtonGhost (click)=\"cancel()\" [data-test-id]=\"testId + '-cancel'\">\n {{ config?.cancel?.i18n || \"i18n.qd.stepper.cancel\" | translate }}\n </button>\n\n <button\n *ngIf=\"showPreviousButton(selectedIndex)\"\n qdButton\n qdButtonGhost\n (click)=\"previousStep()\"\n [data-test-id]=\"testId + '-previous'\"\n >\n {{ config?.previous?.i18n || \"i18n.qd.stepper.previous\" | translate }}\n </button>\n\n <button\n *ngIf=\"showNextButton(selectedIndex)\"\n qdButton\n [disabled]=\"(selectedStepValid$ | async) === false\"\n (click)=\"nextStep()\"\n [data-test-id]=\"testId + '-next'\"\n >\n {{ config?.next?.i18n || \"i18n.qd.stepper.next\" | translate }}\n </button>\n\n <button\n *ngIf=\"showSubmitButton(selectedIndex)\"\n qdButton\n (click)=\"submit()\"\n [disabled]=\"(allStepsValid$ | async) === false\"\n [data-test-id]=\"testId + '-submit'\"\n >\n {{ config?.submit?.i18n || \"i18n.qd.stepper.submit\" | translate }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host.standalone{height:calc(100% - 50px)}:host .qd-stepper-items-container{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;padding:0 1.25rem;border-bottom:.125rem solid rgb(213,213,213);background-color:#fff;gap:0 .625rem}@media (max-width: 599.98px){:host .qd-stepper-items-container{padding:0 .9375rem}}:host .stepper-content{flex:1 1 auto}:host .qd-stepper-action-area{display:flex;width:100%;height:3.125rem;justify-content:flex-end}:host .qd-stepper-action-area button{margin-right:1.25rem}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: QdPageStepHeaderComponent, selector: "qd-page-step-header", inputs: ["state", "label", "index", "selected", "active", "optional", "locked"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: QdButtonModule }, { kind: "component", type: QdButtonComponent, selector: "button[qdButton], a[qdButton], button[qd-button]", inputs: ["disabled", "color", "icon", "data-test-id", "additionalInfo"] }, { kind: "directive", type: QdButtonGhostDirective, selector: "button[qdButtonGhost], a[qdButtonGhost]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -28430,7 +28478,7 @@ class QdPageTabsAdapterDirective {
|
|
|
28430
28478
|
const toRemove = Array.from(host.children).filter(child => child.tagName !== 'QD-PAGE-TABS');
|
|
28431
28479
|
toRemove.forEach(el => {
|
|
28432
28480
|
this.renderer.removeChild(host, el);
|
|
28433
|
-
console.warn('
|
|
28481
|
+
console.warn('Quadrel Framework | QdPageTabsAdapter - Only "qd-page-tabs" is supported. The following content is not rendered:', el);
|
|
28434
28482
|
});
|
|
28435
28483
|
}
|
|
28436
28484
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabsAdapterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -28779,7 +28827,7 @@ class QdPageTabsComponent extends CdkStepper {
|
|
|
28779
28827
|
pageTab.select();
|
|
28780
28828
|
}
|
|
28781
28829
|
else {
|
|
28782
|
-
console.warn('
|
|
28830
|
+
console.warn('Quadrel Framework | QdPageTabs - No tab found with name "' + tabNameFromParams + '".');
|
|
28783
28831
|
this.selectFirstNotDisabledTab(true);
|
|
28784
28832
|
}
|
|
28785
28833
|
});
|
|
@@ -28803,7 +28851,7 @@ class QdPageTabsComponent extends CdkStepper {
|
|
|
28803
28851
|
});
|
|
28804
28852
|
}
|
|
28805
28853
|
else {
|
|
28806
|
-
console.warn('
|
|
28854
|
+
console.warn('Quadrel Framework | QdPageTabs - "connectedWithRouter" is active, however <qd-page-tab> has no "name" attribute.');
|
|
28807
28855
|
}
|
|
28808
28856
|
}
|
|
28809
28857
|
});
|
|
@@ -28867,7 +28915,7 @@ class QdPageTabsComponent extends CdkStepper {
|
|
|
28867
28915
|
return this._getStepLabelId(i);
|
|
28868
28916
|
}
|
|
28869
28917
|
blockCdkInput(inputName) {
|
|
28870
|
-
throw new Error(`
|
|
28918
|
+
throw new Error(`Quadrel Framework | QdPageTabs - The use of the "${inputName}" attribute is not permitted. Please use QdPageTabsConfig instead.`);
|
|
28871
28919
|
}
|
|
28872
28920
|
mapSelectionChangeToTabSelectionOutput() {
|
|
28873
28921
|
this.selectionChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(selectionEvent => {
|
|
@@ -29114,19 +29162,44 @@ const SAFE_BOTTOM_OFFSET_PX = 64;
|
|
|
29114
29162
|
*
|
|
29115
29163
|
* #### **Updating Facets**
|
|
29116
29164
|
*
|
|
29117
|
-
* Typically, the values of the facets on a create or inspect page are set to read-only.
|
|
29165
|
+
* Typically, the values of the facets on a create or inspect page are set to read-only. If a facet value needs to change at runtime — for instance after a status update from a dialog — push the partial update through `QdPageConfig.metadata$`. The header subscribes to this observable and shallow-merges every emission into the current object data.
|
|
29166
|
+
*
|
|
29167
|
+
* Create the stream with `createMetadataStream<T>()`. The factory returns a `ReplaySubject<Partial<T>>(1)` that buffers the latest emission, so a value pushed during your component's `ngOnInit` still reaches the header, which subscribes a lifecycle step later. Plain `Subject` silently drops that first emission; dev mode warns when it detects one.
|
|
29118
29168
|
*
|
|
29119
29169
|
* **Please note: These values should not be modified directly within a QdPage.**
|
|
29120
29170
|
*
|
|
29121
29171
|
* ```ts
|
|
29122
|
-
* @
|
|
29123
|
-
*
|
|
29124
|
-
*
|
|
29125
|
-
*
|
|
29172
|
+
* @Component({
|
|
29173
|
+
* // ...
|
|
29174
|
+
* providers: [
|
|
29175
|
+
* {
|
|
29176
|
+
* provide: QD_PAGE_OBJECT_RESOLVER_TOKEN,
|
|
29177
|
+
* useClass: MyObjectModelResolver
|
|
29178
|
+
* }
|
|
29179
|
+
* ]
|
|
29180
|
+
* })
|
|
29181
|
+
* class MyPageComponent {
|
|
29182
|
+
* private metadataUpdates$ = createMetadataStream<MyObjectModel>();
|
|
29183
|
+
*
|
|
29184
|
+
* pageConfig: QdPageConfig<MyObjectModel> = {
|
|
29185
|
+
* title: { i18n: 'i18n.page.title' },
|
|
29186
|
+
* pageType: 'inspect',
|
|
29187
|
+
* headerFacets: [ /* ... *\/ ],
|
|
29188
|
+
* metadata$: this.metadataUpdates$,
|
|
29189
|
+
* pageTypeConfig: { /* ... *\/ }
|
|
29190
|
+
* };
|
|
29191
|
+
*
|
|
29192
|
+
* updateStatus() {
|
|
29193
|
+
* this.metadataUpdates$.next({ state: 'Updated' });
|
|
29126
29194
|
* }
|
|
29195
|
+
* }
|
|
29196
|
+
* ```
|
|
29127
29197
|
*
|
|
29128
|
-
*
|
|
29198
|
+
* Legacy approach (`@deprecated`): the resolver-level `updateMetadata` method is still wired up for backward compatibility, but prefer `metadata$` on the config for new code.
|
|
29129
29199
|
*
|
|
29200
|
+
* ```ts
|
|
29201
|
+
* @Injectable()
|
|
29202
|
+
* class MyObjectModelResolver implements QdPageObjectResolver<MyObjectModel> {
|
|
29130
29203
|
* resolve(): Observable<MyObjectModel> {
|
|
29131
29204
|
* // your implementation here
|
|
29132
29205
|
* }
|
|
@@ -29136,15 +29209,6 @@ const SAFE_BOTTOM_OFFSET_PX = 64;
|
|
|
29136
29209
|
* }
|
|
29137
29210
|
* }
|
|
29138
29211
|
*
|
|
29139
|
-
* @Component({
|
|
29140
|
-
* // ...
|
|
29141
|
-
* providers: [
|
|
29142
|
-
* {
|
|
29143
|
-
* provide: QD_PAGE_OBJECT_RESOLVER_TOKEN,
|
|
29144
|
-
* useClass: MyObjectModelResolver
|
|
29145
|
-
* }
|
|
29146
|
-
* ]
|
|
29147
|
-
* })
|
|
29148
29212
|
* class MyPageComponent {
|
|
29149
29213
|
* constructor(@Inject(QD_PAGE_OBJECT_RESOLVER_TOKEN) private objectResolver: MyObjectModelResolver) {}
|
|
29150
29214
|
*
|
|
@@ -29417,7 +29481,7 @@ class QdPageComponent {
|
|
|
29417
29481
|
infoBanners;
|
|
29418
29482
|
footerHasContent$;
|
|
29419
29483
|
isFooterVisible;
|
|
29420
|
-
projectionGuardMessage = '
|
|
29484
|
+
projectionGuardMessage = 'Quadrel Framework | QdPage - This content is not supported. Please use the [qdSectionAdapter] directive for custom content projection.';
|
|
29421
29485
|
_isInitialized = false;
|
|
29422
29486
|
_destroyed$ = new Subject();
|
|
29423
29487
|
_cancelSubmitValidation$ = new Subject();
|
|
@@ -29512,7 +29576,7 @@ class QdPageComponent {
|
|
|
29512
29576
|
}
|
|
29513
29577
|
checkConfigValidity() {
|
|
29514
29578
|
if (!this.config)
|
|
29515
|
-
console.warn('
|
|
29579
|
+
console.warn('Quadrel Framework | QdPage - To configure the page you should provide a valid config.');
|
|
29516
29580
|
}
|
|
29517
29581
|
setupCreatePageFooterActions() {
|
|
29518
29582
|
const pageTypeConfig = this.config?.pageTypeConfig;
|
|
@@ -29758,15 +29822,15 @@ class QdConnectFormStateToPageDirective {
|
|
|
29758
29822
|
isValid() {
|
|
29759
29823
|
const hasFormGroup = this.formGroupDirective?.control;
|
|
29760
29824
|
if (!hasFormGroup) {
|
|
29761
|
-
console.error('
|
|
29825
|
+
console.error('Quadrel Framework | QdConnectFormStateToPage - Either a [formGroup] binding or <qd-quick-edit> with a FormGroup is required.');
|
|
29762
29826
|
return false;
|
|
29763
29827
|
}
|
|
29764
29828
|
if (!this.formGroupManagerService) {
|
|
29765
|
-
console.error('
|
|
29829
|
+
console.error('Quadrel Framework | QdConnectFormStateToPage - The connector must be used within <qd-page>.');
|
|
29766
29830
|
return false;
|
|
29767
29831
|
}
|
|
29768
29832
|
if (!this.formGroupManagerService.isFormGroupKeyUnique(this.qdConnectFormStateToPage)) {
|
|
29769
|
-
console.error(`
|
|
29833
|
+
console.error(`Quadrel Framework | QdConnectFormStateToPage - The FormGroup key "${this.qdConnectFormStateToPage}" is not unique.`);
|
|
29770
29834
|
return false;
|
|
29771
29835
|
}
|
|
29772
29836
|
return true;
|
|
@@ -30780,9 +30844,7 @@ class QdShellServiceNavigationComponent {
|
|
|
30780
30844
|
this.logPamsEnvironmentMissingError();
|
|
30781
30845
|
}
|
|
30782
30846
|
logPamsEnvironmentMissingError() {
|
|
30783
|
-
console.error('
|
|
30784
|
-
'pamsEnvrionment is missing. The pamsEnvironment has to be given in the shell service navigation config or ' +
|
|
30785
|
-
'has to be provided in the backend auth config!');
|
|
30847
|
+
console.error('Quadrel Framework | QdShell - Config key "pamsEnvironment" is required to render <qd-shell-service-navigation>. Provide it in the service-navigation config or via the backend auth config.');
|
|
30786
30848
|
}
|
|
30787
30849
|
setLanguageFromUrlAfterNavigation() {
|
|
30788
30850
|
this.languageFromUrlService
|
|
@@ -31328,7 +31390,7 @@ class QdShellHeaderComponent {
|
|
|
31328
31390
|
}
|
|
31329
31391
|
validateTitle() {
|
|
31330
31392
|
if (this.config.title && typeof this.config.title === 'string') {
|
|
31331
|
-
console.warn('
|
|
31393
|
+
console.warn('Quadrel Framework | QdShell - "title" as a plain string is deprecated and will be removed in the next major release. Please use an i18n key instead.');
|
|
31332
31394
|
}
|
|
31333
31395
|
}
|
|
31334
31396
|
async = async;
|
|
@@ -31364,7 +31426,7 @@ class QdShellNavigationLinkComponent {
|
|
|
31364
31426
|
config;
|
|
31365
31427
|
handleClick() {
|
|
31366
31428
|
if (!this.config.handler) {
|
|
31367
|
-
console.error('
|
|
31429
|
+
console.error('Quadrel Framework | QdShell - Please provide a handler function for the navigation element.');
|
|
31368
31430
|
return;
|
|
31369
31431
|
}
|
|
31370
31432
|
if (this.config.handler && !this.config.isCurrent)
|
|
@@ -31877,7 +31939,7 @@ class QdShellComponent {
|
|
|
31877
31939
|
ngAfterViewInit() {
|
|
31878
31940
|
// TODO: Remove in v17! The comments will be integrated in the QdPage.
|
|
31879
31941
|
if (this.commentsComponent.length > 0)
|
|
31880
|
-
console.warn('
|
|
31942
|
+
console.warn('Quadrel Framework | QdShell - Using comments inside <qd-shell> is deprecated and will be removed in v17. Use <qd-page> instead.');
|
|
31881
31943
|
this.closeShellRightIfCommentsDisappear();
|
|
31882
31944
|
}
|
|
31883
31945
|
closeShellRightIfCommentsDisappear() {
|
|
@@ -32386,11 +32448,11 @@ class QdPageStepComponent extends CdkStep {
|
|
|
32386
32448
|
this._destroyed$.complete();
|
|
32387
32449
|
}
|
|
32388
32450
|
blockCdkInput(inputName) {
|
|
32389
|
-
throw new Error(`
|
|
32451
|
+
throw new Error(`Quadrel Framework | QdPageStep - The use of the "${inputName}" attribute is not permitted. Please use QdPageStepConfig instead.`);
|
|
32390
32452
|
}
|
|
32391
32453
|
validateLabel() {
|
|
32392
32454
|
if (!this.config?.label?.i18n)
|
|
32393
|
-
console.error('
|
|
32455
|
+
console.error('Quadrel Framework | QdPageStep - Please provide a label for the step.');
|
|
32394
32456
|
}
|
|
32395
32457
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32396
32458
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdPageStepComponent, isStandalone: true, selector: "qd-page-step", inputs: { config: "config", control: "control" }, host: { classAttribute: "qd-stepper" }, providers: [
|
|
@@ -32496,11 +32558,11 @@ class QdPageTabComponent extends CdkStep {
|
|
|
32496
32558
|
this._destroyed$.complete();
|
|
32497
32559
|
}
|
|
32498
32560
|
blockCdkInput(inputName) {
|
|
32499
|
-
throw new Error(`
|
|
32561
|
+
throw new Error(`Quadrel Framework | QdPageTab - The use of the "${inputName}" attribute is not permitted. Please use QdPageTabConfig instead.`);
|
|
32500
32562
|
}
|
|
32501
32563
|
validateLabel() {
|
|
32502
32564
|
if (!this.config?.label?.i18n)
|
|
32503
|
-
console.error('
|
|
32565
|
+
console.error('Quadrel Framework | QdPageTab - Please provide a label for the tab.');
|
|
32504
32566
|
}
|
|
32505
32567
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: QdPageTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32506
32568
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: QdPageTabComponent, isStandalone: true, selector: "qd-page-tab", inputs: { config: "config", tabControl: "tabControl" }, providers: [
|
|
@@ -32948,11 +33010,11 @@ class QdQuickEditComponent {
|
|
|
32948
33010
|
}
|
|
32949
33011
|
validateSetup() {
|
|
32950
33012
|
if (this.data != null && this.controlContainer != null)
|
|
32951
|
-
console.warn('
|
|
33013
|
+
console.warn('Quadrel Framework | QdQuickEdit - Data is being ignored when used as FormArray.');
|
|
32952
33014
|
if (!this.data && !this.controlContainer)
|
|
32953
|
-
console.warn('
|
|
33015
|
+
console.warn('Quadrel Framework | QdQuickEdit - Either use <qd-quick-edit> as a FormControl with formArrayName binding or provide data via input.');
|
|
32954
33016
|
if (this.controlContainer && this.config.columns.some(column => column.validators != null))
|
|
32955
|
-
console.warn('
|
|
33017
|
+
console.warn('Quadrel Framework | QdQuickEdit - Please provide validators in the specific FormControls directly for default validators to be added.');
|
|
32956
33018
|
}
|
|
32957
33019
|
redrawOnNextChange() {
|
|
32958
33020
|
this.togglerDrawing = !this.togglerDrawing;
|
|
@@ -33205,5 +33267,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
33205
33267
|
* Generated bundle index. Do not edit.
|
|
33206
33268
|
*/
|
|
33207
33269
|
|
|
33208
|
-
export { APP_ENVIRONMENT, AVAILABLE_ICONS, BACKEND_ERROR_CODES, MockLocaleDatePipe, NavigationTileComponent, NavigationTilesComponent, QD_DIALOG_CONFIRMATION_RESOLVER_TOKEN, QD_FILE_MANAGER_TOKEN, QD_FILE_UPLOAD_MANAGER_TOKEN, QD_FORM_OPTIONS_RESOLVER, QD_PAGE_OBJECT_RESOLVER_TOKEN, QD_PAGE_STEP_RESOLVER_TOKEN, QD_POPOVER_TOP_FIRST, QD_SAFE_BOTTOM_OFFSET, QD_TABLE_DATA_RESOLVER_TOKEN, QD_UPLOAD_HTTP_OPTIONS, QdButtonComponent, QdButtonGhostDirective, QdButtonGridComponent, QdButtonLinkDirective, QdButtonModule, QdButtonStackButtonComponent, QdButtonStackComponent, QdCheckboxChipsComponent, QdCheckboxComponent, QdCheckboxesComponent, QdChipComponent, QdChipModule, QdColumnAutoFillDirective, QdColumnBreakBeforeDirective, QdColumnDirective, QdColumnDisableResponsiveColspansDirective, QdColumnFullGridWidthDirective, QdColumnNextInSameRowDirective, QdColumnsDirective, QdColumnsDisableAutoFillDirective, QdColumnsDisableResponsiveColspansDirective, QdColumnsMaxDirective, QdCommentsComponent, QdCommentsModule, QdConnectFormStateToPageDirective, QdConnectorTableContextDirective, QdConnectorTableFilterDirective, QdConnectorTableSearchDirective, QdContactCardComponent, QdContactCardModule, QdContainerPairsCaptionComponent, QdContainerPairsContainerComponent, QdContainerPairsHeaderComponent, QdContainerPairsItemComponent, QdContainerPairsValueComponent, QdContextService, QdCoreModule, QdDatepickerComponent, QdDialogActionComponent, QdDialogAuthSessionEndComponent, QdDialogAuthSessionEndService, QdDialogComponent, QdDialogConfirmationComponent, QdDialogConfirmationErrorDirective, QdDialogConfirmationInfoDirective, QdDialogConfirmationSuccessDirective, QdDialogModule, QdDialogRecordStepperComponent, QdDialogService, QdDialogSize, QdDisabledDirective, QdDropdownComponent, QdFileCollectorComponent, QdFileCollectorModule, QdFileSizePipe$1 as QdFileSizePipe, QdFileUploadComponent, QdFileUploadService, QdFilterComponent, QdFilterFormItemsComponent, QdFilterModule, QdFilterRestParamBuilder, QdFilterService, QdFormArray, QdFormBuilder, QdFormControl, QdFormGroup, QdFormModule, QdGridComponent, QdGridModule, QdHorizontalPairsCaptionComponent, QdHorizontalPairsComponent, QdHorizontalPairsItemComponent, QdHorizontalPairsValueComponent, QdIconButtonComponent, QdIconComponent, QdIconModule, QdImageComponent, QdImageModule, QdIndeterminateProgressBarComponent, QdInputComponent, QdListModule, QdMenuButtonComponent, QdMockBreakpointService, QdMockButtonComponent, QdMockButtonGhostDirective, QdMockButtonGridComponent, QdMockButtonLinkDirective, QdMockButtonModule, QdMockButtonStackButtonComponent, QdMockButtonStackComponent, QdMockCalendarComponent, QdMockCheckboxChipsComponent, QdMockCheckboxComponent, QdMockCheckboxesComponent, QdMockChipComponent, QdMockChipModule, QdMockColumnDirective, QdMockColumnsDirective, QdMockContactCardComponent, QdMockContactCardModule, QdMockContainerPairsCaptionComponent, QdMockContainerPairsContainerComponent, QdMockContainerPairsHeaderComponent, QdMockContainerPairsItemComponent, QdMockContainerPairsValueComponent, QdMockCoreModule, QdMockCounterBadgeComponent, QdMockDatepickerComponent, QdMockDisabledDirective, QdMockDropdownComponent, QdMockFileCollectorComponent, QdMockFileCollectorModule, QdMockFilterCategoryBooleanComponent, QdMockFilterCategoryComponent, QdMockFilterCategoryDateComponent, QdMockFilterCategoryDateRangeComponent, QdMockFilterCategoryFreeTextComponent, QdMockFilterCategorySelectComponent, QdMockFilterComponent, QdMockFilterFormItemsComponent, QdMockFilterItemBooleanComponent, QdMockFilterItemDateComponent, QdMockFilterItemDateRangeComponent, QdMockFilterItemFreeTextComponent, QdMockFilterItemMultiSelectComponent, QdMockFilterItemSingleSelectComponent, QdMockFilterModule, QdMockFilterService, QdMockFormErrorComponent, QdMockFormGroupErrorComponent, QdMockFormHintComponent, QdMockFormLabelComponent, QdMockFormReadonlyComponent, QdMockFormViewonlyComponent, QdMockFormsModule, QdMockGridModule, QdMockIconButtonComponent, QdMockIconComponent, QdMockIconModule, QdMockImageComponent, QdMockImageModule, QdMockIndeterminateProgressBarComponent, QdMockInputComponent, QdMockListModule, QdMockNavigationTileComponent, QdMockNavigationTilesComponent, QdMockNavigationTilesModule, QdMockNotificationComponent, QdMockNotificationContentComponent, QdMockNotificationsComponent, QdMockNotificationsModule, QdMockNotificationsService, QdMockPageComponent, QdMockPageModule, QdMockPercentageProgressBarComponent, QdMockPinCodeComponent, QdMockPlaceHolderModule, QdMockPopoverOnClickDirective, QdMockProgressBarModule, QdMockQdPlaceHolderComponent, QdMockRadioButtonsComponent, QdMockRwdDisabledDirective, QdMockSearchComponent, QdMockSearchModule, QdMockSectionComponent, QdMockSectionModule, QdMockShellComponent, QdMockShellFooterComponent, QdMockShellHeaderBannerComponent, QdMockShellHeaderComponent, QdMockShellHeaderSearchComponent, QdMockShellHeaderWidgetComponent, QdMockShellModule, QdMockShellToolbarComponent, QdMockShellToolbarItemComponent, QdMockStatusIndicatorCaptionComponent, QdMockStatusIndicatorComponent, QdMockStatusIndicatorItemComponent, QdMockStatusIndicatorModule, QdMockStatusPairsCaptionComponent, QdMockStatusPairsComponent, QdMockStatusPairsErrorComponent, QdMockStatusPairsItemComponent, QdMockStatusPairsValueComponent, QdMockSwitchComponent, QdMockSwitchesComponent, QdMockTableComponent, QdMockTableModule, QdMockTextSectionComponent, QdMockTextSectionHeadlineComponent, QdMockTextSectionModule, QdMockTextSectionParagraphComponent, QdMockTextareaComponent, QdMockTileButtonListComponent, QdMockTileComponent, QdMockTileTextListComponent, QdMockTileTextListItemComponent, QdMockTileTitleComponent, QdMockTilesContainerComponent, QdMockTilesContainerTitleComponent, QdMockTilesModule, QdMockTranslatePipe, QdMockVisuallyHiddenDirective, QdMultiInputComponent, QdNavigationTilesModule, QdNotificationComponent, QdNotificationContentComponent, QdNotificationsComponent, QdNotificationsHttpInterceptorService, QdNotificationsModule, QdNotificationsService, QdNotificationsSnackbarListenerDirective, QdPageComponent, QdPageControlPanelComponent, QdPageFooterComponent, QdPageFooterCustomContentDirective, QdPageInfoBannerComponent, QdPageModule, QdPageStepComponent, QdPageStepperAdapterDirective, QdPageStepperComponent, QdPageStepperModule, QdPageStoreService, QdPageTabComponent, QdPageTabsAdapterDirective, QdPageTabsComponent, QdPageTabsModule, QdPanelSectionActionsComponent, QdPanelSectionComponent, QdPanelSectionModule, QdPanelSectionStatusComponent, QdPanelSectionTextParagraphComponent, QdPendingChangesGuardDirective, QdPercentageProgressBarComponent, QdPinCodeComponent, QdPlaceHolderComponent, QdPlaceHolderModule, QdPlaceholderPipe, QdProgressBarModule, QdProjectionGuardComponent, QdPushEventsService, QdQuickEditComponent, QdQuickEditModule, QdRadioButtonsComponent, QdRichtextComponent, QdRwdDisabledDirective, QdSearchComponent, QdSearchModule, QdSectionAdapterDirective, QdSectionComponent, QdSectionModule, QdSectionToolbarComponent, QdShellComponent, QdShellModule, QdSortDirection, QdSpinnerComponent, QdSpinnerModule, QdStatusIndicatorComponent, QdStatusIndicatorModule, QdStatusPairsCaptionComponent, QdStatusPairsComponent, QdStatusPairsErrorComponent, QdStatusPairsItemComponent, QdStatusPairsValueComponent, QdSubgridComponent, QdSwitchComponent, QdSwitchesComponent, QdTableComponent, QdTableModule, QdTableSpringTools, QdTextSectionComponent, QdTextSectionHeadlineComponent, QdTextSectionModule, QdTextSectionParagraphComponent, QdTextareaComponent, QdTileButtonListComponent, QdTileComponent, QdTileTextListComponent, QdTileTextListItemComponent, QdTileTitleComponent, QdTilesComponent, QdTilesModule, QdTilesTitleComponent, QdTooltipAtIntersectionDirective, QdTooltipIconComponent, QdTreeComponent, QdTreeModule, QdTreeRowExpanderService, QdUiMockModule, QdUiModule, QdUploadErrorType, QdValidators, QdViewportAdaptiveDirective, QdVisuallyHiddenDirective, chipColorDefault, updateHtmlLang };
|
|
33270
|
+
export { APP_ENVIRONMENT, AVAILABLE_ICONS, BACKEND_ERROR_CODES, MockLocaleDatePipe, NavigationTileComponent, NavigationTilesComponent, QD_DIALOG_CONFIRMATION_RESOLVER_TOKEN, QD_FILE_MANAGER_TOKEN, QD_FILE_UPLOAD_MANAGER_TOKEN, QD_FORM_OPTIONS_RESOLVER, QD_PAGE_OBJECT_RESOLVER_TOKEN, QD_PAGE_STEP_RESOLVER_TOKEN, QD_POPOVER_TOP_FIRST, QD_SAFE_BOTTOM_OFFSET, QD_TABLE_DATA_RESOLVER_TOKEN, QD_UPLOAD_HTTP_OPTIONS, QdButtonComponent, QdButtonGhostDirective, QdButtonGridComponent, QdButtonLinkDirective, QdButtonModule, QdButtonStackButtonComponent, QdButtonStackComponent, QdCheckboxChipsComponent, QdCheckboxComponent, QdCheckboxesComponent, QdChipComponent, QdChipModule, QdColumnAutoFillDirective, QdColumnBreakBeforeDirective, QdColumnDirective, QdColumnDisableResponsiveColspansDirective, QdColumnFullGridWidthDirective, QdColumnNextInSameRowDirective, QdColumnsDirective, QdColumnsDisableAutoFillDirective, QdColumnsDisableResponsiveColspansDirective, QdColumnsMaxDirective, QdCommentsComponent, QdCommentsModule, QdConnectFormStateToPageDirective, QdConnectorTableContextDirective, QdConnectorTableFilterDirective, QdConnectorTableSearchDirective, QdContactCardComponent, QdContactCardModule, QdContainerPairsCaptionComponent, QdContainerPairsContainerComponent, QdContainerPairsHeaderComponent, QdContainerPairsItemComponent, QdContainerPairsValueComponent, QdContextService, QdCoreModule, QdDatepickerComponent, QdDialogActionComponent, QdDialogAuthSessionEndComponent, QdDialogAuthSessionEndService, QdDialogComponent, QdDialogConfirmationComponent, QdDialogConfirmationErrorDirective, QdDialogConfirmationInfoDirective, QdDialogConfirmationSuccessDirective, QdDialogModule, QdDialogRecordStepperComponent, QdDialogService, QdDialogSize, QdDisabledDirective, QdDropdownComponent, QdFileCollectorComponent, QdFileCollectorModule, QdFileSizePipe$1 as QdFileSizePipe, QdFileUploadComponent, QdFileUploadService, QdFilterComponent, QdFilterFormItemsComponent, QdFilterModule, QdFilterRestParamBuilder, QdFilterService, QdFormArray, QdFormBuilder, QdFormControl, QdFormGroup, QdFormModule, QdGridComponent, QdGridModule, QdHorizontalPairsCaptionComponent, QdHorizontalPairsComponent, QdHorizontalPairsItemComponent, QdHorizontalPairsValueComponent, QdIconButtonComponent, QdIconComponent, QdIconModule, QdImageComponent, QdImageModule, QdIndeterminateProgressBarComponent, QdInputComponent, QdListModule, QdMenuButtonComponent, QdMockBreakpointService, QdMockButtonComponent, QdMockButtonGhostDirective, QdMockButtonGridComponent, QdMockButtonLinkDirective, QdMockButtonModule, QdMockButtonStackButtonComponent, QdMockButtonStackComponent, QdMockCalendarComponent, QdMockCheckboxChipsComponent, QdMockCheckboxComponent, QdMockCheckboxesComponent, QdMockChipComponent, QdMockChipModule, QdMockColumnDirective, QdMockColumnsDirective, QdMockContactCardComponent, QdMockContactCardModule, QdMockContainerPairsCaptionComponent, QdMockContainerPairsContainerComponent, QdMockContainerPairsHeaderComponent, QdMockContainerPairsItemComponent, QdMockContainerPairsValueComponent, QdMockCoreModule, QdMockCounterBadgeComponent, QdMockDatepickerComponent, QdMockDisabledDirective, QdMockDropdownComponent, QdMockFileCollectorComponent, QdMockFileCollectorModule, QdMockFilterCategoryBooleanComponent, QdMockFilterCategoryComponent, QdMockFilterCategoryDateComponent, QdMockFilterCategoryDateRangeComponent, QdMockFilterCategoryFreeTextComponent, QdMockFilterCategorySelectComponent, QdMockFilterComponent, QdMockFilterFormItemsComponent, QdMockFilterItemBooleanComponent, QdMockFilterItemDateComponent, QdMockFilterItemDateRangeComponent, QdMockFilterItemFreeTextComponent, QdMockFilterItemMultiSelectComponent, QdMockFilterItemSingleSelectComponent, QdMockFilterModule, QdMockFilterService, QdMockFormErrorComponent, QdMockFormGroupErrorComponent, QdMockFormHintComponent, QdMockFormLabelComponent, QdMockFormReadonlyComponent, QdMockFormViewonlyComponent, QdMockFormsModule, QdMockGridModule, QdMockIconButtonComponent, QdMockIconComponent, QdMockIconModule, QdMockImageComponent, QdMockImageModule, QdMockIndeterminateProgressBarComponent, QdMockInputComponent, QdMockListModule, QdMockNavigationTileComponent, QdMockNavigationTilesComponent, QdMockNavigationTilesModule, QdMockNotificationComponent, QdMockNotificationContentComponent, QdMockNotificationsComponent, QdMockNotificationsModule, QdMockNotificationsService, QdMockPageComponent, QdMockPageModule, QdMockPercentageProgressBarComponent, QdMockPinCodeComponent, QdMockPlaceHolderModule, QdMockPopoverOnClickDirective, QdMockProgressBarModule, QdMockQdPlaceHolderComponent, QdMockRadioButtonsComponent, QdMockRwdDisabledDirective, QdMockSearchComponent, QdMockSearchModule, QdMockSectionComponent, QdMockSectionModule, QdMockShellComponent, QdMockShellFooterComponent, QdMockShellHeaderBannerComponent, QdMockShellHeaderComponent, QdMockShellHeaderSearchComponent, QdMockShellHeaderWidgetComponent, QdMockShellModule, QdMockShellToolbarComponent, QdMockShellToolbarItemComponent, QdMockStatusIndicatorCaptionComponent, QdMockStatusIndicatorComponent, QdMockStatusIndicatorItemComponent, QdMockStatusIndicatorModule, QdMockStatusPairsCaptionComponent, QdMockStatusPairsComponent, QdMockStatusPairsErrorComponent, QdMockStatusPairsItemComponent, QdMockStatusPairsValueComponent, QdMockSwitchComponent, QdMockSwitchesComponent, QdMockTableComponent, QdMockTableModule, QdMockTextSectionComponent, QdMockTextSectionHeadlineComponent, QdMockTextSectionModule, QdMockTextSectionParagraphComponent, QdMockTextareaComponent, QdMockTileButtonListComponent, QdMockTileComponent, QdMockTileTextListComponent, QdMockTileTextListItemComponent, QdMockTileTitleComponent, QdMockTilesContainerComponent, QdMockTilesContainerTitleComponent, QdMockTilesModule, QdMockTranslatePipe, QdMockVisuallyHiddenDirective, QdMultiInputComponent, QdNavigationTilesModule, QdNotificationComponent, QdNotificationContentComponent, QdNotificationsComponent, QdNotificationsHttpInterceptorService, QdNotificationsModule, QdNotificationsService, QdNotificationsSnackbarListenerDirective, QdPageComponent, QdPageControlPanelComponent, QdPageFooterComponent, QdPageFooterCustomContentDirective, QdPageInfoBannerComponent, QdPageModule, QdPageStepComponent, QdPageStepperAdapterDirective, QdPageStepperComponent, QdPageStepperModule, QdPageStoreService, QdPageTabComponent, QdPageTabsAdapterDirective, QdPageTabsComponent, QdPageTabsModule, QdPanelSectionActionsComponent, QdPanelSectionComponent, QdPanelSectionModule, QdPanelSectionStatusComponent, QdPanelSectionTextParagraphComponent, QdPendingChangesGuardDirective, QdPercentageProgressBarComponent, QdPinCodeComponent, QdPlaceHolderComponent, QdPlaceHolderModule, QdPlaceholderPipe, QdProgressBarModule, QdProjectionGuardComponent, QdPushEventsService, QdQuickEditComponent, QdQuickEditModule, QdRadioButtonsComponent, QdRichtextComponent, QdRwdDisabledDirective, QdSearchComponent, QdSearchModule, QdSectionAdapterDirective, QdSectionComponent, QdSectionModule, QdSectionToolbarComponent, QdShellComponent, QdShellModule, QdSortDirection, QdSpinnerComponent, QdSpinnerModule, QdStatusIndicatorComponent, QdStatusIndicatorModule, QdStatusPairsCaptionComponent, QdStatusPairsComponent, QdStatusPairsErrorComponent, QdStatusPairsItemComponent, QdStatusPairsValueComponent, QdSubgridComponent, QdSwitchComponent, QdSwitchesComponent, QdTableComponent, QdTableModule, QdTableSpringTools, QdTextSectionComponent, QdTextSectionHeadlineComponent, QdTextSectionModule, QdTextSectionParagraphComponent, QdTextareaComponent, QdTileButtonListComponent, QdTileComponent, QdTileTextListComponent, QdTileTextListItemComponent, QdTileTitleComponent, QdTilesComponent, QdTilesModule, QdTilesTitleComponent, QdTooltipAtIntersectionDirective, QdTooltipIconComponent, QdTreeComponent, QdTreeModule, QdTreeRowExpanderService, QdUiMockModule, QdUiModule, QdUploadErrorType, QdValidators, QdViewportAdaptiveDirective, QdVisuallyHiddenDirective, chipColorDefault, createMetadataStream, updateHtmlLang };
|
|
33209
33271
|
//# sourceMappingURL=quadrel-enterprise-ui-framework.mjs.map
|