@pega/angular-sdk-overrides 0.24.8 → 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.
Files changed (172) hide show
  1. package/lib/designSystemExtension/alert/alert.component.ts +0 -1
  2. package/lib/designSystemExtension/alert-banner/alert-banner.component.ts +1 -2
  3. package/lib/designSystemExtension/banner/banner.component.ts +0 -1
  4. package/lib/designSystemExtension/case-create-stage/case-create-stage.component.ts +1 -2
  5. package/lib/designSystemExtension/field-group/field-group.component.ts +0 -1
  6. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.scss +2 -1
  7. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -2
  8. package/lib/designSystemExtension/material-details/material-details.component.ts +0 -1
  9. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.html +2 -2
  10. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.ts +10 -2
  11. package/lib/designSystemExtension/material-summary-item/material-summary-item.component.ts +0 -1
  12. package/lib/designSystemExtension/material-summary-list/material-summary-list.component.ts +0 -1
  13. package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts +0 -1
  14. package/lib/designSystemExtension/operator/operator.component.html +1 -1
  15. package/lib/designSystemExtension/operator/operator.component.scss +10 -2
  16. package/lib/designSystemExtension/operator/operator.component.ts +5 -5
  17. package/lib/designSystemExtension/pulse/pulse.component.ts +7 -8
  18. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.ts +0 -1
  19. package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.ts +0 -1
  20. package/lib/field/auto-complete/auto-complete.component.html +0 -1
  21. package/lib/field/auto-complete/auto-complete.component.ts +31 -16
  22. package/lib/field/cancel-alert/cancel-alert.component.ts +0 -1
  23. package/lib/field/check-box/check-box.component.html +18 -6
  24. package/lib/field/check-box/check-box.component.ts +17 -12
  25. package/lib/field/currency/currency.component.html +4 -4
  26. package/lib/field/currency/currency.component.ts +42 -20
  27. package/lib/field/date/date.component.html +3 -7
  28. package/lib/field/date/date.component.ts +22 -40
  29. package/lib/field/date-time/date-time.component.html +3 -4
  30. package/lib/field/date-time/date-time.component.ts +35 -17
  31. package/lib/field/decimal/decimal.component.html +4 -3
  32. package/lib/field/decimal/decimal.component.ts +47 -22
  33. package/lib/field/dropdown/dropdown.component.html +1 -0
  34. package/lib/field/dropdown/dropdown.component.ts +146 -19
  35. package/lib/field/email/email.component.ts +24 -5
  36. package/lib/field/group/group.component.ts +2 -3
  37. package/lib/field/integer/integer.component.ts +22 -5
  38. package/lib/field/list-view-action-buttons/list-view-action-buttons.component.html +1 -1
  39. package/lib/field/list-view-action-buttons/list-view-action-buttons.component.ts +3 -3
  40. package/lib/field/location/config-ext.json +8 -0
  41. package/lib/field/location/location.component.html +45 -0
  42. package/lib/field/location/location.component.scss +18 -0
  43. package/lib/field/location/location.component.spec.ts +22 -0
  44. package/lib/field/location/location.component.ts +385 -0
  45. package/lib/field/multiselect/multiselect.component.ts +17 -10
  46. package/lib/field/percentage/percentage.component.html +3 -3
  47. package/lib/field/percentage/percentage.component.ts +45 -21
  48. package/lib/field/phone/config-ext.json +1 -1
  49. package/lib/field/phone/phone.component.html +9 -6
  50. package/lib/field/phone/phone.component.scss +9 -0
  51. package/lib/field/phone/phone.component.ts +30 -27
  52. package/lib/field/radio-buttons/radio-buttons.component.html +17 -12
  53. package/lib/field/radio-buttons/radio-buttons.component.ts +13 -10
  54. package/lib/field/rich-text/rich-text.component.ts +19 -9
  55. package/lib/field/scalar-list/scalar-list.component.ts +3 -5
  56. package/lib/field/selectable-card/selectable-card.component.html +40 -0
  57. package/lib/field/selectable-card/selectable-card.component.scss +0 -0
  58. package/lib/field/selectable-card/selectable-card.component.spec.ts +22 -0
  59. package/lib/field/selectable-card/selectable-card.component.ts +255 -0
  60. package/lib/field/semantic-link/semantic-link.component.ts +0 -1
  61. package/lib/field/text/text.component.ts +8 -5
  62. package/lib/field/text-area/text-area.component.html +4 -1
  63. package/lib/field/text-area/text-area.component.ts +22 -6
  64. package/lib/field/text-content/text-content.component.ts +0 -1
  65. package/lib/field/text-input/text-input.component.ts +22 -5
  66. package/lib/field/time/time.component.html +2 -2
  67. package/lib/field/time/time.component.ts +35 -7
  68. package/lib/field/url/url.component.ts +22 -5
  69. package/lib/field/user-reference/user-reference.component.html +40 -46
  70. package/lib/field/user-reference/user-reference.component.ts +111 -21
  71. package/lib/infra/Containers/flow-container/flow-container.component.html +1 -1
  72. package/lib/infra/Containers/flow-container/flow-container.component.ts +25 -48
  73. package/lib/infra/Containers/flow-container/helpers.ts +2 -2
  74. package/lib/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts +0 -1
  75. package/lib/infra/Containers/modal-view-container/modal-view-container.component.html +1 -11
  76. package/lib/infra/Containers/modal-view-container/modal-view-container.component.ts +1 -9
  77. package/lib/infra/Containers/preview-view-container/preview-view-container.component.ts +1 -1
  78. package/lib/infra/Containers/view-container/helper.ts +22 -0
  79. package/lib/infra/Containers/view-container/view-container.component.ts +5 -18
  80. package/lib/infra/action-buttons/action-buttons.component.html +1 -1
  81. package/lib/infra/action-buttons/action-buttons.component.ts +0 -1
  82. package/lib/infra/assignment/assignment.component.html +1 -1
  83. package/lib/infra/assignment/assignment.component.ts +82 -41
  84. package/lib/infra/assignment-card/assignment-card.component.html +1 -0
  85. package/lib/infra/assignment-card/assignment-card.component.ts +0 -1
  86. package/lib/infra/dashboard-filter/dashboard-filter.component.ts +0 -1
  87. package/lib/infra/defer-load/defer-load.component.ts +8 -6
  88. package/lib/infra/error-boundary/error-boundary.component.ts +0 -1
  89. package/lib/infra/multi-step/multi-step.component.ts +0 -1
  90. package/lib/infra/navbar/navbar.component.ts +3 -6
  91. package/lib/infra/reference/reference.component.ts +77 -90
  92. package/lib/infra/region/region.component.ts +0 -1
  93. package/lib/infra/root-container/root-container.component.html +2 -15
  94. package/lib/infra/root-container/root-container.component.ts +27 -33
  95. package/lib/infra/stages/stages.component.scss +2 -2
  96. package/lib/infra/stages/stages.component.ts +0 -1
  97. package/lib/infra/view/view.component.html +7 -20
  98. package/lib/infra/view/view.component.ts +20 -3
  99. package/lib/template/app-shell/app-shell.component.ts +20 -3
  100. package/lib/template/banner-page/banner-page.component.ts +0 -1
  101. package/lib/template/base/details-template-base.ts +67 -0
  102. package/lib/template/base/form-template-base.ts +16 -0
  103. package/lib/template/case-summary/case-summary.component.ts +7 -23
  104. package/lib/template/case-view/case-view.component.html +4 -4
  105. package/lib/template/case-view/case-view.component.ts +8 -14
  106. package/lib/template/confirmation/confirmation.component.html +1 -1
  107. package/lib/template/confirmation/confirmation.component.ts +1 -2
  108. package/lib/template/data-reference/data-reference.component.ts +36 -41
  109. package/lib/template/default-form/default-form.component.html +0 -4
  110. package/lib/template/default-form/default-form.component.ts +41 -25
  111. package/lib/template/details/details.component.ts +7 -42
  112. package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +6 -40
  113. package/lib/template/details-one-column/details-one-column.component.ts +7 -43
  114. package/lib/template/details-sub-tabs/details-sub-tabs.component.html +1 -2
  115. package/lib/template/details-sub-tabs/details-sub-tabs.component.ts +5 -38
  116. package/lib/template/details-three-column/details-three-column.component.ts +7 -44
  117. package/lib/template/details-two-column/details-two-column.component.ts +8 -45
  118. package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +7 -43
  119. package/lib/template/dynamic-tabs/dynamic-tabs.component.html +3 -0
  120. package/lib/template/dynamic-tabs/dynamic-tabs.component.ts +8 -4
  121. package/lib/template/field-group-list/field-group-list.component.ts +0 -1
  122. package/lib/template/field-group-template/field-group-template.component.html +7 -7
  123. package/lib/template/field-group-template/field-group-template.component.scss +8 -0
  124. package/lib/template/field-group-template/field-group-template.component.ts +68 -48
  125. package/lib/template/field-value-list/field-value-list.component.html +2 -2
  126. package/lib/template/field-value-list/field-value-list.component.scss +6 -1
  127. package/lib/template/field-value-list/field-value-list.component.ts +0 -1
  128. package/lib/template/inline-dashboard/inline-dashboard.component.ts +0 -1
  129. package/lib/template/inline-dashboard-page/inline-dashboard-page.component.ts +2 -3
  130. package/lib/template/list-page/list-page.component.ts +0 -1
  131. package/lib/template/list-view/list-view.component.html +6 -1
  132. package/lib/template/list-view/list-view.component.scss +11 -0
  133. package/lib/template/list-view/list-view.component.ts +25 -11
  134. package/lib/template/list-view/listViewHelpers.ts +4 -10
  135. package/lib/template/list-view/utils.ts +2 -5
  136. package/lib/template/multi-reference-readonly/multi-reference-readonly.component.ts +0 -1
  137. package/lib/template/narrow-wide-form/narrow-wide-form.component.ts +1 -2
  138. package/lib/template/one-column/one-column.component.ts +4 -4
  139. package/lib/template/one-column-page/one-column-page.component.ts +0 -1
  140. package/lib/template/one-column-tab/one-column-tab.component.ts +1 -2
  141. package/lib/template/page/page.component.ts +1 -2
  142. package/lib/template/promoted-filters/promoted-filters.component.ts +1 -2
  143. package/lib/template/repeating-structures/repeating-structures.component.ts +1 -2
  144. package/lib/template/simple-table/simple-table.component.ts +0 -1
  145. package/lib/template/simple-table-manual/helpers.ts +126 -10
  146. package/lib/template/simple-table-manual/simple-table-manual.component.html +25 -6
  147. package/lib/template/simple-table-manual/simple-table-manual.component.scss +12 -3
  148. package/lib/template/simple-table-manual/simple-table-manual.component.ts +110 -54
  149. package/lib/template/simple-table-select/simple-table-select.component.ts +3 -4
  150. package/lib/template/single-reference-readonly/single-reference-readonly.component.ts +0 -1
  151. package/lib/template/sub-tabs/sub-tabs.component.ts +0 -1
  152. package/lib/template/three-column/three-column.component.ts +4 -4
  153. package/lib/template/three-column-page/three-column-page.component.ts +0 -1
  154. package/lib/template/two-column/two-column.component.ts +4 -4
  155. package/lib/template/two-column-page/two-column-page.component.ts +0 -1
  156. package/lib/template/two-column-tab/two-column-tab.component.ts +1 -2
  157. package/lib/template/utils.ts +16 -0
  158. package/lib/template/wide-narrow-form/wide-narrow-form.component.ts +4 -4
  159. package/lib/template/wide-narrow-page/wide-narrow-page.component.ts +1 -2
  160. package/lib/template/wss-nav-bar/wss-nav-bar.component.ts +3 -4
  161. package/lib/widget/app-announcement/app-announcement.component.ts +0 -1
  162. package/lib/widget/attachment/attachment.component.ts +9 -13
  163. package/lib/widget/case-history/case-history.component.ts +0 -1
  164. package/lib/widget/feed-container/feed-container.component.ts +7 -10
  165. package/lib/widget/file-utility/file-utility.component.ts +2 -6
  166. package/lib/widget/list-utility/list-utility.component.ts +0 -1
  167. package/lib/widget/quick-create/quick-create.component.ts +0 -1
  168. package/lib/widget/todo/todo.component.html +5 -6
  169. package/lib/widget/todo/todo.component.scss +9 -0
  170. package/lib/widget/todo/todo.component.ts +95 -85
  171. package/lib/widget/utility/utility.component.ts +0 -1
  172. package/package.json +1 -1
@@ -1,4 +1,3 @@
1
- /* eslint-disable max-classes-per-file */
2
1
  import { Component, OnInit, Input, ViewChild, forwardRef, OnDestroy } from '@angular/core';
3
2
  import { CommonModule } from '@angular/common';
4
3
  import { MatDatepickerModule } from '@angular/material/datepicker';
@@ -22,13 +21,13 @@ import { getCurrencyOptions } from '@pega/angular-sdk-components';
22
21
  import { getLocale, getSeconds } from '@pega/angular-sdk-components';
23
22
  import { formatters } from '@pega/angular-sdk-components';
24
23
 
25
- import { useInit } from './listViewHelpers';
26
-
27
- declare const window: any;
24
+ import { init } from './listViewHelpers';
28
25
 
29
26
  const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' };
30
27
 
31
28
  interface ListViewProps {
29
+ inheritedProps: any;
30
+ title: string | undefined;
32
31
  // If any, enter additional props that only exist on this component
33
32
  globalSearch?: boolean;
34
33
  referenceList?: any;
@@ -42,6 +41,7 @@ interface ListViewProps {
42
41
  grouping: string | boolean;
43
42
  value: any;
44
43
  readonlyContextList: any;
44
+ label?: string;
45
45
  }
46
46
 
47
47
  export class Group {
@@ -58,7 +58,6 @@ export class Group {
58
58
  selector: 'app-list-view',
59
59
  templateUrl: './list-view.component.html',
60
60
  styleUrls: ['./list-view.component.scss'],
61
- standalone: true,
62
61
  imports: [
63
62
  CommonModule,
64
63
  MatFormFieldModule,
@@ -156,13 +155,12 @@ export class ListViewComponent implements OnInit, OnDestroy {
156
155
  query: any = null;
157
156
  paging: any;
158
157
  fieldDefs: any;
159
- xRayApis = PCore.getDebugger().getXRayRuntime();
160
- xRayUid = this.xRayApis.startXRay();
161
158
  checkBoxValue: string;
159
+ label?: string = '';
162
160
 
163
161
  constructor(
164
162
  private psService: ProgressSpinnerService,
165
- private utils: Utils
163
+ public utils: Utils
166
164
  ) {}
167
165
 
168
166
  ngOnInit(): void {
@@ -192,6 +190,18 @@ export class ListViewComponent implements OnInit, OnDestroy {
192
190
  this.arFilterMainButtons$.push({ actionID: 'submit', jsAction: 'submit', name: 'Submit' });
193
191
  this.arFilterSecondaryButtons$.push({ actionID: 'cancel', jsAction: 'cancel', name: 'Cancel' });
194
192
 
193
+ let title = this.configProps$?.title || this.configProps$?.label || 'List';
194
+ const inheritedProps = this.configProps$?.inheritedProps;
195
+ if (title === 'List' && inheritedProps) {
196
+ for (const inheritedProp of inheritedProps) {
197
+ if (inheritedProp?.prop === 'label') {
198
+ title = inheritedProp?.value;
199
+ break;
200
+ }
201
+ }
202
+ }
203
+ this.label = title;
204
+
195
205
  this.searchIcon$ = this.utils.getImageSrc('search', this.utils.getSDKStaticContentUrl());
196
206
  setTimeout(() => {
197
207
  PCore.getPubSubUtils().subscribe(
@@ -218,14 +228,13 @@ export class ListViewComponent implements OnInit, OnDestroy {
218
228
  if (!this.payload) {
219
229
  this.payload = { referenceList: this.configProps$.referenceList };
220
230
  }
221
- useInit({
231
+ init({
222
232
  pConn$: this.pConn$,
223
233
  bInForm$: this.bInForm$,
224
234
  ...this.payload,
225
235
  listContext: this.listContext,
226
236
  ref: this.ref,
227
237
  showDynamicFields: this.showDynamicFields,
228
- xRayUid: this.xRayUid,
229
238
  cosmosTableRef: this.cosmosTableRef,
230
239
  selectionMode: this.selectionMode
231
240
  }).then(response => {
@@ -961,7 +970,7 @@ export class ListViewComponent implements OnInit, OnDestroy {
961
970
 
962
971
  filterDataWithDate(item, filterObj, filterValue) {
963
972
  let bKeep;
964
- let value = item[filterObj.ref] != null ?? item[filterObj.ref] != '' ? getSeconds(item[filterObj.ref]) : null;
973
+ let value = item[filterObj.ref] != null || item[filterObj.ref] != '' ? getSeconds(item[filterObj.ref]) : null;
965
974
  filterValue = filterObj.containsFilterValue != null && filterObj.containsFilterValue != '' ? getSeconds(filterObj.containsFilterValue) : null;
966
975
 
967
976
  switch (filterObj.containsFilter) {
@@ -1380,6 +1389,11 @@ export class ListViewComponent implements OnInit, OnDestroy {
1380
1389
  return listFields;
1381
1390
  }
1382
1391
 
1392
+ getResultsText() {
1393
+ const recordsCount = this.repeatList$?.paginator?.length || 0;
1394
+ return `${recordsCount || 0} result${recordsCount > 1 ? 's' : ''}`;
1395
+ }
1396
+
1383
1397
  getField(fieldDefs, columnId) {
1384
1398
  const fieldsMap = this.getFieldsMap(fieldDefs);
1385
1399
  return fieldsMap.get(columnId);
@@ -1,9 +1,6 @@
1
1
  import { getContext, readContextResponse } from './utils';
2
2
 
3
- // Remove this and use "real" PCore type once .d.ts is fixed (currently shows 1 error)
4
- declare const PCore: any;
5
-
6
- export function useInit(props) {
3
+ export function init(props) {
7
4
  const {
8
5
  referenceList,
9
6
  pConn$,
@@ -15,7 +12,6 @@ export function useInit(props) {
15
12
  ref,
16
13
  showDynamicFields,
17
14
  isDataObject,
18
- xRayUid,
19
15
  cosmosTableRef
20
16
  } = props;
21
17
  let { editing, selectionMode } = props;
@@ -25,9 +21,9 @@ export function useInit(props) {
25
21
  let selectionCountThreshold;
26
22
 
27
23
  // promise to fetch metadata
28
- const metaDataPromise = PCore.getAnalyticsUtils().getDataViewMetadata(referenceList, showDynamicFields);
24
+ const metaDataPromise = PCore.getAnalyticsUtils().getDataViewMetadata(referenceList, showDynamicFields, null);
29
25
 
30
- const promisesArray = [metaDataPromise];
26
+ const promisesArray: any = [metaDataPromise];
31
27
 
32
28
  // promise to fetch report configured columns
33
29
  const reportColumnsPromise = PCore.getAnalyticsUtils()
@@ -70,8 +66,7 @@ export function useInit(props) {
70
66
  pConn$,
71
67
  compositeKeys,
72
68
  isSearchable,
73
- isCacheable: true,
74
- xRayUid
69
+ isCacheable: true
75
70
  }).then(async context => {
76
71
  return readContextResponse(context, {
77
72
  ...props,
@@ -79,7 +74,6 @@ export function useInit(props) {
79
74
  selectionCountThreshold,
80
75
  ref,
81
76
  selectionMode,
82
- xRayUid,
83
77
  cosmosTableRef
84
78
  });
85
79
  });
@@ -1,8 +1,5 @@
1
1
  import { getDefaultViewMeta } from './DefaultViewMeta';
2
2
 
3
- // Remove this and use "real" PCore type once .d.ts is fixed (currently shows 5 errors)
4
- declare const PCore: any;
5
-
6
3
  const USER_REFERENCE = 'UserReference';
7
4
  const PAGE = '!P!';
8
5
  const PAGELIST = '!PL!';
@@ -121,7 +118,7 @@ export const isPageListInPath = (propertyName, currentClassID) => {
121
118
  return false;
122
119
  }
123
120
  const [first, ...rest] = propertyName.split('.');
124
- const metadata = PCore.getMetadataUtils().getPropertyMetadata(first, currentClassID);
121
+ const metadata: any = PCore.getMetadataUtils().getPropertyMetadata(first, currentClassID);
125
122
  if (metadata?.type === 'Page List') {
126
123
  return true;
127
124
  }
@@ -205,7 +202,7 @@ export function getConfigEmbeddedFieldsMeta(configFields, classID) {
205
202
  if (value.includes('[')) {
206
203
  value = value.substring(0, value.indexOf('[')) + value.substring(value.indexOf(']') + 1);
207
204
  }
208
- const meta = PCore.getMetadataUtils().getEmbeddedPropertyMetadata(value, classID);
205
+ const meta: any = PCore.getMetadataUtils().getEmbeddedPropertyMetadata(value, classID);
209
206
  meta.fieldID = field;
210
207
  configEmbeddedFieldsMeta.push(meta);
211
208
  }
@@ -12,7 +12,6 @@ interface MultiReferenceReadOnlyProps {
12
12
  selector: 'app-multi-reference-readonly',
13
13
  templateUrl: './multi-reference-readonly.component.html',
14
14
  styleUrls: ['./multi-reference-readonly.component.scss'],
15
- standalone: true,
16
15
  imports: [forwardRef(() => ComponentMapperComponent)]
17
16
  })
18
17
  export class MultiReferenceReadonlyComponent implements OnInit, OnDestroy {
@@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '@pega/angular-sdk-components';
7
7
  selector: 'app-narrow-wide-form',
8
8
  templateUrl: './narrow-wide-form.component.html',
9
9
  styleUrls: ['./narrow-wide-form.component.scss'],
10
- standalone: true,
11
10
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
12
11
  })
13
12
  export class NarrowWideFormComponent implements OnInit, OnChanges {
@@ -29,6 +28,6 @@ export class NarrowWideFormComponent implements OnInit, OnChanges {
29
28
  }
30
29
 
31
30
  updateSelf() {
32
- this.arChildren$ = this.pConn$.getChildren() as any[];
31
+ this.arChildren$ = this.pConn$.getChildren();
33
32
  }
34
33
  }
@@ -2,16 +2,16 @@ import { Component, OnInit, Input, forwardRef, OnChanges, SimpleChanges } from '
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormGroup } from '@angular/forms';
4
4
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
5
+ import { FormTemplateBase } from '@pega/angular-sdk-components';
5
6
 
6
7
  @Component({
7
8
  selector: 'app-one-column',
8
9
  templateUrl: './one-column.component.html',
9
10
  styleUrls: ['./one-column.component.scss'],
10
- standalone: true,
11
11
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
12
12
  })
13
- export class OneColumnComponent implements OnInit, OnChanges {
14
- @Input() pConn$: typeof PConnect;
13
+ export class OneColumnComponent extends FormTemplateBase implements OnInit, OnChanges {
14
+ @Input() override pConn$: typeof PConnect;
15
15
  @Input() formGroup$: FormGroup;
16
16
 
17
17
  arChildren$: any[];
@@ -29,6 +29,6 @@ export class OneColumnComponent implements OnInit, OnChanges {
29
29
  }
30
30
 
31
31
  updateSelf() {
32
- this.arChildren$ = this.pConn$.getChildren() as any[];
32
+ this.arChildren$ = this.pConn$.getChildren();
33
33
  }
34
34
  }
@@ -6,7 +6,6 @@ import { ComponentMapperComponent } from '@pega/angular-sdk-components';
6
6
  selector: 'app-one-column-page',
7
7
  templateUrl: './one-column-page.component.html',
8
8
  styleUrls: ['./one-column-page.component.scss'],
9
- standalone: true,
10
9
  imports: [forwardRef(() => ComponentMapperComponent)]
11
10
  })
12
11
  export class OneColumnPageComponent {
@@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '@pega/angular-sdk-components';
7
7
  selector: 'app-one-column-tab',
8
8
  templateUrl: './one-column-tab.component.html',
9
9
  styleUrls: ['./one-column-tab.component.scss'],
10
- standalone: true,
11
10
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
12
11
  })
13
12
  export class OneColumnTabComponent implements OnInit, OnChanges {
@@ -29,6 +28,6 @@ export class OneColumnTabComponent implements OnInit, OnChanges {
29
28
  }
30
29
 
31
30
  updateSelf() {
32
- this.arChildren$ = this.pConn$.getChildren() as any[];
31
+ this.arChildren$ = this.pConn$.getChildren();
33
32
  }
34
33
  }
@@ -14,7 +14,6 @@ interface PageProps {
14
14
  selector: 'app-page',
15
15
  templateUrl: './page.component.html',
16
16
  styleUrls: ['./page.component.scss'],
17
- standalone: true,
18
17
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
19
18
  })
20
19
  export class PageComponent implements OnInit, OnDestroy {
@@ -34,7 +33,7 @@ export class PageComponent implements OnInit, OnDestroy {
34
33
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
35
34
 
36
35
  this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as PageProps;
37
- this.arChildren$ = this.pConn$.getChildren() as any[];
36
+ this.arChildren$ = this.pConn$.getChildren();
38
37
 
39
38
  this.title$ = this.configProps$.title;
40
39
  const operator = this.configProps$.operator;
@@ -26,7 +26,6 @@ const SUPPORTED_TYPES_IN_PROMOTED_FILTERS = [
26
26
  selector: 'app-promoted-filters',
27
27
  templateUrl: './promoted-filters.component.html',
28
28
  styleUrls: ['./promoted-filters.component.scss'],
29
- standalone: true,
30
29
  imports: [CommonModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)]
31
30
  })
32
31
  export class PromotedFiltersComponent implements OnInit, OnDestroy {
@@ -81,7 +80,7 @@ export class PromotedFiltersComponent implements OnInit, OnDestroy {
81
80
  });
82
81
 
83
82
  const filtersWithClassID = { ...this.filtersProperties, classID: this.pageClass };
84
- this.transientItemID = (this.pConn$.getContainerManager() as any).addTransientItem({ id: this.viewName, data: filtersWithClassID });
83
+ this.transientItemID = this.pConn$.getContainerManager().addTransientItem({ id: this.viewName, data: filtersWithClassID });
85
84
  this.processedFilters = [];
86
85
  this.filters.forEach(filter => {
87
86
  const filterClone = { ...filter };
@@ -18,7 +18,6 @@ interface RepeatingStructuresProps {
18
18
  selector: 'app-repeating-structures',
19
19
  templateUrl: './repeating-structures.component.html',
20
20
  styleUrls: ['./repeating-structures.component.scss'],
21
- standalone: true,
22
21
  imports: [CommonModule, MatFormFieldModule, MatIconModule, MatInputModule, MatTableModule, MatSortModule, MatPaginatorModule]
23
22
  })
24
23
  export class RepeatingStructuresComponent implements OnInit, AfterViewInit {
@@ -107,7 +106,7 @@ export class RepeatingStructuresComponent implements OnInit, AfterViewInit {
107
106
  openAssignment(row) {
108
107
  const { pxRefObjectClass, pzInsKey } = row;
109
108
  const sTarget = this.pConn$.getContainerName();
110
- const options: any = { containerName: sTarget };
109
+ const options = { containerName: sTarget };
111
110
  this.pConn$
112
111
  .getActionsApi()
113
112
  .openAssignment(pzInsKey, pxRefObjectClass, options)
@@ -28,7 +28,6 @@ interface SimpleTableProps {
28
28
  selector: 'app-simple-table',
29
29
  templateUrl: './simple-table.component.html',
30
30
  styleUrls: ['./simple-table.component.scss'],
31
- standalone: true,
32
31
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
33
32
  })
34
33
  export class SimpleTableComponent implements OnInit, OnDestroy {
@@ -44,18 +44,20 @@ function getFieldWidth(field, label) {
44
44
  export const getContext = thePConn => {
45
45
  const contextName = thePConn.getContextName();
46
46
  const pageReference = thePConn.getPageReference();
47
- // 8.7 change = referenceList may now be in top-level of state props,
48
- // not always in config of state props
49
- let { referenceList } = thePConn.getStateProps()?.config || thePConn.getStateProps();
47
+ const { readonlyContextList, referenceList = readonlyContextList } = thePConn.getStateProps()?.config || thePConn.getStateProps();
48
+
50
49
  const pageReferenceForRows = referenceList.startsWith('.') ? `${pageReference}.${referenceList.substring(1)}` : referenceList;
50
+ const viewName = thePConn.viewName;
51
51
 
52
52
  // removing "caseInfo.content" prefix to avoid setting it as a target while preparing pageInstructions
53
- referenceList = pageReferenceForRows.replace(PCore.getConstants().CASE_INFO.CASE_INFO_CONTENT, '');
53
+ // skipping the removal as StateMachine itself is removing this case info prefix while preparing pageInstructions
54
+ // referenceList = pageReferenceForRows.replace(PCore.getConstants().CASE_INFO.CASE_INFO_CONTENT, '');
54
55
 
55
56
  return {
56
57
  contextName,
57
58
  referenceListStr: referenceList,
58
- pageReferenceForRows
59
+ pageReferenceForRows,
60
+ viewName
59
61
  };
60
62
  };
61
63
 
@@ -124,11 +126,125 @@ export const buildMetaForListView = (fieldMetadata, fields, type, ruleClass, nam
124
126
  };
125
127
  };
126
128
 
127
- export const buildFieldsForTable = (configFields, fields, showDeleteButton) => {
129
+ const PRIMARY_FIELDS = 'pyPrimaryFields';
130
+ const SUPPORTED_FIELD_TYPES = [
131
+ 'Address',
132
+ 'TextArea',
133
+ 'TextInput',
134
+ 'Phone',
135
+ 'Email',
136
+ 'Time',
137
+ 'URL',
138
+ 'Percentage',
139
+ 'Integer',
140
+ 'Decimal',
141
+ 'Date',
142
+ 'DateTime',
143
+ 'Currency',
144
+ 'Checkbox',
145
+ 'Dropdown',
146
+ 'AutoComplete',
147
+ 'UserReference',
148
+ 'RichText'
149
+ ];
150
+
151
+ export const getConfigFields = (rawFields, contextClass, primaryFieldsViewIndex) => {
152
+ let primaryFields: any = [];
153
+ let configFields: any = [];
154
+
155
+ if (primaryFieldsViewIndex > -1) {
156
+ let primaryFieldVMD: any = PCore.getMetadataUtils().resolveView(PRIMARY_FIELDS);
157
+ if (Array.isArray(primaryFieldVMD)) {
158
+ primaryFieldVMD = primaryFieldVMD.find(primaryFieldView => primaryFieldView.classID === contextClass);
159
+ primaryFields = primaryFieldVMD?.children?.[0]?.children || [];
160
+ } else if (primaryFieldVMD?.classID === contextClass) {
161
+ primaryFields = primaryFieldVMD?.children?.[0]?.children || [];
162
+ }
163
+
164
+ if (primaryFields.length) {
165
+ primaryFields = primaryFields.filter(primaryField => SUPPORTED_FIELD_TYPES.includes(primaryField.type));
166
+ }
167
+ }
168
+
169
+ configFields = [...rawFields.slice(0, primaryFieldsViewIndex), ...primaryFields, ...rawFields.slice(primaryFieldsViewIndex + 1)];
170
+ // filter duplicate fields after combining raw fields and primary fields
171
+ return configFields.filter((field, index) => configFields.findIndex(_field => field.config?.value === _field.config?.value) === index);
172
+ };
173
+
174
+ export function isFLProperty(label) {
175
+ return label?.startsWith('@FL');
176
+ }
177
+
178
+ /**
179
+ * [getFieldLabel]
180
+ * Description - A utility that returns resolved field label for "@FL" annotation i.e from data model.
181
+ * @param {Object} fieldConfig
182
+ * @returns {string} resolved label string
183
+ *
184
+ * example:
185
+ * fieldConfig = {label: "@FL .pyID", classID: "TestCase-Work"};
186
+ * return "Case ID"
187
+ */
188
+ export function getFieldLabel(fieldConfig) {
189
+ const { label, classID, caption } = fieldConfig;
190
+ let fieldLabel = (label ?? caption)?.substring(4);
191
+ const labelSplit = fieldLabel?.split('.');
192
+ const propertyName = labelSplit?.pop();
193
+ const fieldMetaData: any = PCore.getMetadataUtils().getPropertyMetadata(propertyName, classID) ?? {};
194
+ fieldLabel = fieldMetaData.label ?? fieldMetaData.caption ?? propertyName;
195
+ return fieldLabel;
196
+ }
197
+
198
+ export const updateFieldLabels = (fields, configFields, primaryFieldsViewIndex, pConnect, options) => {
199
+ const labelsOfFields: any = [];
200
+ const { columnsRawConfig = [] } = options;
201
+ fields.forEach((field, idx) => {
202
+ const rawColumnConfig = columnsRawConfig[idx]?.config;
203
+ if (field.config.value === PRIMARY_FIELDS) {
204
+ labelsOfFields.push('');
205
+ } else if (isFLProperty(rawColumnConfig?.label ?? rawColumnConfig?.caption)) {
206
+ labelsOfFields.push(getFieldLabel(rawColumnConfig) || field.config.label || field.config.caption);
207
+ } else {
208
+ labelsOfFields.push(field.config.label || field.config.caption);
209
+ }
210
+ });
211
+
212
+ if (primaryFieldsViewIndex > -1) {
213
+ const totalPrimaryFieldsColumns = configFields.length - fields.length + 1;
214
+ if (totalPrimaryFieldsColumns) {
215
+ const primaryFieldLabels: any = [];
216
+ for (let i = primaryFieldsViewIndex; i < primaryFieldsViewIndex + totalPrimaryFieldsColumns; i += 1) {
217
+ let label = configFields[i].config?.label;
218
+ if (isFLProperty(label)) {
219
+ label = getFieldLabel(configFields[i].config);
220
+ } else if (label.startsWith('@')) {
221
+ label = label.substring(3);
222
+ }
223
+ if (pConnect) {
224
+ label = pConnect.getLocalizedValue(label);
225
+ }
226
+ primaryFieldLabels.push(label);
227
+ }
228
+ labelsOfFields.splice(primaryFieldsViewIndex, 1, ...primaryFieldLabels);
229
+ } else {
230
+ labelsOfFields.splice(primaryFieldsViewIndex, 1);
231
+ }
232
+ }
233
+ return labelsOfFields;
234
+ };
235
+
236
+ export const buildFieldsForTable = (configFields, pConnect, showDeleteButton, options) => {
237
+ const { primaryFieldsViewIndex, fields } = options;
238
+
239
+ // get resolved field labels for primary fields raw config included in configFields
240
+ const fieldsLabels = updateFieldLabels(fields, configFields, primaryFieldsViewIndex, pConnect, {
241
+ columnsRawConfig: pConnect.getRawConfigProps()?.children.find(item => item?.name === 'Columns')?.children
242
+ });
243
+
128
244
  const fieldDefs = configFields?.map((field, index) => {
129
245
  return {
130
246
  type: 'text',
131
- label: fields[index].config.label || fields[index].config.caption,
247
+ label: fieldsLabels[index],
132
248
  fillAvailableSpace: !!field.config.fillAvailableSpace,
133
249
  id: `${index}`,
134
250
  name: field.config.value.substr(4),
@@ -189,8 +305,8 @@ export const createMetaForTable = (fields, renderMode) => {
189
305
  };
190
306
 
191
307
  export const filterDataByDate = (item, filterObj) => {
192
- let bKeep;
193
- let value = item[filterObj.ref] != null ?? item[filterObj.ref] != '' ? getSeconds(item[filterObj.ref]) : null;
308
+ let bKeep = true;
309
+ let value = item[filterObj.ref] != null || item[filterObj.ref] != '' ? getSeconds(item[filterObj.ref]) : null;
194
310
  let filterValue = filterObj.containsFilterValue != null && filterObj.containsFilterValue != '' ? getSeconds(filterObj.containsFilterValue) : null;
195
311
 
196
312
  switch (filterObj.containsFilter) {
@@ -237,7 +353,7 @@ export const filterDataByDate = (item, filterObj) => {
237
353
  };
238
354
 
239
355
  export const filterDataByCommonFields = (item, filterObj) => {
240
- let bKeep;
356
+ let bKeep = true;
241
357
  const value = item[filterObj.ref].toLowerCase();
242
358
  const filterValue = filterObj.containsFilterValue.toLowerCase();
243
359
 
@@ -3,8 +3,8 @@
3
3
  <h3 *ngIf="label" className="label" style="font-weight: bold">
4
4
  {{ label }} <span class="results-count">{{ getResultsText() }}</span>
5
5
  </h3>
6
- <table *ngIf="readOnlyMode || allowEditingInModal" mat-table [dataSource]="rowData" class="mat-elevation-z8" id="readonly-table" matSort>
7
- <ng-container *ngFor="let dCol of processedFields" [matColumnDef]="dCol.config.name">
6
+ <table *ngIf="readOnlyMode || allowEditingInModal" mat-table [dataSource]="elementsData" class="mat-elevation-z8" id="readonly-table" matSort>
7
+ <ng-container *ngFor="let dCol of processedFields; let i = index" [matColumnDef]="dCol.config.name">
8
8
  <th mat-header-cell *matHeaderCellDef mat-sort-header (click)="_headerSortClick($event, dCol)" arrowPosition="before">
9
9
  <div>{{ dCol.config.label }}</div>
10
10
  <div class="psdk-mat-header-filter">
@@ -27,7 +27,16 @@
27
27
  </mat-menu>
28
28
  </div>
29
29
  </th>
30
- <td mat-cell *matCellDef="let element">{{ element[dCol.config.name] || '---' }}</td>
30
+ <td mat-cell *matCellDef="let element">
31
+ <component-mapper
32
+ [name]="element[i].getPConnect().getComponentName()"
33
+ [props]="{
34
+ pConn$: element[i].getPConnect(),
35
+ formGroup$: formGroup$
36
+ }"
37
+ errorMsg="Table wants component not yet available: {{ element[i].getPConnect().getComponentName() }}"
38
+ ></component-mapper>
39
+ </td>
31
40
  </ng-container>
32
41
  <ng-container matColumnDef="DeleteIcon">
33
42
  <div *ngIf="allowEditingInModal">
@@ -47,6 +56,11 @@
47
56
  </ng-container>
48
57
  <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
49
58
  <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
59
+ <tr class="mat-row psdk-no-records" *matNoDataRow>
60
+ <td id="no-records" class="mat-cell" [attr.colspan]="displayedColumns.length">
61
+ {{ utils.getGenericFieldsLocalizedValue('CosmosFields.fields.lists', 'No records found.') }}
62
+ </td>
63
+ </tr>
50
64
  </table>
51
65
  <table *ngIf="editableMode && !allowEditingInModal" mat-table [dataSource]="elementsData" class="mat-elevation-z8" id="editable-table">
52
66
  <ng-container *ngFor="let dCol of fieldDefs; let i = index">
@@ -74,11 +88,16 @@
74
88
  </ng-container>
75
89
  <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
76
90
  <tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
91
+ <tr class="mat-row psdk-no-records" *matNoDataRow>
92
+ <td id="no-records" class="mat-cell" [attr.colspan]="displayedColumns.length">
93
+ {{ utils.getGenericFieldsLocalizedValue('CosmosFields.fields.lists', 'No records found.') }}
94
+ </td>
95
+ </tr>
77
96
  </table>
78
- <div class="psdk-no-records" id="no-records" *ngIf="editableMode && referenceList?.length === 0">No Records Found.</div>
79
- <div class="psdk-no-records" id="no-records" *ngIf="readOnlyMode && rowData?.data?.length === 0">No Records Found.</div>
80
97
  </div>
81
- <button *ngIf="showAddRowButton" mat-button color="primary" style="font-size: 16px" (click)="addRecord()">+ Add</button>
98
+ <button *ngIf="showAddRowButton" mat-button color="primary" style="font-size: 16px" (click)="addRecord()">
99
+ + {{ localizedVal('Add', localeCategory) }}
100
+ </button>
82
101
  </ng-container>
83
102
 
84
103
  <!-- pop overs for filters-->
@@ -4,6 +4,11 @@
4
4
  width: 100%;
5
5
  margin-top: 0.5rem;
6
6
  margin-bottom: 0.5rem;
7
+ overflow-y: auto;
8
+ box-shadow:
9
+ 0px 2px 1px -1px rgba(0, 0, 0, 0.2),
10
+ 0px 1px 1px 0px rgba(0, 0, 0, 0.14),
11
+ 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
7
12
  }
8
13
 
9
14
  table {
@@ -23,6 +28,12 @@ td.mat-mdc-cell,
23
28
  td.mat-mdc-footer-cell {
24
29
  border-right: 1px solid var(--app-neutral-light-color);
25
30
  padding: 8px !important;
31
+ min-width: 10rem;
32
+ }
33
+
34
+ ::ng-deep th.mat-mdc-header-cell:last-child,
35
+ td.mat-mdc-cell:last-child {
36
+ min-width: 2rem;
26
37
  }
27
38
 
28
39
  ::ng-deep .mat-mdc-button {
@@ -159,9 +170,7 @@ tr.mat-mdc-header-row {
159
170
 
160
171
  .psdk-no-records {
161
172
  height: 56px;
162
- justify-content: center;
163
- display: flex;
164
- align-items: center;
173
+ text-align: center;
165
174
  border: 1px solid var(--app-neutral-light-color);
166
175
  border-top: none;
167
176
  background: var(--app-form-color);