@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
@@ -1,22 +1,27 @@
1
- import { Component, OnInit, Input, forwardRef, OnDestroy } from '@angular/core';
1
+ import { Component, OnInit, Input, OnDestroy } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormGroup } from '@angular/forms';
4
4
  import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
5
- import { ComponentMapperComponent } from '@pega/angular-sdk-components';
5
+ import { getDataReferenceInfo, isLinkTextEmpty } from '@pega/angular-sdk-components';
6
6
  import { Utils } from '@pega/angular-sdk-components';
7
7
  import { PConnFieldProps } from '@pega/angular-sdk-components';
8
8
 
9
9
  interface SemanticLinkProps extends PConnFieldProps {
10
10
  // If any, enter additional props that only exist on SemanticLink here
11
11
  text: string;
12
+ resourcePayload: any;
13
+ resourceParams: any;
14
+ previewKey: string;
15
+ referenceType: string;
16
+ dataRelationshipContext: string;
17
+ contextPage: any;
12
18
  }
13
19
 
14
20
  @Component({
15
21
  selector: 'app-semantic-link',
16
22
  templateUrl: './semantic-link.component.html',
17
23
  styleUrls: ['./semantic-link.component.scss'],
18
- standalone: true,
19
- imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
24
+ imports: [CommonModule]
20
25
  })
21
26
  export class SemanticLinkComponent implements OnInit, OnDestroy {
22
27
  @Input() pConn$: typeof PConnect;
@@ -29,6 +34,15 @@ export class SemanticLinkComponent implements OnInit, OnDestroy {
29
34
  value$ = '';
30
35
  displayMode$?: string = '';
31
36
  bVisible$ = true;
37
+ linkURL = '';
38
+ dataResourcePayLoad: any;
39
+ referenceType: string;
40
+ shouldTreatAsDataReference: boolean;
41
+ previewKey: string;
42
+ resourcePayload: any = {};
43
+ payload: object;
44
+ dataViewName = '';
45
+ isLinkTextEmpty = false;
32
46
 
33
47
  constructor(
34
48
  private angularPConnect: AngularPConnectService,
@@ -38,7 +52,7 @@ export class SemanticLinkComponent implements OnInit, OnDestroy {
38
52
  ngOnInit(): void {
39
53
  // First thing in initialization is registering and subscribing to the AngularPConnect service
40
54
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
41
- this.updateSelf();
55
+ this.checkAndUpdate();
42
56
  }
43
57
 
44
58
  ngOnDestroy(): void {
@@ -48,6 +62,10 @@ export class SemanticLinkComponent implements OnInit, OnDestroy {
48
62
  }
49
63
 
50
64
  onStateChange() {
65
+ this.updateSelf();
66
+ }
67
+
68
+ checkAndUpdate() {
51
69
  // Should always check the bridge to see if the component should
52
70
  // update itself (re-render)
53
71
  const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
@@ -59,12 +77,153 @@ export class SemanticLinkComponent implements OnInit, OnDestroy {
59
77
  }
60
78
 
61
79
  updateSelf() {
80
+ this.initializeComponentState();
81
+ const isData = this.buildDataPayload();
82
+ this.linkURL = this.buildLinkURL(isData);
83
+ this.isLinkTextEmpty = isLinkTextEmpty(this.value$);
84
+ }
85
+
86
+ showDataAction() {
87
+ if (this.dataResourcePayLoad && this.dataResourcePayLoad.resourceType === 'DATA') {
88
+ const { content } = this.dataResourcePayLoad;
89
+ const lookUpDataPageInfo = PCore.getDataTypeUtils().getLookUpDataPageInfo(this.dataResourcePayLoad?.className);
90
+ const lookUpDataPage = PCore.getDataTypeUtils().getLookUpDataPage(this.dataResourcePayLoad?.className);
91
+ if (lookUpDataPageInfo) {
92
+ const { parameters } = lookUpDataPageInfo as any;
93
+ this.payload = Object.keys(parameters).reduce((acc, param) => {
94
+ const paramValue = parameters[param];
95
+ return {
96
+ ...acc,
97
+ [param]: PCore.getAnnotationUtils().isProperty(paramValue) ? content[PCore.getAnnotationUtils().getPropertyName(paramValue)] : paramValue
98
+ };
99
+ }, {});
100
+ }
101
+ this.pConn$.getActionsApi().showData('pyDetails', lookUpDataPage, {
102
+ ...this.payload
103
+ });
104
+ }
105
+ if ((this.referenceType && this.referenceType.toUpperCase() === 'DATA') || this.shouldTreatAsDataReference) {
106
+ this.pConn$.getActionsApi().showData('pyDetails', this.dataViewName, {
107
+ ...this.payload
108
+ });
109
+ }
110
+ }
111
+
112
+ openLinkClick(e) {
113
+ if (!e.metaKey && !e.ctrlKey) {
114
+ e.preventDefault();
115
+ if (
116
+ (this.dataResourcePayLoad && this.dataResourcePayLoad.resourceType === 'DATA') ||
117
+ (this.referenceType && this.referenceType.toUpperCase() === 'DATA') ||
118
+ this.shouldTreatAsDataReference
119
+ ) {
120
+ this.showDataAction();
121
+ } else if (this.previewKey) {
122
+ this.pConn$.getActionsApi().openWorkByHandle(this.previewKey, this.resourcePayload.caseClassName);
123
+ }
124
+ }
125
+ }
126
+
127
+ private initializeComponentState() {
62
128
  this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as SemanticLinkProps;
63
- this.value$ = this.configProps$.text || '---';
129
+ this.value$ = this.configProps$.text || this.configProps$.value || '';
64
130
  this.displayMode$ = this.configProps$.displayMode;
65
131
  this.label$ = this.configProps$.label;
66
132
  if (this.configProps$.visibility) {
67
133
  this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
68
134
  }
135
+ this.referenceType = this.configProps$.referenceType;
136
+ this.previewKey = this.configProps$.previewKey;
137
+ this.resourcePayload = this.configProps$.resourcePayload ?? {};
138
+ this.dataResourcePayLoad = this.resourcePayload?.resourceType === 'DATA' ? this.resourcePayload : null;
139
+ this.shouldTreatAsDataReference = !this.previewKey && this.resourcePayload?.caseClassName;
140
+
141
+ const { contextPage } = this.configProps$;
142
+ if (contextPage?.classID) {
143
+ this.resourcePayload.caseClassName = contextPage.classID;
144
+ }
145
+
146
+ const {
147
+ WORKCLASS,
148
+ CASE_INFO: { CASE_INFO_CLASSID }
149
+ } = PCore.getConstants();
150
+ if (this.resourcePayload.caseClassName === WORKCLASS) {
151
+ this.resourcePayload.caseClassName = this.pConn$.getValue(CASE_INFO_CLASSID);
152
+ }
153
+ }
154
+
155
+ private buildDataPayload() {
156
+ const { dataRelationshipContext = null, contextPage } = this.configProps$;
157
+ const {
158
+ RESOURCE_TYPES: { DATA }
159
+ } = PCore.getConstants();
160
+
161
+ if ((this.referenceType && this.referenceType.toUpperCase() === DATA) || this.shouldTreatAsDataReference) {
162
+ try {
163
+ const dataRefContext = getDataReferenceInfo(this.pConn$, dataRelationshipContext, contextPage);
164
+ this.dataViewName = dataRefContext.dataContext ?? '';
165
+ this.payload = dataRefContext.dataContextParameters ?? {};
166
+ return true;
167
+ } catch (error) {
168
+ console.log('Error in getting the data reference info', error);
169
+ return false;
170
+ }
171
+ }
172
+
173
+ if (this.resourcePayload?.resourceType === 'DATA') {
174
+ this.dataViewName = PCore.getDataTypeUtils().getLookUpDataPage(this.resourcePayload.className);
175
+ const lookUpDataPageInfo: any = PCore.getDataTypeUtils().getLookUpDataPageInfo(this.resourcePayload.className);
176
+ const { content } = this.resourcePayload;
177
+
178
+ if (lookUpDataPageInfo) {
179
+ const { parameters } = lookUpDataPageInfo;
180
+ this.payload = Object.keys(parameters).reduce((acc, param) => {
181
+ const paramValue = parameters[param];
182
+ const propName = PCore.getAnnotationUtils().getPropertyName(paramValue);
183
+ const value = PCore.getAnnotationUtils().isProperty(paramValue) ? content[propName] : paramValue;
184
+ return { ...acc, [param]: value };
185
+ }, {});
186
+ } else {
187
+ const keysInfo = PCore.getDataTypeUtils().getDataPageKeys(this.dataViewName) ?? [];
188
+ this.payload = keysInfo.reduce((acc, curr) => {
189
+ const key = curr.isAlternateKeyStorage ? curr.linkedField : curr.keyName;
190
+ return { ...acc, [curr.keyName]: content[key] };
191
+ }, {});
192
+ }
193
+ return true;
194
+ }
195
+ return false;
196
+ }
197
+
198
+ private buildLinkURL(isData: boolean) {
199
+ const { ACTION_OPENWORKBYHANDLE, ACTION_SHOWDATA, ACTION_GETOBJECT } = PCore.getSemanticUrlUtils().getActions() as any;
200
+
201
+ if (isData && this.dataViewName && this.payload) {
202
+ return PCore.getSemanticUrlUtils().getResolvedSemanticURL(
203
+ ACTION_SHOWDATA,
204
+ { pageName: 'pyDetails', dataViewName: this.dataViewName },
205
+ { ...this.payload }
206
+ );
207
+ }
208
+
209
+ const { resourceParams = {} } = this.configProps$;
210
+ const isObjectType = (PCore.getCaseUtils() as any).isObjectCaseType(this.resourcePayload.caseClassName);
211
+ const idKey = isObjectType ? 'objectID' : 'workID';
212
+
213
+ if (resourceParams.workID === '' && typeof this.previewKey === 'string') {
214
+ resourceParams[idKey] = this.previewKey.split(' ')[1];
215
+ } else {
216
+ resourceParams[idKey] = resourceParams.workID;
217
+ }
218
+
219
+ if (this.previewKey) {
220
+ resourceParams.id = this.previewKey;
221
+ }
222
+
223
+ return PCore.getSemanticUrlUtils().getResolvedSemanticURL(
224
+ isObjectType ? ACTION_GETOBJECT : ACTION_OPENWORKBYHANDLE,
225
+ this.resourcePayload,
226
+ resourceParams
227
+ );
69
228
  }
70
229
  }
@@ -25,6 +25,5 @@
25
25
  }
26
26
 
27
27
  .psdk-details-fields-label {
28
- color: var(--app-label-color);
29
28
  margin: 8px 0px;
30
29
  }
@@ -1,9 +1,11 @@
1
1
  import { Component, OnInit, Input, forwardRef, OnDestroy } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { FormGroup } from '@angular/forms';
3
4
  import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
4
5
  import { Utils } from '@pega/angular-sdk-components';
5
6
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
6
7
  import { PConnFieldProps } from '@pega/angular-sdk-components';
8
+ import { format } from '@pega/angular-sdk-components';
7
9
 
8
10
  interface TextProps extends PConnFieldProps {
9
11
  // If any, enter additional props that only exist on Text here
@@ -13,11 +15,11 @@ interface TextProps extends PConnFieldProps {
13
15
  selector: 'app-text',
14
16
  templateUrl: './text.component.html',
15
17
  styleUrls: ['./text.component.scss'],
16
- standalone: true,
17
18
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
18
19
  })
19
20
  export class TextComponent implements OnInit, OnDestroy {
20
21
  @Input() pConn$: typeof PConnect;
22
+ @Input() formGroup$: FormGroup;
21
23
  @Input() formatAs$: string;
22
24
 
23
25
  // Used with AngularPConnect
@@ -97,8 +99,9 @@ export class TextComponent implements OnInit, OnDestroy {
97
99
  break;
98
100
  case 'time':
99
101
  if (this.value$) {
100
- const timeParts = this.value$.split(':');
101
- this.formattedValue$ = `${timeParts[0]}:${timeParts[1]}`;
102
+ this.formattedValue$ = format(this.value$, 'timeonly', {
103
+ format: 'hh:mm A'
104
+ });
102
105
  } else {
103
106
  this.formattedValue$ = '';
104
107
  }
@@ -142,7 +145,7 @@ export class TextComponent implements OnInit, OnDestroy {
142
145
  generateDateTime(sVal): string {
143
146
  if (!sVal) return '';
144
147
  if (sVal.length === 10) return this.generateDate(sVal);
145
- const value = sVal.substring(0, sVal.length - 1);
148
+ // const value = sVal.substring(0, sVal.length - 1);
146
149
  // value = new Intl.DateTimeFormat('default', {
147
150
  // year: 'numeric',
148
151
  // month: 'numeric',
@@ -153,6 +156,6 @@ export class TextComponent implements OnInit, OnDestroy {
153
156
  // hour12: true,
154
157
  // }).format(new Date(value))
155
158
 
156
- return this.utils.generateDateTime(value, 'DateTime-Long-YYYY-Custom');
159
+ return this.utils.generateDateTime(sVal, 'DateTime-Long-YYYY-Custom');
157
160
  }
158
161
  }
@@ -2,10 +2,11 @@
2
2
  <component-mapper *ngIf="bVisible$ !== false" name="FieldValueList" [props]="{ label$, value$, displayMode$ }"></component-mapper>
3
3
  </div>
4
4
  <ng-template #noDisplayMode>
5
- <div *ngIf="!bReadonly$ && bHasForm$; else noEdit">
5
+ <div *ngIf="bHasForm$; else noEdit">
6
6
  <div [formGroup]="formGroup$">
7
7
  <div *ngIf="bVisible$">
8
8
  <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
9
+ <mat-label>{{ label$ }}</mat-label>
9
10
  <textarea
10
11
  matInput
11
12
  rows="5"
@@ -15,8 +16,10 @@
15
16
  [value]="value$"
16
17
  [required]="bRequired$"
17
18
  [disabled]="bDisabled$"
19
+ [readonly]="bReadonly$"
18
20
  [formControl]="fieldControl"
19
21
  (change)="fieldOnChange($event)"
22
+ (blur)="fieldOnBlur($event)"
20
23
  ></textarea>
21
24
  <mat-error *ngIf="fieldControl.invalid">{{ getErrorMessage() }}</mat-error>
22
25
  </mat-form-field>
@@ -1,12 +1,12 @@
1
- import { Component, OnInit, Input, ChangeDetectorRef, forwardRef, OnDestroy } from '@angular/core';
1
+ import { Component, forwardRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
4
  import { MatInputModule } from '@angular/material/input';
5
5
  import { MatFormFieldModule } from '@angular/material/form-field';
6
- import { interval } from 'rxjs';
7
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
8
- import { Utils } from '@pega/angular-sdk-components';
6
+
7
+ import { FieldBase } from '@pega/angular-sdk-components';
9
8
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
9
+ import { handleEvent } from '@pega/angular-sdk-components';
10
10
  import { PConnFieldProps } from '@pega/angular-sdk-components';
11
11
 
12
12
  interface TextAreaProps extends PConnFieldProps {
@@ -18,167 +18,49 @@ interface TextAreaProps extends PConnFieldProps {
18
18
  selector: 'app-text-area',
19
19
  templateUrl: './text-area.component.html',
20
20
  styleUrls: ['./text-area.component.scss'],
21
- standalone: true,
22
21
  imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)]
23
22
  })
24
- export class TextAreaComponent implements OnInit, OnDestroy {
25
- @Input() pConn$: typeof PConnect;
26
- @Input() formGroup$: FormGroup;
27
-
28
- // Used with AngularPConnect
29
- angularPConnectData: AngularPConnectData = {};
23
+ export class TextAreaComponent extends FieldBase {
30
24
  configProps$: TextAreaProps;
31
25
 
32
- label$ = '';
33
- value$ = '';
34
- bRequired$ = false;
35
- bReadonly$ = false;
36
- bDisabled$ = false;
37
- bVisible$ = true;
38
26
  nMaxLength$: number;
39
- displayMode$?: string = '';
40
- controlName$: string;
41
- bHasForm$ = true;
42
- componentReference = '';
43
- testId: string;
44
- helperText: string;
45
-
46
- fieldControl = new FormControl('', null);
47
-
48
- constructor(
49
- private angularPConnect: AngularPConnectService,
50
- private cdRef: ChangeDetectorRef,
51
- private utils: Utils
52
- ) {}
53
-
54
- ngOnInit(): void {
55
- // First thing in initialization is registering and subscribing to the AngularPConnect service
56
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
57
- this.controlName$ = this.angularPConnect.getComponentID(this);
58
-
59
- // Then, continue on with other initialization
60
-
61
- // call updateSelf when initializing
62
- // this.updateSelf();
63
- this.checkAndUpdate();
64
-
65
- if (this.formGroup$) {
66
- // add control to formGroup
67
- this.formGroup$.addControl(this.controlName$, this.fieldControl);
68
- this.fieldControl.setValue(this.value$);
69
- this.bHasForm$ = true;
70
- } else {
71
- this.bReadonly$ = true;
72
- this.bHasForm$ = false;
73
- }
74
- }
75
-
76
- ngOnDestroy(): void {
77
- if (this.formGroup$) {
78
- this.formGroup$.removeControl(this.controlName$);
79
- }
80
-
81
- if (this.angularPConnectData.unsubscribeFn) {
82
- this.angularPConnectData.unsubscribeFn();
83
- }
84
- }
85
-
86
- // Callback passed when subscribing to store change
87
- onStateChange() {
88
- this.checkAndUpdate();
89
- }
90
-
91
- checkAndUpdate() {
92
- // Should always check the bridge to see if the component should
93
- // update itself (re-render)
94
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
95
-
96
- // ONLY call updateSelf when the component should update
97
- if (bUpdateSelf) {
98
- this.updateSelf();
99
- }
100
- }
101
27
 
102
- // updateSelf
103
- updateSelf(): void {
104
- // moved this from ngOnInit() and call this from there instead...
28
+ /**
29
+ * Updates the component when there are changes in the state.
30
+ */
31
+ override updateSelf(): void {
32
+ // Resolve config properties
105
33
  this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as TextAreaProps;
106
34
 
107
- if (this.configProps$.value != undefined) {
108
- this.value$ = this.configProps$.value;
109
- }
110
- this.nMaxLength$ = this.pConn$.getFieldMetadata(this.pConn$.getRawConfigProps()?.value)?.maxLength || 100;
111
- this.testId = this.configProps$.testId;
112
- this.displayMode$ = this.configProps$.displayMode;
113
- this.label$ = this.configProps$.label;
114
- this.helperText = this.configProps$.helperText;
115
-
116
- // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
117
- setTimeout(() => {
118
- if (this.configProps$.required != null) {
119
- this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
120
- }
121
- this.cdRef.detectChanges();
122
- });
35
+ // Update component common properties
36
+ this.updateComponentCommonProperties(this.configProps$);
123
37
 
124
- if (this.configProps$.visibility != null) {
125
- this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
126
- }
127
-
128
- // disabled
129
- if (this.configProps$.disabled != undefined) {
130
- this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
131
- }
38
+ // Extract properties from config
39
+ const { value } = this.configProps$;
132
40
 
133
- if (this.bDisabled$) {
134
- this.fieldControl.disable();
135
- } else {
136
- this.fieldControl.enable();
137
- }
138
-
139
- if (this.configProps$.readOnly != null) {
140
- this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
141
- }
142
-
143
- this.componentReference = (this.pConn$.getStateProps() as any).value;
41
+ // Set component specific properties
42
+ this.value$ = value;
43
+ this.nMaxLength$ = this.pConn$.getFieldMetadata(this.pConn$.getRawConfigProps()?.value)?.maxLength || 100;
44
+ }
144
45
 
145
- // trigger display of error message with field control
146
- if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
147
- const timer = interval(100).subscribe(() => {
148
- this.fieldControl.setErrors({ message: true });
149
- this.fieldControl.markAsTouched();
46
+ fieldOnChange(event: any) {
47
+ const oldVal = this.value$ ?? '';
48
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
150
49
 
151
- timer.unsubscribe();
50
+ if (isValueChanged) {
51
+ this.pConn$.clearErrorMessages({
52
+ property: this.propName
152
53
  });
153
54
  }
154
55
  }
155
56
 
156
- fieldOnChange(event: any) {
157
- // PConnect wants to use changeHandler for onChange
158
- this.angularPConnectData.actions?.onChange(this, event);
159
- }
160
-
161
57
  fieldOnBlur(event: any) {
162
- // PConnect wants to use eventHandler for onBlur
163
- this.angularPConnectData.actions?.onBlur(this, event);
164
- }
165
-
166
- getErrorMessage() {
167
- // field control gets error message from here
168
-
169
- let errMessage = '';
58
+ const oldVal = this.value$ ?? '';
59
+ const isValueChanged = event.target.value.toString() !== oldVal.toString();
170
60
 
171
- // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
172
- if (this.fieldControl.hasError('message')) {
173
- errMessage = this.angularPConnectData.validateMessage ?? '';
174
- return errMessage;
61
+ if (isValueChanged) {
62
+ const value = event?.target?.value;
63
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
175
64
  }
176
- if (this.fieldControl.hasError('required')) {
177
- errMessage = 'You must enter a value';
178
- } else if (this.fieldControl.errors) {
179
- errMessage = this.fieldControl.errors.toString();
180
- }
181
-
182
- return errMessage;
183
65
  }
184
66
  }
@@ -14,7 +14,6 @@ interface TextContentProps extends PConnFieldProps {
14
14
  selector: 'app-text-content',
15
15
  templateUrl: './text-content.component.html',
16
16
  styleUrls: ['./text-content.component.scss'],
17
- standalone: true,
18
17
  imports: [CommonModule]
19
18
  })
20
19
  export class TextContentComponent implements OnInit, OnDestroy {