@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,24 +1,23 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';
3
- import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
4
- import { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
2
+ import { Component } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
5
5
  import { MatChipsModule } from '@angular/material/chips';
6
6
  import { MatCheckboxModule } from '@angular/material/checkbox';
7
7
  import { MatOptionModule } from '@angular/material/core';
8
8
  import { MatFormFieldModule } from '@angular/material/form-field';
9
9
  import { MatInputModule } from '@angular/material/input';
10
10
  import { MatIconModule } from '@angular/material/icon';
11
- import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
12
- import { ComponentMapperComponent } from '@pega/angular-sdk-components';
13
- import { Utils } from '@pega/angular-sdk-components';
11
+
12
+ import { FieldBase } from '@pega/angular-sdk-components';
14
13
  import { doSearch, getDisplayFieldsMetaData, getGroupDataForItemsTree, preProcessColumns } from './utils';
15
14
  import { deleteInstruction, insertInstruction } from '@pega/angular-sdk-components';
15
+ import { handleEvent } from '@pega/angular-sdk-components';
16
16
 
17
17
  @Component({
18
18
  selector: 'app-multiselect',
19
19
  templateUrl: './multiselect.component.html',
20
20
  styleUrls: ['./multiselect.component.scss'],
21
- standalone: true,
22
21
  imports: [
23
22
  CommonModule,
24
23
  ReactiveFormsModule,
@@ -28,43 +27,19 @@ import { deleteInstruction, insertInstruction } from '@pega/angular-sdk-componen
28
27
  MatOptionModule,
29
28
  MatCheckboxModule,
30
29
  MatIconModule,
31
- MatChipsModule,
32
- forwardRef(() => ComponentMapperComponent)
30
+ MatChipsModule
33
31
  ]
34
32
  })
35
- export class MultiselectComponent implements OnInit, OnDestroy {
36
- @Input() pConn$: typeof PConnect;
37
- @Input() formGroup$: FormGroup;
38
-
39
- // Used with AngularPConnect
40
- angularPConnectData: AngularPConnectData = {};
33
+ export class MultiselectComponent extends FieldBase {
34
+ configProps$: any;
41
35
 
42
- label$ = '';
43
- value$ = '';
44
- bRequired$ = false;
45
- bDisabled$ = false;
46
- bVisible$ = true;
47
- controlName$: string;
48
- bHasForm$ = true;
49
36
  listType: string;
50
- placeholder: string;
51
- fieldControl = new FormControl('', null);
52
37
  parameters: {};
53
- hideLabel: boolean;
54
- configProps$: any;
55
38
 
56
39
  referenceList: any;
57
40
  selectionKey: string;
58
41
  primaryField: string;
59
- initialCaseClass: any;
60
42
  showSecondaryInSearchOnly = false;
61
- isGroupData = false;
62
- referenceType;
63
- secondaryFields;
64
- groupDataSource = [];
65
- matchPosition = 'contains';
66
- maxResultsDisplay;
67
- groupColumnsConfig = [{}];
68
43
  selectionList;
69
44
  listActions: any;
70
45
  selectedItems: any[] = [];
@@ -74,61 +49,31 @@ export class MultiselectComponent implements OnInit, OnDestroy {
74
49
  itemsTree: any[] = [];
75
50
  trigger: any;
76
51
 
77
- constructor(
78
- private angularPConnect: AngularPConnectService,
79
- private utils: Utils
80
- ) {}
81
-
82
- ngOnInit(): void {
83
- // First thing in initialization is registering and subscribing to the AngularPConnect service
84
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
85
- this.controlName$ = this.angularPConnect.getComponentID(this);
86
-
87
- // Then, continue on with other initialization
88
- this.checkAndUpdate();
89
-
90
- if (this.formGroup$) {
91
- // add control to formGroup
92
- this.formGroup$.addControl(this.controlName$, this.fieldControl);
93
- this.fieldControl.setValue(this.value$);
94
- this.bHasForm$ = true;
95
- } else {
96
- this.bHasForm$ = false;
97
- }
98
- }
99
-
100
- ngOnDestroy(): void {
101
- if (this.formGroup$) {
102
- this.formGroup$.removeControl(this.controlName$);
103
- }
104
-
105
- if (this.angularPConnectData.unsubscribeFn) {
106
- this.angularPConnectData.unsubscribeFn();
107
- }
108
- }
109
-
110
- // Callback passed when subscribing to store change
111
- onStateChange() {
112
- this.checkAndUpdate();
113
- }
114
-
115
- checkAndUpdate() {
116
- // Should always check the bridge to see if the component should
117
- // update itself (re-render)
118
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
52
+ /**
53
+ * Updates the component when there are changes in the state.
54
+ */
55
+ override updateSelf() {
56
+ // Resolve configuration properties
57
+ this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
119
58
 
120
- // ONLY call updateSelf when the component should update
121
- if (bUpdateSelf) {
122
- this.updateSelf();
123
- }
124
- }
59
+ // Update component common properties
60
+ this.updateComponentCommonProperties(this.configProps$);
125
61
 
126
- // updateSelf
127
- updateSelf() {
128
- this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
62
+ this.setPropertyValuesFromProps();
129
63
 
64
+ const {
65
+ groupDataSource = [],
66
+ parameters = {},
67
+ listType = '',
68
+ showSecondaryInSearchOnly = false,
69
+ isGroupData = false,
70
+ referenceType,
71
+ secondaryFields,
72
+ matchPosition = 'contains',
73
+ maxResultsDisplay,
74
+ groupColumnsConfig = [{}]
75
+ } = this.configProps$;
130
76
  let { datasource = [], columns = [{}] } = this.configProps$;
131
- this.setPropertyValuesFromProps();
132
77
 
133
78
  if (this.referenceList.length > 0) {
134
79
  datasource = this.referenceList;
@@ -146,8 +91,8 @@ export class MultiselectComponent implements OnInit, OnDestroy {
146
91
  }
147
92
  ];
148
93
  let secondaryColumns: any = [];
149
- if (this.secondaryFields) {
150
- secondaryColumns = this.secondaryFields.map(secondaryField => ({
94
+ if (secondaryFields) {
95
+ secondaryColumns = secondaryFields.map(secondaryField => ({
151
96
  value: secondaryField,
152
97
  display: 'true',
153
98
  secondary: 'true',
@@ -163,7 +108,7 @@ export class MultiselectComponent implements OnInit, OnDestroy {
163
108
  }
164
109
  ];
165
110
  }
166
- if (this.referenceType === 'Case') {
111
+ if (referenceType === 'Case') {
167
112
  columns = [...columns, ...secondaryColumns];
168
113
  }
169
114
  }
@@ -173,49 +118,36 @@ export class MultiselectComponent implements OnInit, OnDestroy {
173
118
 
174
119
  const dataConfig = {
175
120
  dataSource: datasource,
176
- groupDataSource: this.groupDataSource,
177
- isGroupData: this.isGroupData,
178
- showSecondaryInSearchOnly: this.showSecondaryInSearchOnly,
179
- parameters: this.parameters,
180
- matchPosition: this.matchPosition,
181
- listType: this.listType,
182
- maxResultsDisplay: this.maxResultsDisplay || '100',
121
+ groupDataSource,
122
+ isGroupData,
123
+ showSecondaryInSearchOnly,
124
+ parameters,
125
+ matchPosition,
126
+ listType,
127
+ maxResultsDisplay: maxResultsDisplay || '100',
183
128
  columns: preProcessColumns(columns),
184
- groupColumnsConfig: preProcessColumns(this.groupColumnsConfig)
129
+ groupColumnsConfig: preProcessColumns(groupColumnsConfig),
130
+ associationFilter: undefined,
131
+ ignoreCase: undefined
185
132
  };
186
133
 
187
134
  const groupsDisplayFieldMeta = this.listType !== 'associated' ? getDisplayFieldsMetaData(dataConfig.groupColumnsConfig) : null;
188
135
 
189
- this.itemsTreeBaseData = getGroupDataForItemsTree(this.groupDataSource, groupsDisplayFieldMeta, this.showSecondaryInSearchOnly) || [];
136
+ this.itemsTreeBaseData = getGroupDataForItemsTree(groupDataSource, groupsDisplayFieldMeta, this.showSecondaryInSearchOnly) || [];
190
137
 
191
- this.itemsTree = this.isGroupData ? getGroupDataForItemsTree(this.groupDataSource, groupsDisplayFieldMeta, this.showSecondaryInSearchOnly) : [];
138
+ this.itemsTree = isGroupData ? getGroupDataForItemsTree(groupDataSource, groupsDisplayFieldMeta, this.showSecondaryInSearchOnly) : [];
192
139
 
193
140
  this.displayFieldMeta = this.listType !== 'associated' ? getDisplayFieldsMetaData(dataConfig.columns) : null;
194
141
 
195
142
  this.listActions = this.pConn$.getListActions();
196
143
  this.pConn$.setReferenceList(this.selectionList);
197
144
 
198
- if (this.configProps$.visibility != null) {
199
- this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
200
- }
201
-
202
- // disabled
203
- if (this.configProps$.disabled != undefined) {
204
- this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
205
- }
206
-
207
- if (this.bDisabled$) {
208
- this.fieldControl.disable();
209
- } else {
210
- this.fieldControl.enable();
211
- }
212
-
213
145
  if (this.listType !== 'associated') {
214
146
  PCore.getDataApi()
215
147
  ?.init(dataConfig, contextName)
216
148
  .then(async dataObj => {
217
149
  this.dataApiObj = dataObj;
218
- if (!this.isGroupData) {
150
+ if (!isGroupData) {
219
151
  this.getCaseListBasedOnParams(this.value$ ?? '', '', [...this.selectedItems], [...this.itemsTree]);
220
152
  }
221
153
  });
@@ -223,23 +155,9 @@ export class MultiselectComponent implements OnInit, OnDestroy {
223
155
  }
224
156
 
225
157
  setPropertyValuesFromProps() {
226
- this.label$ = this.configProps$.label;
227
- this.placeholder = this.configProps$.placeholder || '';
228
- this.listType = this.configProps$.listType ? this.configProps$.listType : '';
229
- this.hideLabel = this.configProps$.hideLabel;
230
- this.parameters = this.configProps$?.parameters ? this.configProps$?.parameters : {};
231
158
  this.referenceList = this.configProps$?.referenceList;
232
159
  this.selectionKey = this.configProps$?.selectionKey;
233
160
  this.primaryField = this.configProps$?.primaryField;
234
- this.initialCaseClass = this.configProps$?.initialCaseClass;
235
- this.showSecondaryInSearchOnly = this.configProps$?.showSecondaryInSearchOnly ? this.configProps$?.showSecondaryInSearchOnly : false;
236
- this.isGroupData = this.configProps$?.isGroupData ? this.configProps$.isGroupData : false;
237
- this.referenceType = this.configProps$?.referenceType;
238
- this.secondaryFields = this.configProps$?.secondaryFields;
239
- this.groupDataSource = this.configProps$?.groupDataSource ? this.configProps$?.groupDataSource : [];
240
- this.matchPosition = this.configProps$?.matchPosition ? this.configProps$?.matchPosition : 'contains';
241
- this.maxResultsDisplay = this.configProps$?.maxResultsDisplay;
242
- this.groupColumnsConfig = this.configProps$?.groupColumnsConfig ? this.configProps$?.groupColumnsConfig : [{}];
243
161
  this.selectionList = this.configProps$?.selectionList;
244
162
  this.value$ = this.configProps$?.value;
245
163
  }
@@ -261,15 +179,17 @@ export class MultiselectComponent implements OnInit, OnDestroy {
261
179
 
262
180
  const initalItemsTree = isTriggeredFromSearch || !currentItemsTree ? [...this.itemsTreeBaseData] : [...currentItemsTree];
263
181
 
182
+ const { initialCaseClass, isGroupData, showSecondaryInSearchOnly } = this.configProps$;
183
+
264
184
  doSearch(
265
185
  searchText,
266
186
  group,
267
- this.initialCaseClass,
187
+ initialCaseClass,
268
188
  this.displayFieldMeta,
269
189
  this.dataApiObj,
270
190
  initalItemsTree,
271
- this.isGroupData,
272
- this.showSecondaryInSearchOnly,
191
+ isGroupData,
192
+ showSecondaryInSearchOnly,
273
193
  selectedRows || []
274
194
  ).then(res => {
275
195
  this.itemsTree = res || [];
@@ -283,8 +203,10 @@ export class MultiselectComponent implements OnInit, OnDestroy {
283
203
  this.getCaseListBasedOnParams(this.value$, '', [...this.selectedItems], [...this.itemsTree], true);
284
204
  }
285
205
 
286
- optionChanged(event: MatAutocompleteSelectedEvent) {
287
- this.angularPConnectData.actions?.onChange(this, event);
206
+ optionChanged(event: any) {
207
+ let value = event?.target?.value;
208
+ value = value?.substring(1);
209
+ handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
288
210
  }
289
211
 
290
212
  optionClicked = (event: Event, data: any): void => {
@@ -326,7 +248,7 @@ export class MultiselectComponent implements OnInit, OnDestroy {
326
248
 
327
249
  setSelectedItemsForReferenceList(data: any) {
328
250
  // Clear error messages if any
329
- const propName = (this.pConn$.getStateProps() as any).selectionList;
251
+ const propName = this.pConn$.getStateProps().selectionList;
330
252
  this.pConn$.clearErrorMessages({
331
253
  property: propName,
332
254
  category: '',
@@ -339,21 +261,4 @@ export class MultiselectComponent implements OnInit, OnDestroy {
339
261
  deleteInstruction(this.pConn$, this.selectionList, this.selectionKey, data);
340
262
  }
341
263
  }
342
-
343
- getErrorMessage() {
344
- let errMessage = '';
345
-
346
- // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
347
- if (this.fieldControl.hasError('message')) {
348
- errMessage = this.angularPConnectData.validateMessage ?? '';
349
- return errMessage;
350
- }
351
- if (this.fieldControl.hasError('required')) {
352
- errMessage = 'You must enter a value';
353
- } else if (this.fieldControl.errors) {
354
- errMessage = this.fieldControl.errors.toString();
355
- }
356
-
357
- return errMessage;
358
- }
359
264
  }
@@ -85,6 +85,31 @@ function prepareSearchResults(listObjData, displayFieldMeta) {
85
85
  return searchResults;
86
86
  }
87
87
 
88
+ function handleGroupedDataSearch(dataApiObj, searchText, clickedGroup, initialCaseClass, itemsTree) {
89
+ const localDataApiObj = cloneDeep(dataApiObj);
90
+ localDataApiObj.fetchedNQData = false;
91
+ localDataApiObj.cache = {};
92
+
93
+ if (!searchText && !clickedGroup) {
94
+ return { shouldReturn: true, value: itemsTree };
95
+ }
96
+
97
+ localDataApiObj.parameters[Object.keys(localDataApiObj.parameters)[1]] = searchText;
98
+ localDataApiObj.parameters[Object.keys(localDataApiObj.parameters)[0]] = initialCaseClass;
99
+
100
+ if (clickedGroup) {
101
+ if (!searchText) {
102
+ const containsData = itemsTree.find(item => item.id === clickedGroup);
103
+ if (containsData?.items?.length) {
104
+ return { shouldReturn: true, value: itemsTree };
105
+ }
106
+ }
107
+ localDataApiObj.parameters[Object.keys(localDataApiObj.parameters)[0]] = JSON.stringify([clickedGroup]);
108
+ }
109
+
110
+ return { shouldReturn: false, value: localDataApiObj };
111
+ }
112
+
88
113
  async function doSearch(
89
114
  searchText,
90
115
  clickedGroup,
@@ -96,61 +121,44 @@ async function doSearch(
96
121
  showSecondaryInSearchOnly,
97
122
  selected
98
123
  ) {
99
- let searchTextForUngroupedData = '';
100
- if (dataApiObj) {
101
- // creating dataApiObject in grouped data cases
102
- if (isGroupData) {
103
- dataApiObj = cloneDeep(dataApiObj);
104
- dataApiObj.fetchedNQData = false;
105
- dataApiObj.cache = {};
106
-
107
- // if we have no search text and no group selected, return the original tree
108
- if (searchText === '' && clickedGroup === '') {
109
- return itemsTree;
110
- }
124
+ if (!dataApiObj) {
125
+ return itemsTree;
126
+ }
111
127
 
112
- // setting the inital search text & search classes in ApiObject
113
- dataApiObj.parameters[Object.keys(dataApiObj.parameters)[1]] = searchText;
114
- dataApiObj.parameters[Object.keys(dataApiObj.parameters)[0]] = initialCaseClass;
115
-
116
- // if we have a selected group
117
- if (clickedGroup) {
118
- // check if the data for this group is already present and no search text
119
- if (searchText === '') {
120
- const containsData = itemsTree.find(item => item.id === clickedGroup);
121
- // do not make API call when items of respective group are already fetched
122
- if (containsData?.items?.length) return itemsTree;
123
- }
128
+ let searchTextForApi = '';
129
+ let localDataApiObj = dataApiObj;
124
130
 
125
- dataApiObj.parameters[Object.keys(dataApiObj.parameters)[0]] = JSON.stringify([clickedGroup]);
126
- }
127
- } else {
128
- searchTextForUngroupedData = searchText;
131
+ if (isGroupData) {
132
+ const groupResult = handleGroupedDataSearch(dataApiObj, searchText, clickedGroup, initialCaseClass, itemsTree);
133
+ if (groupResult.shouldReturn) {
134
+ return groupResult.value;
129
135
  }
136
+ localDataApiObj = groupResult.value;
137
+ } else {
138
+ searchTextForApi = searchText;
139
+ }
130
140
 
131
- // search API call
132
- const response = await dataApiObj.fetchData(searchTextForUngroupedData).catch(() => {
133
- return itemsTree;
134
- });
141
+ const response = await localDataApiObj.fetchData(searchTextForApi).catch(() => ({ data: undefined }));
135
142
 
136
- let listObjData = response.data;
137
- let newItemsTree = [];
138
- if (isGroupData) {
139
- if (searchText) {
140
- listObjData = prepareSearchResults(listObjData, displayFieldMeta);
141
- } else {
142
- newItemsTree = putItemsDataInItemsTree(listObjData, displayFieldMeta, itemsTree, showSecondaryInSearchOnly, selected);
143
- return newItemsTree;
144
- }
145
- }
146
- const showSecondaryData = showSecondaryInSearchOnly ? !!searchText : true;
147
- if (listObjData !== undefined && listObjData.length > 0) {
148
- newItemsTree = listObjData.map(entry => createSingleTreeObejct(entry, displayFieldMeta, showSecondaryData, selected));
143
+ let listObjData = response.data;
144
+ if (!listObjData) {
145
+ return itemsTree;
146
+ }
147
+
148
+ if (isGroupData) {
149
+ if (searchText) {
150
+ listObjData = prepareSearchResults(listObjData, displayFieldMeta);
151
+ } else {
152
+ return putItemsDataInItemsTree(listObjData, displayFieldMeta, itemsTree, showSecondaryInSearchOnly, selected);
149
153
  }
150
- return newItemsTree;
151
154
  }
152
155
 
153
- return itemsTree;
156
+ if (listObjData.length === 0) {
157
+ return [];
158
+ }
159
+
160
+ const showSecondaryData = showSecondaryInSearchOnly ? !!searchText : true;
161
+ return listObjData.map(entry => createSingleTreeObejct(entry, displayFieldMeta, showSecondaryData, selected));
154
162
  }
155
163
 
156
164
  function setValuesToPropertyList(searchText, assocProp, items, columns, actions, updatePropertyInRedux = true) {
@@ -0,0 +1,17 @@
1
+ <div *ngIf="isDisplayModeEnabled && !canBeChangedInReviewMode; else semanticLinkCheck">
2
+ <component-mapper name="SingleReferenceReadOnly" [props]="{ pConn$ }"></component-mapper>
3
+ </div>
4
+ <ng-template #semanticLinkCheck>
5
+ <div *ngIf="type === 'SemanticLink' && !canBeChangedInReviewMode; else loadDynamicComp">
6
+ <component-mapper name="SemanticLink" [props]="{ pConn$: newPconn }"></component-mapper>
7
+ </div>
8
+ </ng-template>
9
+ <ng-template #loadDynamicComp>
10
+ <component-mapper
11
+ *ngIf="newComponentName"
12
+ [name]="newComponentName"
13
+ [props]="{ pConn$: newPconn, formGroup$ }"
14
+ [parent]="this"
15
+ [outputEvents]="{ onRecordChange: onRecordChange }"
16
+ ></component-mapper>
17
+ </ng-template>
@@ -0,0 +1,22 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { ObjectReferenceComponent } from './object-reference.component';
4
+
5
+ describe('ObjectReferenceComponent', () => {
6
+ let component: ObjectReferenceComponent;
7
+ let fixture: ComponentFixture<ObjectReferenceComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ imports: [ObjectReferenceComponent]
12
+ }).compileComponents();
13
+
14
+ fixture = TestBed.createComponent(ObjectReferenceComponent);
15
+ component = fixture.componentInstance;
16
+ fixture.detectChanges();
17
+ });
18
+
19
+ it('should create', () => {
20
+ expect(component).toBeTruthy();
21
+ });
22
+ });