@pega/custom-dx-components 2.0.18 → 2.0.19
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/create/templates/Constellation/Field/Boolean/demo.stories.jsx.mustache +1 -0
- package/src/tasks/create/templates/Constellation/Field/Date/demo.stories.jsx.mustache +11 -6
- package/src/tasks/create/templates/Constellation/Field/DateTime/demo.stories.jsx.mustache +11 -7
- package/src/tasks/create/templates/Constellation/Field/Decimal/demo.stories.jsx.mustache +7 -7
- package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/demo.stories.jsx.mustache +9 -8
- package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/demo.stories.jsx.mustache +7 -7
- package/src/tasks/create/templates/Constellation/Field/Integer/demo.stories.jsx.mustache +7 -7
- package/src/tasks/create/templates/Constellation/Field/Picklist/demo.stories.jsx.mustache +16 -10
- package/src/tasks/create/templates/Constellation/Field/Text/demo.stories.jsx.mustache +9 -7
- package/src/tasks/create/templates/Constellation/Field/Text-Email/demo.stories.jsx.mustache +8 -8
- package/src/tasks/create/templates/Constellation/Field/Text-Input/demo.stories.jsx.mustache +7 -7
- package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/demo.stories.jsx.mustache +7 -7
- package/src/tasks/create/templates/Constellation/Field/Text-Phone/demo.stories.jsx.mustache +6 -6
- package/src/tasks/create/templates/Constellation/Field/Text-Phone/index.jsx.mustache +1 -1
- package/src/tasks/create/templates/Constellation/Field/Text-URL/demo.stories.jsx.mustache +6 -6
- package/src/tasks/create/templates/Constellation/Field/Text-URL/index.jsx.mustache +3 -174
- package/src/tasks/create/templates/Constellation/Field/Text-URL/text-url.js.mustache +172 -0
- package/src/tasks/create/templates/Constellation/Field/TimeofDay/demo.stories.jsx.mustache +10 -5
- package/src/tasks/create/templates/Constellation/Template/DETAILS/demo.stories.jsx.mustache +59 -51
- package/src/tasks/create/templates/Constellation/Template/DETAILS-region/demo.stories.jsx.mustache +64 -59
- package/src/tasks/create/templates/Constellation/Template/FORM/demo.stories.jsx.mustache +43 -39
- package/src/tasks/create/templates/Constellation/Template/FORM-region/demo.stories.jsx.mustache +46 -46
- package/src/tasks/create/templates/Constellation/Template/PAGE/demo.stories.jsx.mustache +24 -25
- package/src/tasks/create/templates/Constellation/Widget/CASE/demo.stories.jsx.mustache +7 -7
- package/src/tasks/create/templates/Constellation/Widget/CASE/mock.stories.js.mustache +2 -1
- package/src/tasks/create/templates/Constellation/Widget/PAGE/demo.stories.jsx.mustache +1 -1
- package/src/tasks/create/templates/Constellation/Widget/PAGE/mock.stories.js.mustache +2 -1
- package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/demo.stories.jsx.mustache +6 -6
- package/src/tasks/init/template/package.json.mustache +1 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {EmailDisplay, PhoneDisplay, URLDisplay } from "@pega/cosmos-react-core";
|
|
2
|
+
|
|
3
|
+
export const formatExists = (formatterVal) => {
|
|
4
|
+
const formatterValues = [
|
|
5
|
+
"TextInput",
|
|
6
|
+
"WorkStatus",
|
|
7
|
+
"RichText",
|
|
8
|
+
"Email",
|
|
9
|
+
"Phone",
|
|
10
|
+
"URL",
|
|
11
|
+
"Operator"
|
|
12
|
+
];
|
|
13
|
+
let isformatter = false;
|
|
14
|
+
if (formatterValues.includes(formatterVal)) {
|
|
15
|
+
isformatter = true;
|
|
16
|
+
}
|
|
17
|
+
return isformatter;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const urlLabelVal = (urlLabelSelection, btnVal, urlLabel, propUrlLabel) => {
|
|
21
|
+
if ((urlLabel !== '' || propUrlLabel !== '') && btnVal !== null) {
|
|
22
|
+
switch (urlLabelSelection) {
|
|
23
|
+
case 'constant': {
|
|
24
|
+
btnVal = urlLabel;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
case 'propertyRef': {
|
|
28
|
+
btnVal = propUrlLabel;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
// no default
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return btnVal;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const isImage = (url) => /\.(jpg|jpeg|png|webp|avif|gif|svg)$/.test(url);
|
|
38
|
+
|
|
39
|
+
const TableImage = (imageProps) => {
|
|
40
|
+
const { value, altText, altTextOfImage, propaltTextOfImage, urlLabelSelection, urlLabel, propUrlLabel } = imageProps;
|
|
41
|
+
const demoButtonRef = useRef(null);
|
|
42
|
+
let imageDisplayComp = null;
|
|
43
|
+
const [images, setImages] = useState(null);
|
|
44
|
+
const imgDescription = {
|
|
45
|
+
id: 'url',
|
|
46
|
+
name: urlLabelSelection === 'constant' ? urlLabel : propUrlLabel,
|
|
47
|
+
description: altText === 'constant' ? altTextOfImage : propaltTextOfImage,
|
|
48
|
+
src: value
|
|
49
|
+
};
|
|
50
|
+
const onClick = () => {
|
|
51
|
+
setImages([imgDescription]);
|
|
52
|
+
};
|
|
53
|
+
const onItemDownload = async (id) => {
|
|
54
|
+
const a = document.createElement('a');
|
|
55
|
+
a.href = await fetch(images[0].src)
|
|
56
|
+
.then((response) => {
|
|
57
|
+
return response.blob();
|
|
58
|
+
})
|
|
59
|
+
.then((blob) => {
|
|
60
|
+
return URL.createObjectURL(blob);
|
|
61
|
+
});
|
|
62
|
+
a.download = images?.find((image) => image.id === id)?.name ?? id;
|
|
63
|
+
document.body.appendChild(a);
|
|
64
|
+
a.click();
|
|
65
|
+
document.body.removeChild(a);
|
|
66
|
+
};
|
|
67
|
+
let btnVal = value;
|
|
68
|
+
btnVal = urlLabelVal(urlLabelSelection, btnVal, urlLabel, propUrlLabel);
|
|
69
|
+
imageDisplayComp = (
|
|
70
|
+
<React.Fragment>
|
|
71
|
+
{btnVal !== null && (
|
|
72
|
+
<Button ref={demoButtonRef} variant='link' compact={false} onClick={onClick} autoFocus>
|
|
73
|
+
{btnVal}
|
|
74
|
+
</Button>
|
|
75
|
+
)}
|
|
76
|
+
{images && (
|
|
77
|
+
<Lightbox
|
|
78
|
+
items={images}
|
|
79
|
+
cycle={false}
|
|
80
|
+
onAfterClose={() => {
|
|
81
|
+
setImages(null);
|
|
82
|
+
demoButtonRef.current?.focus();
|
|
83
|
+
}}
|
|
84
|
+
onItemDownload={isImage(images[0].src) ? onItemDownload : undefined}
|
|
85
|
+
/>
|
|
86
|
+
)}
|
|
87
|
+
</React.Fragment>
|
|
88
|
+
);
|
|
89
|
+
return imageDisplayComp;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const textFormatter = (formatter,value) => {
|
|
93
|
+
let displayComponent = null;
|
|
94
|
+
switch(formatter){
|
|
95
|
+
case "TextInput" : {
|
|
96
|
+
displayComponent = value;
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case "Email" : {
|
|
100
|
+
displayComponent = (<EmailDisplay value={value} displayText={value} variant="link" />);
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
case "Phone" : {
|
|
104
|
+
displayComponent = (<PhoneDisplay value={value} variant="link" />);
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case "URL" : {
|
|
108
|
+
displayComponent = (<URLDisplay target="_blank" value={value} displayText={value} variant="link" />);
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
// no default
|
|
112
|
+
}
|
|
113
|
+
return displayComponent;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Returns a URL display component based on the options
|
|
118
|
+
* @function urlFormatter
|
|
119
|
+
* @param {string} value value
|
|
120
|
+
* @param {object} options options for formatting
|
|
121
|
+
* { displayAs,tableDisplayAs,isTableFormatter,altText,altTextOfImage,propaltTextOfImage,urlLabelSelection, urlLabel,propUrlLabel, widthSel, customWidth}
|
|
122
|
+
*/
|
|
123
|
+
export const urlFormatter = (value, options) => {
|
|
124
|
+
const {
|
|
125
|
+
displayAs,
|
|
126
|
+
tableDisplayAs,
|
|
127
|
+
isTableFormatter,
|
|
128
|
+
altText,
|
|
129
|
+
altTextOfImage,
|
|
130
|
+
propaltTextOfImage,
|
|
131
|
+
urlLabelSelection,
|
|
132
|
+
urlLabel,
|
|
133
|
+
propUrlLabel,
|
|
134
|
+
widthSel,
|
|
135
|
+
customWidth
|
|
136
|
+
} = options;
|
|
137
|
+
|
|
138
|
+
let urlFormatComp = null;
|
|
139
|
+
if (
|
|
140
|
+
(displayAs === 'labelText' || (isTableFormatter && tableDisplayAs === 'link')) &&
|
|
141
|
+
(urlLabel !== '' || propUrlLabel !== '')
|
|
142
|
+
) {
|
|
143
|
+
urlFormatComp = (
|
|
144
|
+
<URLDisplay
|
|
145
|
+
target='_blank'
|
|
146
|
+
value={value}
|
|
147
|
+
displayText={urlLabelSelection === 'constant' ? urlLabel : propUrlLabel}
|
|
148
|
+
variant='link'
|
|
149
|
+
/>
|
|
150
|
+
);
|
|
151
|
+
} else if ((displayAs === 'Image' || tableDisplayAs === 'Image') && !!value) {
|
|
152
|
+
if (isTableFormatter) {
|
|
153
|
+
urlFormatComp = TableImage({
|
|
154
|
+
value,
|
|
155
|
+
altText,
|
|
156
|
+
altTextOfImage,
|
|
157
|
+
propaltTextOfImage,
|
|
158
|
+
urlLabelSelection,
|
|
159
|
+
urlLabel,
|
|
160
|
+
propUrlLabel
|
|
161
|
+
});
|
|
162
|
+
} else {
|
|
163
|
+
const width = widthSel === 'widthpx' ? customWidth : null;
|
|
164
|
+
urlFormatComp = (
|
|
165
|
+
<Image src={value} width={width} alt={altText === 'constant' ? altTextOfImage : propaltTextOfImage} />
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
} else {
|
|
169
|
+
urlFormatComp = <URLDisplay target='_blank' value={value} displayText={value} variant='link' />;
|
|
170
|
+
}
|
|
171
|
+
return urlFormatComp;
|
|
172
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { withKnobs
|
|
1
|
+
import { withKnobs } from '@storybook/addon-knobs';
|
|
2
2
|
import { configProps, stateProps } from './mock.stories';
|
|
3
3
|
import {{COMPONENT_CLASS_NAME}} from './index.jsx';
|
|
4
4
|
|
|
@@ -14,8 +14,13 @@ export const base{{COMPONENT_CLASS_NAME}} = () => {
|
|
|
14
14
|
return {
|
|
15
15
|
getActionsApi: () => {
|
|
16
16
|
return {
|
|
17
|
-
updateFieldValue: () => {},
|
|
18
|
-
triggerFieldChange: () => {}
|
|
17
|
+
updateFieldValue: () => {/* nothing */},
|
|
18
|
+
triggerFieldChange: () => {/* nothing */}
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
getValidationApi: () => {
|
|
22
|
+
return {
|
|
23
|
+
validate: () => {/* nothing */}
|
|
19
24
|
};
|
|
20
25
|
},
|
|
21
26
|
getStateProps: () => {
|
|
@@ -24,8 +29,8 @@ export const base{{COMPONENT_CLASS_NAME}} = () => {
|
|
|
24
29
|
getConfigProps: () => {
|
|
25
30
|
return configProps;
|
|
26
31
|
},
|
|
27
|
-
ignoreSuggestion: () => {},
|
|
28
|
-
clearErrorMessages: () => {}
|
|
32
|
+
ignoreSuggestion: () => {/* nothing */},
|
|
33
|
+
clearErrorMessages: () => {/* nothing */}
|
|
29
34
|
};
|
|
30
35
|
},
|
|
31
36
|
value: configProps.value,
|
|
@@ -8,69 +8,20 @@ export default {
|
|
|
8
8
|
component: {{COMPONENT_CLASS_NAME}}
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
const Template = args => {
|
|
12
|
-
const regionAChildren = pyReviewRaw.children[0].children.map(child => {
|
|
13
|
-
return Primary.args.getPConnect().createComponent(child);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
return <{{COMPONENT_CLASS_NAME}} {...args}>{regionAChildren}</{{COMPONENT_CLASS_NAME}}>;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export const Primary = Template.bind({});
|
|
20
|
-
|
|
21
|
-
Primary.args = {
|
|
22
|
-
template: 'MyCo_MyComponents_NewDetailsTemplate',
|
|
23
|
-
showHighlightedData: true,
|
|
24
|
-
label: 'Test Details',
|
|
25
|
-
showLabel: true,
|
|
26
|
-
getPConnect: () => {
|
|
27
|
-
return {
|
|
28
|
-
getChildren: () => {
|
|
29
|
-
return pyReviewRaw.children;
|
|
30
|
-
},
|
|
31
|
-
getRawMetadata: () => {
|
|
32
|
-
return pyReviewRaw;
|
|
33
|
-
},
|
|
34
|
-
getInheritedProps: () => {
|
|
35
|
-
return pyReviewRaw.config.inheritedProps;
|
|
36
|
-
},
|
|
37
|
-
createComponent: config => {
|
|
38
|
-
switch (config.config.value) {
|
|
39
|
-
case '@P .pyStatusWork':
|
|
40
|
-
return renderField(pyReviewResolved.highlightedData[0].config);
|
|
41
|
-
case '@P .pyID':
|
|
42
|
-
return renderField(pyReviewResolved.highlightedData[1].config);
|
|
43
|
-
case '@P .pxCreateDateTime':
|
|
44
|
-
return renderField(pyReviewResolved.highlightedData[2].config);
|
|
45
|
-
case '@USER .pxCreateOperator':
|
|
46
|
-
return renderField(pyReviewResolved.highlightedData[3].config);
|
|
47
|
-
case '@P .pySLADeadline':
|
|
48
|
-
return renderField(regionChildrenResolved[0]);
|
|
49
|
-
case '@P .pySLAGoal':
|
|
50
|
-
return renderField(regionChildrenResolved[1]);
|
|
51
|
-
case '@P .pySLAStartTime':
|
|
52
|
-
return renderField(regionChildrenResolved[2]);
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
setInheritedProp: () => {},
|
|
56
|
-
resolveConfigProps: () => {}
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
11
|
const renderField = resolvedProps => {
|
|
62
12
|
const {
|
|
63
13
|
displayAsStatus = false,
|
|
64
14
|
displayMode,
|
|
65
15
|
value = '',
|
|
66
16
|
label = '',
|
|
17
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
67
18
|
theme = useTheme()
|
|
68
19
|
} = resolvedProps;
|
|
69
20
|
|
|
70
21
|
const variant = displayMode === 'LABELS_LEFT' ? 'inline' : 'stacked';
|
|
71
22
|
|
|
72
23
|
let val =
|
|
73
|
-
value
|
|
24
|
+
value !== '' ? (
|
|
74
25
|
<Text variant='h1' as='span'>
|
|
75
26
|
{value}
|
|
76
27
|
</Text>
|
|
@@ -108,3 +59,60 @@ const renderField = resolvedProps => {
|
|
|
108
59
|
}
|
|
109
60
|
return <FieldValueList variant={variant} fields={[{ name: label, value: val }]} />;
|
|
110
61
|
};
|
|
62
|
+
|
|
63
|
+
export const base{{COMPONENT_CLASS_NAME}} = () => {
|
|
64
|
+
const props = {
|
|
65
|
+
template: 'MyCo_MyComponents_NewDetailsTemplate',
|
|
66
|
+
showHighlightedData: true,
|
|
67
|
+
label: 'Test Details',
|
|
68
|
+
showLabel: true,
|
|
69
|
+
getPConnect: () => {
|
|
70
|
+
return {
|
|
71
|
+
getChildren: () => {
|
|
72
|
+
return pyReviewRaw.children;
|
|
73
|
+
},
|
|
74
|
+
getRawMetadata: () => {
|
|
75
|
+
return pyReviewRaw;
|
|
76
|
+
},
|
|
77
|
+
getInheritedProps: () => {
|
|
78
|
+
return pyReviewRaw.config.inheritedProps;
|
|
79
|
+
},
|
|
80
|
+
createComponent: config => {
|
|
81
|
+
// eslint-disable-next-line default-case
|
|
82
|
+
switch (config.config.value) {
|
|
83
|
+
case '@P .pyStatusWork':
|
|
84
|
+
return renderField(pyReviewResolved.highlightedData[0].config);
|
|
85
|
+
case '@P .pyID':
|
|
86
|
+
return renderField(pyReviewResolved.highlightedData[1].config);
|
|
87
|
+
case '@P .pxCreateDateTime':
|
|
88
|
+
return renderField(pyReviewResolved.highlightedData[2].config);
|
|
89
|
+
case '@USER .pxCreateOperator':
|
|
90
|
+
return renderField(pyReviewResolved.highlightedData[3].config);
|
|
91
|
+
case '@P .pySLADeadline':
|
|
92
|
+
return renderField(regionChildrenResolved[0]);
|
|
93
|
+
case '@P .pySLAGoal':
|
|
94
|
+
return renderField(regionChildrenResolved[1]);
|
|
95
|
+
case '@P .pySLAStartTime':
|
|
96
|
+
return renderField(regionChildrenResolved[2]);
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
setInheritedProp: () => {
|
|
100
|
+
/* nothing */
|
|
101
|
+
},
|
|
102
|
+
resolveConfigProps: () => {
|
|
103
|
+
/* nothing */
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const regionAChildren = pyReviewRaw.children[0].children.map(child => {
|
|
110
|
+
return props.getPConnect().createComponent(child);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
return (
|
|
114
|
+
<>
|
|
115
|
+
<{{COMPONENT_CLASS_NAME}} {...props}>{regionAChildren}</{{COMPONENT_CLASS_NAME}}>
|
|
116
|
+
</>
|
|
117
|
+
);
|
|
118
|
+
};
|
package/src/tasks/create/templates/Constellation/Template/DETAILS-region/demo.stories.jsx.mustache
CHANGED
|
@@ -8,77 +8,20 @@ export default {
|
|
|
8
8
|
component: {{COMPONENT_CLASS_NAME}}
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
const Template = args => {
|
|
12
|
-
const regionAChildren = pyReviewRaw.children[0].children.map(child => {
|
|
13
|
-
return Primary.args.getPConnect().createComponent(child);
|
|
14
|
-
});
|
|
15
|
-
const regionBChildren = pyReviewRaw.children[1].children.map(child => {
|
|
16
|
-
return Primary.args.getPConnect().createComponent(child);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<{{COMPONENT_CLASS_NAME}} {...args}>
|
|
21
|
-
{regionAChildren}
|
|
22
|
-
{regionBChildren}
|
|
23
|
-
</{{COMPONENT_CLASS_NAME}}>
|
|
24
|
-
);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export const Primary = Template.bind({});
|
|
28
|
-
|
|
29
|
-
Primary.args = {
|
|
30
|
-
template: 'MyCo_MyComponents_NewDetailsTemplate',
|
|
31
|
-
showHighlightedData: true,
|
|
32
|
-
label: 'Test Details',
|
|
33
|
-
showLabel: true,
|
|
34
|
-
getPConnect: () => {
|
|
35
|
-
return {
|
|
36
|
-
getChildren: () => {
|
|
37
|
-
return pyReviewRaw.children;
|
|
38
|
-
},
|
|
39
|
-
getRawMetadata: () => {
|
|
40
|
-
return pyReviewRaw;
|
|
41
|
-
},
|
|
42
|
-
getInheritedProps: () => {
|
|
43
|
-
return pyReviewRaw.config.inheritedProps;
|
|
44
|
-
},
|
|
45
|
-
createComponent: config => {
|
|
46
|
-
switch (config.config.value) {
|
|
47
|
-
case '@P .pyStatusWork':
|
|
48
|
-
return renderField(pyReviewResolved.highlightedData[0].config);
|
|
49
|
-
case '@P .pyID':
|
|
50
|
-
return renderField(pyReviewResolved.highlightedData[1].config);
|
|
51
|
-
case '@P .pxCreateDateTime':
|
|
52
|
-
return renderField(pyReviewResolved.highlightedData[2].config);
|
|
53
|
-
case '@USER .pxCreateOperator':
|
|
54
|
-
return renderField(pyReviewResolved.highlightedData[3].config);
|
|
55
|
-
case '@P .pySLADeadline':
|
|
56
|
-
return renderField(regionChildrenResolved[0]);
|
|
57
|
-
case '@P .pySLAGoal':
|
|
58
|
-
return renderField(regionChildrenResolved[1]);
|
|
59
|
-
case '@P .pySLAStartTime':
|
|
60
|
-
return renderField(regionChildrenResolved[2]);
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
setInheritedProp: () => {},
|
|
64
|
-
resolveConfigProps: () => {}
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
|
|
69
11
|
const renderField = resolvedProps => {
|
|
70
12
|
const {
|
|
71
13
|
displayAsStatus = false,
|
|
72
14
|
displayMode,
|
|
73
15
|
value = '',
|
|
74
16
|
label = '',
|
|
17
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
75
18
|
theme = useTheme()
|
|
76
19
|
} = resolvedProps;
|
|
77
20
|
|
|
78
21
|
const variant = displayMode === 'LABELS_LEFT' ? 'inline' : 'stacked';
|
|
79
22
|
|
|
80
23
|
let val =
|
|
81
|
-
value
|
|
24
|
+
value !== '' ? (
|
|
82
25
|
<Text variant='h1' as='span'>
|
|
83
26
|
{value}
|
|
84
27
|
</Text>
|
|
@@ -116,3 +59,65 @@ const renderField = resolvedProps => {
|
|
|
116
59
|
}
|
|
117
60
|
return <FieldValueList variant={variant} fields={[{ name: label, value: val }]} />;
|
|
118
61
|
};
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
export const base{{COMPONENT_CLASS_NAME}} = () => {
|
|
65
|
+
const props = {
|
|
66
|
+
template: 'MyCo_MyComponents_NewDetailsTemplate',
|
|
67
|
+
showHighlightedData: true,
|
|
68
|
+
label: 'Test Details',
|
|
69
|
+
showLabel: true,
|
|
70
|
+
getPConnect: () => {
|
|
71
|
+
return {
|
|
72
|
+
getChildren: () => {
|
|
73
|
+
return pyReviewRaw.children;
|
|
74
|
+
},
|
|
75
|
+
getRawMetadata: () => {
|
|
76
|
+
return pyReviewRaw;
|
|
77
|
+
},
|
|
78
|
+
getInheritedProps: () => {
|
|
79
|
+
return pyReviewRaw.config.inheritedProps;
|
|
80
|
+
},
|
|
81
|
+
createComponent: config => {
|
|
82
|
+
// eslint-disable-next-line default-case
|
|
83
|
+
switch (config.config.value) {
|
|
84
|
+
case '@P .pyStatusWork':
|
|
85
|
+
return renderField(pyReviewResolved.highlightedData[0].config);
|
|
86
|
+
case '@P .pyID':
|
|
87
|
+
return renderField(pyReviewResolved.highlightedData[1].config);
|
|
88
|
+
case '@P .pxCreateDateTime':
|
|
89
|
+
return renderField(pyReviewResolved.highlightedData[2].config);
|
|
90
|
+
case '@USER .pxCreateOperator':
|
|
91
|
+
return renderField(pyReviewResolved.highlightedData[3].config);
|
|
92
|
+
case '@P .pySLADeadline':
|
|
93
|
+
return renderField(regionChildrenResolved[0]);
|
|
94
|
+
case '@P .pySLAGoal':
|
|
95
|
+
return renderField(regionChildrenResolved[1]);
|
|
96
|
+
case '@P .pySLAStartTime':
|
|
97
|
+
return renderField(regionChildrenResolved[2]);
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
setInheritedProp: () => {
|
|
101
|
+
/* nothing */
|
|
102
|
+
},
|
|
103
|
+
resolveConfigProps: () => {
|
|
104
|
+
/* nothing */
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const regionAChildren = pyReviewRaw.children[0].children.map(child => {
|
|
111
|
+
return props.getPConnect().createComponent(child);
|
|
112
|
+
});
|
|
113
|
+
const regionBChildren = pyReviewRaw.children[1].children.map(child => {
|
|
114
|
+
return props.getPConnect().createComponent(child);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
return (
|
|
118
|
+
<{{COMPONENT_CLASS_NAME}} {...props}>
|
|
119
|
+
{regionAChildren}
|
|
120
|
+
{regionBChildren}
|
|
121
|
+
</{{COMPONENT_CLASS_NAME}}>
|
|
122
|
+
);
|
|
123
|
+
};
|
|
@@ -11,51 +11,13 @@ export default {
|
|
|
11
11
|
component: {{COMPONENT_CLASS_NAME}}
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
-
const Template = args => {
|
|
15
|
-
const regionAChildren = pyReviewRaw.children[0].children.map(child => {
|
|
16
|
-
return Primary.args.getPConnect().createComponent(child);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
return <{{COMPONENT_CLASS_NAME}} {...args}>{regionAChildren}</{{COMPONENT_CLASS_NAME}}>;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export const Primary = Template.bind({});
|
|
23
|
-
|
|
24
|
-
Primary.args = {
|
|
25
|
-
NumCols: 1,
|
|
26
|
-
template: 'DefaultForm',
|
|
27
|
-
getPConnect: () => {
|
|
28
|
-
return {
|
|
29
|
-
getChildren: () => {
|
|
30
|
-
return pyReviewRaw.children;
|
|
31
|
-
},
|
|
32
|
-
createComponent: config => {
|
|
33
|
-
switch (config.config.value) {
|
|
34
|
-
case '@P .FirstName':
|
|
35
|
-
return renderField(regionChildrenResolved[0]);
|
|
36
|
-
case '@P .MiddleName':
|
|
37
|
-
return renderField(regionChildrenResolved[1]);
|
|
38
|
-
case '@P .LastName':
|
|
39
|
-
return renderField(regionChildrenResolved[2]);
|
|
40
|
-
case '@P .Email':
|
|
41
|
-
return renderField(regionChildrenResolved[3]);
|
|
42
|
-
case '@P .PhoneNumber':
|
|
43
|
-
return renderField(regionChildrenResolved[4]);
|
|
44
|
-
case '@P .ServiceDate':
|
|
45
|
-
return renderField(regionChildrenResolved[5]);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
|
|
52
14
|
const renderField = resolvedProps => {
|
|
53
15
|
const { displayMode, value = '', label = '' } = resolvedProps;
|
|
54
16
|
|
|
55
17
|
const variant = displayMode === 'LABELS_LEFT' ? 'inline' : 'stacked';
|
|
56
18
|
|
|
57
19
|
let val =
|
|
58
|
-
value
|
|
20
|
+
value !== '' ? (
|
|
59
21
|
<Text variant='h1' as='span'>
|
|
60
22
|
{value}
|
|
61
23
|
</Text>
|
|
@@ -87,3 +49,45 @@ const renderField = resolvedProps => {
|
|
|
87
49
|
}
|
|
88
50
|
return <FieldValueList variant={variant} fields={[{ name: label, value: val }]} />;
|
|
89
51
|
};
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
export const base{{COMPONENT_CLASS_NAME}} = () => {
|
|
55
|
+
const props = {
|
|
56
|
+
NumCols: 1,
|
|
57
|
+
template: 'DefaultForm',
|
|
58
|
+
getPConnect: () => {
|
|
59
|
+
return {
|
|
60
|
+
getChildren: () => {
|
|
61
|
+
return pyReviewRaw.children;
|
|
62
|
+
},
|
|
63
|
+
createComponent: config => {
|
|
64
|
+
// eslint-disable-next-line default-case
|
|
65
|
+
switch (config.config.value) {
|
|
66
|
+
case '@P .FirstName':
|
|
67
|
+
return renderField(regionChildrenResolved[0]);
|
|
68
|
+
case '@P .MiddleName':
|
|
69
|
+
return renderField(regionChildrenResolved[1]);
|
|
70
|
+
case '@P .LastName':
|
|
71
|
+
return renderField(regionChildrenResolved[2]);
|
|
72
|
+
case '@P .Email':
|
|
73
|
+
return renderField(regionChildrenResolved[3]);
|
|
74
|
+
case '@P .PhoneNumber':
|
|
75
|
+
return renderField(regionChildrenResolved[4]);
|
|
76
|
+
case '@P .ServiceDate':
|
|
77
|
+
return renderField(regionChildrenResolved[5]);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const regionAChildren = pyReviewRaw.children[0].children.map(child => {
|
|
85
|
+
return props.getPConnect().createComponent(child);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
return (
|
|
89
|
+
<>
|
|
90
|
+
<{{COMPONENT_CLASS_NAME}} {...props}>{regionAChildren}</{{COMPONENT_CLASS_NAME}}>
|
|
91
|
+
</>
|
|
92
|
+
);
|
|
93
|
+
};
|
package/src/tasks/create/templates/Constellation/Template/FORM-region/demo.stories.jsx.mustache
CHANGED
|
@@ -11,58 +11,13 @@ export default {
|
|
|
11
11
|
component: {{COMPONENT_CLASS_NAME}}
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
-
const Template = args => {
|
|
15
|
-
const regionAChildren = pyReviewRaw.children[0].children.map(child => {
|
|
16
|
-
return Primary.args.getPConnect().createComponent(child);
|
|
17
|
-
});
|
|
18
|
-
const regionBChildren = pyReviewRaw.children[1].children.map(child => {
|
|
19
|
-
return Primary.args.getPConnect().createComponent(child);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<{{COMPONENT_CLASS_NAME}} {...args}>
|
|
24
|
-
{regionAChildren}
|
|
25
|
-
{regionBChildren}
|
|
26
|
-
</{{COMPONENT_CLASS_NAME}}>
|
|
27
|
-
);
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const Primary = Template.bind({});
|
|
31
|
-
|
|
32
|
-
Primary.args = {
|
|
33
|
-
template: 'DefaultForm',
|
|
34
|
-
getPConnect: () => {
|
|
35
|
-
return {
|
|
36
|
-
getChildren: () => {
|
|
37
|
-
return pyReviewRaw.children;
|
|
38
|
-
},
|
|
39
|
-
createComponent: config => {
|
|
40
|
-
switch (config.config.value) {
|
|
41
|
-
case '@P .FirstName':
|
|
42
|
-
return renderField(regionChildrenResolved[0]);
|
|
43
|
-
case '@P .MiddleName':
|
|
44
|
-
return renderField(regionChildrenResolved[1]);
|
|
45
|
-
case '@P .LastName':
|
|
46
|
-
return renderField(regionChildrenResolved[2]);
|
|
47
|
-
case '@P .Email':
|
|
48
|
-
return renderField(regionChildrenResolved[3]);
|
|
49
|
-
case '@P .PhoneNumber':
|
|
50
|
-
return renderField(regionChildrenResolved[4]);
|
|
51
|
-
case '@P .ServiceDate':
|
|
52
|
-
return renderField(regionChildrenResolved[5]);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
|
|
59
14
|
const renderField = resolvedProps => {
|
|
60
15
|
const { displayMode, value = '', label = '' } = resolvedProps;
|
|
61
16
|
|
|
62
17
|
const variant = displayMode === 'LABELS_LEFT' ? 'inline' : 'stacked';
|
|
63
18
|
|
|
64
19
|
let val =
|
|
65
|
-
value
|
|
20
|
+
value !== '' ? (
|
|
66
21
|
<Text variant='h1' as='span'>
|
|
67
22
|
{value}
|
|
68
23
|
</Text>
|
|
@@ -98,3 +53,48 @@ const renderField = resolvedProps => {
|
|
|
98
53
|
}
|
|
99
54
|
return <FieldValueList variant={variant} fields={[{ name: label, value: val }]} />;
|
|
100
55
|
};
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
export const base{{COMPONENT_CLASS_NAME}} = () => {
|
|
59
|
+
const props = {
|
|
60
|
+
template: 'DefaultForm',
|
|
61
|
+
getPConnect: () => {
|
|
62
|
+
return {
|
|
63
|
+
getChildren: () => {
|
|
64
|
+
return pyReviewRaw.children;
|
|
65
|
+
},
|
|
66
|
+
createComponent: config => {
|
|
67
|
+
// eslint-disable-next-line default-case
|
|
68
|
+
switch (config.config.value) {
|
|
69
|
+
case '@P .FirstName':
|
|
70
|
+
return renderField(regionChildrenResolved[0]);
|
|
71
|
+
case '@P .MiddleName':
|
|
72
|
+
return renderField(regionChildrenResolved[1]);
|
|
73
|
+
case '@P .LastName':
|
|
74
|
+
return renderField(regionChildrenResolved[2]);
|
|
75
|
+
case '@P .Email':
|
|
76
|
+
return renderField(regionChildrenResolved[3]);
|
|
77
|
+
case '@P .PhoneNumber':
|
|
78
|
+
return renderField(regionChildrenResolved[4]);
|
|
79
|
+
case '@P .ServiceDate':
|
|
80
|
+
return renderField(regionChildrenResolved[5]);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const regionAChildren = pyReviewRaw.children[0].children.map(child => {
|
|
88
|
+
return props.getPConnect().createComponent(child);
|
|
89
|
+
});
|
|
90
|
+
const regionBChildren = pyReviewRaw.children[1].children.map(child => {
|
|
91
|
+
return props.getPConnect().createComponent(child);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
return (
|
|
95
|
+
<{{COMPONENT_CLASS_NAME}} {...props}>
|
|
96
|
+
{regionAChildren}
|
|
97
|
+
{regionBChildren}
|
|
98
|
+
</{{COMPONENT_CLASS_NAME}}>
|
|
99
|
+
);
|
|
100
|
+
};
|