@pega/angular-sdk-overrides 24.2.12 → 25.1.11

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 (237) 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 +0 -1
  4. package/lib/designSystemExtension/banner/banner.component.html +1 -1
  5. package/lib/designSystemExtension/banner/banner.component.scss +17 -3
  6. package/lib/designSystemExtension/banner/banner.component.ts +0 -1
  7. package/lib/designSystemExtension/case-create-stage/case-create-stage.component.ts +0 -1
  8. package/lib/designSystemExtension/field-group/field-group.component.ts +0 -1
  9. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.html +6 -3
  10. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.scss +5 -34
  11. package/lib/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -1
  12. package/lib/designSystemExtension/material-details/material-details.component.scss +0 -5
  13. package/lib/designSystemExtension/material-details/material-details.component.ts +0 -1
  14. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.html +2 -2
  15. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.scss +4 -3
  16. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.ts +0 -1
  17. package/lib/designSystemExtension/material-summary-item/material-summary-item.component.scss +4 -17
  18. package/lib/designSystemExtension/material-summary-item/material-summary-item.component.ts +0 -1
  19. package/lib/designSystemExtension/material-summary-list/material-summary-list.component.ts +0 -1
  20. package/lib/designSystemExtension/material-utility/material-utility.component.scss +1 -2
  21. package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.scss +1 -1
  22. package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts +0 -1
  23. package/lib/designSystemExtension/operator/operator.component.html +1 -1
  24. package/lib/designSystemExtension/operator/operator.component.scss +3 -10
  25. package/lib/designSystemExtension/operator/operator.component.ts +0 -2
  26. package/lib/designSystemExtension/pulse/pulse.component.scss +2 -2
  27. package/lib/designSystemExtension/pulse/pulse.component.ts +0 -1
  28. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.html +4 -17
  29. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.scss +0 -1
  30. package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.ts +30 -1
  31. package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.scss +16 -9
  32. package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.ts +0 -1
  33. package/lib/field/auto-complete/auto-complete.component.html +0 -1
  34. package/lib/field/auto-complete/auto-complete.component.ts +35 -173
  35. package/lib/field/cancel-alert/cancel-alert.component.html +8 -12
  36. package/lib/field/cancel-alert/cancel-alert.component.scss +2 -3
  37. package/lib/field/cancel-alert/cancel-alert.component.ts +24 -37
  38. package/lib/field/check-box/check-box.component.html +19 -10
  39. package/lib/field/check-box/check-box.component.scss +6 -1
  40. package/lib/field/check-box/check-box.component.ts +25 -151
  41. package/lib/field/currency/currency.component.ts +36 -169
  42. package/lib/field/date/date.component.html +2 -2
  43. package/lib/field/date/date.component.ts +30 -151
  44. package/lib/field/date-time/date-time.component.html +1 -1
  45. package/lib/field/date-time/date-time.component.ts +34 -149
  46. package/lib/field/decimal/decimal.component.ts +38 -164
  47. package/lib/field/dropdown/dropdown.component.ts +29 -152
  48. package/lib/field/email/email.component.ts +16 -156
  49. package/lib/field/field.base.ts +149 -0
  50. package/lib/field/group/group.component.ts +7 -5
  51. package/lib/field/integer/integer.component.ts +18 -158
  52. package/lib/field/list-view-action-buttons/list-view-action-buttons.component.ts +0 -1
  53. package/lib/field/location/config-ext.json +8 -0
  54. package/lib/field/location/location.component.html +46 -0
  55. package/lib/field/location/location.component.scss +18 -0
  56. package/lib/field/location/location.component.spec.ts +22 -0
  57. package/lib/field/location/location.component.ts +280 -0
  58. package/lib/field/multiselect/multiselect.component.ts +47 -152
  59. package/lib/field/multiselect/utils.ts +55 -47
  60. package/lib/field/object-reference/object-reference.component.html +17 -0
  61. package/lib/field/object-reference/object-reference.component.scss +0 -0
  62. package/lib/field/object-reference/object-reference.component.spec.ts +22 -0
  63. package/lib/field/object-reference/object-reference.component.ts +237 -0
  64. package/lib/field/percentage/percentage.component.ts +37 -155
  65. package/lib/field/phone/phone.component.html +18 -19
  66. package/lib/field/phone/phone.component.scss +4 -0
  67. package/lib/field/phone/phone.component.ts +43 -145
  68. package/lib/field/radio-buttons/radio-buttons.component.html +14 -6
  69. package/lib/field/radio-buttons/radio-buttons.component.scss +4 -2
  70. package/lib/field/radio-buttons/radio-buttons.component.ts +37 -160
  71. package/lib/field/rich-text/rich-text.component.html +2 -0
  72. package/lib/field/rich-text/rich-text.component.scss +172 -0
  73. package/lib/field/rich-text/rich-text.component.ts +21 -91
  74. package/lib/field/scalar-list/scalar-list.component.ts +17 -73
  75. package/lib/field/selectable-card/selectable-card.component.html +70 -0
  76. package/lib/field/selectable-card/selectable-card.component.scss +11 -0
  77. package/lib/field/selectable-card/selectable-card.component.spec.ts +22 -0
  78. package/lib/field/selectable-card/selectable-card.component.ts +219 -0
  79. package/lib/field/semantic-link/semantic-link.component.html +4 -8
  80. package/lib/field/semantic-link/semantic-link.component.scss +0 -13
  81. package/lib/field/semantic-link/semantic-link.component.ts +165 -6
  82. package/lib/field/text/text.component.scss +0 -1
  83. package/lib/field/text/text.component.ts +0 -1
  84. package/lib/field/text-area/text-area.component.ts +18 -153
  85. package/lib/field/text-content/text-content.component.ts +0 -1
  86. package/lib/field/text-input/text-input.component.ts +16 -156
  87. package/lib/field/time/time.component.ts +17 -152
  88. package/lib/field/url/url.component.ts +16 -155
  89. package/lib/field/user-reference/user-reference.component.scss +0 -1
  90. package/lib/field/user-reference/user-reference.component.ts +2 -4
  91. package/lib/infra/Containers/flow-container/flow-container.component.html +2 -2
  92. package/lib/infra/Containers/flow-container/flow-container.component.ts +8 -9
  93. package/lib/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts +0 -1
  94. package/lib/infra/Containers/modal-view-container/modal-view-container.component.ts +5 -11
  95. package/lib/infra/Containers/view-container/helper.ts +35 -2
  96. package/lib/infra/Containers/view-container/view-container.component.ts +1 -2
  97. package/lib/infra/action-buttons/action-buttons.component.html +13 -8
  98. package/lib/infra/action-buttons/action-buttons.component.scss +23 -0
  99. package/lib/infra/action-buttons/action-buttons.component.ts +1 -3
  100. package/lib/infra/assignment/assignment.component.ts +21 -10
  101. package/lib/infra/assignment-card/assignment-card.component.html +1 -2
  102. package/lib/infra/assignment-card/assignment-card.component.scss +0 -4
  103. package/lib/infra/assignment-card/assignment-card.component.ts +21 -5
  104. package/lib/infra/dashboard-filter/dashboard-filter.component.ts +0 -1
  105. package/lib/infra/defer-load/defer-load.component.html +6 -2
  106. package/lib/infra/defer-load/defer-load.component.ts +22 -12
  107. package/lib/infra/error-boundary/error-boundary.component.ts +0 -1
  108. package/lib/infra/multi-step/multi-step.component.html +22 -38
  109. package/lib/infra/multi-step/multi-step.component.scss +14 -27
  110. package/lib/infra/multi-step/multi-step.component.ts +0 -1
  111. package/lib/infra/navbar/navbar.component.html +36 -41
  112. package/lib/infra/navbar/navbar.component.scss +22 -4
  113. package/lib/infra/navbar/navbar.component.ts +8 -4
  114. package/lib/infra/reference/reference.component.ts +5 -0
  115. package/lib/infra/region/region.component.ts +0 -1
  116. package/lib/infra/root-container/root-container.component.scss +0 -1
  117. package/lib/infra/root-container/root-container.component.ts +1 -5
  118. package/lib/infra/stages/stages.component.html +4 -3
  119. package/lib/infra/stages/stages.component.scss +12 -36
  120. package/lib/infra/stages/stages.component.ts +4 -3
  121. package/lib/infra/view/view.component.html +1 -1
  122. package/lib/infra/view/view.component.ts +3 -7
  123. package/lib/template/advanced-search/advanced-search.component.html +12 -0
  124. package/lib/template/advanced-search/advanced-search.component.scss +0 -0
  125. package/lib/template/advanced-search/advanced-search.component.spec.ts +0 -0
  126. package/lib/template/advanced-search/advanced-search.component.ts +112 -0
  127. package/lib/template/advanced-search/advanced-search.service.ts +27 -0
  128. package/lib/template/advanced-search/search-group/persist-utils.ts +56 -0
  129. package/lib/template/advanced-search/search-groups/search-groups.component.html +32 -0
  130. package/lib/template/advanced-search/search-groups/search-groups.component.scss +0 -0
  131. package/lib/template/advanced-search/search-groups/search-groups.component.spec.ts +0 -0
  132. package/lib/template/advanced-search/search-groups/search-groups.component.ts +294 -0
  133. package/lib/template/advanced-search/search-groups/utils.ts +29 -0
  134. package/lib/template/app-shell/app-shell.component.html +4 -1
  135. package/lib/template/app-shell/app-shell.component.scss +0 -3
  136. package/lib/template/app-shell/app-shell.component.ts +46 -8
  137. package/lib/template/banner-page/banner-page.component.ts +0 -1
  138. package/lib/template/case-summary/case-summary.component.scss +0 -2
  139. package/lib/template/case-summary/case-summary.component.ts +6 -22
  140. package/lib/template/case-view/case-view.component.html +4 -4
  141. package/lib/template/case-view/case-view.component.scss +18 -10
  142. package/lib/template/case-view/case-view.component.ts +1 -11
  143. package/lib/template/confirmation/confirmation.component.html +1 -1
  144. package/lib/template/confirmation/confirmation.component.ts +0 -1
  145. package/lib/template/data-reference/data-reference.component.html +11 -8
  146. package/lib/template/data-reference/data-reference.component.ts +346 -113
  147. package/lib/template/data-reference/search-form/search-form.component.html +39 -0
  148. package/lib/template/data-reference/search-form/search-form.component.scss +11 -0
  149. package/lib/template/data-reference/search-form/search-form.component.spec.ts +0 -0
  150. package/lib/template/data-reference/search-form/search-form.component.ts +167 -0
  151. package/lib/template/data-reference/search-form/tabsData.ts +160 -0
  152. package/lib/template/data-reference/utils.ts +92 -0
  153. package/lib/template/default-form/default-form.component.ts +10 -3
  154. package/lib/template/default-page/default-page.component.html +34 -0
  155. package/lib/template/default-page/default-page.component.scss +31 -0
  156. package/lib/template/default-page/default-page.component.spec.ts +24 -0
  157. package/lib/template/default-page/default-page.component.ts +64 -0
  158. package/lib/template/details/details.component.ts +0 -1
  159. package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +0 -1
  160. package/lib/template/details-one-column/details-one-column.component.ts +0 -1
  161. package/lib/template/details-sub-tabs/details-sub-tabs.component.ts +0 -1
  162. package/lib/template/details-three-column/details-three-column.component.ts +0 -1
  163. package/lib/template/details-two-column/details-two-column.component.ts +0 -1
  164. package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +0 -1
  165. package/lib/template/dynamic-tabs/dynamic-tabs.component.ts +0 -1
  166. package/lib/template/field-group-list/field-group-list.component.scss +0 -1
  167. package/lib/template/field-group-list/field-group-list.component.ts +0 -1
  168. package/lib/template/field-group-template/field-group-template.component.ts +14 -28
  169. package/lib/template/field-value-list/field-value-list.component.ts +0 -1
  170. package/lib/template/inline-dashboard/inline-dashboard.component.ts +0 -1
  171. package/lib/template/inline-dashboard-page/inline-dashboard-page.component.ts +1 -2
  172. package/lib/template/list-page/list-page.component.ts +0 -1
  173. package/lib/template/list-view/list-view.component.html +170 -162
  174. package/lib/template/list-view/list-view.component.scss +25 -21
  175. package/lib/template/list-view/list-view.component.ts +207 -119
  176. package/lib/template/list-view/listViewHelpers.ts +1 -4
  177. package/lib/template/list-view/utils.ts +25 -2
  178. package/lib/template/multi-reference-readonly/multi-reference-readonly.component.ts +0 -1
  179. package/lib/template/narrow-wide-form/narrow-wide-form.component.ts +0 -1
  180. package/lib/template/object-page/object-page.component.html +1 -0
  181. package/lib/template/object-page/object-page.component.scss +0 -0
  182. package/lib/template/object-page/object-page.component.spec.ts +22 -0
  183. package/lib/template/object-page/object-page.component.ts +14 -0
  184. package/lib/template/one-column/one-column.component.ts +0 -1
  185. package/lib/template/one-column-page/one-column-page.component.ts +0 -1
  186. package/lib/template/one-column-tab/one-column-tab.component.scss +1 -1
  187. package/lib/template/one-column-tab/one-column-tab.component.ts +0 -1
  188. package/lib/template/page/page.component.ts +0 -1
  189. package/lib/template/promoted-filters/promoted-filters.component.ts +0 -1
  190. package/lib/template/repeating-structures/repeating-structures.component.ts +0 -2
  191. package/lib/template/self-service-case-view/self-service-case-view.component.html +78 -0
  192. package/lib/template/self-service-case-view/self-service-case-view.component.scss +132 -0
  193. package/lib/template/self-service-case-view/self-service-case-view.component.spec.ts +24 -0
  194. package/lib/template/self-service-case-view/self-service-case-view.component.ts +207 -0
  195. package/lib/template/simple-table/simple-table.component.ts +0 -2
  196. package/lib/template/simple-table-manual/helpers.ts +117 -3
  197. package/lib/template/simple-table-manual/simple-table-manual.component.html +4 -4
  198. package/lib/template/simple-table-manual/simple-table-manual.component.scss +4 -14
  199. package/lib/template/simple-table-manual/simple-table-manual.component.ts +45 -25
  200. package/lib/template/simple-table-select/simple-table-select.component.ts +0 -1
  201. package/lib/template/single-reference-readonly/single-reference-readonly.component.html +4 -1
  202. package/lib/template/single-reference-readonly/single-reference-readonly.component.scss +21 -0
  203. package/lib/template/single-reference-readonly/single-reference-readonly.component.ts +104 -4
  204. package/lib/template/sub-tabs/sub-tabs.component.ts +0 -1
  205. package/lib/template/three-column/three-column.component.ts +0 -1
  206. package/lib/template/three-column-page/three-column-page.component.ts +0 -1
  207. package/lib/template/two-column/two-column.component.ts +0 -1
  208. package/lib/template/two-column-page/two-column-page.component.ts +0 -1
  209. package/lib/template/two-column-tab/two-column-tab.component.ts +0 -1
  210. package/lib/template/utils.ts +42 -0
  211. package/lib/template/wide-narrow-form/wide-narrow-form.component.ts +0 -1
  212. package/lib/template/wide-narrow-page/wide-narrow-page.component.ts +0 -1
  213. package/lib/template/wss-nav-bar/wss-nav-bar.component.html +6 -5
  214. package/lib/template/wss-nav-bar/wss-nav-bar.component.scss +8 -17
  215. package/lib/template/wss-nav-bar/wss-nav-bar.component.ts +1 -9
  216. package/lib/widget/app-announcement/app-announcement.component.html +1 -2
  217. package/lib/widget/app-announcement/app-announcement.component.scss +2 -2
  218. package/lib/widget/app-announcement/app-announcement.component.ts +0 -1
  219. package/lib/widget/attachment/Attachment.types.ts +92 -0
  220. package/lib/widget/attachment/AttachmentUtils.ts +287 -0
  221. package/lib/widget/attachment/attachment.component.html +3 -3
  222. package/lib/widget/attachment/attachment.component.scss +9 -12
  223. package/lib/widget/attachment/attachment.component.ts +267 -254
  224. package/lib/widget/case-history/case-history.component.ts +0 -1
  225. package/lib/widget/feed-container/feed-container.component.scss +3 -9
  226. package/lib/widget/feed-container/feed-container.component.ts +2 -3
  227. package/lib/widget/file-utility/file-utility.component.html +3 -3
  228. package/lib/widget/file-utility/file-utility.component.scss +6 -17
  229. package/lib/widget/file-utility/file-utility.component.ts +24 -9
  230. package/lib/widget/list-utility/list-utility.component.scss +4 -5
  231. package/lib/widget/list-utility/list-utility.component.ts +0 -1
  232. package/lib/widget/quick-create/quick-create.component.ts +41 -23
  233. package/lib/widget/todo/todo.component.html +8 -5
  234. package/lib/widget/todo/todo.component.scss +11 -10
  235. package/lib/widget/todo/todo.component.ts +7 -4
  236. package/lib/widget/utility/utility.component.ts +0 -1
  237. package/package.json +1 -1
@@ -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 {
@@ -1,14 +1,13 @@
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 { AngularPConnectService, AngularPConnectData } 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';
10
- import { PConnFieldProps } from '@pega/angular-sdk-components';
11
9
  import { handleEvent } from '@pega/angular-sdk-components';
10
+ import { PConnFieldProps } from '@pega/angular-sdk-components';
12
11
 
13
12
  interface TextInputProps extends PConnFieldProps {
14
13
  // If any, enter additional props that only exist on TextInput here
@@ -19,146 +18,24 @@ interface TextInputProps extends PConnFieldProps {
19
18
  selector: 'app-text-input',
20
19
  templateUrl: './text-input.component.html',
21
20
  styleUrls: ['./text-input.component.scss'],
22
- standalone: true,
23
21
  imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)]
24
22
  })
25
- export class TextInputComponent implements OnInit, OnDestroy {
26
- @Input() pConn$: typeof PConnect;
27
- @Input() formGroup$: FormGroup;
28
-
29
- // For interaction with AngularPConnect
30
- angularPConnectData: AngularPConnectData = {};
23
+ export class TextInputComponent extends FieldBase {
31
24
  configProps$: TextInputProps;
32
25
 
33
- label$ = '';
34
- value$ = '';
35
- bRequired$ = false;
36
- bReadonly$ = false;
37
- bDisabled$ = false;
38
- bVisible$ = true;
39
- displayMode$?: string = '';
40
- controlName$: string;
41
- testId = '';
42
- bHasForm$ = true;
43
- componentReference = '';
44
- helperText: string;
45
- placeholder: string;
46
-
47
- fieldControl = new FormControl('', null);
48
- actionsApi: Object;
49
- propName: string;
50
-
51
- constructor(
52
- private angularPConnect: AngularPConnectService,
53
- private cdRef: ChangeDetectorRef,
54
- private utils: Utils
55
- ) {}
56
-
57
- ngOnInit(): void {
58
- // First thing in initialization is registering and subscribing to the AngularPConnect service
59
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
60
- this.controlName$ = this.angularPConnect.getComponentID(this);
61
-
62
- // Then, continue on with other initialization
63
-
64
- // call updateSelf when initializing
65
- // this.updateSelf();
66
- this.checkAndUpdate();
67
-
68
- if (this.formGroup$) {
69
- // add control to formGroup
70
- this.formGroup$.addControl(this.controlName$, this.fieldControl);
71
- this.fieldControl.setValue(this.value$);
72
- this.bHasForm$ = true;
73
- } else {
74
- this.bReadonly$ = true;
75
- this.bHasForm$ = false;
76
- }
77
- }
78
-
79
- ngOnDestroy(): void {
80
- if (this.formGroup$) {
81
- this.formGroup$.removeControl(this.controlName$);
82
- }
83
-
84
- if (this.angularPConnectData.unsubscribeFn) {
85
- this.angularPConnectData.unsubscribeFn();
86
- }
87
- }
88
-
89
- // Callback passed when subscribing to store change
90
- onStateChange() {
91
- this.checkAndUpdate();
92
- }
93
-
94
- checkAndUpdate() {
95
- // Should always check the bridge to see if the component should
96
- // update itself (re-render)
97
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
98
-
99
- // ONLY call updateSelf when the component should update
100
- if (bUpdateSelf) {
101
- this.updateSelf();
102
- }
103
- }
104
-
105
- // updateSelf
106
- updateSelf(): void {
107
- // moved this from ngOnInit() and call this from there instead...
26
+ /**
27
+ * Updates the component when there are changes in the state.
28
+ */
29
+ override updateSelf(): void {
30
+ // Resolve configuration properties
108
31
  this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as TextInputProps;
109
32
 
110
- if (this.configProps$.value != undefined) {
111
- this.value$ = this.configProps$.value;
112
- }
113
-
114
- this.testId = this.configProps$.testId;
115
-
116
- this.label$ = this.configProps$.label;
117
- this.displayMode$ = this.configProps$.displayMode;
118
-
119
- this.componentReference = this.pConn$.getStateProps().value;
120
-
121
- this.actionsApi = this.pConn$.getActionsApi();
122
- this.propName = this.pConn$.getStateProps().value;
123
-
124
- if (this.configProps$.visibility != null) {
125
- this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
126
- }
127
- this.helperText = this.configProps$.helperText;
128
- this.placeholder = this.configProps$.placeholder || '';
129
-
130
- // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
131
- setTimeout(() => {
132
- if (this.configProps$.required != null) {
133
- this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
134
- }
135
- this.cdRef.detectChanges();
136
- });
137
-
138
- // disabled
139
- if (this.configProps$.disabled != undefined) {
140
- this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
141
- }
142
-
143
- if (this.bDisabled$) {
144
- this.fieldControl.disable();
145
- } else {
146
- this.fieldControl.enable();
147
- }
33
+ // Update component common properties
34
+ this.updateComponentCommonProperties(this.configProps$);
148
35
 
149
- if (this.configProps$.readOnly != null) {
150
- this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
151
- }
152
-
153
- // trigger display of error message with field control
154
- if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
155
- const timer = interval(100).subscribe(() => {
156
- this.fieldControl.setErrors({ message: true });
157
- this.fieldControl.markAsTouched();
158
-
159
- timer.unsubscribe();
160
- });
161
- }
36
+ // Get and set component specific properties
37
+ const { value } = this.configProps$;
38
+ this.value$ = value;
162
39
  }
163
40
 
164
41
  fieldOnChange(event: any) {
@@ -181,21 +58,4 @@ export class TextInputComponent implements OnInit, OnDestroy {
181
58
  handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
182
59
  }
183
60
  }
184
-
185
- getErrorMessage() {
186
- let errMessage = '';
187
-
188
- // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
189
- if (this.fieldControl.hasError('message')) {
190
- errMessage = this.angularPConnectData.validateMessage ?? '';
191
- return errMessage;
192
- }
193
- if (this.fieldControl.hasError('required')) {
194
- errMessage = 'You must enter a value';
195
- } else if (this.fieldControl.errors) {
196
- errMessage = this.fieldControl.errors.toString();
197
- }
198
-
199
- return errMessage;
200
- }
201
61
  }
@@ -1,15 +1,14 @@
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';
10
- import { PConnFieldProps } from '@pega/angular-sdk-components';
11
9
  import { handleEvent } from '@pega/angular-sdk-components';
12
10
  import { format } from '@pega/angular-sdk-components';
11
+ import { PConnFieldProps } from '@pega/angular-sdk-components';
13
12
 
14
13
  interface TimeProps extends PConnFieldProps {
15
14
  // If any, enter additional props that only exist on Time here
@@ -19,150 +18,31 @@ interface TimeProps extends PConnFieldProps {
19
18
  selector: 'app-time',
20
19
  templateUrl: './time.component.html',
21
20
  styleUrls: ['./time.component.scss'],
22
- standalone: true,
23
21
  imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)]
24
22
  })
25
- export class TimeComponent implements OnInit, OnDestroy {
26
- @Input() pConn$: typeof PConnect;
27
- @Input() formGroup$: FormGroup;
28
-
29
- // Used with AngularPConnect
30
- angularPConnectData: AngularPConnectData = {};
23
+ export class TimeComponent extends FieldBase {
31
24
  configProps$: TimeProps;
32
-
33
- label$ = '';
34
- value$: string;
35
- bRequired$ = false;
36
- bReadonly$ = false;
37
- bDisabled$ = false;
38
- bVisible$ = true;
39
- displayMode$?: string = '';
40
- controlName$: string;
41
- testId = '';
42
- bHasForm$ = true;
43
- componentReference = '';
44
- helperText: string;
45
- placeholder: string;
46
-
47
- fieldControl = new FormControl('', null);
48
- actionsApi: Object;
49
- propName: string;
50
25
  formattedValue$: any;
51
26
 
52
- constructor(
53
- private angularPConnect: AngularPConnectService,
54
- private cdRef: ChangeDetectorRef,
55
- private utils: Utils
56
- ) {}
57
-
58
- ngOnInit(): void {
59
- // First thing in initialization is registering and subscribing to the AngularPConnect service
60
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
61
- this.controlName$ = this.angularPConnect.getComponentID(this);
62
-
63
- // Then, continue on with other initialization
64
- // call updateSelf when initializing
65
- // this.updateSelf();
66
- this.checkAndUpdate();
67
-
68
- if (this.formGroup$) {
69
- // add control to formGroup
70
- this.formGroup$.addControl(this.controlName$, this.fieldControl);
71
- this.fieldControl.setValue(this.value$);
72
- this.bHasForm$ = true;
73
- } else {
74
- this.bReadonly$ = true;
75
- this.bHasForm$ = false;
76
- }
77
- }
78
-
79
- ngOnDestroy(): void {
80
- if (this.formGroup$) {
81
- this.formGroup$.removeControl(this.controlName$);
82
- }
83
- if (this.angularPConnectData.unsubscribeFn) {
84
- this.angularPConnectData.unsubscribeFn();
85
- }
86
- }
87
-
88
- // Callback passed when subscribing to store change
89
- onStateChange() {
90
- this.checkAndUpdate();
91
- }
92
-
93
- checkAndUpdate() {
94
- // Should always check the bridge to see if the component should
95
- // update itself (re-render)
96
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
97
-
98
- // ONLY call updateSelf when the component should update
99
- if (bUpdateSelf) {
100
- this.updateSelf();
101
- }
102
- }
103
-
104
- // updateSelf
105
- updateSelf(): void {
106
- // moved this from ngOnInit() and call this from there instead...
27
+ /**
28
+ * Updates the component when there are changes in the state.
29
+ */
30
+ override updateSelf(): void {
31
+ // Resolve config properties
107
32
  this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as TimeProps;
108
33
 
109
- this.testId = this.configProps$.testId;
110
- this.label$ = this.configProps$.label;
111
- this.displayMode$ = this.configProps$.displayMode;
34
+ // Update component common properties
35
+ this.updateComponentCommonProperties(this.configProps$);
112
36
 
113
- if (this.configProps$.value != undefined) {
114
- this.value$ = this.configProps$.value;
115
- }
116
- this.helperText = this.configProps$.helperText;
117
- this.placeholder = this.configProps$.placeholder || '';
118
-
119
- this.actionsApi = this.pConn$.getActionsApi();
120
- this.propName = this.pConn$.getStateProps().value;
121
-
122
- // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
123
- setTimeout(() => {
124
- if (this.configProps$.required != null) {
125
- this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
126
- }
127
- this.cdRef.detectChanges();
128
- });
37
+ // Extract the value property
38
+ const { value } = this.configProps$;
39
+ this.value$ = value;
129
40
 
130
- if (this.displayMode$ === 'DISPLAY_ONLY' || this.displayMode$ === 'STACKED_LARGE_VAL') {
41
+ if (['DISPLAY_ONLY', 'STACKED_LARGE_VAL'].includes(this.displayMode$)) {
131
42
  this.formattedValue$ = format(this.value$, 'timeonly', {
132
43
  format: 'hh:mm A'
133
44
  });
134
45
  }
135
-
136
- if (this.configProps$.visibility != null) {
137
- this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
138
- }
139
-
140
- // disabled
141
- if (this.configProps$.disabled != undefined) {
142
- this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
143
- }
144
-
145
- if (this.bDisabled$) {
146
- this.fieldControl.disable();
147
- } else {
148
- this.fieldControl.enable();
149
- }
150
-
151
- if (this.configProps$.readOnly != null) {
152
- this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
153
- }
154
-
155
- this.componentReference = this.pConn$.getStateProps().value;
156
-
157
- // trigger display of error message with field control
158
- if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
159
- const timer = interval(100).subscribe(() => {
160
- this.fieldControl.setErrors({ message: true });
161
- this.fieldControl.markAsTouched();
162
-
163
- timer.unsubscribe();
164
- });
165
- }
166
46
  }
167
47
 
168
48
  fieldOnChange(event: any) {
@@ -190,19 +70,4 @@ export class TimeComponent implements OnInit, OnDestroy {
190
70
  handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
191
71
  }
192
72
  }
193
-
194
- getErrorMessage() {
195
- let errMessage = '';
196
- // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
197
- if (this.fieldControl.hasError('message')) {
198
- errMessage = this.angularPConnectData.validateMessage ?? '';
199
- return errMessage;
200
- }
201
- if (this.fieldControl.hasError('required')) {
202
- errMessage = 'You must enter a value';
203
- } else if (this.fieldControl.errors) {
204
- errMessage = this.fieldControl.errors.toString();
205
- }
206
- return errMessage;
207
- }
208
73
  }
@@ -1,14 +1,13 @@
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';
10
- import { PConnFieldProps } from '@pega/angular-sdk-components';
11
9
  import { handleEvent } from '@pega/angular-sdk-components';
10
+ import { PConnFieldProps } from '@pega/angular-sdk-components';
12
11
 
13
12
  interface URLProps extends PConnFieldProps {
14
13
  // If any, enter additional props that only exist on URL here
@@ -18,145 +17,24 @@ interface URLProps extends PConnFieldProps {
18
17
  selector: 'app-url',
19
18
  templateUrl: './url.component.html',
20
19
  styleUrls: ['./url.component.scss'],
21
- standalone: true,
22
20
  imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)]
23
21
  })
24
- export class UrlComponent implements OnInit, OnDestroy {
25
- @Input() pConn$: typeof PConnect;
26
- @Input() formGroup$: FormGroup;
27
-
28
- // Used with AngularPConnect
29
- angularPConnectData: AngularPConnectData = {};
22
+ export class UrlComponent extends FieldBase {
30
23
  configProps$: URLProps;
31
24
 
32
- label$ = '';
33
- value$ = '';
34
- bRequired$ = false;
35
- bReadonly$ = false;
36
- bDisabled$ = false;
37
- bVisible$ = true;
38
- displayMode$?: string = '';
39
- controlName$: string;
40
- testId = '';
41
- bHasForm$ = true;
42
- componentReference = '';
43
- helperText: string;
44
- placeholder: string;
45
-
46
- fieldControl = new FormControl('', null);
47
- actionsApi: Object;
48
- propName: string;
49
-
50
- constructor(
51
- private angularPConnect: AngularPConnectService,
52
- private cdRef: ChangeDetectorRef,
53
- private utils: Utils
54
- ) {}
55
-
56
- ngOnInit(): void {
57
- // First thing in initialization is registering and subscribing to the AngularPConnect service
58
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
59
- this.controlName$ = this.angularPConnect.getComponentID(this);
60
-
61
- // Then, continue on with other initialization
62
-
63
- // call updateSelf when initializing
64
- // this.updateSelf();
65
- this.checkAndUpdate();
66
-
67
- if (this.formGroup$) {
68
- // add control to formGroup
69
- this.formGroup$.addControl(this.controlName$, this.fieldControl);
70
- this.fieldControl.setValue(this.value$);
71
- this.bHasForm$ = true;
72
- } else {
73
- this.bReadonly$ = true;
74
- this.bHasForm$ = false;
75
- }
76
- }
77
-
78
- ngOnDestroy(): void {
79
- if (this.formGroup$) {
80
- this.formGroup$.removeControl(this.controlName$);
81
- }
82
-
83
- if (this.angularPConnectData.unsubscribeFn) {
84
- this.angularPConnectData.unsubscribeFn();
85
- }
86
- }
87
-
88
- // Callback passed when subscribing to store change
89
- onStateChange() {
90
- this.checkAndUpdate();
91
- }
92
-
93
- checkAndUpdate() {
94
- // Should always check the bridge to see if the component should
95
- // update itself (re-render)
96
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
97
-
98
- // ONLY call updateSelf when the component should update
99
- if (bUpdateSelf) {
100
- this.updateSelf();
101
- }
102
- }
103
-
104
- // updateSelf
105
- updateSelf(): void {
106
- // moved this from ngOnInit() and call this from there instead...
25
+ /**
26
+ * Updates the component when there are changes in the state.
27
+ */
28
+ override updateSelf(): void {
29
+ // Resolve config properties
107
30
  this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as URLProps;
108
31
 
109
- if (this.configProps$.value != undefined) {
110
- this.value$ = this.configProps$.value;
111
- }
112
-
113
- this.testId = this.configProps$.testId;
114
- this.label$ = this.configProps$.label;
115
- this.displayMode$ = this.configProps$.displayMode;
116
- this.helperText = this.configProps$.helperText;
117
- this.placeholder = this.configProps$.placeholder || '';
118
-
119
- this.actionsApi = this.pConn$.getActionsApi();
120
- this.propName = this.pConn$.getStateProps().value;
121
-
122
- // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
123
- setTimeout(() => {
124
- if (this.configProps$.required != null) {
125
- this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required);
126
- }
127
- this.cdRef.detectChanges();
128
- });
129
-
130
- if (this.configProps$.visibility != null) {
131
- this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
132
- }
133
-
134
- // disabled
135
- if (this.configProps$.disabled != undefined) {
136
- this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
137
- }
32
+ // Update component common properties
33
+ this.updateComponentCommonProperties(this.configProps$);
138
34
 
139
- if (this.bDisabled$) {
140
- this.fieldControl.disable();
141
- } else {
142
- this.fieldControl.enable();
143
- }
144
-
145
- if (this.configProps$.readOnly != null) {
146
- this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly);
147
- }
148
-
149
- this.componentReference = this.pConn$.getStateProps().value;
150
-
151
- // trigger display of error message with field control
152
- if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') {
153
- const timer = interval(100).subscribe(() => {
154
- this.fieldControl.setErrors({ message: true });
155
- this.fieldControl.markAsTouched();
156
-
157
- timer.unsubscribe();
158
- });
159
- }
35
+ // Extract and normalize the value property
36
+ const { value } = this.configProps$;
37
+ this.value$ = value;
160
38
  }
161
39
 
162
40
  fieldOnChange(event: any) {
@@ -179,21 +57,4 @@ export class UrlComponent implements OnInit, OnDestroy {
179
57
  handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
180
58
  }
181
59
  }
182
-
183
- getErrorMessage() {
184
- let errMessage = '';
185
-
186
- // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
187
- if (this.fieldControl.hasError('message')) {
188
- errMessage = this.angularPConnectData.validateMessage ?? '';
189
- return errMessage;
190
- }
191
- if (this.fieldControl.hasError('required')) {
192
- errMessage = 'You must enter a value';
193
- } else if (this.fieldControl.errors) {
194
- errMessage = this.fieldControl.errors.toString();
195
- }
196
-
197
- return errMessage;
198
- }
199
60
  }
@@ -1,6 +1,5 @@
1
1
  .psdk-user-reference {
2
2
  font-size: 0.8rem;
3
- color: var(--app-neutral-color);
4
3
  }
5
4
  .psdk-single {
6
5
  flex: 1;
@@ -30,7 +30,6 @@ interface UserReferenceProps extends Omit<PConnFieldProps, 'value'> {
30
30
  selector: 'app-user-reference',
31
31
  templateUrl: './user-reference.component.html',
32
32
  styleUrls: ['./user-reference.component.scss'],
33
- standalone: true,
34
33
  imports: [
35
34
  CommonModule,
36
35
  ReactiveFormsModule,
@@ -65,7 +64,7 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
65
64
  filterValue = '';
66
65
 
67
66
  fieldControl = new FormControl('', null);
68
- actionsApi: Object;
67
+ actionsApi: object;
69
68
  propName: string;
70
69
  onRecordChange: any;
71
70
 
@@ -188,7 +187,7 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
188
187
  } else {
189
188
  // if same user ref field is referred in view as editable & readonly formatted text
190
189
  // referenced users won't be available, so get user details from dx api
191
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
190
+
192
191
  this.userName$ = await getUserName(this.pConn$, this.userID$);
193
192
  }
194
193
  } else if (displayAs === DROPDOWN_LIST || displayAs === SEARCH_BOX) {
@@ -277,7 +276,6 @@ function getUserName(pConn, userId = ''): Promise<string> {
277
276
  const { parameters = {}, referenceList } = pConn.getConfigProps();
278
277
  const contextName = pConn.getContextName();
279
278
 
280
- // eslint-disable-next-line @typescript-eslint/no-shadow
281
279
  const OPERATORS_DP = referenceList || PCore.getEnvironmentInfo().getDefaultOperatorDP() || '';
282
280
 
283
281
  const columns = [
@@ -1,7 +1,7 @@
1
1
  <div style="text-align: left" class="psdk-flow-container-top">
2
2
  <div *ngIf="!bShowConfirm">
3
3
  <div *ngIf="!todo_showTodo$">
4
- <h2>{{ containerName$ }}</h2>
4
+ <h2 *ngIf="!isMultiStep">{{ containerName$ }}</h2>
5
5
  <div *ngIf="banners?.length">
6
6
  <component-mapper name="AlertBanner" [props]="{ banners }"></component-mapper>
7
7
  </div>
@@ -32,7 +32,7 @@
32
32
  </div>
33
33
  <div *ngIf="bHasCaseMessages$">
34
34
  <mat-card class="psdk-message-card">
35
- <div style="display: flex; flex-direction: row">
35
+ <div style="display: flex; flex-direction: row; align-items: center">
36
36
  <div><img class="psdk-icon" src="{{ checkSvg$ }}" /></div>
37
37
  <div>{{ caseMessages$ }}</div>
38
38
  </div>