@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,53 +1,47 @@
1
- <div class="psdk-user-reference">
1
+ <div>
2
2
  <div *ngIf="displayMode$; else noDisplayMode">
3
3
  <component-mapper name="FieldValueList" [props]="{ label$, value$, displayMode$ }"></component-mapper>
4
4
  </div>
5
5
  <ng-template #noDisplayMode>
6
- <div *ngIf="type === 'operator'">
7
- <component-mapper name="Operator" [props]="{ pConn$ }"></component-mapper>
8
- </div>
9
- <div [formGroup]="formGroup$" *ngIf="type === 'dropdown'">
10
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
11
- <mat-select
12
- [value]="value$"
13
- [required]="bRequired$"
14
- [formControl]="fieldControl"
15
- [attr.data-test-id]="testId"
16
- (selectionChange)="fieldOnChange($event)"
17
- >
18
- <mat-option *ngFor="let opt of options$" [value]="opt.key">
19
- {{ opt.value }}
20
- </mat-option>
21
- </mat-select>
22
- <mat-label>{{ label$ }}</mat-label>
23
- <mat-error *ngIf="fieldControl.invalid">
24
- {{ getErrorMessage() }}
25
- </mat-error>
26
- </mat-form-field>
27
- </div>
28
- <div [formGroup]="formGroup$" *ngIf="type === 'searchbox'">
29
- <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
30
- <mat-label>{{ label$ }}</mat-label>
31
- <input
32
- matInput
33
- [placeholder]="placeholder"
34
- [formControl]="fieldControl"
35
- [value]="value$"
36
- [required]="bRequired$"
37
- [matAutocomplete]="auto"
38
- [attr.data-test-id]="testId"
39
- (change)="fieldOnChange($event)"
40
- (blur)="fieldOnBlur($event)"
41
- />
42
- <mat-autocomplete #auto="matAutocomplete">
43
- <mat-option *ngFor="let opt of filteredOptions | async" [value]="opt.value">
44
- <span>{{ opt.value }}</span>
45
- </mat-option>
46
- </mat-autocomplete>
47
- <mat-error *ngIf="fieldControl.invalid">
48
- {{ getErrorMessage() }}
49
- </mat-error>
50
- </mat-form-field>
6
+ <div class="psdk-user-reference">
7
+ <div *ngIf="this.userID$ && type === 'operator'">
8
+ <component-mapper name="Operator" [props]="{ pConn$, name$: userName$ }"></component-mapper>
9
+ </div>
10
+ <div [formGroup]="formGroup$" *ngIf="type === 'dropdown'">
11
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
12
+ <mat-select [required]="bRequired$" [formControl]="fieldControl" [attr.data-test-id]="testId" (selectionChange)="fieldOnChange($event)">
13
+ <mat-option *ngFor="let opt of options$" [value]="opt.key">
14
+ {{ opt.value }}
15
+ </mat-option>
16
+ </mat-select>
17
+ <mat-label>{{ label$ }}</mat-label>
18
+ <mat-error *ngIf="fieldControl.invalid">
19
+ {{ getErrorMessage() }}
20
+ </mat-error>
21
+ </mat-form-field>
22
+ </div>
23
+ <div [formGroup]="formGroup$" *ngIf="type === 'searchbox'">
24
+ <mat-form-field class="psdk-full-width" subscriptSizing="dynamic" [hintLabel]="helperText">
25
+ <mat-label>{{ label$ }}</mat-label>
26
+ <input
27
+ matInput
28
+ [placeholder]="placeholder"
29
+ [formControl]="fieldControl"
30
+ [required]="bRequired$"
31
+ [matAutocomplete]="auto"
32
+ [attr.data-test-id]="testId"
33
+ (blur)="fieldOnBlur($event)"
34
+ />
35
+ <mat-autocomplete #auto="matAutocomplete" autoActiveFirstOption (optionSelected)="optionChanged($event)">
36
+ <mat-option *ngFor="let opt of filteredOptions | async" [value]="opt.value">
37
+ <span>{{ opt.value }}</span>
38
+ </mat-option>
39
+ </mat-autocomplete>
40
+ <mat-error *ngIf="fieldControl.invalid">
41
+ {{ getErrorMessage() }}
42
+ </mat-error>
43
+ </mat-form-field>
44
+ </div>
51
45
  </div>
52
46
  </ng-template>
53
47
  </div>
@@ -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;
@@ -11,6 +11,7 @@ import { Utils } from '@pega/angular-sdk-components';
11
11
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
12
12
  import { PConnFieldProps } from '@pega/angular-sdk-components';
13
13
  import { map, Observable, startWith } from 'rxjs';
14
+ import { handleEvent } from '@pega/angular-sdk-components';
14
15
 
15
16
  const OPERATORS_DP = 'D_pyGetOperatorsForCurrentApplication';
16
17
  const DROPDOWN_LIST = 'Drop-down list';
@@ -22,13 +23,13 @@ interface UserReferenceProps extends Omit<PConnFieldProps, 'value'> {
22
23
  value?: any;
23
24
  showAsFormattedText?: boolean;
24
25
  additionalProps?: object;
26
+ onRecordChange?: any;
25
27
  }
26
28
 
27
29
  @Component({
28
30
  selector: 'app-user-reference',
29
31
  templateUrl: './user-reference.component.html',
30
32
  styleUrls: ['./user-reference.component.scss'],
31
- standalone: true,
32
33
  imports: [
33
34
  CommonModule,
34
35
  ReactiveFormsModule,
@@ -63,6 +64,9 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
63
64
  filterValue = '';
64
65
 
65
66
  fieldControl = new FormControl('', null);
67
+ actionsApi: object;
68
+ propName: string;
69
+ onRecordChange: any;
66
70
 
67
71
  constructor(
68
72
  private angularPConnect: AngularPConnectService,
@@ -80,11 +84,11 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
80
84
  if (this.formGroup$) {
81
85
  // add control to formGroup
82
86
  this.formGroup$.addControl(this.controlName$, this.fieldControl);
83
- this.fieldControl.setValue(this.value$);
87
+ this.fieldControl.setValue(this.getValue(this.value$));
84
88
  }
85
89
 
86
90
  this.filteredOptions = this.fieldControl.valueChanges.pipe(
87
- startWith(''),
91
+ startWith(this.getValue(this.value$) || ''),
88
92
  map(value => this._filter(value || ''))
89
93
  );
90
94
  }
@@ -123,6 +127,21 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
123
127
  return this.options$?.filter(option => option.value?.toLowerCase().includes(filterVal));
124
128
  }
125
129
 
130
+ isUserNameAvailable = user => {
131
+ return typeof user === 'object' && user !== null && user.userName;
132
+ };
133
+
134
+ getUserName = user => {
135
+ return user.userName;
136
+ };
137
+
138
+ getValue = user => {
139
+ if (this.displayAs$ === DROPDOWN_LIST) {
140
+ return this.utils.getUserId(user) || this.getUserName(user);
141
+ }
142
+ return this.isUserNameAvailable(user) ? this.getUserName(user) : this.utils.getUserId(user);
143
+ };
144
+
126
145
  async checkAndUpdate() {
127
146
  // Should always check the bridge to see if the component should
128
147
  // update itself (re-render)
@@ -137,6 +156,7 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
137
156
  async updateSelf() {
138
157
  const props = this.pConn$.getConfigProps() as UserReferenceProps;
139
158
  this.testId = props.testId;
159
+ this.onRecordChange = props?.onRecordChange;
140
160
 
141
161
  const { label, displayAs, value, showAsFormattedText, helperText, placeholder, displayMode } = props;
142
162
 
@@ -147,34 +167,35 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
147
167
  this.placeholder = placeholder || '';
148
168
  this.displayMode$ = displayMode;
149
169
 
170
+ if (value && typeof value === 'object') {
171
+ this.value$ = value.userName ? value.userName : '';
172
+ } else {
173
+ this.value$ = value || '';
174
+ }
175
+
150
176
  const { readOnly, required } = props;
151
177
  [this.bReadonly$, this.bRequired$] = [readOnly, required].map(prop => prop === true || (typeof prop === 'string' && prop === 'true'));
152
178
 
153
- const isUserNameAvailable = user => {
154
- return typeof user === 'object' && user !== null && user.userName;
155
- };
179
+ this.actionsApi = this.pConn$.getActionsApi();
180
+ this.propName = this.pConn$.getStateProps().value;
156
181
 
157
182
  this.userID$ = this.utils.getUserId(value);
158
183
 
159
184
  if (this.userID$ && this.bReadonly$ && this.showAsFormattedText$) {
160
- if (isUserNameAvailable(value)) {
185
+ if (this.isUserNameAvailable(value)) {
161
186
  this.userName$ = value.userName;
162
187
  } else {
163
188
  // if same user ref field is referred in view as editable & readonly formatted text
164
189
  // referenced users won't be available, so get user details from dx api
165
- const { getOperatorDetails } = PCore.getUserApi();
166
- getOperatorDetails(this.userID$).then((resp: any) => {
167
- if (resp.data && resp.data.pyOperatorInfo && resp.data.pyOperatorInfo.pyUserName) {
168
- this.userName$ = resp.data.pyOperatorInfo.pyUserName;
169
- }
170
- });
190
+
191
+ this.userName$ = await getUserName(this.pConn$, this.userID$);
171
192
  }
172
193
  } else if (displayAs === DROPDOWN_LIST || displayAs === SEARCH_BOX) {
173
194
  const queryPayload = {
174
195
  dataViewName: OPERATORS_DP
175
196
  };
176
197
  try {
177
- const resp: any = await PCore.getRestClient().invokeRestApi('getListData', { queryPayload } as any, ''); // 3rd arg empty string until typedef marked correctly
198
+ const resp = await PCore.getRestClient().invokeRestApi('getListData', { queryPayload }, ''); // 3rd arg empty string until typedef marked correctly
178
199
  if (resp?.data) {
179
200
  const ddDataSource = resp.data.data.map(listItem => ({
180
201
  key: listItem.pyUserIdentifier,
@@ -195,7 +216,13 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
195
216
  if (event?.target) {
196
217
  this.filterValue = (event.target as HTMLInputElement).value;
197
218
  }
198
- this.angularPConnectData.actions?.onChange(this, event);
219
+ const value = event?.value;
220
+ handleEvent(this.actionsApi, 'change', this.propName, value);
221
+ }
222
+
223
+ optionChanged(event: any) {
224
+ const value = event?.option?.value;
225
+ handleEvent(this.actionsApi, 'change', this.propName, value);
199
226
  }
200
227
 
201
228
  fieldOnBlur(event: any) {
@@ -204,12 +231,12 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
204
231
  const index = this.options$?.findIndex(element => element.value === event.target.value);
205
232
  key = index > -1 ? (key = this.options$[index].key) : event.target.value;
206
233
  }
207
-
208
- const eve = {
209
- value: key
210
- };
211
- // PConnect wants to use eventHandler for onBlur
212
- this.angularPConnectData.actions?.onChange(this, eve);
234
+ const value = key;
235
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
236
+ if (this.onRecordChange) {
237
+ event.target.value = value;
238
+ this.onRecordChange(event);
239
+ }
213
240
  }
214
241
 
215
242
  getErrorMessage() {
@@ -229,3 +256,65 @@ export class UserReferenceComponent implements OnInit, OnDestroy {
229
256
  return errMessage;
230
257
  }
231
258
  }
259
+
260
+ const buildColumnForDisplayValue = dataObj => {
261
+ if (dataObj.columns) {
262
+ dataObj.columns = dataObj.columns.map(column => {
263
+ const tempColObj = { ...column };
264
+ if (tempColObj.key === 'true') {
265
+ tempColObj.useForSearch = true;
266
+ } else {
267
+ tempColObj.useForSearch = false;
268
+ }
269
+ return tempColObj;
270
+ });
271
+ }
272
+ };
273
+
274
+ function getUserName(pConn, userId = ''): Promise<string> {
275
+ return new Promise(resolve => {
276
+ const { parameters = {}, referenceList } = pConn.getConfigProps();
277
+ const contextName = pConn.getContextName();
278
+
279
+ const OPERATORS_DP = referenceList || PCore.getEnvironmentInfo().getDefaultOperatorDP() || '';
280
+
281
+ const columns = [
282
+ {
283
+ value: 'pyUserName',
284
+ display: 'true',
285
+ useForSearch: true,
286
+ primary: 'true'
287
+ },
288
+ {
289
+ value: 'pyUserIdentifier',
290
+ setProperty: 'Associated property',
291
+ key: 'true',
292
+ display: 'true',
293
+ secondary: 'true',
294
+ useForSearch: true
295
+ }
296
+ ];
297
+
298
+ const dataConfig: any = {
299
+ dataSource: OPERATORS_DP,
300
+ parameters,
301
+ matchPosition: 'equals',
302
+ listType: 'datapage',
303
+ columns,
304
+ cacheLifeSpan: 'form',
305
+ deferDatasource: false,
306
+ maxResultsDisplay: '1',
307
+ ignoreCase: true
308
+ };
309
+
310
+ PCore.getDataApi()
311
+ .init(dataConfig, contextName)
312
+ .then(dataApiObj => {
313
+ buildColumnForDisplayValue(dataApiObj);
314
+ dataApiObj.registerForBufferedCall({ waitTime: 50 });
315
+ dataApiObj.fetchData(userId).then((response: any) => {
316
+ resolve(response.data?.[0]?.pyUserName || userId);
317
+ });
318
+ });
319
+ });
320
+ }
@@ -38,7 +38,7 @@
38
38
  </div>
39
39
  </mat-card>
40
40
  </div>
41
- <div *ngIf="bShowBanner && bShowConfirm">
41
+ <div *ngIf="bShowBanner && bShowConfirm && confirm_pconn">
42
42
  <component-mapper name="View" [props]="{ formGroup$, pConn$: confirm_pconn }"></component-mapper>
43
43
  </div>
44
44
  </div>
@@ -6,7 +6,7 @@ import { publicConstants } from '@pega/pcore-pconnect-typedefs/constants';
6
6
  import { ProgressSpinnerService } from '@pega/angular-sdk-components';
7
7
  import { ReferenceComponent } from '@pega/angular-sdk-components';
8
8
  import { Utils } from '@pega/angular-sdk-components';
9
- import { getToDoAssignments, showBanner } from './helpers';
9
+ import { getToDoAssignments, hasAssignments, showBanner } from './helpers';
10
10
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
11
11
  import { FlowContainerBaseComponent } from '@pega/angular-sdk-components';
12
12
 
@@ -29,7 +29,6 @@ interface FlowContainerProps {
29
29
  templateUrl: './flow-container.component.html',
30
30
  styleUrls: ['./flow-container.component.scss'],
31
31
  providers: [Utils],
32
- standalone: true,
33
32
  imports: [CommonModule, MatCardModule, forwardRef(() => ComponentMapperComponent)]
34
33
  })
35
34
  export class FlowContainerComponent extends FlowContainerBaseComponent implements OnInit, OnDestroy {
@@ -90,8 +89,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
90
89
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
91
90
 
92
91
  this.localizedVal = PCore.getLocaleUtils().getLocaleValue;
93
- const caseInfo = this.pConn$.getCaseInfo();
94
- this.localeReference = `${caseInfo?.getClassName()}!CASE!${caseInfo.getName()}`.toUpperCase();
92
+ this.localeReference = this.pConn$?.getCaseLocaleReference();
95
93
 
96
94
  // Then, continue on with other initialization
97
95
 
@@ -104,6 +102,8 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
104
102
 
105
103
  this.initContainer();
106
104
 
105
+ this.checkAndUpdate();
106
+
107
107
  PCore.getPubSubUtils().subscribe(
108
108
  PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL,
109
109
  () => {
@@ -119,6 +119,14 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
119
119
  },
120
120
  'cancelPressed'
121
121
  );
122
+
123
+ PCore.getPubSubUtils().subscribe(
124
+ 'clearBannerMessages',
125
+ () => {
126
+ this.banners = [];
127
+ },
128
+ 'clearBannerMessages'
129
+ );
122
130
  }
123
131
 
124
132
  ngOnDestroy() {
@@ -129,6 +137,8 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
129
137
  PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL, 'cancelAssignment');
130
138
 
131
139
  PCore.getPubSubUtils().unsubscribe('cancelPressed', 'cancelPressed');
140
+
141
+ PCore.getPubSubUtils().unsubscribe('clearBannerMessages', 'clearBannerMessages');
132
142
  }
133
143
 
134
144
  handleCancel() {
@@ -153,13 +163,15 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
153
163
  const caseViewModeFromProps = this.angularPConnect.getComponentProp(this, 'caseViewMode');
154
164
  const caseViewModeFromRedux = pConn.getValue('context_data.caseViewMode', '');
155
165
 
166
+ const completeProps = this.angularPConnect.getCurrentCompleteProps(this) as FlowContainerProps;
167
+
156
168
  // ONLY call updateSelf when the component should update
157
169
  // AND removing the "gate" that was put there since shouldComponentUpdate
158
170
  // should be the real "gate"
171
+
159
172
  if (bUpdateSelf || caseViewModeFromProps !== caseViewModeFromRedux) {
160
173
  // don't want to redraw the flow container when there are page messages, because
161
174
  // the redraw causes us to loose the errors on the elements
162
- const completeProps = this.angularPConnect.getCurrentCompleteProps(this) as FlowContainerProps;
163
175
  if (!completeProps.pageMessages || completeProps.pageMessages.length == 0) {
164
176
  // with a cancel, need to timeout so todo will update correctly
165
177
  if (this.bHasCancel) {
@@ -170,10 +182,10 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
170
182
  } else {
171
183
  this.updateSelf();
172
184
  }
173
- } else {
174
- this.showPageMessages(completeProps);
175
185
  }
176
186
  }
187
+
188
+ this.showPageMessages(completeProps);
177
189
  }
178
190
 
179
191
  showPageMessages(completeProps: FlowContainerProps) {
@@ -189,16 +201,16 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
189
201
  const kid = this.pConn$.getChildren()[0];
190
202
  const todoKid = kid.getPConnect().getChildren()[0];
191
203
 
192
- this.todo_pConn$ = todoKid.getPConnect();
204
+ this.todo_pConn$ = todoKid?.getPConnect();
193
205
 
194
- return true;
206
+ return !!this.todo_pConn$;
195
207
  }
196
208
 
197
209
  return !(caseViewMode && caseViewMode === 'perform');
198
210
  }
199
211
 
200
212
  initContainer() {
201
- const containerMgr: any = this.pConn$.getContainerManager();
213
+ const containerMgr = this.pConn$.getContainerManager();
202
214
  const baseContext = this.pConn$.getContextName();
203
215
  const containerName = this.pConn$.getContainerName();
204
216
  const containerType = 'single';
@@ -237,7 +249,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
237
249
 
238
250
  // when true, update arChildren from pConn, otherwise, arChilren will be updated in updateSelf()
239
251
  if (bLoadChildren) {
240
- this.arChildren$ = this.pConn$.getChildren() as any[];
252
+ this.arChildren$ = this.pConn$.getChildren();
241
253
  }
242
254
 
243
255
  // const oData = this.pConn$.getDataObject();
@@ -275,44 +287,9 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
275
287
  this.psService.sendMessage(false);
276
288
  }
277
289
 
278
- hasAssignments() {
279
- let hasAssignments = false;
280
- const assignmentsList: any[] = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS);
281
- // const thisOperator = PCore.getEnvironmentInfo().getOperatorIdentifier();
282
- // 8.7 includes assignments in Assignments List that may be assigned to
283
- // a different operator. So, see if there are any assignments for
284
- // the current operator
285
- const isEmbedded = window.location.href.includes('embedded');
286
- let bAssignmentsForThisOperator = false;
287
-
288
- if (isEmbedded) {
289
- const thisOperator = PCore.getEnvironmentInfo().getOperatorIdentifier();
290
- for (const assignment of assignmentsList) {
291
- if (assignment.assigneeInfo.ID === thisOperator) {
292
- bAssignmentsForThisOperator = true;
293
- }
294
- }
295
- } else {
296
- bAssignmentsForThisOperator = true;
297
- }
298
-
299
- // Bail if there is no assignmentsList
300
- if (!assignmentsList) {
301
- return hasAssignments;
302
- }
303
-
304
- const hasChildCaseAssignments = this.hasChildCaseAssignments();
305
-
306
- if (bAssignmentsForThisOperator || hasChildCaseAssignments || this.isCaseWideLocalAction()) {
307
- hasAssignments = true;
308
- }
309
-
310
- return hasAssignments;
311
- }
312
-
313
290
  isCaseWideLocalAction() {
314
291
  const actionID = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.ACTIVE_ACTION_ID);
315
- const caseActions = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.AVAILABLEACTIONS) as any[];
292
+ const caseActions = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.AVAILABLEACTIONS);
316
293
  let bCaseWideAction = false;
317
294
  if (caseActions && actionID) {
318
295
  const actionObj = caseActions.find(caseAction => caseAction.ID === actionID);
@@ -457,7 +434,9 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
457
434
 
458
435
  showCaseMessages() {
459
436
  this.caseMessages$ = this.localizedVal(this.pConn$.getValue('caseMessages'), this.localeCategory);
460
- if (this.caseMessages$ || !this.hasAssignments()) {
437
+ // caseMessages's behavior has changed in 24.2, and hence it doesn't let Optional Action work.
438
+ // Changing the below condition for now. Was: (theCaseMessages || !hasAssignments())
439
+ if (!hasAssignments(this.pConn$)) {
461
440
  this.bHasCaseMessages$ = true;
462
441
  this.bShowConfirm = true;
463
442
  this.checkSvg$ = this.utils.getImageSrc('check', this.utils.getSDKStaticContentUrl());
@@ -467,9 +446,6 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
467
446
  this.caseMessages$ = this.localizedVal('Thank you! The next step in this case has been routed appropriately.', this.localeCategory);
468
447
  }
469
448
 
470
- // publish this "assignmentFinished" for mashup, need to get approved as a standard
471
- PCore.getPubSubUtils().publish('assignmentFinished');
472
-
473
449
  this.psService.sendMessage(false);
474
450
  } else {
475
451
  this.bHasCaseMessages$ = false;
@@ -480,13 +456,14 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
480
456
  updateFlowContainerChildren() {
481
457
  // routingInfo was added as component prop in populateAdditionalProps
482
458
  const routingInfo = this.angularPConnect.getComponentProp(this, 'routingInfo');
459
+ this.confirm_pconn = null;
483
460
 
484
461
  let loadingInfo: any;
485
462
  try {
486
463
  // @ts-ignore - Property 'getLoadingStatus' is private and only accessible within class 'C11nEnv'
487
464
  loadingInfo = this.pConn$.getLoadingStatus();
488
465
  } catch (ex) {
489
- /* empty */
466
+ console.log(ex);
490
467
  }
491
468
 
492
469
  // this check in routingInfo, mimic Nebula/Constellation (React) to check and get the internals of the
@@ -508,7 +485,6 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
508
485
  }
509
486
  });
510
487
 
511
- // eslint-disable-next-line sonarjs/no-collapsible-if
512
488
  if (currentOrder.length > 0) {
513
489
  if (currentItems[key] && currentItems[key].view && type === 'single' && Object.keys(currentItems[key].view).length > 0) {
514
490
  // when we get here, it it because the flow action data has changed
@@ -593,7 +569,6 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement
593
569
  });
594
570
  }
595
571
 
596
- // eslint-disable-next-line sonarjs/no-identical-functions
597
572
  topViewRefresh(): void {
598
573
  Object.values(this.formGroup$.controls).forEach(control => {
599
574
  control.markAsTouched();
@@ -28,12 +28,12 @@ function getChildCaseAssignments(pConnect) {
28
28
  return allAssignments;
29
29
  }
30
30
 
31
- function hasAssignments(pConnect) {
31
+ export function hasAssignments(pConnect) {
32
32
  const { CASE_INFO } = PCore.getConstants();
33
33
  const assignments = pConnect.getValue(CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS);
34
34
  const childCasesAssignments = getChildCaseAssignments(pConnect);
35
35
 
36
- return assignments || childCasesAssignments || isCaseWideLocalAction(pConnect);
36
+ return assignments || childCasesAssignments?.length || isCaseWideLocalAction(pConnect);
37
37
  }
38
38
 
39
39
  export const showBanner = getPConnect => {
@@ -14,7 +14,6 @@ import { FormGroup } from '@angular/forms';
14
14
  selector: 'app-hybrid-view-container',
15
15
  templateUrl: './hybrid-view-container.component.html',
16
16
  styleUrls: ['./hybrid-view-container.component.scss'],
17
- standalone: true,
18
17
  imports: [CommonModule]
19
18
  })
20
19
  export class HybridViewContainerComponent {
@@ -1,4 +1,4 @@
1
- <div id="dialog" *ngIf="bShowModal$ && bShowAsModal$" class="psdk-dialog-background">
1
+ <div id="dialog" *ngIf="bShowModal$" class="psdk-dialog-background">
2
2
  <div class="psdk-modal-view-container-top" id="{{ buildName$ }}">
3
3
  <h3 *ngIf="title$ != ''">{{ title$ }}</h3>
4
4
  <component-mapper
@@ -15,16 +15,6 @@
15
15
  </div>
16
16
  </div>
17
17
 
18
- <div *ngIf="bShowModal$ && !bShowAsModal$">
19
- <div id="{{ buildName$ }}">
20
- <h3 *ngIf="title$ != ''">{{ title$ }}</h3>
21
- <component-mapper
22
- name="Assignment"
23
- [props]="{ pConn$: createdViewPConn$, formGroup$, arChildren$, itemKey$, isCreateStage$: true, updateToken$ }"
24
- ></component-mapper>
25
- </div>
26
- </div>
27
-
28
18
  <div *ngIf="bShowCancelAlert$">
29
19
  <component-mapper
30
20
  name="CancelAlert"