@pega/angular-sdk-overrides 0.24.9 → 0.25.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/lib/designSystemExtension/alert/alert.component.scss +3 -3
  2. package/lib/designSystemExtension/alert/alert.component.ts +0 -1
  3. package/lib/designSystemExtension/alert-banner/alert-banner.component.ts +1 -2
  4. package/lib/designSystemExtension/banner/banner.component.scss +12 -2
  5. package/lib/designSystemExtension/banner/banner.component.ts +0 -1
  6. package/lib/designSystemExtension/case-create-stage/case-create-stage.component.ts +1 -2
  7. package/lib/designSystemExtension/field-group/field-group.component.ts +0 -1
  8. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.html +6 -3
  9. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.scss +7 -35
  10. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -2
  11. package/lib/designSystemExtension/material-details/material-details.component.scss +0 -5
  12. package/lib/designSystemExtension/material-details/material-details.component.ts +0 -1
  13. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.html +4 -4
  14. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.scss +4 -3
  15. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.ts +10 -2
  16. package/lib/designSystemExtension/material-summary-item/material-summary-item.component.scss +2 -17
  17. package/lib/designSystemExtension/material-summary-item/material-summary-item.component.ts +0 -1
  18. package/lib/designSystemExtension/material-summary-list/material-summary-list.component.ts +0 -1
  19. package/lib/designSystemExtension/material-utility/material-utility.component.scss +1 -2
  20. package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.scss +1 -1
  21. package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts +0 -1
  22. package/lib/designSystemExtension/operator/operator.component.html +2 -2
  23. package/lib/designSystemExtension/operator/operator.component.scss +13 -12
  24. package/lib/designSystemExtension/operator/operator.component.ts +5 -6
  25. package/lib/designSystemExtension/pulse/pulse.component.scss +2 -2
  26. package/lib/designSystemExtension/pulse/pulse.component.ts +7 -8
  27. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.scss +0 -1
  28. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.ts +0 -1
  29. package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.scss +16 -8
  30. package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.ts +0 -1
  31. package/lib/field/auto-complete/auto-complete.component.html +0 -2
  32. package/lib/field/auto-complete/auto-complete.component.ts +56 -178
  33. package/lib/field/cancel-alert/cancel-alert.component.html +8 -12
  34. package/lib/field/cancel-alert/cancel-alert.component.scss +2 -3
  35. package/lib/field/cancel-alert/cancel-alert.component.ts +24 -37
  36. package/lib/field/check-box/check-box.component.html +17 -6
  37. package/lib/field/check-box/check-box.component.scss +0 -1
  38. package/lib/field/check-box/check-box.component.ts +32 -157
  39. package/lib/field/currency/currency.component.html +4 -4
  40. package/lib/field/currency/currency.component.ts +65 -175
  41. package/lib/field/date/date.component.html +4 -8
  42. package/lib/field/date/date.component.ts +39 -177
  43. package/lib/field/date-time/date-time.component.html +3 -4
  44. package/lib/field/date-time/date-time.component.ts +46 -146
  45. package/lib/field/decimal/decimal.component.html +4 -3
  46. package/lib/field/decimal/decimal.component.ts +66 -166
  47. package/lib/field/dropdown/dropdown.component.html +1 -0
  48. package/lib/field/dropdown/dropdown.component.ts +158 -153
  49. package/lib/field/email/email.component.ts +28 -148
  50. package/lib/field/field.base.ts +149 -0
  51. package/lib/field/group/group.component.ts +9 -7
  52. package/lib/field/integer/integer.component.ts +30 -152
  53. package/lib/field/list-view-action-buttons/list-view-action-buttons.component.html +1 -1
  54. package/lib/field/list-view-action-buttons/list-view-action-buttons.component.ts +3 -3
  55. package/lib/field/location/config-ext.json +8 -0
  56. package/lib/field/location/location.component.html +45 -0
  57. package/lib/field/location/location.component.scss +18 -0
  58. package/lib/field/location/location.component.spec.ts +22 -0
  59. package/lib/field/location/location.component.ts +385 -0
  60. package/lib/field/multiselect/multiselect.component.ts +56 -151
  61. package/lib/field/multiselect/utils.ts +55 -47
  62. package/lib/field/object-reference/object-reference.component.html +17 -0
  63. package/lib/field/object-reference/object-reference.component.scss +0 -0
  64. package/lib/field/object-reference/object-reference.component.spec.ts +22 -0
  65. package/lib/field/object-reference/object-reference.component.ts +237 -0
  66. package/lib/field/percentage/percentage.component.html +3 -3
  67. package/lib/field/percentage/percentage.component.ts +68 -161
  68. package/lib/field/phone/config-ext.json +1 -1
  69. package/lib/field/phone/phone.component.html +9 -6
  70. package/lib/field/phone/phone.component.scss +9 -0
  71. package/lib/field/phone/phone.component.ts +48 -159
  72. package/lib/field/radio-buttons/radio-buttons.component.html +17 -12
  73. package/lib/field/radio-buttons/radio-buttons.component.scss +4 -2
  74. package/lib/field/radio-buttons/radio-buttons.component.ts +39 -162
  75. package/lib/field/rich-text/rich-text.component.ts +32 -93
  76. package/lib/field/scalar-list/scalar-list.component.ts +20 -77
  77. package/lib/field/selectable-card/selectable-card.component.html +70 -0
  78. package/lib/field/selectable-card/selectable-card.component.scss +11 -0
  79. package/lib/field/selectable-card/selectable-card.component.spec.ts +22 -0
  80. package/lib/field/selectable-card/selectable-card.component.ts +219 -0
  81. package/lib/field/semantic-link/semantic-link.component.html +4 -8
  82. package/lib/field/semantic-link/semantic-link.component.scss +0 -13
  83. package/lib/field/semantic-link/semantic-link.component.ts +165 -6
  84. package/lib/field/text/text.component.scss +0 -1
  85. package/lib/field/text/text.component.ts +8 -5
  86. package/lib/field/text-area/text-area.component.html +4 -1
  87. package/lib/field/text-area/text-area.component.ts +30 -148
  88. package/lib/field/text-content/text-content.component.ts +0 -1
  89. package/lib/field/text-input/text-input.component.ts +28 -150
  90. package/lib/field/time/time.component.html +2 -2
  91. package/lib/field/time/time.component.ts +39 -145
  92. package/lib/field/url/url.component.ts +28 -149
  93. package/lib/field/user-reference/user-reference.component.html +40 -46
  94. package/lib/field/user-reference/user-reference.component.scss +0 -1
  95. package/lib/field/user-reference/user-reference.component.ts +110 -21
  96. package/lib/infra/Containers/flow-container/flow-container.component.html +1 -1
  97. package/lib/infra/Containers/flow-container/flow-container.component.ts +29 -54
  98. package/lib/infra/Containers/flow-container/helpers.ts +2 -2
  99. package/lib/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts +0 -1
  100. package/lib/infra/Containers/modal-view-container/modal-view-container.component.html +1 -11
  101. package/lib/infra/Containers/modal-view-container/modal-view-container.component.ts +6 -19
  102. package/lib/infra/Containers/preview-view-container/preview-view-container.component.ts +1 -1
  103. package/lib/infra/Containers/view-container/helper.ts +55 -0
  104. package/lib/infra/Containers/view-container/view-container.component.ts +6 -19
  105. package/lib/infra/action-buttons/action-buttons.component.html +13 -8
  106. package/lib/infra/action-buttons/action-buttons.component.scss +23 -0
  107. package/lib/infra/action-buttons/action-buttons.component.ts +1 -3
  108. package/lib/infra/assignment/assignment.component.html +1 -1
  109. package/lib/infra/assignment/assignment.component.ts +90 -47
  110. package/lib/infra/assignment-card/assignment-card.component.html +2 -2
  111. package/lib/infra/assignment-card/assignment-card.component.scss +0 -4
  112. package/lib/infra/assignment-card/assignment-card.component.ts +21 -5
  113. package/lib/infra/dashboard-filter/dashboard-filter.component.ts +0 -1
  114. package/lib/infra/defer-load/defer-load.component.html +6 -2
  115. package/lib/infra/defer-load/defer-load.component.ts +24 -16
  116. package/lib/infra/error-boundary/error-boundary.component.ts +0 -1
  117. package/lib/infra/multi-step/multi-step.component.scss +1 -21
  118. package/lib/infra/multi-step/multi-step.component.ts +0 -1
  119. package/lib/infra/navbar/navbar.component.html +25 -28
  120. package/lib/infra/navbar/navbar.component.scss +16 -4
  121. package/lib/infra/navbar/navbar.component.ts +11 -9
  122. package/lib/infra/reference/reference.component.ts +77 -90
  123. package/lib/infra/region/region.component.ts +0 -1
  124. package/lib/infra/root-container/root-container.component.html +2 -15
  125. package/lib/infra/root-container/root-container.component.scss +0 -1
  126. package/lib/infra/root-container/root-container.component.ts +28 -35
  127. package/lib/infra/stages/stages.component.html +2 -2
  128. package/lib/infra/stages/stages.component.scss +9 -37
  129. package/lib/infra/stages/stages.component.ts +4 -3
  130. package/lib/infra/view/view.component.html +7 -20
  131. package/lib/infra/view/view.component.ts +20 -5
  132. package/lib/template/advanced-search/advanced-search.component.html +12 -0
  133. package/lib/template/advanced-search/advanced-search.component.scss +0 -0
  134. package/lib/template/advanced-search/advanced-search.component.spec.ts +0 -0
  135. package/lib/template/advanced-search/advanced-search.component.ts +112 -0
  136. package/lib/template/advanced-search/advanced-search.service.ts +27 -0
  137. package/lib/template/advanced-search/search-group/persist-utils.ts +56 -0
  138. package/lib/template/advanced-search/search-groups/search-groups.component.html +32 -0
  139. package/lib/template/advanced-search/search-groups/search-groups.component.scss +0 -0
  140. package/lib/template/advanced-search/search-groups/search-groups.component.spec.ts +0 -0
  141. package/lib/template/advanced-search/search-groups/search-groups.component.ts +294 -0
  142. package/lib/template/advanced-search/search-groups/utils.ts +29 -0
  143. package/lib/template/app-shell/app-shell.component.html +4 -1
  144. package/lib/template/app-shell/app-shell.component.scss +0 -3
  145. package/lib/template/app-shell/app-shell.component.ts +66 -10
  146. package/lib/template/banner-page/banner-page.component.ts +0 -1
  147. package/lib/template/base/details-template-base.ts +67 -0
  148. package/lib/template/base/form-template-base.ts +16 -0
  149. package/lib/template/case-summary/case-summary.component.scss +0 -2
  150. package/lib/template/case-summary/case-summary.component.ts +7 -23
  151. package/lib/template/case-view/case-view.component.html +7 -7
  152. package/lib/template/case-view/case-view.component.scss +18 -10
  153. package/lib/template/case-view/case-view.component.ts +9 -15
  154. package/lib/template/confirmation/confirmation.component.html +1 -1
  155. package/lib/template/confirmation/confirmation.component.ts +1 -2
  156. package/lib/template/data-reference/data-reference-advanced-search.service.ts +16 -0
  157. package/lib/template/data-reference/data-reference.component.html +11 -8
  158. package/lib/template/data-reference/data-reference.component.ts +377 -148
  159. package/lib/template/data-reference/search-form/search-form.component.html +39 -0
  160. package/lib/template/data-reference/search-form/search-form.component.scss +11 -0
  161. package/lib/template/data-reference/search-form/search-form.component.spec.ts +0 -0
  162. package/lib/template/data-reference/search-form/search-form.component.ts +167 -0
  163. package/lib/template/data-reference/search-form/tabsData.ts +160 -0
  164. package/lib/template/data-reference/utils.ts +92 -0
  165. package/lib/template/default-form/default-form.component.html +0 -4
  166. package/lib/template/default-form/default-form.component.ts +50 -26
  167. package/lib/template/default-page/default-page.component.html +34 -0
  168. package/lib/template/default-page/default-page.component.scss +31 -0
  169. package/lib/template/default-page/default-page.component.spec.ts +24 -0
  170. package/lib/template/default-page/default-page.component.ts +64 -0
  171. package/lib/template/details/details.component.ts +7 -42
  172. package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +6 -40
  173. package/lib/template/details-one-column/details-one-column.component.ts +7 -43
  174. package/lib/template/details-sub-tabs/details-sub-tabs.component.html +1 -2
  175. package/lib/template/details-sub-tabs/details-sub-tabs.component.ts +5 -38
  176. package/lib/template/details-three-column/details-three-column.component.ts +7 -44
  177. package/lib/template/details-two-column/details-two-column.component.ts +8 -45
  178. package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +7 -43
  179. package/lib/template/dynamic-tabs/dynamic-tabs.component.html +3 -0
  180. package/lib/template/dynamic-tabs/dynamic-tabs.component.ts +8 -4
  181. package/lib/template/field-group-list/field-group-list.component.scss +0 -1
  182. package/lib/template/field-group-list/field-group-list.component.ts +0 -1
  183. package/lib/template/field-group-template/field-group-template.component.html +7 -7
  184. package/lib/template/field-group-template/field-group-template.component.scss +8 -0
  185. package/lib/template/field-group-template/field-group-template.component.ts +68 -48
  186. package/lib/template/field-value-list/field-value-list.component.html +2 -2
  187. package/lib/template/field-value-list/field-value-list.component.scss +6 -1
  188. package/lib/template/field-value-list/field-value-list.component.ts +0 -1
  189. package/lib/template/inline-dashboard/inline-dashboard.component.ts +0 -1
  190. package/lib/template/inline-dashboard-page/inline-dashboard-page.component.ts +2 -3
  191. package/lib/template/list-page/list-page.component.ts +0 -1
  192. package/lib/template/list-view/list-view.component.html +14 -4
  193. package/lib/template/list-view/list-view.component.scss +30 -19
  194. package/lib/template/list-view/list-view.component.ts +179 -95
  195. package/lib/template/list-view/listViewHelpers.ts +4 -10
  196. package/lib/template/list-view/utils.ts +27 -7
  197. package/lib/template/multi-reference-readonly/multi-reference-readonly.component.ts +0 -1
  198. package/lib/template/narrow-wide-form/narrow-wide-form.component.ts +1 -2
  199. package/lib/template/object-page/object-page.component.html +1 -0
  200. package/lib/template/object-page/object-page.component.scss +0 -0
  201. package/lib/template/object-page/object-page.component.spec.ts +22 -0
  202. package/lib/template/object-page/object-page.component.ts +14 -0
  203. package/lib/template/one-column/one-column.component.ts +4 -4
  204. package/lib/template/one-column-page/one-column-page.component.ts +0 -1
  205. package/lib/template/one-column-tab/one-column-tab.component.scss +1 -1
  206. package/lib/template/one-column-tab/one-column-tab.component.ts +1 -2
  207. package/lib/template/page/page.component.ts +1 -2
  208. package/lib/template/promoted-filters/promoted-filters.component.ts +1 -2
  209. package/lib/template/repeating-structures/repeating-structures.component.ts +1 -3
  210. package/lib/template/self-service-case-view/self-service-case-view.component.html +80 -0
  211. package/lib/template/self-service-case-view/self-service-case-view.component.scss +124 -0
  212. package/lib/template/self-service-case-view/self-service-case-view.component.spec.ts +24 -0
  213. package/lib/template/self-service-case-view/self-service-case-view.component.ts +216 -0
  214. package/lib/template/simple-table/simple-table.component.ts +0 -2
  215. package/lib/template/simple-table-manual/helpers.ts +127 -11
  216. package/lib/template/simple-table-manual/simple-table-manual.component.html +27 -8
  217. package/lib/template/simple-table-manual/simple-table-manual.component.scss +16 -17
  218. package/lib/template/simple-table-manual/simple-table-manual.component.ts +118 -58
  219. package/lib/template/simple-table-select/simple-table-select.component.ts +3 -4
  220. package/lib/template/single-reference-readonly/single-reference-readonly.component.html +4 -1
  221. package/lib/template/single-reference-readonly/single-reference-readonly.component.scss +21 -0
  222. package/lib/template/single-reference-readonly/single-reference-readonly.component.ts +104 -4
  223. package/lib/template/sub-tabs/sub-tabs.component.ts +0 -1
  224. package/lib/template/three-column/three-column.component.ts +4 -4
  225. package/lib/template/three-column-page/three-column-page.component.ts +0 -1
  226. package/lib/template/two-column/two-column.component.ts +4 -4
  227. package/lib/template/two-column-page/two-column-page.component.ts +0 -1
  228. package/lib/template/two-column-tab/two-column-tab.component.ts +1 -2
  229. package/lib/template/utils.ts +58 -0
  230. package/lib/template/wide-narrow-form/wide-narrow-form.component.ts +4 -4
  231. package/lib/template/wide-narrow-page/wide-narrow-page.component.ts +1 -2
  232. package/lib/template/wss-nav-bar/wss-nav-bar.component.html +5 -4
  233. package/lib/template/wss-nav-bar/wss-nav-bar.component.scss +2 -8
  234. package/lib/template/wss-nav-bar/wss-nav-bar.component.ts +3 -11
  235. package/lib/widget/app-announcement/app-announcement.component.html +1 -2
  236. package/lib/widget/app-announcement/app-announcement.component.scss +2 -2
  237. package/lib/widget/app-announcement/app-announcement.component.ts +0 -1
  238. package/lib/widget/attachment/Attachment.types.ts +92 -0
  239. package/lib/widget/attachment/AttachmentUtils.ts +287 -0
  240. package/lib/widget/attachment/attachment.component.html +3 -3
  241. package/lib/widget/attachment/attachment.component.scss +2 -5
  242. package/lib/widget/attachment/attachment.component.ts +256 -259
  243. package/lib/widget/case-history/case-history.component.ts +0 -1
  244. package/lib/widget/feed-container/feed-container.component.scss +3 -9
  245. package/lib/widget/feed-container/feed-container.component.ts +9 -12
  246. package/lib/widget/file-utility/file-utility.component.html +3 -3
  247. package/lib/widget/file-utility/file-utility.component.scss +5 -16
  248. package/lib/widget/file-utility/file-utility.component.ts +2 -6
  249. package/lib/widget/list-utility/list-utility.component.scss +3 -5
  250. package/lib/widget/list-utility/list-utility.component.ts +0 -1
  251. package/lib/widget/quick-create/quick-create.component.ts +0 -1
  252. package/lib/widget/todo/todo.component.html +13 -11
  253. package/lib/widget/todo/todo.component.scss +19 -11
  254. package/lib/widget/todo/todo.component.ts +101 -87
  255. package/lib/widget/utility/utility.component.ts +0 -1
  256. package/package.json +1 -1
@@ -13,53 +13,42 @@ import { Component } from '@angular/core';
13
13
  standalone: true
14
14
  })
15
15
  export class ReferenceComponent {
16
- referencedComponent: any = null;
17
-
18
16
  /* Used to toggle some class-wide logging */
19
17
  private static bLogging = false;
20
18
 
21
- constructor() {
22
- // With new static method approach, this shouldn't be called any more
23
- window.alert(`in ReferenceComponent constructor!`);
24
-
25
- console.error(`in ReferenceComponent constructor!`);
26
- }
27
-
28
- // onStateChange and updateSelf methods removed from original implementation
29
- // when we moved to the static method implementation.
30
-
31
- // STATIC method to create a normalized PConn (a fully realized View that the 'reference'
32
- // component refers to) from the given pConn. Has to add in some stuff as in the constructor
33
- static createFullReferencedViewFromRef(inPConn: any) {
34
- // BAIL and ERROR if inPConn is NOT a reference!
19
+ /**
20
+ * Creates a normalized PConn from a reference component.
21
+ * Resolves the reference to its fully realized View with proper configuration.
22
+ *
23
+ * @param inPConn - The PConn object that represents a reference component
24
+ * @returns The dereferenced PConnect object, or null if reference can't be resolved
25
+ */
26
+ static createFullReferencedViewFromRef(inPConn: any): any {
27
+ // Validate that inPConn is a reference component
35
28
  if (inPConn.getComponentName() !== 'reference') {
36
- // debugger;
37
-
38
29
  console.error(`Reference component: createFullReferencedViewFromRef inPConn is NOT a reference! ${inPConn.getComponentName()}`);
30
+ return null;
39
31
  }
40
32
 
41
- const theResolvedConfigProps = inPConn.resolveConfigProps(inPConn.getConfigProps());
42
-
43
- const referenceConfig = { ...inPConn.getComponentConfig() } || {};
33
+ // Get reference configuration and make a copy
34
+ const referenceConfig = { ...inPConn.getComponentConfig() };
44
35
 
45
- // Since SDK-A implements Reference as static methods and we don't rely on
46
- // the Reference component's handling of the visibility prop, we leave it in
47
- // (and also leaving the others in for now) so the referenced View can act on
48
- // the visibility prop. (The following 3 lines were carried over from React SDK)
36
+ // Remove properties that should not be inherited by the referenced view
37
+ // (Maintained from React SDK implementation)
49
38
  delete referenceConfig?.name;
50
- // delete referenceConfig?.type;
51
- // delete referenceConfig?.visibility;
39
+ delete referenceConfig?.type;
40
+ delete referenceConfig?.visibility;
52
41
 
42
+ // Get the metadata for the referenced view
53
43
  const viewMetadata = inPConn.getReferencedView();
54
44
 
45
+ // Return null if view metadata is not found
55
46
  if (!viewMetadata) {
56
47
  console.log('View not found ', inPConn.getComponentConfig());
57
48
  return null;
58
49
  }
59
50
 
60
- // If we get here, we have metadata for a View component...
61
- // const referencedComponentName = viewMetadata.type;
62
-
51
+ // Create the view object by merging metadata with reference config
63
52
  const viewObject = {
64
53
  ...viewMetadata,
65
54
  config: {
@@ -68,23 +57,31 @@ export class ReferenceComponent {
68
57
  }
69
58
  };
70
59
 
60
+ // Resolve configuration properties
61
+ const resolvedConfigProps = inPConn.resolveConfigProps(inPConn.getConfigProps());
62
+ const { visibility = true, context, readOnly = false, displayMode = '' } = resolvedConfigProps;
63
+
64
+ // Log debug information if logging is enabled
71
65
  if (ReferenceComponent.bLogging) {
72
- console.log(`Reference: about to call createComponent with pageReference: context: ${theResolvedConfigProps.context}`);
66
+ console.log(`Reference: about to call createComponent with pageReference: context: ${inPConn.getContextName()}`);
73
67
  }
74
68
 
69
+ // Create the component with the right context
75
70
  const viewComponent = inPConn.createComponent(viewObject, null, null, {
76
- pageReference: theResolvedConfigProps.context
71
+ pageReference: context && context.startsWith('@CLASS') ? '' : context
77
72
  });
78
73
 
79
- // updating the referencedComponent should trigger a render
74
+ // Get the PConnect object from the created component
80
75
  const newCompPConnect = viewComponent.getPConnect();
81
76
 
77
+ // Set inherited configuration on the new component
82
78
  newCompPConnect.setInheritedConfig({
83
79
  ...referenceConfig,
84
- readOnly: theResolvedConfigProps.readOnly ? theResolvedConfigProps.readOnly : false,
85
- displayMode: theResolvedConfigProps.displayMode ? theResolvedConfigProps.displayMode : null
80
+ readOnly,
81
+ displayMode
86
82
  });
87
83
 
84
+ // Log debug information if logging is enabled
88
85
  if (ReferenceComponent.bLogging) {
89
86
  console.log(
90
87
  `Angular Reference component: createFullReferencedViewFromRef -> newCompPConnect configProps: ${JSON.stringify(
@@ -93,73 +90,63 @@ export class ReferenceComponent {
93
90
  );
94
91
  }
95
92
 
96
- return newCompPConnect;
93
+ // Return the component if it should be visible, otherwise null
94
+ return visibility !== false ? newCompPConnect : null;
97
95
  }
98
96
 
99
- // STATIC method that other components can call to normalize
100
- // a pConn object that might be a 'reference'. If the incoming
101
- // pConn is a reference, return its dereferenced View PConnect's
102
- // getPConnect. Otherwise, return the passed in pConn unchanged
103
- // inPConn = a PConn object (ex: { getPConnect()} )
104
- static normalizePConn(inPConn: any) {
105
- // debugger;
106
-
107
- let returnObj = false;
108
- let thePConnType = '';
109
-
110
- if (inPConn.getPConnect) {
111
- // inPConn is an object (ex: { getPConnect()} ), so we want to return
112
- // any referenced view as the object containing the
113
- // the getPConnect function
114
- returnObj = true;
115
- thePConnType = inPConn.getPConnect().getComponentName();
116
- } else {
117
- // inPConn is an object with the PConnect function, so we want
118
- // to return any referenced view as the object containing the
119
- // the c11n function
120
- returnObj = false;
121
- thePConnType = inPConn.getComponentName();
97
+ /**
98
+ * Normalizes a PConn object that might be a 'reference'.
99
+ * If the incoming PConn is a reference, returns its dereferenced View.
100
+ * Otherwise, returns the passed in PConn unchanged.
101
+ *
102
+ * @param inPConn - A PConn object (ex: { getPConnect() } or direct PConnect)
103
+ * @returns The normalized PConn object with references resolved
104
+ */
105
+ static normalizePConn(inPConn: any): any {
106
+ // Early return for null or undefined input
107
+ if (!inPConn) {
108
+ return inPConn;
122
109
  }
123
110
 
124
- if (thePConnType === 'reference') {
125
- if (returnObj) {
126
- // WAS...
127
- // const theRefViewPConn = inPConn.getPConnect().getReferencedViewPConnect(true);
128
- // Now: ALWAYS calling createFullReferencedViewFromRef to have options, PageReference, etc.
129
- // set correctly in the C11nEnv (PConnect) object
130
- // debugger;
131
- let theRefViewPConn = this.createFullReferencedViewFromRef(inPConn.getPConnect());
132
- // now return its PConnect
133
- theRefViewPConn = theRefViewPConn.getComponent();
134
-
135
- // const theFullReference = theRefViewPConn.getPConnect().getFullReference();
136
- // console.log(`theFullReference: ${theFullReference}`);
137
-
138
- return theRefViewPConn;
111
+ // Determine if we have an object with getPConnect method or direct PConnect
112
+ const hasGetPConnectMethod = !!inPConn.getPConnect;
113
+
114
+ // Get the component name in the appropriate way based on the object type
115
+ const componentName = hasGetPConnectMethod ? inPConn.getPConnect().getComponentName() : inPConn.getComponentName();
116
+
117
+ // Only process if this is a reference component
118
+ if (componentName === 'reference') {
119
+ if (hasGetPConnectMethod) {
120
+ // For objects with getPConnect method, get the referenced view and its component
121
+ const refViewPConn = this.createFullReferencedViewFromRef(inPConn.getPConnect());
122
+ return refViewPConn?.getComponent();
139
123
  }
140
- // console.log(`created theFullRefView full reference: ${theFullRefView.getFullReference()}`);
141
- // debugger;
142
124
 
125
+ // For direct PConnect objects, just create the referenced view
143
126
  return this.createFullReferencedViewFromRef(inPConn);
144
127
  }
128
+
129
+ // Not a reference component, return unchanged
145
130
  return inPConn;
146
131
  }
147
132
 
148
- // STATIC method that other components can call to normalize
149
- // an array of pConn objects where any of the children might
150
- // be a 'reference'. The array returns an array of children
151
- // where any 'reference' is replaced with its ReferencedView
152
- // inPConnArray is an array of PConn objects or functions.
153
- // Its value is passed to normalizePConn
154
-
155
- static normalizePConnArray(inPConnArray: any) {
156
- if (!(inPConnArray?.length > 0)) {
157
- // null or empty array, return what was passed in
158
- return inPConnArray;
133
+ /**
134
+ * Normalizes an array of PConn objects by replacing any 'reference' components
135
+ * with their referenced views.
136
+ *
137
+ * @param inPConnArray - Array of PConn objects to normalize
138
+ * @returns Normalized array with references resolved, or empty array if input is invalid
139
+ */
140
+ static normalizePConnArray(inPConnArray: any[]): any[] {
141
+ // Handle null, undefined, or empty array case
142
+ if (!inPConnArray?.length) {
143
+ return inPConnArray || [];
159
144
  }
160
145
 
161
- return inPConnArray.map(child => {
162
- return ReferenceComponent.normalizePConn(child);
163
- });
146
+ // Process array: normalize each item and filter out any null/undefined results
147
+ const normalizedArray = inPConnArray.map(child => ReferenceComponent.normalizePConn(child)).filter(Boolean);
148
+
149
+ // Ensure we always return an array (even if filter removes all items)
150
+ return normalizedArray || [];
164
151
  }
165
152
  }
@@ -8,7 +8,6 @@ import { ComponentMapperComponent } from '@pega/angular-sdk-components';
8
8
  selector: 'app-region',
9
9
  templateUrl: './region.component.html',
10
10
  styleUrls: ['./region.component.scss'],
11
- standalone: true,
12
11
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
13
12
  })
14
13
  export class RegionComponent implements OnInit, OnChanges {
@@ -5,20 +5,11 @@
5
5
  <div *ngIf="bShowRoot$">
6
6
  <div [ngSwitch]="componentName$">
7
7
  <component-mapper *ngSwitchCase="'View'" name="View" [props]="{ pConn$, displayOnlyFA$ }"></component-mapper>
8
- <!-- <app-reference *ngSwitchCase="'reference'" [pConn$]="pConn$" [displayOnlyFA$]="displayOnlyFA$"></app-reference> -->
9
8
  <component-mapper
10
9
  *ngSwitchCase="'ViewContainer'"
11
10
  name="ViewContainer"
12
- [props]="{ pConn$: displayOnlyFA$ ? viewContainerPConn$ : pConn$, displayOnlyFA$ }"
11
+ [props]="{ pConn$: viewContainerPConn$, displayOnlyFA$ }"
13
12
  ></component-mapper>
14
- <app-hybrid-view-container *ngSwitchCase="'HybridViewContainer'" [pConn$]="pConn$" [displayOnlyFA$]="displayOnlyFA$"></app-hybrid-view-container>
15
- <app-modal-view-container
16
- *ngSwitchCase="'ModalViewContainer'"
17
- [pConn$]="pConn$"
18
- [displayOnlyFA$]="displayOnlyFA$"
19
- (modalVisibleChange)="modalVisibleChanged($event)"
20
- ></app-modal-view-container>
21
- <div *ngSwitchCase="''"></div>
22
13
  <div *ngSwitchDefault>{{ localizedVal('RootContainer Missing: ' + componentName$, localeCategory) }}.</div>
23
14
  </div>
24
15
  </div>
@@ -28,9 +19,5 @@
28
19
  </div>
29
20
 
30
21
  <div *ngIf="mConn$ != null">
31
- <app-modal-view-container
32
- [pConn$]="mConn$"
33
- [displayOnlyFA$]="displayOnlyFA$"
34
- (modalVisibleChange)="modalVisibleChanged($event)"
35
- ></app-modal-view-container>
22
+ <app-modal-view-container [pConn$]="mConn$"></app-modal-view-container>
36
23
  </div>
@@ -5,7 +5,6 @@
5
5
  align-items: center;
6
6
  height: 100%;
7
7
  width: 100%;
8
- background-color: var(--app-background-color);
9
8
  position: fixed;
10
9
  z-index: 99999;
11
10
  top: 0rem;
@@ -1,13 +1,13 @@
1
- import { Component, OnInit, Input, NgZone, forwardRef, OnDestroy } from '@angular/core';
1
+ import { Component, OnInit, Input, NgZone, forwardRef, OnDestroy, inject } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
4
4
  import { interval, Subscription } from 'rxjs';
5
5
  import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
6
+ import { ServerConfigService } from '@pega/angular-sdk-components';
6
7
  import { ProgressSpinnerService } from '@pega/angular-sdk-components';
7
8
  import { ReferenceComponent } from '@pega/angular-sdk-components';
8
9
  import { PreviewViewContainerComponent } from '@pega/angular-sdk-components';
9
10
  import { ModalViewContainerComponent } from '@pega/angular-sdk-components';
10
- import { HybridViewContainerComponent } from '@pega/angular-sdk-components';
11
11
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
12
12
 
13
13
  /**
@@ -22,11 +22,9 @@ const options = { context: 'app' };
22
22
  selector: 'app-root-container',
23
23
  templateUrl: './root-container.component.html',
24
24
  styleUrls: ['./root-container.component.scss'],
25
- standalone: true,
26
25
  imports: [
27
26
  CommonModule,
28
27
  MatProgressSpinnerModule,
29
- HybridViewContainerComponent,
30
28
  ModalViewContainerComponent,
31
29
  PreviewViewContainerComponent,
32
30
  forwardRef(() => ComponentMapperComponent)
@@ -37,6 +35,8 @@ export class RootContainerComponent implements OnInit, OnDestroy {
37
35
  @Input() displayOnlyFA$: boolean;
38
36
  @Input() isMashup$: boolean;
39
37
 
38
+ scService = inject(ServerConfigService);
39
+
40
40
  // For interaction with AngularPConnect
41
41
  angularPConnectData: AngularPConnectData = {};
42
42
 
@@ -62,12 +62,10 @@ export class RootContainerComponent implements OnInit, OnDestroy {
62
62
  ) {}
63
63
 
64
64
  ngOnInit(): void {
65
- const myContext = 'app';
66
-
67
65
  const { containers } = PCore.getStore().getState();
68
66
  const items = Object.keys(containers).filter(item => item.includes('root'));
69
67
 
70
- (PCore.getContainerUtils().getContainerAPI() as any).addContainerItems(items);
68
+ PCore.getContainerUtils().getContainerAPI().addContainerItems(items);
71
69
 
72
70
  // add preview and modalview containers to redux
73
71
  // keep local copies of the the pConnect that is related
@@ -84,24 +82,11 @@ export class RootContainerComponent implements OnInit, OnDestroy {
84
82
 
85
83
  this.pvConn$ = configObjPreview.getPConnect();
86
84
 
87
- const configObjModal = PCore.createPConnect({
88
- meta: {
89
- type: 'ModalViewContainer',
90
- config: {
91
- name: 'modal'
92
- }
93
- },
94
- options: {
95
- pageReference: 'pyPortal',
96
- context: myContext
97
- }
98
- });
85
+ this.configureModalContainer();
99
86
 
100
87
  // clear out hasViewContainer
101
88
  sessionStorage.setItem('hasViewContainer', 'false');
102
89
 
103
- this.mConn$ = configObjModal.getPConnect();
104
-
105
90
  // First thing in initialization is registering and subscribing to the AngularPConnect service
106
91
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
107
92
 
@@ -128,16 +113,6 @@ export class RootContainerComponent implements OnInit, OnDestroy {
128
113
  }
129
114
  }
130
115
 
131
- modalVisibleChanged(isVisible) {
132
- if (this.displayOnlyFA$) {
133
- if (isVisible) {
134
- this.bShowRoot$ = false;
135
- } else {
136
- this.bShowRoot$ = true;
137
- }
138
- }
139
- }
140
-
141
116
  updateSelf() {
142
117
  // need to call this.getCurrentCompleteProps (not this.thePConn.getConfigProps)
143
118
  // to get full set of props that affect this component in Redux
@@ -156,7 +131,7 @@ export class RootContainerComponent implements OnInit, OnDestroy {
156
131
  if (items[key] && items[key].view && Object.keys(items[key].view).length > 0) {
157
132
  const itemView = items[key].view;
158
133
 
159
- const rootObject: any = PCore.createPConnect({
134
+ const rootObject = PCore.createPConnect({
160
135
  meta: itemView,
161
136
  options: {
162
137
  context: items[key].context
@@ -191,6 +166,25 @@ export class RootContainerComponent implements OnInit, OnDestroy {
191
166
  }
192
167
  }
193
168
 
169
+ async configureModalContainer() {
170
+ const sdkConfig = await this.scService.getSdkConfig();
171
+ const showModalsInEmbeddedMode = sdkConfig.serverConfig.showModalsInEmbeddedMode;
172
+
173
+ if (!this.displayOnlyFA$ || showModalsInEmbeddedMode) {
174
+ const configObjModal = PCore.createPConnect({
175
+ meta: {
176
+ type: 'ModalViewContainer',
177
+ config: {
178
+ name: 'modal'
179
+ }
180
+ },
181
+ options
182
+ });
183
+
184
+ this.mConn$ = configObjModal.getPConnect();
185
+ }
186
+ }
187
+
194
188
  generateViewContainerForNoPortal() {
195
189
  // bootstrap loadMashup resolves to here
196
190
  const arChildren = this.pConn$.getChildren() as any[];
@@ -202,7 +196,7 @@ export class RootContainerComponent implements OnInit, OnDestroy {
202
196
 
203
197
  this.componentName$ = localPConn.getComponentName();
204
198
  if (this.componentName$ === 'ViewContainer') {
205
- const configProps: any = this.pConn$.getConfigProps();
199
+ const configProps = this.pConn$.getConfigProps();
206
200
  const viewContConfig = {
207
201
  meta: {
208
202
  type: 'ViewContainer',
@@ -222,7 +216,6 @@ export class RootContainerComponent implements OnInit, OnDestroy {
222
216
  showHideProgress(bShow: boolean) {
223
217
  // only show spinner after 500ms wait, so if server fast, won't see
224
218
  if (bShow) {
225
- // eslint-disable-next-line sonarjs/no-collapsible-if
226
219
  if (!this.bIsProgress$) {
227
220
  // makes sure Angular tracks these changes
228
221
  if (!this.spinnerTimer || this.spinnerTimer.isStopped) {
@@ -230,7 +223,7 @@ export class RootContainerComponent implements OnInit, OnDestroy {
230
223
  try {
231
224
  this.spinnerTimer.unsubscribe();
232
225
  } catch (ex) {
233
- /* empty */
226
+ console.log(ex);
234
227
  }
235
228
 
236
229
  this.ngZone.run(() => {
@@ -4,10 +4,10 @@
4
4
  <img class="psdk-stages-icon" src="{{ checkSvgIcon$ }}" />{{ PCore$.getLocaleUtils().getLocaleValue(stage.name, '', key) }}
5
5
  </div>
6
6
  <div *ngIf="stage.visited_status == 'active'" class="psdk-stages-inner-present">
7
- {{ PCore$.getLocaleUtils().getLocaleValue(stage.name, '', key) }}
7
+ {{ localizationService.getLocalizedText(stage.name) }}
8
8
  </div>
9
9
  <div *ngIf="stage.visited_status == 'future'" class="psdk-stages-inner-future">
10
- {{ PCore$.getLocaleUtils().getLocaleValue(stage.name, '', key) }}
10
+ {{ localizationService.getLocalizedText(stage.name) }}
11
11
  </div>
12
12
  </div>
13
13
  </div>
@@ -8,45 +8,18 @@
8
8
  font-size: 1.5rem;
9
9
  }
10
10
 
11
- .psdk-stages-div {
12
- display: inline-flex;
13
- padding: 0.3125rem;
14
- font-weight: bold;
15
- font-size: 1.3rem;
16
- color: var(--app-neutral-color);
17
- }
18
-
19
- .psdk-stages-past {
20
- color: var(--app-primary-color);
21
- padding-right: 0.3125rem;
22
- }
23
-
24
- .psdk-stages-present {
25
- color: var(--app-secondary-color);
26
- padding-right: 0.3125rem;
27
- }
28
-
29
- .psdk-stages-future {
30
- color: var(--app-neutral-color);
31
- padding-right: 0.3125rem;
32
- }
33
-
34
11
  .psdk-stages-full {
35
12
  display: block;
36
13
  }
37
14
 
38
15
  .psdk-stages-divider {
39
- border-bottom: 0.0625rem solid var(--app-neutral-light-color);
16
+ border-bottom: 0.0625rem solid var(--mat-sys-outline-variant);
40
17
  }
41
18
 
42
19
  .psdk-stages-full {
43
20
  display: block;
44
21
  }
45
22
 
46
- .psdk-stages-divider {
47
- border-bottom: 0.0625rem solid var(--app-neutral-light-color);
48
- }
49
-
50
23
  .psdk-stages-icon {
51
24
  width: 1.4rem;
52
25
  display: inline-block;
@@ -54,18 +27,17 @@
54
27
  }
55
28
 
56
29
  .psdk-stages-bar {
57
- margin: 1rem 0rem;
58
- background-color: var(--app-form-color);
30
+ background-color: var(--mat-sys-surface-container);
59
31
  border-radius: 0.5rem;
60
- border: 0.0625rem solid var(--app-neutral-light-color);
32
+ border: 0.0625rem solid var(--mat-sys-outline-variant);
61
33
  overflow: hidden;
62
- height: 2rem;
63
34
  display: flex;
35
+ flex-wrap: wrap;
64
36
  }
65
37
 
66
38
  .psdk-stages-chevron {
67
39
  position: relative;
68
- padding: calc(1rem);
40
+ padding: calc(0.5rem);
69
41
  display: flex;
70
42
  justify-content: center;
71
43
  align-items: center;
@@ -84,7 +56,7 @@
84
56
  right: calc(-0.4375rem);
85
57
  background: inherit;
86
58
  border-style: solid;
87
- border-color: rgb(207, 207, 207);
59
+ border-color: var(--mat-sys-outline-variant);
88
60
  border-width: 0.0625rem 0.0625rem 0px 0px;
89
61
  border-radius: 0px calc(0.3125rem) 0px 0px;
90
62
  transform: rotateZ(45deg) skew(15deg, 15deg);
@@ -92,17 +64,17 @@
92
64
  }
93
65
 
94
66
  .psdk-stages-inner-past {
95
- color: var(--app-inverse-form-color);
67
+ color: var(--mat-sys-outline-variant);
96
68
  font-size: 1rem;
97
69
  }
98
70
 
99
71
  .psdk-stages-inner-present {
100
- color: var(--app-primary-color);
72
+ color: var(--mat-sys-primary);
101
73
  font-weight: bold;
102
74
  font-size: 1rem;
103
75
  }
104
76
 
105
77
  .psdk-stages-inner-future {
106
- color: var(--app-neutral-color);
78
+ color: var(--mat-sys-on-surface);
107
79
  font-size: 1rem;
108
80
  }
@@ -13,7 +13,6 @@ interface StagesProps {
13
13
  selector: 'app-stages',
14
14
  templateUrl: './stages.component.html',
15
15
  styleUrls: ['./stages.component.scss'],
16
- standalone: true,
17
16
  imports: [CommonModule]
18
17
  })
19
18
  export class StagesComponent implements OnInit, OnDestroy {
@@ -27,7 +26,8 @@ export class StagesComponent implements OnInit, OnDestroy {
27
26
  arStageResults$: any[];
28
27
  lastStage$: any;
29
28
  checkSvgIcon$: string;
30
- key: string;
29
+ key: any;
30
+ localizationService: any;
31
31
 
32
32
  constructor(
33
33
  private angularPConnect: AngularPConnectService,
@@ -40,7 +40,8 @@ export class StagesComponent implements OnInit, OnDestroy {
40
40
 
41
41
  // const imagePath = this.utils.getIconPath(this.utils.getSDKStaticContentUrl());
42
42
  this.checkSvgIcon$ = this.utils.getImageSrc('check', this.utils.getSDKStaticContentUrl());
43
- this.key = `${this.pConn$.getCaseInfo().getClassName()}!CASE!${this.pConn$.getCaseInfo().getName()}`.toUpperCase();
43
+ this.key = this.pConn$?.getCaseLocaleReference();
44
+ this.localizationService = this.pConn$?.getLocalizationService();
44
45
  }
45
46
 
46
47
  ngOnDestroy(): void {
@@ -1,5 +1,5 @@
1
1
  <div *ngIf="visibility$ !== false" class="ng-view-top">
2
- <div *ngIf="showLabel$ && label$ && templateName$ !== 'SimpleTable' && templateName$ !== 'DefaultForm'" class="template-title-container">
2
+ <div *ngIf="showLabel$ && label$ && !noHeaderTemplates.includes(templateName$)" class="template-title-container">
3
3
  <span>{{ label$ }}</span>
4
4
  </div>
5
5
 
@@ -14,25 +14,12 @@
14
14
  </ng-container>
15
15
 
16
16
  <ng-template #noTemplate>
17
- <div *ngIf="displayOnlyFA$; else displayAll">
18
- <div *ngFor="let kid of arChildren$">
19
- <div [ngSwitch]="kid.getPConnect().getComponentName()">
20
- <component-mapper
21
- [name]="kid.getPConnect().getComponentName()"
22
- [props]="{ pConn$: kid.getPConnect() }"
23
- errorMsg="View Missing (displayOnlyFA): {{ kid.getPConnect().getComponentName() }}"
24
- ></component-mapper>
25
- </div>
26
- </div>
17
+ <div *ngFor="let kid of arChildren$">
18
+ <component-mapper
19
+ [name]="kid.getPConnect().getComponentName()"
20
+ [props]="{ pConn$: kid.getPConnect(), formGroup$ }"
21
+ errorMsg="View Missing (displayAll): {{ kid.getPConnect().getComponentName() }}"
22
+ ></component-mapper>
27
23
  </div>
28
- <ng-template #displayAll>
29
- <div *ngFor="let kid of arChildren$">
30
- <component-mapper
31
- [name]="kid.getPConnect().getComponentName()"
32
- [props]="{ pConn$: kid.getPConnect() }"
33
- errorMsg="View Missing (displayAll): {{ kid.getPConnect().getComponentName() }}"
34
- ></component-mapper>
35
- </div>
36
- </ng-template>
37
24
  </ng-template>
38
25
  </div>