@pega/angular-sdk-overrides 0.24.9 → 0.25.1
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/alert/alert.component.ts +0 -1
- package/lib/designSystemExtension/alert-banner/alert-banner.component.ts +1 -2
- package/lib/designSystemExtension/banner/banner.component.ts +0 -1
- package/lib/designSystemExtension/case-create-stage/case-create-stage.component.ts +1 -2
- package/lib/designSystemExtension/field-group/field-group.component.ts +0 -1
- package/lib/designSystemExtension/material-case-summary/material-case-summary.component.scss +2 -1
- package/lib/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -2
- package/lib/designSystemExtension/material-details/material-details.component.ts +0 -1
- package/lib/designSystemExtension/material-details-fields/material-details-fields.component.html +2 -2
- package/lib/designSystemExtension/material-details-fields/material-details-fields.component.ts +10 -2
- package/lib/designSystemExtension/material-summary-item/material-summary-item.component.ts +0 -1
- package/lib/designSystemExtension/material-summary-list/material-summary-list.component.ts +0 -1
- package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts +0 -1
- package/lib/designSystemExtension/operator/operator.component.html +1 -1
- package/lib/designSystemExtension/operator/operator.component.scss +10 -2
- package/lib/designSystemExtension/operator/operator.component.ts +5 -5
- package/lib/designSystemExtension/pulse/pulse.component.ts +7 -8
- package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.ts +0 -1
- package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.ts +0 -1
- package/lib/field/auto-complete/auto-complete.component.html +0 -1
- package/lib/field/auto-complete/auto-complete.component.ts +31 -16
- package/lib/field/cancel-alert/cancel-alert.component.ts +0 -1
- package/lib/field/check-box/check-box.component.html +18 -6
- package/lib/field/check-box/check-box.component.ts +17 -12
- package/lib/field/currency/currency.component.html +4 -4
- package/lib/field/currency/currency.component.ts +42 -20
- package/lib/field/date/date.component.html +3 -7
- package/lib/field/date/date.component.ts +22 -40
- package/lib/field/date-time/date-time.component.html +3 -4
- package/lib/field/date-time/date-time.component.ts +35 -17
- package/lib/field/decimal/decimal.component.html +4 -3
- package/lib/field/decimal/decimal.component.ts +47 -22
- package/lib/field/dropdown/dropdown.component.html +1 -0
- package/lib/field/dropdown/dropdown.component.ts +146 -19
- package/lib/field/email/email.component.ts +24 -5
- package/lib/field/group/group.component.ts +2 -3
- package/lib/field/integer/integer.component.ts +22 -5
- package/lib/field/list-view-action-buttons/list-view-action-buttons.component.html +1 -1
- package/lib/field/list-view-action-buttons/list-view-action-buttons.component.ts +3 -3
- package/lib/field/location/config-ext.json +8 -0
- package/lib/field/location/location.component.html +45 -0
- package/lib/field/location/location.component.scss +18 -0
- package/lib/field/location/location.component.spec.ts +22 -0
- package/lib/field/location/location.component.ts +385 -0
- package/lib/field/multiselect/multiselect.component.ts +17 -10
- package/lib/field/percentage/percentage.component.html +3 -3
- package/lib/field/percentage/percentage.component.ts +45 -21
- package/lib/field/phone/config-ext.json +1 -1
- package/lib/field/phone/phone.component.html +9 -6
- package/lib/field/phone/phone.component.scss +9 -0
- package/lib/field/phone/phone.component.ts +30 -27
- package/lib/field/radio-buttons/radio-buttons.component.html +17 -12
- package/lib/field/radio-buttons/radio-buttons.component.ts +13 -10
- package/lib/field/rich-text/rich-text.component.ts +19 -9
- package/lib/field/scalar-list/scalar-list.component.ts +3 -5
- package/lib/field/selectable-card/selectable-card.component.html +40 -0
- package/lib/field/selectable-card/selectable-card.component.scss +0 -0
- package/lib/field/selectable-card/selectable-card.component.spec.ts +22 -0
- package/lib/field/selectable-card/selectable-card.component.ts +255 -0
- package/lib/field/semantic-link/semantic-link.component.ts +0 -1
- package/lib/field/text/text.component.ts +8 -5
- package/lib/field/text-area/text-area.component.html +4 -1
- package/lib/field/text-area/text-area.component.ts +22 -6
- package/lib/field/text-content/text-content.component.ts +0 -1
- package/lib/field/text-input/text-input.component.ts +22 -5
- package/lib/field/time/time.component.html +2 -2
- package/lib/field/time/time.component.ts +35 -7
- package/lib/field/url/url.component.ts +22 -5
- package/lib/field/user-reference/user-reference.component.html +40 -46
- package/lib/field/user-reference/user-reference.component.ts +111 -21
- package/lib/infra/Containers/flow-container/flow-container.component.html +1 -1
- package/lib/infra/Containers/flow-container/flow-container.component.ts +25 -48
- package/lib/infra/Containers/flow-container/helpers.ts +2 -2
- package/lib/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts +0 -1
- package/lib/infra/Containers/modal-view-container/modal-view-container.component.html +1 -11
- package/lib/infra/Containers/modal-view-container/modal-view-container.component.ts +1 -9
- package/lib/infra/Containers/preview-view-container/preview-view-container.component.ts +1 -1
- package/lib/infra/Containers/view-container/helper.ts +22 -0
- package/lib/infra/Containers/view-container/view-container.component.ts +5 -18
- package/lib/infra/action-buttons/action-buttons.component.html +1 -1
- package/lib/infra/action-buttons/action-buttons.component.ts +0 -1
- package/lib/infra/assignment/assignment.component.html +1 -1
- package/lib/infra/assignment/assignment.component.ts +82 -41
- package/lib/infra/assignment-card/assignment-card.component.html +1 -0
- package/lib/infra/assignment-card/assignment-card.component.ts +0 -1
- package/lib/infra/dashboard-filter/dashboard-filter.component.ts +0 -1
- package/lib/infra/defer-load/defer-load.component.ts +8 -6
- package/lib/infra/error-boundary/error-boundary.component.ts +0 -1
- package/lib/infra/multi-step/multi-step.component.ts +0 -1
- package/lib/infra/navbar/navbar.component.ts +3 -6
- package/lib/infra/reference/reference.component.ts +77 -90
- package/lib/infra/region/region.component.ts +0 -1
- package/lib/infra/root-container/root-container.component.html +2 -15
- package/lib/infra/root-container/root-container.component.ts +27 -33
- package/lib/infra/stages/stages.component.scss +2 -2
- package/lib/infra/stages/stages.component.ts +0 -1
- package/lib/infra/view/view.component.html +7 -20
- package/lib/infra/view/view.component.ts +20 -3
- package/lib/template/app-shell/app-shell.component.ts +20 -3
- package/lib/template/banner-page/banner-page.component.ts +0 -1
- package/lib/template/base/details-template-base.ts +67 -0
- package/lib/template/base/form-template-base.ts +16 -0
- package/lib/template/case-summary/case-summary.component.ts +7 -23
- package/lib/template/case-view/case-view.component.html +4 -4
- package/lib/template/case-view/case-view.component.ts +8 -14
- package/lib/template/confirmation/confirmation.component.html +1 -1
- package/lib/template/confirmation/confirmation.component.ts +1 -2
- package/lib/template/data-reference/data-reference.component.ts +36 -41
- package/lib/template/default-form/default-form.component.html +0 -4
- package/lib/template/default-form/default-form.component.ts +41 -25
- package/lib/template/details/details.component.ts +7 -42
- package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +6 -40
- package/lib/template/details-one-column/details-one-column.component.ts +7 -43
- package/lib/template/details-sub-tabs/details-sub-tabs.component.html +1 -2
- package/lib/template/details-sub-tabs/details-sub-tabs.component.ts +5 -38
- package/lib/template/details-three-column/details-three-column.component.ts +7 -44
- package/lib/template/details-two-column/details-two-column.component.ts +8 -45
- package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +7 -43
- package/lib/template/dynamic-tabs/dynamic-tabs.component.html +3 -0
- package/lib/template/dynamic-tabs/dynamic-tabs.component.ts +8 -4
- package/lib/template/field-group-list/field-group-list.component.ts +0 -1
- package/lib/template/field-group-template/field-group-template.component.html +7 -7
- package/lib/template/field-group-template/field-group-template.component.scss +8 -0
- package/lib/template/field-group-template/field-group-template.component.ts +68 -48
- package/lib/template/field-value-list/field-value-list.component.html +2 -2
- package/lib/template/field-value-list/field-value-list.component.scss +6 -1
- package/lib/template/field-value-list/field-value-list.component.ts +0 -1
- package/lib/template/inline-dashboard/inline-dashboard.component.ts +0 -1
- package/lib/template/inline-dashboard-page/inline-dashboard-page.component.ts +2 -3
- package/lib/template/list-page/list-page.component.ts +0 -1
- package/lib/template/list-view/list-view.component.html +6 -1
- package/lib/template/list-view/list-view.component.scss +11 -0
- package/lib/template/list-view/list-view.component.ts +25 -11
- package/lib/template/list-view/listViewHelpers.ts +4 -10
- package/lib/template/list-view/utils.ts +2 -5
- package/lib/template/multi-reference-readonly/multi-reference-readonly.component.ts +0 -1
- package/lib/template/narrow-wide-form/narrow-wide-form.component.ts +1 -2
- package/lib/template/one-column/one-column.component.ts +4 -4
- package/lib/template/one-column-page/one-column-page.component.ts +0 -1
- package/lib/template/one-column-tab/one-column-tab.component.ts +1 -2
- package/lib/template/page/page.component.ts +1 -2
- package/lib/template/promoted-filters/promoted-filters.component.ts +1 -2
- package/lib/template/repeating-structures/repeating-structures.component.ts +1 -2
- package/lib/template/simple-table/simple-table.component.ts +0 -1
- package/lib/template/simple-table-manual/helpers.ts +126 -10
- package/lib/template/simple-table-manual/simple-table-manual.component.html +25 -6
- package/lib/template/simple-table-manual/simple-table-manual.component.scss +12 -3
- package/lib/template/simple-table-manual/simple-table-manual.component.ts +110 -54
- package/lib/template/simple-table-select/simple-table-select.component.ts +3 -4
- package/lib/template/single-reference-readonly/single-reference-readonly.component.ts +0 -1
- package/lib/template/sub-tabs/sub-tabs.component.ts +0 -1
- package/lib/template/three-column/three-column.component.ts +4 -4
- package/lib/template/three-column-page/three-column-page.component.ts +0 -1
- package/lib/template/two-column/two-column.component.ts +4 -4
- package/lib/template/two-column-page/two-column-page.component.ts +0 -1
- package/lib/template/two-column-tab/two-column-tab.component.ts +1 -2
- package/lib/template/utils.ts +16 -0
- package/lib/template/wide-narrow-form/wide-narrow-form.component.ts +4 -4
- package/lib/template/wide-narrow-page/wide-narrow-page.component.ts +1 -2
- package/lib/template/wss-nav-bar/wss-nav-bar.component.ts +3 -4
- package/lib/widget/app-announcement/app-announcement.component.ts +0 -1
- package/lib/widget/attachment/attachment.component.ts +9 -13
- package/lib/widget/case-history/case-history.component.ts +0 -1
- package/lib/widget/feed-container/feed-container.component.ts +7 -10
- package/lib/widget/file-utility/file-utility.component.ts +2 -6
- package/lib/widget/list-utility/list-utility.component.ts +0 -1
- package/lib/widget/quick-create/quick-create.component.ts +0 -1
- package/lib/widget/todo/todo.component.html +5 -6
- package/lib/widget/todo/todo.component.scss +9 -0
- package/lib/widget/todo/todo.component.ts +95 -85
- package/lib/widget/utility/utility.component.ts +0 -1
- package/package.json +1 -1
|
@@ -11,6 +11,7 @@ import { Utils } from '@pega/angular-sdk-components';
|
|
|
11
11
|
import { ComponentMapperComponent } from '@pega/angular-sdk-components';
|
|
12
12
|
import { PConnFieldProps } from '@pega/angular-sdk-components';
|
|
13
13
|
import { map, Observable, startWith } from 'rxjs';
|
|
14
|
+
import { handleEvent } from '@pega/angular-sdk-components';
|
|
14
15
|
|
|
15
16
|
const OPERATORS_DP = 'D_pyGetOperatorsForCurrentApplication';
|
|
16
17
|
const DROPDOWN_LIST = 'Drop-down list';
|
|
@@ -22,13 +23,13 @@ interface UserReferenceProps extends Omit<PConnFieldProps, 'value'> {
|
|
|
22
23
|
value?: any;
|
|
23
24
|
showAsFormattedText?: boolean;
|
|
24
25
|
additionalProps?: object;
|
|
26
|
+
onRecordChange?: any;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
@Component({
|
|
28
30
|
selector: 'app-user-reference',
|
|
29
31
|
templateUrl: './user-reference.component.html',
|
|
30
32
|
styleUrls: ['./user-reference.component.scss'],
|
|
31
|
-
standalone: true,
|
|
32
33
|
imports: [
|
|
33
34
|
CommonModule,
|
|
34
35
|
ReactiveFormsModule,
|
|
@@ -63,6 +64,9 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
|
|
|
63
64
|
filterValue = '';
|
|
64
65
|
|
|
65
66
|
fieldControl = new FormControl('', null);
|
|
67
|
+
actionsApi: Object;
|
|
68
|
+
propName: string;
|
|
69
|
+
onRecordChange: any;
|
|
66
70
|
|
|
67
71
|
constructor(
|
|
68
72
|
private angularPConnect: AngularPConnectService,
|
|
@@ -80,11 +84,11 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
|
|
|
80
84
|
if (this.formGroup$) {
|
|
81
85
|
// add control to formGroup
|
|
82
86
|
this.formGroup$.addControl(this.controlName$, this.fieldControl);
|
|
83
|
-
this.fieldControl.setValue(this.value$);
|
|
87
|
+
this.fieldControl.setValue(this.getValue(this.value$));
|
|
84
88
|
}
|
|
85
89
|
|
|
86
90
|
this.filteredOptions = this.fieldControl.valueChanges.pipe(
|
|
87
|
-
startWith(''),
|
|
91
|
+
startWith(this.getValue(this.value$) || ''),
|
|
88
92
|
map(value => this._filter(value || ''))
|
|
89
93
|
);
|
|
90
94
|
}
|
|
@@ -123,6 +127,21 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
|
|
|
123
127
|
return this.options$?.filter(option => option.value?.toLowerCase().includes(filterVal));
|
|
124
128
|
}
|
|
125
129
|
|
|
130
|
+
isUserNameAvailable = user => {
|
|
131
|
+
return typeof user === 'object' && user !== null && user.userName;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
getUserName = user => {
|
|
135
|
+
return user.userName;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
getValue = user => {
|
|
139
|
+
if (this.displayAs$ === DROPDOWN_LIST) {
|
|
140
|
+
return this.utils.getUserId(user) || this.getUserName(user);
|
|
141
|
+
}
|
|
142
|
+
return this.isUserNameAvailable(user) ? this.getUserName(user) : this.utils.getUserId(user);
|
|
143
|
+
};
|
|
144
|
+
|
|
126
145
|
async checkAndUpdate() {
|
|
127
146
|
// Should always check the bridge to see if the component should
|
|
128
147
|
// update itself (re-render)
|
|
@@ -137,6 +156,7 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
|
|
|
137
156
|
async updateSelf() {
|
|
138
157
|
const props = this.pConn$.getConfigProps() as UserReferenceProps;
|
|
139
158
|
this.testId = props.testId;
|
|
159
|
+
this.onRecordChange = props?.onRecordChange;
|
|
140
160
|
|
|
141
161
|
const { label, displayAs, value, showAsFormattedText, helperText, placeholder, displayMode } = props;
|
|
142
162
|
|
|
@@ -147,34 +167,35 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
|
|
|
147
167
|
this.placeholder = placeholder || '';
|
|
148
168
|
this.displayMode$ = displayMode;
|
|
149
169
|
|
|
170
|
+
if (value && typeof value === 'object') {
|
|
171
|
+
this.value$ = value.userName ? value.userName : '';
|
|
172
|
+
} else {
|
|
173
|
+
this.value$ = value || '';
|
|
174
|
+
}
|
|
175
|
+
|
|
150
176
|
const { readOnly, required } = props;
|
|
151
177
|
[this.bReadonly$, this.bRequired$] = [readOnly, required].map(prop => prop === true || (typeof prop === 'string' && prop === 'true'));
|
|
152
178
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
};
|
|
179
|
+
this.actionsApi = this.pConn$.getActionsApi();
|
|
180
|
+
this.propName = this.pConn$.getStateProps().value;
|
|
156
181
|
|
|
157
182
|
this.userID$ = this.utils.getUserId(value);
|
|
158
183
|
|
|
159
184
|
if (this.userID$ && this.bReadonly$ && this.showAsFormattedText$) {
|
|
160
|
-
if (isUserNameAvailable(value)) {
|
|
185
|
+
if (this.isUserNameAvailable(value)) {
|
|
161
186
|
this.userName$ = value.userName;
|
|
162
187
|
} else {
|
|
163
188
|
// if same user ref field is referred in view as editable & readonly formatted text
|
|
164
189
|
// referenced users won't be available, so get user details from dx api
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
if (resp.data && resp.data.pyOperatorInfo && resp.data.pyOperatorInfo.pyUserName) {
|
|
168
|
-
this.userName$ = resp.data.pyOperatorInfo.pyUserName;
|
|
169
|
-
}
|
|
170
|
-
});
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
191
|
+
this.userName$ = await getUserName(this.pConn$, this.userID$);
|
|
171
192
|
}
|
|
172
193
|
} else if (displayAs === DROPDOWN_LIST || displayAs === SEARCH_BOX) {
|
|
173
194
|
const queryPayload = {
|
|
174
195
|
dataViewName: OPERATORS_DP
|
|
175
196
|
};
|
|
176
197
|
try {
|
|
177
|
-
const resp
|
|
198
|
+
const resp = await PCore.getRestClient().invokeRestApi('getListData', { queryPayload }, ''); // 3rd arg empty string until typedef marked correctly
|
|
178
199
|
if (resp?.data) {
|
|
179
200
|
const ddDataSource = resp.data.data.map(listItem => ({
|
|
180
201
|
key: listItem.pyUserIdentifier,
|
|
@@ -195,7 +216,13 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
|
|
|
195
216
|
if (event?.target) {
|
|
196
217
|
this.filterValue = (event.target as HTMLInputElement).value;
|
|
197
218
|
}
|
|
198
|
-
|
|
219
|
+
const value = event?.value;
|
|
220
|
+
handleEvent(this.actionsApi, 'change', this.propName, value);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
optionChanged(event: any) {
|
|
224
|
+
const value = event?.option?.value;
|
|
225
|
+
handleEvent(this.actionsApi, 'change', this.propName, value);
|
|
199
226
|
}
|
|
200
227
|
|
|
201
228
|
fieldOnBlur(event: any) {
|
|
@@ -204,12 +231,12 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
|
|
|
204
231
|
const index = this.options$?.findIndex(element => element.value === event.target.value);
|
|
205
232
|
key = index > -1 ? (key = this.options$[index].key) : event.target.value;
|
|
206
233
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
234
|
+
const value = key;
|
|
235
|
+
handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
|
|
236
|
+
if (this.onRecordChange) {
|
|
237
|
+
event.target.value = value;
|
|
238
|
+
this.onRecordChange(event);
|
|
239
|
+
}
|
|
213
240
|
}
|
|
214
241
|
|
|
215
242
|
getErrorMessage() {
|
|
@@ -229,3 +256,66 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
|
|
|
229
256
|
return errMessage;
|
|
230
257
|
}
|
|
231
258
|
}
|
|
259
|
+
|
|
260
|
+
const buildColumnForDisplayValue = dataObj => {
|
|
261
|
+
if (dataObj.columns) {
|
|
262
|
+
dataObj.columns = dataObj.columns.map(column => {
|
|
263
|
+
const tempColObj = { ...column };
|
|
264
|
+
if (tempColObj.key === 'true') {
|
|
265
|
+
tempColObj.useForSearch = true;
|
|
266
|
+
} else {
|
|
267
|
+
tempColObj.useForSearch = false;
|
|
268
|
+
}
|
|
269
|
+
return tempColObj;
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
function getUserName(pConn, userId = ''): Promise<string> {
|
|
275
|
+
return new Promise(resolve => {
|
|
276
|
+
const { parameters = {}, referenceList } = pConn.getConfigProps();
|
|
277
|
+
const contextName = pConn.getContextName();
|
|
278
|
+
|
|
279
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
280
|
+
const OPERATORS_DP = referenceList || PCore.getEnvironmentInfo().getDefaultOperatorDP() || '';
|
|
281
|
+
|
|
282
|
+
const columns = [
|
|
283
|
+
{
|
|
284
|
+
value: 'pyUserName',
|
|
285
|
+
display: 'true',
|
|
286
|
+
useForSearch: true,
|
|
287
|
+
primary: 'true'
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
value: 'pyUserIdentifier',
|
|
291
|
+
setProperty: 'Associated property',
|
|
292
|
+
key: 'true',
|
|
293
|
+
display: 'true',
|
|
294
|
+
secondary: 'true',
|
|
295
|
+
useForSearch: true
|
|
296
|
+
}
|
|
297
|
+
];
|
|
298
|
+
|
|
299
|
+
const dataConfig: any = {
|
|
300
|
+
dataSource: OPERATORS_DP,
|
|
301
|
+
parameters,
|
|
302
|
+
matchPosition: 'equals',
|
|
303
|
+
listType: 'datapage',
|
|
304
|
+
columns,
|
|
305
|
+
cacheLifeSpan: 'form',
|
|
306
|
+
deferDatasource: false,
|
|
307
|
+
maxResultsDisplay: '1',
|
|
308
|
+
ignoreCase: true
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
PCore.getDataApi()
|
|
312
|
+
.init(dataConfig, contextName)
|
|
313
|
+
.then(dataApiObj => {
|
|
314
|
+
buildColumnForDisplayValue(dataApiObj);
|
|
315
|
+
dataApiObj.registerForBufferedCall({ waitTime: 50 });
|
|
316
|
+
dataApiObj.fetchData(userId).then((response: any) => {
|
|
317
|
+
resolve(response.data?.[0]?.pyUserName || userId);
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
</div>
|
|
39
39
|
</mat-card>
|
|
40
40
|
</div>
|
|
41
|
-
<div *ngIf="bShowBanner && bShowConfirm">
|
|
41
|
+
<div *ngIf="bShowBanner && bShowConfirm && confirm_pconn">
|
|
42
42
|
<component-mapper name="View" [props]="{ formGroup$, pConn$: confirm_pconn }"></component-mapper>
|
|
43
43
|
</div>
|
|
44
44
|
</div>
|
|
@@ -6,7 +6,7 @@ import { publicConstants } from '@pega/pcore-pconnect-typedefs/constants';
|
|
|
6
6
|
import { ProgressSpinnerService } from '@pega/angular-sdk-components';
|
|
7
7
|
import { ReferenceComponent } from '@pega/angular-sdk-components';
|
|
8
8
|
import { Utils } from '@pega/angular-sdk-components';
|
|
9
|
-
import { getToDoAssignments, showBanner } from './helpers';
|
|
9
|
+
import { getToDoAssignments, hasAssignments, showBanner } from './helpers';
|
|
10
10
|
import { ComponentMapperComponent } from '@pega/angular-sdk-components';
|
|
11
11
|
import { FlowContainerBaseComponent } from '@pega/angular-sdk-components';
|
|
12
12
|
|
|
@@ -29,7 +29,6 @@ interface FlowContainerProps {
|
|
|
29
29
|
templateUrl: './flow-container.component.html',
|
|
30
30
|
styleUrls: ['./flow-container.component.scss'],
|
|
31
31
|
providers: [Utils],
|
|
32
|
-
standalone: true,
|
|
33
32
|
imports: [CommonModule, MatCardModule, forwardRef(() => ComponentMapperComponent)]
|
|
34
33
|
})
|
|
35
34
|
export class FlowContainerComponent extends FlowContainerBaseComponent implements OnInit, OnDestroy {
|
|
@@ -104,6 +103,8 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
104
103
|
|
|
105
104
|
this.initContainer();
|
|
106
105
|
|
|
106
|
+
this.checkAndUpdate();
|
|
107
|
+
|
|
107
108
|
PCore.getPubSubUtils().subscribe(
|
|
108
109
|
PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL,
|
|
109
110
|
() => {
|
|
@@ -119,6 +120,14 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
119
120
|
},
|
|
120
121
|
'cancelPressed'
|
|
121
122
|
);
|
|
123
|
+
|
|
124
|
+
PCore.getPubSubUtils().subscribe(
|
|
125
|
+
'clearBannerMessages',
|
|
126
|
+
() => {
|
|
127
|
+
this.banners = [];
|
|
128
|
+
},
|
|
129
|
+
'clearBannerMessages'
|
|
130
|
+
);
|
|
122
131
|
}
|
|
123
132
|
|
|
124
133
|
ngOnDestroy() {
|
|
@@ -129,6 +138,8 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
129
138
|
PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL, 'cancelAssignment');
|
|
130
139
|
|
|
131
140
|
PCore.getPubSubUtils().unsubscribe('cancelPressed', 'cancelPressed');
|
|
141
|
+
|
|
142
|
+
PCore.getPubSubUtils().unsubscribe('clearBannerMessages', 'clearBannerMessages');
|
|
132
143
|
}
|
|
133
144
|
|
|
134
145
|
handleCancel() {
|
|
@@ -153,13 +164,15 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
153
164
|
const caseViewModeFromProps = this.angularPConnect.getComponentProp(this, 'caseViewMode');
|
|
154
165
|
const caseViewModeFromRedux = pConn.getValue('context_data.caseViewMode', '');
|
|
155
166
|
|
|
167
|
+
const completeProps = this.angularPConnect.getCurrentCompleteProps(this) as FlowContainerProps;
|
|
168
|
+
|
|
156
169
|
// ONLY call updateSelf when the component should update
|
|
157
170
|
// AND removing the "gate" that was put there since shouldComponentUpdate
|
|
158
171
|
// should be the real "gate"
|
|
172
|
+
// eslint-disable-next-line sonarjs/no-collapsible-if
|
|
159
173
|
if (bUpdateSelf || caseViewModeFromProps !== caseViewModeFromRedux) {
|
|
160
174
|
// don't want to redraw the flow container when there are page messages, because
|
|
161
175
|
// the redraw causes us to loose the errors on the elements
|
|
162
|
-
const completeProps = this.angularPConnect.getCurrentCompleteProps(this) as FlowContainerProps;
|
|
163
176
|
if (!completeProps.pageMessages || completeProps.pageMessages.length == 0) {
|
|
164
177
|
// with a cancel, need to timeout so todo will update correctly
|
|
165
178
|
if (this.bHasCancel) {
|
|
@@ -170,10 +183,10 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
170
183
|
} else {
|
|
171
184
|
this.updateSelf();
|
|
172
185
|
}
|
|
173
|
-
} else {
|
|
174
|
-
this.showPageMessages(completeProps);
|
|
175
186
|
}
|
|
176
187
|
}
|
|
188
|
+
|
|
189
|
+
this.showPageMessages(completeProps);
|
|
177
190
|
}
|
|
178
191
|
|
|
179
192
|
showPageMessages(completeProps: FlowContainerProps) {
|
|
@@ -198,7 +211,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
198
211
|
}
|
|
199
212
|
|
|
200
213
|
initContainer() {
|
|
201
|
-
const containerMgr
|
|
214
|
+
const containerMgr = this.pConn$.getContainerManager();
|
|
202
215
|
const baseContext = this.pConn$.getContextName();
|
|
203
216
|
const containerName = this.pConn$.getContainerName();
|
|
204
217
|
const containerType = 'single';
|
|
@@ -237,7 +250,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
237
250
|
|
|
238
251
|
// when true, update arChildren from pConn, otherwise, arChilren will be updated in updateSelf()
|
|
239
252
|
if (bLoadChildren) {
|
|
240
|
-
this.arChildren$ = this.pConn$.getChildren()
|
|
253
|
+
this.arChildren$ = this.pConn$.getChildren();
|
|
241
254
|
}
|
|
242
255
|
|
|
243
256
|
// const oData = this.pConn$.getDataObject();
|
|
@@ -275,44 +288,9 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
275
288
|
this.psService.sendMessage(false);
|
|
276
289
|
}
|
|
277
290
|
|
|
278
|
-
hasAssignments() {
|
|
279
|
-
let hasAssignments = false;
|
|
280
|
-
const assignmentsList: any[] = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS);
|
|
281
|
-
// const thisOperator = PCore.getEnvironmentInfo().getOperatorIdentifier();
|
|
282
|
-
// 8.7 includes assignments in Assignments List that may be assigned to
|
|
283
|
-
// a different operator. So, see if there are any assignments for
|
|
284
|
-
// the current operator
|
|
285
|
-
const isEmbedded = window.location.href.includes('embedded');
|
|
286
|
-
let bAssignmentsForThisOperator = false;
|
|
287
|
-
|
|
288
|
-
if (isEmbedded) {
|
|
289
|
-
const thisOperator = PCore.getEnvironmentInfo().getOperatorIdentifier();
|
|
290
|
-
for (const assignment of assignmentsList) {
|
|
291
|
-
if (assignment.assigneeInfo.ID === thisOperator) {
|
|
292
|
-
bAssignmentsForThisOperator = true;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
} else {
|
|
296
|
-
bAssignmentsForThisOperator = true;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
// Bail if there is no assignmentsList
|
|
300
|
-
if (!assignmentsList) {
|
|
301
|
-
return hasAssignments;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
const hasChildCaseAssignments = this.hasChildCaseAssignments();
|
|
305
|
-
|
|
306
|
-
if (bAssignmentsForThisOperator || hasChildCaseAssignments || this.isCaseWideLocalAction()) {
|
|
307
|
-
hasAssignments = true;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
return hasAssignments;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
291
|
isCaseWideLocalAction() {
|
|
314
292
|
const actionID = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.ACTIVE_ACTION_ID);
|
|
315
|
-
const caseActions = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.AVAILABLEACTIONS)
|
|
293
|
+
const caseActions = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.AVAILABLEACTIONS);
|
|
316
294
|
let bCaseWideAction = false;
|
|
317
295
|
if (caseActions && actionID) {
|
|
318
296
|
const actionObj = caseActions.find(caseAction => caseAction.ID === actionID);
|
|
@@ -457,7 +435,9 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
457
435
|
|
|
458
436
|
showCaseMessages() {
|
|
459
437
|
this.caseMessages$ = this.localizedVal(this.pConn$.getValue('caseMessages'), this.localeCategory);
|
|
460
|
-
|
|
438
|
+
// caseMessages's behavior has changed in 24.2, and hence it doesn't let Optional Action work.
|
|
439
|
+
// Changing the below condition for now. Was: (theCaseMessages || !hasAssignments())
|
|
440
|
+
if (!hasAssignments(this.pConn$)) {
|
|
461
441
|
this.bHasCaseMessages$ = true;
|
|
462
442
|
this.bShowConfirm = true;
|
|
463
443
|
this.checkSvg$ = this.utils.getImageSrc('check', this.utils.getSDKStaticContentUrl());
|
|
@@ -467,9 +447,6 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
467
447
|
this.caseMessages$ = this.localizedVal('Thank you! The next step in this case has been routed appropriately.', this.localeCategory);
|
|
468
448
|
}
|
|
469
449
|
|
|
470
|
-
// publish this "assignmentFinished" for mashup, need to get approved as a standard
|
|
471
|
-
PCore.getPubSubUtils().publish('assignmentFinished');
|
|
472
|
-
|
|
473
450
|
this.psService.sendMessage(false);
|
|
474
451
|
} else {
|
|
475
452
|
this.bHasCaseMessages$ = false;
|
|
@@ -480,6 +457,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
480
457
|
updateFlowContainerChildren() {
|
|
481
458
|
// routingInfo was added as component prop in populateAdditionalProps
|
|
482
459
|
const routingInfo = this.angularPConnect.getComponentProp(this, 'routingInfo');
|
|
460
|
+
this.confirm_pconn = null;
|
|
483
461
|
|
|
484
462
|
let loadingInfo: any;
|
|
485
463
|
try {
|
|
@@ -593,7 +571,6 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
|
|
|
593
571
|
});
|
|
594
572
|
}
|
|
595
573
|
|
|
596
|
-
// eslint-disable-next-line sonarjs/no-identical-functions
|
|
597
574
|
topViewRefresh(): void {
|
|
598
575
|
Object.values(this.formGroup$.controls).forEach(control => {
|
|
599
576
|
control.markAsTouched();
|
|
@@ -28,12 +28,12 @@ function getChildCaseAssignments(pConnect) {
|
|
|
28
28
|
return allAssignments;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
function hasAssignments(pConnect) {
|
|
31
|
+
export function hasAssignments(pConnect) {
|
|
32
32
|
const { CASE_INFO } = PCore.getConstants();
|
|
33
33
|
const assignments = pConnect.getValue(CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS);
|
|
34
34
|
const childCasesAssignments = getChildCaseAssignments(pConnect);
|
|
35
35
|
|
|
36
|
-
return assignments || childCasesAssignments || isCaseWideLocalAction(pConnect);
|
|
36
|
+
return assignments || childCasesAssignments?.length || isCaseWideLocalAction(pConnect);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
export const showBanner = getPConnect => {
|
|
@@ -14,7 +14,6 @@ import { FormGroup } from '@angular/forms';
|
|
|
14
14
|
selector: 'app-hybrid-view-container',
|
|
15
15
|
templateUrl: './hybrid-view-container.component.html',
|
|
16
16
|
styleUrls: ['./hybrid-view-container.component.scss'],
|
|
17
|
-
standalone: true,
|
|
18
17
|
imports: [CommonModule]
|
|
19
18
|
})
|
|
20
19
|
export class HybridViewContainerComponent {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div id="dialog" *ngIf="bShowModal$
|
|
1
|
+
<div id="dialog" *ngIf="bShowModal$" class="psdk-dialog-background">
|
|
2
2
|
<div class="psdk-modal-view-container-top" id="{{ buildName$ }}">
|
|
3
3
|
<h3 *ngIf="title$ != ''">{{ title$ }}</h3>
|
|
4
4
|
<component-mapper
|
|
@@ -15,16 +15,6 @@
|
|
|
15
15
|
</div>
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
|
-
<div *ngIf="bShowModal$ && !bShowAsModal$">
|
|
19
|
-
<div id="{{ buildName$ }}">
|
|
20
|
-
<h3 *ngIf="title$ != ''">{{ title$ }}</h3>
|
|
21
|
-
<component-mapper
|
|
22
|
-
name="Assignment"
|
|
23
|
-
[props]="{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }"
|
|
24
|
-
></component-mapper>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
18
|
<div *ngIf="bShowCancelAlert$">
|
|
29
19
|
<component-mapper
|
|
30
20
|
name="CancelAlert"
|
|
@@ -18,12 +18,10 @@ import { ReferenceComponent } from '@pega/angular-sdk-components';
|
|
|
18
18
|
selector: 'app-modal-view-container',
|
|
19
19
|
templateUrl: './modal-view-container.component.html',
|
|
20
20
|
styleUrls: ['./modal-view-container.component.scss'],
|
|
21
|
-
standalone: true,
|
|
22
21
|
imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
|
|
23
22
|
})
|
|
24
23
|
export class ModalViewContainerComponent implements OnInit, OnDestroy {
|
|
25
24
|
@Input() pConn$: typeof PConnect;
|
|
26
|
-
@Input() displayOnlyFA$: boolean;
|
|
27
25
|
|
|
28
26
|
// for when non modal
|
|
29
27
|
@Output() modalVisibleChange = new EventEmitter<boolean>();
|
|
@@ -39,7 +37,6 @@ export class ModalViewContainerComponent implements OnInit, OnDestroy {
|
|
|
39
37
|
context$: string;
|
|
40
38
|
title$ = '';
|
|
41
39
|
bShowModal$ = false;
|
|
42
|
-
bShowAsModal$ = true;
|
|
43
40
|
itemKey$: string;
|
|
44
41
|
formGroup$: FormGroup;
|
|
45
42
|
oCaseInfo: Object = {};
|
|
@@ -73,11 +70,6 @@ export class ModalViewContainerComponent implements OnInit, OnDestroy {
|
|
|
73
70
|
}
|
|
74
71
|
|
|
75
72
|
ngOnInit(): void {
|
|
76
|
-
if (this.displayOnlyFA$) {
|
|
77
|
-
// for when non modal
|
|
78
|
-
this.bShowAsModal$ = false;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
73
|
// First thing in initialization is registering and subscribing to the AngularPConnect service
|
|
82
74
|
this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
|
|
83
75
|
|
|
@@ -89,7 +81,7 @@ export class ModalViewContainerComponent implements OnInit, OnDestroy {
|
|
|
89
81
|
this.itemKey$ = baseContext.concat('/').concat(acName);
|
|
90
82
|
}
|
|
91
83
|
|
|
92
|
-
const containerMgr
|
|
84
|
+
const containerMgr = this.pConn$.getContainerManager();
|
|
93
85
|
|
|
94
86
|
containerMgr.initializeContainers({
|
|
95
87
|
type: 'multiple'
|
|
@@ -18,7 +18,7 @@ export class PreviewViewContainerComponent implements OnInit {
|
|
|
18
18
|
@Input() pConn$: typeof PConnect;
|
|
19
19
|
|
|
20
20
|
ngOnInit(): void {
|
|
21
|
-
const containerMgr
|
|
21
|
+
const containerMgr = this.pConn$.getContainerManager();
|
|
22
22
|
|
|
23
23
|
containerMgr.initializeContainers({
|
|
24
24
|
type: 'multiple'
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const addContainerItem = pConnect => {
|
|
2
|
+
const containerManager = pConnect.getContainerManager();
|
|
3
|
+
const context = pConnect.getContextName();
|
|
4
|
+
containerManager.addContainerItem({
|
|
5
|
+
context,
|
|
6
|
+
semanticURL: ''
|
|
7
|
+
});
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const configureBrowserBookmark = pConnect => {
|
|
11
|
+
const context = pConnect.getContextName();
|
|
12
|
+
const containerName = pConnect.getContainerName();
|
|
13
|
+
const navPages = pConnect.getValue('pyPortal.pyPrimaryNavPages');
|
|
14
|
+
const defaultViewLabel = Array.isArray(navPages) && navPages[0] ? navPages[0].pyLabel : '';
|
|
15
|
+
PCore.configureForBrowserBookmark({
|
|
16
|
+
context,
|
|
17
|
+
containerName,
|
|
18
|
+
acName: containerName,
|
|
19
|
+
semanticURL: '',
|
|
20
|
+
defaultViewLabel
|
|
21
|
+
});
|
|
22
|
+
};
|
|
@@ -5,6 +5,7 @@ import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-c
|
|
|
5
5
|
import { ProgressSpinnerService } from '@pega/angular-sdk-components';
|
|
6
6
|
import { ReferenceComponent } from '@pega/angular-sdk-components';
|
|
7
7
|
import { ComponentMapperComponent } from '@pega/angular-sdk-components';
|
|
8
|
+
import { configureBrowserBookmark } from './helper';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* WARNING: It is not expected that this file should be modified. It is part of infrastructure code that works with
|
|
@@ -27,7 +28,6 @@ interface ViewContainerProps {
|
|
|
27
28
|
selector: 'app-view-container',
|
|
28
29
|
templateUrl: './view-container.component.html',
|
|
29
30
|
styleUrls: ['./view-container.component.scss'],
|
|
30
|
-
standalone: true,
|
|
31
31
|
imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
|
|
32
32
|
})
|
|
33
33
|
export class ViewContainerComponent implements OnInit, OnDestroy {
|
|
@@ -86,7 +86,7 @@ export class ViewContainerComponent implements OnInit, OnDestroy {
|
|
|
86
86
|
|
|
87
87
|
this.pConn$.isBoundToState();
|
|
88
88
|
|
|
89
|
-
const containerMgr
|
|
89
|
+
const containerMgr = this.pConn$.getContainerManager();
|
|
90
90
|
|
|
91
91
|
this.prepareDispatchObject = this.prepareDispatchObject.bind(this);
|
|
92
92
|
|
|
@@ -96,20 +96,10 @@ export class ViewContainerComponent implements OnInit, OnDestroy {
|
|
|
96
96
|
// And expose less via ui-bootstrap.js
|
|
97
97
|
this.state = {
|
|
98
98
|
dispatchObject: this.dispatchObject,
|
|
99
|
-
// PCore is defined in pxBootstrapShell - eventually will be exported in place of constellationCore
|
|
100
|
-
|
|
101
99
|
visible: !PCore.checkIfSemanticURL()
|
|
102
100
|
};
|
|
103
101
|
|
|
104
|
-
// here, to match Nebula/Constellation, the constructor of ViewContainer is only called once, and thus init/add container is only
|
|
105
|
-
// called once. Because of Angular creating and destroy components if the parent changes a lot, this component will be
|
|
106
|
-
// created and destroyed more than once. So the sessionStore "hasViewContainer" is set to false in rootContainer and then
|
|
107
|
-
// after first round is true here. Subsequent ViewContainer creation will not init/add more containers.
|
|
108
|
-
|
|
109
102
|
if (sessionStorage.getItem('hasViewContainer') == 'false') {
|
|
110
|
-
// unlike Nebula/Constellation, have to initializeContainer after we create a dispatcObject and state, otherwise, when calling
|
|
111
|
-
// initializeContainer before, code will get executed that needs state that wasn't defined.
|
|
112
|
-
|
|
113
103
|
containerMgr.initializeContainers({
|
|
114
104
|
type: mode === CONTAINER_TYPE.MULTIPLE ? CONTAINER_TYPE.MULTIPLE : CONTAINER_TYPE.SINGLE
|
|
115
105
|
});
|
|
@@ -118,12 +108,9 @@ export class ViewContainerComponent implements OnInit, OnDestroy {
|
|
|
118
108
|
/* NOTE: setContainerLimit use is temporary. It is a non-public, unsupported API. */
|
|
119
109
|
PCore.getContainerUtils().setContainerLimit(`${APP.APP}/${name}`, limit);
|
|
120
110
|
}
|
|
121
|
-
}
|
|
122
111
|
|
|
123
|
-
|
|
124
|
-
if (this.
|
|
125
|
-
containerMgr.addContainerItem(this.dispatchObject);
|
|
126
|
-
}
|
|
112
|
+
if (!PCore.checkIfSemanticURL()) containerMgr.addContainerItem(this.pConn$ as any);
|
|
113
|
+
if (!this.displayOnlyFA$) configureBrowserBookmark(this.pConn$);
|
|
127
114
|
|
|
128
115
|
sessionStorage.setItem('hasViewContainer', 'true');
|
|
129
116
|
}
|
|
@@ -254,7 +241,7 @@ export class ViewContainerComponent implements OnInit, OnDestroy {
|
|
|
254
241
|
console.error(`ViewContainer has a newComp that is NOT a reference!`);
|
|
255
242
|
|
|
256
243
|
this.createdViewPConn$ = newComp;
|
|
257
|
-
const newConfigProps
|
|
244
|
+
const newConfigProps = newComp.getConfigProps();
|
|
258
245
|
this.templateName$ = newConfigProps.template || '';
|
|
259
246
|
this.title$ = newConfigProps.title || '';
|
|
260
247
|
// update children with new view's children
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<mat-grid-list cols="2" rowHeight="6.25rem">
|
|
1
|
+
<mat-grid-list *ngIf="arMainButtons$ && arSecondaryButtons$" cols="2" rowHeight="6.25rem">
|
|
2
2
|
<mat-grid-tile>
|
|
3
3
|
<button *ngFor="let aButton of arSecondaryButtons$" mat-raised-button color="secondary" (click)="buttonClick(aButton.jsAction, 'secondary')">
|
|
4
4
|
{{ localizedVal(aButton.name, localeCategory) }}
|
|
@@ -7,7 +7,6 @@ import { MatGridListModule } from '@angular/material/grid-list';
|
|
|
7
7
|
selector: 'app-action-buttons',
|
|
8
8
|
templateUrl: './action-buttons.component.html',
|
|
9
9
|
styleUrls: ['./action-buttons.component.scss'],
|
|
10
|
-
standalone: true,
|
|
11
10
|
imports: [CommonModule, MatGridListModule, MatButtonModule]
|
|
12
11
|
})
|
|
13
12
|
export class ActionButtonsComponent {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div>
|
|
2
|
-
<div><component-mapper name="AlertBanner" [props]="{ banners }" [parent]="this"></component-mapper></div>
|
|
2
|
+
<div><component-mapper name="AlertBanner" [props]="{ banners: bannerService.banners }" [parent]="this"></component-mapper></div>
|
|
3
3
|
<div *ngIf="bHasNavigation$" class="psdk-stepper">
|
|
4
4
|
<component-mapper
|
|
5
5
|
name="MultiStep"
|