@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
@@ -10,7 +10,6 @@ const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' };
10
10
  selector: 'app-data-reference',
11
11
  templateUrl: './data-reference.component.html',
12
12
  styleUrls: ['./data-reference.component.scss'],
13
- standalone: true,
14
13
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
15
14
  })
16
15
  export class DataReferenceComponent implements OnInit, OnDestroy {
@@ -45,19 +44,18 @@ export class DataReferenceComponent implements OnInit, OnDestroy {
45
44
  ngOnInit(): void {
46
45
  // First thing in initialization is registering and subscribing to the AngularPConnect service
47
46
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
48
- this.children = this.pConn$.getChildren() as any[];
47
+ this.children = this.pConn$.getChildren();
49
48
  this.updateSelf();
50
49
  if (this.firstChildMeta?.type === 'Dropdown' && this.rawViewMetadata.config?.parameters) {
51
50
  const { value, key, text } = this.firstChildMeta.config.datasource.fields;
52
- (
53
- PCore.getDataApiUtils().getData(
51
+ PCore.getDataApiUtils()
52
+ .getData(
54
53
  this.refList,
55
54
  {
56
55
  dataViewParameters: this.parameters
57
- } as any,
56
+ },
58
57
  ''
59
- ) as Promise<any>
60
- )
58
+ )
61
59
  .then(res => {
62
60
  if (res.data.data !== null) {
63
61
  const ddDataSource = res.data.data
@@ -103,7 +101,7 @@ export class DataReferenceComponent implements OnInit, OnDestroy {
103
101
 
104
102
  updateSelf() {
105
103
  // Update properties based on configProps
106
- const theConfigProps: any = this.pConn$.getConfigProps();
104
+ const theConfigProps = this.pConn$.getConfigProps();
107
105
  this.updatePropertiesFromProps(theConfigProps);
108
106
 
109
107
  const displayAs = theConfigProps.displayAs;
@@ -114,7 +112,7 @@ export class DataReferenceComponent implements OnInit, OnDestroy {
114
112
  this.refList = this.rawViewMetadata.config.referenceList;
115
113
  this.canBeChangedInReviewMode = theConfigProps.allowAndPersistChangesInReviewMode && (displayAs === 'autocomplete' || displayAs === 'dropdown');
116
114
  // this.childrenToRender = this.children;
117
- this.isDisplayModeEnabled = ['LABELS_LEFT', 'STACKED_LARGE_VAL'].includes(displayMode);
115
+ this.isDisplayModeEnabled = ['DISPLAY_ONLY', 'STACKED_LARGE_VAL'].includes(displayMode);
118
116
 
119
117
  if (this.firstChildMeta?.type !== 'Region') {
120
118
  this.firstChildPConnect = this.pConn$.getChildren()[0].getPConnect;
@@ -187,41 +185,38 @@ export class DataReferenceComponent implements OnInit, OnDestroy {
187
185
  // AutoComplete sets value on event.id whereas Dropdown sets it on event.target.value
188
186
  const propValue = event?.id || event?.target?.value;
189
187
  if (propValue && this.canBeChangedInReviewMode && this.isDisplayModeEnabled) {
190
- (PCore.getDataApiUtils().getCaseEditLock(caseKey, '') as Promise<any>).then(caseResponse => {
191
- const pageTokens = this.pConn$.getPageReference().replace('caseInfo.content', '').split('.');
192
- let curr = {};
193
- const commitData = curr;
188
+ PCore.getDataApiUtils()
189
+ .getCaseEditLock(caseKey, '')
190
+ .then(caseResponse => {
191
+ const pageTokens = this.pConn$.getPageReference().replace('caseInfo.content', '').split('.');
192
+ let curr = {};
193
+ const commitData = curr;
194
194
 
195
- pageTokens.forEach(el => {
196
- if (el !== '') {
197
- curr[el] = {};
198
- curr = curr[el];
199
- }
200
- });
195
+ pageTokens.forEach(el => {
196
+ if (el !== '') {
197
+ curr[el] = {};
198
+ curr = curr[el];
199
+ }
200
+ });
201
201
 
202
- // expecting format like {Customer: {pyID:"C-100"}}
203
- const propArr = this.propName.split('.');
204
- propArr.forEach((element, idx) => {
205
- if (idx + 1 === propArr.length) {
206
- curr[element] = propValue;
207
- } else {
208
- curr[element] = {};
209
- curr = curr[element];
210
- }
211
- });
202
+ // expecting format like {Customer: {pyID:"C-100"}}
203
+ const propArr = this.propName.split('.');
204
+ propArr.forEach((element, idx) => {
205
+ if (idx + 1 === propArr.length) {
206
+ curr[element] = propValue;
207
+ } else {
208
+ curr[element] = {};
209
+ curr = curr[element];
210
+ }
211
+ });
212
212
 
213
- (
214
- PCore.getCaseUtils().updateCaseEditFieldsData(
215
- caseKey,
216
- { [caseKey]: commitData },
217
- caseResponse.headers.etag,
218
- this.pConn$.getContextName()
219
- ) as Promise<any>
220
- ).then(response => {
221
- PCore.getContainerUtils().updateParentLastUpdateTime(this.pConn$.getContextName(), response.data.data.caseInfo.lastUpdateTime);
222
- PCore.getContainerUtils().updateRelatedContextEtag(this.pConn$.getContextName(), response.headers.etag);
213
+ PCore.getCaseUtils()
214
+ .updateCaseEditFieldsData(caseKey, { [caseKey]: commitData }, caseResponse.headers.etag, this.pConn$.getContextName())
215
+ .then(response => {
216
+ PCore.getContainerUtils().updateParentLastUpdateTime(this.pConn$.getContextName(), response.data.data.caseInfo.lastUpdateTime);
217
+ PCore.getContainerUtils().updateRelatedContextEtag(this.pConn$.getContextName(), response.headers.etag);
218
+ });
223
219
  });
224
- });
225
220
  }
226
221
  }
227
222
 
@@ -235,7 +230,7 @@ export class DataReferenceComponent implements OnInit, OnDestroy {
235
230
  property: this.propName,
236
231
  category: '',
237
232
  context: ''
238
- } as any);
233
+ });
239
234
  if (!this.canBeChangedInReviewMode && this.isDisplayModeEnabled && this.selectionMode === SELECTION_MODE.SINGLE) {
240
235
  this.displaySingleRef = true;
241
236
  }
@@ -1,7 +1,3 @@
1
- <!-- When adding a component here, add the same component in 'region' template as well -->
2
- <div *ngIf="!NO_HEADER_TEMPLATES.includes(template) && showLabel">
3
- <div class="template-title-container">{{ label }}</div>
4
- </div>
5
1
  <div *ngIf="instructions" class="psdk-default-form-instruction-text">
6
2
  <div key="instructions" id="instruction-text" [innerHTML]="instructions"></div>
7
3
  </div>
@@ -1,14 +1,26 @@
1
1
  import { Component, OnInit, Input, forwardRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormGroup } from '@angular/forms';
4
+ import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
4
5
  import { ReferenceComponent } from '@pega/angular-sdk-components';
5
6
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
6
7
  import { TemplateUtils } from '@pega/angular-sdk-components';
8
+ import { FormTemplateBase } from '@pega/angular-sdk-components';
9
+
10
+ function areViewsChanged(oldViews: any[], newViews: any[]): boolean {
11
+ if (oldViews?.length !== newViews?.length) {
12
+ return true;
13
+ }
14
+
15
+ return !oldViews?.every((oldView, index) => {
16
+ const newView = newViews[index];
17
+ return oldView.getPConnect().viewName === newView.getPConnect().viewName;
18
+ });
19
+ }
7
20
 
8
21
  interface DefaultFormProps {
9
22
  // If any, enter additional props that only exist on this component
10
23
  NumCols: string;
11
- template: string;
12
24
  instructions: string;
13
25
  }
14
26
 
@@ -16,40 +28,40 @@ interface DefaultFormProps {
16
28
  selector: 'app-default-form',
17
29
  templateUrl: './default-form.component.html',
18
30
  styleUrls: ['./default-form.component.scss'],
19
- standalone: true,
20
31
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
21
32
  })
22
- export class DefaultFormComponent implements OnInit {
23
- @Input() pConn$: typeof PConnect;
33
+ export class DefaultFormComponent extends FormTemplateBase implements OnInit {
34
+ @Input() override pConn$: typeof PConnect;
24
35
  @Input() formGroup$: FormGroup;
25
36
 
37
+ // Used with AngularPConnect
38
+ override angularPConnectData: AngularPConnectData = {};
39
+
26
40
  arChildren$: any[];
27
41
  divClass$: string;
28
- template: any;
29
- showLabel: any;
30
- label: any;
31
42
  instructions: string;
32
43
 
33
- NO_HEADER_TEMPLATES = [
34
- 'SubTabs',
35
- 'SimpleTable',
36
- 'Details',
37
- 'DetailsTwoColumn',
38
- 'DetailsThreeColumn',
39
- 'NarrowWideDetails',
40
- 'WideNarrowDetails',
41
- 'Confirmation'
42
- ];
43
-
44
- constructor(private templateUtils: TemplateUtils) {}
44
+ constructor(
45
+ private angularPConnect: AngularPConnectService,
46
+ private templateUtils: TemplateUtils
47
+ ) {
48
+ super();
49
+ }
45
50
 
46
51
  ngOnInit(): void {
52
+ // First thing in initialization is registering and subscribing to the AngularPConnect service
53
+ this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
54
+
55
+ this.updateSelf();
56
+ }
57
+
58
+ onStateChange() {
59
+ this.updateSelf();
60
+ }
61
+
62
+ updateSelf() {
47
63
  const configProps = this.pConn$.getConfigProps() as DefaultFormProps;
48
- this.template = configProps?.template;
49
- const propToUse: any = { ...this.pConn$.getInheritedProps() };
50
- this.showLabel = propToUse?.showLabel;
51
- this.label = propToUse?.label;
52
- const kids = this.pConn$.getChildren() as any[];
64
+ const kids = this.pConn$.getChildren();
53
65
  this.instructions = this.templateUtils.getInstructions(this.pConn$, configProps?.instructions);
54
66
 
55
67
  const numCols = configProps.NumCols ? configProps.NumCols : '1';
@@ -71,6 +83,10 @@ export class DefaultFormComponent implements OnInit {
71
83
  // repoint children before getting templateArray
72
84
  // Children may contain 'reference' component, so we need to
73
85
  // normalize them
74
- this.arChildren$ = ReferenceComponent.normalizePConnArray(kids[0].getPConnect().getChildren());
86
+ const children = ReferenceComponent.normalizePConnArray(kids[0].getPConnect().getChildren());
87
+
88
+ if (areViewsChanged(this.arChildren$, children)) {
89
+ this.arChildren$ = children;
90
+ }
75
91
  }
76
92
  }
@@ -1,57 +1,22 @@
1
- import { Component, OnInit, Input, forwardRef, OnDestroy } from '@angular/core';
2
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
1
+ import { Component, forwardRef } from '@angular/core';
3
2
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
3
+ import { DetailsTemplateBase } from '@pega/angular-sdk-components';
4
4
 
5
5
  @Component({
6
6
  selector: 'app-details',
7
7
  templateUrl: './details.component.html',
8
8
  styleUrls: ['./details.component.scss'],
9
- standalone: true,
10
9
  imports: [forwardRef(() => ComponentMapperComponent)]
11
10
  })
12
- export class DetailsComponent implements OnInit, OnDestroy {
13
- constructor(private angularPConnect: AngularPConnectService) {}
14
-
15
- @Input() pConn$: typeof PConnect;
11
+ export class DetailsComponent extends DetailsTemplateBase {
12
+ override pConn$: typeof PConnect;
16
13
 
17
14
  highlightedDataArr: any[] = [];
18
15
  showHighlightedData: boolean;
19
16
  arFields$: any[] = [];
20
17
 
21
- // Used with AngularPConnect
22
- angularPConnectData: AngularPConnectData = {};
23
-
24
- ngOnInit(): void {
25
- // First thing in initialization is registering and subscribing to the AngularPConnect service
26
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
27
-
28
- // this.updateSelf();
29
- this.checkAndUpdate();
30
- }
31
-
32
- ngOnDestroy() {
33
- if (this.angularPConnectData.unsubscribeFn) {
34
- this.angularPConnectData.unsubscribeFn();
35
- }
36
- }
37
-
38
- onStateChange() {
39
- this.checkAndUpdate();
40
- }
41
-
42
- checkAndUpdate() {
43
- // Should always check the bridge to see if the component should
44
- // update itself (re-render)
45
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
46
-
47
- // ONLY call updateSelf when the component should update
48
- if (bUpdateSelf) {
49
- this.updateSelf();
50
- }
51
- }
52
-
53
- updateSelf() {
54
- const rawMetaData: any = this.pConn$.resolveConfigProps((this.pConn$.getRawMetadata() as any).config);
18
+ override updateSelf() {
19
+ const rawMetaData: any = this.pConn$.resolveConfigProps(this.pConn$.getRawMetadata()?.config);
55
20
  this.showHighlightedData = rawMetaData?.showHighlightedData;
56
21
 
57
22
  if (this.showHighlightedData) {
@@ -79,7 +44,7 @@ export class DetailsComponent implements OnInit, OnDestroy {
79
44
  if (theCompType === 'reference' || theCompType === 'group') {
80
45
  const configProps = thePConn.getConfigProps();
81
46
  configProps.readOnly = true;
82
- configProps.displayMode = 'LABELS_LEFT';
47
+ configProps.displayMode = 'DISPLAY_ONLY';
83
48
  const propToUse = { ...thePConn.getInheritedProps() };
84
49
  configProps.label = propToUse?.label;
85
50
  const options = {
@@ -1,57 +1,23 @@
1
- import { Component, OnInit, Input, forwardRef, OnDestroy } from '@angular/core';
2
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
1
+ import { Component, forwardRef } from '@angular/core';
3
2
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
3
+ import { DetailsTemplateBase } from '@pega/angular-sdk-components';
4
4
 
5
5
  @Component({
6
6
  selector: 'app-details-narrow-wide',
7
7
  templateUrl: './details-narrow-wide.component.html',
8
8
  styleUrls: ['./details-narrow-wide.component.scss'],
9
- standalone: true,
10
9
  imports: [forwardRef(() => ComponentMapperComponent)]
11
10
  })
12
- export class DetailsNarrowWideComponent implements OnInit, OnDestroy {
13
- constructor(private angularPConnect: AngularPConnectService) {}
14
-
15
- @Input() pConn$: typeof PConnect;
11
+ export class DetailsNarrowWideComponent extends DetailsTemplateBase {
12
+ override pConn$: typeof PConnect;
16
13
 
17
14
  arFields$: any[] = [];
18
15
  arFields2$: any[] = [];
19
16
  highlightedDataArr: any[] = [];
20
17
  showHighlightedData: boolean;
21
- // Used with AngularPConnect
22
- angularPConnectData: AngularPConnectData = {};
23
-
24
- ngOnInit(): void {
25
- // First thing in initialization is registering and subscribing to the AngularPConnect service
26
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
27
-
28
- // this.updateSelf();
29
- this.checkAndUpdate();
30
- }
31
-
32
- ngOnDestroy() {
33
- if (this.angularPConnectData.unsubscribeFn) {
34
- this.angularPConnectData.unsubscribeFn();
35
- }
36
- }
37
-
38
- onStateChange() {
39
- this.checkAndUpdate();
40
- }
41
-
42
- checkAndUpdate() {
43
- // Should always check the bridge to see if the component should
44
- // update itself (re-render)
45
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
46
-
47
- // ONLY call updateSelf when the component should update
48
- if (bUpdateSelf) {
49
- this.updateSelf();
50
- }
51
- }
52
18
 
53
- updateSelf() {
54
- const rawMetaData: any = this.pConn$.resolveConfigProps((this.pConn$.getRawMetadata() as any).config);
19
+ override updateSelf() {
20
+ const rawMetaData: any = this.pConn$.resolveConfigProps(this.pConn$.getRawMetadata()?.config);
55
21
  this.showHighlightedData = rawMetaData?.showHighlightedData;
56
22
 
57
23
  if (this.showHighlightedData) {
@@ -1,59 +1,23 @@
1
- import { Component, OnInit, Input, forwardRef, OnDestroy } from '@angular/core';
2
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
3
- import { FormGroup } from '@angular/forms';
1
+ import { Component, forwardRef } from '@angular/core';
4
2
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
3
+ import { DetailsTemplateBase } from '@pega/angular-sdk-components';
5
4
 
6
5
  @Component({
7
6
  selector: 'app-details-one-column',
8
7
  templateUrl: './details-one-column.component.html',
9
8
  styleUrls: ['./details-one-column.component.scss'],
10
- standalone: true,
11
9
  imports: [forwardRef(() => ComponentMapperComponent)]
12
10
  })
13
- export class DetailsOneColumnComponent implements OnInit, OnDestroy {
14
- constructor(private angularPConnect: AngularPConnectService) {}
11
+ export class DetailsOneColumnComponent extends DetailsTemplateBase {
12
+ override pConn$: typeof PConnect;
15
13
 
16
- @Input() pConn$: typeof PConnect;
17
- @Input() formGroup$: FormGroup;
18
14
  showHighlightedData: boolean;
19
15
  highlightedDataArr: any;
20
16
 
21
17
  arFields$: any[] = [];
22
18
 
23
- // Used with AngularPConnect
24
- angularPConnectData: AngularPConnectData = {};
25
-
26
- ngOnInit(): void {
27
- // First thing in initialization is registering and subscribing to the AngularPConnect service
28
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
29
-
30
- // this.updateSelf();
31
- this.checkAndUpdate();
32
- }
33
-
34
- ngOnDestroy() {
35
- if (this.angularPConnectData.unsubscribeFn) {
36
- this.angularPConnectData.unsubscribeFn();
37
- }
38
- }
39
-
40
- onStateChange() {
41
- this.checkAndUpdate();
42
- }
43
-
44
- checkAndUpdate() {
45
- // Should always check the bridge to see if the component should
46
- // update itself (re-render)
47
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
48
-
49
- // ONLY call updateSelf when the component should update
50
- if (bUpdateSelf) {
51
- this.updateSelf();
52
- }
53
- }
54
-
55
- updateSelf() {
56
- const rawMetaData: any = this.pConn$.resolveConfigProps((this.pConn$.getRawMetadata() as any).config);
19
+ override updateSelf() {
20
+ const rawMetaData: any = this.pConn$.resolveConfigProps(this.pConn$.getRawMetadata()?.config);
57
21
  this.showHighlightedData = rawMetaData?.showHighlightedData;
58
22
 
59
23
  if (this.showHighlightedData) {
@@ -70,7 +34,7 @@ export class DetailsOneColumnComponent implements OnInit, OnDestroy {
70
34
  });
71
35
  }
72
36
 
73
- this.pConn$.setInheritedProp('displayMode', 'LABELS_LEFT');
37
+ this.pConn$.setInheritedProp('displayMode', 'DISPLAY_ONLY');
74
38
  this.pConn$.setInheritedProp('readOnly', true);
75
39
 
76
40
  const kids = this.pConn$.getChildren() as any[];
@@ -5,8 +5,7 @@
5
5
  *ngIf="tab.content?.getPConnect()"
6
6
  [name]="tab.content?.getPConnect().getComponentName()"
7
7
  [props]="{
8
- pConn$: tab.content?.getPConnect(),
9
- formGroup$: formGroup$
8
+ pConn$: tab.content?.getPConnect()
10
9
  }"
11
10
  errorMsg="Details Sub tabs wants component not yet available: {{ tab.content?.getPConnect().getComponentName() }}"
12
11
  ></component-mapper>
@@ -1,57 +1,24 @@
1
- import { Component, OnInit, Input, forwardRef, OnDestroy } from '@angular/core';
1
+ import { Component, forwardRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { FormGroup } from '@angular/forms';
4
3
  import { MatTabsModule } from '@angular/material/tabs';
5
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
6
4
  import { getTransientTabs, getVisibleTabs, tabClick } from '@pega/angular-sdk-components';
7
5
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
6
+ import { DetailsTemplateBase } from '@pega/angular-sdk-components';
8
7
 
9
8
  @Component({
10
9
  selector: 'app-details-sub-tabs',
11
10
  templateUrl: './details-sub-tabs.component.html',
12
11
  styleUrls: ['./details-sub-tabs.component.scss'],
13
- standalone: true,
14
12
  imports: [MatTabsModule, CommonModule, forwardRef(() => ComponentMapperComponent)]
15
13
  })
16
- export class DetailsSubTabsComponent implements OnInit, OnDestroy {
17
- @Input() pConn$: typeof PConnect;
18
- @Input() formGroup$: FormGroup;
14
+ export class DetailsSubTabsComponent extends DetailsTemplateBase {
15
+ override pConn$: typeof PConnect;
19
16
 
20
- angularPConnectData: AngularPConnectData = {};
21
17
  currentTabId = '0';
22
18
  tabItems: any[];
23
19
  availableTabs: any[];
24
20
 
25
- constructor(private angularPConnect: AngularPConnectService) {}
26
-
27
- ngOnInit(): void {
28
- // First thing in initialization is registering and subscribing to the AngularPConnect service
29
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
30
- this.checkAndUpdate();
31
- }
32
-
33
- ngOnDestroy() {
34
- if (this.angularPConnectData.unsubscribeFn) {
35
- this.angularPConnectData.unsubscribeFn();
36
- }
37
- }
38
-
39
- onStateChange() {
40
- this.checkAndUpdate();
41
- }
42
-
43
- checkAndUpdate() {
44
- // Should always check the bridge to see if the component should
45
- // update itself (re-render)
46
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
47
-
48
- // ONLY call updateSelf when the component should update
49
- if (bUpdateSelf) {
50
- this.updateSelf();
51
- }
52
- }
53
-
54
- updateSelf() {
21
+ override updateSelf() {
55
22
  const children = this.pConn$?.getChildren();
56
23
  const deferLoadedTabs = children[0];
57
24
  this.availableTabs = getVisibleTabs(deferLoadedTabs, 'tabsSubs');
@@ -1,20 +1,15 @@
1
- import { Component, OnInit, Input, forwardRef, OnDestroy } from '@angular/core';
2
- import { FormGroup } from '@angular/forms';
3
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
1
+ import { Component, forwardRef } from '@angular/core';
4
2
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
3
+ import { DetailsTemplateBase } from '@pega/angular-sdk-components';
5
4
 
6
5
  @Component({
7
6
  selector: 'app-details-three-column',
8
7
  templateUrl: './details-three-column.component.html',
9
8
  styleUrls: ['./details-three-column.component.scss'],
10
- standalone: true,
11
9
  imports: [forwardRef(() => ComponentMapperComponent)]
12
10
  })
13
- export class DetailsThreeColumnComponent implements OnInit, OnDestroy {
14
- constructor(private angularPConnect: AngularPConnectService) {}
15
-
16
- @Input() pConn$: typeof PConnect;
17
- @Input() formGroup$: FormGroup;
11
+ export class DetailsThreeColumnComponent extends DetailsTemplateBase {
12
+ override pConn$: typeof PConnect;
18
13
 
19
14
  showHighlightedData: boolean;
20
15
  highlightedDataArr: any;
@@ -25,40 +20,8 @@ export class DetailsThreeColumnComponent implements OnInit, OnDestroy {
25
20
 
26
21
  propsToUse: any = {};
27
22
 
28
- // Used with AngularPConnect
29
- angularPConnectData: AngularPConnectData = {};
30
-
31
- ngOnInit(): void {
32
- // First thing in initialization is registering and subscribing to the AngularPConnect service
33
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
34
-
35
- // this.updateSelf();
36
- this.checkAndUpdate();
37
- }
38
-
39
- ngOnDestroy() {
40
- if (this.angularPConnectData.unsubscribeFn) {
41
- this.angularPConnectData.unsubscribeFn();
42
- }
43
- }
44
-
45
- onStateChange() {
46
- this.checkAndUpdate();
47
- }
48
-
49
- checkAndUpdate() {
50
- // Should always check the bridge to see if the component should
51
- // update itself (re-render)
52
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
53
-
54
- // ONLY call updateSelf when the component should update
55
- if (bUpdateSelf) {
56
- this.updateSelf();
57
- }
58
- }
59
-
60
- updateSelf() {
61
- const rawMetaData: any = this.pConn$.resolveConfigProps((this.pConn$.getRawMetadata() as any).config);
23
+ override updateSelf() {
24
+ const rawMetaData: any = this.pConn$.resolveConfigProps(this.pConn$.getRawMetadata()?.config);
62
25
  this.showHighlightedData = rawMetaData?.showHighlightedData;
63
26
 
64
27
  if (this.showHighlightedData) {
@@ -75,7 +38,7 @@ export class DetailsThreeColumnComponent implements OnInit, OnDestroy {
75
38
  });
76
39
  }
77
40
 
78
- this.pConn$.setInheritedProp('displayMode', 'LABELS_LEFT');
41
+ this.pConn$.setInheritedProp('displayMode', 'DISPLAY_ONLY');
79
42
  this.pConn$.setInheritedProp('readOnly', true);
80
43
 
81
44
  const kids = this.pConn$.getChildren() as any[];