@pega/angular-sdk-overrides 0.25.3 → 0.25.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.scss +0 -1
- package/lib/field/date/date.component.html +1 -1
- package/lib/field/date-time/date-time.component.html +1 -1
- package/lib/field/date-time/date-time.component.ts +5 -1
- package/lib/field/location/location.component.html +2 -2
- package/lib/field/location/location.component.ts +20 -125
- package/lib/field/phone/phone.component.scss +0 -5
- package/lib/infra/Containers/flow-container/flow-container.component.html +1 -1
- package/lib/infra/Containers/flow-container/flow-container.component.ts +1 -1
- package/lib/infra/multi-step/multi-step.component.html +22 -38
- package/lib/infra/multi-step/multi-step.component.scss +13 -6
- package/lib/infra/navbar/navbar.component.html +11 -13
- package/lib/infra/navbar/navbar.component.scss +6 -0
- package/lib/infra/reference/reference.component.ts +5 -0
- package/lib/infra/view/view.component.ts +3 -4
- package/lib/template/list-view/list-view.component.html +170 -167
- package/lib/template/list-view/list-view.component.scss +7 -3
- package/lib/template/list-view/list-view.component.ts +53 -31
- package/lib/template/self-service-case-view/self-service-case-view.component.html +21 -25
- package/lib/template/self-service-case-view/self-service-case-view.component.scss +2 -1
- package/lib/widget/attachment/attachment.component.scss +7 -9
- package/lib/widget/attachment/attachment.component.ts +4 -3
- package/lib/widget/file-utility/file-utility.component.scss +1 -1
- package/lib/widget/quick-create/quick-create.component.ts +41 -22
- package/lib/widget/todo/todo.component.scss +2 -0
- package/package.json +1 -1
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
(dateChange)="fieldOnDateChange($event)"
|
|
21
21
|
/>
|
|
22
22
|
<mat-datepicker-toggle matSuffix [for]="pegadate" [disabled]="bDisabled$"></mat-datepicker-toggle>
|
|
23
|
-
<mat-datepicker #pegadate [startAt]="value$"></mat-datepicker>
|
|
23
|
+
<mat-datepicker #pegadate [startAt]="value$" xPosition="end"></mat-datepicker>
|
|
24
24
|
<mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
|
|
25
25
|
</mat-form-field>
|
|
26
26
|
</div>
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
[readonly]="bDisabled$"
|
|
18
18
|
/>
|
|
19
19
|
<mat-datepicker-toggle matSuffix [owlDateTimeTrigger]="dtPicker"></mat-datepicker-toggle>
|
|
20
|
-
<owl-date-time #dtPicker [disabled]="bDisabled$"></owl-date-time>
|
|
20
|
+
<owl-date-time #dtPicker [disabled]="bDisabled$" [scrollStrategy]="scrollStrategy"></owl-date-time>
|
|
21
21
|
<mat-error *ngIf="fieldControl?.invalid">{{ getErrorMessage() }}</mat-error>
|
|
22
22
|
</mat-form-field>
|
|
23
23
|
</div>
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Component, OnInit, forwardRef, OnDestroy } from '@angular/core';
|
|
1
|
+
import { Component, OnInit, forwardRef, OnDestroy, inject } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
5
5
|
import { MatInputModule } from '@angular/material/input';
|
|
6
6
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
+
import { ScrollStrategyOptions } from '@angular/cdk/overlay';
|
|
7
8
|
import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker';
|
|
8
9
|
import dayjs from 'dayjs';
|
|
9
10
|
|
|
@@ -45,6 +46,9 @@ export class DateTimeComponent extends FieldBase implements OnInit, OnDestroy {
|
|
|
45
46
|
timezone = PCore.getEnvironmentInfo()?.getTimeZone();
|
|
46
47
|
override placeholder = `${this.theDateFormat.dateFormatStringLC}, hh:mm A`;
|
|
47
48
|
|
|
49
|
+
private sso = inject(ScrollStrategyOptions);
|
|
50
|
+
scrollStrategy = this.sso.reposition();
|
|
51
|
+
|
|
48
52
|
override ngOnInit(): void {
|
|
49
53
|
super.ngOnInit();
|
|
50
54
|
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
matInput
|
|
7
7
|
type="text"
|
|
8
8
|
[placeholder]="placeholder"
|
|
9
|
-
[formControl]="
|
|
9
|
+
[formControl]="fieldControl"
|
|
10
10
|
[required]="bRequired$"
|
|
11
11
|
[matAutocomplete]="auto"
|
|
12
12
|
[attr.data-test-id]="testId"
|
|
13
13
|
(blur)="fieldOnBlur()"
|
|
14
14
|
/>
|
|
15
|
-
<mat-error *ngIf="
|
|
15
|
+
<mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
|
|
16
16
|
<button
|
|
17
17
|
mat-icon-button
|
|
18
18
|
matSuffix
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import {
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
5
5
|
import { MatInputModule } from '@angular/material/input';
|
|
6
6
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
@@ -8,12 +8,10 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
|
8
8
|
import { MatIconModule } from '@angular/material/icon';
|
|
9
9
|
import { MatButtonModule } from '@angular/material/button';
|
|
10
10
|
import { GoogleMapsModule } from '@angular/google-maps';
|
|
11
|
+
import { debounceTime, from, of, switchMap } from 'rxjs';
|
|
11
12
|
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
|
|
13
|
+
import { FieldBase } from '@pega/angular-sdk-components';
|
|
15
14
|
import { GoogleMapsLoaderService } from '@pega/angular-sdk-components';
|
|
16
|
-
import { Utils } from '@pega/angular-sdk-components';
|
|
17
15
|
import { handleEvent } from '@pega/angular-sdk-components';
|
|
18
16
|
|
|
19
17
|
import { PConnFieldProps } from '@pega/angular-sdk-components';
|
|
@@ -41,9 +39,8 @@ interface LocationProps extends PConnFieldProps {
|
|
|
41
39
|
templateUrl: './location.component.html',
|
|
42
40
|
styleUrl: './location.component.scss'
|
|
43
41
|
})
|
|
44
|
-
export class LocationComponent
|
|
45
|
-
|
|
46
|
-
@Input() formGroup$: FormGroup;
|
|
42
|
+
export class LocationComponent extends FieldBase {
|
|
43
|
+
private loader = inject(GoogleMapsLoaderService);
|
|
47
44
|
|
|
48
45
|
private autocompleteService!: google.maps.places.AutocompleteService;
|
|
49
46
|
private geocoder!: google.maps.Geocoder;
|
|
@@ -51,137 +48,52 @@ export class LocationComponent implements OnInit, OnDestroy {
|
|
|
51
48
|
// Dom variables
|
|
52
49
|
mapReady = false;
|
|
53
50
|
isLocating = false;
|
|
54
|
-
searchControl = new FormControl('');
|
|
55
51
|
showMap = true;
|
|
56
52
|
filteredOptions: string[] = [];
|
|
57
53
|
center: google.maps.LatLngLiteral;
|
|
58
54
|
markerPosition: google.maps.LatLngLiteral | null = null;
|
|
59
55
|
|
|
60
|
-
// Used with AngularPConnect
|
|
61
|
-
angularPConnectData: AngularPConnectData = {};
|
|
62
56
|
configProps$: LocationProps;
|
|
63
|
-
label$ = '';
|
|
64
57
|
onlyCoordinates: boolean;
|
|
65
58
|
coordinates: string;
|
|
66
|
-
bRequired$ = false;
|
|
67
|
-
bReadonly$ = false;
|
|
68
59
|
showMapReadOnly$: boolean;
|
|
69
|
-
bDisabled$ = false;
|
|
70
|
-
bVisible$ = true;
|
|
71
|
-
controlName$: string;
|
|
72
|
-
bHasForm$ = true;
|
|
73
|
-
testId = '';
|
|
74
|
-
helperText: string;
|
|
75
|
-
placeholder: string;
|
|
76
|
-
actionsApi: object;
|
|
77
60
|
valueProp: string;
|
|
78
61
|
coordinatesProp: string;
|
|
79
62
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
private angularPConnect: AngularPConnectService,
|
|
83
|
-
private utils: Utils,
|
|
84
|
-
private cdRef: ChangeDetectorRef
|
|
85
|
-
) {}
|
|
63
|
+
override async ngOnInit() {
|
|
64
|
+
super.ngOnInit();
|
|
86
65
|
|
|
87
|
-
async ngOnInit() {
|
|
88
66
|
// Loading map
|
|
89
67
|
const apiKey = this.pConn$.getGoogleMapsAPIKey();
|
|
90
68
|
await this.loader.load(apiKey);
|
|
91
69
|
this.mapReady = true;
|
|
92
70
|
this.initializeGoogleServices();
|
|
93
71
|
this.getPlacePredictions();
|
|
94
|
-
|
|
95
|
-
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
96
|
-
this.controlName$ = this.angularPConnect.getComponentID(this);
|
|
97
|
-
this.checkAndUpdate();
|
|
98
|
-
|
|
99
|
-
if (this.formGroup$) {
|
|
100
|
-
// add control to formGroup
|
|
101
|
-
this.formGroup$.addControl(this.controlName$, this.searchControl);
|
|
102
|
-
this.bHasForm$ = true;
|
|
103
|
-
} else {
|
|
104
|
-
this.bReadonly$ = true;
|
|
105
|
-
this.bHasForm$ = false;
|
|
106
|
-
}
|
|
107
72
|
}
|
|
108
73
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
this.angularPConnectData.unsubscribeFn();
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
checkAndUpdate() {
|
|
120
|
-
const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
|
|
121
|
-
if (bUpdateSelf) {
|
|
122
|
-
this.updateSelf();
|
|
123
|
-
}
|
|
124
|
-
}
|
|
74
|
+
/**
|
|
75
|
+
* Updates the component when there are changes in the state.
|
|
76
|
+
*/
|
|
77
|
+
override updateSelf(): void {
|
|
78
|
+
// Resolve configuration properties
|
|
79
|
+
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as LocationProps;
|
|
125
80
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
this.checkAndUpdate();
|
|
129
|
-
}, 0);
|
|
130
|
-
}
|
|
81
|
+
// Update component common properties
|
|
82
|
+
this.updateComponentCommonProperties(this.configProps$);
|
|
131
83
|
|
|
132
|
-
updateSelf(): void {
|
|
133
|
-
this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as LocationProps;
|
|
134
|
-
if (this.configProps$.visibility != null) {
|
|
135
|
-
this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
|
|
136
|
-
}
|
|
137
84
|
this.onlyCoordinates = !!this.configProps$.onlyCoordinates;
|
|
138
|
-
this.label$ = this.configProps$.label;
|
|
139
|
-
this.testId = this.configProps$.testId;
|
|
140
|
-
|
|
141
|
-
this.helperText = this.configProps$.helperText || '';
|
|
142
|
-
this.placeholder = this.configProps$.placeholder || '';
|
|
143
85
|
this.showMapReadOnly$ = !!this.configProps$.showMapReadOnly;
|
|
144
|
-
if (this.configProps$.readOnly != null) {
|
|
145
|
-
this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
|
|
146
|
-
}
|
|
147
86
|
this.showMap = this.bReadonly$ ? this.showMapReadOnly$ : !!this.configProps$.showMap;
|
|
87
|
+
|
|
148
88
|
if (this.configProps$.coordinates) {
|
|
149
89
|
const latAndLong: number[] = this.configProps$.coordinates.split(',').map(Number);
|
|
150
90
|
const latitude = Number(latAndLong[0]);
|
|
151
91
|
const longitude = Number(latAndLong[1]);
|
|
152
92
|
this.updateMap(latitude, longitude, this.configProps$.value);
|
|
153
93
|
}
|
|
154
|
-
// // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
|
|
155
|
-
setTimeout(() => {
|
|
156
|
-
if (this.configProps$.required != null) {
|
|
157
|
-
this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
|
|
158
|
-
}
|
|
159
|
-
this.cdRef.detectChanges();
|
|
160
|
-
});
|
|
161
|
-
// // disabled
|
|
162
|
-
if (this.configProps$.disabled != undefined) {
|
|
163
|
-
this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
|
|
164
|
-
}
|
|
165
94
|
|
|
166
|
-
if (this.bDisabled$ || this.bReadonly$) {
|
|
167
|
-
this.searchControl.disable();
|
|
168
|
-
} else {
|
|
169
|
-
this.searchControl.enable();
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
this.actionsApi = this.pConn$.getActionsApi();
|
|
173
95
|
this.valueProp = this.pConn$.getStateProps().value;
|
|
174
96
|
this.coordinatesProp = this.pConn$.getStateProps().coordinates;
|
|
175
|
-
|
|
176
|
-
// // trigger display of error message with field control
|
|
177
|
-
if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
|
|
178
|
-
const timer = interval(100).subscribe(() => {
|
|
179
|
-
this.searchControl.setErrors({ message: true });
|
|
180
|
-
this.searchControl.markAsTouched();
|
|
181
|
-
|
|
182
|
-
timer.unsubscribe();
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
97
|
}
|
|
186
98
|
|
|
187
99
|
onOptionSelected(event: any) {
|
|
@@ -236,23 +148,6 @@ export class LocationComponent implements OnInit, OnDestroy {
|
|
|
236
148
|
}
|
|
237
149
|
}
|
|
238
150
|
|
|
239
|
-
getErrorMessage() {
|
|
240
|
-
let errMessage = '';
|
|
241
|
-
|
|
242
|
-
// look for validation messages for json, pre-defined or just an error pushed from workitem (400)
|
|
243
|
-
if (this.searchControl.hasError('message')) {
|
|
244
|
-
errMessage = this.angularPConnectData.validateMessage ?? '';
|
|
245
|
-
return errMessage;
|
|
246
|
-
}
|
|
247
|
-
if (this.searchControl.hasError('required')) {
|
|
248
|
-
errMessage = 'You must enter a value';
|
|
249
|
-
} else if (this.searchControl.errors) {
|
|
250
|
-
errMessage = this.searchControl.errors.toString();
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
return errMessage;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
151
|
private tryGetLocation(retryCount: number) {
|
|
257
152
|
navigator.geolocation.getCurrentPosition(
|
|
258
153
|
position => {
|
|
@@ -312,7 +207,7 @@ export class LocationComponent implements OnInit, OnDestroy {
|
|
|
312
207
|
}
|
|
313
208
|
|
|
314
209
|
private getPlacePredictions() {
|
|
315
|
-
this.
|
|
210
|
+
this.fieldControl.valueChanges
|
|
316
211
|
.pipe(
|
|
317
212
|
debounceTime(300),
|
|
318
213
|
switchMap(value => this.getSuggestions(value || ''))
|
|
@@ -371,7 +266,7 @@ export class LocationComponent implements OnInit, OnDestroy {
|
|
|
371
266
|
}
|
|
372
267
|
|
|
373
268
|
private updateProps() {
|
|
374
|
-
handleEvent(this.actionsApi, 'change', this.valueProp, this.
|
|
269
|
+
handleEvent(this.actionsApi, 'change', this.valueProp, this.fieldControl.value);
|
|
375
270
|
handleEvent(this.actionsApi, 'change', this.coordinatesProp, this.coordinates);
|
|
376
271
|
}
|
|
377
272
|
|
|
@@ -380,6 +275,6 @@ export class LocationComponent implements OnInit, OnDestroy {
|
|
|
380
275
|
}
|
|
381
276
|
|
|
382
277
|
private setLocationValue(value: string) {
|
|
383
|
-
this.
|
|
278
|
+
this.fieldControl.setValue(value, { emitEvent: false });
|
|
384
279
|
}
|
|
385
280
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
</div>
|
|
33
33
|
<div *ngIf="bHasCaseMessages$">
|
|
34
34
|
<mat-card class="psdk-message-card">
|
|
35
|
-
<div style="display: flex; flex-direction: row">
|
|
35
|
+
<div style="display: flex; flex-direction: row; align-items: center">
|
|
36
36
|
<div><img class="psdk-icon" src="{{ checkSvg$ }}" /></div>
|
|
37
37
|
<div>{{ caseMessages$ }}</div>
|
|
38
38
|
</div>
|
|
@@ -280,7 +280,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
280
280
|
|
|
281
281
|
// this.containerName$ = oWorkMeta["name"];
|
|
282
282
|
if (bLoadChildren && oWorkData) {
|
|
283
|
-
this.containerName$ = this.localizedVal(this.getActiveViewLabel() || oWorkData.caseInfo.assignments[0].name, undefined, this.localeReference);
|
|
283
|
+
this.containerName$ = this.localizedVal(this.getActiveViewLabel() || oWorkData.caseInfo.assignments?.[0].name, undefined, this.localeReference);
|
|
284
284
|
}
|
|
285
285
|
|
|
286
286
|
// turn off spinner
|
|
@@ -12,25 +12,17 @@
|
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
14
14
|
<div class="{{ _getVBodyClass(i) }}">
|
|
15
|
-
<ng-container *ngIf="mainStep?.steps">
|
|
16
|
-
<
|
|
17
|
-
<
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
name="AssignmentCard"
|
|
27
|
-
[props]="{ pConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$ }"
|
|
28
|
-
[parent]="this"
|
|
29
|
-
[outputEvents]="{ actionButtonClick: onActionButtonClick }"
|
|
30
|
-
></component-mapper>
|
|
31
|
-
</div>
|
|
32
|
-
</li>
|
|
33
|
-
</ul>
|
|
15
|
+
<ng-container *ngIf="mainStep?.steps && mainStep.visited_status == 'current'">
|
|
16
|
+
<div *ngFor="let subStep of mainStep.steps">
|
|
17
|
+
<div *ngIf="subStep.visited_status == 'current'">
|
|
18
|
+
<component-mapper
|
|
19
|
+
name="AssignmentCard"
|
|
20
|
+
[props]="{ pConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$ }"
|
|
21
|
+
[parent]="this"
|
|
22
|
+
[outputEvents]="{ actionButtonClick: onActionButtonClick }"
|
|
23
|
+
></component-mapper>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
34
26
|
</ng-container>
|
|
35
27
|
|
|
36
28
|
<ng-container *ngIf="!mainStep?.steps && mainStep.visited_status == 'current'">
|
|
@@ -64,25 +56,17 @@
|
|
|
64
56
|
</ng-container>
|
|
65
57
|
</div>
|
|
66
58
|
<div *ngFor="let mainStep of arNavigationSteps$" class="psdk-horizontal-stepper-body">
|
|
67
|
-
<ng-container *ngIf="mainStep?.steps">
|
|
68
|
-
<
|
|
69
|
-
<
|
|
70
|
-
<
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
name="AssignmentCard"
|
|
79
|
-
[props]="{ pConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$ }"
|
|
80
|
-
[parent]="this"
|
|
81
|
-
[outputEvents]="{ actionButtonClick: onActionButtonClick }"
|
|
82
|
-
></component-mapper>
|
|
83
|
-
</div>
|
|
84
|
-
</li>
|
|
85
|
-
</ul>
|
|
59
|
+
<ng-container *ngIf="mainStep?.steps && mainStep.visited_status == 'current'">
|
|
60
|
+
<div *ngFor="let subStep of mainStep.steps">
|
|
61
|
+
<div *ngIf="subStep.visited_status == 'current'">
|
|
62
|
+
<component-mapper
|
|
63
|
+
name="AssignmentCard"
|
|
64
|
+
[props]="{ pConn$, formGroup$, arChildren$, arMainButtons$, arSecondaryButtons$ }"
|
|
65
|
+
[parent]="this"
|
|
66
|
+
[outputEvents]="{ actionButtonClick: onActionButtonClick }"
|
|
67
|
+
></component-mapper>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
86
70
|
</ng-container>
|
|
87
71
|
|
|
88
72
|
<ng-container *ngIf="!mainStep?.steps && mainStep.visited_status == 'current'">
|
|
@@ -7,12 +7,6 @@
|
|
|
7
7
|
min-width: unset;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
.psdk-icon-current {
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.psdk-icon-not-current {
|
|
14
|
-
}
|
|
15
|
-
|
|
16
10
|
.psdk-current-svg-icon {
|
|
17
11
|
width: 1rem;
|
|
18
12
|
filter: var(--app-primary-color-filter);
|
|
@@ -33,9 +27,11 @@ mat-horizontal-stepper {
|
|
|
33
27
|
.psdk-sub-step-current {
|
|
34
28
|
padding-left: 0.625rem;
|
|
35
29
|
font-weight: bold;
|
|
30
|
+
color: var(--mat-sys-on-secondary-container);
|
|
36
31
|
}
|
|
37
32
|
|
|
38
33
|
.psdk-sub-step-not-current {
|
|
34
|
+
color: var(--mat-sys-on-surface-variant);
|
|
39
35
|
padding-left: 0.625rem;
|
|
40
36
|
}
|
|
41
37
|
|
|
@@ -76,6 +72,7 @@ mat-horizontal-stepper {
|
|
|
76
72
|
|
|
77
73
|
.psdk-vertical-step-icon {
|
|
78
74
|
margin-right: 12px;
|
|
75
|
+
background-color: var(--mat-sys-secondary);
|
|
79
76
|
border-radius: 50%;
|
|
80
77
|
height: 24px;
|
|
81
78
|
width: 24px;
|
|
@@ -92,6 +89,8 @@ mat-horizontal-stepper {
|
|
|
92
89
|
|
|
93
90
|
.psdk-vertical-step-icon-selected {
|
|
94
91
|
margin-right: 12px;
|
|
92
|
+
background-color: var(--mat-sys-primary);
|
|
93
|
+
color: var(--mat-sys-surface);
|
|
95
94
|
border-radius: 50%;
|
|
96
95
|
height: 24px;
|
|
97
96
|
width: 24px;
|
|
@@ -100,6 +99,7 @@ mat-horizontal-stepper {
|
|
|
100
99
|
}
|
|
101
100
|
|
|
102
101
|
.psdk-vertical-step-label {
|
|
102
|
+
color: var(--mat-sys-on-surface-variant);
|
|
103
103
|
display: inline-block;
|
|
104
104
|
white-space: nowrap;
|
|
105
105
|
overflow: hidden;
|
|
@@ -111,6 +111,7 @@ mat-horizontal-stepper {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
.psdk-vertical-step-label-selected {
|
|
114
|
+
color: var(--mat-sys-on-secondary-container);
|
|
114
115
|
display: inline-block;
|
|
115
116
|
white-space: nowrap;
|
|
116
117
|
overflow: hidden;
|
|
@@ -169,6 +170,8 @@ mat-horizontal-stepper {
|
|
|
169
170
|
}
|
|
170
171
|
|
|
171
172
|
.psdk-horizontal-step-icon {
|
|
173
|
+
background-color: var(--mat-sys-secondary);
|
|
174
|
+
color: var(--mat-sys-surface);
|
|
172
175
|
border-radius: 50%;
|
|
173
176
|
height: 24px;
|
|
174
177
|
width: 24px;
|
|
@@ -188,6 +191,8 @@ mat-horizontal-stepper {
|
|
|
188
191
|
}
|
|
189
192
|
|
|
190
193
|
.psdk-horizontal-step-icon-selected {
|
|
194
|
+
background-color: var(--mat-sys-primary);
|
|
195
|
+
color: var(--mat-sys-surface);
|
|
191
196
|
border-radius: 50%;
|
|
192
197
|
height: 24px;
|
|
193
198
|
width: 24px;
|
|
@@ -199,6 +204,7 @@ mat-horizontal-stepper {
|
|
|
199
204
|
}
|
|
200
205
|
|
|
201
206
|
.psdk-horizontal-step-label {
|
|
207
|
+
color: var(--mat-sys-on-surface-variant);
|
|
202
208
|
display: inline-block;
|
|
203
209
|
min-width: 50px;
|
|
204
210
|
vertical-align: middle;
|
|
@@ -208,6 +214,7 @@ mat-horizontal-stepper {
|
|
|
208
214
|
}
|
|
209
215
|
|
|
210
216
|
.psdk-horizontal-step-label-selected {
|
|
217
|
+
color: var(--mat-sys-on-secondary-container);
|
|
211
218
|
display: inline-block;
|
|
212
219
|
min-width: 50px;
|
|
213
220
|
vertical-align: middle;
|
|
@@ -36,17 +36,15 @@
|
|
|
36
36
|
</mat-list-item>
|
|
37
37
|
</mat-list>
|
|
38
38
|
<div class="psdk-nav-divider"></div>
|
|
39
|
-
<
|
|
40
|
-
<mat-list
|
|
41
|
-
<
|
|
42
|
-
<div class="
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
<mat-menu
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
</mat-list>
|
|
51
|
-
</div>
|
|
39
|
+
<mat-list id="profile" class="psdk-logout-button">
|
|
40
|
+
<mat-list-item [matMenuTriggerFor]="menu" class="psdk-profile-list-item">
|
|
41
|
+
<div class="flex-box">
|
|
42
|
+
<div class="psdk-nav-oper-avatar">{{ portalOperatorInitials$ }}</div>
|
|
43
|
+
<span class="psdk-nav-button-span">{{ portalOperator$ }}</span>
|
|
44
|
+
</div>
|
|
45
|
+
</mat-list-item>
|
|
46
|
+
<mat-menu #menu="matMenu">
|
|
47
|
+
<button mat-menu-item (click)="navPanelLogoutClick()">{{ localizedVal('Log off', localeCategory) }}</button>
|
|
48
|
+
</mat-menu>
|
|
49
|
+
</mat-list>
|
|
52
50
|
</div>
|
|
@@ -39,6 +39,7 @@ $natural-ease: cubic-bezier(0.4, 0.6, 0.1, 1) !default;
|
|
|
39
39
|
.psdk-appshell-nav {
|
|
40
40
|
z-index: 199;
|
|
41
41
|
position: fixed;
|
|
42
|
+
top: 0;
|
|
42
43
|
display: flex;
|
|
43
44
|
flex-direction: column;
|
|
44
45
|
justify-content: flex-start;
|
|
@@ -162,3 +163,8 @@ mat-list-item {
|
|
|
162
163
|
height: 24px;
|
|
163
164
|
border-radius: 50%;
|
|
164
165
|
}
|
|
166
|
+
|
|
167
|
+
.psdk-logout-button {
|
|
168
|
+
flex: 1;
|
|
169
|
+
align-content: flex-end;
|
|
170
|
+
}
|
|
@@ -71,6 +71,11 @@ export class ReferenceComponent {
|
|
|
71
71
|
pageReference: context && context.startsWith('@CLASS') ? '' : context
|
|
72
72
|
});
|
|
73
73
|
|
|
74
|
+
if (referenceConfig.inheritedProps && referenceConfig.inheritedProps.length > 0) {
|
|
75
|
+
const inheritedProps = inPConn.getInheritedProps();
|
|
76
|
+
referenceConfig.inheritedProps = Object.keys(inheritedProps).map(prop => ({ prop, value: inheritedProps[prop] }));
|
|
77
|
+
}
|
|
78
|
+
|
|
74
79
|
// Get the PConnect object from the created component
|
|
75
80
|
const newCompPConnect = viewComponent.getPConnect();
|
|
76
81
|
|
|
@@ -7,7 +7,7 @@ import { getAllFields } from '@pega/angular-sdk-components';
|
|
|
7
7
|
import { ReferenceComponent } from '@pega/angular-sdk-components';
|
|
8
8
|
import { ComponentMapperComponent } from '@pega/angular-sdk-components';
|
|
9
9
|
|
|
10
|
-
const NO_HEADER_TEMPLATES = ['SubTabs', 'SimpleTable', 'Confirmation', 'DynamicTabs', 'DetailsSubTabs'];
|
|
10
|
+
const NO_HEADER_TEMPLATES = ['SubTabs', 'SimpleTable', 'Confirmation', 'DynamicTabs', 'DetailsSubTabs', 'ListView'];
|
|
11
11
|
const DETAILS_TEMPLATES = [
|
|
12
12
|
'Details',
|
|
13
13
|
'DetailsFields',
|
|
@@ -158,10 +158,9 @@ export class ViewComponent implements OnInit, OnDestroy, OnChanges {
|
|
|
158
158
|
|
|
159
159
|
this.templateName$ = this.configProps$.template || '';
|
|
160
160
|
this.title$ = this.configProps$.title || '';
|
|
161
|
-
this.label$ = this.configProps$.label || '';
|
|
162
|
-
this.showLabel$ = this.configProps$.showLabel || isDetailsTemplate(this.templateName$) || this.showLabel$;
|
|
163
161
|
// label & showLabel within inheritedProps takes precedence over configProps
|
|
164
|
-
this.label$ = this.inheritedProps$.label || this.label
|
|
162
|
+
this.label$ = this.inheritedProps$.label || this.configProps$.label || '';
|
|
163
|
+
this.showLabel$ = this.inheritedProps$.showLabel || this.configProps$.showLabel || isDetailsTemplate(this.templateName$);
|
|
165
164
|
// children may have a 'reference' so normalize the children array
|
|
166
165
|
this.arChildren$ = ReferenceComponent.normalizePConnArray(this.pConn$.getChildren());
|
|
167
166
|
this.visibility$ = this.configProps$.visibility ?? this.visibility$;
|