@pega/dx-component-builder-sdk 0.23.6 → 0.23.7

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 (136) hide show
  1. package/package.json +1 -1
  2. package/src/tasks/create/templates/Constellation/field/Text-Input/index.jsx.mustache +1 -1
  3. package/tests/assets/components/SDK-React/create/override-sdk/designSystemExtension/AlertBanner/AlertBanner.tsx +47 -0
  4. package/tests/assets/components/SDK-React/create/override-sdk/designSystemExtension/AlertBanner/index.tsx +1 -0
  5. package/tests/assets/components/SDK-React/create/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +5 -3
  6. package/tests/assets/components/SDK-React/create/override-sdk/designSystemExtension/FieldValueList/FieldValueList.tsx +1 -1
  7. package/tests/assets/components/SDK-React/create/override-sdk/designSystemExtension/RichTextEditor/RichTextEditor.tsx +121 -0
  8. package/tests/assets/components/SDK-React/create/override-sdk/designSystemExtension/RichTextEditor/index.tsx +1 -0
  9. package/tests/assets/components/SDK-React/create/override-sdk/field/AutoComplete/AutoComplete.tsx +29 -27
  10. package/tests/assets/components/SDK-React/create/override-sdk/field/Checkbox/Checkbox.tsx +10 -6
  11. package/tests/assets/components/SDK-React/create/override-sdk/field/Currency/Currency.tsx +16 -15
  12. package/tests/assets/components/SDK-React/create/override-sdk/field/Date/Date.tsx +16 -15
  13. package/tests/assets/components/SDK-React/create/override-sdk/field/DateTime/DateTime.tsx +19 -14
  14. package/tests/assets/components/SDK-React/create/override-sdk/field/Decimal/Decimal.tsx +18 -16
  15. package/tests/assets/components/SDK-React/create/override-sdk/field/Dropdown/Dropdown.tsx +17 -25
  16. package/tests/assets/components/SDK-React/create/override-sdk/field/Email/Email.tsx +11 -11
  17. package/tests/assets/components/SDK-React/create/override-sdk/field/Integer/Integer.tsx +9 -7
  18. package/tests/assets/components/SDK-React/create/override-sdk/field/Percentage/Percentage.tsx +9 -9
  19. package/tests/assets/components/SDK-React/create/override-sdk/field/Phone/Phone.tsx +13 -12
  20. package/tests/assets/components/SDK-React/create/override-sdk/field/RadioButtons/RadioButtons.tsx +16 -35
  21. package/tests/assets/components/SDK-React/create/override-sdk/field/RichText/RichText.tsx +95 -0
  22. package/tests/assets/components/SDK-React/create/override-sdk/field/RichText/index.tsx +1 -0
  23. package/tests/assets/components/SDK-React/create/override-sdk/field/ScalarList/ScalarList.tsx +73 -0
  24. package/tests/assets/components/SDK-React/create/override-sdk/field/ScalarList/config-ext.json +8 -0
  25. package/tests/assets/components/SDK-React/create/override-sdk/field/ScalarList/index.tsx +1 -0
  26. package/tests/assets/components/SDK-React/create/override-sdk/field/SemanticLink/SemanticLink.tsx +19 -19
  27. package/tests/assets/components/SDK-React/create/override-sdk/field/TextArea/TextArea.tsx +8 -6
  28. package/tests/assets/components/SDK-React/create/override-sdk/field/TextInput/TextInput.tsx +8 -7
  29. package/tests/assets/components/SDK-React/create/override-sdk/field/Time/Time.tsx +16 -28
  30. package/tests/assets/components/SDK-React/create/override-sdk/field/URL/URL.tsx +10 -8
  31. package/tests/assets/components/SDK-React/create/override-sdk/field/UserReference/UserReference.tsx +29 -29
  32. package/tests/assets/components/SDK-React/create/override-sdk/infra/Assignment/Assignment.tsx +5 -2
  33. package/tests/assets/components/SDK-React/create/override-sdk/infra/AssignmentCard/AssignmentCard.tsx +4 -2
  34. package/tests/assets/components/SDK-React/create/override-sdk/infra/DashboardFilter/DashboardFilter.tsx +13 -13
  35. package/tests/assets/components/SDK-React/create/override-sdk/infra/DashboardFilter/filterUtils.tsx +2 -1
  36. package/tests/assets/components/SDK-React/create/override-sdk/infra/DeferLoad/DeferLoad.tsx +172 -0
  37. package/tests/assets/components/SDK-React/create/override-sdk/infra/DeferLoad/index.tsx +1 -0
  38. package/tests/assets/components/SDK-React/create/override-sdk/infra/MultiStep/MultiStep.tsx +4 -3
  39. package/tests/assets/components/SDK-React/create/override-sdk/infra/NavBar/NavBar.tsx +2 -1
  40. package/tests/assets/components/SDK-React/create/override-sdk/infra/VerticalTabs/VerticalTabs.tsx +4 -1
  41. package/tests/assets/components/SDK-React/create/override-sdk/template/AppShell/AppShell.tsx +6 -4
  42. package/tests/assets/components/SDK-React/create/override-sdk/template/BannerPage/BannerPage.tsx +4 -1
  43. package/tests/assets/components/SDK-React/create/override-sdk/template/CaseSummary/CaseSummary.tsx +4 -1
  44. package/tests/assets/components/SDK-React/create/override-sdk/template/CaseView/CaseView.tsx +10 -13
  45. package/tests/assets/components/SDK-React/create/override-sdk/template/Confirmation/Confirmation.tsx +23 -44
  46. package/tests/assets/components/SDK-React/create/override-sdk/template/DataReference/DataReference.tsx +43 -64
  47. package/tests/assets/components/SDK-React/create/override-sdk/template/Details/Details.tsx +8 -4
  48. package/tests/assets/components/SDK-React/create/override-sdk/template/DetailsThreeColumn/DetailsThreeColumn.tsx +8 -4
  49. package/tests/assets/components/SDK-React/create/override-sdk/template/DetailsTwoColumn/DetailsTwoColumn.tsx +8 -4
  50. package/tests/assets/components/SDK-React/create/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +6 -2
  51. package/tests/assets/components/SDK-React/create/override-sdk/template/InlineDashboardPage/InlineDashboardPage.tsx +5 -1
  52. package/tests/assets/components/SDK-React/create/override-sdk/template/ListPage/ListPage.tsx +6 -3
  53. package/tests/assets/components/SDK-React/create/override-sdk/template/ListView/ListView.tsx +89 -93
  54. package/tests/assets/components/SDK-React/create/override-sdk/template/ListView/utils.ts +170 -23
  55. package/tests/assets/components/SDK-React/create/override-sdk/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +9 -9
  56. package/tests/assets/components/SDK-React/create/override-sdk/template/NarrowWideDetails/NarrowWideDetails.tsx +8 -4
  57. package/tests/assets/components/SDK-React/create/override-sdk/template/NarrowWidePage/NarrowWidePage.tsx +4 -1
  58. package/tests/assets/components/SDK-React/create/override-sdk/template/OneColumnPage/OneColumnPage.tsx +3 -1
  59. package/tests/assets/components/SDK-React/create/override-sdk/template/PromotedFilters/PromotedFilters.tsx +4 -1
  60. package/tests/assets/components/SDK-React/create/override-sdk/template/SimpleTable/SimpleTable.tsx +88 -5
  61. package/tests/assets/components/SDK-React/create/override-sdk/template/SimpleTableSelect/SimpleTableSelect.tsx +6 -4
  62. package/tests/assets/components/SDK-React/create/override-sdk/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +22 -18
  63. package/tests/assets/components/SDK-React/create/override-sdk/template/TwoColumnPage/TwoColumnPage.tsx +3 -2
  64. package/tests/assets/components/SDK-React/create/override-sdk/template/WideNarrowDetails/WideNarrowDetails.tsx +8 -3
  65. package/tests/assets/components/SDK-React/create/override-sdk/template/WideNarrowPage/WideNarrowPage.tsx +4 -3
  66. package/tests/assets/components/SDK-React/create/override-sdk/widget/Attachment/Attachment.tsx +5 -1
  67. package/tests/assets/components/SDK-React/create/override-sdk/widget/FileUtility/FileUtility.tsx +8 -2
  68. package/tests/assets/components/SDK-React/create/override-sdk/widget/QuickCreate/QuickCreate.tsx +4 -1
  69. package/tests/assets/components/SDK-React/create/override-sdk/widget/SummaryList/SummaryList.tsx +4 -1
  70. package/tests/assets/components/SDK-React/create/override-sdk/widget/ToDo/ToDo.tsx +53 -82
  71. package/tests/assets/components/SDK-React/createAll/custom-constellation/field/Pega_DXIL_MyTextInput/index.jsx +1 -1
  72. package/tests/assets/components/SDK-React/createAll/override-sdk/designSystemExtension/AlertBanner/AlertBanner.tsx +47 -0
  73. package/tests/assets/components/SDK-React/createAll/override-sdk/designSystemExtension/AlertBanner/index.tsx +1 -0
  74. package/tests/assets/components/SDK-React/createAll/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +5 -3
  75. package/tests/assets/components/SDK-React/createAll/override-sdk/designSystemExtension/RichTextEditor/RichTextEditor.tsx +121 -0
  76. package/tests/assets/components/SDK-React/createAll/override-sdk/designSystemExtension/RichTextEditor/index.tsx +1 -0
  77. package/tests/assets/components/SDK-React/createAll/override-sdk/field/AutoComplete/AutoComplete.tsx +29 -27
  78. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Checkbox/Checkbox.tsx +10 -6
  79. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Currency/Currency.tsx +16 -15
  80. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Date/Date.tsx +16 -15
  81. package/tests/assets/components/SDK-React/createAll/override-sdk/field/DateTime/DateTime.tsx +19 -14
  82. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Decimal/Decimal.tsx +18 -16
  83. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Dropdown/Dropdown.tsx +17 -25
  84. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Email/Email.tsx +11 -11
  85. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Integer/Integer.tsx +9 -7
  86. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Percentage/Percentage.tsx +9 -9
  87. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Phone/Phone.tsx +13 -12
  88. package/tests/assets/components/SDK-React/createAll/override-sdk/field/RadioButtons/RadioButtons.tsx +16 -35
  89. package/tests/assets/components/SDK-React/createAll/override-sdk/field/RichText/RichText.tsx +95 -0
  90. package/tests/assets/components/SDK-React/createAll/override-sdk/field/RichText/index.tsx +1 -0
  91. package/tests/assets/components/SDK-React/createAll/override-sdk/field/ScalarList/ScalarList.tsx +25 -18
  92. package/tests/assets/components/SDK-React/createAll/override-sdk/field/SemanticLink/SemanticLink.tsx +19 -19
  93. package/tests/assets/components/SDK-React/createAll/override-sdk/field/TextArea/TextArea.tsx +8 -6
  94. package/tests/assets/components/SDK-React/createAll/override-sdk/field/TextInput/TextInput.tsx +8 -7
  95. package/tests/assets/components/SDK-React/createAll/override-sdk/field/Time/Time.tsx +16 -28
  96. package/tests/assets/components/SDK-React/createAll/override-sdk/field/URL/URL.tsx +10 -8
  97. package/tests/assets/components/SDK-React/createAll/override-sdk/field/UserReference/UserReference.tsx +29 -29
  98. package/tests/assets/components/SDK-React/createAll/override-sdk/infra/Assignment/Assignment.tsx +5 -2
  99. package/tests/assets/components/SDK-React/createAll/override-sdk/infra/AssignmentCard/AssignmentCard.tsx +4 -2
  100. package/tests/assets/components/SDK-React/createAll/override-sdk/infra/DeferLoad/DeferLoad.tsx +172 -0
  101. package/tests/assets/components/SDK-React/createAll/override-sdk/infra/DeferLoad/index.tsx +1 -0
  102. package/tests/assets/components/SDK-React/createAll/override-sdk/infra/MultiStep/MultiStep.tsx +4 -3
  103. package/tests/assets/components/SDK-React/createAll/override-sdk/infra/VerticalTabs/VerticalTabs.tsx +4 -1
  104. package/tests/assets/components/SDK-React/createAll/override-sdk/template/AppShell/AppShell.tsx +6 -4
  105. package/tests/assets/components/SDK-React/createAll/override-sdk/template/BannerPage/BannerPage.tsx +4 -1
  106. package/tests/assets/components/SDK-React/createAll/override-sdk/template/CaseSummary/CaseSummary.tsx +4 -1
  107. package/tests/assets/components/SDK-React/createAll/override-sdk/template/CaseView/CaseView.tsx +6 -3
  108. package/tests/assets/components/SDK-React/createAll/override-sdk/template/Confirmation/Confirmation.tsx +23 -44
  109. package/tests/assets/components/SDK-React/createAll/override-sdk/template/DataReference/DataReference.tsx +6 -2
  110. package/tests/assets/components/SDK-React/createAll/override-sdk/template/Details/Details.tsx +5 -1
  111. package/tests/assets/components/SDK-React/createAll/override-sdk/template/DetailsThreeColumn/DetailsThreeColumn.tsx +5 -1
  112. package/tests/assets/components/SDK-React/createAll/override-sdk/template/DetailsTwoColumn/DetailsTwoColumn.tsx +5 -1
  113. package/tests/assets/components/SDK-React/createAll/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +6 -2
  114. package/tests/assets/components/SDK-React/createAll/override-sdk/template/InlineDashboardPage/InlineDashboardPage.tsx +5 -1
  115. package/tests/assets/components/SDK-React/createAll/override-sdk/template/ListPage/ListPage.tsx +6 -3
  116. package/tests/assets/components/SDK-React/createAll/override-sdk/template/ListView/ListView.tsx +89 -93
  117. package/tests/assets/components/SDK-React/createAll/override-sdk/template/ListView/utils.ts +170 -23
  118. package/tests/assets/components/SDK-React/createAll/override-sdk/template/NarrowWideDetails/NarrowWideDetails.tsx +5 -1
  119. package/tests/assets/components/SDK-React/createAll/override-sdk/template/NarrowWidePage/NarrowWidePage.tsx +4 -1
  120. package/tests/assets/components/SDK-React/createAll/override-sdk/template/OneColumnPage/OneColumnPage.tsx +3 -1
  121. package/tests/assets/components/SDK-React/createAll/override-sdk/template/PromotedFilters/PromotedFilters.tsx +4 -1
  122. package/tests/assets/components/SDK-React/createAll/override-sdk/template/SimpleTable/SimpleTable.tsx +88 -5
  123. package/tests/assets/components/SDK-React/createAll/override-sdk/template/SimpleTableSelect/SimpleTableSelect.tsx +6 -4
  124. package/tests/assets/components/SDK-React/createAll/override-sdk/template/TwoColumnPage/TwoColumnPage.tsx +3 -2
  125. package/tests/assets/components/SDK-React/createAll/override-sdk/template/WideNarrowDetails/WideNarrowDetails.tsx +5 -1
  126. package/tests/assets/components/SDK-React/createAll/override-sdk/template/WideNarrowPage/WideNarrowPage.tsx +4 -3
  127. package/tests/assets/components/SDK-React/createAll/override-sdk/widget/Attachment/Attachment.tsx +5 -1
  128. package/tests/assets/components/SDK-React/createAll/override-sdk/widget/FileUtility/FileUtility.tsx +8 -2
  129. package/tests/assets/components/SDK-React/createAll/override-sdk/widget/QuickCreate/QuickCreate.tsx +4 -1
  130. package/tests/assets/components/SDK-React/createAll/override-sdk/widget/SummaryList/SummaryList.tsx +4 -1
  131. package/tests/assets/components/SDK-React/createAll/override-sdk/widget/ToDo/ToDo.tsx +53 -82
  132. package/tests/functional/localCreateBuildAllDeleteAllCustom.test.js +1 -1
  133. package/tests/functional/localCreateBuildDeleteOverride.test.js +2 -1
  134. package/tests/functional/localCreatePublishAllDeleteAllCustom.test.js +1 -2
  135. package/tests/functional/localCreatePublishAllDeleteAllOverride.test.js +0 -4
  136. package/tests/functional/localCreatePublishDeleteOverride.test.js +2 -5
@@ -1,28 +1,25 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
2
  /* eslint-disable no-unused-vars */
3
3
  /* eslint-disable no-nested-ternary */
4
- import { Fragment, useState } from 'react';
5
- import React from 'react';
6
- import { getToDoAssignments } from '@pega/react-sdk-components/lib/components/infra/Containers/FlowContainer/helpers';
7
- import ToDo from '@pega/react-sdk-components/lib/components/widget/ToDo';
8
- import Details from '@pega/react-sdk-components/lib/components/template/Details/Details';
4
+ import React, { useState } from 'react';
9
5
  import { Button, Card, makeStyles } from '@material-ui/core';
6
+ import { getToDoAssignments } from '@pega/react-sdk-components/lib/components/infra/Containers/FlowContainer/helpers';
7
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
8
+
10
9
  import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
11
10
 
12
- // XX does NOT have getPConnect. So, no need to extend from PConnProps
11
+ // Confirmation does NOT have getPConnect. So, no need to extend from PConnProps
13
12
 
14
13
  interface ConfirmationProps extends PConnProps {
15
14
  // If any, enter additional props that only exist on this component
16
- children: Array<any>,
17
- datasource: { source: any },
18
- label: string,
19
- showLabel: boolean,
20
- showTasks: boolean
15
+ children: Array<any>;
16
+ datasource: { source: any };
17
+ label: string;
18
+ showLabel: boolean;
19
+ showTasks: boolean;
21
20
  }
22
21
 
23
-
24
-
25
- const useStyles = makeStyles(theme => ({
22
+ const useStyles = makeStyles((theme) => ({
26
23
  root: {
27
24
  paddingRight: theme.spacing(1),
28
25
  paddingLeft: theme.spacing(1),
@@ -36,6 +33,10 @@ const useStyles = makeStyles(theme => ({
36
33
  }));
37
34
 
38
35
  export default function Confirmation(props: ConfirmationProps) {
36
+ // Get emitted components from map (so we can get any override that may exist)
37
+ const ToDo = getComponentFromMap('Todo'); // NOTE: ConstellationJS Engine uses "Todo" and not "ToDo"!!!
38
+ const Details = getComponentFromMap('Details');
39
+
39
40
  const classes = useStyles();
40
41
  const CONSTS = PCore.getConstants();
41
42
  const [showConfirmView, setShowConfirmView] = useState(true);
@@ -43,20 +44,12 @@ export default function Confirmation(props: ConfirmationProps) {
43
44
  // Get the inherited props from the parent to determine label settings
44
45
  // Not using whatsNext at the moment, need to figure out the use of it
45
46
  const whatsNext = datasource?.source;
46
- const items = whatsNext.length > 0 ? whatsNext.map(item => item.label) : '';
47
- const activeContainerItemID = PCore.getContainerUtils().getActiveContainerItemName(
48
- getPConnect().getTarget()
49
- );
50
- const rootInfo = PCore.getContainerUtils().getContainerItemData(
51
- getPConnect().getTarget(),
52
- activeContainerItemID
53
- );
47
+ const items = whatsNext.length > 0 ? whatsNext.map((item) => item.label) : '';
48
+ const activeContainerItemID = PCore.getContainerUtils().getActiveContainerItemName(getPConnect().getTarget());
49
+ const rootInfo = PCore.getContainerUtils().getContainerItemData(getPConnect().getTarget(), activeContainerItemID);
54
50
  const onConfirmViewClose = () => {
55
51
  setShowConfirmView(false);
56
- PCore.getPubSubUtils().publish(
57
- PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.CLOSE_CONFIRM_VIEW,
58
- rootInfo
59
- );
52
+ PCore.getPubSubUtils().publish(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.CLOSE_CONFIRM_VIEW, rootInfo);
60
53
  };
61
54
  const todoProps = { ...props, renderTodoInConfirm: true };
62
55
  const toDoList = getToDoAssignments(getPConnect());
@@ -64,36 +57,22 @@ export default function Confirmation(props: ConfirmationProps) {
64
57
  const showDetails = detailProps?.children?.[0]?.props?.getPConnect()?.getChildren()?.length > 0;
65
58
  return showConfirmView ? (
66
59
  <Card className={classes.root}>
67
- <h2 id='confirm-label'>{props.showLabel ? props.label : ''}</h2>
60
+ <h2 id="confirm-label">{props.showLabel ? props.label : ''}</h2>
68
61
  {showDetails ? <Details {...detailProps} /> : undefined}
69
62
  {showTasks ? (
70
63
  toDoList && toDoList.length > 0 ? (
71
- <ToDo
72
- {...todoProps}
73
- datasource={{ source: toDoList }}
74
- getPConnect={getPConnect}
75
- type={CONSTS.TODO}
76
- headerText='Open Tasks'
77
- isConfirm
78
- />
64
+ <ToDo {...todoProps} datasource={{ source: toDoList }} getPConnect={getPConnect} type={CONSTS.TODO} headerText="Open Tasks" isConfirm />
79
65
  ) : undefined
80
66
  ) : undefined}
81
67
  <div style={{ display: 'flex', justifyContent: 'flex-end' }}>
82
- <Button variant='contained' color='primary' onClick={onConfirmViewClose}>
68
+ <Button variant="contained" color="primary" onClick={onConfirmViewClose}>
83
69
  Done
84
70
  </Button>
85
71
  </div>
86
72
  </Card>
87
73
  ) : toDoList && toDoList.length > 0 ? (
88
74
  <Card className={classes.root}>
89
- <ToDo
90
- {...props}
91
- datasource={{ source: toDoList }}
92
- getPConnect={getPConnect}
93
- type={CONSTS.TODO}
94
- headerText='Tasks'
95
- isConfirm
96
- />
75
+ <ToDo {...props} datasource={{ source: toDoList }} getPConnect={getPConnect} type={CONSTS.TODO} headerText="Tasks" isConfirm />
97
76
  </Card>
98
77
  ) : null;
99
78
  }
@@ -1,6 +1,6 @@
1
1
  import React, { useMemo, useState, useEffect } from 'react';
2
- import SingleReferenceReadonly from '@pega/react-sdk-components/lib/components/template/SingleReferenceReadOnly';
3
- import MultiReferenceReadonly from '@pega/react-sdk-components/lib/components/template/MultiReferenceReadOnly';
2
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
3
+
4
4
  import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
5
5
 
6
6
  // ReferenceProps can't be used until getComponentConfig() is NOT private
@@ -27,6 +27,10 @@ declare const PCore: any;
27
27
 
28
28
 
29
29
  export default function DataReference(props: DataReferenceProps) {
30
+ // Get emitted components from map (so we can get any override that may exist)
31
+ const SingleReferenceReadonly = getComponentFromMap('SingleReferenceReadOnly');
32
+ const MultiReferenceReadonly = getComponentFromMap('MultiReferenceReadOnly');
33
+
30
34
  const {
31
35
  children,
32
36
  getPConnect,
@@ -1,7 +1,8 @@
1
1
  import React, { createElement } from 'react';
2
2
  import Grid from '@material-ui/core/Grid';
3
3
  import createPConnectComponent from '@pega/react-sdk-components/lib/bridge/react_pconnect';
4
- import FieldGroup from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldGroup';
4
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
5
+
5
6
  // import type { PConnProps } from '../../../../types/PConnProps';
6
7
 
7
8
 
@@ -12,6 +13,9 @@ import FieldGroup from '@pega/react-sdk-components/lib/components/designSystemEx
12
13
 
13
14
 
14
15
  export default function Details(props /* : DetailsProps */) {
16
+ // Get emitted components from map (so we can get any override that may exist)
17
+ const FieldGroup = getComponentFromMap('FieldGroup');
18
+
15
19
  const { label, showLabel, getPConnect, showHighlightedData } = props;
16
20
 
17
21
  // Get the inherited props from the parent to determine label settings
@@ -1,7 +1,8 @@
1
1
  import React, { createElement } from 'react';
2
2
  import Grid from '@material-ui/core/Grid';
3
3
  import createPConnectComponent from '@pega/react-sdk-components/lib/bridge/react_pconnect';
4
- import FieldGroup from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldGroup';
4
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
5
+
5
6
  // import type { PConnProps } from '../../../../types/PConnProps';
6
7
 
7
8
  // Can't use PConnProps until getPConnect().getChildren() type is ok
@@ -14,6 +15,9 @@ import FieldGroup from '@pega/react-sdk-components/lib/components/designSystemEx
14
15
 
15
16
 
16
17
  export default function DetailsThreeColumn(props /* : DetailsThreeColumnProps */) {
18
+ // Get emitted components from map (so we can get any override that may exist)
19
+ const FieldGroup = getComponentFromMap('FieldGroup');
20
+
17
21
  const { label, showLabel = true, getPConnect, showHighlightedData = false } = props;
18
22
 
19
23
  // Get the inherited props from the parent to determine label settings
@@ -1,7 +1,8 @@
1
1
  import React, { createElement } from 'react';
2
2
  import Grid from '@material-ui/core/Grid';
3
3
  import createPConnectComponent from '@pega/react-sdk-components/lib/bridge/react_pconnect';
4
- import FieldGroup from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldGroup';
4
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
5
+
5
6
  // import type { PConnProps } from '../../../../types/PConnProps';
6
7
 
7
8
 
@@ -15,6 +16,9 @@ import FieldGroup from '@pega/react-sdk-components/lib/components/designSystemEx
15
16
 
16
17
 
17
18
  export default function DetailsTwoColumn(props /* : DetailsTwoColumnProps */) {
19
+ // Get emitted components from map (so we can get any override that may exist)
20
+ const FieldGroup = getComponentFromMap('FieldGroup');
21
+
18
22
  const { label, showLabel = true, getPConnect, showHighlightedData = false } = props;
19
23
 
20
24
  // Get the inherited props from the parent to determine label settings
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable react-hooks/rules-of-hooks */
2
2
  import React, { useMemo } from 'react';
3
- import FieldGroup from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldGroup';
4
- import FieldGroupList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldGroupList';
5
3
  import { getReferenceList, buildView } from '@pega/react-sdk-components/lib/components/helpers/field-group-utils';
4
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
5
+
6
6
  import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
7
7
 
8
8
  interface FieldGroupTemplateProps extends PConnProps {
@@ -19,6 +19,10 @@ interface FieldGroupTemplateProps extends PConnProps {
19
19
 
20
20
 
21
21
  export default function FieldGroupTemplate(props: FieldGroupTemplateProps) {
22
+ // Get emitted components from map (so we can get any override that may exist)
23
+ const FieldGroup = getComponentFromMap('FieldGroup');
24
+ const FieldGroupList = getComponentFromMap('FieldGroupList');
25
+
22
26
  const {
23
27
  referenceList = [],
24
28
  renderMode,
@@ -2,7 +2,8 @@ import React from 'react';
2
2
  import { useMemo, Children, useEffect, useState } from 'react';
3
3
 
4
4
  import { buildFilterComponents } from '@pega/react-sdk-components/lib/components/infra/DashboardFilter/filterUtils';
5
- import InlineDashboard from '@pega/react-sdk-components/lib/components/template/InlineDashboard';
5
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
6
+
6
7
  import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
7
8
 
8
9
 
@@ -16,6 +17,9 @@ interface InlineDashboardPageProps extends PConnProps {
16
17
 
17
18
 
18
19
  export default function InlineDashboardPage(props: InlineDashboardPageProps) {
20
+ // Get emitted components from map (so we can get any override that may exist)
21
+ const InlineDashboard = getComponentFromMap("InlineDashboard");
22
+
19
23
  // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
20
24
  const { children, getPConnect, icon = '', filterPosition = 'block-start' } = props;
21
25
  const [filterComponents, setFilterComponents] = useState([]);
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
-
3
- import ListView from '@pega/react-sdk-components/lib/components/template/ListView';
2
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
4
3
 
5
4
  import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
6
5
 
@@ -11,8 +10,12 @@ interface ListPageProps extends PConnProps {
11
10
 
12
11
 
13
12
  export default function ListPage(props: ListPageProps) {
13
+ // Get emitted components from map (so we can get any override that may exist)
14
+ const ListView = getComponentFromMap('ListView');
14
15
 
16
+ // special case for ListView - add in a prop
17
+ const listViewProps = {...props, bInForm: false};
15
18
  return (
16
- <ListView {...props}></ListView>
19
+ <ListView {...listViewProps}></ListView>
17
20
  )
18
21
  }
@@ -37,7 +37,7 @@ import { Radio } from '@material-ui/core';
37
37
  import Checkbox from '@material-ui/core/Checkbox';
38
38
  import { filterData } from '@pega/react-sdk-components/lib/components/helpers/simpleTableHelpers';
39
39
  import './ListView.css';
40
- import useInit from './hooks'
40
+ import useInit from './hooks';
41
41
  import { getDateFormatInfo } from '@pega/react-sdk-components/lib/components/helpers/date-format-utils';
42
42
  import { getCurrencyOptions } from '@pega/react-sdk-components/lib/components/field/Currency/currency-utils';
43
43
  import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters/';
@@ -59,7 +59,6 @@ import { format } from '@pega/react-sdk-components/lib/components/helpers/format
59
59
  // presets?: any
60
60
  // }
61
61
 
62
-
63
62
  const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' };
64
63
 
65
64
  // Remove this and use "real" PCore type once .d.ts is fixed (currently shows 3 errors)
@@ -77,8 +76,18 @@ let sortColumnId: any;
77
76
  const filterByColumns: Array<any> = [];
78
77
 
79
78
  export default function ListView(props /* : ListViewProps */) {
80
- const { getPConnect, bInForm } = props;
81
- const { globalSearch, referenceList, rowClickAction, selectionMode, referenceType, payload, parameters, compositeKeys, showDynamicFields, presets } = props;
79
+ const { getPConnect, bInForm = true } = props;
80
+ const {
81
+ globalSearch,
82
+ referenceList,
83
+ /* rowClickAction, */
84
+ selectionMode,
85
+ referenceType,
86
+ payload,
87
+ parameters,
88
+ compositeKeys,
89
+ showDynamicFields
90
+ } = props;
82
91
  const ref = useRef({}).current;
83
92
  const cosmosTableRef = useRef();
84
93
  // List component context
@@ -119,7 +128,7 @@ export default function ListView(props /* : ListViewProps */) {
119
128
 
120
129
  // Will contain the list of columns specific for an instance
121
130
  let columnList: any = useRef([]);
122
- let dashboardFilterPayload: any ;
131
+ let dashboardFilterPayload: any;
123
132
  // Will be sent in the dashboardFilterPayload
124
133
  let selectParam: Array<any> = [];
125
134
 
@@ -234,7 +243,7 @@ export default function ListView(props /* : ListViewProps */) {
234
243
  };
235
244
 
236
245
  const AssignDashObjects = ['Assign-Worklist', 'Assign-WorkBasket'];
237
- function getHeaderCells(colFields, fields, presetFields) {
246
+ function getHeaderCells(colFields, fields) {
238
247
  const arReturn = colFields.map((field: any, index) => {
239
248
  let theField = field.config.value.substring(field.config.value.indexOf(' ') + 1);
240
249
  if (theField.indexOf('.') === 0) {
@@ -243,7 +252,7 @@ export default function ListView(props /* : ListViewProps */) {
243
252
  const colIndex = fields.findIndex(ele => ele.name === theField);
244
253
  const displayAsLink = field.config.displayAsLink;
245
254
  const headerRow: any = {};
246
- headerRow.id = theField;
255
+ headerRow.id = fields[index].id;
247
256
  headerRow.type = field.type;
248
257
  headerRow.displayAsLink = displayAsLink;
249
258
  headerRow.numeric =
@@ -253,7 +262,7 @@ export default function ListView(props /* : ListViewProps */) {
253
262
  field.type === 'Currency' ||
254
263
  false;
255
264
  headerRow.disablePadding = false;
256
- headerRow.label = presetFields[index].config.label;
265
+ headerRow.label = fields[index].label;
257
266
  if (colIndex > -1) {
258
267
  headerRow.classID = fields[colIndex].classID;
259
268
  }
@@ -268,25 +277,18 @@ export default function ListView(props /* : ListViewProps */) {
268
277
  return arReturn;
269
278
  }
270
279
 
271
- function updateFields(arFields, theColumns): Array<any> {
272
- const arReturn = arFields.filter(ele => ele.type !== 'reference');
273
- arReturn.forEach((field, index) => {
274
- arReturn[index].config.name = theColumns[index].id;
275
- });
276
-
277
- return arReturn;
278
- }
279
280
 
280
281
  function getUsingData(arTableData): Array<any> {
281
282
  if (selectionMode === SELECTION_MODE.SINGLE || selectionMode === SELECTION_MODE.MULTI) {
282
283
  const record = arTableData?.length > 0 ? arTableData[0] : '';
283
284
  if (typeof record === 'object' && !('pyGUID' in record) && !('pyID' in record)) {
284
285
  // eslint-disable-next-line no-console
285
- console.error('pyGUID or pyID values are mandatory to select the required row from the list');
286
+ console.error(
287
+ 'pyGUID or pyID values are mandatory to select the required row from the list'
288
+ );
286
289
  }
287
290
  }
288
291
  const arReturn = arTableData?.map((data: any) => {
289
-
290
292
  const row = data;
291
293
 
292
294
  return row;
@@ -371,7 +373,7 @@ export default function ListView(props /* : ListViewProps */) {
371
373
  validFilter = true;
372
374
  /** Below are the 2 cases for- Text & Date-Range filter types where we'll construct filter data which will be sent in the dashboardFilterPayload
373
375
  * In Constellation DX Components, through Repeating Structures they might be using several APIs to do it. We're doing it here
374
- */
376
+ */
375
377
  if (isDateRange) {
376
378
  const dateRelationalOp = filter?.AND ? 'AND' : 'OR';
377
379
  dashboardFilterPayload.query.filter.filterConditions = {
@@ -380,11 +382,13 @@ export default function ListView(props /* : ListViewProps */) {
380
382
  [`T${index++}`]: { ...filter[relationalOp][1].condition }
381
383
  };
382
384
  if (dashboardFilterPayload.query.filter.logic) {
383
- dashboardFilterPayload.query.filter.logic = `${dashboardFilterPayload.query.filter.logic} ${relationalOp} (T${
384
- index - 2
385
- } ${dateRelationalOp} T${index - 1})`;
385
+ dashboardFilterPayload.query.filter.logic = `${
386
+ dashboardFilterPayload.query.filter.logic
387
+ } ${relationalOp} (T${index - 2} ${dateRelationalOp} T${index - 1})`;
386
388
  } else {
387
- dashboardFilterPayload.query.filter.logic = `(T${index - 2} ${relationalOp} T${index - 1})`;
389
+ dashboardFilterPayload.query.filter.logic = `(T${index - 2} ${relationalOp} T${
390
+ index - 1
391
+ })`;
388
392
  }
389
393
 
390
394
  dashboardFilterPayload.query.select = selectParam;
@@ -395,9 +399,9 @@ export default function ListView(props /* : ListViewProps */) {
395
399
  };
396
400
 
397
401
  if (dashboardFilterPayload.query.filter.logic) {
398
- dashboardFilterPayload.query.filter.logic = `${dashboardFilterPayload.query.filter.logic} ${relationalOp} T${
399
- index - 1
400
- }`;
402
+ dashboardFilterPayload.query.filter.logic = `${
403
+ dashboardFilterPayload.query.filter.logic
404
+ } ${relationalOp} T${index - 1}`;
401
405
  } else {
402
406
  dashboardFilterPayload.query.filter.logic = `T${index - 1}`;
403
407
  }
@@ -449,18 +453,21 @@ export default function ListView(props /* : ListViewProps */) {
449
453
  if (payload) {
450
454
  query = payload.query;
451
455
  } else if (fields?.length && meta.isQueryable) {
452
- query = {select: fields};
456
+ query = { select: fields };
453
457
  } else if (dashboardFilterPayload) {
454
458
  query = dashboardFilterPayload.query;
455
459
  }
456
460
  const context = getPConnect().getContextName();
457
- return PCore.getDataPageUtils().getDataAsync(
458
- referenceList,
459
- context,
460
- payload ? payload.dataViewParameters : dataViewParameters,
461
- null,
462
- query
463
- );
461
+ // getDataAsync isn't returning correct data for the Page(i.e. ListView within a page) case
462
+ return !bInForm
463
+ ? PCore.getDataApiUtils().getData(referenceList, payload)
464
+ : PCore.getDataPageUtils().getDataAsync(
465
+ referenceList,
466
+ context,
467
+ payload ? payload.dataViewParameters : dataViewParameters,
468
+ null,
469
+ query
470
+ );
464
471
  }
465
472
 
466
473
  const buildSelect = (fieldDefs, colId, patchQueryFields = [], compositeKeys = []) => {
@@ -499,18 +506,22 @@ export default function ListView(props /* : ListViewProps */) {
499
506
  return listFields;
500
507
  };
501
508
 
502
- const addItemKeyInSelect = (
503
- fieldDefs,
504
- itemKey,
505
- select,
506
- compositeKeys
507
- ) => {
509
+ const addItemKeyInSelect = (fieldDefs, itemKey, select, compositeKeys) => {
508
510
  const elementFound = getField(fieldDefs, itemKey);
509
511
 
510
- if (itemKey && !elementFound && Array.isArray(select) && !(compositeKeys !== null && compositeKeys?.length) && !select.find(sel => sel.field === itemKey)) {
511
- return [...select, {
512
- field: itemKey
513
- }];
512
+ if (
513
+ itemKey &&
514
+ !elementFound &&
515
+ Array.isArray(select) &&
516
+ !(compositeKeys !== null && compositeKeys?.length) &&
517
+ !select.find(sel => sel.field === itemKey)
518
+ ) {
519
+ return [
520
+ ...select,
521
+ {
522
+ field: itemKey
523
+ }
524
+ ];
514
525
  }
515
526
 
516
527
  return select;
@@ -532,19 +543,18 @@ export default function ListView(props /* : ListViewProps */) {
532
543
  async function fetchDataFromServer() {
533
544
  let bCallSetRowsColumns = true;
534
545
  const { fieldDefs, itemKey, patchQueryFields } = meta;
535
- let listFields = fieldDefs ? buildSelect(fieldDefs, undefined, patchQueryFields, compositeKeys) : [];
546
+ let listFields = fieldDefs
547
+ ? buildSelect(fieldDefs, undefined, patchQueryFields, compositeKeys)
548
+ : [];
536
549
  listFields = addItemKeyInSelect(fieldDefs, itemKey, listFields, compositeKeys);
537
550
  const workListJSON = await fetchAllData(listFields);
538
551
 
539
- // don't update these fields until we return from promise
540
- let fields = presets[0].children[0].children;
541
-
542
552
  // this is an unresovled version of this.fields$, need unresolved, so can get the property reference
543
553
  const columnFields = componentConfig.presets[0].children[0].children;
544
554
 
545
- const tableDataResults = workListJSON['data'];
555
+ const tableDataResults = !bInForm ? workListJSON['data'].data : workListJSON['data'];
546
556
 
547
- const myColumns = getHeaderCells(columnFields, fieldDefs, fields);
557
+ const myColumns = getHeaderCells(columnFields, fieldDefs);
548
558
 
549
559
  const selectParams: any = [];
550
560
 
@@ -562,8 +572,6 @@ export default function ListView(props /* : ListViewProps */) {
562
572
 
563
573
  columnList = colList;
564
574
 
565
- fields = updateFields(fields, myColumns);
566
-
567
575
  setResponse(tableDataResults);
568
576
 
569
577
  const usingDataResults = getUsingData(tableDataResults);
@@ -655,17 +663,17 @@ export default function ListView(props /* : ListViewProps */) {
655
663
  });
656
664
  }
657
665
 
658
- function _rowClick(row: any) {
659
- // eslint-disable-next-line sonarjs/no-small-switch
660
- switch (rowClickAction) {
661
- case 'openAssignment':
662
- openAssignment(row);
663
- break;
666
+ // function _rowClick(row: any) {
667
+ // // eslint-disable-next-line sonarjs/no-small-switch
668
+ // switch (rowClickAction) {
669
+ // case 'openAssignment':
670
+ // openAssignment(row);
671
+ // break;
664
672
 
665
- default:
666
- break;
667
- }
668
- }
673
+ // default:
674
+ // break;
675
+ // }
676
+ // }
669
677
 
670
678
  function openWork(row) {
671
679
  const { pxRefObjectKey } = row;
@@ -874,7 +882,7 @@ export default function ListView(props /* : ListViewProps */) {
874
882
  }
875
883
 
876
884
  function _listViewClick(row, column) {
877
- const name = column.id
885
+ const name = column.id;
878
886
  if (column.displayAsLink) {
879
887
  const { pxObjClass } = row;
880
888
  let { pzInsKey } = row;
@@ -904,13 +912,12 @@ export default function ListView(props /* : ListViewProps */) {
904
912
  break;
905
913
  }
906
914
  }
907
-
908
915
  }
909
916
 
910
917
  function _listTitle() {
911
918
  const defaultTitle = 'List';
912
919
  let title = resolvedConfigProps.title || resolvedConfigProps?.label || defaultTitle;
913
- const inheritedProps = resolvedConfigProps?.["inheritedProps"];
920
+ const inheritedProps = resolvedConfigProps?.['inheritedProps'];
914
921
 
915
922
  // Let any title in resolvedConfigProps that isn't the default take precedence
916
923
  // but only look in inheritedProps if they exist
@@ -933,14 +940,12 @@ export default function ListView(props /* : ListViewProps */) {
933
940
  const index = response.findIndex(element => element[rowID] === value);
934
941
  const selectedRow = response[index];
935
942
  compositeKeys.forEach(element => {
936
- reqObj[element] = selectedRow[element]
943
+ reqObj[element] = selectedRow[element];
937
944
  });
938
945
  } else {
939
946
  reqObj[rowID] = value;
940
947
  }
941
- getPConnect()
942
- ?.getListActions?.()
943
- ?.setSelectedRows([reqObj]);
948
+ getPConnect()?.getListActions?.()?.setSelectedRows([reqObj]);
944
949
  setSelectedValue(value);
945
950
  };
946
951
 
@@ -952,16 +957,14 @@ export default function ListView(props /* : ListViewProps */) {
952
957
  const index = response.findIndex(element => element[rowID] === value);
953
958
  const selectedRow = response[index];
954
959
  compositeKeys.forEach(element => {
955
- reqObj[element] = selectedRow[element]
960
+ reqObj[element] = selectedRow[element];
956
961
  });
957
962
  reqObj['$selected'] = checked;
958
963
  } else {
959
964
  reqObj[rowID] = value;
960
965
  reqObj['$selected'] = checked;
961
966
  }
962
- getPConnect()
963
- ?.getListActions()
964
- ?.setSelectedRows([reqObj]);
967
+ getPConnect()?.getListActions()?.setSelectedRows([reqObj]);
965
968
  };
966
969
 
967
970
  const processColumnValue = (column, value) => {
@@ -974,14 +977,17 @@ export default function ListView(props /* : ListViewProps */) {
974
977
  case 'Date':
975
978
  case 'DateTime':
976
979
  theDateFormatInfo = getDateFormatInfo();
977
- theFormat = (type === 'DateTime') ? `${theDateFormatInfo.dateFormatStringLong} hh:mm a` : theDateFormatInfo.dateFormatStringLong;
980
+ theFormat =
981
+ type === 'DateTime'
982
+ ? `${theDateFormatInfo.dateFormatStringLong} hh:mm a`
983
+ : theDateFormatInfo.dateFormatStringLong;
978
984
  val = format(value, column.type, { format: theFormat });
979
- break;
985
+ break;
980
986
 
981
987
  case 'Currency':
982
988
  theCurrencyOptions = getCurrencyOptions(PCore?.getEnvironmentInfo()?.getLocale());
983
989
  val = format(value, column.type, theCurrencyOptions);
984
- break;
990
+ break;
985
991
 
986
992
  default:
987
993
  val = column.format && typeof value === 'number' ? column.format(value) : value;
@@ -1003,20 +1009,20 @@ export default function ListView(props /* : ListViewProps */) {
1003
1009
  </Grid>
1004
1010
  <Grid item>
1005
1011
  <TextField
1006
- label={ PCore.getLocaleUtils().getLocaleValue('Search', 'Search') }
1012
+ label={PCore.getLocaleUtils().getLocaleValue('Search', 'Search')}
1007
1013
  fullWidth
1008
1014
  variant='outlined'
1009
1015
  placeholder=''
1010
1016
  size='small'
1011
- id="search"
1017
+ id='search'
1012
1018
  onChange={_onSearch}
1013
1019
  />
1014
1020
  </Grid>
1015
1021
  </Grid>
1016
1022
  )}
1017
1023
  <>
1018
- {bInForm ? (
1019
- <TableContainer className={classes.tableInForm}>
1024
+ {!bInForm ? (
1025
+ <TableContainer id="list-view" className={classes.tableInForm}>
1020
1026
  <Table stickyHeader aria-label='sticky table'>
1021
1027
  <TableHead>
1022
1028
  <TableRow>
@@ -1058,12 +1064,7 @@ export default function ListView(props /* : ListViewProps */) {
1058
1064
  .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
1059
1065
  .map(row => {
1060
1066
  return (
1061
- <TableRow
1062
- key={row.pxRefObjectInsName || row.pyID}
1063
- onClick={() => {
1064
- _rowClick(row);
1065
- }}
1066
- >
1067
+ <TableRow key={row.pxRefObjectInsName || row.pyID}>
1067
1068
  {arColumns.map(column => {
1068
1069
  const value = row[column.id];
1069
1070
  return (
@@ -1100,7 +1101,7 @@ export default function ListView(props /* : ListViewProps */) {
1100
1101
  </Table>
1101
1102
  </TableContainer>
1102
1103
  ) : (
1103
- <TableContainer>
1104
+ <TableContainer id="list-view">
1104
1105
  <Table>
1105
1106
  <TableHead>
1106
1107
  <TableRow>
@@ -1137,12 +1138,7 @@ export default function ListView(props /* : ListViewProps */) {
1137
1138
  .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
1138
1139
  .map(row => {
1139
1140
  return (
1140
- <TableRow
1141
- key={row[rowID]}
1142
- onClick={() => {
1143
- _rowClick(row);
1144
- }}
1145
- >
1141
+ <TableRow key={row[rowID]}>
1146
1142
  {selectionMode === SELECTION_MODE.SINGLE && (
1147
1143
  <TableCell>
1148
1144
  <Radio