@pega/react-sdk-overrides 0.23.37 → 0.24.2

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 (35) hide show
  1. package/lib/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +2 -2
  2. package/lib/field/CancelAlert/CancelAlert.tsx +2 -0
  3. package/lib/field/Currency/Currency.tsx +36 -26
  4. package/lib/field/Decimal/Decimal.tsx +33 -19
  5. package/lib/field/{MultiSelect → Multiselect}/Multiselect.tsx +1 -1
  6. package/lib/field/Percentage/Percentage.tsx +33 -18
  7. package/lib/field/ScalarList/ScalarList.tsx +2 -0
  8. package/lib/field/UserReference/UserReference.tsx +11 -1
  9. package/lib/infra/Assignment/Assignment.tsx +2 -1
  10. package/lib/infra/Containers/FlowContainer/FlowContainer.tsx +5 -3
  11. package/lib/infra/DashboardFilter/DashboardFilter.tsx +1 -1
  12. package/lib/infra/DeferLoad/DeferLoad.tsx +1 -1
  13. package/lib/infra/MultiStep/MultiStep.tsx +3 -1
  14. package/lib/infra/NavBar/NavBar.tsx +2 -2
  15. package/lib/template/CaseView/CaseView.tsx +2 -1
  16. package/lib/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +1 -1
  17. package/lib/template/DataReference/DataReference.tsx +1 -1
  18. package/lib/template/DefaultForm/utils/index.ts +2 -7
  19. package/lib/template/Details/Details/Details.tsx +1 -1
  20. package/lib/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +1 -1
  21. package/lib/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +1 -1
  22. package/lib/template/FieldGroupTemplate/FieldGroupTemplate.tsx +2 -0
  23. package/lib/template/ListView/ListView.tsx +4 -2
  24. package/lib/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +1 -1
  25. package/lib/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +1 -1
  26. package/lib/template/PromotedFilters/PromotedFilters.tsx +1 -0
  27. package/lib/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +4 -0
  28. package/lib/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +1 -1
  29. package/lib/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +1 -1
  30. package/lib/widget/Attachment/Attachment.tsx +2 -0
  31. package/lib/widget/FileUtility/FileUtility/FileUtility.tsx +1 -1
  32. package/lib/widget/QuickCreate/QuickCreate.tsx +1 -0
  33. package/package.json +1 -1
  34. /package/lib/field/{MultiSelect → Multiselect}/index.tsx +0 -0
  35. /package/lib/field/{MultiSelect → Multiselect}/utils.ts +0 -0
@@ -109,9 +109,9 @@ export default function CaseSummaryFields(props: CaseSummaryFieldsProps) {
109
109
  label={field.config.label}
110
110
  InputProps={{
111
111
  readOnly: true,
112
- disableUnderline: true,
113
112
  inputProps: {
114
- style: { cursor: 'pointer' }
113
+ style: { cursor: 'pointer' },
114
+ disableUnderline: true
115
115
  }
116
116
  }}
117
117
  />
@@ -21,6 +21,7 @@ export default function CancelAlert(props: CancelAlertProps) {
21
21
  const actionsAPI = getPConnect().getActionsApi();
22
22
  const containerManagerAPI = getPConnect().getContainerManager();
23
23
  const isLocalAction = getPConnect().getValue(PCore.getConstants().CASE_INFO.IS_LOCAL_ACTION);
24
+ // @ts-ignore - Property 'options' is private and only accessible within class 'C11nEnv'.
24
25
  const isBulkAction = getPConnect()?.options?.isBulkAction;
25
26
  const localizedVal = PCore.getLocaleUtils().getLocaleValue;
26
27
  const broadCastUtils: any = PCore.getCoexistenceManager().getBroadcastUtils();
@@ -83,6 +84,7 @@ export default function CancelAlert(props: CancelAlertProps) {
83
84
  actionsAPI.cancelBulkAction(containerItemID);
84
85
  } else {
85
86
  dismiss(true);
87
+ // @ts-ignore - Argument of type '{ containerItemID: string; skipReleaseLockRequest: any; }' is not assignable to parameter of type 'ContainerInfo'.
86
88
  containerManagerAPI.removeContainerItem({ containerItemID, skipReleaseLockRequest });
87
89
  }
88
90
  }
@@ -1,18 +1,19 @@
1
- import CurrencyTextField from '@unicef/material-ui-currency-textfield';
2
-
1
+ import { TextField } from '@material-ui/core';
2
+ import { useState } from 'react';
3
+ import { NumericFormat } from 'react-number-format';
3
4
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
4
5
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
5
6
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
6
7
  import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
7
8
  import { getCurrencyCharacters, getCurrencyOptions } from './currency-utils';
8
9
 
9
- /* Using @unicef/material-ui-currency-textfield component here, since it allows formatting decimal values,
10
+ /* Using react-number-format component here, since it allows formatting decimal values,
10
11
  as per the locale.
11
12
  */
12
-
13
13
  interface CurrrencyProps extends PConnFieldProps {
14
14
  // If any, enter additional props that only exist on Currency here
15
15
  currencyISOCode?: string;
16
+ allowDecimals: boolean;
16
17
  }
17
18
 
18
19
  export default function Currency(props: CurrrencyProps) {
@@ -34,15 +35,15 @@ export default function Currency(props: CurrrencyProps) {
34
35
  displayMode,
35
36
  hideLabel,
36
37
  currencyISOCode = 'USD',
37
- placeholder
38
+ placeholder,
39
+ allowDecimals
38
40
  } = props;
39
41
 
40
42
  const pConn = getPConnect();
41
43
  const actions = pConn.getActionsApi();
42
44
  const propName = (pConn.getStateProps() as any).value;
43
45
  const helperTextToDisplay = validatemessage || helperText;
44
-
45
- // console.log(`Currency: label: ${label} value: ${value}`);
46
+ const [values, setValues] = useState(value.toString());
46
47
 
47
48
  const testProp = {
48
49
  'data-test-id': testId
@@ -57,6 +58,15 @@ export default function Currency(props: CurrrencyProps) {
57
58
  const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
58
59
  const formattedValue = format(value, pConn.getComponentName().toLowerCase(), theCurrencyOptions);
59
60
 
61
+ let readOnlyProp = {}; // Note: empty if NOT ReadOnly
62
+
63
+ if (readOnly) {
64
+ readOnlyProp = { readOnly: true };
65
+ }
66
+
67
+ let currencyProp = {};
68
+ currencyProp = { prefix: theCurrSym, decimalSeparator: theCurrDec, thousandSeparator: theCurrSep };
69
+
60
70
  if (displayMode === 'LABELS_LEFT') {
61
71
  return <FieldValueList name={hideLabel ? '' : label} value={formattedValue} />;
62
72
  }
@@ -65,34 +75,34 @@ export default function Currency(props: CurrrencyProps) {
65
75
  return <FieldValueList name={hideLabel ? '' : label} value={formattedValue} variant='stacked' />;
66
76
  }
67
77
 
68
- function currOnBlur(event, inValue) {
69
- // console.log(`Currency currOnBlur inValue: ${inValue}`);
70
- handleEvent(actions, 'changeNblur', propName, inValue !== '' ? Number(inValue) : inValue);
78
+ function currOnBlur() {
79
+ handleEvent(actions, 'changeNblur', propName, values);
71
80
  }
72
81
 
73
- // console.log(`theCurrSym: ${theCurrSym} | theCurrDec: ${theCurrDec} | theCurrSep: ${theCurrSep}`);
82
+ const handleChange = val => {
83
+ setValues(val.value);
84
+ };
74
85
 
75
86
  return (
76
- <CurrencyTextField
77
- fullWidth
78
- variant={readOnly ? 'standard' : 'outlined'}
87
+ <NumericFormat
88
+ valueIsNumericString
89
+ label={label}
79
90
  helperText={helperTextToDisplay}
80
91
  placeholder={placeholder ?? ''}
81
- size='small'
82
92
  required={required}
83
93
  disabled={disabled}
84
- readOnly={!!readOnly}
85
- error={status === 'error'}
86
- label={label}
87
- value={value}
88
- type='text'
89
- outputFormat='number'
90
- textAlign='left'
91
- InputProps={{ inputProps: { ...testProp } }}
92
- currencySymbol={theCurrSym}
93
- decimalCharacter={theCurrDec}
94
- digitGroupSeparator={theCurrSep}
94
+ onValueChange={val => {
95
+ handleChange(val);
96
+ }}
95
97
  onBlur={!readOnly ? currOnBlur : undefined}
98
+ error={status === 'error'}
99
+ name='numberformat'
100
+ value={values}
101
+ {...currencyProp}
102
+ decimalScale={allowDecimals !== false ? 2 : 0}
103
+ fixedDecimalScale={allowDecimals}
104
+ InputProps={{ ...readOnlyProp, inputProps: { ...testProp } }}
105
+ customInput={TextField}
96
106
  />
97
107
  );
98
108
  }
@@ -1,12 +1,13 @@
1
- import CurrencyTextField from '@unicef/material-ui-currency-textfield';
2
-
1
+ import { TextField } from '@material-ui/core';
2
+ import { NumericFormat } from 'react-number-format';
3
+ import { useState } from 'react';
3
4
  import { getCurrencyCharacters, getCurrencyOptions } from '@pega/react-sdk-components/lib/components/field/Currency/currency-utils';
4
5
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
5
6
  import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
6
7
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
7
8
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
8
9
 
9
- /* Using @unicef/material-ui-currency-textfield component here, since it allows formatting decimal values,
10
+ /* Using react-number-format component here, since it allows formatting decimal values,
10
11
  as per the locale.
11
12
  */
12
13
 
@@ -14,7 +15,7 @@ interface DecimalProps extends PConnFieldProps {
14
15
  // If any, enter additional props that only exist on Decimal here
15
16
  currencyISOCode?: string;
16
17
  decimalPrecision?: number;
17
- showGroupSeparators?: string;
18
+ showGroupSeparators?: boolean;
18
19
  formatter?: string;
19
20
  }
20
21
 
@@ -36,13 +37,15 @@ export default function Decimal(props: DecimalProps) {
36
37
  displayMode,
37
38
  hideLabel,
38
39
  currencyISOCode = 'USD',
39
- decimalPrecision = 2,
40
- showGroupSeparators = true,
40
+ decimalPrecision,
41
+ showGroupSeparators,
41
42
  testId,
42
43
  placeholder,
43
44
  formatter
44
45
  } = props;
45
46
 
47
+ const [values, setValues] = useState(value.toString());
48
+
46
49
  const pConn = getPConnect();
47
50
  const actions = pConn.getActionsApi();
48
51
  const propName = (pConn.getStateProps() as any).value;
@@ -55,6 +58,12 @@ export default function Decimal(props: DecimalProps) {
55
58
 
56
59
  const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
57
60
 
61
+ let readOnlyProp = {}; // Note: empty if NOT ReadOnly
62
+
63
+ if (readOnly) {
64
+ readOnlyProp = { readOnly: true };
65
+ }
66
+
58
67
  let formattedValue = '';
59
68
  if (formatter === 'Currency') {
60
69
  formattedValue = format(value, formatter.toLowerCase(), theCurrencyOptions);
@@ -74,12 +83,17 @@ export default function Decimal(props: DecimalProps) {
74
83
  'data-test-id': testId
75
84
  };
76
85
 
77
- function decimalOnBlur(event, inValue) {
78
- handleEvent(actions, 'changeNblur', propName, inValue !== '' ? Number(inValue) : inValue);
86
+ function decimalOnBlur() {
87
+ handleEvent(actions, 'changeNblur', propName, values);
79
88
  }
80
89
 
90
+ const handleChange = val => {
91
+ setValues(val.value);
92
+ };
93
+
81
94
  return (
82
- <CurrencyTextField
95
+ <NumericFormat
96
+ valueIsNumericString
83
97
  fullWidth
84
98
  variant={readOnly ? 'standard' : 'outlined'}
85
99
  helperText={helperTextToDisplay}
@@ -89,17 +103,17 @@ export default function Decimal(props: DecimalProps) {
89
103
  disabled={disabled}
90
104
  error={status === 'error'}
91
105
  label={label}
92
- value={value}
93
- readOnly={!!readOnly}
94
- type='text'
95
- outputFormat='number'
96
- textAlign='left'
97
- InputProps={{ inputProps: { ...testProp } }}
98
- currencySymbol={readOnly && formatter === 'Currency' ? theCurrSym : ''}
99
- decimalCharacter={theCurrDec}
100
- digitGroupSeparator={showGroupSeparators ? theCurrSep : ''}
101
- decimalPlaces={decimalPrecision}
106
+ value={values}
107
+ onValueChange={val => {
108
+ handleChange(val);
109
+ }}
102
110
  onBlur={!readOnly ? decimalOnBlur : undefined}
111
+ prefix={readOnly && formatter === 'Currency' ? theCurrSym : ''}
112
+ decimalSeparator={theCurrDec}
113
+ thousandSeparator={showGroupSeparators ? theCurrSep : ''}
114
+ decimalScale={readOnly && formatter === 'Currency' ? undefined : decimalPrecision}
115
+ InputProps={{ ...readOnlyProp, inputProps: { ...testProp } }}
116
+ customInput={TextField}
103
117
  />
104
118
  );
105
119
  }
@@ -115,7 +115,7 @@ export default function Multiselect(props) {
115
115
  const pConn = getPConnect();
116
116
  const contextName = pConn.getContextName();
117
117
  const listActions = pConn.getListActions();
118
- const dataApiObj = useRef();
118
+ const dataApiObj: any = useRef();
119
119
 
120
120
  // main search function trigger
121
121
  const getCaseListBasedOnParams = async (searchText, group, selectedRows, currentItemsTree, isTriggeredFromSearch = false) => {
@@ -1,17 +1,20 @@
1
- import CurrencyTextField from '@unicef/material-ui-currency-textfield';
2
-
1
+ import { TextField } from '@material-ui/core';
2
+ import { NumericFormat } from 'react-number-format';
3
+ import { useState } from 'react';
3
4
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
4
5
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
5
6
  import { getCurrencyCharacters, getCurrencyOptions } from '@pega/react-sdk-components/lib/components/field/Currency/currency-utils';
6
7
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
7
8
  import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
8
9
 
9
- /* Using @unicef/material-ui-currency-textfield component here, since it allows formatting decimal values,
10
+ /* Using react-number-format component here, since it allows formatting decimal values,
10
11
  as per the locale.
11
12
  */
12
13
  interface PercentageProps extends PConnFieldProps {
13
14
  // If any, enter additional props that only exist on Percentage here
14
15
  currencyISOCode?: string;
16
+ showGroupSeparators?: string;
17
+ decimalPrecision?: number;
15
18
  }
16
19
 
17
20
  export default function Percentage(props: PercentageProps) {
@@ -34,9 +37,13 @@ export default function Percentage(props: PercentageProps) {
34
37
  helperText,
35
38
  displayMode,
36
39
  hideLabel,
37
- placeholder
40
+ placeholder,
41
+ showGroupSeparators,
42
+ decimalPrecision
38
43
  } = props;
39
44
 
45
+ const [values, setValues] = useState(value.toString());
46
+
40
47
  const pConn = getPConnect();
41
48
  const actions = pConn.getActionsApi();
42
49
  const propName = (pConn.getStateProps() as any).value;
@@ -45,7 +52,11 @@ export default function Percentage(props: PercentageProps) {
45
52
  const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
46
53
  const formattedValue = format(value, pConn.getComponentName().toLowerCase(), theCurrencyOptions);
47
54
 
48
- // console.log(`Percentage: label: ${label} value: ${value}`);
55
+ let readOnlyProp = {}; // Note: empty if NOT ReadOnly
56
+
57
+ if (readOnly) {
58
+ readOnlyProp = { readOnly: true };
59
+ }
49
60
 
50
61
  if (displayMode === 'LABELS_LEFT') {
51
62
  return <FieldValueList name={hideLabel ? '' : label} value={formattedValue} />;
@@ -65,12 +76,17 @@ export default function Percentage(props: PercentageProps) {
65
76
  const theCurrDec = theSymbols.theDecimalIndicator;
66
77
  const theCurrSep = theSymbols.theDigitGroupSeparator;
67
78
 
68
- function PercentageOnBlur(event, inValue) {
69
- handleEvent(actions, 'changeNblur', propName, inValue !== '' ? Number(inValue) : inValue);
79
+ function PercentageOnBlur() {
80
+ handleEvent(actions, 'changeNblur', propName, values);
70
81
  }
71
82
 
83
+ const handleChange = val => {
84
+ setValues(val.value);
85
+ };
86
+
72
87
  return (
73
- <CurrencyTextField
88
+ <NumericFormat
89
+ valueIsNumericString
74
90
  fullWidth
75
91
  variant={readOnly ? 'standard' : 'outlined'}
76
92
  helperText={helperTextToDisplay}
@@ -78,20 +94,19 @@ export default function Percentage(props: PercentageProps) {
78
94
  size='small'
79
95
  required={required}
80
96
  disabled={disabled}
81
- readOnly={!!readOnly}
82
97
  error={status === 'error'}
83
98
  label={label}
84
- value={value}
85
- type='text'
86
- outputFormat='number'
87
- textAlign='left'
88
- InputProps={{
89
- inputProps: { ...testProp }
99
+ value={values}
100
+ onValueChange={val => {
101
+ handleChange(val);
90
102
  }}
91
- currencySymbol=''
92
- decimalCharacter={theCurrDec}
93
- digitGroupSeparator={theCurrSep}
94
103
  onBlur={!readOnly ? PercentageOnBlur : undefined}
104
+ decimalSeparator={theCurrDec}
105
+ thousandSeparator={showGroupSeparators ? theCurrSep : ''}
106
+ decimalScale={decimalPrecision}
107
+ suffix='%'
108
+ InputProps={{ ...readOnlyProp, inputProps: { ...testProp } }}
109
+ customInput={TextField}
95
110
  />
96
111
  );
97
112
  }
@@ -36,10 +36,12 @@ export default function ScalarList(props: ScalarListProps) {
36
36
  {
37
37
  type: componentType,
38
38
  config: {
39
+ // @ts-ignore - Type '{ readOnly: true; displayInModal: boolean; value: any; displayMode: string; label: string; }' is not assignable to type 'ComponentMetadataConfig'.
39
40
  value: scalarValue,
40
41
  displayMode: 'LABELS_LEFT',
41
42
  label,
42
43
  ...restProps,
44
+ // @ts-ignore - Type 'string' is not assignable to type 'boolean | undefined'.
43
45
  readOnly: 'true'
44
46
  }
45
47
  },
@@ -4,6 +4,7 @@ import { Typography } from '@material-ui/core';
4
4
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
5
5
  import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
6
6
 
7
+ import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
7
8
  import { getUserId, isUserNameAvailable } from './UserReferenceUtils';
8
9
 
9
10
  const DROPDOWN_LIST = 'Drop-down list';
@@ -12,6 +13,7 @@ const SEARCH_BOX = 'Search box';
12
13
  interface UserReferenceProps extends PConnProps {
13
14
  // If any, enter additional props that only exist on URLComponent here
14
15
  displayAs?: string;
16
+ displayMode?: string;
15
17
  label?: string;
16
18
  value?: any;
17
19
  testId?: string;
@@ -36,6 +38,7 @@ const UserReference = (props: UserReferenceProps) => {
36
38
  const {
37
39
  label = '',
38
40
  displayAs = '',
41
+ displayMode = '',
39
42
  getPConnect,
40
43
  value = '',
41
44
  testId = '',
@@ -96,6 +99,14 @@ const UserReference = (props: UserReferenceProps) => {
96
99
 
97
100
  let userReferenceComponent: any = null;
98
101
 
102
+ if (displayMode === 'LABELS_LEFT') {
103
+ return <FieldValueList name={hideLabel ? '' : label} value={userName || ''} />;
104
+ }
105
+
106
+ if (displayMode === 'STACKED_LARGE_VAL') {
107
+ return <FieldValueList name={hideLabel ? '' : label} value={userName || ''} variant='stacked' />;
108
+ }
109
+
99
110
  if (readOnly && showAsFormattedText) {
100
111
  if (userId) {
101
112
  userReferenceComponent = (
@@ -172,7 +183,6 @@ const UserReference = (props: UserReferenceProps) => {
172
183
  );
173
184
  }
174
185
  }
175
-
176
186
  return userReferenceComponent;
177
187
  };
178
188
 
@@ -167,6 +167,7 @@ export default function Assignment(props: PropsWithChildren<AssignmentProps>) {
167
167
 
168
168
  savePromise
169
169
  .then(() => {
170
+ // @ts-ignore - Property 'c11nEnv' is private and only accessible within class 'CaseInfo'.
170
171
  const caseType = thePConn.getCaseInfo().c11nEnv.getValue(PCore.getConstants().CASE_INFO.CASE_TYPE_ID);
171
172
  onSaveActionSuccess({ caseType, caseID, assignmentID });
172
173
  })
@@ -263,7 +264,7 @@ export default function Assignment(props: PropsWithChildren<AssignmentProps>) {
263
264
  refreshProps.forEach(prop => {
264
265
  PCore.getRefreshManager().registerForRefresh(
265
266
  'PROP_CHANGE',
266
- thePConn.getActionsApi().refreshCaseView.bind(thePConn.getActionsApi(), caseKey, null, pageReference, {
267
+ thePConn.getActionsApi().refreshCaseView.bind(thePConn.getActionsApi(), caseKey, '', pageReference, {
267
268
  ...refreshOptions,
268
269
  refreshFor: prop[0]
269
270
  }),
@@ -99,6 +99,7 @@ export const FlowContainer = (props: FlowContainerProps) => {
99
99
  const localizedVal = PCore.getLocaleUtils().getLocaleValue;
100
100
  const localeCategory = 'Messages';
101
101
 
102
+ const key = `${thePConn.getCaseInfo().getClassName()}!CASE!${thePConn.getCaseInfo().getName()}`.toUpperCase();
102
103
  const classes = useStyles();
103
104
 
104
105
  function getBuildName(): string {
@@ -306,8 +307,9 @@ export const FlowContainer = (props: FlowContainerProps) => {
306
307
  !displayOnlyFA ? (
307
308
  <Card className={`${classes.root} psdk-root`}>
308
309
  <CardHeader
309
- title={<Typography variant='h6'>{containerName}</Typography>}
310
- subheader={`Task in ${caseId} \u2022 Priority ${urgency}`}
310
+ id='assignment-header'
311
+ title={<Typography variant='h6'>{localizedVal(containerName, undefined, key)}</Typography>}
312
+ subheader={`${localizedVal('Task in', 'Todo')} ${caseId} \u2022 ${localizedVal('Priority', 'Todo')} ${urgency}`}
311
313
  avatar={<Avatar className={`${classes.avatar} psdk-avatar`}>{operatorInitials}</Avatar>}
312
314
  />
313
315
  {displayPageMessages()}
@@ -319,7 +321,7 @@ export const FlowContainer = (props: FlowContainerProps) => {
319
321
  </Card>
320
322
  ) : (
321
323
  <Card className={`${classes.root} psdk-root`}>
322
- <Typography variant='h6'>{containerName}</Typography>
324
+ <Typography variant='h6'>{localizedVal(containerName, undefined, key)}</Typography>
323
325
  {displayPageMessages()}
324
326
  <MuiPickersUtilsProvider utils={DayjsUtils}>
325
327
  <Assignment getPConnect={getPConnect} itemKey={itemKey}>
@@ -97,7 +97,7 @@ export default function DashboardFilter(props: PropsWithChildren<DashboardFilter
97
97
  metadata.config.onRecordChange = e => {
98
98
  fireFilterChange(e.id);
99
99
  };
100
- return getPConnect().createComponent(metadata, '', '', {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional);
100
+ return getPConnect().createComponent(metadata, '', 0, {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional);
101
101
  };
102
102
 
103
103
  const onChange = dates => {
@@ -137,7 +137,7 @@ export default function DeferLoad(props: DeferLoadProps) {
137
137
  getPConnect()
138
138
  .getActionsApi()
139
139
  .refreshCaseView(encodeURI(loadViewCaseID), name, '') // 3rd arg empty string until typedef allows optional
140
- .then(data => {
140
+ .then((data: any) => {
141
141
  onResponse(data.root);
142
142
  });
143
143
  }
@@ -144,7 +144,9 @@ export default function MultiStep(props: PropsWithChildren<MultiStepProps>) {
144
144
  </div>
145
145
  </div>
146
146
  <div className={_getHLabelClass(mainStep.visited_status)}>
147
- <div className='psdk-horizontal-step-text-label'>{mainStep.name}</div>
147
+ <div className='psdk-horizontal-step-text-label' id='selected-label'>
148
+ {mainStep.name}
149
+ </div>
148
150
  </div>
149
151
  </div>
150
152
  {_showHLine(index) && <div className='psdk-horizontal-step-line' />}
@@ -249,8 +249,8 @@ export default function NavBar(props: NavBarProps) {
249
249
  <Divider />
250
250
  <List className='marginTopAuto'>
251
251
  <>
252
- <ListItem onClick={navPanelOperatorButtonClick} style={{ cursor: 'pointer' }}>
253
- <ListItemIcon>
252
+ <ListItem onClick={navPanelOperatorButtonClick}>
253
+ <ListItemIcon id='person-icon'>
254
254
  <PersonOutlineIcon fontSize='large' />
255
255
  </ListItemIcon>
256
256
  <ListItemText primary={portalOperator} />
@@ -186,6 +186,7 @@ export default function CaseView(props: PropsWithChildren<CaseViewProps>) {
186
186
  <Box>
187
187
  {editAction && (
188
188
  <Button
189
+ id='edit'
189
190
  onClick={() => {
190
191
  _editClick();
191
192
  }}
@@ -217,7 +218,7 @@ export default function CaseView(props: PropsWithChildren<CaseViewProps>) {
217
218
  <CardHeader
218
219
  className={classes.caseViewHeader}
219
220
  title={
220
- <Typography variant='h6' component='div'>
221
+ <Typography variant='h6' component='div' id='case-name'>
221
222
  {PCore.getLocaleUtils().getLocaleValue(header, '', localeKey)}
222
223
  </Typography>
223
224
  }
@@ -95,7 +95,7 @@ export default function CaseViewActionsMenu(props: CaseViewActionsMenuProps) {
95
95
 
96
96
  return (
97
97
  <>
98
- <Button aria-controls='simple-menu' aria-haspopup='true' onClick={handleClick}>
98
+ <Button id='actions-menu' aria-controls='simple-menu' aria-haspopup='true' onClick={handleClick}>
99
99
  {localizedVal('Actions...', localeCategory)}
100
100
  </Button>
101
101
  <Menu id='simple-menu' anchorEl={anchorEl} keepMounted open={Boolean(anchorEl)} onClose={handleClose}>
@@ -128,7 +128,7 @@ export default function DataReference(props: PropsWithChildren<DataReferenceProp
128
128
  const refreshOptions = { autoDetectRefresh: true };
129
129
  if (canBeChangedInReviewMode && pConn.getValue('__currentPageTabViewName', '')) {
130
130
  // 2nd arg empty string until typedef marked correctly
131
- getPConnect().getActionsApi().refreshCaseView(caseKey, pConn.getValue('__currentPageTabViewName', ''), null, refreshOptions); // 2nd arg empty string until typedef marked correctly
131
+ getPConnect().getActionsApi().refreshCaseView(caseKey, pConn.getValue('__currentPageTabViewName', ''), '', refreshOptions); // 2nd arg empty string until typedef marked correctly
132
132
  PCore.getDeferLoadManager().refreshActiveComponents(pConn.getContextName());
133
133
  } else {
134
134
  const pgRef = pConn.getPageReference().replace('caseInfo.content', '');
@@ -20,13 +20,8 @@ export const getKeyForMappedField = field => {
20
20
 
21
21
  const pConnect = field?.getPConnect?.();
22
22
 
23
- if (pConnect?.meta?.type && pConnect?.meta?.config?.name) {
24
- return `${pConnect.meta.type}_${pConnect.meta.config.name}`;
25
- }
26
-
27
- // Using label as a fallback if name is not defined.
28
- if (pConnect?.meta?.type && pConnect?.meta?.config?.label) {
29
- return `${pConnect.meta.type}_${pConnect.meta.config.label}`;
23
+ if (pConnect?.meta) {
24
+ return JSON.stringify(pConnect.meta);
30
25
  }
31
26
 
32
27
  return uuidv4();
@@ -46,7 +46,7 @@ export default function Details(props: DetailsProps) {
46
46
  field.config.displayAsStatus = true;
47
47
  }
48
48
 
49
- return getPConnect().createComponent(field, '', '', {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
49
+ return getPConnect().createComponent(field, '', 0, {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
50
50
  });
51
51
  }
52
52
 
@@ -46,7 +46,7 @@ export default function DetailsThreeColumn(props: DetailsThreeColumnProps) {
46
46
  field.config.displayAsStatus = true;
47
47
  }
48
48
 
49
- return getPConnect().createComponent(field, '', '', {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional);
49
+ return getPConnect().createComponent(field, '', 0, {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional);
50
50
  });
51
51
  }
52
52
 
@@ -46,7 +46,7 @@ export default function DetailsTwoColumn(props: DetailsTwoColumnProps) {
46
46
  field.config.displayAsStatus = true;
47
47
  }
48
48
 
49
- return getPConnect().createComponent(field, '', '', {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
49
+ return getPConnect().createComponent(field, '', 0, {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
50
50
  });
51
51
  }
52
52
 
@@ -51,6 +51,7 @@ export default function FieldGroupTemplate(props: FieldGroupTemplateProps) {
51
51
  if (PCore.getPCoreVersion()?.includes('8.7')) {
52
52
  pConn.getListActions().insert({ classID: contextClass }, referenceList.length, pageReference);
53
53
  } else {
54
+ // @ts-ignore - An argument for 'pageRef' was not provided.
54
55
  pConn.getListActions().insert({}, referenceList.length);
55
56
  }
56
57
  };
@@ -63,6 +64,7 @@ export default function FieldGroupTemplate(props: FieldGroupTemplateProps) {
63
64
  if (PCore.getPCoreVersion()?.includes('8.7')) {
64
65
  pConn.getListActions().deleteEntry(index, pageReference);
65
66
  } else {
67
+ // @ts-ignore - An argument for 'pageRef' was not provided.
66
68
  pConn.getListActions().deleteEntry(index);
67
69
  }
68
70
  };
@@ -653,6 +653,7 @@ export default function ListView(props: ListViewProps) {
653
653
 
654
654
  thePConn
655
655
  .getActionsApi()
656
+ // @ts-ignore
656
657
  .openAssignment(pzInsKey, pxRefObjectClass, options)
657
658
  .then(() => {
658
659
  // console.log("openAssignment successful");
@@ -885,6 +886,7 @@ export default function ListView(props: ListViewProps) {
885
886
  pzInsKey = row[`${associationCategory}:pzInsKey`];
886
887
  }
887
888
  if (column.isAssignmentLink) {
889
+ // @ts-ignore
888
890
  thePConn.getActionsApi().openAssignment(pzInsKey, pxObjClass, {
889
891
  containerName: 'primary',
890
892
  channelName: ''
@@ -1047,7 +1049,7 @@ export default function ListView(props: ListViewProps) {
1047
1049
  .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
1048
1050
  .map(row => {
1049
1051
  return (
1050
- <TableRow key={row.pxRefObjectInsName || row.pyID || row.pyGUID}>
1052
+ <TableRow key={row.pxRefObjectInsName || row.pyID}>
1051
1053
  {arColumns.map(column => {
1052
1054
  const value = row[column.id];
1053
1055
  return (
@@ -1104,7 +1106,7 @@ export default function ListView(props: ListViewProps) {
1104
1106
  .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
1105
1107
  .map(row => {
1106
1108
  return (
1107
- <TableRow key={row.pxRefObjectInsName || row.pyGUID || row.pyID}>
1109
+ <TableRow key={row[rowID]}>
1108
1110
  {selectionMode === SELECTION_MODE.SINGLE && (
1109
1111
  <TableCell>
1110
1112
  <Radio
@@ -29,7 +29,7 @@ export default function MultiReferenceReadOnly(props: MultiReferenceReadOnlyProp
29
29
  }
30
30
  },
31
31
  '',
32
- '',
32
+ 0,
33
33
  {}
34
34
  ); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
35
35
 
@@ -49,7 +49,7 @@ export default function NarrowWideDetails(props: NarrowWideDetailsProps) {
49
49
  field.config.displayAsStatus = true;
50
50
  }
51
51
 
52
- return getPConnect().createComponent(field, '', '', {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
52
+ return getPConnect().createComponent(field, '', 0, {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
53
53
  });
54
54
  }
55
55
 
@@ -87,6 +87,7 @@ export default function PromotedFilters(props: PromotedFilterProps) {
87
87
  };
88
88
  return getPConnect().getContainerManager().addTransientItem({
89
89
  id: viewName,
90
+ // @ts-ignore - Property 'coreHeaders' is missing in type '{ classID: string; }' but required in type '{ coreHeaders: any; }'.
90
91
  data: filtersWithClassID
91
92
  });
92
93
  }, []);
@@ -201,6 +201,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
201
201
  if (allowEditingInModal) {
202
202
  getPConnect()
203
203
  .getListActions()
204
+ // @ts-ignore - An argument for 'uniqueField' was not provided.
204
205
  .initDefaultPageInstructions(
205
206
  getPConnect().getReferenceList(),
206
207
  fieldDefs.filter(item => item.name).map(item => item.name)
@@ -302,6 +303,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
302
303
  .getActionsApi()
303
304
  .openEmbeddedDataModal(defaultView, pConn, referenceListStr, referenceList.length, PCore.getConstants().RESOURCE_STATUS.CREATE);
304
305
  } else {
306
+ // @ts-ignore - An argument for 'pageRef' was not provided.
305
307
  pConn.getListActions().insert({ classID: contextClass }, referenceList.length);
306
308
  }
307
309
 
@@ -327,10 +329,12 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
327
329
 
328
330
  const deleteRecord = () => {
329
331
  setEditAnchorEl(null);
332
+ // @ts-ignore - An argument for 'pageRef' was not provided.
330
333
  pConn.getListActions().deleteEntry(selectedRowIndex.current);
331
334
  };
332
335
 
333
336
  const deleteRecordFromInlineEditable = (index: number) => {
337
+ // @ts-ignore - An argument for 'pageRef' was not provided.
334
338
  pConn.getListActions().deleteEntry(index);
335
339
  };
336
340
 
@@ -55,7 +55,7 @@ export default function SingleReferenceReadOnly(props: SingleReferenceReadOnlyPr
55
55
  }
56
56
  },
57
57
  '',
58
- '',
58
+ 0,
59
59
  {}
60
60
  ); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
61
61
 
@@ -54,7 +54,7 @@ export default function WideNarrowDetails(props: WideNarrowDetailsProps) {
54
54
  field.config.displayAsStatus = true;
55
55
  }
56
56
 
57
- return getPConnect().createComponent(field, '', '', {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
57
+ return getPConnect().createComponent(field, '', 0, {}); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional
58
58
  });
59
59
  }
60
60
 
@@ -160,6 +160,7 @@ export default function Attachment(props: AttachmentProps) {
160
160
  messages: [
161
161
  {
162
162
  type: 'error',
163
+ // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
163
164
  message: pConn.getLocalizedValue('Error with one or more files', '', '')
164
165
  }
165
166
  ],
@@ -233,6 +234,7 @@ export default function Attachment(props: AttachmentProps) {
233
234
  messages: [
234
235
  {
235
236
  type: 'error',
237
+ // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
236
238
  message: pConn.getLocalizedValue('Error with one or more files', '', '')
237
239
  }
238
240
  ],
@@ -488,7 +488,7 @@ export default function FileUtility(props: FileUtilityProps) {
488
488
  }
489
489
 
490
490
  return (
491
- <div className='psdk-utility'>
491
+ <div className='psdk-utility' id='file-utility'>
492
492
  {inProgress && (
493
493
  <div className='progress-div'>
494
494
  <CircularProgress />
@@ -35,6 +35,7 @@ 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'
38
39
  envInfo.environmentInfoObject.pyCaseTypeList.forEach(casetype => {
39
40
  if (casetype.pyWorkTypeName && casetype.pyWorkTypeImplementationClassName) {
40
41
  defaultCases.push({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/react-sdk-overrides",
3
- "version": "0.23.37",
3
+ "version": "0.24.2",
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": [
File without changes