Skip to content

Commit 57652be

Browse files
vishalshrm539Sharmamanasa
authored
Fixed CaseSummary fields not getting rendered in Details template (#526)
* Fixed CaseSummary fields not getting rendered in Details template --------- Co-authored-by: Sharma <[email protected]> Co-authored-by: manasa <[email protected]>
1 parent 726b650 commit 57652be

File tree

1 file changed

+65
-4
lines changed
  • packages/react-sdk-components/src/components/template/CaseSummary

1 file changed

+65
-4
lines changed

packages/react-sdk-components/src/components/template/CaseSummary/CaseSummary.tsx

Lines changed: 65 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,83 @@
1-
import type { PropsWithChildren } from 'react';
1+
import type { PropsWithChildren, ReactElement } from 'react';
22
import { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map';
33
import type { PConnProps } from '../../../types/PConnProps';
44

55
interface CaseSummaryProps extends PConnProps {
6-
// If any, enter additional props that only exist on this component
76
arPrimaryFields: any[];
87
arSecondaryFields: any[];
8+
// If any, enter additional props that only exist on this component
99
}
1010

1111
export default function CaseSummary(props: PropsWithChildren<CaseSummaryProps>) {
1212
// Get emitted components from map (so we can get any override that may exist)
1313
const CaseSummaryFields = getComponentFromMap('CaseSummaryFields');
1414

15-
const { arPrimaryFields, arSecondaryFields } = props;
15+
const { getPConnect, children } = props;
16+
let { arPrimaryFields = [], arSecondaryFields = [] } = props;
17+
18+
const thePConn = getPConnect && getPConnect();
19+
const theConfigProps: any = thePConn?.getConfigProps();
20+
21+
const status = theConfigProps?.status;
22+
const showStatus = theConfigProps?.showStatus;
23+
const localizedVal = PCore.getLocaleUtils().getLocaleValue;
24+
const localeCategory = 'ModalContainer';
25+
26+
function prepareComponentInCaseSummary(pConnectMeta, getPConnect) {
27+
const { config, children } = pConnectMeta;
28+
const pConnect = getPConnect();
29+
30+
const caseSummaryComponentObject: any = {};
31+
32+
const { type } = pConnectMeta;
33+
const createdComponent = pConnect.createComponent({
34+
type,
35+
children: children ? [...children] : [],
36+
config: {
37+
...config
38+
}
39+
});
40+
41+
caseSummaryComponentObject.value = createdComponent;
42+
return caseSummaryComponentObject;
43+
}
44+
45+
function prepareCaseSummaryData(summaryFieldChildren) {
46+
const convertChildrenToSummaryData = kid => {
47+
return kid?.map((childItem, index) => {
48+
const childMeta = childItem.getPConnect().meta;
49+
const caseSummaryComponentObject = prepareComponentInCaseSummary(childMeta, childItem.getPConnect);
50+
caseSummaryComponentObject.id = index + 1;
51+
return caseSummaryComponentObject;
52+
});
53+
};
54+
return summaryFieldChildren ? convertChildrenToSummaryData(summaryFieldChildren?.getChildren()) : undefined;
55+
}
56+
57+
if (arPrimaryFields.length === 0 && arSecondaryFields.length === 0) {
58+
for (const child of children as ReactElement[]) {
59+
const childPConn = (child as ReactElement).props.getPConnect();
60+
const childPConnData = childPConn.resolveConfigProps(childPConn.getRawMetadata());
61+
if (childPConnData.name.toLowerCase() === 'primary fields') {
62+
arPrimaryFields = childPConnData.children;
63+
arPrimaryFields.forEach(field => {
64+
if (field.config?.value && typeof field.config?.value === 'string') {
65+
field.config.value = localizedVal(field.config.value, localeCategory);
66+
}
67+
});
68+
} else if (childPConnData.name.toLowerCase() === 'secondary fields') {
69+
const secondarySummaryFields = prepareCaseSummaryData(childPConn);
70+
arSecondaryFields = childPConnData.children;
71+
arSecondaryFields.forEach((field, index) => {
72+
field.config.displayLabel = secondarySummaryFields[index]?.value?.props?.label;
73+
});
74+
}
75+
}
76+
}
1677

1778
return (
1879
<div id='CaseSummary'>
19-
<CaseSummaryFields theFields={arPrimaryFields} />
80+
<CaseSummaryFields status={status} showStatus={showStatus} theFields={arPrimaryFields} />
2081
<CaseSummaryFields theFields={arSecondaryFields} />
2182
</div>
2283
);

0 commit comments

Comments
 (0)