@pega/angular-sdk-overrides 0.25.14 → 0.26.1

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 (28) hide show
  1. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.html +13 -1
  2. package/lib/designSystemExtension/material-details-fields/material-details-fields.component.ts +25 -1
  3. package/lib/field/check-box/check-box.component.html +1 -1
  4. package/lib/field/embedded-data-multi/embedded-data-multi.component.html +3 -0
  5. package/lib/field/embedded-data-multi/embedded-data-multi.component.scss +0 -0
  6. package/lib/field/embedded-data-multi/embedded-data-multi.component.ts +173 -0
  7. package/lib/field/group/group.component.ts +14 -2
  8. package/lib/field/multiselect/multiselect.component.ts +22 -3
  9. package/lib/field/multiselect/utils.ts +5 -3
  10. package/lib/field/object-reference/object-reference.component.html +30 -15
  11. package/lib/field/object-reference/object-reference.component.ts +816 -94
  12. package/lib/field/selectable-card/selectable-card.component.html +1 -0
  13. package/lib/field/selectable-card/selectable-card.component.ts +31 -16
  14. package/lib/infra/view/view.component.ts +4 -2
  15. package/lib/template/base/details-template-base.ts +45 -0
  16. package/lib/template/data-reference/search-form/search-form.component.ts +7 -1
  17. package/lib/template/details/details.component.ts +1 -39
  18. package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +2 -4
  19. package/lib/template/details-one-column/details-one-column.component.ts +1 -3
  20. package/lib/template/details-three-column/details-three-column.component.ts +3 -5
  21. package/lib/template/details-two-column/details-two-column.component.ts +2 -4
  22. package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +2 -4
  23. package/lib/template/field-group-template/field-group-template.component.ts +18 -4
  24. package/lib/template/simple-table/simple-table.component.ts +6 -0
  25. package/lib/template/simple-table-manual/helpers.ts +2 -2
  26. package/lib/template/simple-table-manual/simple-table-manual.component.scss +4 -2
  27. package/lib/template/simple-table-manual/simple-table-manual.component.ts +16 -16
  28. package/package.json +1 -1
@@ -4,7 +4,19 @@ import { FormGroup } from '@angular/forms';
4
4
  import { ComponentMetadataConfig } from '@pega/pcore-pconnect-typedefs/interpreter/types';
5
5
  import { AngularPConnectData, AngularPConnectService } from '@pega/angular-sdk-components';
6
6
  import { ComponentMapperComponent } from '@pega/angular-sdk-components';
7
- import { generateColumns, getDataRelationshipContextFromKey } from '@pega/angular-sdk-components';
7
+ import {
8
+ SELECTION_MODE,
9
+ SIMPLE_TABLE_MANUAL_READONLY,
10
+ generateColumns,
11
+ addCompositeKeysToConfig,
12
+ getDataRelationshipContextFromKey,
13
+ generateDetailsDisplay,
14
+ createNewRecord,
15
+ getAdditionalInfo,
16
+ camelCase
17
+ } from '@pega/angular-sdk-components';
18
+ import { componentCachePersistUtils, getMappedKey } from '@pega/angular-sdk-components';
19
+ import { DataReferenceAdvancedSearchService } from '@pega/angular-sdk-components';
8
20
  import { PConnFieldProps } from '@pega/angular-sdk-components';
9
21
 
10
22
  interface ObjectReferenceProps extends PConnFieldProps {
@@ -14,8 +26,17 @@ interface ObjectReferenceProps extends PConnFieldProps {
14
26
  mode: string;
15
27
  targetObjectType: any;
16
28
  allowAndPersistChangesInReviewMode: boolean;
29
+ allowCreatingRecords?: boolean;
30
+ linkReference?: boolean;
31
+ matchPosition?: string;
32
+ additionalFields?: any;
17
33
  }
18
34
 
35
+ /**
36
+ * Rendering modes for the template
37
+ */
38
+ type RenderMode = 'singleReferenceReadonly' | 'multiReferenceReadonly' | 'semanticLink' | 'searchAndSelect' | 'dynamicComponent';
39
+
19
40
  @Component({
20
41
  selector: 'app-object-reference',
21
42
  imports: [CommonModule, forwardRef(() => ComponentMapperComponent)],
@@ -28,9 +49,7 @@ export class ObjectReferenceComponent implements OnInit, OnDestroy {
28
49
 
29
50
  angularPConnectData: AngularPConnectData = {};
30
51
  configProps: ObjectReferenceProps;
31
- value: { [key: string]: any };
32
52
  readOnly: boolean;
33
- isForm: boolean;
34
53
  type: string;
35
54
  isDisplayModeEnabled: boolean;
36
55
  canBeChangedInReviewMode: boolean;
@@ -38,7 +57,25 @@ export class ObjectReferenceComponent implements OnInit, OnDestroy {
38
57
  newPconn: typeof PConnect;
39
58
  rawViewMetadata: ComponentMetadataConfig | undefined;
40
59
 
41
- constructor(private angularPConnect: AngularPConnectService) {}
60
+ // Rendering mode
61
+ renderMode: RenderMode = 'dynamicComponent';
62
+
63
+ // Whether the dynamic component supports @Output() onRecordChange binding
64
+ useOutputEvents = false;
65
+
66
+ // Visibility flag — prevents rendering when platform sets visibility to false
67
+ bVisible$ = true;
68
+
69
+ // For SearchAndSelect
70
+ searchSelectCacheKey: string;
71
+
72
+ // For parameterized CheckboxGroup datasource
73
+ parameterizedDataSource: any[] = [];
74
+
75
+ constructor(
76
+ private angularPConnect: AngularPConnectService,
77
+ private dataRefAdvancedSearchService: DataReferenceAdvancedSearchService
78
+ ) {}
42
79
 
43
80
  ngOnInit() {
44
81
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
@@ -63,85 +100,262 @@ export class ObjectReferenceComponent implements OnInit, OnDestroy {
63
100
  }
64
101
 
65
102
  updateSelf() {
103
+ this.useOutputEvents = false;
66
104
  this.configProps = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as ObjectReferenceProps;
105
+
106
+ const { visibility = true } = this.configProps;
107
+ this.bVisible$ = visibility !== false;
67
108
  const {
68
- displayMode,
69
109
  allowAndPersistChangesInReviewMode: editableInReview = false,
110
+ allowCreatingRecords,
70
111
  targetObjectType,
71
- mode,
112
+ mode = '',
72
113
  parameters,
73
- hideLabel,
74
- inline,
75
- showPromotedFilters
114
+ hideLabel = false,
115
+ inline = false,
116
+ showPromotedFilters = false,
117
+ linkReference,
118
+ matchPosition = 'contains'
76
119
  } = this.configProps;
77
120
 
78
- const referenceType: string = targetObjectType === 'case' ? 'Case' : 'Data';
121
+ let displayMode = this.configProps.displayMode ?? '';
122
+
123
+ const referenceType: string = targetObjectType?.toLowerCase() === 'case' ? 'Case' : 'Data';
79
124
  this.rawViewMetadata = this.pConn$.getRawMetadata();
80
- const refFieldMetadata = this.pConn$.getFieldMetadata(this.rawViewMetadata?.config?.value?.split('.', 2)[1] ?? '');
81
- const propsToUse = { ...this.pConn$.getInheritedProps(), ...this.configProps };
125
+ const rawConfig = this.rawViewMetadata?.config as any;
126
+
127
+ const refFieldMetadata = this.pConn$.getFieldMetadata(
128
+ rawConfig?.mode === SELECTION_MODE.SINGLE ? rawConfig?.value?.split('.', 2)[1] : rawConfig?.pagelistValue?.substring(4)
129
+ );
130
+
131
+ const propsToUse: any = { ...this.pConn$.getInheritedProps(), ...this.configProps };
132
+ if (!propsToUse.label) {
133
+ propsToUse.label = this.configProps.label;
134
+ }
135
+
136
+ this.normalizeComboboxType(rawConfig, mode);
137
+
138
+ if (rawConfig?.parameters && ['CheckboxGroup'].includes(rawConfig.componentType)) {
139
+ this.loadParameterizedDataSource(rawConfig, parameters ?? {});
140
+ }
141
+
142
+ displayMode = this.resolveDisplayMode(rawConfig, displayMode, mode);
82
143
 
83
144
  this.isDisplayModeEnabled = displayMode === 'DISPLAY_ONLY';
84
- this.type = this.getComponentType();
85
- this.canBeChangedInReviewMode = editableInReview && ['Autocomplete', 'Dropdown'].includes(this.type);
86
-
87
- if (this.type === 'SemanticLink' && !this.canBeChangedInReviewMode) {
88
- const config: any = {
89
- ...this.rawViewMetadata?.config,
90
- primaryField: (this.rawViewMetadata?.config as any).displayField,
91
- caseClass: (this.rawViewMetadata?.config as any).targetObjectClass,
92
- text: (this.rawViewMetadata?.config as any).displayField,
93
- caseID: (this.rawViewMetadata?.config as any).value,
94
- contextPage: `@P .${(this.rawViewMetadata?.config as any).displayField ? getDataRelationshipContextFromKey((this.rawViewMetadata?.config as any).displayField) : null}`,
95
- resourceParams: { workID: (this.rawViewMetadata?.config as any).value },
96
- resourcePayload: { caseClassName: (this.rawViewMetadata?.config as any).targetObjectClass }
97
- };
98
- this.createSemanticLinkPConnect(config, displayMode ?? '', referenceType, hideLabel);
145
+ this.type = rawConfig?.componentType;
146
+ this.canBeChangedInReviewMode = editableInReview && ['AutoComplete', 'Dropdown'].includes(this.type);
147
+
148
+ if (this.handleReadOnlyMode(rawConfig, mode)) {
99
149
  return;
100
150
  }
101
151
 
102
- if (this.type !== 'SemanticLink' && !this.isDisplayModeEnabled) {
103
- const config: any = { ...this.rawViewMetadata?.config };
104
- generateColumns(config, this.pConn$, referenceType);
105
- config.deferDatasource = true;
106
- config.listType = 'datapage';
107
- if (['Dropdown', 'AutoComplete'].includes(this.type) && !config.placeholder) {
108
- config.placeholder = '@L Select...';
109
- }
110
- config.showPromotedFilters = showPromotedFilters;
111
- if (!this.canBeChangedInReviewMode) {
112
- config.displayMode = displayMode;
152
+ this.routeToEditableComponent(
153
+ rawConfig,
154
+ mode,
155
+ refFieldMetadata,
156
+ propsToUse,
157
+ referenceType,
158
+ displayMode,
159
+ parameters,
160
+ hideLabel,
161
+ inline,
162
+ showPromotedFilters,
163
+ matchPosition,
164
+ linkReference,
165
+ targetObjectType,
166
+ allowCreatingRecords
167
+ );
168
+ }
169
+
170
+ private normalizeComboboxType(rawConfig: any, mode: string): void {
171
+ if (rawConfig?.componentType === 'Combobox') {
172
+ rawConfig.componentType = mode === SELECTION_MODE.MULTI ? 'Multiselect' : 'AutoComplete';
173
+ }
174
+ }
175
+
176
+ private resolveDisplayMode(rawConfig: any, displayMode: string, mode: string): string {
177
+ if (displayMode === 'DISPLAY_ONLY' || !this.configProps.readOnly) {
178
+ return displayMode;
179
+ }
180
+ if (rawConfig?.componentType === 'Multiselect') {
181
+ rawConfig.componentType = 'SemanticLink';
182
+ return displayMode;
183
+ }
184
+ if (mode === 'readonly-single') {
185
+ return this.configProps.displayMode ?? displayMode;
186
+ }
187
+ return 'DISPLAY_ONLY';
188
+ }
189
+
190
+ private handleReadOnlyMode(rawConfig: any, mode: string): boolean {
191
+ const isReadOnlyOrSemanticLink = (this.configProps.readOnly || this.type === 'SemanticLink') && !this.canBeChangedInReviewMode;
192
+ if (isReadOnlyOrSemanticLink) {
193
+ if (mode !== 'readonly-multi') {
194
+ this.buildSingleReferenceReadonly(rawConfig);
195
+ } else {
196
+ this.buildMultiReferenceReadonly();
113
197
  }
114
- config.parameters = parameters;
198
+ return true;
199
+ }
200
+ if (this.isDisplayModeEnabled && !this.canBeChangedInReviewMode) {
201
+ this.buildSingleReferenceReadonly(rawConfig);
202
+ return true;
203
+ }
204
+ return false;
205
+ }
115
206
 
116
- this.createOtherComponentPConnect(config, propsToUse, mode, refFieldMetadata, referenceType, hideLabel, inline);
207
+ private resolveCreatePermissions(rawConfig: any, allowCreatingRecords: boolean | undefined) {
208
+ const { disableStartingFieldsForReference = false } = (PCore as any).getEnvironmentInfo().environmentInfoObject?.features?.form || {};
209
+ const contextClass = rawConfig.targetObjectClass;
210
+ const formFeaturesAvailable = (PCore as any).getEnvironmentInfo().environmentInfoObject?.features?.form;
211
+ const createAuthoringEnabled = allowCreatingRecords ?? formFeaturesAvailable?.isCreateNewReferenceEnabled;
212
+ const userHasCreateAccess = formFeaturesAvailable
213
+ ? formFeaturesAvailable.isCreateNewReferenceEnabled && PCore.getAccessPrivilege().hasCreateAccess(contextClass)
214
+ : PCore.getAccessPrivilege().hasCreateAccess(contextClass);
215
+ return {
216
+ isCreateNewReferenceEnabled: createAuthoringEnabled && userHasCreateAccess,
217
+ disableStartingFieldsForReference,
218
+ contextClass
219
+ };
220
+ }
221
+
222
+ private routeToEditableComponent(
223
+ rawConfig: any,
224
+ mode: string,
225
+ refFieldMetadata: any,
226
+ propsToUse: any,
227
+ referenceType: string,
228
+ displayMode: string,
229
+ parameters: any,
230
+ hideLabel: boolean,
231
+ inline: boolean,
232
+ showPromotedFilters: boolean,
233
+ matchPosition: string,
234
+ linkReference: any,
235
+ targetObjectType: any,
236
+ allowCreatingRecords: boolean | undefined
237
+ ): void {
238
+ if (this.type === 'EmbeddedInsightTable') {
239
+ this.buildEmbeddedInsightTableChild(rawConfig, referenceType, propsToUse);
240
+ this.renderMode = 'dynamicComponent';
241
+ return;
242
+ }
243
+ if (this.type === 'Cards') {
244
+ this.buildCardsChild(rawConfig);
245
+ this.renderMode = 'dynamicComponent';
246
+ return;
117
247
  }
248
+ if (this.type === 'Map') {
249
+ this.buildMapChild(rawConfig, targetObjectType);
250
+ this.renderMode = 'dynamicComponent';
251
+ return;
252
+ }
253
+ if (this.type === 'CheckboxGroup') {
254
+ this.buildCheckboxGroupChild(rawConfig, mode, refFieldMetadata, propsToUse, hideLabel);
255
+ this.renderMode = 'dynamicComponent';
256
+ return;
257
+ }
258
+ if (this.type === 'Table' || this.type === 'SimpleTable') {
259
+ this.buildTableChild(this.type, rawConfig, mode, referenceType, propsToUse);
260
+ this.renderMode = 'dynamicComponent';
261
+ return;
262
+ }
263
+
264
+ generateColumns(rawConfig, this.pConn$, referenceType);
265
+ addCompositeKeysToConfig(rawConfig, this.pConn$);
266
+ rawConfig.deferDatasource = true;
267
+ rawConfig.listType = 'datapage';
268
+ if (['Dropdown', 'AutoComplete'].includes(this.type) && !rawConfig.placeholder) {
269
+ rawConfig.placeholder = '@L Select...';
270
+ }
271
+ rawConfig.showPromotedFilters = showPromotedFilters;
272
+ if (!this.canBeChangedInReviewMode) {
273
+ rawConfig.displayMode = displayMode;
274
+ }
275
+
276
+ const fieldMetaData = this.buildFieldMetaData(rawConfig, parameters);
277
+ const { isCreateNewReferenceEnabled, disableStartingFieldsForReference, contextClass } = this.resolveCreatePermissions(
278
+ rawConfig,
279
+ allowCreatingRecords
280
+ );
281
+
282
+ if (this.type === 'SearchAndSelect') {
283
+ this.buildSearchAndSelectChild(
284
+ rawConfig,
285
+ refFieldMetadata,
286
+ propsToUse,
287
+ referenceType,
288
+ hideLabel,
289
+ inline,
290
+ matchPosition,
291
+ isCreateNewReferenceEnabled,
292
+ disableStartingFieldsForReference
293
+ );
294
+ this.renderMode = 'searchAndSelect';
295
+ return;
296
+ }
297
+ if (this.type === 'Multiselect') {
298
+ this.buildMultiselectChild(
299
+ rawConfig,
300
+ mode,
301
+ refFieldMetadata,
302
+ fieldMetaData,
303
+ propsToUse,
304
+ referenceType,
305
+ hideLabel,
306
+ inline,
307
+ isCreateNewReferenceEnabled,
308
+ disableStartingFieldsForReference,
309
+ contextClass
310
+ );
311
+ this.renderMode = 'dynamicComponent';
312
+ return;
313
+ }
314
+ this.buildDefaultChild(
315
+ rawConfig,
316
+ mode,
317
+ refFieldMetadata,
318
+ fieldMetaData,
319
+ propsToUse,
320
+ referenceType,
321
+ hideLabel,
322
+ inline,
323
+ isCreateNewReferenceEnabled,
324
+ disableStartingFieldsForReference,
325
+ contextClass,
326
+ linkReference
327
+ );
328
+ this.renderMode = 'dynamicComponent';
118
329
  }
119
330
 
120
- onRecordChange(value) {
121
- const caseKey = this.pConn$.getCaseInfo().getKey() ?? '';
122
- const refreshOptions = { autoDetectRefresh: true, propertyName: '' };
123
- refreshOptions.propertyName = this.rawViewMetadata?.config?.value ?? '';
331
+ onRecordChange = event => {
332
+ const pConn = this.pConn$;
333
+ const caseKey = pConn.getCaseInfo().getKey() ?? '';
334
+ const refreshOptions: any = { autoDetectRefresh: true, propertyName: '' };
335
+ refreshOptions.propertyName = (this.rawViewMetadata?.config as any)?.value ?? '';
336
+
337
+ const { allowImplicitRefresh } = (PCore as any).getFieldDefaultUtils().fieldDefaults.DataReference || {};
124
338
 
125
- if (!this.canBeChangedInReviewMode || !this.pConn$.getValue('__currentPageTabViewName')) {
126
- const pgRef = this.pConn$.getPageReference().replace('caseInfo.content', '') ?? '';
339
+ if (!this.canBeChangedInReviewMode || !pConn.getValue('__currentPageTabViewName') || allowImplicitRefresh) {
340
+ const pgRef = pConn.getPageReference().replace('caseInfo.content', '') ?? '';
127
341
  const viewName = this.rawViewMetadata?.name;
128
342
  if (viewName && viewName.length > 0) {
129
- getPConnect().getActionsApi().refreshCaseView(caseKey, viewName, pgRef, refreshOptions);
343
+ pConn.getActionsApi().refreshCaseView(caseKey, viewName, pgRef, refreshOptions);
130
344
  }
131
345
  }
132
346
 
133
- const propValue = value;
347
+ const propValue = event?.id || event?.target?.value || event;
134
348
  const propName =
135
- this.rawViewMetadata?.type === 'SimpleTableSelect' && this.configProps.mode === 'multi'
136
- ? PCore.getAnnotationUtils().getPropertyName(this.rawViewMetadata?.config?.selectionList ?? '')
137
- : PCore.getAnnotationUtils().getPropertyName(this.rawViewMetadata?.config?.value ?? '');
349
+ this.rawViewMetadata?.type === 'SimpleTableSelect' && this.configProps.mode === SELECTION_MODE.MULTI
350
+ ? PCore.getAnnotationUtils().getPropertyName((this.rawViewMetadata?.config as any)?.selectionList ?? '')
351
+ : PCore.getAnnotationUtils().getPropertyName((this.rawViewMetadata?.config as any)?.value ?? '');
138
352
 
139
353
  if (propValue && this.canBeChangedInReviewMode && this.isDisplayModeEnabled) {
140
354
  PCore.getCaseUtils()
141
355
  .getCaseEditLock(caseKey, '')
142
356
  .then(caseResponse => {
143
- const pageTokens = this.pConn$.getPageReference().replace('caseInfo.content', '').split('.');
144
- let curr = {};
357
+ const pageTokens = pConn.getPageReference().replace('caseInfo.content', '').split('.');
358
+ let curr: any = {};
145
359
  const commitData = curr;
146
360
 
147
361
  pageTokens?.forEach(el => {
@@ -151,7 +365,6 @@ export class ObjectReferenceComponent implements OnInit, OnDestroy {
151
365
  }
152
366
  });
153
367
 
154
- // expecting format like {Customer: {pyID:"C-100"}}
155
368
  const propArr = propName.split('.');
156
369
  propArr.forEach((element, idx) => {
157
370
  if (idx + 1 === propArr.length) {
@@ -163,75 +376,584 @@ export class ObjectReferenceComponent implements OnInit, OnDestroy {
163
376
  });
164
377
 
165
378
  PCore.getCaseUtils()
166
- .updateCaseEditFieldsData(caseKey, { [caseKey]: commitData }, caseResponse.headers.etag, this.pConn$?.getContextName() ?? '')
379
+ .updateCaseEditFieldsData(caseKey, { [caseKey]: commitData }, caseResponse.headers.etag, pConn.getContextName() ?? '')
167
380
  .then(response => {
168
- PCore.getContainerUtils().updateParentLastUpdateTime(this.pConn$.getContextName() ?? '', response.data.data.caseInfo.lastUpdateTime);
169
- PCore.getContainerUtils().updateRelatedContextEtag(this.pConn$.getContextName() ?? '', response.headers.etag);
381
+ PCore.getContainerUtils().updateParentLastUpdateTime(pConn.getContextName() ?? '', (response.data as any).data.caseInfo.lastUpdateTime);
382
+ PCore.getContainerUtils().updateRelatedContextEtag(pConn.getContextName() ?? '', response.headers.etag);
170
383
  });
171
384
  });
172
385
  }
386
+ };
387
+
388
+ private loadParameterizedDataSource(rawConfig: any, parameters: any) {
389
+ const { value, key, text } = {
390
+ key: `@P ${rawConfig.selectionKey}`,
391
+ text: `@P ${rawConfig.displayField}`,
392
+ value: `@P ${rawConfig.selectionKey}`
393
+ };
394
+ const refList = rawConfig.referenceList;
395
+ (PCore as any)
396
+ .getDataApiUtils()
397
+ .getData(refList, { dataViewParameters: parameters })
398
+ .then((res: any) => {
399
+ if (res.data.data !== null) {
400
+ this.parameterizedDataSource = res.data.data
401
+ .map((listItem: any) => ({
402
+ key: listItem[key.split(' .', 2)[1]],
403
+ text: listItem[text.split(' .', 2)[1]],
404
+ value: listItem[value.split(' .', 2)[1]]
405
+ }))
406
+ .filter((item: any) => item.key);
407
+ } else {
408
+ this.parameterizedDataSource = [];
409
+ }
410
+ })
411
+ .catch(() => {
412
+ this.parameterizedDataSource = [];
413
+ });
414
+ }
415
+
416
+ private buildFieldMetaData(rawConfig: any, parameters: any) {
417
+ const fieldMetaData: any = {
418
+ datasourceMetadata: { datasource: { parameters: {} } }
419
+ };
420
+ if (rawConfig.parameters) {
421
+ fieldMetaData.datasourceMetadata.datasource.parameters = parameters;
422
+ }
423
+ fieldMetaData.datasourceMetadata.datasource.propertyForDisplayText = rawConfig.datasource?.fields?.text?.startsWith('@P')
424
+ ? rawConfig.datasource.fields.text.substring(3)
425
+ : rawConfig.datasource?.fields?.text;
426
+ fieldMetaData.datasourceMetadata.datasource.propertyForValue = rawConfig.datasource?.fields?.value?.startsWith('@P')
427
+ ? rawConfig.datasource.fields.value.substring(3)
428
+ : rawConfig.datasource?.fields?.value;
429
+ fieldMetaData.datasourceMetadata.datasource.name = rawConfig.referenceList;
430
+ return fieldMetaData;
173
431
  }
174
432
 
175
- private getComponentType(): string {
176
- // componentType is not defined in ComponentMetadataConfig type so using any
177
- return (this.rawViewMetadata?.config as any)?.componentType;
433
+ private buildSingleReferenceReadonly(rawConfig: any) {
434
+ // SingleReferenceReadonly is rendered via component-mapper with pConn$ which internally resolves config
435
+ // Setting properties needed by the child component on config
436
+ rawConfig.primaryField = rawConfig.displayField;
437
+ rawConfig.text = rawConfig.displayField;
438
+ rawConfig.caseClass = rawConfig.targetObjectClass;
439
+ rawConfig.caseID = rawConfig.value;
440
+ rawConfig.contextPage = `@P .${rawConfig.displayField ? getDataRelationshipContextFromKey(rawConfig.displayField) : null}`;
441
+ this.renderMode = 'singleReferenceReadonly';
178
442
  }
179
443
 
180
- private createSemanticLinkPConnect(config: any, displayMode: string, referenceType: string, hideLabel: boolean) {
181
- const semanticLinkConfig = {
182
- ...config,
183
- displayMode,
184
- referenceType,
185
- hideLabel,
186
- dataRelationshipContext: config.displayField ? getDataRelationshipContextFromKey(config.displayField) : null
444
+ private buildMultiReferenceReadonly() {
445
+ this.renderMode = 'multiReferenceReadonly';
446
+ }
447
+
448
+ private buildCardsChild(rawConfig: any) {
449
+ const selectionMode = rawConfig.mode;
450
+ const datasourceKeyField =
451
+ rawConfig.selectionKey || (rawConfig.isCalculated ? '.pzInsKey' : `.${rawConfig.value.trim().split('.').pop()?.trim()}`);
452
+
453
+ const componentMeta = {
454
+ type: selectionMode === 'single' ? 'RadioButtons' : 'Checkbox',
455
+ config: {
456
+ ...rawConfig,
457
+ label: rawConfig.label,
458
+ value: selectionMode === 'single' ? rawConfig.value : undefined,
459
+ referenceList: rawConfig.referenceList,
460
+ contextClass: rawConfig.targetObjectClass,
461
+ referenceType: rawConfig.targetObjectType === 'case' ? 'Case' : 'Data',
462
+ readonlyContextList: selectionMode.includes('multi') ? rawConfig.pagelistValue : undefined,
463
+ ...(selectionMode.includes('multi')
464
+ ? {
465
+ selectionList: rawConfig.pagelistValue.substring(3),
466
+ selectionKey: rawConfig.selectionKey || (rawConfig.isCalculated ? '.pzInsKey' : undefined)
467
+ }
468
+ : { selectionList: rawConfig.contextPage?.substring(3) }),
469
+ selectionMode: selectionMode.includes('multi') ? 'multi' : undefined,
470
+ displayMode: rawConfig.isCalculated ? 'DISPLAY_ONLY' : undefined,
471
+ renderMode: !rawConfig.isCalculated && rawConfig.mode === 'readonly-multi' ? 'ReadOnly' : undefined,
472
+ variant: 'card',
473
+ inlineDisplay: rawConfig.inlineDisplay ?? true,
474
+ hideFieldLabels: rawConfig.hideFieldLabels,
475
+ presets: [
476
+ {
477
+ children: [
478
+ {
479
+ children: rawConfig.secondaryFields,
480
+ name: 'AdditionalDetails',
481
+ type: 'Region'
482
+ }
483
+ ],
484
+ config: {},
485
+ id: 'P_',
486
+ label: '',
487
+ name: 'presets',
488
+ template: 'Cards'
489
+ }
490
+ ],
491
+ datasource: {
492
+ fields: {
493
+ key: `@P ${datasourceKeyField}`,
494
+ text:
495
+ typeof rawConfig.displayField === 'string' && rawConfig.displayField.trim()
496
+ ? `@P .${rawConfig.displayField.trim().split('.').pop()?.trim()}`
497
+ : `@P ${datasourceKeyField}`,
498
+ value: `@P ${datasourceKeyField}`
499
+ },
500
+ filterDownloadedFields: true,
501
+ source: `@DATASOURCE ${rawConfig.referenceList}.pxResults`
502
+ },
503
+ displayAs: 'cards',
504
+ hideLabel: rawConfig.hideLabel,
505
+ imagePosition: rawConfig.imagePosition,
506
+ image: rawConfig.image,
507
+ imageSize: rawConfig.imageSize,
508
+ showImageDescription: rawConfig.showImageDescription,
509
+ imageDescription: rawConfig.imageDescription,
510
+ required: rawConfig.required,
511
+ readOnly: !!rawConfig.isCalculated,
512
+ disabled: rawConfig.disabled,
513
+ labelOption: rawConfig.labelOption,
514
+ primaryField: rawConfig.displayField || datasourceKeyField,
515
+ dataRelationshipContext: rawConfig.displayField ? getDataRelationshipContextFromKey(rawConfig.displayField) : null
516
+ }
187
517
  };
188
518
 
189
- const component = this.pConn$.createComponent({ type: 'SemanticLink', config: semanticLinkConfig }, '', 0, {});
519
+ const component = this.pConn$.createComponent(componentMeta as any, '', 0, {});
520
+ this.newComponentName = component?.getPConnect().getComponentName();
190
521
  this.newPconn = component?.getPConnect();
522
+
523
+ // For multi-mode, pre-set the reference list on the child PConnect so that
524
+ // getListActions() resolves the correct path even if the child's updateSelf()
525
+ // doesn't re-run after a setInput update.
526
+ if (selectionMode.includes('multi') && this.newPconn) {
527
+ const selectionList = rawConfig.pagelistValue.substring(3);
528
+ this.newPconn.setReferenceList(selectionList);
529
+ }
191
530
  }
192
531
 
193
- private createOtherComponentPConnect(
194
- config: any,
195
- propsToUse: any,
196
- mode: string,
532
+ private buildMapChild(rawConfig: any, targetObjectType: any) {
533
+ const displayField = getDataRelationshipContextFromKey(rawConfig.displayField);
534
+ const displayFieldMetadata = this.pConn$.getFieldMetadata(displayField);
535
+
536
+ const componentMeta = {
537
+ type: 'MapView',
538
+ config: {
539
+ contextClass: rawConfig.targetObjectClass,
540
+ displayAs: 'map',
541
+ hideLabel: false,
542
+ label: rawConfig.label,
543
+ referenceType: targetObjectType?.toLowerCase() === 'case' ? 'Case' : 'Data',
544
+ localeReference: rawConfig.localeReference,
545
+ classId: SIMPLE_TABLE_MANUAL_READONLY,
546
+ detailsDisplay: generateDetailsDisplay({
547
+ isCaseType: targetObjectType?.toLowerCase() === 'case',
548
+ fieldForDisplay: displayField,
549
+ fieldNameForKey: rawConfig.selectionKey,
550
+ displayFieldMetadata
551
+ }),
552
+ presets: [
553
+ {
554
+ children: [
555
+ {
556
+ children: [],
557
+ name: 'Columns',
558
+ type: 'Region'
559
+ },
560
+ {
561
+ children: rawConfig.secondaryFields,
562
+ name: 'AdditionalDetails',
563
+ type: 'Region'
564
+ }
565
+ ],
566
+ config: {},
567
+ id: 'P_',
568
+ label: '',
569
+ name: 'presets',
570
+ locationDetails: rawConfig.locationDetails,
571
+ template: 'Map'
572
+ }
573
+ ],
574
+ readonlyContextList: rawConfig.pagelistValue,
575
+ referenceList: rawConfig.pagelistValue,
576
+ renderMode: 'ReadOnly',
577
+ selectionMode: 'multi',
578
+ required: rawConfig.required,
579
+ readOnly: false,
580
+ disabled: rawConfig.disabled,
581
+ visibility: rawConfig.visibility
582
+ }
583
+ };
584
+
585
+ const component = this.pConn$.createComponent(componentMeta as any, '', 0, {});
586
+ this.newComponentName = component?.getPConnect().getComponentName();
587
+ this.newPconn = component?.getPConnect();
588
+ }
589
+
590
+ private buildCheckboxGroupChild(rawConfig: any, mode: string, refFieldMetadata: any, propsToUse: any, hideLabel: boolean) {
591
+ const displayField = rawConfig.displayField;
592
+ const primaryField = displayField?.startsWith('@P') ? displayField?.substring(3) : displayField;
593
+ const readOnly = !(mode === 'multi' || mode === 'single');
594
+ const pageListValueFromConfig = rawConfig.pagelistValue;
595
+ const selectionList = pageListValueFromConfig?.startsWith('@P') ? pageListValueFromConfig?.substring(3) : pageListValueFromConfig;
596
+
597
+ const component = this.pConn$.createComponent(
598
+ {
599
+ type: 'Checkbox',
600
+ config: {
601
+ ...rawConfig,
602
+ contextClass: rawConfig.targetObjectClass,
603
+ datasource: {
604
+ fields: {
605
+ key: `@P ${rawConfig.selectionKey}`,
606
+ text: `@P ${rawConfig.displayField}`,
607
+ value: `@P ${rawConfig.selectionKey}`
608
+ },
609
+ source: !rawConfig.parameters ? `@DATASOURCE ${rawConfig.referenceList}.pxResults` : this.parameterizedDataSource
610
+ },
611
+ descriptors: mode === SELECTION_MODE.SINGLE ? refFieldMetadata?.descriptors : null,
612
+ displayAs: 'checkboxgroup',
613
+ hideLabel,
614
+ inline: rawConfig.inline ?? false,
615
+ label: propsToUse.label,
616
+ primaryField,
617
+ readOnly,
618
+ readonlyContextList: pageListValueFromConfig,
619
+ referenceType: rawConfig.targetObjectType,
620
+ selectionKey: rawConfig.selectionKey,
621
+ selectionList,
622
+ selectionMode: mode,
623
+ disabled: propsToUse.disabled,
624
+ required: propsToUse.required,
625
+ visibility: propsToUse.visibility,
626
+ additionalInfo: refFieldMetadata?.additionalInformation ? { content: refFieldMetadata.additionalInformation } : undefined
627
+ }
628
+ } as any,
629
+ '',
630
+ 0,
631
+ {}
632
+ );
633
+ this.newComponentName = component?.getPConnect().getComponentName();
634
+ this.newPconn = component?.getPConnect();
635
+
636
+ // For multi-mode, pre-set the reference list on the child PConnect so that
637
+ // getListActions() resolves the correct path on every re-render.
638
+ if (mode === 'multi' && this.newPconn && selectionList) {
639
+ this.newPconn.setReferenceList(selectionList);
640
+ }
641
+ }
642
+
643
+ private buildTableChild(type: string, rawConfig: any, mode: string, referenceType: string, propsToUse: any) {
644
+ const presets = [
645
+ {
646
+ children: [{ children: rawConfig.columns, name: 'Columns', type: 'Region' }],
647
+ config: { filterExpression: rawConfig.filterExpression },
648
+ id: 'P_',
649
+ label: '',
650
+ name: 'presets',
651
+ template: 'Table'
652
+ }
653
+ ];
654
+ const tableDisplayAs = camelCase(type);
655
+
656
+ let componentConfig: any;
657
+
658
+ if (mode === 'readonly-multi') {
659
+ componentConfig = {
660
+ type: 'SimpleTableSelect',
661
+ config: {
662
+ contextClass: rawConfig.targetObjectClass,
663
+ defaultRowHeight: rawConfig.defaultRowHeight,
664
+ displayAs: tableDisplayAs,
665
+ hideLabel: false,
666
+ label: propsToUse.label,
667
+ localeReference: rawConfig.localeReference,
668
+ presets,
669
+ readOnly: true,
670
+ readonlyContextList: rawConfig.pagelistValue,
671
+ referenceList: rawConfig.pagelistValue,
672
+ referenceType,
673
+ renderMode: 'ReadOnly',
674
+ rowHeader: rawConfig.rowHeader,
675
+ selectionMode: 'multi',
676
+ required: propsToUse.required,
677
+ visibility: propsToUse.visibility,
678
+ disabled: propsToUse.disabled,
679
+ toggleFieldVisibility: rawConfig.toggleFieldVisibility
680
+ }
681
+ };
682
+ } else if (mode === 'single' || mode === 'multi') {
683
+ const contextPageFromConfig = mode === 'single' ? rawConfig.contextPage : rawConfig.pagelistValue;
684
+ const contextPageValue = contextPageFromConfig?.startsWith('@P') ? contextPageFromConfig?.substring(3) : contextPageFromConfig;
685
+
686
+ componentConfig = {
687
+ type: 'SimpleTableSelect',
688
+ config: {
689
+ ...(mode === 'single' ? { selectionKey: rawConfig.value, value: rawConfig.value } : {}),
690
+ dataRelationshipContext: contextPageValue,
691
+ defaultRowHeight: rawConfig.defaultRowHeight,
692
+ displayAs: tableDisplayAs,
693
+ hideLabel: false,
694
+ inline: false,
695
+ label: propsToUse.label,
696
+ localeReference: rawConfig.localeReference,
697
+ presets,
698
+ readOnly: false,
699
+ referenceList: rawConfig.referenceList,
700
+ referenceType,
701
+ rowHeader: rawConfig.rowHeader,
702
+ parameters: rawConfig.parameters,
703
+ selectionList: contextPageValue,
704
+ selectionMode: mode,
705
+ showPromotedFilters: false,
706
+ required: propsToUse.required,
707
+ visibility: propsToUse.visibility,
708
+ disabled: propsToUse.disabled,
709
+ toggleFieldVisibility: rawConfig.toggleFieldVisibility
710
+ }
711
+ };
712
+ }
713
+
714
+ if (componentConfig) {
715
+ const component = this.pConn$.createComponent(componentConfig, '', 0, {});
716
+ this.newComponentName = component?.getPConnect().getComponentName();
717
+ this.newPconn = component?.getPConnect();
718
+ }
719
+ }
720
+
721
+ private buildSearchAndSelectChild(
722
+ rawConfig: any,
197
723
  refFieldMetadata: any,
724
+ propsToUse: any,
198
725
  referenceType: string,
199
726
  hideLabel: boolean,
200
- inline: boolean
727
+ inline: boolean,
728
+ matchPosition: string,
729
+ isCreateNewReferenceEnabled: boolean,
730
+ disableStartingFieldsForReference: boolean
201
731
  ) {
202
- const fieldMetaData = {
203
- datasourceMetadata: {
204
- datasource: {
205
- parameters: config.parameters ?? {},
206
- propertyForDisplayText: config.datasource?.fields?.text?.substring(3) ?? config.datasource?.fields?.text,
207
- propertyForValue: config.datasource?.fields?.value?.substring(3) ?? config.datasource?.fields?.value,
208
- name: config.referenceList ?? ''
209
- }
210
- }
211
- };
732
+ const selectionMode = rawConfig.mode;
733
+ const firstChildMeta = structuredClone((this.rawViewMetadata as any)?.children?.[0]);
734
+ const pyID = getMappedKey('pyID');
735
+ const additionalInfo = refFieldMetadata?.additionalInformation ? { content: refFieldMetadata.additionalInformation } : undefined;
736
+ const pageListValueFromConfig = rawConfig.pagelistValue;
737
+ const selectionList = pageListValueFromConfig?.startsWith('@P') ? pageListValueFromConfig?.substring(3) : pageListValueFromConfig;
738
+ const contextPageFromConfig = rawConfig.contextPage;
739
+ const unannotatedContextPageFromConfig = contextPageFromConfig?.startsWith('@P') ? contextPageFromConfig?.substring(3) : contextPageFromConfig;
740
+ const name = (selectionList ?? unannotatedContextPageFromConfig)?.replace(/^\./, '');
212
741
 
213
- const componentConfig = {
214
- ...config,
215
- descriptors: mode === 'single' ? refFieldMetadata?.descriptors : null,
216
- datasourceMetadata: fieldMetaData.datasourceMetadata,
742
+ const dataReferenceConfigToChild: any = {
743
+ selectionMode,
744
+ additionalInfo,
745
+ descriptors: selectionMode === SELECTION_MODE.SINGLE ? refFieldMetadata?.descriptors : null,
217
746
  required: propsToUse.required,
218
747
  visibility: propsToUse.visibility,
219
748
  disabled: propsToUse.disabled,
220
749
  label: propsToUse.label,
750
+ displayAs: 'advancedSearch',
221
751
  readOnly: false,
222
- ...(mode === 'single' && { referenceType }),
223
- contextClass: config.targetObjectClass,
224
- primaryField: config.displayField,
225
- dataRelationshipContext: config.displayField ? getDataRelationshipContextFromKey(config.displayField) : null,
752
+ matchPosition,
753
+ ...(selectionMode === SELECTION_MODE.SINGLE && { referenceType }),
754
+ ...(selectionMode === SELECTION_MODE.SINGLE && {
755
+ value: rawConfig.value,
756
+ contextPage: contextPageFromConfig
757
+ }),
758
+ ...(selectionMode === SELECTION_MODE.MULTI && {
759
+ selectionList,
760
+ readonlyContextList: pageListValueFromConfig,
761
+ referenceType: referenceType || firstChildMeta?.config?.referenceType
762
+ }),
763
+ dataRelationshipContext: rawConfig.targetObjectClass && name ? name : null,
226
764
  hideLabel,
765
+ onRecordChange: this.onRecordChange,
766
+ getAdditionalInfo: getAdditionalInfo.bind(this, this.pConn$, rawConfig?.authorContext),
767
+ createNewRecord: isCreateNewReferenceEnabled ? createNewRecord : undefined,
227
768
  inline
228
769
  };
229
770
 
230
- const component = this.pConn$.createComponent({ type: this.type, config: componentConfig }, '', 0, {});
771
+ this.searchSelectCacheKey = componentCachePersistUtils.getComponentStateKey(this.pConn$, name);
772
+
773
+ // Set advanced search context via service
774
+ this.dataRefAdvancedSearchService.setConfig({
775
+ dataReferenceConfigToChild,
776
+ isCreateNewReferenceEnabled,
777
+ disableStartingFieldsForReference,
778
+ pyID,
779
+ searchSelectKey: this.searchSelectCacheKey
780
+ });
781
+ }
782
+
783
+ private buildMultiselectChild(
784
+ rawConfig: any,
785
+ mode: string,
786
+ refFieldMetadata: any,
787
+ fieldMetaData: any,
788
+ propsToUse: any,
789
+ referenceType: string,
790
+ hideLabel: boolean,
791
+ inline: boolean,
792
+ isCreateNewReferenceEnabled: boolean,
793
+ disableStartingFieldsForReference: boolean,
794
+ contextClass: string
795
+ ) {
796
+ const component = this.pConn$.createComponent(
797
+ {
798
+ type: 'Multiselect',
799
+ config: {
800
+ ...rawConfig,
801
+ descriptors: refFieldMetadata?.descriptors,
802
+ datasourceMetadata: fieldMetaData?.datasourceMetadata,
803
+ selectionList: rawConfig.pagelistValue?.substring(3),
804
+ readonlyContextList: rawConfig.pagelistValue,
805
+ selectionKey: rawConfig.selectionKey,
806
+ selectionMode: SELECTION_MODE.MULTI,
807
+ required: propsToUse.required,
808
+ visibility: propsToUse.visibility,
809
+ disabled: propsToUse.disabled,
810
+ label: propsToUse.label,
811
+ parameters: rawConfig.parameters,
812
+ readOnly: false,
813
+ localeReference: rawConfig.localeReference,
814
+ ...(mode === SELECTION_MODE.MULTI ? { referenceType } : {}),
815
+ contextClass: rawConfig.targetObjectClass,
816
+ primaryField: rawConfig.displayField?.startsWith('@P') ? rawConfig.displayField.slice(3) : rawConfig.displayField,
817
+ dataRelationshipContext: rawConfig.pagelistValue?.substring(4),
818
+ hideLabel: hideLabel ?? false,
819
+ onRecordChange: this.onRecordChange,
820
+ createNewRecord: isCreateNewReferenceEnabled
821
+ ? () =>
822
+ createNewRecord({
823
+ referenceType: rawConfig.targetObjectType === 'case' ? 'Case' : 'Data',
824
+ pConn: this.pConn$,
825
+ getPConnect: () => this.pConn$,
826
+ disableStartingFieldsForReference,
827
+ startingFields: {},
828
+ contextClass
829
+ })
830
+ : undefined,
831
+ inline,
832
+ columnsFormatter: rawConfig.secondaryFields,
833
+ additionalInfo: refFieldMetadata?.additionalInformation ? { content: refFieldMetadata.additionalInformation } : undefined
834
+ }
835
+ } as any,
836
+ '',
837
+ 0,
838
+ {}
839
+ );
231
840
  this.newComponentName = component?.getPConnect().getComponentName();
232
841
  this.newPconn = component?.getPConnect();
233
- if (this.rawViewMetadata?.config) {
234
- this.rawViewMetadata.config = { ...config };
842
+
843
+ // Pre-set the reference list on the child PConnect so that
844
+ // getListActions() resolves the correct path on every re-render.
845
+ const selectionList = rawConfig.pagelistValue?.substring(3);
846
+ if (this.newPconn && selectionList) {
847
+ this.newPconn.setReferenceList(selectionList);
235
848
  }
236
849
  }
850
+
851
+ private buildEmbeddedInsightTableChild(rawConfig: any, referenceType: string, propsToUse: any) {
852
+ // Extract columns from insightModel.query.columns and convert to presets format
853
+ const insightModel = propsToUse.insightModel;
854
+ const insightColumns: any[] = insightModel?.query?.columns ?? [];
855
+
856
+ const columnChildren = insightColumns
857
+ .filter((col: any) => col.type === 'column' && col.field)
858
+ .map((col: any) => ({
859
+ type: 'TextInput',
860
+ config: {
861
+ value: `@P .${col.field.fieldID}`,
862
+ label: col.field.name || col.field.fieldID
863
+ }
864
+ }));
865
+
866
+ const presets = [
867
+ {
868
+ children: [{ children: columnChildren, name: 'Columns', type: 'Region' }],
869
+ config: {},
870
+ id: 'P_',
871
+ label: '',
872
+ name: 'presets',
873
+ template: 'Table'
874
+ }
875
+ ];
876
+
877
+ const componentConfig = {
878
+ type: 'SimpleTableManual',
879
+ config: {
880
+ contextClass: rawConfig.targetObjectClass,
881
+ presets,
882
+ label: propsToUse.label,
883
+ readonlyContextList: rawConfig.pagelistValue,
884
+ referenceList: rawConfig.pagelistValue,
885
+ renderMode: 'ReadOnly',
886
+ dataPageName: rawConfig.referenceList,
887
+ fieldMetadata: {
888
+ datasource: {
889
+ parameters: this.configProps.parameters ?? {}
890
+ }
891
+ }
892
+ }
893
+ };
894
+
895
+ const component = this.pConn$.createComponent(componentConfig as any, '', 0, {});
896
+ this.newComponentName = component?.getPConnect().getComponentName();
897
+ this.newPconn = component?.getPConnect();
898
+ }
899
+
900
+ private buildDefaultChild(
901
+ rawConfig: any,
902
+ mode: string,
903
+ refFieldMetadata: any,
904
+ fieldMetaData: any,
905
+ propsToUse: any,
906
+ referenceType: string,
907
+ hideLabel: boolean,
908
+ inline: boolean,
909
+ isCreateNewReferenceEnabled: boolean,
910
+ disableStartingFieldsForReference: boolean,
911
+ contextClass: string,
912
+ linkReference: any
913
+ ) {
914
+ this.useOutputEvents = true;
915
+ const component = this.pConn$.createComponent(
916
+ {
917
+ type: this.type,
918
+ config: {
919
+ ...rawConfig,
920
+ descriptors: mode === SELECTION_MODE.SINGLE ? refFieldMetadata?.descriptors : null,
921
+ datasourceMetadata: fieldMetaData?.datasourceMetadata,
922
+ required: propsToUse.required,
923
+ visibility: propsToUse.visibility,
924
+ disabled: propsToUse.disabled,
925
+ label: propsToUse.label,
926
+ parameters: rawConfig.parameters,
927
+ readOnly: false,
928
+ localeReference: rawConfig.localeReference,
929
+ ...(mode === SELECTION_MODE.SINGLE ? { referenceType } : {}),
930
+ contextClass: rawConfig.targetObjectClass,
931
+ primaryField: rawConfig.displayField,
932
+ dataRelationshipContext: rawConfig.displayField ? getDataRelationshipContextFromKey(rawConfig.displayField) : null,
933
+ hideLabel,
934
+ onRecordChange: this.onRecordChange,
935
+ createNewRecord: isCreateNewReferenceEnabled
936
+ ? () =>
937
+ createNewRecord({
938
+ referenceType: rawConfig.targetObjectType === 'case' ? 'Case' : 'Data',
939
+ pConn: this.pConn$,
940
+ getPConnect: () => this.pConn$,
941
+ disableStartingFieldsForReference,
942
+ startingFields: {},
943
+ contextClass
944
+ })
945
+ : undefined,
946
+ inline,
947
+ columnsFormatter: rawConfig.secondaryFields,
948
+ getAdditionalInfo: getAdditionalInfo.bind(this, this.pConn$, rawConfig.displayField),
949
+ linkReference: this.type === 'AutoComplete' ? linkReference : undefined
950
+ }
951
+ } as any,
952
+ '',
953
+ 0,
954
+ {}
955
+ );
956
+ this.newComponentName = component?.getPConnect().getComponentName();
957
+ this.newPconn = component?.getPConnect();
958
+ }
237
959
  }