@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
@@ -3,6 +3,10 @@ import { CommonModule } from '@angular/common';
3
3
  import { FormGroup } from '@angular/forms';
4
4
  import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
5
5
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
6
+ import { getMappedKey } from '@pega/angular-sdk-components';
7
+ import { componentCachePersistUtils } from '@pega/angular-sdk-components';
8
+ import { getFirstChildConfig } from '@pega/angular-sdk-components';
9
+ import { DataReferenceAdvancedSearchService } from './data-reference-advanced-search.service';
6
10
 
7
11
  const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' };
8
12
 
@@ -10,7 +14,6 @@ const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' };
10
14
  selector: 'app-data-reference',
11
15
  templateUrl: './data-reference.component.html',
12
16
  styleUrls: ['./data-reference.component.scss'],
13
- standalone: true,
14
17
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
15
18
  })
16
19
  export class DataReferenceComponent implements OnInit, OnDestroy {
@@ -39,47 +42,71 @@ export class DataReferenceComponent implements OnInit, OnDestroy {
39
42
  displaySingleRef: boolean;
40
43
  displayMultiRef: boolean;
41
44
  refList: any;
45
+ displayAs: any;
46
+ isDDSourceDeferred: any;
47
+ showPromotedFilters: any;
48
+ displayMode: any;
49
+ refFieldMetadata: any;
50
+ contextClass: any;
51
+ selectionList: any;
52
+ inline: any;
53
+ isCreationOfNewRecordAllowedForReference: any;
54
+ showAdvancedSearch: boolean;
55
+ pyID: any;
56
+ allowImplicitRefresh: any;
57
+ displayChild = false;
58
+ dataRelationshipContext: any;
59
+ imagePosition: any;
60
+ showImageDescription: any;
42
61
 
43
- constructor(private angularPConnect: AngularPConnectService) {}
62
+ constructor(
63
+ private angularPConnect: AngularPConnectService,
64
+ private advancedSearchService: DataReferenceAdvancedSearchService
65
+ ) {}
44
66
 
45
67
  ngOnInit(): void {
46
68
  // First thing in initialization is registering and subscribing to the AngularPConnect service
47
69
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
48
- this.children = this.pConn$.getChildren() as any[];
70
+ this.children = this.pConn$.getChildren();
49
71
  this.updateSelf();
50
- if (this.firstChildMeta?.type === 'Dropdown' && this.rawViewMetadata.config?.parameters) {
72
+
73
+ if (
74
+ this.rawViewMetadata.config?.parameters &&
75
+ !this.isDDSourceDeferred &&
76
+ ['Checkbox', 'Dropdown', 'RadioButtons'].includes(this.firstChildMeta?.type)
77
+ ) {
51
78
  const { value, key, text } = this.firstChildMeta.config.datasource.fields;
52
- (
53
- PCore.getDataApiUtils().getData(
54
- this.refList,
55
- {
79
+
80
+ if (this.firstChildMeta.config.variant !== 'card' || this.firstChildMeta.config.variant === 'card') {
81
+ PCore.getDataApiUtils()
82
+ .getData(this.refList, {
56
83
  dataViewParameters: this.parameters
57
- } as any,
58
- ''
59
- ) as Promise<any>
60
- )
61
- .then(res => {
62
- if (res.data.data !== null) {
63
- const ddDataSource = res.data.data
64
- .map(listItem => ({
65
- key: listItem[key.split(' .', 2)[1]],
66
- text: listItem[text.split(' .', 2)[1]],
67
- value: listItem[value.split(' .', 2)[1]]
68
- }))
69
- .filter(item => item.key);
70
- // Filtering out undefined entries that will break preview
71
- this.dropDownDataSource = ddDataSource;
72
- this.updateSelf();
73
- } else {
74
- const ddDataSource: any = [];
75
- this.dropDownDataSource = ddDataSource;
76
- }
77
- })
78
- .catch(() => {
79
- return Promise.resolve({
80
- data: { data: [] }
84
+ })
85
+ .then(res => {
86
+ if (res.data.data !== null) {
87
+ const ddDataSource = this.firstChildMeta.config.datasource.filterDownloadedFields
88
+ ? res.data.data
89
+ : res.data.data
90
+ .map(listItem => ({
91
+ key: listItem[key.split(' .', 2)[1]],
92
+ text: listItem[text.split(' .', 2)[1]],
93
+ value: listItem[value.split(' .', 2)[1]]
94
+ }))
95
+ .filter(item => item.key); // Filtering out undefined entries
96
+ this.dropDownDataSource = ddDataSource;
97
+ this.updateSelf();
98
+ } else {
99
+ const ddDataSource: any = [];
100
+ this.dropDownDataSource = ddDataSource;
101
+ }
102
+ })
103
+ .catch(err => {
104
+ console.error(err?.stack);
105
+ return Promise.resolve({
106
+ data: { data: [] }
107
+ });
81
108
  });
82
- });
109
+ }
83
110
  }
84
111
  }
85
112
 
@@ -103,50 +130,62 @@ export class DataReferenceComponent implements OnInit, OnDestroy {
103
130
 
104
131
  updateSelf() {
105
132
  // Update properties based on configProps
106
- const theConfigProps: any = this.pConn$.getConfigProps();
133
+ const theConfigProps = this.pConn$.getConfigProps();
107
134
  this.updatePropertiesFromProps(theConfigProps);
108
135
 
109
- const displayAs = theConfigProps.displayAs;
110
- const displayMode = theConfigProps.displayMode;
136
+ const { displayAs, displayMode } = theConfigProps;
111
137
  this.rawViewMetadata = this.pConn$.getRawMetadata();
112
138
  this.viewName = this.rawViewMetadata.name;
113
139
  this.firstChildMeta = this.rawViewMetadata.children[0];
114
140
  this.refList = this.rawViewMetadata.config.referenceList;
115
- this.canBeChangedInReviewMode = theConfigProps.allowAndPersistChangesInReviewMode && (displayAs === 'autocomplete' || displayAs === 'dropdown');
116
- // this.childrenToRender = this.children;
117
- this.isDisplayModeEnabled = ['LABELS_LEFT', 'STACKED_LARGE_VAL'].includes(displayMode);
141
+ this.dataRelationshipContext =
142
+ this.rawViewMetadata.config.contextClass && this.rawViewMetadata.config.name ? this.rawViewMetadata.config.name : null;
143
+ this.canBeChangedInReviewMode = theConfigProps.allowAndPersistChangesInReviewMode && ['autocomplete', 'dropdown'].includes(displayAs);
144
+ this.isDisplayModeEnabled = ['DISPLAY_ONLY', 'STACKED_LARGE_VAL'].includes(displayMode);
145
+ this.refFieldMetadata = this.pConn$.getFieldMetadata(this.rawViewMetadata?.config?.authorContext);
146
+ this.pyID = getMappedKey('pyID');
147
+ // @ts-ignore
148
+ const { allowImplicitRefresh } = PCore.getFieldDefaultUtils().fieldDefaults?.DataReference || {};
118
149
 
119
- if (this.firstChildMeta?.type !== 'Region') {
120
- this.firstChildPConnect = this.pConn$.getChildren()[0].getPConnect;
150
+ this.allowImplicitRefresh = allowImplicitRefresh;
151
+ this.isDDSourceDeferred =
152
+ (this.firstChildMeta?.type === 'Dropdown' && this.selectionMode === SELECTION_MODE.SINGLE && this.refFieldMetadata?.descriptors) ||
153
+ this.firstChildMeta.config.deferDatasource;
121
154
 
122
- /* remove refresh When condition from those old view so that it will not be used for runtime */
123
- if (this.firstChildMeta.config?.readOnly) {
124
- delete this.firstChildMeta.config.readOnly;
125
- }
126
- if (this.firstChildMeta?.type === 'Dropdown') {
127
- this.firstChildMeta.config.datasource.source = this.rawViewMetadata.config?.parameters
128
- ? this.dropDownDataSource
129
- : '@DATASOURCE '.concat(this.refList).concat('.pxResults');
130
- } else if (this.firstChildMeta?.type === 'AutoComplete') {
131
- this.firstChildMeta.config.datasource = this.refList;
132
-
133
- /* Insert the parameters to the component only if present */
134
- if (this.rawViewMetadata.config?.parameters) {
135
- this.firstChildMeta.config.parameters = this.parameters;
136
- }
137
- }
138
- // set displayMode conditionally
139
- if (!this.canBeChangedInReviewMode) {
140
- this.firstChildMeta.config.displayMode = displayMode;
141
- }
142
- if (this.firstChildMeta.type === 'SimpleTableSelect' && this.selectionMode === SELECTION_MODE.MULTI) {
143
- this.propName = PCore.getAnnotationUtils().getPropertyName(this.firstChildMeta.config.selectionList);
144
- } else {
145
- this.propName = PCore.getAnnotationUtils().getPropertyName(this.firstChildMeta.config.value);
146
- }
155
+ if (this.firstChildMeta?.type === 'Region') {
156
+ return;
157
+ }
158
+
159
+ this.firstChildPConnect = this.pConn$.getChildren()[0].getPConnect;
160
+
161
+ /* remove refresh When condition from those old view so that it will not be used for runtime */
162
+ if (this.firstChildMeta.config?.readOnly) {
163
+ delete this.firstChildMeta.config.readOnly;
164
+ }
165
+ if (this.firstChildMeta?.type === 'Dropdown') {
166
+ this.firstChildMeta.config.datasource.source = this.rawViewMetadata.config?.parameters
167
+ ? this.dropDownDataSource
168
+ : '@DATASOURCE '.concat(this.refList).concat('.pxResults');
169
+ } else if (this.firstChildMeta?.type === 'AutoComplete') {
170
+ this.firstChildMeta.config.datasource = this.refList;
147
171
 
148
- this.generateChildrenToRender();
172
+ /* Insert the parameters to the component only if present */
173
+ if (this.rawViewMetadata.config?.parameters) {
174
+ this.firstChildMeta.config.parameters = this.parameters;
175
+ }
176
+ }
177
+ // set displayMode conditionally
178
+ if (!this.canBeChangedInReviewMode) {
179
+ this.firstChildMeta.config.displayMode = displayMode;
149
180
  }
181
+ if (this.firstChildMeta.type === 'SimpleTableSelect' && this.selectionMode === SELECTION_MODE.MULTI) {
182
+ this.propName = PCore.getAnnotationUtils().getPropertyName(this.firstChildMeta.config.selectionList);
183
+ } else {
184
+ this.propName = PCore.getAnnotationUtils().getPropertyName(this.firstChildMeta.config.value);
185
+ }
186
+
187
+ this.generateChildrenToRender();
188
+ this.displayChild = !(this.displaySingleRef || this.displayMultiRef);
150
189
  }
151
190
 
152
191
  updatePropertiesFromProps(theConfigProps) {
@@ -156,118 +195,308 @@ export class DataReferenceComponent implements OnInit, OnDestroy {
156
195
  this.selectionMode = theConfigProps.selectionMode;
157
196
  this.parameters = theConfigProps.parameters;
158
197
  this.hideLabel = theConfigProps.hideLabel;
159
-
198
+ this.displayAs = theConfigProps.displayAs;
199
+ this.showPromotedFilters = theConfigProps.showPromotedFilters;
200
+ this.displayMode = theConfigProps.displayMode;
160
201
  this.propsToUse = { label, showLabel, ...this.pConn$.getInheritedProps() };
202
+ this.contextClass = theConfigProps.contextClass;
203
+ this.selectionList = theConfigProps.selectionList;
204
+ this.inline = theConfigProps.inline;
205
+ this.isCreationOfNewRecordAllowedForReference = theConfigProps.isCreationOfNewRecordAllowedForReference;
161
206
  if (this.propsToUse.showLabel === false) {
162
207
  this.propsToUse.label = '';
163
208
  }
209
+ this.imagePosition = theConfigProps.imagePosition;
210
+ this.showImageDescription = theConfigProps.showImageDescription;
164
211
  }
165
212
 
166
213
  generateChildrenToRender() {
167
214
  const theRecreatedFirstChild = this.recreatedFirstChild();
168
- const viewsRegion = this.rawViewMetadata.children[1];
169
- if (viewsRegion?.name === 'Views' && viewsRegion.children.length) {
170
- this.childrenToRender = [theRecreatedFirstChild, ...this.children.slice(1)];
171
- } else {
215
+ if (this.firstChildMeta?.type !== 'Region') {
216
+ const viewsRegion = this.rawViewMetadata.children[1];
217
+
218
+ if (viewsRegion?.name === 'Views' && viewsRegion.children.length) {
219
+ viewsRegion.children.map(child => {
220
+ child.config.isEmbeddedInDataReference = true;
221
+ return child;
222
+ });
223
+ this.childrenToRender = [theRecreatedFirstChild, ...this.children.slice(1)];
224
+ } else {
225
+ this.childrenToRender = [theRecreatedFirstChild];
226
+ }
227
+ } else if (this.displayAs === 'advancedSearch') {
172
228
  this.childrenToRender = [theRecreatedFirstChild];
173
229
  }
230
+
231
+ // Render
232
+ if (this.childrenToRender.length === 1) {
233
+ return this.childrenToRender[0] ?? null;
234
+ }
174
235
  }
175
236
 
176
237
  handleSelection(event) {
177
238
  const caseKey = this.pConn$.getCaseInfo().getKey();
178
- const refreshOptions = { autoDetectRefresh: true };
179
- if (this.canBeChangedInReviewMode && this.pConn$.getValue('__currentPageTabViewName')) {
180
- this.pConn$.getActionsApi().refreshCaseView(caseKey, this.pConn$.getValue('__currentPageTabViewName'), '', refreshOptions);
181
- PCore.getDeferLoadManager().refreshActiveComponents(this.pConn$.getContextName());
182
- } else {
183
- const pgRef = this.pConn$.getPageReference().replace('caseInfo.content', '');
184
- this.pConn$.getActionsApi().refreshCaseView(caseKey, this.viewName, pgRef, refreshOptions);
239
+ const refreshOptions: any = { autoDetectRefresh: true, propertyName: '' };
240
+
241
+ if ((this.pConn$?.getRawMetadata()?.children as Array<any>)?.length > 0 && this.pConn$?.getRawMetadata()?.children?.[0].config?.value) {
242
+ refreshOptions.propertyName = this.pConn$?.getRawMetadata()?.children?.[0].config.value;
243
+ refreshOptions.classID = (this.pConn$.getRawMetadata() as any).classID;
185
244
  }
186
245
 
187
- // AutoComplete sets value on event.id whereas Dropdown sets it on event.target.value
246
+ // AutoComplete sets value on event.id whereas Dropdown sets it on event.target.value if event.id is unset
247
+ // When value is empty propValue will be undefined here and no value will be set for the reference
188
248
  const propValue = event?.id || event?.target?.value;
189
- if (propValue && this.canBeChangedInReviewMode && this.isDisplayModeEnabled) {
190
- (PCore.getDataApiUtils().getCaseEditLock(caseKey, '') as Promise<any>).then(caseResponse => {
191
- const pageTokens = this.pConn$.getPageReference().replace('caseInfo.content', '').split('.');
192
- let curr = {};
193
- const commitData = curr;
194
-
195
- pageTokens.forEach(el => {
196
- if (el !== '') {
197
- curr[el] = {};
198
- curr = curr[el];
199
- }
200
- });
249
+ const propName =
250
+ this.firstChildMeta.type === 'SimpleTableSelect' && this.selectionMode === SELECTION_MODE.MULTI
251
+ ? PCore.getAnnotationUtils().getPropertyName(this.firstChildMeta.config.selectionList)
252
+ : PCore.getAnnotationUtils().getPropertyName(this.firstChildMeta.config.value);
201
253
 
202
- // expecting format like {Customer: {pyID:"C-100"}}
203
- const propArr = this.propName.split('.');
204
- propArr.forEach((element, idx) => {
205
- if (idx + 1 === propArr.length) {
206
- curr[element] = propValue;
207
- } else {
208
- curr[element] = {};
209
- curr = curr[element];
210
- }
211
- });
254
+ const hasAssociatedViewConfigured = this.rawViewMetadata.children[1].children?.length;
255
+
256
+ if (this.pConn$.getContextName().includes('modal') || this.pConn$.getContextName().includes('workarea')) {
257
+ if (hasAssociatedViewConfigured || this.allowImplicitRefresh) {
258
+ const pageReference = this.pConn$.getPageReference();
259
+ let pgRef: any = null;
260
+ if (pageReference.startsWith('objectInfo')) {
261
+ pgRef = pageReference.replace('objectInfo.content', '');
262
+ } else {
263
+ pgRef = pageReference.replace('caseInfo.content', '');
264
+ }
265
+ const viewName = this.rawViewMetadata.name;
266
+ this.pConn$
267
+ .getActionsApi()
268
+ .refreshCaseView(caseKey, viewName, pgRef, refreshOptions)
269
+ .catch(() => {});
270
+ }
271
+ } else if (propValue && this.canBeChangedInReviewMode && this.isDisplayModeEnabled) {
272
+ PCore.getCaseUtils()
273
+ .getCaseEditLock(caseKey, '')
274
+ .then(caseResponse => {
275
+ const pageTokens = this.pConn$.getPageReference().replace('caseInfo.content', '').split('.');
276
+ let curr = {};
277
+ const commitData = curr;
212
278
 
213
- (
214
- PCore.getCaseUtils().updateCaseEditFieldsData(
215
- caseKey,
216
- { [caseKey]: commitData },
217
- caseResponse.headers.etag,
218
- this.pConn$.getContextName()
219
- ) as Promise<any>
220
- ).then(response => {
221
- PCore.getContainerUtils().updateParentLastUpdateTime(this.pConn$.getContextName(), response.data.data.caseInfo.lastUpdateTime);
222
- PCore.getContainerUtils().updateRelatedContextEtag(this.pConn$.getContextName(), response.headers.etag);
279
+ pageTokens.forEach(el => {
280
+ if (el !== '') {
281
+ curr[el] = {};
282
+ curr = curr[el];
283
+ }
284
+ });
285
+
286
+ // expecting format like {Customer: {pyID:"C-100"}}
287
+ const propArr = propName.split('.');
288
+ propArr.forEach((element, idx) => {
289
+ if (idx + 1 === propArr.length) {
290
+ curr[element] = propValue;
291
+ } else {
292
+ curr[element] = {};
293
+ curr = curr[element];
294
+ }
295
+ });
296
+
297
+ PCore.getCaseUtils()
298
+ .updateCaseEditFieldsData(caseKey, { [caseKey]: commitData }, caseResponse.headers.etag, this.pConn$.getContextName())
299
+ .then(response => {
300
+ PCore.getContainerUtils().updateParentLastUpdateTime(this.pConn$.getContextName(), response.data.data.caseInfo.lastUpdateTime);
301
+ PCore.getContainerUtils().updateRelatedContextEtag(this.pConn$.getContextName(), response.headers.etag);
302
+ });
223
303
  });
224
- });
225
304
  }
226
305
  }
227
306
 
228
- // Re-create first child with overridden props
229
- // Memoized child in order to stop unmount and remount of the child component when data reference
230
- // rerenders without any actual change
231
307
  recreatedFirstChild() {
232
- const { type, config } = this.firstChildMeta;
233
- if (this.firstChildMeta?.type !== 'Region') {
234
- this.pConn$.clearErrorMessages({
235
- property: this.propName,
236
- category: '',
237
- context: ''
238
- } as any);
239
- if (!this.canBeChangedInReviewMode && this.isDisplayModeEnabled && this.selectionMode === SELECTION_MODE.SINGLE) {
240
- this.displaySingleRef = true;
308
+ if (this.firstChildMeta?.type === 'Region' && this.displayAs !== 'advancedSearch') {
309
+ return;
310
+ }
311
+ const { type } = this.firstChildMeta;
312
+ this.firstChildPConnect = this.pConn$.getChildren()[0].getPConnect;
313
+
314
+ this.setReadOnlyDisplayFlags();
315
+
316
+ if (type === 'Dropdown' && this.dropDownDataSource === null && !this.isDDSourceDeferred && this.rawViewMetadata.config?.parameters) {
317
+ return null;
318
+ }
319
+
320
+ this.prepareFirstChildMeta();
321
+
322
+ const dataReferenceConfigToChild = this.buildDataReferenceConfig();
323
+ const { disableStartingFieldsForReference = false } = PCore.getEnvironmentInfo().environmentInfoObject?.features?.form || ({} as any);
324
+
325
+ if (this.displayAs === 'advancedSearch') {
326
+ this.showAdvancedSearch = true;
327
+ const searchSelectCacheKey = componentCachePersistUtils.getComponentStateKey(this.pConn$, this.rawViewMetadata.config.name);
328
+ this.advancedSearchService.setConfig({
329
+ dataReferenceConfigToChild,
330
+ isCreateNewReferenceEnabled: !!dataReferenceConfigToChild.createNewRecord,
331
+ disableStartingFieldsForReference,
332
+ pyID: this.pyID,
333
+ searchSelectCacheKey
334
+ });
335
+ return;
336
+ }
337
+
338
+ return this.firstChildPConnect().createComponent({
339
+ type,
340
+ config: {
341
+ ...getFirstChildConfig({
342
+ firstChildMeta: this.firstChildMeta,
343
+ getPConnect: this.pConn$,
344
+ rawViewMetadata: this.rawViewMetadata,
345
+ contextClass: this.contextClass,
346
+ dataReferenceConfigToChild,
347
+ isCreateNewReferenceEnabled: !!dataReferenceConfigToChild.createNewRecord,
348
+ disableStartingFieldsForReference,
349
+ pyID: this.pyID
350
+ })
241
351
  }
352
+ });
353
+ }
354
+
355
+ private setReadOnlyDisplayFlags() {
356
+ const isSingleMode = this.selectionMode === SELECTION_MODE.SINGLE;
357
+ const isMultiMode = this.selectionMode === SELECTION_MODE.MULTI;
358
+
359
+ if (isSingleMode && (this.displayAs === 'readonly' || this.isDisplayModeEnabled) && !this.canBeChangedInReviewMode) {
360
+ this.displaySingleRef = true;
361
+ }
362
+
363
+ if (isMultiMode && (['readonly', 'readonlyMulti', 'map'].includes(this.displayAs) || this.isDisplayModeEnabled)) {
364
+ this.displayMultiRef = true;
365
+ }
366
+ }
242
367
 
243
- if (this.isDisplayModeEnabled && this.selectionMode === SELECTION_MODE.MULTI) {
244
- this.displayMultiRef = true;
368
+ private prepareFirstChildMeta() {
369
+ // Cleanup
370
+ if (this.firstChildMeta.config?.readOnly) {
371
+ delete this.firstChildMeta.config.readOnly;
372
+ }
373
+
374
+ // Set datasource
375
+ this.setChildDatasource();
376
+
377
+ // Pass through configs
378
+ if (this.firstChildMeta.config) {
379
+ this.firstChildMeta.config.showPromotedFilters = this.showPromotedFilters;
380
+ if (!this.canBeChangedInReviewMode) {
381
+ this.firstChildMeta.config.displayMode = this.displayMode;
245
382
  }
383
+ }
384
+ }
246
385
 
247
- // In the case of a datasource with parameters you cannot load the dropdown before the parameters
248
- if (type === 'Dropdown' && this.rawViewMetadata.config?.parameters && this.dropDownDataSource === null) {
249
- return null;
386
+ private setChildDatasource() {
387
+ const { type, config } = this.firstChildMeta;
388
+
389
+ if (['Dropdown', 'Checkbox', 'RadioButtons'].includes(type) && !config.deferDatasource && config.datasource) {
390
+ const isCardVariant = config.variant === 'card';
391
+ const hasParameters = this.rawViewMetadata.config?.parameters;
392
+ // @ts-ignore
393
+ const isDeferDataPageCallEnabled = isCardVariant && hasParameters && !this.firstChildPConnect()?.getSharedDataPageForReferenceList();
394
+
395
+ const useDropDownDataSource = (isCardVariant && (this.dropDownDataSource || isDeferDataPageCallEnabled)) || (!isCardVariant && hasParameters);
396
+
397
+ config.datasource.source = useDropDownDataSource ? this.dropDownDataSource : `@DATASOURCE ${this.refList}.pxResults`;
398
+ if (isCardVariant) {
399
+ config.imagePosition = this.imagePosition;
400
+ config.showImageDescription = this.showImageDescription;
401
+ }
402
+ } else if (type === 'AutoComplete') {
403
+ config.datasource = this.refList;
404
+ if (this.rawViewMetadata.config?.parameters) {
405
+ config.parameters = this.parameters;
250
406
  }
407
+ }
408
+ }
409
+
410
+ private buildDataReferenceConfig() {
411
+ const fieldMetaData = this.buildFieldMetaData();
412
+ const isCreateNewReferenceEnabled = this.isCreateNewRecordEnabled();
413
+
414
+ const config: any = {
415
+ selectionMode: this.selectionMode,
416
+ additionalInfo: this.refFieldMetadata?.additionalInformation ? { content: this.refFieldMetadata.additionalInformation } : undefined,
417
+ descriptors: this.selectionMode === SELECTION_MODE.SINGLE ? this.refFieldMetadata?.descriptors : null,
418
+ datasourceMetadata: fieldMetaData?.datasourceMetadata,
419
+ required: this.propsToUse.required,
420
+ visibility: this.propsToUse.visibility,
421
+ disabled: this.propsToUse.disabled,
422
+ label: this.propsToUse.label,
423
+ displayAs: this.displayAs,
424
+ readOnly: false,
425
+ dataRelationshipContext: this.dataRelationshipContext,
426
+ hideLabel: this.hideLabel,
427
+ onRecordChange: this.handleSelection.bind(this),
428
+ createNewRecord: isCreateNewReferenceEnabled ? this.getCreateNewRecordFn() : undefined,
429
+ inline: this.inline
430
+ };
431
+
432
+ if (this.selectionMode === SELECTION_MODE.SINGLE) {
433
+ config.referenceType = this.referenceType;
434
+ if (this.displayAs === 'advancedSearch') {
435
+ config.value = this.rawViewMetadata.config.value;
436
+ config.contextPage = this.rawViewMetadata.config.contextPage;
437
+ }
438
+ } else if (this.displayAs === 'advancedSearch') {
439
+ config.selectionList = this.selectionList;
440
+ config.readonlyContextList = this.rawViewMetadata.config.readonlyContextList;
441
+ }
251
442
 
252
- return this.firstChildPConnect().createComponent({
253
- type,
254
- config: {
255
- ...config,
256
- required: this.propsToUse.required,
257
- visibility: this.propsToUse.visibility,
258
- disabled: this.propsToUse.disabled,
259
- label: this.propsToUse.label,
260
- viewName: this.pConn$.getCurrentView(),
261
- parameters: this.rawViewMetadata.config.parameters,
262
- readOnly: false,
263
- localeReference: this.rawViewMetadata.config.localeReference,
264
- ...(this.selectionMode === SELECTION_MODE.SINGLE ? { referenceType: this.referenceType } : ''),
265
- dataRelationshipContext:
266
- this.rawViewMetadata.config.contextClass && this.rawViewMetadata.config.name ? this.rawViewMetadata.config.name : null,
267
- hideLabel: this.hideLabel,
268
- onRecordChange: this.handleSelection.bind(this)
443
+ return config;
444
+ }
445
+
446
+ private buildFieldMetaData() {
447
+ if (!this.isDDSourceDeferred || this.firstChildMeta.config.deferDatasource) {
448
+ return null;
449
+ }
450
+
451
+ const { text, value } = this.firstChildMeta?.config?.datasource?.fields || {};
452
+ const getProp = (prop: string) => (prop?.startsWith('@P') ? prop.substring(3) : prop);
453
+
454
+ const fieldMetaData = {
455
+ datasourceMetadata: {
456
+ ...this.refFieldMetadata,
457
+ datasource: {
458
+ name: this.rawViewMetadata.config?.referenceList,
459
+ propertyForDisplayText: getProp(text),
460
+ propertyForValue: getProp(value)
269
461
  }
270
- });
462
+ }
463
+ };
464
+
465
+ if (this.rawViewMetadata.config?.parameters) {
466
+ fieldMetaData.datasourceMetadata.datasource['parameters'] = this.parameters;
271
467
  }
468
+
469
+ return fieldMetaData;
470
+ }
471
+
472
+ private isCreateNewRecordEnabled() {
473
+ const { features } = (PCore.getEnvironmentInfo().environmentInfoObject || {}) as any;
474
+ const isEnvLP = features?.form;
475
+ const isCreateNewRefEnabledInAuthoring = this.isCreationOfNewRecordAllowedForReference ?? isEnvLP?.isCreateNewReferenceEnabled;
476
+ const isCaseRef = this.referenceType === 'Case' || this.firstChildMeta?.config?.referenceType === 'Case';
477
+ const hasAccess = PCore.getAccessPrivilege().hasCreateAccess(this.contextClass);
478
+ const isCreateNewRefEnabledForUser = isEnvLP ? isEnvLP.isCreateNewReferenceEnabled && hasAccess : isCaseRef;
479
+
480
+ return isCreateNewRefEnabledInAuthoring && isCreateNewRefEnabledForUser;
481
+ }
482
+
483
+ private getCreateNewRecordFn() {
484
+ const { disableStartingFieldsForReference = false } = PCore.getEnvironmentInfo().environmentInfoObject?.features?.form || ({} as any);
485
+ const isCaseRef = this.referenceType === 'Case' || this.firstChildMeta?.config?.referenceType === 'Case';
486
+
487
+ return () => {
488
+ if (isCaseRef) {
489
+ const startingFields: any = {};
490
+ if (!disableStartingFieldsForReference) {
491
+ startingFields.pyAddCaseContextPage = { pyID: this.pConn$.getCaseInfo().getKey()?.split(' ')?.pop() };
492
+ }
493
+ return this.pConn$.getActionsApi().createWork(this.contextClass, {
494
+ openCaseViewAfterCreate: false,
495
+ startingFields
496
+ });
497
+ }
498
+ // Assumes Data reference type otherwise
499
+ return getPConnect().getActionsApi().showDataObjectCreateView(this.contextClass);
500
+ };
272
501
  }
273
502
  }
@@ -0,0 +1,39 @@
1
+ <div class="search-form" style="display: flex; flex-direction: column">
2
+ <h5>{{ propsToUse.label }}</h5>
3
+ <div *ngIf="searchCategoriesComp === 'dropdown'">
4
+ <mat-form-field class="psdk-full-width">
5
+ <mat-select [value]="currentTabId" (selectionChange)="handleTabClick($event.value)">
6
+ <mat-option *ngFor="let tab of tabItems" [value]="tab.id">{{ tab.name }}</mat-option>
7
+ </mat-select>
8
+ </mat-form-field>
9
+ </div>
10
+ <div *ngIf="searchCategoriesComp === 'radio'">
11
+ <mat-radio-group [value]="currentTabId">
12
+ <mat-radio-button *ngFor="let tab of tabItems" [value]="tab.id" (click)="handleTabClick($event)">{{ tab.name }}</mat-radio-button>
13
+ </mat-radio-group>
14
+ </div>
15
+
16
+ <!-- Tab Content -->
17
+ <div>
18
+ <div *ngFor="let tab of tabItems; let index = index">
19
+ <div *ngIf="tab.id === currentTabId" class="psdk-sub-tabs">
20
+ <component-mapper
21
+ *ngIf="tab.content?.getPConnect() as tabPConn"
22
+ [name]="tabPConn.getComponentName()"
23
+ [props]="{ pConn$: tabPConn, formGroup$ }"
24
+ ></component-mapper>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ <!-- Dialog -->
29
+ <ng-template #dialogTemplate>
30
+ <h2 mat-dialog-title>Discard selections?</h2>
31
+ <mat-dialog-content>
32
+ <p>When changing search categories, any previous selections will be lost.</p>
33
+ </mat-dialog-content>
34
+ <mat-dialog-actions>
35
+ <button mat-stroked-button type="button" (click)="onDialogClose()">Go back</button>
36
+ <button mat-raised-button color="primary" (click)="clearSelectionAndSwitchTab()">Discard</button>
37
+ </mat-dialog-actions>
38
+ </ng-template>
39
+ </div>
@@ -0,0 +1,11 @@
1
+ .psdk-full-width {
2
+ width: 100%;
3
+ }
4
+
5
+ ::ng-deep {
6
+ mat-tab-group {
7
+ .mat-mdc-tab-header .mat-mdc-tab-label-container .mat-mdc-tab-list {
8
+ display: none;
9
+ }
10
+ }
11
+ }