@pega/react-sdk-overrides 0.23.26 → 8.8.21

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 (139) hide show
  1. package/lib/designSystemExtension/AlertBanner/AlertBanner.tsx +47 -0
  2. package/lib/designSystemExtension/AlertBanner/index.tsx +1 -0
  3. package/lib/designSystemExtension/Banner/Banner.tsx +12 -1
  4. package/lib/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +15 -10
  5. package/lib/designSystemExtension/DetailsFields/DetailsFields.tsx +10 -11
  6. package/lib/designSystemExtension/FieldGroup/FieldGroup.tsx +10 -3
  7. package/lib/designSystemExtension/FieldGroupList/FieldGroupList.tsx +11 -5
  8. package/lib/designSystemExtension/FieldValueList/FieldValueList.tsx +11 -3
  9. package/lib/designSystemExtension/Operator/Operator.tsx +30 -21
  10. package/lib/designSystemExtension/Pulse/Pulse.tsx +11 -7
  11. package/lib/designSystemExtension/RichTextEditor/RichTextEditor.tsx +121 -0
  12. package/lib/designSystemExtension/RichTextEditor/index.tsx +1 -0
  13. package/lib/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +12 -3
  14. package/lib/field/AutoComplete/AutoComplete.tsx +37 -18
  15. package/lib/field/CancelAlert/CancelAlert.tsx +21 -12
  16. package/lib/field/Checkbox/Checkbox.tsx +41 -17
  17. package/lib/field/Currency/Currency.tsx +23 -15
  18. package/lib/field/Currency/currency-utils.ts +1 -2
  19. package/lib/field/Date/Date.tsx +31 -17
  20. package/lib/field/DateTime/DateTime.tsx +26 -15
  21. package/lib/field/Decimal/Decimal.tsx +82 -19
  22. package/lib/field/Dropdown/Dropdown.tsx +57 -14
  23. package/lib/field/Email/Email.tsx +17 -9
  24. package/lib/field/Integer/Integer.tsx +15 -7
  25. package/lib/field/Percentage/Percentage.tsx +15 -7
  26. package/lib/field/Phone/Phone.tsx +21 -12
  27. package/lib/field/RadioButtons/RadioButtons.tsx +54 -27
  28. package/lib/field/RichText/RichText.tsx +93 -0
  29. package/lib/field/RichText/index.tsx +1 -0
  30. package/lib/field/ScalarList/ScalarList.tsx +64 -0
  31. package/lib/field/ScalarList/config-ext.json +8 -0
  32. package/lib/field/ScalarList/index.tsx +1 -0
  33. package/lib/field/SemanticLink/SemanticLink.tsx +26 -25
  34. package/lib/field/SemanticLink/utils.ts +2 -1
  35. package/lib/field/TextArea/TextArea.tsx +14 -5
  36. package/lib/field/TextContent/TextContent.tsx +10 -1
  37. package/lib/field/TextInput/TextInput.tsx +40 -11
  38. package/lib/field/Time/Time.tsx +29 -26
  39. package/lib/field/URL/URL.tsx +24 -8
  40. package/lib/field/UserReference/UserReference.tsx +52 -60
  41. package/lib/helpers/{attachmentHelpers.js → attachmentHelpers.ts} +5 -5
  42. package/lib/helpers/auth.js +741 -390
  43. package/lib/helpers/authManager.ts +933 -0
  44. package/lib/helpers/case-utils.tsx +103 -0
  45. package/lib/helpers/common-utils.ts +4 -0
  46. package/lib/helpers/config_access.js +63 -145
  47. package/lib/helpers/data_page.ts +2 -1
  48. package/lib/helpers/date-format-utils.ts +29 -19
  49. package/lib/helpers/{event-utils.js → event-utils.ts} +1 -1
  50. package/lib/helpers/{field-group-utils.js → field-group-utils.ts} +4 -3
  51. package/lib/helpers/formatters/{Currency.js → Currency.ts} +13 -12
  52. package/lib/helpers/formatters/{CurrencyMap.js → CurrencyMap.ts} +8 -5
  53. package/lib/helpers/formatters/{Date.js → Date.ts} +2 -2
  54. package/lib/helpers/formatters/{common.js → common.ts} +4 -4
  55. package/lib/helpers/formatters/{index.js → index.ts} +3 -3
  56. package/lib/helpers/simpleTableHelpers.ts +10 -6
  57. package/lib/helpers/state-utils.tsx +47 -0
  58. package/lib/helpers/template-utils.ts +3 -4
  59. package/lib/helpers/utils.ts +12 -4
  60. package/lib/helpers/versionHelpers.ts +0 -1
  61. package/lib/infra/ActionButtons/ActionButtons.tsx +13 -18
  62. package/lib/infra/Assignment/Assignment.tsx +38 -32
  63. package/lib/infra/AssignmentCard/AssignmentCard.tsx +15 -19
  64. package/lib/infra/Containers/FlowContainer/FlowContainer.tsx +76 -64
  65. package/lib/infra/Containers/FlowContainer/{helpers.js → helpers.ts} +18 -16
  66. package/lib/infra/Containers/ModalViewContainer/ModalViewContainer.tsx +41 -27
  67. package/lib/infra/Containers/ViewContainer/ViewContainer.tsx +19 -28
  68. package/lib/infra/DashboardFilter/DashboardFilter.tsx +16 -20
  69. package/lib/infra/DashboardFilter/filterUtils.tsx +3 -1
  70. package/lib/infra/DeferLoad/DeferLoad.tsx +16 -19
  71. package/lib/infra/ErrorBoundary/ErrorBoundary.tsx +20 -19
  72. package/lib/infra/MultiStep/MultiStep.tsx +24 -24
  73. package/lib/infra/NavBar/NavBar.tsx +23 -24
  74. package/lib/infra/Reference/Reference.tsx +13 -18
  75. package/lib/infra/Region/Region.tsx +8 -6
  76. package/lib/infra/RootContainer/RootContainer.tsx +32 -39
  77. package/lib/infra/Stages/Stages.tsx +15 -9
  78. package/lib/infra/VerticalTabs/LeftAlignVerticalTabs/LeftAlignVerticalTabs.tsx +8 -1
  79. package/lib/infra/VerticalTabs/VerticalTabs/VerticalTabs.tsx +12 -12
  80. package/lib/infra/View/View.tsx +28 -56
  81. package/lib/template/AppShell/AppShell.tsx +51 -34
  82. package/lib/template/BannerPage/BannerPage.tsx +26 -31
  83. package/lib/template/CaseSummary/CaseSummary.tsx +15 -8
  84. package/lib/template/CaseView/CaseView.tsx +137 -100
  85. package/lib/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +27 -27
  86. package/lib/template/Confirmation/Confirmation.tsx +29 -52
  87. package/lib/template/DataReference/DataReference.tsx +50 -52
  88. package/lib/template/DefaultForm/DefaultForm.tsx +29 -20
  89. package/lib/template/DefaultForm/utils/index.ts +33 -0
  90. package/lib/template/Details/Details/Details.tsx +16 -17
  91. package/lib/template/Details/DetailsSubTabs/DetailsSubTabs.tsx +13 -16
  92. package/lib/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +19 -18
  93. package/lib/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +20 -18
  94. package/lib/template/FieldGroupTemplate/FieldGroupTemplate.tsx +24 -27
  95. package/lib/template/InlineDashboard/InlineDashboard.tsx +11 -7
  96. package/lib/template/InlineDashboardPage/InlineDashboardPage.tsx +19 -17
  97. package/lib/template/ListPage/ListPage.tsx +14 -13
  98. package/lib/template/ListView/ListView.tsx +191 -186
  99. package/lib/template/ListView/{hooks.js → hooks.ts} +3 -1
  100. package/lib/template/ListView/{utils.js → utils.ts} +172 -23
  101. package/lib/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +12 -17
  102. package/lib/template/NarrowWide/NarrowWide/NarrowWide.tsx +16 -1
  103. package/lib/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +19 -18
  104. package/lib/template/NarrowWide/NarrowWideForm/NarrowWideForm.tsx +9 -1
  105. package/lib/template/NarrowWide/NarrowWidePage/NarrowWidePage.tsx +17 -17
  106. package/lib/template/OneColumn/OneColumn/OneColumn.tsx +8 -7
  107. package/lib/template/OneColumn/OneColumnPage/OneColumnPage.tsx +10 -10
  108. package/lib/template/OneColumn/OneColumnTab/OneColumnTab.tsx +5 -7
  109. package/lib/template/PromotedFilters/PromotedFilters.tsx +23 -17
  110. package/lib/template/SimpleTable/SimpleTable/SimpleTable.tsx +103 -6
  111. package/lib/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +28 -7
  112. package/lib/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.tsx +26 -31
  113. package/lib/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +34 -36
  114. package/lib/template/SubTabs/SubTabs.tsx +10 -11
  115. package/lib/template/SubTabs/tabUtils.ts +0 -2
  116. package/lib/template/TwoColumn/TwoColumn/TwoColumn.tsx +10 -15
  117. package/lib/template/TwoColumn/TwoColumnPage/TwoColumnPage.tsx +10 -10
  118. package/lib/template/TwoColumn/TwoColumnTab/TwoColumnTab.tsx +10 -12
  119. package/lib/template/WideNarrow/WideNarrow/WideNarrow.tsx +17 -3
  120. package/lib/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +35 -25
  121. package/lib/template/WideNarrow/WideNarrowForm/WideNarrowForm.tsx +7 -1
  122. package/lib/template/WideNarrow/WideNarrowPage/WideNarrowPage.tsx +15 -17
  123. package/lib/template/WssNavBar/WssNavBar.tsx +20 -3
  124. package/lib/widget/AppAnnouncement/AppAnnouncement.tsx +13 -21
  125. package/lib/widget/Attachment/Attachment.css +15 -3
  126. package/lib/widget/Attachment/Attachment.tsx +51 -32
  127. package/lib/widget/CaseHistory/CaseHistory.tsx +13 -11
  128. package/lib/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +13 -1
  129. package/lib/widget/FileUtility/FileUtility/FileUtility.tsx +40 -26
  130. package/lib/widget/Followers/Followers.tsx +10 -11
  131. package/lib/widget/QuickCreate/QuickCreate.tsx +15 -6
  132. package/lib/widget/SummaryItem/SummaryItem.tsx +12 -4
  133. package/lib/widget/SummaryList/SummaryList.tsx +17 -3
  134. package/lib/widget/ToDo/ToDo.tsx +69 -104
  135. package/package.json +1 -1
  136. package/lib/helpers/authManager.js +0 -631
  137. /package/lib/helpers/formatters/{Boolean.js → Boolean.ts} +0 -0
  138. /package/lib/helpers/{reactContextHelpers.js → reactContextHelpers.ts} +0 -0
  139. /package/lib/template/ListView/{DefaultViewMeta.js → DefaultViewMeta.ts} +0 -0
@@ -2,18 +2,33 @@ import React, { useEffect, useState } from "react";
2
2
  import TextField from '@material-ui/core/TextField';
3
3
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
4
4
  import download from "downloadjs";
5
- import SummaryList from '@pega/react-sdk-components/lib/components/widget/SummaryList';
6
- import ActionButtonsForFileUtil from '@pega/react-sdk-components/lib/components/widget/FileUtility/ActionButtonsForFileUtil';
5
+ // import SummaryList from '../../SummaryList';
6
+ // import ActionButtonsForFileUtil from '../ActionButtonsForFileUtil';
7
7
  import './FileUtility.css';
8
8
  import { IconButton, Menu, MenuItem } from '@material-ui/core';
9
9
  import MoreVertIcon from '@material-ui/icons/MoreVert';
10
10
  import { Button } from '@material-ui/core';
11
11
  import { validateMaxSize } from '@pega/react-sdk-components/lib/components/helpers/attachmentHelpers';
12
12
  import { CircularProgress } from "@material-ui/core";
13
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
13
14
 
14
- declare const PCore;
15
+ import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
16
+
17
+
18
+ interface FileUtilityProps extends PConnProps {
19
+ // If any, enter additional props that only exist on this component
20
+ }
21
+
22
+
23
+ // Remove this and use "real" PCore type once .d.ts is fixed (currently shows 5 errors)
24
+ declare const PCore: any;
25
+
26
+
27
+ export default function FileUtility(props:FileUtilityProps) {
28
+ // Get emitted components from map (so we can get any override that may exist)
29
+ const SummaryList = getComponentFromMap('SummaryList');
30
+ const ActionButtonsForFileUtil = getComponentFromMap('ActionButtonsForFileUtil');
15
31
 
16
- export default function FileUtility(props) {
17
32
  const { getPConnect } = props;
18
33
  const thePConn = getPConnect();
19
34
  const required = true;
@@ -22,8 +37,8 @@ export default function FileUtility(props) {
22
37
  count: 0
23
38
  };
24
39
  const [list, setList] = useState(listTemp);
25
- const headerSvgIcon$ = Utils.getImageSrc('paper-clip', PCore.getAssetLoader().getStaticServerUrl());
26
- const closeSvgIcon = Utils.getImageSrc("times", PCore.getAssetLoader().getStaticServerUrl());
40
+ const headerSvgIcon$ = Utils.getImageSrc('paper-clip', Utils.getSDKStaticConentUrl());
41
+ const closeSvgIcon = Utils.getImageSrc("times", Utils.getSDKStaticConentUrl());
27
42
  const configProps: any = thePConn.resolveConfigProps(thePConn.getConfigProps());
28
43
 
29
44
  const header = configProps.label;
@@ -31,16 +46,16 @@ export default function FileUtility(props) {
31
46
  showfileModal: false,
32
47
  fileList: [],
33
48
  attachedFiles: [],
34
- fileMainButtons: [{ actionID: "attach", jsAction: "attachFiles", name: "Attach files"}],
35
- fileSecondaryButtons: [{ actionID: "cancel", jsAction: "cancel", name: "Cancel"}]
49
+ fileMainButtons: [{ actionID: "attach", jsAction: "attachFiles", name: thePConn.getLocalizedValue('Attach files', '', '')}], // 2nd and 3rd args empty string until typedef marked correctly
50
+ fileSecondaryButtons: [{ actionID: "cancel", jsAction: "cancel", name: thePConn.getLocalizedValue('Cancel', '', '')}] // 2nd and 3rd args empty string until typedef marked correctly
36
51
  };
37
52
  const [fileData, setFileData] = useState(fileTemp);
38
53
  const linkTemp = {
39
54
  showLinkModal: false,
40
55
  linksList: [],
41
56
  attachedLinks: [],
42
- linkMainButtons: [{ actionID: "attach", jsAction: "attachLinks", name: "Attach links"}],
43
- linkSecondaryButtons: [{ actionID: "cancel", jsAction: "cancel", name: "Cancel"}]
57
+ linkMainButtons: [{ actionID: "attach", jsAction: "attachLinks", name: thePConn.getLocalizedValue('Attach links', '', '')}], // 2nd and 3rd args empty string until typedef marked correctly
58
+ linkSecondaryButtons: [{ actionID: "cancel", jsAction: "cancel", name: thePConn.getLocalizedValue('Cancel', '', '')}] // 2nd and 3rd args empty string until typedef marked correctly
44
59
  };
45
60
  const [linkData, setLinkData] = useState(linkTemp);
46
61
  const [anchorEl, setAnchorEl] = useState(null);
@@ -75,12 +90,11 @@ export default function FileUtility(props) {
75
90
  }) {
76
91
  let actions;
77
92
 
78
-
79
93
  if (att.progress && att.progress !== 100) {
80
94
  actions = [
81
95
  {
82
96
  id: `Cancel-${att.ID}`,
83
- text: "Cancel",
97
+ text: thePConn.getLocalizedValue('Cancel', '', ''), // 2nd and 3rd args empty string until typedef marked correctly
84
98
  icon: "times",
85
99
  onClick: cancelFile
86
100
  }
@@ -93,7 +107,7 @@ export default function FileUtility(props) {
93
107
  "download",
94
108
  {
95
109
  id: `download-${ID}`,
96
- text: isFile ? "Download" : "Open",
110
+ text: isFile ? thePConn.getLocalizedValue('Download', '', '') : thePConn.getLocalizedValue('Open', '', ''), // 2nd and 3rd args empty string until typedef marked correctly
97
111
  icon: isFile ? "download" : "open",
98
112
  onClick: downloadFile
99
113
  }
@@ -102,7 +116,7 @@ export default function FileUtility(props) {
102
116
  "delete",
103
117
  {
104
118
  id: `Delete-${ID}`,
105
- text: "Delete",
119
+ text: thePConn.getLocalizedValue('Delete', '', ''), // 2nd and 3rd args empty string until typedef marked correctly
106
120
  icon: "trash",
107
121
  onClick: deleteFile
108
122
  }
@@ -118,7 +132,7 @@ export default function FileUtility(props) {
118
132
  actions = [
119
133
  {
120
134
  id: `Remove-${att.ID}`,
121
- text: "Remove",
135
+ text: thePConn.getLocalizedValue('Remove', '', ''), // 2nd and 3rd args empty string until typedef marked correctly
122
136
  icon: "trash",
123
137
  onClick: removeFile
124
138
  }
@@ -186,7 +200,7 @@ export default function FileUtility(props) {
186
200
  const getAttachments = () => {
187
201
 
188
202
  const attachmentUtils = PCore.getAttachmentUtils();
189
- const caseID = thePConn.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
203
+ const caseID = thePConn.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID, ''); // 2nd arg empty string until typedef marked correctly
190
204
 
191
205
  if (caseID && caseID !== "") {
192
206
  const attPromise = attachmentUtils.getCaseAttachments(caseID, thePConn.getContextName());
@@ -245,7 +259,7 @@ export default function FileUtility(props) {
245
259
  function setNewFiles(arFiles) {
246
260
  let index = 0;
247
261
  for (const file of arFiles) {
248
- if (!validateMaxSize(file, 5)) {
262
+ if (!validateMaxSize(file, '5')) {
249
263
  file.error = true;
250
264
  file.meta = "File is too big. Max allowed size is 5MB.";
251
265
  }
@@ -318,7 +332,7 @@ export default function FileUtility(props) {
318
332
 
319
333
  function onAttachFiles() {
320
334
  const attachmentUtils = PCore.getAttachmentUtils();
321
- const caseID = thePConn.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
335
+ const caseID = thePConn.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID, ''); // 2nd arg empty string until typedef marked correctly
322
336
  const onUploadProgress = () => {};
323
337
  const errorHandler = () => {};
324
338
  closeFilePopup()
@@ -443,7 +457,7 @@ export default function FileUtility(props) {
443
457
 
444
458
  function onAttachLinks() {
445
459
  const attachmentUtils = PCore.getAttachmentUtils();
446
- const caseID = thePConn.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
460
+ const caseID = thePConn.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID, ''); // 2nd arg empty string until typedef marked correctly
447
461
  const links = linkData.attachedLinks;
448
462
  closeAddLinksPopup();
449
463
  const linksToAttach = links.map((item: any) => ({
@@ -492,8 +506,8 @@ export default function FileUtility(props) {
492
506
  open={Boolean(anchorEl)}
493
507
  onClose={handleClose}
494
508
  >
495
- <MenuItem style={{fontSize: '14px'}} onClick={onAddFilesClick}>Add Files</MenuItem>
496
- <MenuItem style={{fontSize: '14px'}} onClick={onAddLinksClick}>Add Links</MenuItem>
509
+ <MenuItem style={{fontSize: '14px'}} onClick={onAddFilesClick}>{thePConn.getLocalizedValue('Add files', '', '')}</MenuItem> {/* 2nd and 3rd args empty string until typedef marked correctly */}
510
+ <MenuItem style={{fontSize: '14px'}} onClick={onAddLinksClick}>{thePConn.getLocalizedValue('Add links', '', '')}</MenuItem> {/* 2nd and 3rd args empty string until typedef marked correctly */}
497
511
  </Menu>
498
512
  </div>
499
513
  </div>
@@ -506,12 +520,12 @@ export default function FileUtility(props) {
506
520
  {fileData.showfileModal && (
507
521
  <div className="psdk-dialog-background">
508
522
  <div className="psdk-modal-file-top">
509
- <h3>Add local files</h3>
523
+ <h3>{thePConn.getLocalizedValue('Add local files', '', '')}</h3>
510
524
  <div className="psdk-modal-body">
511
525
  <div className="psdk-modal-file-selector">
512
526
  <label htmlFor='upload-files'>
513
527
  <input style={{ display: 'none' }} id='upload-files' name='upload-files' type='file' multiple onChange={uploadMyFiles}/>
514
- <Button variant='outlined' color='primary' component="span">Upload file(s)</Button>
528
+ <Button variant='outlined' color='primary' component="span">{thePConn.getLocalizedValue('Attach files', '', '')}</Button> {/* 2nd and 3rd args empty string until typedef marked correctly */}
515
529
  </label>
516
530
  </div>
517
531
  {fileData.fileList.length > 0 && (<div style={{marginTop: '1rem'}}>
@@ -527,7 +541,7 @@ export default function FileUtility(props) {
527
541
  {linkData.showLinkModal && (
528
542
  <div className="psdk-dialog-background">
529
543
  <div className="psdk-modal-file-top">
530
- <h3>Add links</h3>
544
+ <h3>{thePConn.getLocalizedValue('Add links', '', '')}</h3> {/* 2nd and 3rd args empty string until typedef marked correctly */}
531
545
  <div className="psdk-modal-body">
532
546
  <div className="psdk-modal-links-row">
533
547
  <div className="psdk-links-two-column">
@@ -539,7 +553,7 @@ export default function FileUtility(props) {
539
553
  </div>
540
554
  </div>
541
555
  <div className="psdk-modal-link-add">
542
- <Button className="psdk-add-link-action" color="primary" variant="contained" component="span" onClick={addLink} disabled={link.disable}>Add Link</Button>
556
+ <Button className="psdk-add-link-action" color="primary" variant="contained" component="span" onClick={addLink} disabled={link.disable}>{thePConn.getLocalizedValue('Add link', '', '')}</Button> {/* 2nd and 3rd args empty string until typedef marked correctly */}
543
557
  </div>
544
558
  </div>
545
559
  {linkData.linksList.length > 0 && (<div style={{marginTop: '1rem'}}>
@@ -554,7 +568,7 @@ export default function FileUtility(props) {
554
568
  {showViewAllModal && (<div className="psdk-dialog-background">
555
569
  <div className="psdk-modal-file-top">
556
570
  <div className="psdk-view-all-header">
557
- <h3>Attachments</h3>
571
+ <h3>{thePConn.getLocalizedValue('Attachments', '', '')}</h3> {/* 2nd and 3rd args empty string until typedef marked correctly */}
558
572
  {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}
559
573
  <button type="button" className="psdk-close-button" onClick = {() => setViewAll(false)}><img className="psdk-utility-card-actions-svg-icon" src={closeSvgIcon}></img></button>
560
574
  </div>
@@ -1,9 +1,15 @@
1
1
  import React from "react";
2
- // import PropTypes from "prop-types";
3
2
  import { Card, CardContent, CardHeader, Typography } from "@material-ui/core";
4
3
  import { makeStyles } from '@material-ui/core/styles';
5
4
  // import { green } from "@material-ui/core/colors";
6
5
 
6
+ // Followers does NOT have getPConnect. So, no need to extend from PConnProps
7
+ interface FollowersProps {
8
+ // If any, enter additional props that only exist on this component
9
+ children: Array<any>
10
+ }
11
+
12
+
7
13
  const useStyles = makeStyles((theme) => ({
8
14
  root: {
9
15
  paddingRight: theme.spacing(1),
@@ -19,9 +25,10 @@ const useStyles = makeStyles((theme) => ({
19
25
  },
20
26
  }));
21
27
 
22
- export default function Followers(/* props */) {
28
+ export default function Followers(props: FollowersProps) {
23
29
  const componentName = "Followers";
24
- // const { children } = props;
30
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
31
+ const { children } = props;
25
32
  const classes = useStyles();
26
33
 
27
34
  return (
@@ -33,11 +40,3 @@ export default function Followers(/* props */) {
33
40
  </Card>
34
41
  );
35
42
  }
36
-
37
- Followers.defaultProps = {
38
- // children: []
39
- }
40
-
41
- Followers.propTypes = {
42
- // children: PropTypes.arrayOf(PropTypes.node)
43
- };
@@ -1,16 +1,25 @@
1
1
  import React from "react";
2
- import WssQuickCreate from '@pega/react-sdk-components/lib/components/designSystemExtension/WssQuickCreate';
3
2
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
3
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
4
+ // import type { PConnProps } from '../../../types/PConnProps';
4
5
 
5
- declare const PCore: any;
6
+ // Can't add PConnTypes until we can resolve type problems with
7
+ // 2nd arg to createWork
8
+ // interface QuickCreateProps extends PConnProps {
9
+ // // If any, enter additional props that only exist on this component
10
+ // }
11
+
12
+
13
+ export default function QuickCreate(props /* : QuickCreateProps */) {
14
+ // Get emitted components from map (so we can get any override that may exist)
15
+ const WssQuickCreate = getComponentFromMap('WssQuickCreate');
6
16
 
7
- export default function QuickCreate(props) {
8
17
  const { getPConnect, heading, showCaseIcons, classFilter } = props;
9
18
  const pConn = getPConnect();
10
19
  const createCase = (className) => {
11
20
  pConn
12
21
  .getActionsApi()
13
- .createWork(className, {})
22
+ .createWork(className, { })
14
23
  .catch((error) => {
15
24
  // eslint-disable-next-line no-console
16
25
  console.log('Error in case creation: ', error?.message)
@@ -26,11 +35,11 @@ export default function QuickCreate(props) {
26
35
  envInfo.environmentInfoObject.pyCaseTypeList.length > 0
27
36
  ) {
28
37
  classFilter.forEach((item) => {
29
- let icon = Utils.getImageSrc('polaris-solid', PCore.getAssetLoader().getStaticServerUrl());
38
+ let icon = Utils.getImageSrc('polaris-solid', Utils.getSDKStaticConentUrl());
30
39
  let label = '';
31
40
  envInfo.environmentInfoObject.pyCaseTypeList.forEach((casetype) => {
32
41
  if (casetype.pyWorkTypeImplementationClassName === item) {
33
- icon = casetype.pxIcon && Utils.getImageSrc(casetype?.pxIcon, PCore.getAssetLoader().getStaticServerUrl());
42
+ icon = casetype.pxIcon && Utils.getImageSrc(casetype?.pxIcon, Utils.getSDKStaticConentUrl());
34
43
  label = casetype.pyWorkTypeName ?? '';
35
44
  }
36
45
  });
@@ -4,19 +4,27 @@ import './SummaryItem.css'
4
4
  import { IconButton, Menu, MenuItem } from '@material-ui/core';
5
5
  import MoreVertIcon from '@material-ui/icons/MoreVert';
6
6
 
7
- declare const PCore: any;
7
+ // SummaryItem does NOT have getPConnect. So, no need to extend from PConnProps
8
8
 
9
- export default function SummaryItem(props) {
9
+ interface SummaryItemProps {
10
+ // If any, enter additional props that only exist on this component
11
+ menuIconOverride$: string,
12
+ menuIconOverrideAction$: any,
13
+ arItems$: Array<any> | any
14
+ }
15
+
16
+
17
+ export default function SummaryItem(props:SummaryItemProps) {
10
18
  let imagePath$ = "";
11
19
  let menuIconOverride$;
12
20
  menuIconOverride$ = props.menuIconOverride$
13
- imagePath$ = Utils.getIconPath(PCore.getAssetLoader().getStaticServerUrl());
21
+ imagePath$ = Utils.getIconPath(Utils.getSDKStaticConentUrl());
14
22
  const item = props.arItems$;
15
23
  const srcImg = `${imagePath$}${item.visual.icon}.svg`
16
24
  const [anchorEl, setAnchorEl] = useState(null);
17
25
  const open = Boolean(anchorEl);
18
26
  if (menuIconOverride$) {
19
- menuIconOverride$ = Utils.getImageSrc(menuIconOverride$ , PCore.getAssetLoader().getStaticServerUrl());
27
+ menuIconOverride$ = Utils.getImageSrc(menuIconOverride$ , Utils.getSDKStaticConentUrl());
20
28
  }
21
29
 
22
30
  function removeAttachment() {
@@ -1,11 +1,25 @@
1
1
  import React from "react";
2
- import SummaryItem from '@pega/react-sdk-components/lib/components/widget/SummaryItem/index'
2
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
3
3
 
4
- export default function SummaryList(props) {
4
+ // SummaryList does NOT have getPConnect. So, no need to extend from PConnProps
5
+
6
+ interface SummaryListProps {
7
+ // If any, enter additional props that only exist on this component
8
+ arItems$: Array<any>,
9
+ menuIconOverride$?: string,
10
+ menuIconOverrideAction$?: any
11
+ }
12
+
13
+
14
+ export default function SummaryList(props: SummaryListProps) {
15
+ // Get emitted components from map (so we can get any override that may exist)
16
+ const SummaryItem = getComponentFromMap('SummaryItem');
17
+
18
+ const { menuIconOverride$: menuOverride = ""} = props;
5
19
  return (
6
20
  <div>
7
21
  {props.arItems$.map(file => (
8
- <SummaryItem key={file.id} menuIconOverride$={props.menuIconOverride$} arItems$={file} menuIconOverrideAction$={props.menuIconOverrideAction$}></SummaryItem>
22
+ <SummaryItem key={file.id} menuIconOverride$={menuOverride} arItems$={file} menuIconOverrideAction$={props.menuIconOverrideAction$}></SummaryItem>
9
23
  ))}
10
24
  </div>
11
25
  );
@@ -1,7 +1,6 @@
1
1
  /* eslint-disable no-shadow */
2
2
  /* eslint-disable @typescript-eslint/no-shadow */
3
3
  import React, { Fragment, useState } from 'react';
4
- import PropTypes from 'prop-types';
5
4
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
6
5
  import {
7
6
  Box,
@@ -28,9 +27,25 @@ import useMediaQuery from '@material-ui/core/useMediaQuery';
28
27
 
29
28
  import './ToDo.css';
30
29
 
31
- declare const PCore: any;
30
+ import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
32
31
 
33
- const isChildCase = assignment => {
32
+ interface ToDoProps extends PConnProps {
33
+ // If any, enter additional props that only exist on this component
34
+ datasource?: any;
35
+ myWorkList?: any;
36
+ // eslint-disable-next-line react/no-unused-prop-types
37
+ caseInfoID?: string;
38
+ headerText?: string;
39
+ // eslint-disable-next-line react/no-unused-prop-types
40
+ itemKey?: string;
41
+ showTodoList?: boolean;
42
+ type?: string;
43
+ // eslint-disable-next-line react/no-unused-prop-types
44
+ context?: string;
45
+ isConfirm?: boolean;
46
+ }
47
+
48
+ const isChildCase = (assignment) => {
34
49
  return assignment.isChild;
35
50
  };
36
51
 
@@ -49,7 +64,7 @@ function getID(assignment: any) {
49
64
  }
50
65
  }
51
66
 
52
- const useStyles = makeStyles(theme => ({
67
+ const useStyles = makeStyles((theme) => ({
53
68
  root: {
54
69
  marginTop: theme.spacing(1),
55
70
  marginBottom: theme.spacing(1),
@@ -69,8 +84,8 @@ const useStyles = makeStyles(theme => ({
69
84
  }
70
85
  }));
71
86
 
72
- export default function ToDo(props) {
73
- const { datasource, getPConnect, headerText, showTodoList, myWorkList, type, isConfirm } = props;
87
+ export default function ToDo(props: ToDoProps) {
88
+ const { getPConnect, datasource = [], headerText = 'To do', showTodoList = true, myWorkList = {}, type = 'worklist', isConfirm = false } = props;
74
89
 
75
90
  const CONSTS = PCore.getConstants();
76
91
 
@@ -90,6 +105,10 @@ export default function ToDo(props) {
90
105
  const classes = useStyles();
91
106
  const theme = useTheme();
92
107
  const isDesktop = useMediaQuery(theme.breakpoints.up('md'));
108
+ const localizedVal = PCore.getLocaleUtils().getLocaleValue;
109
+ const localeCategory = 'Todo';
110
+ const showlessLocalizedValue = localizedVal('show_less', 'CosmosFields');
111
+ const showMoreLocalizedValue = localizedVal('show_more', 'CosmosFields');
93
112
  // const { setOpen } = useNavBar();
94
113
 
95
114
  function initAssignments(): Array<any> {
@@ -102,15 +121,15 @@ export default function ToDo(props) {
102
121
  }
103
122
  }
104
123
 
105
- const getAssignmentId = assignment => {
124
+ const getAssignmentId = (assignment) => {
106
125
  return type === CONSTS.TODO ? assignment.ID : assignment.id;
107
126
  };
108
127
 
109
- const getPriority = assignment => {
128
+ const getPriority = (assignment) => {
110
129
  return type === CONSTS.TODO ? assignment.urgency : assignment.priority;
111
130
  };
112
131
 
113
- const getAssignmentName = assignment => {
132
+ const getAssignmentName = (assignment) => {
114
133
  return type === CONSTS.TODO ? assignment.name : assignment.stepName;
115
134
  };
116
135
 
@@ -145,7 +164,7 @@ export default function ToDo(props) {
145
164
  const sTarget = thePConn.getContainerName();
146
165
  const sTargetContainerName = sTarget;
147
166
 
148
- const options = { containerName: sTargetContainerName };
167
+ const options = { containerName: sTargetContainerName, channelName: '' };
149
168
 
150
169
  if (classname === null || classname === '') {
151
170
  classname = thePConn.getCaseInfo().getClassName();
@@ -180,31 +199,27 @@ export default function ToDo(props) {
180
199
 
181
200
  if ((showTodoList && type !== CONSTS.TODO) || assignment.isChild === true) {
182
201
  /* Supress link for todo inside flow step */
183
- return (
184
- <Button size='small' color='primary'>{`${assignment.name} ${getID(assignment)}`}</Button>
185
- );
202
+ return <Button size="small" color="primary">{`${assignment.name} ${getID(assignment)}`}</Button>;
186
203
  }
187
204
  return displayID;
188
205
  };
189
206
 
190
- const getListItemComponent = assignment => {
207
+ const getListItemComponent = (assignment) => {
191
208
  if (isDesktop) {
192
209
  return (
193
210
  <>
194
- Task in
211
+ {localizedVal('Task in', localeCategory)}
195
212
  {renderTaskId(type, getPConnect, showTodoList, assignment)}
196
213
  {type === CONSTS.WORKLIST && assignment.status ? `\u2022 ` : undefined}
197
- {type === CONSTS.WORKLIST && assignment.status ? (
198
- <span className='psdk-todo-assignment-status'>{assignment.status}</span>
199
- ) : undefined}
200
- {` \u2022 Urgency ${getPriority(assignment)}`}
214
+ {type === CONSTS.WORKLIST && assignment.status ? <span className="psdk-todo-assignment-status">{assignment.status}</span> : undefined}
215
+ {` \u2022 ${localizedVal('Urgency', localeCategory)} ${getPriority(assignment)}`}
201
216
  </>
202
217
  );
203
218
  }
204
219
  return (
205
220
  <>
206
- <Button size='small' color='primary'>{`${assignment.name} ${getID(assignment)}`}</Button>
207
- {` \u2022 Urgency ${getPriority(assignment)}`}
221
+ <Button size="small" color="primary">{`${assignment.name} ${getID(assignment)}`}</Button>
222
+ {` \u2022 ${localizedVal('Urgency', localeCategory)} ${getPriority(assignment)}`}
208
223
  </>
209
224
  );
210
225
  };
@@ -214,37 +229,33 @@ export default function ToDo(props) {
214
229
  {showTodoList && (
215
230
  <CardHeader
216
231
  title={
217
- <Badge badgeContent={assignmentCount} color='primary'>
218
- <Typography variant='h6'>{headerText}&nbsp;&nbsp;&nbsp;</Typography>
232
+ <Badge badgeContent={assignmentCount} overlap="rectangular" color="primary">
233
+ <Typography variant="h6">{headerText}&nbsp;&nbsp;&nbsp;</Typography>
219
234
  </Badge>
220
235
  }
221
236
  ></CardHeader>
222
237
  )}
223
238
  <List>
224
- {assignments.map(assignment => (
225
- <>
226
- <div className='psdk-todo-avatar-header'>
227
- <Avatar className={classes.avatar} style={{ marginRight: '16px' }}>
228
- {currentUserInitials}
229
- </Avatar>
230
- <div style={{ display: 'block' }}>
231
- <Typography variant='h6'>{assignment?.name}</Typography>
232
- {`Task in ${renderTaskId(
233
- type,
234
- getPConnect,
235
- showTodoList,
236
- assignment
237
- )} \u2022 Urgency ${getPriority(assignment)}`}
238
- </div>
239
- {!isConfirm && (
240
- <div style={{ marginLeft: 'auto' }}>
241
- <IconButton onClick={() => clickGo(assignment)}>
242
- <ArrowForwardIosOutlinedIcon />
243
- </IconButton>
244
- </div>
245
- )}
239
+ {assignments.map((assignment) => (
240
+ <div className="psdk-todo-avatar-header" key={getAssignmentId(assignment)}>
241
+ <Avatar className={classes.avatar} style={{ marginRight: '16px' }}>
242
+ {currentUserInitials}
243
+ </Avatar>
244
+ <div style={{ display: 'block' }}>
245
+ <Typography variant="h6">{assignment?.name}</Typography>
246
+ {`${localizedVal('Task in', localeCategory)} ${renderTaskId(type, getPConnect, showTodoList, assignment)} \u2022 ${localizedVal(
247
+ 'Urgency',
248
+ localeCategory
249
+ )} ${getPriority(assignment)}`}
246
250
  </div>
247
- </>
251
+ {!isConfirm && (
252
+ <div style={{ marginLeft: 'auto' }}>
253
+ <IconButton onClick={() => clickGo(assignment)}>
254
+ <ArrowForwardIosOutlinedIcon />
255
+ </IconButton>
256
+ </div>
257
+ )}
258
+ </div>
248
259
  ))}
249
260
  </List>
250
261
  </>
@@ -257,8 +268,8 @@ export default function ToDo(props) {
257
268
  {showTodoList && (
258
269
  <CardHeader
259
270
  title={
260
- <Badge badgeContent={assignmentCount} color='primary'>
261
- <Typography variant='h6'>{headerText}&nbsp;&nbsp;&nbsp;</Typography>
271
+ <Badge badgeContent={assignmentCount} overlap="rectangular" color="primary">
272
+ <Typography variant="h6">{headerText}&nbsp;&nbsp;&nbsp;</Typography>
262
273
  </Badge>
263
274
  }
264
275
  avatar={<Avatar className={classes.avatar}>{currentUserInitials}</Avatar>}
@@ -266,17 +277,9 @@ export default function ToDo(props) {
266
277
  )}
267
278
  <CardContent>
268
279
  <List>
269
- {assignments.map(assignment => (
270
- <ListItem
271
- key={getAssignmentId(assignment)}
272
- dense
273
- divider
274
- onClick={() => clickGo(assignment)}
275
- >
276
- <ListItemText
277
- primary={getAssignmentName(assignment)}
278
- secondary={getListItemComponent(assignment)}
279
- />
280
+ {assignments.map((assignment) => (
281
+ <ListItem key={getAssignmentId(assignment)} dense divider onClick={() => clickGo(assignment)}>
282
+ <ListItemText primary={getAssignmentName(assignment)} secondary={getListItemComponent(assignment)} />
280
283
  <ListItemSecondaryAction>
281
284
  <IconButton onClick={() => clickGo(assignment)}>
282
285
  <ArrowForwardIosOutlinedIcon />
@@ -289,19 +292,17 @@ export default function ToDo(props) {
289
292
  </Card>
290
293
  )}
291
294
 
292
- {type === CONSTS.TODO && !isConfirm && (
293
- <Card className={classes.todoWrapper}>{toDoContent}</Card>
294
- )}
295
+ {type === CONSTS.TODO && !isConfirm && <Card className={classes.todoWrapper}>{toDoContent}</Card>}
295
296
  {type === CONSTS.TODO && isConfirm && <Fragment>{toDoContent}</Fragment>}
296
297
 
297
298
  {assignmentCount > 3 && (
298
- <Box display='flex' justifyContent='center'>
299
+ <Box display="flex" justifyContent="center">
299
300
  {bShowMore ? (
300
- <Button color='primary' onClick={_showMore}>
301
- Show more
301
+ <Button color="primary" onClick={_showMore}>
302
+ {showMoreLocalizedValue === 'show_more' ? 'Show more' : showMoreLocalizedValue}
302
303
  </Button>
303
304
  ) : (
304
- <Button onClick={_showLess}>Show less</Button>
305
+ <Button onClick={_showLess}>{showlessLocalizedValue === 'show_less' ? 'Show less' : showlessLocalizedValue}</Button>
305
306
  )}
306
307
  </Box>
307
308
  )}
@@ -312,47 +313,11 @@ export default function ToDo(props) {
312
313
  onClose={handleSnackbarClose}
313
314
  message={snackbarMessage}
314
315
  action={
315
- <IconButton size='small' aria-label='close' color='inherit' onClick={handleSnackbarClose}>
316
- <CloseIcon fontSize='small' />
316
+ <IconButton size="small" aria-label="close" color="inherit" onClick={handleSnackbarClose}>
317
+ <CloseIcon fontSize="small" />
317
318
  </IconButton>
318
319
  }
319
320
  />
320
321
  </React.Fragment>
321
322
  );
322
323
  }
323
-
324
- ToDo.propTypes = {
325
- datasource: PropTypes.instanceOf(Object),
326
- myWorkList: PropTypes.instanceOf(Object),
327
- // eslint-disable-next-line react/no-unused-prop-types
328
- caseInfoID: PropTypes.string,
329
- // buildName: PropTypes.string,
330
- getPConnect: PropTypes.func.isRequired,
331
- headerText: PropTypes.string,
332
- // eslint-disable-next-line react/no-unused-prop-types
333
- itemKey: PropTypes.string,
334
- showTodoList: PropTypes.bool,
335
- // target: PropTypes.string,
336
- type: PropTypes.string,
337
- // pageMessages: PropTypes.arrayOf(PropTypes.any),
338
- // eslint-disable-next-line react/no-unused-prop-types
339
- context: PropTypes.string,
340
- // hideActionButtons: PropTypes.bool
341
- isConfirm: PropTypes.bool
342
- };
343
-
344
- ToDo.defaultProps = {
345
- caseInfoID: '',
346
- datasource: [],
347
- myWorkList: {},
348
- // buildName: "",
349
- headerText: 'To do',
350
- itemKey: '',
351
- showTodoList: true,
352
- // target: "",
353
- type: 'worklist',
354
- // pageMessages: null,
355
- context: '',
356
- // hideActionButtons: false
357
- isConfirm: false
358
- };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/react-sdk-overrides",
3
- "version": "0.23.26",
3
+ "version": "8.8.21",
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": [