@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
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ReactElement, useMemo } from 'react';
|
|
2
|
+
import { Grid } from '@material-ui/core';
|
|
3
|
+
import FieldGroup from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldGroup';
|
|
4
|
+
import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
5
|
+
|
|
6
|
+
interface GroupProps extends PConnFieldProps {
|
|
7
|
+
children: ReactElement[];
|
|
8
|
+
heading: string;
|
|
9
|
+
showHeading: boolean;
|
|
10
|
+
instructions?: string;
|
|
11
|
+
collapsible: boolean;
|
|
12
|
+
type: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export default function Group(props: GroupProps) {
|
|
16
|
+
const { children, heading, showHeading, instructions, collapsible, displayMode, type } = props;
|
|
17
|
+
|
|
18
|
+
const isReadOnly = displayMode === 'LABELS_LEFT';
|
|
19
|
+
|
|
20
|
+
const content = useMemo(() => {
|
|
21
|
+
return (
|
|
22
|
+
<Grid container spacing={2}>
|
|
23
|
+
{children?.map(child => (
|
|
24
|
+
<Grid item xs={12} key={child.key}>
|
|
25
|
+
{child}
|
|
26
|
+
</Grid>
|
|
27
|
+
))}
|
|
28
|
+
</Grid>
|
|
29
|
+
);
|
|
30
|
+
}, [children, type, isReadOnly]);
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<FieldGroup name={showHeading ? heading : undefined} collapsible={collapsible} instructions={instructions}>
|
|
34
|
+
{content}
|
|
35
|
+
</FieldGroup>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Group';
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { TextField } from '@material-ui/core';
|
|
3
|
-
import TextInput from '@pega/react-sdk-components/lib/components/field/TextInput';
|
|
4
|
-
import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
|
|
5
2
|
|
|
6
|
-
|
|
3
|
+
import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
|
|
4
|
+
import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
5
|
+
|
|
6
|
+
interface IntegerProps extends PConnFieldProps {
|
|
7
|
+
// If any, enter additional props that only exist on Integer here
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default function Integer(props: IntegerProps) {
|
|
11
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
12
|
+
const TextInput = getComponentFromMap('TextInput');
|
|
13
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
14
|
+
|
|
7
15
|
const {
|
|
8
16
|
label,
|
|
9
17
|
required,
|
|
@@ -17,7 +25,8 @@ export default function Integer(props) {
|
|
|
17
25
|
testId,
|
|
18
26
|
helperText,
|
|
19
27
|
displayMode,
|
|
20
|
-
hideLabel
|
|
28
|
+
hideLabel,
|
|
29
|
+
placeholder
|
|
21
30
|
} = props;
|
|
22
31
|
const helperTextToDisplay = validatemessage || helperText;
|
|
23
32
|
|
|
@@ -63,7 +72,7 @@ export default function Integer(props) {
|
|
|
63
72
|
fullWidth
|
|
64
73
|
variant={readOnly ? 'standard' : 'outlined'}
|
|
65
74
|
helperText={helperTextToDisplay}
|
|
66
|
-
placeholder=''
|
|
75
|
+
placeholder={placeholder ?? ''}
|
|
67
76
|
size='small'
|
|
68
77
|
required={required}
|
|
69
78
|
disabled={disabled}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { TextField } from '@material-ui/core';
|
|
3
2
|
import { makeStyles } from '@material-ui/core/styles';
|
|
4
3
|
|
|
5
|
-
import
|
|
6
|
-
import
|
|
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';
|
|
7
6
|
|
|
8
7
|
// Inspired by https://stackoverflow.com/questions/50823182/material-ui-remove-up-down-arrow-dials-from-textview
|
|
9
8
|
const useStyles = makeStyles((/* theme */) => ({
|
|
@@ -22,7 +21,15 @@ const useStyles = makeStyles((/* theme */) => ({
|
|
|
22
21
|
}
|
|
23
22
|
}));
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
interface PercentageProps extends PConnFieldProps {
|
|
25
|
+
// If any, enter additional props that only exist on Percentage here
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default function Percentage(props: PercentageProps) {
|
|
29
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
30
|
+
const TextInput = getComponentFromMap('TextInput');
|
|
31
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
32
|
+
|
|
26
33
|
const classes = useStyles();
|
|
27
34
|
|
|
28
35
|
const {
|
|
@@ -38,7 +45,8 @@ export default function Percentage(props) {
|
|
|
38
45
|
testId,
|
|
39
46
|
helperText,
|
|
40
47
|
displayMode,
|
|
41
|
-
hideLabel
|
|
48
|
+
hideLabel,
|
|
49
|
+
placeholder
|
|
42
50
|
} = props;
|
|
43
51
|
const helperTextToDisplay = validatemessage || helperText;
|
|
44
52
|
|
|
@@ -68,7 +76,7 @@ export default function Percentage(props) {
|
|
|
68
76
|
fullWidth
|
|
69
77
|
variant={readOnly ? 'standard' : 'outlined'}
|
|
70
78
|
helperText={helperTextToDisplay}
|
|
71
|
-
placeholder=''
|
|
79
|
+
placeholder={placeholder ?? ''}
|
|
72
80
|
size='small'
|
|
73
81
|
required={required}
|
|
74
82
|
disabled={disabled}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import MuiPhoneNumber from 'material-ui-phone-number';
|
|
3
|
-
import FieldValueList from '@pega/react-sdk-components/lib/components/designSystemExtension/FieldValueList';
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
|
|
4
|
+
import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
5
|
+
|
|
6
|
+
interface PhoneProps extends PConnFieldProps {
|
|
7
|
+
// If any, enter additional props that only exist on Phone here
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default function Phone(props: PhoneProps) {
|
|
11
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
12
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
13
|
+
|
|
6
14
|
const {
|
|
7
15
|
label,
|
|
8
16
|
required,
|
|
@@ -16,7 +24,8 @@ export default function Phone(props) {
|
|
|
16
24
|
testId,
|
|
17
25
|
helperText,
|
|
18
26
|
displayMode,
|
|
19
|
-
hideLabel
|
|
27
|
+
hideLabel,
|
|
28
|
+
placeholder
|
|
20
29
|
} = props;
|
|
21
30
|
const helperTextToDisplay = validatemessage || helperText;
|
|
22
31
|
|
|
@@ -41,7 +50,7 @@ export default function Phone(props) {
|
|
|
41
50
|
<MuiPhoneNumber
|
|
42
51
|
fullWidth
|
|
43
52
|
helperText={helperTextToDisplay}
|
|
44
|
-
placeholder=''
|
|
53
|
+
placeholder={placeholder ?? ''}
|
|
45
54
|
size='small'
|
|
46
55
|
required={required}
|
|
47
56
|
disabled={disabled}
|
|
@@ -50,7 +59,8 @@ export default function Phone(props) {
|
|
|
50
59
|
label={label}
|
|
51
60
|
value={value}
|
|
52
61
|
InputProps={{
|
|
53
|
-
readOnly: true
|
|
62
|
+
readOnly: true,
|
|
63
|
+
inputProps: { ...testProp }
|
|
54
64
|
}}
|
|
55
65
|
disableDropdown={disableDropdown}
|
|
56
66
|
/>
|
|
@@ -75,7 +85,7 @@ export default function Phone(props) {
|
|
|
75
85
|
fullWidth
|
|
76
86
|
variant='outlined'
|
|
77
87
|
helperText={helperTextToDisplay}
|
|
78
|
-
placeholder=''
|
|
88
|
+
placeholder={placeholder ?? ''}
|
|
79
89
|
size='small'
|
|
80
90
|
defaultCountry='us'
|
|
81
91
|
required={required}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from './Phone';
|
|
1
|
+
export { default } from './Phone';
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
Radio,
|
|
4
|
-
RadioGroup,
|
|
5
|
-
FormControl,
|
|
6
|
-
FormControlLabel,
|
|
7
|
-
FormLabel,
|
|
8
|
-
FormHelperText
|
|
9
|
-
} from '@material-ui/core';
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
import { Radio, RadioGroup, FormControl, FormControlLabel, FormLabel, FormHelperText } from '@material-ui/core';
|
|
10
3
|
|
|
11
4
|
import Utils from '@pega/react-sdk-components/lib/components/helpers/utils';
|
|
12
5
|
import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
|
|
13
|
-
import
|
|
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
|
+
// Can't use RadioButtonProps until getLocaleRuleNameFromKeys is NOT private
|
|
10
|
+
interface RadioButtonsProps extends PConnFieldProps {
|
|
11
|
+
// If any, enter additional props that only exist on RadioButtons here
|
|
12
|
+
inline: boolean;
|
|
13
|
+
fieldMetadata?: any;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default function RadioButtons(props: RadioButtonsProps) {
|
|
17
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
18
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
14
19
|
|
|
15
|
-
export default function RadioButtons(props) {
|
|
16
20
|
const {
|
|
17
21
|
getPConnect,
|
|
18
22
|
label,
|
|
@@ -24,19 +28,33 @@ export default function RadioButtons(props) {
|
|
|
24
28
|
required,
|
|
25
29
|
inline,
|
|
26
30
|
displayMode,
|
|
27
|
-
hideLabel
|
|
31
|
+
hideLabel,
|
|
32
|
+
fieldMetadata
|
|
28
33
|
} = props;
|
|
29
34
|
const [theSelectedButton, setSelectedButton] = useState(value);
|
|
30
35
|
|
|
31
36
|
const thePConn = getPConnect();
|
|
32
37
|
const theConfigProps = thePConn.getConfigProps();
|
|
33
38
|
const actionsApi = thePConn.getActionsApi();
|
|
34
|
-
const propName = thePConn.getStateProps().value;
|
|
39
|
+
const propName = (thePConn.getStateProps() as any).value;
|
|
35
40
|
const helperTextToDisplay = validatemessage || helperText;
|
|
41
|
+
const className = thePConn.getCaseInfo().getClassName();
|
|
42
|
+
|
|
43
|
+
let configProperty = (thePConn.getRawMetadata() as any)?.config?.value || '';
|
|
44
|
+
configProperty = configProperty.startsWith('@P') ? configProperty.substring(3) : configProperty;
|
|
45
|
+
configProperty = configProperty.startsWith('.') ? configProperty.substring(1) : configProperty;
|
|
46
|
+
|
|
47
|
+
const metaData = Array.isArray(fieldMetadata) ? fieldMetadata.filter(field => field?.classID === className)[0] : fieldMetadata;
|
|
48
|
+
let displayName = metaData?.datasource?.propertyForDisplayText;
|
|
49
|
+
displayName = displayName?.slice(displayName.lastIndexOf('.') + 1);
|
|
50
|
+
const localeContext = metaData?.datasource?.tableType === 'DataPage' ? 'datapage' : 'associated';
|
|
51
|
+
const localeClass = localeContext === 'datapage' ? '@baseclass' : className;
|
|
52
|
+
const localeName = localeContext === 'datapage' ? metaData?.datasource?.name : configProperty;
|
|
53
|
+
const localePath = localeContext === 'datapage' ? displayName : localeName;
|
|
36
54
|
|
|
37
55
|
// theOptions will be an array of JSON objects that are literally key/value pairs.
|
|
38
56
|
// Ex: [ {key: "Basic", value: "Basic"} ]
|
|
39
|
-
const theOptions = Utils.getOptionList(theConfigProps, thePConn.getDataObject());
|
|
57
|
+
const theOptions = Utils.getOptionList(theConfigProps, thePConn.getDataObject(''));
|
|
40
58
|
|
|
41
59
|
useEffect(() => {
|
|
42
60
|
// This update theSelectedButton which will update the UI to show the selected button correctly
|
|
@@ -44,11 +62,24 @@ export default function RadioButtons(props) {
|
|
|
44
62
|
}, [value]);
|
|
45
63
|
|
|
46
64
|
if (displayMode === 'LABELS_LEFT') {
|
|
47
|
-
return
|
|
65
|
+
return (
|
|
66
|
+
<FieldValueList
|
|
67
|
+
name={hideLabel ? '' : label}
|
|
68
|
+
// @ts-ignore - Property 'getLocaleRuleNameFromKeys' is private and only accessible within class 'C11nEnv'
|
|
69
|
+
value={thePConn.getLocalizedValue(value, localePath, thePConn.getLocaleRuleNameFromKeys(localeClass, localeContext, localeName))}
|
|
70
|
+
/>
|
|
71
|
+
);
|
|
48
72
|
}
|
|
49
73
|
|
|
50
74
|
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
51
|
-
return
|
|
75
|
+
return (
|
|
76
|
+
<FieldValueList
|
|
77
|
+
name={hideLabel ? '' : label}
|
|
78
|
+
// @ts-ignore - Property 'getLocaleRuleNameFromKeys' is private and only accessible within class 'C11nEnv'
|
|
79
|
+
value={thePConn.getLocalizedValue(value, localePath, thePConn.getLocaleRuleNameFromKeys(localeClass, localeContext, localeName))}
|
|
80
|
+
variant='stacked'
|
|
81
|
+
/>
|
|
82
|
+
);
|
|
52
83
|
}
|
|
53
84
|
|
|
54
85
|
const handleChange = event => {
|
|
@@ -56,24 +87,24 @@ export default function RadioButtons(props) {
|
|
|
56
87
|
};
|
|
57
88
|
|
|
58
89
|
const handleBlur = event => {
|
|
59
|
-
thePConn.getValidationApi().validate(event.target.value);
|
|
90
|
+
thePConn.getValidationApi().validate(event.target.value, ''); // 2nd arg empty string until typedef marked correctly as optional
|
|
60
91
|
};
|
|
61
92
|
|
|
62
93
|
return (
|
|
63
94
|
<FormControl error={status === 'error'} required={required}>
|
|
64
95
|
<FormLabel component='legend'>{label}</FormLabel>
|
|
65
|
-
<RadioGroup
|
|
66
|
-
value={theSelectedButton}
|
|
67
|
-
onChange={handleChange}
|
|
68
|
-
onBlur={!readOnly ? handleBlur : undefined}
|
|
69
|
-
row={inline}
|
|
70
|
-
>
|
|
96
|
+
<RadioGroup value={theSelectedButton} onChange={handleChange} onBlur={!readOnly ? handleBlur : undefined} row={inline}>
|
|
71
97
|
{theOptions.map(theOption => {
|
|
72
98
|
return (
|
|
73
99
|
<FormControlLabel
|
|
74
100
|
value={theOption.key}
|
|
75
101
|
key={theOption.key}
|
|
76
|
-
label={
|
|
102
|
+
label={thePConn.getLocalizedValue(
|
|
103
|
+
theOption.value,
|
|
104
|
+
localePath,
|
|
105
|
+
// @ts-ignore - Property 'getLocaleRuleNameFromKeys' is private and only accessible within class 'C11nEnv'
|
|
106
|
+
thePConn.getLocaleRuleNameFromKeys(localeClass, localeContext, localeName)
|
|
107
|
+
)}
|
|
77
108
|
control={<Radio key={theOption.key} color='primary' disabled={readOnly} />}
|
|
78
109
|
/>
|
|
79
110
|
);
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
|
|
3
|
+
import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
|
|
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 RichTextProps extends PConnFieldProps {
|
|
8
|
+
// If any, enter additional props that only exist on TextArea here
|
|
9
|
+
additionalProps?: object;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default function RichText(props: RichTextProps) {
|
|
13
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
14
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
15
|
+
const RichTextEditor = getComponentFromMap('RichTextEditor');
|
|
16
|
+
|
|
17
|
+
const { getPConnect, value, placeholder, validatemessage, label, hideLabel, helperText, testId, displayMode, additionalProps } = props;
|
|
18
|
+
const pConn = getPConnect();
|
|
19
|
+
const editorRef: any = useRef(null);
|
|
20
|
+
|
|
21
|
+
let { readOnly, required, disabled } = props;
|
|
22
|
+
[readOnly, required, disabled] = [readOnly, required, disabled].map(prop => prop === true || (typeof prop === 'string' && prop === 'true'));
|
|
23
|
+
|
|
24
|
+
const helperTextToDisplay = validatemessage || helperText;
|
|
25
|
+
|
|
26
|
+
if (displayMode === 'LABELS_LEFT') {
|
|
27
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} />;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
31
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} variant='stacked' />;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
let richTextComponent;
|
|
35
|
+
|
|
36
|
+
if (readOnly) {
|
|
37
|
+
// Rich Text read-only component
|
|
38
|
+
richTextComponent = (
|
|
39
|
+
<RichTextEditor
|
|
40
|
+
{...additionalProps}
|
|
41
|
+
label={label}
|
|
42
|
+
labelHidden={hideLabel}
|
|
43
|
+
defaultValue={value}
|
|
44
|
+
testId={testId}
|
|
45
|
+
info={helperTextToDisplay}
|
|
46
|
+
ref={editorRef}
|
|
47
|
+
readOnly
|
|
48
|
+
/>
|
|
49
|
+
);
|
|
50
|
+
} else {
|
|
51
|
+
// Rich Text editable component
|
|
52
|
+
const actionsApi = pConn.getActionsApi();
|
|
53
|
+
let status = '';
|
|
54
|
+
if (validatemessage !== '') {
|
|
55
|
+
status = 'error';
|
|
56
|
+
}
|
|
57
|
+
const handleChange = () => {
|
|
58
|
+
if (status === 'error') {
|
|
59
|
+
const property = (pConn.getStateProps() as any).value;
|
|
60
|
+
pConn.clearErrorMessages({
|
|
61
|
+
property,
|
|
62
|
+
category: '',
|
|
63
|
+
context: ''
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const handleBlur = () => {
|
|
69
|
+
if (editorRef.current) {
|
|
70
|
+
const editorValue = editorRef.current.getContent({ format: 'html' });
|
|
71
|
+
const property = (pConn.getStateProps() as any).value;
|
|
72
|
+
handleEvent(actionsApi, 'changeNblur', property, editorValue);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
richTextComponent = (
|
|
77
|
+
<RichTextEditor
|
|
78
|
+
{...additionalProps}
|
|
79
|
+
label={label}
|
|
80
|
+
labelHidden={hideLabel}
|
|
81
|
+
info={helperTextToDisplay}
|
|
82
|
+
defaultValue={value}
|
|
83
|
+
placeholder={placeholder}
|
|
84
|
+
disabled={disabled}
|
|
85
|
+
required={required}
|
|
86
|
+
testId={testId}
|
|
87
|
+
ref={editorRef}
|
|
88
|
+
error={status === 'error'}
|
|
89
|
+
onBlur={handleBlur}
|
|
90
|
+
onChange={handleChange}
|
|
91
|
+
/>
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return richTextComponent;
|
|
96
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './RichText';
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* eslint-disable react/no-array-index-key */
|
|
2
|
+
import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
|
|
3
|
+
import { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
4
|
+
|
|
5
|
+
// ScalarListProps can't extend PConnFieldProps because its 'value' has a different type
|
|
6
|
+
interface ScalarListProps extends PConnProps {
|
|
7
|
+
// If any, enter additional props that only exist on this component
|
|
8
|
+
displayInModal: boolean;
|
|
9
|
+
hideLabel: boolean;
|
|
10
|
+
value: any[];
|
|
11
|
+
componentType: string;
|
|
12
|
+
label: string;
|
|
13
|
+
displayMode: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function CommaSeparatedList(props) {
|
|
17
|
+
const { items } = props;
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<ul style={{ padding: '0', margin: '0' }}>
|
|
21
|
+
{items.map((value, index) => {
|
|
22
|
+
return <span key={index}>{value}</span>;
|
|
23
|
+
})}
|
|
24
|
+
</ul>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default function ScalarList(props: ScalarListProps) {
|
|
29
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
30
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
31
|
+
|
|
32
|
+
const { label, getPConnect, componentType, value: scalarValues, displayMode, hideLabel, ...restProps } = props;
|
|
33
|
+
|
|
34
|
+
const items = scalarValues?.map(scalarValue => {
|
|
35
|
+
return getPConnect().createComponent(
|
|
36
|
+
{
|
|
37
|
+
type: componentType,
|
|
38
|
+
config: {
|
|
39
|
+
value: scalarValue,
|
|
40
|
+
displayMode: 'LABELS_LEFT',
|
|
41
|
+
label,
|
|
42
|
+
...restProps,
|
|
43
|
+
readOnly: 'true'
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
'',
|
|
47
|
+
'',
|
|
48
|
+
{}
|
|
49
|
+
); // 2nd, 3rd, and 4th args empty string/object/null until typedef marked correctly as optional;
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
if (['LABELS_LEFT', 'STACKED_LARGE_VAL', 'DISPLAY_ONLY'].includes(displayMode)) {
|
|
53
|
+
return (
|
|
54
|
+
<div>
|
|
55
|
+
<CommaSeparatedList items={items} />
|
|
56
|
+
</div>
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const displayComp = <CommaSeparatedList items={items} />;
|
|
61
|
+
|
|
62
|
+
return <FieldValueList name={hideLabel ? '' : label} value={displayComp} variant='stacked' />;
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './ScalarList';
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
1
|
import Typography from '@material-ui/core/Typography';
|
|
4
2
|
import Grid from '@material-ui/core/Grid';
|
|
5
3
|
import { makeStyles } from '@material-ui/core/styles';
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
|
|
6
|
+
import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
|
|
7
7
|
|
|
8
8
|
/* although this is called the SemanticLink component, we are not yet displaying as a
|
|
9
9
|
SemanticLink in SDK and only showing the value as a read only text field. */
|
|
10
10
|
|
|
11
|
-
const useStyles = makeStyles(
|
|
11
|
+
const useStyles = makeStyles(theme => ({
|
|
12
12
|
root: {
|
|
13
13
|
paddingRight: theme.spacing(1),
|
|
14
14
|
paddingLeft: theme.spacing(1),
|
|
@@ -17,7 +17,7 @@ const useStyles = makeStyles((theme) => ({
|
|
|
17
17
|
marginRight: theme.spacing(1),
|
|
18
18
|
marginLeft: theme.spacing(1),
|
|
19
19
|
marginTop: theme.spacing(1),
|
|
20
|
-
marginBottom: theme.spacing(1)
|
|
20
|
+
marginBottom: theme.spacing(1)
|
|
21
21
|
},
|
|
22
22
|
fieldMargin: {
|
|
23
23
|
paddingRight: theme.spacing(1),
|
|
@@ -27,7 +27,7 @@ const useStyles = makeStyles((theme) => ({
|
|
|
27
27
|
marginRight: theme.spacing(1),
|
|
28
28
|
marginLeft: theme.spacing(1),
|
|
29
29
|
marginTop: theme.spacing(1),
|
|
30
|
-
marginBottom: theme.spacing(1)
|
|
30
|
+
marginBottom: theme.spacing(1)
|
|
31
31
|
},
|
|
32
32
|
fieldLabel: {
|
|
33
33
|
fontWeight: 400,
|
|
@@ -39,25 +39,32 @@ const useStyles = makeStyles((theme) => ({
|
|
|
39
39
|
}
|
|
40
40
|
}));
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
hideLabel
|
|
48
|
-
} = props;
|
|
49
|
-
const classes = useStyles();
|
|
42
|
+
interface SemanticLinkProps extends PConnFieldProps {
|
|
43
|
+
// If any, enter additional props that only exist on SemanticLink here
|
|
44
|
+
// from previous PropTypes
|
|
45
|
+
text: string;
|
|
46
|
+
}
|
|
50
47
|
|
|
48
|
+
export default function SemanticLink(props: SemanticLinkProps) {
|
|
49
|
+
// Get emitted components from map (so we can get any override that may exist)
|
|
50
|
+
const FieldValueList = getComponentFromMap('FieldValueList');
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
const { text, displayMode, label, hideLabel } = props;
|
|
53
|
+
const classes = useStyles();
|
|
54
|
+
|
|
55
|
+
if (displayMode === 'LABELS_LEFT' || (!displayMode && label !== undefined)) {
|
|
56
|
+
const value = text || '---';
|
|
54
57
|
return (
|
|
55
|
-
<Grid container spacing={1} style={{padding:
|
|
58
|
+
<Grid container spacing={1} style={{ padding: '4px 0px' }} id='semantic-link-grid'>
|
|
56
59
|
<Grid item xs={6}>
|
|
57
|
-
<Typography variant=
|
|
60
|
+
<Typography variant='body2' component='span' className={`${classes.fieldLabel} ${classes.fieldMargin}`}>
|
|
61
|
+
{label}
|
|
62
|
+
</Typography>
|
|
58
63
|
</Grid>
|
|
59
64
|
<Grid item xs={6}>
|
|
60
|
-
<Typography variant=
|
|
65
|
+
<Typography variant='body2' component='span' className={classes.fieldValue}>
|
|
66
|
+
{value}
|
|
67
|
+
</Typography>
|
|
61
68
|
</Grid>
|
|
62
69
|
</Grid>
|
|
63
70
|
);
|
|
@@ -67,9 +74,3 @@ export default function SemanticLink(props) {
|
|
|
67
74
|
return <FieldValueList name={hideLabel ? '' : label} value={text} variant='stacked' />;
|
|
68
75
|
}
|
|
69
76
|
}
|
|
70
|
-
|
|
71
|
-
SemanticLink.propTypes = {
|
|
72
|
-
text: PropTypes.string.isRequired,
|
|
73
|
-
displayMode: PropTypes.string,
|
|
74
|
-
label: PropTypes.string,
|
|
75
|
-
};
|