@pega/react-sdk-overrides 0.23.25 → 0.23.27
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.
- package/LICENSE +201 -0
- package/README.md +17 -0
- package/SECURITY.md +10 -0
- package/lib/designSystemExtension/AlertBanner/AlertBanner.tsx +39 -0
- package/lib/designSystemExtension/AlertBanner/index.tsx +1 -0
- package/lib/designSystemExtension/Banner/Banner.css +4 -0
- package/lib/designSystemExtension/Banner/Banner.tsx +33 -16
- package/lib/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css +0 -1
- package/lib/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +36 -26
- package/lib/designSystemExtension/DetailsFields/DetailsFields.tsx +21 -28
- package/lib/designSystemExtension/DetailsFields/index.tsx +1 -1
- package/lib/designSystemExtension/FieldGroup/FieldGroup.tsx +50 -18
- package/lib/designSystemExtension/FieldGroupList/FieldGroupList.tsx +13 -12
- package/lib/designSystemExtension/FieldValueList/FieldValueList.tsx +18 -27
- package/lib/designSystemExtension/Operator/Operator.tsx +106 -87
- package/lib/designSystemExtension/Pulse/Pulse.tsx +21 -19
- package/lib/designSystemExtension/RichTextEditor/RichTextEditor.tsx +122 -0
- package/lib/designSystemExtension/RichTextEditor/index.tsx +1 -0
- package/lib/designSystemExtension/WssQuickCreate/WssQuickCreate.css +6 -2
- package/lib/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +21 -12
- package/lib/field/AutoComplete/AutoComplete.tsx +33 -16
- package/lib/field/AutoComplete/config-ext.json +2 -3
- package/lib/field/CancelAlert/CancelAlert.tsx +21 -15
- package/lib/field/CancelAlert/index.tsx +1 -1
- package/lib/field/Checkbox/Checkbox.tsx +29 -19
- package/lib/field/Checkbox/config-ext.json +2 -3
- package/lib/field/Currency/Currency.tsx +27 -38
- package/lib/field/Currency/config-ext.json +2 -3
- package/lib/field/Currency/currency-utils.ts +10 -18
- package/lib/field/Date/Date.tsx +33 -15
- package/lib/field/Date/config-ext.json +2 -3
- package/lib/field/DateTime/DateTime.tsx +22 -11
- package/lib/field/DateTime/config-ext.json +1 -2
- package/lib/field/Decimal/Decimal.tsx +64 -17
- package/lib/field/Decimal/config-ext.json +1 -2
- package/lib/field/Decimal/index.tsx +1 -1
- package/lib/field/Dropdown/Dropdown.tsx +154 -18
- package/lib/field/Dropdown/config-ext.json +1 -2
- package/lib/field/Email/Email.tsx +16 -7
- package/lib/field/Email/config-ext.json +1 -2
- package/lib/field/Email/index.tsx +1 -1
- package/lib/field/Group/Group.tsx +37 -0
- package/lib/field/Group/config-ext.json +7 -0
- package/lib/field/Group/index.tsx +1 -0
- package/lib/field/Integer/Integer.tsx +15 -6
- package/lib/field/Integer/config-ext.json +1 -2
- package/lib/field/Percentage/Percentage.tsx +14 -6
- package/lib/field/Percentage/config-ext.json +1 -2
- package/lib/field/Phone/Phone.tsx +17 -7
- package/lib/field/Phone/index.tsx +1 -1
- package/lib/field/RadioButtons/RadioButtons.tsx +55 -24
- package/lib/field/RadioButtons/config-ext.json +1 -2
- package/lib/field/RichText/RichText.tsx +96 -0
- package/lib/field/RichText/index.tsx +1 -0
- package/lib/field/ScalarList/ScalarList.tsx +63 -0
- package/lib/field/ScalarList/config-ext.json +7 -0
- package/lib/field/ScalarList/index.tsx +1 -0
- package/lib/field/SemanticLink/SemanticLink.tsx +26 -25
- package/lib/field/SemanticLink/config-ext.json +1 -2
- package/lib/field/SemanticLink/utils.ts +8 -10
- package/lib/field/TextArea/TextArea.tsx +15 -5
- package/lib/field/TextArea/config-ext.json +1 -2
- package/lib/field/TextContent/TextContent.tsx +9 -2
- package/lib/field/TextContent/config-ext.json +1 -2
- package/lib/field/TextInput/TextInput.tsx +41 -10
- package/lib/field/TextInput/config-ext.json +1 -2
- package/lib/field/TextInput/index.tsx +1 -1
- package/lib/field/Time/Time.tsx +21 -18
- package/lib/field/Time/config-ext.json +1 -2
- package/lib/field/URL/URL.tsx +23 -6
- package/lib/field/URL/config-ext.json +1 -2
- package/lib/field/URL/index.tsx +1 -1
- package/lib/field/UserReference/UserReference.tsx +52 -58
- package/lib/field/UserReference/UserReferenceUtils.ts +2 -2
- package/lib/field/UserReference/config-ext.json +1 -2
- package/lib/helpers/{attachmentHelpers.js → attachmentHelpers.ts} +16 -11
- package/lib/helpers/case-utils.tsx +99 -0
- package/lib/helpers/common-utils.ts +8 -0
- package/lib/helpers/data_page.ts +3 -6
- package/lib/helpers/date-format-utils.ts +29 -19
- package/lib/helpers/{event-utils.js → event-utils.ts} +4 -4
- package/lib/helpers/{field-group-utils.js → field-group-utils.ts} +9 -10
- package/lib/helpers/formatters/Boolean.ts +21 -0
- package/lib/helpers/formatters/{Currency.js → Currency.ts} +22 -27
- package/lib/helpers/formatters/CurrencyMap.ts +915 -0
- package/lib/helpers/formatters/{Date.js → Date.ts} +20 -26
- package/lib/helpers/formatters/{common.js → common.ts} +3 -4
- package/lib/helpers/formatters/{index.js → index.ts} +22 -22
- package/lib/helpers/{reactContextHelpers.js → reactContextHelpers.ts} +2 -2
- package/lib/helpers/simpleTableHelpers.ts +65 -85
- package/lib/helpers/state-utils.tsx +43 -0
- package/lib/helpers/template-utils.ts +4 -8
- package/lib/helpers/utils.ts +16 -8
- package/lib/helpers/versionHelpers.ts +1 -5
- package/lib/infra/ActionButtons/ActionButtons.tsx +46 -42
- package/lib/infra/ActionButtons/index.tsx +1 -1
- package/lib/infra/Assignment/Assignment.tsx +99 -84
- package/lib/infra/Assignment/index.tsx +1 -1
- package/lib/infra/AssignmentCard/AssignmentCard.tsx +19 -26
- package/lib/infra/AssignmentCard/index.tsx +1 -1
- package/lib/infra/Containers/FlowContainer/FlowContainer.tsx +98 -232
- package/lib/infra/Containers/FlowContainer/helpers.ts +138 -0
- package/lib/infra/Containers/FlowContainer/index.tsx +1 -1
- package/lib/infra/Containers/ModalViewContainer/ListViewActionButtons/ListViewActionButtons.tsx +66 -0
- package/lib/infra/Containers/ModalViewContainer/ListViewActionButtons/index.tsx +1 -0
- package/lib/infra/Containers/ModalViewContainer/ModalViewContainer.tsx +105 -70
- package/lib/infra/Containers/ModalViewContainer/index.tsx +1 -1
- package/lib/infra/Containers/SimpleView/SimpleView.tsx +48 -0
- package/lib/infra/Containers/SimpleView/helper.ts +125 -0
- package/lib/infra/Containers/SimpleView/index.tsx +1 -0
- package/lib/infra/Containers/ViewContainer/ViewContainer.tsx +49 -64
- package/lib/infra/Containers/helpers.ts +6 -0
- package/lib/infra/DashboardFilter/DashboardFilter.tsx +26 -51
- package/lib/infra/DashboardFilter/filterUtils.tsx +12 -40
- package/lib/infra/DeferLoad/DeferLoad.tsx +22 -31
- package/lib/infra/DeferLoad/index.tsx +1 -1
- package/lib/infra/ErrorBoundary/ErrorBoundary.tsx +25 -38
- package/lib/infra/MultiStep/MultiStep.css +11 -15
- package/lib/infra/MultiStep/MultiStep.tsx +180 -216
- package/lib/infra/MultiStep/index.tsx +1 -1
- package/lib/infra/NavBar/NavBar.css +103 -105
- package/lib/infra/NavBar/NavBar.tsx +28 -43
- package/lib/infra/Reference/Reference.tsx +16 -22
- package/lib/infra/Region/Region.tsx +9 -9
- package/lib/infra/RootContainer/RootContainer.tsx +82 -125
- package/lib/infra/RootContainer/index.tsx +1 -1
- package/lib/infra/Stages/Stages.tsx +38 -39
- package/lib/infra/VerticalTabs/LeftAlignVerticalTabs/LeftAlignVerticalTabs.tsx +17 -10
- package/lib/infra/VerticalTabs/VerticalTabs/VerticalTabs.tsx +29 -36
- package/lib/infra/View/View.tsx +34 -65
- package/lib/template/AppShell/AppShell.css +22 -23
- package/lib/template/AppShell/AppShell.tsx +51 -69
- package/lib/template/BannerPage/BannerPage.tsx +26 -33
- package/lib/template/CaseSummary/CaseSummary.tsx +23 -18
- package/lib/template/CaseSummary/config-ext.json +1 -2
- package/lib/template/CaseView/CaseView.tsx +122 -114
- package/lib/template/CaseView/config-ext.json +1 -2
- package/lib/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +46 -35
- package/lib/template/Confirmation/Confirmation.tsx +25 -53
- package/lib/template/Confirmation/config-ext.json +1 -2
- package/lib/template/DataReference/DataReference.tsx +112 -140
- package/lib/template/DataReference/config-ext.json +1 -2
- package/lib/template/DefaultForm/DefaultForm.css +7 -3
- package/lib/template/DefaultForm/DefaultForm.tsx +26 -20
- package/lib/template/DefaultForm/config-ext.json +1 -2
- package/lib/template/DefaultForm/utils/index.ts +33 -0
- package/lib/template/Details/Details/Details.tsx +24 -28
- package/lib/template/Details/DetailsSubTabs/DetailsSubTabs.tsx +15 -22
- package/lib/template/Details/DetailsSubTabs/config-ext.json +1 -2
- package/lib/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +25 -29
- package/lib/template/Details/DetailsThreeColumn/config-ext.json +1 -2
- package/lib/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +25 -29
- package/lib/template/Details/DetailsTwoColumn/config-ext.json +1 -2
- package/lib/template/Details/DetailsTwoColumn/index.tsx +1 -1
- package/lib/template/Details/DynamicTabs/DynamicTabs.tsx +79 -0
- package/lib/template/Details/DynamicTabs/config.json +36 -0
- package/lib/template/Details/DynamicTabs/index.tsx +1 -0
- package/lib/template/FieldGroupTemplate/FieldGroupTemplate.tsx +24 -34
- package/lib/template/InlineDashboard/InlineDashboard.tsx +16 -14
- package/lib/template/InlineDashboardPage/InlineDashboardPage.tsx +19 -21
- package/lib/template/ListPage/ListPage.tsx +12 -16
- package/lib/template/ListPage/config-ext.json +1 -2
- package/lib/template/ListView/{DefaultViewMeta.js → DefaultViewMeta.ts} +1 -3
- package/lib/template/ListView/ListView.tsx +245 -306
- package/lib/template/ListView/config-ext.json +1 -2
- package/lib/template/ListView/{hooks.js → hooks.ts} +24 -24
- package/lib/template/ListView/{utils.js → utils.ts} +202 -91
- package/lib/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +25 -30
- package/lib/template/NarrowWide/NarrowWide/NarrowWide.css +0 -2
- package/lib/template/NarrowWide/NarrowWide/NarrowWide.tsx +31 -29
- package/lib/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +27 -31
- package/lib/template/NarrowWide/NarrowWideDetails/config-ext.json +1 -2
- package/lib/template/NarrowWide/NarrowWideForm/NarrowWideForm.css +0 -2
- package/lib/template/NarrowWide/NarrowWideForm/NarrowWideForm.tsx +17 -19
- package/lib/template/NarrowWide/NarrowWideForm/config-ext.json +1 -2
- package/lib/template/NarrowWide/NarrowWidePage/NarrowWidePage.tsx +16 -26
- package/lib/template/NarrowWide/NarrowWidePage/config-ext.json +1 -2
- package/lib/template/OneColumn/OneColumn/OneColumn.tsx +17 -17
- package/lib/template/OneColumn/OneColumn/config-ext.json +1 -2
- package/lib/template/OneColumn/OneColumnPage/OneColumnPage.tsx +9 -16
- package/lib/template/OneColumn/OneColumnPage/config-ext.json +1 -2
- package/lib/template/OneColumn/OneColumnTab/OneColumnTab.tsx +8 -14
- package/lib/template/OneColumn/OneColumnTab/config-ext.json +1 -2
- package/lib/template/PromotedFilters/PromotedFilters.css +1 -1
- package/lib/template/PromotedFilters/PromotedFilters.tsx +44 -34
- package/lib/template/SimpleTable/SimpleTable/SimpleTable.tsx +115 -14
- package/lib/template/SimpleTable/SimpleTable/config-ext.json +1 -2
- package/lib/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +171 -100
- package/lib/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.tsx +34 -40
- package/lib/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +45 -48
- package/lib/template/SubTabs/SubTabs.tsx +26 -45
- package/lib/template/SubTabs/config-ext.json +1 -2
- package/lib/template/SubTabs/tabUtils.ts +2 -7
- package/lib/template/TwoColumn/TwoColumn/TwoColumn.css +0 -1
- package/lib/template/TwoColumn/TwoColumn/TwoColumn.tsx +33 -36
- package/lib/template/TwoColumn/TwoColumn/config-ext.json +1 -2
- package/lib/template/TwoColumn/TwoColumnPage/TwoColumnPage.tsx +9 -16
- package/lib/template/TwoColumn/TwoColumnPage/config-ext.json +1 -2
- package/lib/template/TwoColumn/TwoColumnTab/TwoColumnTab.tsx +33 -33
- package/lib/template/TwoColumn/TwoColumnTab/config-ext.json +1 -2
- package/lib/template/WideNarrow/WideNarrow/WideNarrow.css +0 -2
- package/lib/template/WideNarrow/WideNarrow/WideNarrow.tsx +29 -27
- package/lib/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +39 -33
- package/lib/template/WideNarrow/WideNarrowDetails/config-ext.json +1 -2
- package/lib/template/WideNarrow/WideNarrowForm/WideNarrowForm.css +0 -2
- package/lib/template/WideNarrow/WideNarrowForm/WideNarrowForm.tsx +16 -18
- package/lib/template/WideNarrow/WideNarrowForm/config-ext.json +1 -2
- package/lib/template/WideNarrow/WideNarrowPage/WideNarrowPage.tsx +15 -25
- package/lib/template/WideNarrow/WideNarrowPage/config-ext.json +1 -2
- package/lib/template/WideNarrow/WideNarrowPage/index.tsx +1 -1
- package/lib/template/WssNavBar/WssNavBar.tsx +33 -17
- package/lib/widget/AppAnnouncement/AppAnnouncement.tsx +34 -41
- package/lib/widget/AppAnnouncement/config-ext.json +1 -2
- package/lib/widget/Attachment/Attachment.css +75 -4
- package/lib/widget/Attachment/Attachment.tsx +370 -388
- package/lib/widget/Attachment/index.tsx +1 -1
- package/lib/widget/CaseHistory/CaseHistory.tsx +67 -67
- package/lib/widget/CaseHistory/config-ext.json +1 -2
- package/lib/widget/CaseHistory/index.tsx +1 -1
- package/lib/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +19 -9
- package/lib/widget/FileUtility/FileUtility/FileUtility.css +2 -2
- package/lib/widget/FileUtility/FileUtility/FileUtility.tsx +324 -246
- package/lib/widget/FileUtility/FileUtility/config-ext.json +1 -2
- package/lib/widget/Followers/Followers.tsx +27 -25
- package/lib/widget/Followers/config-ext.json +1 -2
- package/lib/widget/QuickCreate/QuickCreate.tsx +24 -16
- package/lib/widget/SummaryItem/SummaryItem.css +9 -9
- package/lib/widget/SummaryItem/SummaryItem.tsx +62 -54
- package/lib/widget/SummaryItem/index.tsx +1 -1
- package/lib/widget/SummaryList/SummaryList.tsx +15 -4
- package/lib/widget/ToDo/ToDo.css +4 -4
- package/lib/widget/ToDo/ToDo.tsx +80 -116
- package/lib/widget/ToDo/config-ext.json +1 -2
- package/package.json +5 -2
- package/lib/helpers/auth.js +0 -483
- package/lib/helpers/authManager.js +0 -631
- package/lib/helpers/config_access.js +0 -268
- package/lib/helpers/formatters/Boolean.js +0 -38
- package/lib/helpers/formatters/CurrencyMap.js +0 -908
- package/lib/infra/Containers/FlowContainer/helpers.js +0 -147
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
// eslint-disable-next-line import/no-named-default
|
|
2
|
-
import { default as CurrencyAlias} from '@pega/react-sdk-components/lib/components/helpers/formatters/Currency';
|
|
2
|
+
import { default as CurrencyAlias } from '@pega/react-sdk-components/lib/components/helpers/formatters/Currency';
|
|
3
3
|
// eslint-disable-next-line import/no-named-default
|
|
4
4
|
import { default as CurrencyMapAlias } from '@pega/react-sdk-components/lib/components/helpers/formatters/CurrencyMap';
|
|
5
5
|
|
|
6
|
-
declare const PCore: any;
|
|
7
|
-
|
|
8
6
|
export const getCurrencyOptions = (inISOCode: string) => {
|
|
9
|
-
|
|
10
|
-
const operatorLocale = PCore.getEnvironmentInfo().getUseLocale() || 'en-US';
|
|
7
|
+
const operatorLocale = PCore.getEnvironmentInfo().getUseLocale() || PCore.getEnvironmentInfo().getLocale() || 'en-US';
|
|
11
8
|
|
|
12
9
|
let currMapToUse = CurrencyMapAlias.US;
|
|
13
10
|
let localeToUse = operatorLocale;
|
|
@@ -16,12 +13,12 @@ export const getCurrencyOptions = (inISOCode: string) => {
|
|
|
16
13
|
// If no ISO code, use locale
|
|
17
14
|
// If no locale, default to US
|
|
18
15
|
if (inISOCode) {
|
|
19
|
-
if (inISOCode ===
|
|
16
|
+
if (inISOCode === 'EUR') {
|
|
20
17
|
currMapToUse = CurrencyMapAlias.NL;
|
|
21
|
-
localeToUse =
|
|
18
|
+
localeToUse = 'nl-NL';
|
|
22
19
|
} else {
|
|
23
20
|
// For all other ISO codes, use first 2 characters as the lookup from CurrencyMap
|
|
24
|
-
const countryCode = inISOCode.substring(0,2);
|
|
21
|
+
const countryCode = inISOCode.substring(0, 2);
|
|
25
22
|
currMapToUse = CurrencyMapAlias[countryCode];
|
|
26
23
|
}
|
|
27
24
|
} else if (operatorLocale) {
|
|
@@ -35,23 +32,19 @@ export const getCurrencyOptions = (inISOCode: string) => {
|
|
|
35
32
|
|
|
36
33
|
// If no currMapToUse at this point, default to US as a failsafe
|
|
37
34
|
if (!currMapToUse) {
|
|
38
|
-
currMapToUse = CurrencyMapAlias
|
|
35
|
+
currMapToUse = CurrencyMapAlias.US;
|
|
39
36
|
}
|
|
40
37
|
|
|
41
38
|
const theCode = currMapToUse.currencyCode.substring(0, 3);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return currencyOptions;
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
39
|
+
return { locale: localeToUse, style: 'currency', currency: theCode };
|
|
40
|
+
};
|
|
48
41
|
|
|
49
42
|
export const getCurrencyCharacters = (inISOCode: string) => {
|
|
50
43
|
const theCurrencyChars = {
|
|
51
44
|
theCurrencySymbol: '$',
|
|
52
45
|
theDecimalIndicator: '.',
|
|
53
46
|
theDigitGroupSeparator: ','
|
|
54
|
-
}
|
|
47
|
+
};
|
|
55
48
|
|
|
56
49
|
const theCurrencyOptions = getCurrencyOptions(inISOCode);
|
|
57
50
|
|
|
@@ -72,5 +65,4 @@ export const getCurrencyCharacters = (inISOCode: string) => {
|
|
|
72
65
|
// console.log(`theCurrencyChars: symbol: ${theCurrencyChars.theCurrencySymbol} | theDigitGroupSeparator: ${theCurrencyChars.theDigitGroupSeparator} | theDecimalIndicator: ${theCurrencyChars.theDecimalIndicator}`);
|
|
73
66
|
|
|
74
67
|
return theCurrencyChars;
|
|
75
|
-
|
|
76
|
-
}
|
|
68
|
+
};
|
package/lib/field/Date/Date.tsx
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { KeyboardDatePicker } from '@material-ui/pickers';
|
|
3
|
-
|
|
2
|
+
|
|
4
3
|
import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
|
|
5
|
+
import { dateFormatInfoDefault, getDateFormatInfo } from '@pega/react-sdk-components/lib/components/helpers/date-format-utils';
|
|
6
|
+
import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
|
|
7
|
+
import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
8
|
+
|
|
9
|
+
// Will return the date string in YYYY-MM-DD format which we'll be POSTing to the server
|
|
10
|
+
function getFormattedDate(date) {
|
|
11
|
+
return `${date.$y.toString()}-${(date.$M + 1).toString().padStart(2, '0')}-${date.$D.toString().padStart(2, '0')}`;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface DateProps extends PConnFieldProps {
|
|
15
|
+
// If any, enter additional props that only exist on Date here
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default function Date(props: DateProps) {
|
|
19
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
20
|
+
const TextInput = getComponentFromMap('TextInput');
|
|
21
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
8
22
|
|
|
9
|
-
export default function Date(props) {
|
|
10
23
|
const {
|
|
11
24
|
getPConnect,
|
|
12
25
|
label,
|
|
@@ -26,25 +39,28 @@ export default function Date(props) {
|
|
|
26
39
|
|
|
27
40
|
const pConn = getPConnect();
|
|
28
41
|
const actions = pConn.getActionsApi();
|
|
29
|
-
const propName = pConn.getStateProps().value;
|
|
42
|
+
const propName = (pConn.getStateProps() as any).value;
|
|
30
43
|
const helperTextToDisplay = validatemessage || helperText;
|
|
31
44
|
|
|
32
45
|
// Start with default dateFormatInfo
|
|
33
46
|
const dateFormatInfo = dateFormatInfoDefault;
|
|
34
47
|
// and then update, as needed, based on locale, etc.
|
|
35
|
-
const theDateFormat = getDateFormatInfo()
|
|
48
|
+
const theDateFormat = getDateFormatInfo();
|
|
36
49
|
dateFormatInfo.dateFormatString = theDateFormat.dateFormatString;
|
|
37
50
|
dateFormatInfo.dateFormatStringLC = theDateFormat.dateFormatStringLC;
|
|
38
51
|
dateFormatInfo.dateFormatMask = theDateFormat.dateFormatMask;
|
|
39
52
|
|
|
40
|
-
|
|
41
53
|
if (displayMode === 'LABELS_LEFT') {
|
|
42
|
-
const formattedDate = format(props.value, 'date', {
|
|
54
|
+
const formattedDate = format(props.value, 'date', {
|
|
55
|
+
format: dateFormatInfo.dateFormatString
|
|
56
|
+
});
|
|
43
57
|
return <FieldValueList name={hideLabel ? '' : label} value={formattedDate} />;
|
|
44
58
|
}
|
|
45
59
|
|
|
46
60
|
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
47
|
-
const formattedDate = format(props.value, 'date', {
|
|
61
|
+
const formattedDate = format(props.value, 'date', {
|
|
62
|
+
format: dateFormatInfo.dateFormatString
|
|
63
|
+
});
|
|
48
64
|
return <FieldValueList name={hideLabel ? '' : label} value={formattedDate} variant='stacked' />;
|
|
49
65
|
}
|
|
50
66
|
|
|
@@ -60,13 +76,15 @@ export default function Date(props) {
|
|
|
60
76
|
};
|
|
61
77
|
|
|
62
78
|
const handleChange = date => {
|
|
63
|
-
|
|
64
|
-
|
|
79
|
+
if (date && date.isValid()) {
|
|
80
|
+
onChange({ value: getFormattedDate(date) });
|
|
81
|
+
}
|
|
65
82
|
};
|
|
66
83
|
|
|
67
84
|
const handleAccept = date => {
|
|
68
|
-
|
|
69
|
-
|
|
85
|
+
if (date && date.isValid()) {
|
|
86
|
+
handleEvent(actions, 'changeNblur', propName, getFormattedDate(date));
|
|
87
|
+
}
|
|
70
88
|
};
|
|
71
89
|
|
|
72
90
|
return (
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { KeyboardDateTimePicker } from '@material-ui/pickers';
|
|
3
|
-
|
|
2
|
+
|
|
4
3
|
import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
|
|
5
|
+
import { dateFormatInfoDefault, getDateFormatInfo } from '@pega/react-sdk-components/lib/components/helpers/date-format-utils';
|
|
6
|
+
import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
|
|
7
|
+
import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
8
|
+
|
|
9
|
+
interface DateTimeProps extends PConnFieldProps {
|
|
10
|
+
// If any, enter additional props that only exist on DateTime here
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export default function DateTime(props: DateTimeProps) {
|
|
14
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
15
|
+
const TextInput = getComponentFromMap('TextInput');
|
|
16
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
8
17
|
|
|
9
|
-
export default function DateTime(props) {
|
|
10
18
|
const {
|
|
11
19
|
getPConnect,
|
|
12
20
|
label,
|
|
@@ -25,25 +33,28 @@ export default function DateTime(props) {
|
|
|
25
33
|
|
|
26
34
|
const pConn = getPConnect();
|
|
27
35
|
const actions = pConn.getActionsApi();
|
|
28
|
-
const propName = pConn.getStateProps().value;
|
|
36
|
+
const propName = (pConn.getStateProps() as any).value;
|
|
29
37
|
const helperTextToDisplay = validatemessage || helperText;
|
|
30
38
|
|
|
31
39
|
// Start with default dateFormatInfo
|
|
32
40
|
const dateFormatInfo = dateFormatInfoDefault;
|
|
33
41
|
// and then update, as needed, based on locale, etc.
|
|
34
|
-
const theDateFormat = getDateFormatInfo()
|
|
42
|
+
const theDateFormat = getDateFormatInfo();
|
|
35
43
|
dateFormatInfo.dateFormatString = theDateFormat.dateFormatString;
|
|
36
44
|
dateFormatInfo.dateFormatStringLC = theDateFormat.dateFormatStringLC;
|
|
37
45
|
dateFormatInfo.dateFormatMask = theDateFormat.dateFormatMask;
|
|
38
46
|
|
|
39
|
-
|
|
40
47
|
if (displayMode === 'LABELS_LEFT') {
|
|
41
|
-
const formattedDateTime = format(props.value, 'datetime', {
|
|
48
|
+
const formattedDateTime = format(props.value, 'datetime', {
|
|
49
|
+
format: `${dateFormatInfo.dateFormatString} hh:mm a`
|
|
50
|
+
});
|
|
42
51
|
return <FieldValueList name={hideLabel ? '' : label} value={formattedDateTime} />;
|
|
43
52
|
}
|
|
44
53
|
|
|
45
54
|
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
46
|
-
const formattedDateTime = format(props.value, 'datetime', {
|
|
55
|
+
const formattedDateTime = format(props.value, 'datetime', {
|
|
56
|
+
format: `${dateFormatInfo.dateFormatString} hh:mm a`
|
|
57
|
+
});
|
|
47
58
|
return <FieldValueList name={hideLabel ? '' : label} value={formattedDateTime} variant='stacked' />;
|
|
48
59
|
}
|
|
49
60
|
|
|
@@ -1,53 +1,100 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
import CurrencyTextField from '@unicef/material-ui-currency-textfield';
|
|
3
|
+
|
|
4
|
+
import { getCurrencyCharacters, getCurrencyOptions } from '@pega/react-sdk-components/lib/components/field/Currency/currency-utils';
|
|
5
|
+
import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
|
|
6
|
+
import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
|
|
7
|
+
import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
|
|
8
|
+
import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
9
|
+
|
|
10
|
+
// Using control from: https://github.com/unicef/material-ui-currency-textfield
|
|
11
|
+
|
|
12
|
+
interface DecimalProps extends PConnFieldProps {
|
|
13
|
+
// If any, enter additional props that only exist on Decimal here
|
|
14
|
+
currencyISOCode?: string;
|
|
15
|
+
decimalPrecision?: number;
|
|
16
|
+
showGroupSeparators?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export default function Decimal(props: DecimalProps) {
|
|
20
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
21
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
5
22
|
|
|
6
|
-
export default function Decimal(props) {
|
|
7
23
|
const {
|
|
24
|
+
getPConnect,
|
|
8
25
|
label,
|
|
9
26
|
required,
|
|
10
27
|
disabled,
|
|
11
28
|
value = '',
|
|
12
29
|
validatemessage,
|
|
13
30
|
status,
|
|
14
|
-
onChange,
|
|
15
|
-
onBlur,
|
|
31
|
+
/* onChange, onBlur, */
|
|
16
32
|
readOnly,
|
|
17
33
|
helperText,
|
|
18
34
|
displayMode,
|
|
19
|
-
hideLabel
|
|
35
|
+
hideLabel,
|
|
36
|
+
currencyISOCode = 'USD',
|
|
37
|
+
decimalPrecision = 2,
|
|
38
|
+
showGroupSeparators = true,
|
|
39
|
+
testId,
|
|
40
|
+
placeholder
|
|
20
41
|
} = props;
|
|
42
|
+
|
|
43
|
+
const pConn = getPConnect();
|
|
44
|
+
const actions = pConn.getActionsApi();
|
|
45
|
+
const propName = (pConn.getStateProps() as any).value;
|
|
21
46
|
const helperTextToDisplay = validatemessage || helperText;
|
|
22
47
|
|
|
48
|
+
const [theCurrDec, setCurrDec] = useState('.');
|
|
49
|
+
const [theCurrSep, setCurrSep] = useState(',');
|
|
50
|
+
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
const theSymbols = getCurrencyCharacters(currencyISOCode);
|
|
53
|
+
setCurrDec(theSymbols.theDecimalIndicator);
|
|
54
|
+
setCurrSep(theSymbols.theDigitGroupSeparator);
|
|
55
|
+
}, [currencyISOCode]);
|
|
56
|
+
|
|
57
|
+
const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
|
|
58
|
+
const formattedValue = format(value, pConn.getComponentName().toLowerCase(), theCurrencyOptions);
|
|
59
|
+
|
|
23
60
|
if (displayMode === 'LABELS_LEFT') {
|
|
24
|
-
return <FieldValueList name={hideLabel ? '' : label} value={
|
|
61
|
+
return <FieldValueList name={hideLabel ? '' : label} value={formattedValue} />;
|
|
25
62
|
}
|
|
26
63
|
|
|
27
64
|
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
28
|
-
return <FieldValueList name={hideLabel ? '' : label} value={
|
|
65
|
+
return <FieldValueList name={hideLabel ? '' : label} value={formattedValue} variant='stacked' />;
|
|
29
66
|
}
|
|
30
67
|
|
|
31
|
-
|
|
32
|
-
|
|
68
|
+
const testProp = {
|
|
69
|
+
'data-test-id': testId
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
function decimalOnBlur(event, inValue) {
|
|
73
|
+
handleEvent(actions, 'changeNblur', propName, inValue !== '' ? Number(inValue) : inValue);
|
|
33
74
|
}
|
|
34
75
|
|
|
35
76
|
return (
|
|
36
|
-
<
|
|
77
|
+
<CurrencyTextField
|
|
37
78
|
fullWidth
|
|
38
79
|
variant={readOnly ? 'standard' : 'outlined'}
|
|
39
80
|
helperText={helperTextToDisplay}
|
|
40
|
-
placeholder=''
|
|
81
|
+
placeholder={placeholder ?? ''}
|
|
41
82
|
size='small'
|
|
42
83
|
required={required}
|
|
43
84
|
disabled={disabled}
|
|
44
|
-
onChange={onChange}
|
|
45
|
-
onBlur={!readOnly ? onBlur : undefined}
|
|
46
85
|
error={status === 'error'}
|
|
47
86
|
label={label}
|
|
48
87
|
value={value}
|
|
88
|
+
readOnly={!!readOnly}
|
|
49
89
|
type='text'
|
|
50
|
-
|
|
90
|
+
outputFormat='number'
|
|
91
|
+
textAlign='left'
|
|
92
|
+
InputProps={{ inputProps: { ...testProp } }}
|
|
93
|
+
currencySymbol=''
|
|
94
|
+
decimalCharacter={theCurrDec}
|
|
95
|
+
digitGroupSeparator={showGroupSeparators ? theCurrSep : ''}
|
|
96
|
+
decimalPlaces={decimalPrecision}
|
|
97
|
+
onBlur={!readOnly ? decimalOnBlur : undefined}
|
|
51
98
|
/>
|
|
52
99
|
);
|
|
53
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from './Decimal';
|
|
1
|
+
export { default } from './Decimal';
|
|
@@ -1,54 +1,189 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
2
|
import { TextField } from '@material-ui/core';
|
|
3
3
|
import MenuItem from '@material-ui/core/MenuItem';
|
|
4
|
+
import isDeepEqual from 'fast-deep-equal/react';
|
|
4
5
|
import Utils from '@pega/react-sdk-components/lib/components/helpers/utils';
|
|
6
|
+
import { getDataPage } from '@pega/react-sdk-components/lib/components/helpers/data_page';
|
|
5
7
|
import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
|
|
6
|
-
import
|
|
8
|
+
import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
|
|
9
|
+
import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
7
10
|
|
|
8
11
|
interface IOption {
|
|
9
12
|
key: string;
|
|
10
13
|
value: string;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
const flattenParameters = (params = {}) => {
|
|
17
|
+
const flatParams = {};
|
|
18
|
+
Object.keys(params).forEach(key => {
|
|
19
|
+
const { name, value: theVal } = params[key];
|
|
20
|
+
flatParams[name] = theVal;
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
return flatParams;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const preProcessColumns = columnList => {
|
|
27
|
+
return columnList.map(col => {
|
|
28
|
+
const tempColObj = { ...col };
|
|
29
|
+
tempColObj.value = col.value && col.value.startsWith('.') ? col.value.substring(1) : col.value;
|
|
30
|
+
return tempColObj;
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const getDisplayFieldsMetaData = columnList => {
|
|
35
|
+
const displayColumns = columnList.filter(col => col.display === 'true');
|
|
36
|
+
const metaDataObj: any = { key: '', primary: '', secondary: [] };
|
|
37
|
+
const keyCol = columnList.filter(col => col.key === 'true');
|
|
38
|
+
metaDataObj.key = keyCol.length > 0 ? keyCol[0].value : 'auto';
|
|
39
|
+
for (let index = 0; index < displayColumns.length; index += 1) {
|
|
40
|
+
if (displayColumns[index].primary === 'true') {
|
|
41
|
+
metaDataObj.primary = displayColumns[index].value;
|
|
42
|
+
} else {
|
|
43
|
+
metaDataObj.secondary.push(displayColumns[index].value);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return metaDataObj;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
interface DropdownProps extends PConnFieldProps {
|
|
50
|
+
// If any, enter additional props that only exist on Dropdown here
|
|
51
|
+
datasource?: any[];
|
|
52
|
+
onRecordChange?: any;
|
|
53
|
+
fieldMetadata?: any;
|
|
54
|
+
listType: string;
|
|
55
|
+
deferDatasource?: boolean;
|
|
56
|
+
datasourceMetadata?: any;
|
|
57
|
+
parameters?: any;
|
|
58
|
+
columns: any[];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export default function Dropdown(props: DropdownProps) {
|
|
62
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
63
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
64
|
+
|
|
14
65
|
const {
|
|
15
66
|
getPConnect,
|
|
16
67
|
label,
|
|
17
68
|
required,
|
|
18
69
|
disabled,
|
|
19
|
-
placeholder,
|
|
20
70
|
value = '',
|
|
21
|
-
datasource = [],
|
|
22
71
|
validatemessage,
|
|
23
72
|
status,
|
|
24
73
|
readOnly,
|
|
25
74
|
testId,
|
|
26
75
|
helperText,
|
|
27
76
|
displayMode,
|
|
77
|
+
deferDatasource,
|
|
78
|
+
datasourceMetadata,
|
|
28
79
|
hideLabel,
|
|
29
|
-
onRecordChange
|
|
80
|
+
onRecordChange,
|
|
81
|
+
fieldMetadata
|
|
30
82
|
} = props;
|
|
31
|
-
|
|
83
|
+
let { placeholder = '' } = props;
|
|
84
|
+
const context = getPConnect().getContextName();
|
|
85
|
+
let { listType, parameters, datasource = [], columns = [] } = props;
|
|
86
|
+
placeholder = placeholder || 'Select...';
|
|
87
|
+
const [options, setOptions] = useState<IOption[]>([]);
|
|
88
|
+
const [theDatasource, setDatasource] = useState<any[] | null>(null);
|
|
32
89
|
const helperTextToDisplay = validatemessage || helperText;
|
|
33
90
|
|
|
34
91
|
const thePConn = getPConnect();
|
|
35
92
|
const actionsApi = thePConn.getActionsApi();
|
|
36
|
-
const propName = thePConn.getStateProps().value;
|
|
93
|
+
const propName = (thePConn.getStateProps() as any).value;
|
|
94
|
+
const className = thePConn.getCaseInfo().getClassName();
|
|
95
|
+
const refName = propName?.slice(propName.lastIndexOf('.') + 1);
|
|
96
|
+
|
|
97
|
+
if (!isDeepEqual(datasource, theDatasource)) {
|
|
98
|
+
// inbound datasource is different, so update theDatasource (to trigger useEffect)
|
|
99
|
+
setDatasource(datasource);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// convert associated to datapage listtype and transform props
|
|
103
|
+
// Process deferDatasource when datapage name is present. WHhen tableType is promptList / localList
|
|
104
|
+
if (deferDatasource && datasourceMetadata?.datasource?.name) {
|
|
105
|
+
listType = 'datapage';
|
|
106
|
+
datasource = datasourceMetadata.datasource.name;
|
|
107
|
+
const { parameters: dataSourceParameters, propertyForDisplayText, propertyForValue } = datasourceMetadata.datasource;
|
|
108
|
+
parameters = flattenParameters(dataSourceParameters);
|
|
109
|
+
const displayProp = propertyForDisplayText.startsWith('@P') ? propertyForDisplayText.substring(3) : propertyForDisplayText;
|
|
110
|
+
const valueProp = propertyForValue.startsWith('@P') ? propertyForValue.substring(3) : propertyForValue;
|
|
111
|
+
columns = [
|
|
112
|
+
{
|
|
113
|
+
key: 'true',
|
|
114
|
+
setProperty: 'Associated property',
|
|
115
|
+
value: valueProp
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
display: 'true',
|
|
119
|
+
primary: 'true',
|
|
120
|
+
useForSearch: true,
|
|
121
|
+
value: displayProp
|
|
122
|
+
}
|
|
123
|
+
];
|
|
124
|
+
}
|
|
125
|
+
columns = preProcessColumns(columns);
|
|
37
126
|
|
|
38
127
|
useEffect(() => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
128
|
+
if (theDatasource) {
|
|
129
|
+
const list = Utils.getOptionList(props, getPConnect().getDataObject('')); // 1st arg empty string until typedef marked correctly
|
|
130
|
+
const optionsList = [...list];
|
|
131
|
+
optionsList.unshift({
|
|
132
|
+
key: placeholder,
|
|
133
|
+
value: thePConn.getLocalizedValue(placeholder, '', '')
|
|
134
|
+
}); // 2nd and 3rd args empty string until typedef marked correctly
|
|
135
|
+
setOptions(optionsList);
|
|
136
|
+
}
|
|
137
|
+
}, [theDatasource]);
|
|
138
|
+
|
|
139
|
+
useEffect(() => {
|
|
140
|
+
if (!displayMode && listType !== 'associated' && typeof datasource === 'string') {
|
|
141
|
+
getDataPage(datasource, parameters, context).then((results: any) => {
|
|
142
|
+
const optionsData: any[] = [];
|
|
143
|
+
const displayColumn = getDisplayFieldsMetaData(columns);
|
|
144
|
+
results?.forEach(element => {
|
|
145
|
+
const val = element[displayColumn.primary]?.toString();
|
|
146
|
+
const obj = {
|
|
147
|
+
key: element[displayColumn.key] || element.pyGUID,
|
|
148
|
+
value: val
|
|
149
|
+
};
|
|
150
|
+
optionsData.push(obj);
|
|
151
|
+
});
|
|
152
|
+
setOptions(optionsData);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}, []);
|
|
156
|
+
|
|
157
|
+
const metaData = Array.isArray(fieldMetadata) ? fieldMetadata.filter(field => field?.classID === className)[0] : fieldMetadata;
|
|
158
|
+
|
|
159
|
+
let displayName = metaData?.datasource?.propertyForDisplayText;
|
|
160
|
+
displayName = displayName?.slice(displayName.lastIndexOf('.') + 1);
|
|
161
|
+
const localeContext = metaData?.datasource?.tableType === 'DataPage' ? 'datapage' : 'associated';
|
|
162
|
+
const localeClass = localeContext === 'datapage' ? '@baseclass' : className;
|
|
163
|
+
const localeName = localeContext === 'datapage' ? metaData?.datasource?.name : refName;
|
|
164
|
+
const localePath = localeContext === 'datapage' ? displayName : localeName;
|
|
43
165
|
|
|
44
166
|
let readOnlyProp = {};
|
|
45
167
|
|
|
46
168
|
if (displayMode === 'LABELS_LEFT') {
|
|
47
|
-
return
|
|
169
|
+
return (
|
|
170
|
+
<FieldValueList
|
|
171
|
+
name={hideLabel ? '' : label}
|
|
172
|
+
// @ts-ignore - Property 'getLocaleRuleNameFromKeys' is private and only accessible within class 'C11nEnv'
|
|
173
|
+
value={thePConn.getLocalizedValue(value, localePath, thePConn.getLocaleRuleNameFromKeys(localeClass, localeContext, localeName))}
|
|
174
|
+
/>
|
|
175
|
+
);
|
|
48
176
|
}
|
|
49
177
|
|
|
50
178
|
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
51
|
-
return
|
|
179
|
+
return (
|
|
180
|
+
<FieldValueList
|
|
181
|
+
name={hideLabel ? '' : label}
|
|
182
|
+
// @ts-ignore - Property 'getLocaleRuleNameFromKeys' is private and only accessible within class 'C11nEnv'
|
|
183
|
+
value={thePConn.getLocalizedValue(value, localePath, thePConn.getLocaleRuleNameFromKeys(localeClass, localeContext, localeName))}
|
|
184
|
+
variant='stacked'
|
|
185
|
+
/>
|
|
186
|
+
);
|
|
52
187
|
}
|
|
53
188
|
|
|
54
189
|
if (readOnly) {
|
|
@@ -62,7 +197,7 @@ export default function Dropdown(props) {
|
|
|
62
197
|
};
|
|
63
198
|
|
|
64
199
|
const handleChange = evt => {
|
|
65
|
-
const selectedValue = evt.target.value ===
|
|
200
|
+
const selectedValue = evt.target.value === placeholder ? '' : evt.target.value;
|
|
66
201
|
handleEvent(actionsApi, 'changeNblur', propName, selectedValue);
|
|
67
202
|
if (onRecordChange) {
|
|
68
203
|
onRecordChange(evt);
|
|
@@ -76,20 +211,21 @@ export default function Dropdown(props) {
|
|
|
76
211
|
fullWidth
|
|
77
212
|
variant={readOnly ? 'standard' : 'outlined'}
|
|
78
213
|
helperText={helperTextToDisplay}
|
|
79
|
-
placeholder={placeholder}
|
|
214
|
+
placeholder={thePConn.getLocalizedValue(placeholder, '', '')} // 2nd and 3rd args empty string until typedef marked correctly
|
|
80
215
|
size='small'
|
|
81
216
|
required={required}
|
|
82
217
|
disabled={disabled}
|
|
83
218
|
onChange={!readOnly ? handleChange : undefined}
|
|
84
219
|
error={status === 'error'}
|
|
85
220
|
label={label}
|
|
86
|
-
value={value === '' && !readOnly ?
|
|
221
|
+
value={value === '' && !readOnly ? placeholder : value}
|
|
87
222
|
select
|
|
88
223
|
InputProps={{ ...readOnlyProp, ...testProp }}
|
|
89
224
|
>
|
|
90
225
|
{options.map((option: any) => (
|
|
91
226
|
<MenuItem key={option.key} value={option.key}>
|
|
92
|
-
{
|
|
227
|
+
{/* @ts-ignore - Property 'getLocaleRuleNameFromKeys' is private and only accessible within class 'C11nEnv' */}
|
|
228
|
+
{thePConn.getLocalizedValue(option.value, localePath, thePConn.getLocaleRuleNameFromKeys(localeClass, localeContext, localeName))}
|
|
93
229
|
</MenuItem>
|
|
94
230
|
))}
|
|
95
231
|
</TextField>
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { TextField, InputAdornment } from '@material-ui/core';
|
|
1
|
+
import { InputAdornment, TextField } from '@material-ui/core';
|
|
3
2
|
import MailOutlineIcon from '@material-ui/icons/MailOutline';
|
|
4
|
-
import TextInput from '@pega/react-sdk-components/lib/components/field/TextInput';
|
|
5
|
-
import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
|
|
6
3
|
|
|
7
|
-
|
|
4
|
+
import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
|
|
5
|
+
import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
6
|
+
|
|
7
|
+
interface EmailProps extends PConnFieldProps {
|
|
8
|
+
// If any, enter additional props that only exist on Date here
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default function Email(props: EmailProps) {
|
|
12
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
13
|
+
const TextInput = getComponentFromMap('TextInput');
|
|
14
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
15
|
+
|
|
8
16
|
const {
|
|
9
17
|
label,
|
|
10
18
|
required,
|
|
@@ -18,7 +26,8 @@ export default function Email(props) {
|
|
|
18
26
|
testId,
|
|
19
27
|
helperText,
|
|
20
28
|
displayMode,
|
|
21
|
-
hideLabel
|
|
29
|
+
hideLabel,
|
|
30
|
+
placeholder
|
|
22
31
|
} = props;
|
|
23
32
|
const helperTextToDisplay = validatemessage || helperText;
|
|
24
33
|
|
|
@@ -45,7 +54,7 @@ export default function Email(props) {
|
|
|
45
54
|
fullWidth
|
|
46
55
|
variant='outlined'
|
|
47
56
|
helperText={helperTextToDisplay}
|
|
48
|
-
placeholder=''
|
|
57
|
+
placeholder={placeholder ?? ''}
|
|
49
58
|
size='small'
|
|
50
59
|
required={required}
|
|
51
60
|
disabled={disabled}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from './Email';
|
|
1
|
+
export { default } from './Email';
|