@pega/react-sdk-overrides 23.1.12 → 24.1.10

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 (37) 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/Phone/Phone.tsx +16 -7
  8. package/lib/field/ScalarList/ScalarList.tsx +2 -0
  9. package/lib/field/UserReference/UserReference.tsx +11 -1
  10. package/lib/helpers/common-utils.ts +1 -5
  11. package/lib/infra/Assignment/Assignment.tsx +28 -1
  12. package/lib/infra/Containers/FlowContainer/FlowContainer.tsx +5 -3
  13. package/lib/infra/DashboardFilter/DashboardFilter.tsx +1 -1
  14. package/lib/infra/DeferLoad/DeferLoad.tsx +5 -1
  15. package/lib/infra/MultiStep/MultiStep.tsx +3 -1
  16. package/lib/infra/NavBar/NavBar.tsx +2 -2
  17. package/lib/template/CaseView/CaseView.tsx +2 -1
  18. package/lib/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +1 -1
  19. package/lib/template/DataReference/DataReference.tsx +1 -1
  20. package/lib/template/DefaultForm/utils/index.ts +2 -7
  21. package/lib/template/Details/Details/Details.tsx +1 -1
  22. package/lib/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +1 -1
  23. package/lib/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +1 -1
  24. package/lib/template/FieldGroupTemplate/FieldGroupTemplate.tsx +2 -0
  25. package/lib/template/ListView/ListView.tsx +20 -31
  26. package/lib/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +1 -1
  27. package/lib/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +1 -1
  28. package/lib/template/PromotedFilters/PromotedFilters.tsx +1 -0
  29. package/lib/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +4 -0
  30. package/lib/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +1 -1
  31. package/lib/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +1 -1
  32. package/lib/widget/Attachment/Attachment.tsx +3 -2
  33. package/lib/widget/FileUtility/FileUtility/FileUtility.tsx +1 -1
  34. package/lib/widget/QuickCreate/QuickCreate.tsx +1 -0
  35. package/package.json +1 -1
  36. /package/lib/field/{MultiSelect → Multiselect}/index.tsx +0 -0
  37. /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
  }
@@ -1,7 +1,9 @@
1
1
  import MuiPhoneNumber from 'material-ui-phone-number';
2
+ import { useEffect, useState } from 'react';
2
3
 
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';
6
+ import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
5
7
 
6
8
  interface PhoneProps extends PConnFieldProps {
7
9
  // If any, enter additional props that only exist on Phone here
@@ -12,6 +14,7 @@ export default function Phone(props: PhoneProps) {
12
14
  const FieldValueList = getComponentFromMap('FieldValueList');
13
15
 
14
16
  const {
17
+ getPConnect,
15
18
  label,
16
19
  required,
17
20
  disabled,
@@ -19,7 +22,6 @@ export default function Phone(props: PhoneProps) {
19
22
  validatemessage,
20
23
  status,
21
24
  onChange,
22
- onBlur,
23
25
  readOnly,
24
26
  testId,
25
27
  helperText,
@@ -27,6 +29,14 @@ export default function Phone(props: PhoneProps) {
27
29
  hideLabel,
28
30
  placeholder
29
31
  } = props;
32
+
33
+ const pConn = getPConnect();
34
+ const actions = pConn.getActionsApi();
35
+ const propName = (pConn.getStateProps() as any).value;
36
+
37
+ const [inputValue, setInputValue] = useState(value);
38
+ useEffect(() => setInputValue(value), [value]);
39
+
30
40
  const helperTextToDisplay = validatemessage || helperText;
31
41
 
32
42
  let testProp = {};
@@ -69,15 +79,14 @@ export default function Phone(props: PhoneProps) {
69
79
  }
70
80
 
71
81
  const handleChange = inputVal => {
72
- let phoneValue = inputVal && inputVal.replace(/\D+/g, '');
73
- phoneValue = `+${phoneValue}`;
74
- onChange({ value: phoneValue });
82
+ setInputValue(inputVal);
75
83
  };
76
84
 
77
85
  const handleBlur = event => {
78
86
  const phoneValue = event?.target?.value;
79
- event.target.value = `+${phoneValue && phoneValue.replace(/\D+/g, '')}`;
80
- onBlur(event);
87
+ let phoneNumber = phoneValue.split(' ').slice(1).join();
88
+ phoneNumber = phoneNumber ? `+${phoneValue && phoneValue.replace(/\D+/g, '')}` : '';
89
+ handleEvent(actions, 'changeNblur', propName, phoneNumber);
81
90
  };
82
91
 
83
92
  return (
@@ -94,7 +103,7 @@ export default function Phone(props: PhoneProps) {
94
103
  onBlur={!readOnly ? handleBlur : undefined}
95
104
  error={status === 'error'}
96
105
  label={label}
97
- value={value}
106
+ value={inputValue}
98
107
  InputProps={{ ...testProp }}
99
108
  />
100
109
  );
@@ -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
 
@@ -1,8 +1,4 @@
1
+ /* eslint-disable import/prefer-default-export */
1
2
  export function isEmptyObject(obj: Object): boolean {
2
3
  return Object.keys(obj).length === 0;
3
4
  }
4
-
5
- export function isInfinity23OrHigher() {
6
- const pCoreVersion = PCore.getPCoreVersion();
7
- return ['8.23.0', '23.1.1', '23.1.2'].includes(pCoreVersion);
8
- }
@@ -41,6 +41,8 @@ export default function Assignment(props: PropsWithChildren<AssignmentProps>) {
41
41
  const cancelAssignment = actionsAPI.cancelAssignment.bind(actionsAPI);
42
42
  const saveAssignment = actionsAPI.saveAssignment?.bind(actionsAPI);
43
43
  const cancelCreateStageAssignment = actionsAPI.cancelCreateStageAssignment.bind(actionsAPI);
44
+ const approveCase = actionsAPI.approveCase?.bind(actionsAPI);
45
+ const rejectCase = actionsAPI.rejectCase?.bind(actionsAPI);
44
46
  // const showPage = actionsAPI.showPage.bind(actionsAPI);
45
47
 
46
48
  const [showSnackbar, setShowSnackbar] = useState(false);
@@ -167,6 +169,7 @@ export default function Assignment(props: PropsWithChildren<AssignmentProps>) {
167
169
 
168
170
  savePromise
169
171
  .then(() => {
172
+ // @ts-ignore - Property 'c11nEnv' is private and only accessible within class 'CaseInfo'.
170
173
  const caseType = thePConn.getCaseInfo().c11nEnv.getValue(PCore.getConstants().CASE_INFO.CASE_TYPE_ID);
171
174
  onSaveActionSuccess({ caseType, caseID, assignmentID });
172
175
  })
@@ -211,6 +214,18 @@ export default function Assignment(props: PropsWithChildren<AssignmentProps>) {
211
214
  break;
212
215
  }
213
216
 
217
+ case 'rejectCase': {
218
+ const rejectPromise = rejectCase(itemKey);
219
+
220
+ rejectPromise
221
+ .then(() => {})
222
+ .catch(() => {
223
+ showToast(`${localizedVal('Rejection failed!', localeCategory)}`);
224
+ });
225
+
226
+ break;
227
+ }
228
+
214
229
  default:
215
230
  break;
216
231
  }
@@ -229,6 +244,18 @@ export default function Assignment(props: PropsWithChildren<AssignmentProps>) {
229
244
  break;
230
245
  }
231
246
 
247
+ case 'approveCase': {
248
+ const approvePromise = approveCase(itemKey);
249
+
250
+ approvePromise
251
+ .then(() => {})
252
+ .catch(() => {
253
+ showToast(`${localizedVal('Approve failed!', localeCategory)}`);
254
+ });
255
+
256
+ break;
257
+ }
258
+
232
259
  default:
233
260
  break;
234
261
  }
@@ -263,7 +290,7 @@ export default function Assignment(props: PropsWithChildren<AssignmentProps>) {
263
290
  refreshProps.forEach(prop => {
264
291
  PCore.getRefreshManager().registerForRefresh(
265
292
  'PROP_CHANGE',
266
- thePConn.getActionsApi().refreshCaseView.bind(thePConn.getActionsApi(), caseKey, null, pageReference, {
293
+ thePConn.getActionsApi().refreshCaseView.bind(thePConn.getActionsApi(), caseKey, '', pageReference, {
267
294
  ...refreshOptions,
268
295
  refreshFor: prop[0]
269
296
  }),
@@ -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,8 +137,12 @@ 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
+ })
143
+ .catch(error => {
144
+ // eslint-disable-next-line no-console
145
+ console.log(`deferload: ${error}`);
142
146
  });
143
147
  }
144
148
  }, [name, getPConnect, currentLoadedAssignment]);
@@ -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
  };
@@ -65,7 +65,6 @@ interface ListViewProps extends PConnProps {
65
65
  const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' };
66
66
 
67
67
  let myRows: any[];
68
- let myDisplayColumnList: any[];
69
68
 
70
69
  let menuColumnId = '';
71
70
  let menuColumnType = '';
@@ -119,6 +118,7 @@ export default function ListView(props: ListViewProps) {
119
118
  const rowID = compositeKeys && compositeKeys?.length === 1 ? compositeKeys[0] : defRowID;
120
119
 
121
120
  const [arRows, setRows] = useState<any[]>([]);
121
+ const [rowsData, setRowsData] = useState<any[]>([]);
122
122
  const [arColumns, setColumns] = useState<any[]>([]);
123
123
  const [response, setResponse] = useState<any[]>([]);
124
124
 
@@ -291,16 +291,6 @@ export default function ListView(props: ListViewProps) {
291
291
  });
292
292
  }
293
293
 
294
- function getMyColumnList(arCols: any[]): string[] {
295
- const myColList: string[] = [];
296
-
297
- arCols.forEach(col => {
298
- myColList.push(col.id);
299
- });
300
-
301
- return myColList;
302
- }
303
-
304
294
  /** Will return field from a filter expression */
305
295
  function getFieldFromFilter(filter, dateRange = false) {
306
296
  let fieldValue;
@@ -543,8 +533,8 @@ export default function ListView(props: ListViewProps) {
543
533
 
544
534
  // store globally, so can be searched, filtered, etc.
545
535
  myRows = usingDataResults;
546
- myDisplayColumnList = getMyColumnList(myColumns);
547
536
 
537
+ setRowsData(myRows);
548
538
  // At this point, if we have data ready to render and haven't been asked
549
539
  // to NOT call setRows and setColumns, call them
550
540
  if (bCallSetRowsColumns) {
@@ -604,24 +594,22 @@ export default function ListView(props: ListViewProps) {
604
594
  }, [listContext]);
605
595
 
606
596
  function searchFilter(value: string, rows: any[]) {
597
+ const cols = arColumns.map(ele => {
598
+ return ele.id;
599
+ });
600
+
607
601
  function filterArray(el: any): boolean {
608
- const bReturn = false;
609
- for (const key of Object.keys(el)) {
610
- // only search columsn that are displayed (pzInsKey and pxRefObjectClass are added and may or may not be displayed)
611
- if (myDisplayColumnList.includes(key)) {
612
- let myVal = el[key];
613
- if (myVal !== null) {
614
- if (typeof myVal !== 'string') {
615
- myVal = myVal.toString();
616
- }
617
- if (myVal.toLowerCase().indexOf(value.toLowerCase()) >= 0) {
618
- return true;
619
- }
602
+ return Object.keys(el).some(key => {
603
+ // only search columns that are displayed (pzInsKey and pxRefObjectClass are added and may or may not be displayed)
604
+ if (cols.includes(key)) {
605
+ const myVal = el[key];
606
+ if (myVal !== null && typeof myVal !== 'undefined') {
607
+ const strVal = String(myVal); // Ensure myVal is a string
608
+ return strVal.toLowerCase().includes(value.toLowerCase());
620
609
  }
621
610
  }
622
- }
623
-
624
- return bReturn;
611
+ return false;
612
+ });
625
613
  }
626
614
 
627
615
  rows = rows.filter(filterArray);
@@ -631,8 +619,7 @@ export default function ListView(props: ListViewProps) {
631
619
 
632
620
  function _onSearch(event: any) {
633
621
  const searchValue = event.target.value;
634
-
635
- const filteredRows = searchFilter(searchValue, myRows.slice());
622
+ const filteredRows = searchFilter(searchValue, rowsData?.slice());
636
623
 
637
624
  setRows(filteredRows);
638
625
  }
@@ -653,6 +640,7 @@ export default function ListView(props: ListViewProps) {
653
640
 
654
641
  thePConn
655
642
  .getActionsApi()
643
+ // @ts-ignore
656
644
  .openAssignment(pzInsKey, pxRefObjectClass, options)
657
645
  .then(() => {
658
646
  // console.log("openAssignment successful");
@@ -885,6 +873,7 @@ export default function ListView(props: ListViewProps) {
885
873
  pzInsKey = row[`${associationCategory}:pzInsKey`];
886
874
  }
887
875
  if (column.isAssignmentLink) {
876
+ // @ts-ignore
888
877
  thePConn.getActionsApi().openAssignment(pzInsKey, pxObjClass, {
889
878
  containerName: 'primary',
890
879
  channelName: ''
@@ -1047,7 +1036,7 @@ export default function ListView(props: ListViewProps) {
1047
1036
  .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
1048
1037
  .map(row => {
1049
1038
  return (
1050
- <TableRow key={row.pxRefObjectInsName || row.pyID || row.pyGUID}>
1039
+ <TableRow key={row.pxRefObjectInsName || row.pyID}>
1051
1040
  {arColumns.map(column => {
1052
1041
  const value = row[column.id];
1053
1042
  return (
@@ -1104,7 +1093,7 @@ export default function ListView(props: ListViewProps) {
1104
1093
  .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
1105
1094
  .map(row => {
1106
1095
  return (
1107
- <TableRow key={row.pxRefObjectInsName || row.pyGUID || row.pyID}>
1096
+ <TableRow key={row[rowID]}>
1108
1097
  {selectionMode === SELECTION_MODE.SINGLE && (
1109
1098
  <TableCell>
1110
1099
  <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
 
@@ -8,7 +8,6 @@ import download from 'downloadjs';
8
8
 
9
9
  import { buildFilePropsFromResponse, getIconFromFileType, validateMaxSize } from '@pega/react-sdk-components/lib/components/helpers/attachmentHelpers';
10
10
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
11
- import { isInfinity23OrHigher } from '@pega/react-sdk-components/lib/components/helpers/common-utils';
12
11
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
13
12
 
14
13
  import './Attachment.css';
@@ -61,7 +60,7 @@ export default function Attachment(props: AttachmentProps) {
61
60
  const [toggleUploadBegin, setToggleUploadBegin] = useState(false);
62
61
 
63
62
  const resetAttachmentStoredState = () => {
64
- PCore.getStateUtils().updateState(pConn.getContextName(), getAttachmentKey(isInfinity23OrHigher() ? valueRef : ''), undefined, {
63
+ PCore.getStateUtils().updateState(pConn.getContextName(), getAttachmentKey(valueRef), undefined, {
65
64
  pageReference: 'context_data',
66
65
  isArrayDeepMerge: false
67
66
  });
@@ -160,6 +159,7 @@ export default function Attachment(props: AttachmentProps) {
160
159
  messages: [
161
160
  {
162
161
  type: 'error',
162
+ // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
163
163
  message: pConn.getLocalizedValue('Error with one or more files', '', '')
164
164
  }
165
165
  ],
@@ -233,6 +233,7 @@ export default function Attachment(props: AttachmentProps) {
233
233
  messages: [
234
234
  {
235
235
  type: 'error',
236
+ // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
236
237
  message: pConn.getLocalizedValue('Error with one or more files', '', '')
237
238
  }
238
239
  ],
@@ -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": "23.1.12",
3
+ "version": "24.1.10",
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