@pega/react-sdk-overrides 0.24.4 → 0.25.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 (118) hide show
  1. package/lib/designSystemExtension/AlertBanner/AlertBanner.tsx +1 -1
  2. package/lib/designSystemExtension/Banner/Banner.tsx +1 -1
  3. package/lib/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css +0 -1
  4. package/lib/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +11 -2
  5. package/lib/designSystemExtension/DetailsFields/DetailsFields.tsx +4 -4
  6. package/lib/designSystemExtension/FieldGroup/FieldGroup.tsx +4 -4
  7. package/lib/designSystemExtension/FieldGroupList/FieldGroupList.tsx +4 -4
  8. package/lib/designSystemExtension/FieldValueList/FieldValueList.tsx +6 -6
  9. package/lib/designSystemExtension/Operator/Operator.tsx +6 -5
  10. package/lib/designSystemExtension/Pulse/Pulse.tsx +2 -2
  11. package/lib/designSystemExtension/RichTextEditor/RichTextEditor.tsx +3 -2
  12. package/lib/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +1 -1
  13. package/lib/field/AutoComplete/AutoComplete.tsx +4 -4
  14. package/lib/field/CancelAlert/CancelAlert.tsx +4 -7
  15. package/lib/field/Checkbox/Checkbox.tsx +4 -4
  16. package/lib/field/Currency/Currency.tsx +10 -7
  17. package/lib/field/Date/Date.tsx +27 -42
  18. package/lib/field/DateTime/DateTime.tsx +39 -36
  19. package/lib/field/Decimal/Decimal.tsx +9 -4
  20. package/lib/field/Dropdown/Dropdown.tsx +29 -22
  21. package/lib/field/Email/Email.tsx +29 -8
  22. package/lib/field/Group/Group.tsx +2 -2
  23. package/lib/field/Integer/Integer.tsx +22 -8
  24. package/lib/field/Multiselect/Multiselect.tsx +8 -14
  25. package/lib/field/Multiselect/utils.ts +1 -1
  26. package/lib/field/Percentage/Percentage.tsx +8 -4
  27. package/lib/field/Phone/Phone.tsx +6 -5
  28. package/lib/field/Phone/config-ext.json +8 -0
  29. package/lib/field/RadioButtons/RadioButtons.tsx +3 -6
  30. package/lib/field/RichText/RichText.tsx +1 -1
  31. package/lib/field/RichText/config-ext.json +10 -0
  32. package/lib/field/ScalarList/ScalarList.tsx +3 -4
  33. package/lib/field/SemanticLink/SemanticLink.tsx +4 -4
  34. package/lib/field/TextArea/TextArea.tsx +26 -8
  35. package/lib/field/TextContent/TextContent.tsx +1 -1
  36. package/lib/field/TextInput/TextInput.tsx +2 -2
  37. package/lib/field/Time/Time.tsx +28 -21
  38. package/lib/field/URL/URL.tsx +26 -7
  39. package/lib/field/UserReference/UserReference.tsx +3 -5
  40. package/lib/helpers/common-utils.ts +24 -1
  41. package/lib/helpers/field-group-utils.ts +2 -2
  42. package/lib/helpers/formatters/Currency.ts +11 -16
  43. package/lib/helpers/formatters/common.ts +2 -1
  44. package/lib/helpers/formatters/index.ts +2 -4
  45. package/lib/helpers/simpleTableHelpers.ts +1 -1
  46. package/lib/infra/ActionButtons/ActionButtons.tsx +3 -3
  47. package/lib/infra/Assignment/Assignment.tsx +12 -12
  48. package/lib/infra/Containers/FlowContainer/FlowContainer.tsx +16 -28
  49. package/lib/infra/Containers/FlowContainer/helpers.ts +1 -5
  50. package/lib/infra/Containers/ModalViewContainer/ListViewActionButtons/ListViewActionButtons.tsx +9 -4
  51. package/lib/infra/Containers/ModalViewContainer/ModalViewContainer.tsx +8 -8
  52. package/lib/infra/Containers/SimpleView/helper.ts +1 -1
  53. package/lib/infra/Containers/ViewContainer/ViewContainer.tsx +1 -1
  54. package/lib/infra/DashboardFilter/DashboardFilter.tsx +4 -6
  55. package/lib/infra/DashboardFilter/filterUtils.tsx +3 -4
  56. package/lib/infra/DeferLoad/DeferLoad.tsx +8 -8
  57. package/lib/infra/MultiStep/MultiStep.tsx +15 -14
  58. package/lib/infra/NavBar/NavBar.css +1 -0
  59. package/lib/infra/NavBar/NavBar.tsx +25 -17
  60. package/lib/infra/RootContainer/RootContainer.tsx +5 -6
  61. package/lib/infra/Stages/Stages.tsx +4 -4
  62. package/lib/infra/VerticalTabs/LeftAlignVerticalTabs/LeftAlignVerticalTabs.tsx +4 -3
  63. package/lib/infra/VerticalTabs/VerticalTabs/VerticalTabs.tsx +2 -2
  64. package/lib/infra/View/View.tsx +37 -3
  65. package/lib/template/AdvancedSearch/AdvancedSearch.tsx +87 -0
  66. package/lib/template/AdvancedSearch/SearchGroup/persistUtils.ts +58 -0
  67. package/lib/template/AdvancedSearch/SearchGroups/SearchGroups.tsx +245 -0
  68. package/lib/template/AdvancedSearch/SearchGroups/hooks.ts +37 -0
  69. package/lib/template/AdvancedSearch/SearchGroups/index.tsx +1 -0
  70. package/lib/template/AdvancedSearch/SearchGroups/utils.ts +29 -0
  71. package/lib/template/AdvancedSearch/TemplateContext.ts +11 -0
  72. package/lib/template/AdvancedSearch/config-ext.json +9 -0
  73. package/lib/template/AdvancedSearch/index.tsx +1 -0
  74. package/lib/template/AppShell/AppShell.tsx +60 -10
  75. package/lib/template/BannerPage/config-ext.json +9 -0
  76. package/lib/template/CaseView/CaseView.tsx +10 -9
  77. package/lib/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +7 -7
  78. package/lib/template/Confirmation/Confirmation.tsx +3 -2
  79. package/lib/template/DataReference/DataReference.tsx +317 -107
  80. package/lib/template/DataReference/DataReferenceAdvancedSearchContext.js +10 -0
  81. package/lib/template/DataReference/SearchForm.tsx +148 -0
  82. package/lib/template/DataReference/utils.js +90 -0
  83. package/lib/template/DefaultForm/utils/index.ts +1 -3
  84. package/lib/template/Details/Details/Details.tsx +2 -2
  85. package/lib/template/Details/DetailsSubTabs/DetailsSubTabs.tsx +3 -3
  86. package/lib/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +2 -2
  87. package/lib/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +2 -2
  88. package/lib/template/Details/DynamicTabs/DynamicTabs.tsx +4 -4
  89. package/lib/template/FieldGroupTemplate/FieldGroupTemplate.tsx +10 -5
  90. package/lib/template/InlineDashboard/InlineDashboard.tsx +2 -2
  91. package/lib/template/InlineDashboardPage/config-ext.json +9 -0
  92. package/lib/template/ListView/ListView.tsx +200 -94
  93. package/lib/template/ListView/utils.ts +38 -6
  94. package/lib/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +2 -2
  95. package/lib/template/OneColumn/OneColumn/OneColumn.tsx +2 -2
  96. package/lib/template/PromotedFilters/PromotedFilters.tsx +1 -2
  97. package/lib/template/SimpleTable/SimpleTable/SimpleTable.tsx +0 -2
  98. package/lib/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +110 -86
  99. package/lib/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.tsx +2 -4
  100. package/lib/template/SubTabs/SubTabs.tsx +2 -2
  101. package/lib/template/SubTabs/tabUtils.ts +118 -1
  102. package/lib/template/TwoColumn/TwoColumn/TwoColumn.tsx +2 -2
  103. package/lib/template/TwoColumn/TwoColumnTab/TwoColumnTab.tsx +2 -2
  104. package/lib/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +2 -2
  105. package/lib/template/WssNavBar/WssNavBar.tsx +9 -9
  106. package/lib/widget/AppAnnouncement/AppAnnouncement.tsx +2 -2
  107. package/lib/widget/Attachment/Attachment.css +1 -0
  108. package/lib/widget/Attachment/Attachment.tsx +7 -9
  109. package/lib/widget/CaseHistory/CaseHistory.tsx +12 -10
  110. package/lib/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +1 -1
  111. package/lib/widget/FileUtility/FileUtility/FileUtility.tsx +5 -4
  112. package/lib/widget/Followers/Followers.tsx +2 -2
  113. package/lib/widget/QuickCreate/QuickCreate.tsx +0 -1
  114. package/lib/widget/QuickCreate/config-ext.json +9 -0
  115. package/lib/widget/SummaryItem/SummaryItem.tsx +4 -3
  116. package/lib/widget/ToDo/ToDo.tsx +92 -22
  117. package/package.json +1 -1
  118. /package/lib/infra/Containers/{helpers.ts → container-helpers.ts} +0 -0
@@ -2,8 +2,8 @@
2
2
  /* eslint-disable react/no-array-index-key */
3
3
  /* eslint-disable no-nested-ternary */
4
4
  import { useState, useEffect, useCallback } from 'react';
5
- import { CircularProgress, IconButton, Menu, MenuItem, Button } from '@material-ui/core';
6
- import MoreVertIcon from '@material-ui/icons/MoreVert';
5
+ import { CircularProgress, IconButton, Menu, MenuItem, Button } from '@mui/material';
6
+ import MoreVertIcon from '@mui/icons-material/MoreVert';
7
7
  import download from 'downloadjs';
8
8
 
9
9
  import { buildFilePropsFromResponse, getIconFromFileType, validateMaxSize } from '@pega/react-sdk-components/lib/components/helpers/attachmentHelpers';
@@ -33,7 +33,7 @@ const updateAttachmentState = (pConn, key, attachments) => {
33
33
  };
34
34
 
35
35
  export default function Attachment(props: AttachmentProps) {
36
- const { value, getPConnect, label, validatemessage, allowMultiple, extensions, displayMode } = props;
36
+ const { value, getPConnect, label, validatemessage, allowMultiple, extensions, displayMode, helperText } = props;
37
37
  /* this is a temporary fix because required is supposed to be passed as a boolean and NOT as a string */
38
38
  let { required, disabled } = props;
39
39
  [required, disabled] = [required, disabled].map(prop => prop === true || (typeof prop === 'string' && prop === 'true'));
@@ -155,11 +155,9 @@ export default function Attachment(props: AttachmentProps) {
155
155
  const context = pConn.getContextName();
156
156
  // set errors to property to block submit even on errors in file upload
157
157
  PCore.getMessageManager().addMessages({
158
- // @ts-ignore
159
158
  messages: [
160
159
  {
161
160
  type: 'error',
162
- // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
163
161
  message: pConn.getLocalizedValue('Error with one or more files', '', '')
164
162
  }
165
163
  ],
@@ -192,7 +190,6 @@ export default function Attachment(props: AttachmentProps) {
192
190
  const clearFieldErrorMessages = () => {
193
191
  const fieldName = (pConn.getStateProps() as any).value;
194
192
  const context = pConn.getContextName();
195
- // @ts-ignore
196
193
  PCore.getMessageManager().clearMessages({
197
194
  type: PCore.getConstants().MESSAGES.MESSAGES_TYPE_ERROR,
198
195
  property: fieldName,
@@ -217,9 +214,11 @@ export default function Attachment(props: AttachmentProps) {
217
214
  };
218
215
  if (!validateMaxSize(f, maxAttachmentSize)) {
219
216
  f.props.error = true;
217
+ f.inProgress = false;
220
218
  f.props.meta = pConn.getLocalizedValue(`File is too big. Max allowed size is ${maxAttachmentSize}MB.`, '', '');
221
219
  } else if (!validateFileExtension(f, extensions)) {
222
220
  f.props.error = true;
221
+ f.inProgress = false;
223
222
  f.props.meta = `${pConn.getLocalizedValue('File has invalid extension. Allowed extensions are:', '', '')} ${extensions.replaceAll(
224
223
  '.',
225
224
  ''
@@ -229,11 +228,9 @@ export default function Attachment(props: AttachmentProps) {
229
228
  const fieldName = (pConn.getStateProps() as any).value;
230
229
  const context = pConn.getContextName();
231
230
  PCore.getMessageManager().addMessages({
232
- // @ts-ignore
233
231
  messages: [
234
232
  {
235
233
  type: 'error',
236
- // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
237
234
  message: pConn.getLocalizedValue('Error with one or more files', '', '')
238
235
  }
239
236
  ],
@@ -430,6 +427,7 @@ export default function Attachment(props: AttachmentProps) {
430
427
  aria-expanded={open ? 'true' : undefined}
431
428
  aria-haspopup='true'
432
429
  onClick={handleClick}
430
+ size='large'
433
431
  >
434
432
  <MoreVertIcon />
435
433
  </IconButton>
@@ -458,7 +456,7 @@ export default function Attachment(props: AttachmentProps) {
458
456
  <div className='file-upload-container'>
459
457
  <span className={`label ${required ? 'file-label' : ''}`}>{label}</span>
460
458
  {((files.length === 0 && allowMultiple !== 'true') || allowMultiple === 'true') && <section>{content}</section>}
461
- {validatemessage !== '' ? <span className='file-error'>{validatemessage}</span> : ''}
459
+ {validatemessage !== '' ? <span className='file-error'>{validatemessage}</span> : <span style={{ fontSize: '14px' }}>{helperText}</span>}
462
460
  {files && files.length > 0 && <section>{fileDisplay}</section>}
463
461
  </div>
464
462
  );
@@ -1,11 +1,13 @@
1
1
  import { useEffect, useRef, useState } from 'react';
2
- import { withStyles, Theme, createStyles } from '@material-ui/core/styles';
3
- import Table from '@material-ui/core/Table';
4
- import TableBody from '@material-ui/core/TableBody';
5
- import TableCell from '@material-ui/core/TableCell';
6
- import TableContainer from '@material-ui/core/TableContainer';
7
- import TableHead from '@material-ui/core/TableHead';
8
- import TableRow from '@material-ui/core/TableRow';
2
+ import { Theme } from '@mui/material/styles';
3
+ import withStyles from '@mui/styles/withStyles';
4
+ import createStyles from '@mui/styles/createStyles';
5
+ import Table from '@mui/material/Table';
6
+ import TableBody from '@mui/material/TableBody';
7
+ import TableCell from '@mui/material/TableCell';
8
+ import TableContainer from '@mui/material/TableContainer';
9
+ import TableHead from '@mui/material/TableHead';
10
+ import TableRow from '@mui/material/TableRow';
9
11
  import isDeepEqual from 'fast-deep-equal/react';
10
12
 
11
13
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
@@ -145,9 +147,9 @@ export default function CaseHistory(props: CaseHistoryProps) {
145
147
  const theKey = `CaseHistory-${index}`;
146
148
  theDataRows.push(
147
149
  <TableRow key={theKey}>
148
- <StyledTableCell>{dataRow[0] ? dataRow[0] : '---'}</StyledTableCell>
149
- <StyledTableCell>{dataRow[1] ? dataRow[1] : '---'}</StyledTableCell>
150
- <StyledTableCell>{dataRow[2] ? dataRow[2] : '---'}</StyledTableCell>
150
+ <StyledTableCell>{dataRow[0] ? dataRow[0] : ('---' as any)}</StyledTableCell>
151
+ <StyledTableCell>{dataRow[1] ? dataRow[1] : ('---' as any)}</StyledTableCell>
152
+ <StyledTableCell>{dataRow[2] ? dataRow[2] : ('---' as any)}</StyledTableCell>
151
153
  </TableRow>
152
154
  );
153
155
  });
@@ -1,4 +1,4 @@
1
- import { Button } from '@material-ui/core';
1
+ import { Button } from '@mui/material';
2
2
  import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
3
3
  import './ActionButtonsForFileUtil.css';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useState } from 'react';
2
- import TextField from '@material-ui/core/TextField';
2
+ import TextField from '@mui/material/TextField';
3
3
 
4
4
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
5
5
 
@@ -7,8 +7,8 @@ import download from 'downloadjs';
7
7
  // import SummaryList from '../../SummaryList';
8
8
  // import ActionButtonsForFileUtil from '../ActionButtonsForFileUtil';
9
9
  import './FileUtility.css';
10
- import { IconButton, Menu, MenuItem, Button, CircularProgress } from '@material-ui/core';
11
- import MoreVertIcon from '@material-ui/icons/MoreVert';
10
+ import { IconButton, Menu, MenuItem, Button, CircularProgress } from '@mui/material';
11
+ import MoreVertIcon from '@mui/icons-material/MoreVert';
12
12
 
13
13
  import { validateMaxSize } from '@pega/react-sdk-components/lib/components/helpers/attachmentHelpers';
14
14
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
@@ -508,10 +508,11 @@ export default function FileUtility(props: FileUtilityProps) {
508
508
  aria-expanded={open ? 'true' : undefined}
509
509
  aria-haspopup='true'
510
510
  onClick={handleClick}
511
+ size='large'
511
512
  >
512
513
  <MoreVertIcon />
513
514
  </IconButton>
514
- <Menu style={{ marginTop: '3rem' }} id='simple-menu' anchorEl={anchorEl} keepMounted open={Boolean(anchorEl)} onClose={handleClose}>
515
+ <Menu id='simple-menu' anchorEl={anchorEl} keepMounted open={Boolean(anchorEl)} onClose={handleClose}>
515
516
  <MenuItem style={{ fontSize: '14px' }} onClick={onAddFilesClick}>
516
517
  {thePConn.getLocalizedValue('Add files', '', '')}
517
518
  </MenuItem>{' '}
@@ -1,6 +1,6 @@
1
1
  import { PropsWithChildren } from 'react';
2
- import { Card, CardContent, CardHeader, Typography } from '@material-ui/core';
3
- import { makeStyles } from '@material-ui/core/styles';
2
+ import { Card, CardContent, CardHeader, Typography } from '@mui/material';
3
+ import makeStyles from '@mui/styles/makeStyles';
4
4
  import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
5
5
 
6
6
  interface FollowersProps extends PConnProps {
@@ -35,7 +35,6 @@ export default function QuickCreate(props: QuickCreateProps) {
35
35
  const defaultCases: any = [];
36
36
  const envInfo = PCore.getEnvironmentInfo();
37
37
  if (envInfo?.environmentInfoObject?.pyCaseTypeList) {
38
- // @ts-ignore - Property 'forEach' does not exist on type 'string'
39
38
  envInfo.environmentInfoObject.pyCaseTypeList.forEach(casetype => {
40
39
  if (casetype.pyWorkTypeName && casetype.pyWorkTypeImplementationClassName) {
41
40
  defaultCases.push({
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "QuickCreate",
3
+ "label": "Quick create",
4
+ "description": "Quick create widget",
5
+ "type": "Widget",
6
+ "subtype": "PAGE",
7
+ "properties": [],
8
+ "defaultConfig": {}
9
+ }
@@ -1,6 +1,6 @@
1
1
  import { useState } from 'react';
2
- import { IconButton, Menu, MenuItem } from '@material-ui/core';
3
- import MoreVertIcon from '@material-ui/icons/MoreVert';
2
+ import { IconButton, Menu, MenuItem } from '@mui/material';
3
+ import MoreVertIcon from '@mui/icons-material/MoreVert';
4
4
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
5
5
  import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
6
6
 
@@ -69,10 +69,11 @@ export default function SummaryItem(props: SummaryItemProps) {
69
69
  aria-expanded={open ? 'true' : undefined}
70
70
  aria-haspopup='true'
71
71
  onClick={handleClick}
72
+ size='large'
72
73
  >
73
74
  <MoreVertIcon />
74
75
  </IconButton>
75
- <Menu style={{ marginTop: '3rem' }} id='file-menu' anchorEl={anchorEl} keepMounted open={Boolean(anchorEl)} onClose={handleClose}>
76
+ <Menu id='file-menu' anchorEl={anchorEl} keepMounted open={Boolean(anchorEl)} onClose={handleClose}>
76
77
  {item.actions &&
77
78
  item.actions.map(option => (
78
79
  <MenuItem style={{ fontSize: '14px' }} key={option.id || option.text} onClick={option.onClick}>
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-shadow */
2
- import React, { useState } from 'react';
2
+ import React, { useCallback, useEffect, useState } from 'react';
3
3
  import {
4
4
  Box,
5
5
  Button,
@@ -13,19 +13,53 @@ import {
13
13
  ListItem,
14
14
  ListItemText,
15
15
  ListItemSecondaryAction
16
- } from '@material-ui/core';
17
- import Snackbar from '@material-ui/core/Snackbar';
18
- import IconButton from '@material-ui/core/IconButton';
19
- import CloseIcon from '@material-ui/icons/Close';
20
- import ArrowForwardIosOutlinedIcon from '@material-ui/icons/ArrowForwardIosOutlined';
21
- import { makeStyles, useTheme } from '@material-ui/core/styles';
22
- import useMediaQuery from '@material-ui/core/useMediaQuery';
16
+ } from '@mui/material';
17
+ import Snackbar from '@mui/material/Snackbar';
18
+ import IconButton from '@mui/material/IconButton';
19
+ import CloseIcon from '@mui/icons-material/Close';
20
+ import ArrowForwardIosOutlinedIcon from '@mui/icons-material/ArrowForwardIosOutlined';
21
+ import { useTheme } from '@mui/material/styles';
22
+ import makeStyles from '@mui/styles/makeStyles';
23
+ import useMediaQuery from '@mui/material/useMediaQuery';
23
24
 
24
25
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
25
26
  import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
26
27
 
27
28
  import './ToDo.css';
28
29
 
30
+ const fetchMyWorkList = (datapage, fields, numberOfRecords, includeTotalCount, context) => {
31
+ return PCore.getDataPageUtils()
32
+ .getDataAsync(
33
+ datapage,
34
+ context,
35
+ {},
36
+ {
37
+ pageNumber: 1,
38
+ pageSize: numberOfRecords
39
+ },
40
+ {
41
+ select: Object.keys(fields).map(key => ({ field: PCore.getAnnotationUtils().getPropertyName(fields[key]) }))
42
+ },
43
+ {
44
+ invalidateCache: true,
45
+ additionalApiParams: {
46
+ includeTotalCount
47
+ }
48
+ }
49
+ )
50
+ .then(response => {
51
+ return {
52
+ ...response,
53
+ data: (Array.isArray(response?.data) ? response.data : []).map(row =>
54
+ Object.keys(fields).reduce((obj, key) => {
55
+ obj[key] = row[PCore.getAnnotationUtils().getPropertyName(fields[key])];
56
+ return obj;
57
+ }, {})
58
+ )
59
+ };
60
+ });
61
+ };
62
+
29
63
  interface ToDoProps extends PConnProps {
30
64
  // If any, enter additional props that only exist on this component
31
65
  datasource?: any;
@@ -37,7 +71,7 @@ interface ToDoProps extends PConnProps {
37
71
  itemKey?: string;
38
72
  showTodoList?: boolean;
39
73
  type?: string;
40
- // eslint-disable-next-line react/no-unused-prop-types
74
+
41
75
  context?: string;
42
76
  isConfirm?: boolean;
43
77
  }
@@ -81,13 +115,21 @@ const useStyles = makeStyles(theme => ({
81
115
  }));
82
116
 
83
117
  export default function ToDo(props: ToDoProps) {
84
- const { getPConnect, datasource = [], headerText = 'To do', showTodoList = true, myWorkList = {}, type = 'worklist', isConfirm = false } = props;
118
+ const {
119
+ getPConnect,
120
+ context,
121
+ datasource = [],
122
+ headerText = 'To do',
123
+ showTodoList = true,
124
+ myWorkList = {},
125
+ type = 'worklist',
126
+ isConfirm = false
127
+ } = props;
85
128
 
86
129
  const CONSTS = PCore.getConstants();
87
130
 
88
131
  const bLogging = true;
89
- let assignmentCount = 0;
90
- const currentUser = PCore.getEnvironmentInfo().getOperatorName();
132
+ const currentUser = PCore.getEnvironmentInfo().getOperatorName() ?? '';
91
133
  const currentUserInitials = Utils.getInitials(currentUser);
92
134
  const assignmentsSource = datasource?.source || myWorkList?.source;
93
135
 
@@ -106,17 +148,36 @@ export default function ToDo(props: ToDoProps) {
106
148
  const showlessLocalizedValue = localizedVal('show_less', 'CosmosFields');
107
149
  const showMoreLocalizedValue = localizedVal('show_more', 'CosmosFields');
108
150
  const canPerform = assignments?.[0]?.canPerform === 'true' || assignments?.[0]?.canPerform === true;
109
- // const { setOpen } = useNavBar();
151
+ const [count, setCount] = useState(0);
152
+
153
+ const {
154
+ WORK_BASKET: { MY_WORK_LIST }
155
+ } = PCore.getConstants();
110
156
 
111
157
  function initAssignments(): any[] {
112
158
  if (assignmentsSource) {
113
- assignmentCount = assignmentsSource.length;
114
159
  return topThreeAssignments(assignmentsSource);
115
160
  }
116
161
  // turn off todolist
117
162
  return [];
118
163
  }
119
164
 
165
+ const deferLoadWorklistItems = useCallback(
166
+ responseData => {
167
+ setCount(responseData.totalCount);
168
+ setAssignments(responseData.data);
169
+ },
170
+ [MY_WORK_LIST]
171
+ );
172
+
173
+ useEffect(() => {
174
+ if (Object.keys(myWorkList).length && myWorkList.datapage) {
175
+ fetchMyWorkList(myWorkList.datapage, getPConnect().getComponentConfig()?.myWorkList.fields, 3, true, context).then(responseData => {
176
+ deferLoadWorklistItems(responseData);
177
+ });
178
+ }
179
+ }, []);
180
+
120
181
  const getAssignmentId = assignment => {
121
182
  return type === CONSTS.TODO ? assignment.ID : assignment.id;
122
183
  };
@@ -137,7 +198,7 @@ export default function ToDo(props: ToDoProps) {
137
198
  setShowSnackbar(true);
138
199
  }
139
200
 
140
- function handleSnackbarClose(event: React.SyntheticEvent | React.MouseEvent, reason?: string) {
201
+ function handleSnackbarClose(event: React.SyntheticEvent<any> | Event, reason?: string) {
141
202
  if (reason === 'clickaway') {
142
203
  return;
143
204
  }
@@ -146,12 +207,18 @@ export default function ToDo(props: ToDoProps) {
146
207
 
147
208
  function _showMore() {
148
209
  setBShowMore(false);
149
- setAssignments(assignmentsSource);
210
+ if (type === CONSTS.WORKLIST && count && count > assignments.length && !assignmentsSource) {
211
+ fetchMyWorkList(myWorkList.datapage, getPConnect().getComponentConfig()?.myWorkList.fields, count, false, context).then(response => {
212
+ setAssignments(response.data);
213
+ });
214
+ } else {
215
+ setAssignments(assignmentsSource);
216
+ }
150
217
  }
151
218
 
152
219
  function _showLess() {
153
220
  setBShowMore(true);
154
- setAssignments(topThreeAssignments(assignmentsSource));
221
+ setAssignments(assignments => assignments.slice(0, 3));
155
222
  }
156
223
 
157
224
  function clickGo(assignment) {
@@ -223,12 +290,15 @@ export default function ToDo(props: ToDoProps) {
223
290
  );
224
291
  };
225
292
 
293
+ // eslint-disable-next-line no-nested-ternary
294
+ const getCount = () => (assignmentsSource ? assignmentsSource.length : type === CONSTS.WORKLIST ? count : 0);
295
+
226
296
  const toDoContent = (
227
297
  <>
228
298
  {showTodoList && (
229
299
  <CardHeader
230
300
  title={
231
- <Badge badgeContent={assignmentCount} overlap='rectangular' color='primary'>
301
+ <Badge badgeContent={getCount()} overlap='rectangular' color='primary'>
232
302
  <Typography variant='h6'>{headerText}&nbsp;&nbsp;&nbsp;</Typography>
233
303
  </Badge>
234
304
  }
@@ -249,7 +319,7 @@ export default function ToDo(props: ToDoProps) {
249
319
  </div>
250
320
  {(!isConfirm || canPerform) && (
251
321
  <div style={{ marginLeft: 'auto' }}>
252
- <IconButton id='go-btn' onClick={() => clickGo(assignment)}>
322
+ <IconButton id='go-btn' onClick={() => clickGo(assignment)} size='large'>
253
323
  <ArrowForwardIosOutlinedIcon />
254
324
  </IconButton>
255
325
  </div>
@@ -267,7 +337,7 @@ export default function ToDo(props: ToDoProps) {
267
337
  {showTodoList && (
268
338
  <CardHeader
269
339
  title={
270
- <Badge badgeContent={assignmentCount} overlap='rectangular' color='primary'>
340
+ <Badge badgeContent={getCount()} overlap='rectangular' color='primary'>
271
341
  <Typography variant='h6'>{headerText}&nbsp;&nbsp;&nbsp;</Typography>
272
342
  </Badge>
273
343
  }
@@ -280,7 +350,7 @@ export default function ToDo(props: ToDoProps) {
280
350
  <ListItem key={getAssignmentId(assignment)} dense divider onClick={() => clickGo(assignment)}>
281
351
  <ListItemText primary={getAssignmentName(assignment)} secondary={getListItemComponent(assignment)} />
282
352
  <ListItemSecondaryAction>
283
- <IconButton onClick={() => clickGo(assignment)}>
353
+ <IconButton onClick={() => clickGo(assignment)} size='large'>
284
354
  <ArrowForwardIosOutlinedIcon />
285
355
  </IconButton>
286
356
  </ListItemSecondaryAction>
@@ -294,7 +364,7 @@ export default function ToDo(props: ToDoProps) {
294
364
  {type === CONSTS.TODO && !isConfirm && <Card className={classes.todoWrapper}>{toDoContent}</Card>}
295
365
  {type === CONSTS.TODO && isConfirm && <>{toDoContent}</>}
296
366
 
297
- {assignmentCount > 3 && (
367
+ {getCount() > 3 && (
298
368
  <Box display='flex' justifyContent='center'>
299
369
  {bShowMore ? (
300
370
  <Button color='primary' onClick={_showMore}>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/react-sdk-overrides",
3
- "version": "0.24.4",
3
+ "version": "0.25.1",
4
4
  "description": "React SDK - Code for overriding components",
5
5
  "_filesComment": "During packing, npm ignores everything NOT in the files list",
6
6
  "files": [