@pega/custom-dx-components 0.24.3 → 0.24.5
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/package.json +1 -1
- package/src/tasks/bundle/builder/webpack.config.js +15 -1
- package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/index.tsx.mustache +11 -0
- package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/utils.ts.mustache +3 -0
- package/src/tasks/create/templates/Constellation/Field/Text/index.tsx.mustache +94 -4
- package/src/tasks/create/templates/Constellation/Template/DETAILS/DetailsRender.tsx +58 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS/HighlightRender.tsx +50 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS/index.tsx.mustache +38 -24
- package/src/tasks/create/templates/Constellation/Template/DETAILS-region/DetailsRender.tsx +58 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS-region/HighlightRender.tsx +50 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS-region/index.tsx.mustache +45 -23
- package/src/tasks/create/templates/Constellation/Template/FORM/DetailsRender.tsx +58 -0
- package/src/tasks/create/templates/Constellation/Template/FORM/index.tsx.mustache +31 -5
- package/src/tasks/create/templates/Constellation/Template/FORM-region/DetailsRender.tsx +58 -0
- package/src/tasks/create/templates/Constellation/Template/FORM-region/index.tsx.mustache +28 -6
- package/src/tasks/create/templates/Constellation/Template/PAGE/GetNextWork.tsx.mustache +2 -1
- package/src/tasks/init/template/package.json.mustache +1 -1
- package/src/tasks/init/template/tsconfig.build.json +3 -1
- package/tests/assets/components/create/Pega_DXIL_MyDetails.zip +0 -0
- package/tests/assets/components/create/Pega_DXIL_MyTestText/demo.stories.tsx +0 -3
- package/tests/assets/components/create/Pega_DXIL_MyTestText/index.tsx +94 -4
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyBoolean/demo.stories.tsx +3 -13
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyBoolean/index.tsx +8 -5
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyCaseWidget/demo.stories.tsx +3 -2
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyCurrency/demo.stories.tsx +2 -9
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyCurrency/mock.ts +2 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDate/demo.stories.tsx +8 -19
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDateTime/demo.stories.tsx +7 -18
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDateTime/mock.ts +1 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDecimal/demo.stories.tsx +1 -7
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDecimal/mock.ts +1 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails/DetailsRender.tsx +58 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails/HighlightRender.tsx +50 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails/demo.stories.tsx +5 -5
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails/index.tsx +35 -21
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails.zip +0 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyEmail/demo.stories.tsx +1 -5
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyForm/DetailsRender.tsx +58 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyForm/demo.stories.tsx +5 -3
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyForm/index.tsx +28 -5
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyInteger/demo.stories.tsx +2 -6
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPage/GetNextWork.tsx +2 -1
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPage/demo.stories.tsx +4 -3
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPageCaseWidget/demo.stories.tsx +5 -4
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPageWidget/demo.stories.tsx +5 -8
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyParagraph/demo.stories.tsx +1 -5
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyParagraph/mock.ts +1 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPercentage/demo.stories.tsx +2 -6
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPercentage/mock.ts +1 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPhone/demo.stories.tsx +2 -5
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPhone/mock.ts +1 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPicklist/demo.stories.tsx +2 -6
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPicklist/mock.ts +1 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyRadioButtons/demo.stories.tsx +1 -7
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MySearchbox/demo.stories.tsx +2 -8
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MySearchbox/index.tsx +11 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MySearchbox/utils.ts +3 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyText/demo.stories.tsx +0 -3
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyText/index.tsx +94 -4
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTextInput/demo.stories.tsx +1 -5
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTextInput/mock.ts +1 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTimeOfDay/demo.stories.tsx +5 -15
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnDetails/DetailsRender.tsx +58 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnDetails/HighlightRender.tsx +50 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnDetails/demo.stories.tsx +5 -5
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnDetails/index.tsx +42 -20
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnForm/DetailsRender.tsx +58 -0
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnForm/demo.stories.tsx +4 -2
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnForm/index.tsx +22 -3
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyURL/demo.stories.tsx +1 -5
- package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyURL/mock.ts +1 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyBoolean/demo.stories.tsx +3 -13
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyBoolean/index.tsx +8 -5
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyCurrency/demo.stories.tsx +2 -9
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyCurrency/mock.ts +2 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDate/demo.stories.tsx +8 -19
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDateTime/demo.stories.tsx +7 -18
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDateTime/mock.ts +1 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDecimal/demo.stories.tsx +1 -7
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDecimal/mock.ts +1 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails/DetailsRender.tsx +58 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails/HighlightRender.tsx +50 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails/demo.stories.tsx +5 -5
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails/index.tsx +35 -21
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails.zip +0 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyEmail/demo.stories.tsx +1 -5
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyForm/DetailsRender.tsx +58 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyForm/demo.stories.tsx +5 -3
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyForm/index.tsx +28 -5
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyInteger/demo.stories.tsx +2 -6
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPage/GetNextWork.tsx +2 -1
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPage/demo.stories.tsx +4 -3
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPageWidget/demo.stories.tsx +5 -8
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyParagraph/demo.stories.tsx +1 -5
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyParagraph/mock.ts +1 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPercentage/demo.stories.tsx +2 -6
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPercentage/mock.ts +1 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPhone/demo.stories.tsx +2 -5
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPhone/mock.ts +1 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPicklist/demo.stories.tsx +2 -6
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPicklist/mock.ts +1 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyRadioButtons/demo.stories.tsx +1 -7
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MySearchbox/demo.stories.tsx +2 -8
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MySearchbox/index.tsx +11 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MySearchbox/utils.ts +3 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyText/demo.stories.tsx +0 -3
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyText/index.tsx +94 -4
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTextInput/demo.stories.tsx +1 -5
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTextInput/mock.ts +1 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTimeOfDay/demo.stories.tsx +5 -15
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/DetailsRender.tsx +58 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/HighlightRender.tsx +50 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/demo.stories.tsx +5 -5
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/index.tsx +42 -20
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnForm/DetailsRender.tsx +58 -0
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnForm/demo.stories.tsx +4 -2
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnForm/index.tsx +22 -3
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyURL/demo.stories.tsx +1 -5
- package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyURL/mock.ts +1 -0
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Input,
|
|
3
|
+
FieldValueList,
|
|
4
|
+
Text,
|
|
5
|
+
EmailDisplay,
|
|
6
|
+
PhoneDisplay,
|
|
7
|
+
URLDisplay,
|
|
8
|
+
withConfiguration
|
|
9
|
+
} from '@pega/cosmos-react-core';
|
|
2
10
|
|
|
3
11
|
import type { PConnFieldProps } from './PConnProps';
|
|
4
12
|
|
|
@@ -7,7 +15,9 @@ import StyledPegaDxilMyTextWrapper from './styles';
|
|
|
7
15
|
// interface for props
|
|
8
16
|
interface PegaDxilMyTextProps extends PConnFieldProps {
|
|
9
17
|
// If any, enter additional props that only exist on TextInput here
|
|
10
|
-
|
|
18
|
+
isTableFormatter?: boolean;
|
|
19
|
+
formatter: string;
|
|
20
|
+
variant?: any;
|
|
11
21
|
}
|
|
12
22
|
|
|
13
23
|
// interface for StateProps object
|
|
@@ -16,23 +26,103 @@ interface StateProps {
|
|
|
16
26
|
hasSuggestions: boolean;
|
|
17
27
|
}
|
|
18
28
|
|
|
19
|
-
|
|
29
|
+
export const formatExists = (formatterVal: string) => {
|
|
30
|
+
const formatterValues = [
|
|
31
|
+
'TextInput',
|
|
32
|
+
'WorkStatus',
|
|
33
|
+
'RichText',
|
|
34
|
+
'Email',
|
|
35
|
+
'Phone',
|
|
36
|
+
'URL',
|
|
37
|
+
'Operator'
|
|
38
|
+
];
|
|
39
|
+
let isformatter = false;
|
|
40
|
+
if (formatterValues.includes(formatterVal)) {
|
|
41
|
+
isformatter = true;
|
|
42
|
+
}
|
|
43
|
+
return isformatter;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export const textFormatter = (formatter: string, value: string) => {
|
|
47
|
+
let displayComponent: any = null;
|
|
48
|
+
switch (formatter) {
|
|
49
|
+
case 'TextInput': {
|
|
50
|
+
displayComponent = value;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
case 'Email': {
|
|
54
|
+
displayComponent = <EmailDisplay value={value} displayText={value} variant='link' />;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
case 'Phone': {
|
|
58
|
+
displayComponent = <PhoneDisplay value={value} variant='link' />;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
case 'URL': {
|
|
62
|
+
displayComponent = (
|
|
63
|
+
<URLDisplay target='_blank' value={value} displayText={value} variant='link' />
|
|
64
|
+
);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
// no default
|
|
68
|
+
}
|
|
69
|
+
return displayComponent;
|
|
70
|
+
};
|
|
20
71
|
|
|
21
72
|
// props passed in combination of props from property panel (config.json) and run time props from Constellation
|
|
22
73
|
// any default values in config.pros should be set in defaultProps at bottom of this file
|
|
23
74
|
function PegaDxilMyText(props: PegaDxilMyTextProps) {
|
|
24
|
-
const { getPConnect, value, placeholder, disabled = false, readOnly = false, required = false, label, hideLabel = false, testId } = props;
|
|
75
|
+
const { getPConnect, value, placeholder, disabled = false, displayMode, readOnly = false, required = false, label, hideLabel = false, testId, isTableFormatter = false, variant = 'inline' } = props;
|
|
25
76
|
|
|
26
77
|
const pConn = getPConnect();
|
|
27
78
|
const actions = pConn.getActionsApi();
|
|
28
79
|
const stateProps = pConn.getStateProps() as StateProps;
|
|
29
80
|
const propName: string = stateProps.value;
|
|
81
|
+
const { formatter } = props;
|
|
30
82
|
|
|
31
83
|
const handleOnChange = (event: any) => {
|
|
32
84
|
const { value: updatedValue } = event.target;
|
|
33
85
|
actions.updateFieldValue(propName, updatedValue);
|
|
34
86
|
};
|
|
35
87
|
|
|
88
|
+
if (displayMode === 'LABELS_LEFT' || displayMode === 'DISPLAY_ONLY') {
|
|
89
|
+
let displayComp = value || <span aria-hidden='true'>––</span>;
|
|
90
|
+
if (isTableFormatter && formatExists(formatter)) {
|
|
91
|
+
displayComp = textFormatter(formatter, value);
|
|
92
|
+
}
|
|
93
|
+
return displayMode === 'DISPLAY_ONLY' ? (
|
|
94
|
+
<StyledPegaDxilMyTextWrapper> {displayComp} </StyledPegaDxilMyTextWrapper>
|
|
95
|
+
) : (
|
|
96
|
+
<StyledPegaDxilMyTextWrapper>
|
|
97
|
+
<FieldValueList
|
|
98
|
+
variant={hideLabel ? 'stacked' : variant}
|
|
99
|
+
data-testid={testId}
|
|
100
|
+
fields={[{ id: '1', name: hideLabel ? '' : label, value: displayComp }]}
|
|
101
|
+
/>
|
|
102
|
+
</StyledPegaDxilMyTextWrapper>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
107
|
+
const isValDefined = typeof value !== 'undefined' && value !== '';
|
|
108
|
+
const val = isValDefined ? (
|
|
109
|
+
<Text variant='h1' as='span'>
|
|
110
|
+
{value}
|
|
111
|
+
</Text>
|
|
112
|
+
) : (
|
|
113
|
+
''
|
|
114
|
+
);
|
|
115
|
+
return (
|
|
116
|
+
<StyledPegaDxilMyTextWrapper>
|
|
117
|
+
<FieldValueList
|
|
118
|
+
variant='stacked'
|
|
119
|
+
data-testid={testId}
|
|
120
|
+
fields={[{ id: '2', name: hideLabel ? '' : label, value: val }]}
|
|
121
|
+
/>
|
|
122
|
+
</StyledPegaDxilMyTextWrapper>
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
36
126
|
return (
|
|
37
127
|
<StyledPegaDxilMyTextWrapper>
|
|
38
128
|
<Input
|
|
@@ -20,13 +20,8 @@ export const BasePegaDxilMyTextInput: Story = args => {
|
|
|
20
20
|
|
|
21
21
|
const props = {
|
|
22
22
|
value: configProps.value,
|
|
23
|
-
placeholder: configProps.placeholder,
|
|
24
|
-
label: configProps.label,
|
|
25
|
-
helperText: configProps.helperText,
|
|
26
|
-
testId: configProps.testId,
|
|
27
23
|
hasSuggestions: configProps.hasSuggestions,
|
|
28
24
|
fieldMetadata,
|
|
29
|
-
validatemessage: '',
|
|
30
25
|
getPConnect: () => {
|
|
31
26
|
return {
|
|
32
27
|
getStateProps: () => {
|
|
@@ -64,5 +59,6 @@ BasePegaDxilMyTextInput.args = {
|
|
|
64
59
|
status: configProps.status,
|
|
65
60
|
hideLabel: configProps.hideLabel,
|
|
66
61
|
displayMode: configProps.displayMode,
|
|
62
|
+
variant: configProps.variant,
|
|
67
63
|
validatemessage: configProps.validatemessage
|
|
68
64
|
};
|
|
@@ -15,6 +15,9 @@ type Story = StoryObj<typeof PegaDxilMyTimeOfDay>;
|
|
|
15
15
|
|
|
16
16
|
export const BasePegaDxilMyTimeOfDay: Story = args => {
|
|
17
17
|
const props = {
|
|
18
|
+
value: configProps.value,
|
|
19
|
+
additionalProps: configProps.additionalProps,
|
|
20
|
+
hasSuggestions: configProps.hasSuggestions,
|
|
18
21
|
getPConnect: () => {
|
|
19
22
|
return {
|
|
20
23
|
getActionsApi: () => {
|
|
@@ -37,21 +40,7 @@ export const BasePegaDxilMyTimeOfDay: Story = args => {
|
|
|
37
40
|
ignoreSuggestion: () => {/* nothing */},
|
|
38
41
|
clearErrorMessages: () => {/* nothing */}
|
|
39
42
|
};
|
|
40
|
-
}
|
|
41
|
-
value: configProps.value,
|
|
42
|
-
validatemessage: configProps.validatemessage,
|
|
43
|
-
label: configProps.label,
|
|
44
|
-
hideLabel: configProps.hideLabel,
|
|
45
|
-
helperText: configProps.helperText,
|
|
46
|
-
withSeconds: configProps.withSeconds,
|
|
47
|
-
testId: configProps.testId,
|
|
48
|
-
additionalProps: configProps.additionalProps,
|
|
49
|
-
displayMode: configProps.displayMode,
|
|
50
|
-
variant: configProps.variant,
|
|
51
|
-
hasSuggestions: configProps.hasSuggestions,
|
|
52
|
-
disabled: configProps.disabled,
|
|
53
|
-
readOnly: configProps.readOnly,
|
|
54
|
-
required: configProps.required
|
|
43
|
+
}
|
|
55
44
|
};
|
|
56
45
|
|
|
57
46
|
return (
|
|
@@ -72,5 +61,6 @@ BasePegaDxilMyTimeOfDay.args = {
|
|
|
72
61
|
status: configProps.status,
|
|
73
62
|
hideLabel: configProps.hideLabel,
|
|
74
63
|
displayMode: configProps.displayMode,
|
|
64
|
+
variant: configProps.variant,
|
|
75
65
|
validatemessage: configProps.validatemessage
|
|
76
66
|
};
|
package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/DetailsRender.tsx
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Fragment, ReactElement } from 'react';
|
|
2
|
+
import { FieldValueList } from '@pega/cosmos-react-core';
|
|
3
|
+
|
|
4
|
+
interface DetailsRenderProps {
|
|
5
|
+
children?: never;
|
|
6
|
+
child: NonNullable<ReactElement>;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const DetailsRender = (props: DetailsRenderProps) => {
|
|
10
|
+
const { child } = props;
|
|
11
|
+
|
|
12
|
+
const kids = child.props.getPConnect().getChildren();
|
|
13
|
+
|
|
14
|
+
const displayCompArr: ReactElement[] = [];
|
|
15
|
+
|
|
16
|
+
Object.values(kids).forEach((value: any) => {
|
|
17
|
+
const { type } = value.getPConnect().getRawMetadata();
|
|
18
|
+
const { hideLabel, variant, testId, label } = value
|
|
19
|
+
.getPConnect()
|
|
20
|
+
.resolveConfigProps(value.getPConnect().getConfigProps());
|
|
21
|
+
|
|
22
|
+
let displayComp;
|
|
23
|
+
const key = JSON.stringify(value.getPConnect());
|
|
24
|
+
|
|
25
|
+
if (type === 'reference') {
|
|
26
|
+
const refElement = value.getPConnect().getComponent();
|
|
27
|
+
|
|
28
|
+
displayCompArr.push(refElement);
|
|
29
|
+
} else {
|
|
30
|
+
const element = value.getPConnect().getComponent();
|
|
31
|
+
const displayEl = <Fragment key={key}>{element}</Fragment>;
|
|
32
|
+
|
|
33
|
+
const fvlStyle = {
|
|
34
|
+
myColGap: {
|
|
35
|
+
columnGap: '0'
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// const myEl = <div>boo</div>;
|
|
40
|
+
displayComp = (
|
|
41
|
+
<Fragment key={key}>
|
|
42
|
+
<FieldValueList
|
|
43
|
+
style={fvlStyle.myColGap}
|
|
44
|
+
variant={hideLabel ? 'stacked' : variant}
|
|
45
|
+
data-testid={testId}
|
|
46
|
+
fields={[{ id: '1', name: hideLabel ? '' : label, value: displayEl }]}
|
|
47
|
+
/>
|
|
48
|
+
</Fragment>
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
displayCompArr.push(displayComp);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
return <>{displayCompArr}</>;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export default DetailsRender;
|
package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/HighlightRender.tsx
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { FieldValueList, Text } from '@pega/cosmos-react-core';
|
|
4
|
+
|
|
5
|
+
const HighlightRender = (data: any) => {
|
|
6
|
+
const { getPConnect } = data.props;
|
|
7
|
+
const { field } = data;
|
|
8
|
+
|
|
9
|
+
field.config['displayMode'] = 'DISPLAY_ONLY';
|
|
10
|
+
|
|
11
|
+
// Mark as status display when using pyStatusWork
|
|
12
|
+
if (field.config?.value === '@P .pyStatusWork') {
|
|
13
|
+
field.type = 'TextInput';
|
|
14
|
+
field.config.displayAsStatus = true;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const configProps = getPConnect().resolveConfigProps(field.config);
|
|
18
|
+
|
|
19
|
+
// field.config = configProps;
|
|
20
|
+
|
|
21
|
+
const reactField = getPConnect().createComponent(field);
|
|
22
|
+
// const reactField = field.getPConnect().getComponent();
|
|
23
|
+
|
|
24
|
+
const styles = {
|
|
25
|
+
myWidth: {
|
|
26
|
+
width: 'auto'
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<FieldValueList
|
|
32
|
+
style={styles.myWidth}
|
|
33
|
+
variant='stacked'
|
|
34
|
+
data-testid={field.testId}
|
|
35
|
+
fields={[
|
|
36
|
+
{
|
|
37
|
+
id: '2',
|
|
38
|
+
name: configProps.hideLabel ? '' : configProps.label,
|
|
39
|
+
value: (
|
|
40
|
+
<Text variant='h1' as='span'>
|
|
41
|
+
{reactField}
|
|
42
|
+
</Text>
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
]}
|
|
46
|
+
/>
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export default HighlightRender;
|
package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/demo.stories.tsx
CHANGED
|
@@ -86,10 +86,6 @@ const renderField = resolvedProps => {
|
|
|
86
86
|
|
|
87
87
|
export const BasePegaDxilMyTwoColumnDetails: Story = args => {
|
|
88
88
|
const props = {
|
|
89
|
-
template: 'MyCo_MyComponents_NewDetailsTemplate',
|
|
90
|
-
showHighlightedData: true,
|
|
91
|
-
label: 'Test Details',
|
|
92
|
-
showLabel: true,
|
|
93
89
|
getPConnect: () => {
|
|
94
90
|
return {
|
|
95
91
|
getChildren: () => {
|
|
@@ -148,4 +144,8 @@ export const BasePegaDxilMyTwoColumnDetails: Story = args => {
|
|
|
148
144
|
);
|
|
149
145
|
};
|
|
150
146
|
|
|
151
|
-
BasePegaDxilMyTwoColumnDetails.args = {
|
|
147
|
+
BasePegaDxilMyTwoColumnDetails.args = {
|
|
148
|
+
showLabel: true,
|
|
149
|
+
label: 'Details Region template',
|
|
150
|
+
showHighlightedData: true
|
|
151
|
+
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Fragment } from 'react';
|
|
2
2
|
import { Grid, Flex, FieldGroup, withConfiguration } from '@pega/cosmos-react-core';
|
|
3
3
|
import type { PConnFieldProps } from './PConnProps';
|
|
4
|
+
import DetailsRender from './DetailsRender';
|
|
5
|
+
import HighlightRender from './HighlightRender';
|
|
4
6
|
|
|
5
7
|
import StyledPegaDxilMyTwoColumnDetailsWrapper from './styles';
|
|
6
8
|
|
|
@@ -15,8 +17,6 @@ interface PegaDxilMyTwoColumnDetailsProps extends PConnFieldProps {
|
|
|
15
17
|
children: any;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
// Duplicated runtime code from Constellation Design System Component
|
|
19
|
-
|
|
20
20
|
// props passed in combination of props from property panel (config.json) and run time props from Constellation
|
|
21
21
|
// any default values in config.pros should be set in defaultProps at bottom of this file
|
|
22
22
|
function PegaDxilMyTwoColumnDetails(props: PegaDxilMyTwoColumnDetailsProps) {
|
|
@@ -24,9 +24,17 @@ function PegaDxilMyTwoColumnDetails(props: PegaDxilMyTwoColumnDetailsProps) {
|
|
|
24
24
|
const { getPConnect, children, label, showLabel = true, showHighlightedData = false } = props;
|
|
25
25
|
const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
|
|
26
26
|
|
|
27
|
+
// update children with readonly
|
|
28
|
+
// eslint-disable-next-line guard-for-in
|
|
29
|
+
for (const index in children) {
|
|
30
|
+
const kid = children[index];
|
|
31
|
+
kid.props.getPConnect().setInheritedProp('readOnly', true);
|
|
32
|
+
kid.props.getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY');
|
|
33
|
+
}
|
|
34
|
+
|
|
27
35
|
const numRegions = getAllFields(getPConnect)?.length;
|
|
28
36
|
const gridRepeat = "repeat(".concat(numRegions).concat(", 1fr)");
|
|
29
|
-
const gridContainer = { "colGap":
|
|
37
|
+
const gridContainer = { "colGap": 0};
|
|
30
38
|
// @ts-ignore
|
|
31
39
|
gridContainer.cols = gridRepeat;
|
|
32
40
|
// @ts-ignore
|
|
@@ -36,7 +44,7 @@ function PegaDxilMyTwoColumnDetails(props: PegaDxilMyTwoColumnDetailsProps) {
|
|
|
36
44
|
// @ts-ignore
|
|
37
45
|
gridHighlightContainer.cols = gridRepeat;
|
|
38
46
|
// @ts-ignore
|
|
39
|
-
gridHighlightContainer.alignItems = 'start';
|
|
47
|
+
gridHighlightContainer.alignItems = 'flex-start';
|
|
40
48
|
// @ts-ignore
|
|
41
49
|
gridHighlightContainer.pad = [0, 0, 2, 0];
|
|
42
50
|
|
|
@@ -47,33 +55,47 @@ function PegaDxilMyTwoColumnDetails(props: PegaDxilMyTwoColumnDetailsProps) {
|
|
|
47
55
|
const { highlightedData = [] } = getPConnect().getRawMetadata().config;
|
|
48
56
|
// @ts-ignore
|
|
49
57
|
highlightedDataArr = highlightedData.map((field) => {
|
|
50
|
-
field.config.displayMode = 'STACKED_LARGE_VAL';
|
|
58
|
+
// field.config.displayMode = 'STACKED_LARGE_VAL';
|
|
51
59
|
|
|
52
|
-
// Mark as status display when using pyStatusWork
|
|
53
|
-
if (field.config.value === '@P .pyStatusWork') {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
// @ts-ignore
|
|
58
|
-
return getPConnect().createComponent(field);
|
|
60
|
+
// // Mark as status display when using pyStatusWork
|
|
61
|
+
// if (field.config.value === '@P .pyStatusWork') {
|
|
62
|
+
// field.type = 'TextInput';
|
|
63
|
+
// field.config.displayAsStatus = true;
|
|
64
|
+
// }
|
|
65
|
+
// // @ts-ignore
|
|
66
|
+
// return getPConnect().createComponent(field);
|
|
67
|
+
return <HighlightRender field={field} props={props} />;
|
|
59
68
|
});
|
|
60
69
|
}
|
|
61
70
|
|
|
71
|
+
const hrStyle = {
|
|
72
|
+
line: {
|
|
73
|
+
margin: '0.75rem 0',
|
|
74
|
+
opacity: '50%'
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
62
78
|
return (
|
|
63
79
|
<StyledPegaDxilMyTwoColumnDetailsWrapper>
|
|
64
80
|
<FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>
|
|
65
81
|
{showHighlightedData && highlightedDataArr.length > 0 && (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
82
|
+
<>
|
|
83
|
+
<Flex
|
|
84
|
+
container={{ direction: 'row', alignItems: 'start', colGap: 10 }}
|
|
85
|
+
data-testid={`highlighted-column-count-${numRegions}`}
|
|
86
|
+
>
|
|
87
|
+
{highlightedDataArr.map((child: any, i: number) => (
|
|
88
|
+
<Fragment key={`hf-${i + 1}`}>{child}</Fragment>
|
|
89
|
+
))}
|
|
90
|
+
</Flex>
|
|
91
|
+
<hr style={hrStyle.line} />
|
|
92
|
+
</>
|
|
72
93
|
)}
|
|
73
94
|
<Grid container={gridContainer} data-testid={`column-count-${numRegions}`} >
|
|
74
95
|
{children.map((child: any, i: number) => (
|
|
75
|
-
|
|
76
|
-
{
|
|
96
|
+
// @ts-ignore
|
|
97
|
+
<Flex container={{ direction: 'column', alignItems: 'normal', colGap: 0, rowGap: 1.5 }} key={`r-${i + 1}`}>
|
|
98
|
+
<DetailsRender child={child} />
|
|
77
99
|
</Flex>
|
|
78
100
|
))}
|
|
79
101
|
</Grid>
|
package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnForm/DetailsRender.tsx
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Fragment, ReactElement } from 'react';
|
|
2
|
+
import { FieldValueList } from '@pega/cosmos-react-core';
|
|
3
|
+
|
|
4
|
+
interface DetailsRenderProps {
|
|
5
|
+
children?: never;
|
|
6
|
+
child: NonNullable<ReactElement>;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const DetailsRender = (props: DetailsRenderProps) => {
|
|
10
|
+
const { child } = props;
|
|
11
|
+
|
|
12
|
+
const kids = child.props.getPConnect().getChildren();
|
|
13
|
+
|
|
14
|
+
const displayCompArr: ReactElement[] = [];
|
|
15
|
+
|
|
16
|
+
Object.values(kids).forEach((value: any) => {
|
|
17
|
+
const { type } = value.getPConnect().getRawMetadata();
|
|
18
|
+
const { hideLabel, variant, testId, label } = value
|
|
19
|
+
.getPConnect()
|
|
20
|
+
.resolveConfigProps(value.getPConnect().getConfigProps());
|
|
21
|
+
|
|
22
|
+
let displayComp;
|
|
23
|
+
const key = JSON.stringify(value.getPConnect());
|
|
24
|
+
|
|
25
|
+
if (type === 'reference') {
|
|
26
|
+
const refElement = value.getPConnect().getComponent();
|
|
27
|
+
|
|
28
|
+
displayCompArr.push(refElement);
|
|
29
|
+
} else {
|
|
30
|
+
const element = value.getPConnect().getComponent();
|
|
31
|
+
const displayEl = <Fragment key={key}>{element}</Fragment>;
|
|
32
|
+
|
|
33
|
+
const fvlStyle = {
|
|
34
|
+
myColGap: {
|
|
35
|
+
columnGap: '0'
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// const myEl = <div>boo</div>;
|
|
40
|
+
displayComp = (
|
|
41
|
+
<Fragment key={key}>
|
|
42
|
+
<FieldValueList
|
|
43
|
+
style={fvlStyle.myColGap}
|
|
44
|
+
variant={hideLabel ? 'stacked' : variant}
|
|
45
|
+
data-testid={testId}
|
|
46
|
+
fields={[{ id: '1', name: hideLabel ? '' : label, value: displayEl }]}
|
|
47
|
+
/>
|
|
48
|
+
</Fragment>
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
displayCompArr.push(displayComp);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
return <>{displayCompArr}</>;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export default DetailsRender;
|
package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnForm/demo.stories.tsx
CHANGED
|
@@ -142,7 +142,6 @@ const renderField = resolvedProps => {
|
|
|
142
142
|
|
|
143
143
|
export const BasePegaDxilMyTwoColumnForm: Story = args => {
|
|
144
144
|
const props = {
|
|
145
|
-
template: 'DefaultForm',
|
|
146
145
|
getPConnect: () => {
|
|
147
146
|
return {
|
|
148
147
|
getChildren: () => {
|
|
@@ -187,4 +186,7 @@ export const BasePegaDxilMyTwoColumnForm: Story = args => {
|
|
|
187
186
|
);
|
|
188
187
|
};
|
|
189
188
|
|
|
190
|
-
BasePegaDxilMyTwoColumnForm.args = {
|
|
189
|
+
BasePegaDxilMyTwoColumnForm.args = {
|
|
190
|
+
showLabel: true,
|
|
191
|
+
label: 'Form Region template',
|
|
192
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Grid, Flex, FieldGroup, withConfiguration } from '@pega/cosmos-react-core';
|
|
2
2
|
|
|
3
3
|
import type { PConnFieldProps } from './PConnProps';
|
|
4
|
+
import DetailsRender from './DetailsRender';
|
|
4
5
|
|
|
5
6
|
import StyledPegaDxilMyTwoColumnFormWrapper from './styles';
|
|
6
7
|
|
|
@@ -11,14 +12,12 @@ interface PegaDxilMyTwoColumnFormProps extends PConnFieldProps {
|
|
|
11
12
|
children: any;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
// Duplicated runtime code from Constellation Design System Component
|
|
15
|
-
|
|
16
15
|
// props passed in combination of props from property panel (config.json) and run time props from Constellation
|
|
17
16
|
// any default values in config.pros should be set in defaultProps at bottom of this file
|
|
18
17
|
function PegaDxilMyTwoColumnForm(props: PegaDxilMyTwoColumnFormProps) {
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
const { children = [], label, showLabel, getPConnect } = props;
|
|
20
|
+
const { children = [], label, showLabel, getPConnect, readOnly, displayMode } = props;
|
|
22
21
|
const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
|
|
23
22
|
|
|
24
23
|
const numRegions = children?.length;
|
|
@@ -33,6 +32,26 @@ function PegaDxilMyTwoColumnForm(props: PegaDxilMyTwoColumnFormProps) {
|
|
|
33
32
|
// @ts-ignore
|
|
34
33
|
flexContainer.gap = 2;
|
|
35
34
|
|
|
35
|
+
if (readOnly && readOnly === true && displayMode && displayMode === 'DISPLAY_ONLY') {
|
|
36
|
+
return (
|
|
37
|
+
<StyledPegaDxilMyTwoColumnFormWrapper>
|
|
38
|
+
<FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>
|
|
39
|
+
<Grid container={gridContainer} data-testid={`column-count-${numRegions}`}>
|
|
40
|
+
{children.map((child: any, i: number) => (
|
|
41
|
+
<Flex
|
|
42
|
+
// @ts-ignore
|
|
43
|
+
container={{ direction: 'column', alignItems: 'normal', colGap: 0, rowGap: 1.5 }}
|
|
44
|
+
key={`r-${i + 1}`}
|
|
45
|
+
>
|
|
46
|
+
<DetailsRender child={child} />
|
|
47
|
+
</Flex>
|
|
48
|
+
))}
|
|
49
|
+
</Grid>
|
|
50
|
+
</FieldGroup>
|
|
51
|
+
</StyledPegaDxilMyTwoColumnFormWrapper>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
36
55
|
return (
|
|
37
56
|
<StyledPegaDxilMyTwoColumnFormWrapper>
|
|
38
57
|
<FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>
|
|
@@ -19,12 +19,7 @@ export const BasePegaDxilMyUrl: Story = args => {
|
|
|
19
19
|
|
|
20
20
|
const props = {
|
|
21
21
|
value: configProps.value,
|
|
22
|
-
placeholder: configProps.placeholder,
|
|
23
|
-
label: configProps.label,
|
|
24
|
-
helperText: configProps.helperText,
|
|
25
|
-
testId: configProps.testId,
|
|
26
22
|
hasSuggestions: configProps.hasSuggestions,
|
|
27
|
-
validatemessage: '',
|
|
28
23
|
getPConnect: () => {
|
|
29
24
|
return {
|
|
30
25
|
getStateProps: () => {
|
|
@@ -62,5 +57,6 @@ BasePegaDxilMyUrl.args = {
|
|
|
62
57
|
status: configProps.status,
|
|
63
58
|
hideLabel: configProps.hideLabel,
|
|
64
59
|
displayMode: configProps.displayMode,
|
|
60
|
+
variant: configProps.variant,
|
|
65
61
|
validatemessage: configProps.validatemessage
|
|
66
62
|
};
|