@pareto-engineering/design-system 5.0.5 → 5.1.0
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/dist/cjs/a/Charts/AreaChart/AreaChart.js +3 -13
- package/dist/cjs/a/Charts/BarChart/BarChart.js +6 -4
- package/dist/cjs/a/Charts/Common/CustomLegend/CustomLegend.js +26 -7
- package/dist/cjs/a/Charts/Common/CustomLegend/styles.scss +41 -14
- package/dist/cjs/a/Charts/Common/CustomTooltipContent/CustomTooltipContent.js +18 -7
- package/dist/cjs/a/Charts/Common/YLabelsDropDown/YlabelsDropDown.js +3 -4
- package/dist/cjs/a/Charts/Common/YLabelsDropDown/styles.scss +7 -6
- package/dist/cjs/a/Charts/PieChart/PieChart.js +99 -0
- package/dist/cjs/a/Charts/PieChart/index.js +13 -0
- package/dist/cjs/a/Charts/PieChart/styles.scss +48 -0
- package/dist/cjs/a/Charts/index.js +8 -1
- package/dist/cjs/a/Notification/styles.scss +17 -5
- package/dist/cjs/a/index.js +6 -0
- package/dist/cjs/f/FormInput/FormInput.js +1 -1
- package/dist/cjs/f/fields/LatexPreviewInput/LatexPreviewInput.js +1 -1
- package/dist/cjs/f/fields/LatexPreviewInput/styles.scss +1 -0
- package/dist/cjs/f/fields/TextareaInput/TextareaInput.js +4 -2
- package/dist/cjs/g/FormBuilder/common/Builder/common/InputBuilder/InputBuilder.js +27 -1
- package/dist/cjs/g/FormBuilder/common/Builder/common/InputBuilder/styles.scss +15 -0
- package/dist/cjs/g/FormBuilder/common/Builder/common/Section/Section.js +6 -2
- package/dist/cjs/g/FormBuilder/common/Renderer/Renderer.js +6 -0
- package/dist/cjs/utils/applyCharacterLimit.js +75 -0
- package/dist/cjs/utils/formatting.js +10 -2
- package/dist/cjs/utils/index.js +14 -1
- package/dist/es/a/Charts/AreaChart/AreaChart.js +3 -13
- package/dist/es/a/Charts/BarChart/BarChart.js +6 -4
- package/dist/es/a/Charts/Common/CustomLegend/CustomLegend.js +38 -21
- package/dist/es/a/Charts/Common/CustomLegend/styles.scss +41 -14
- package/dist/es/a/Charts/Common/CustomTooltipContent/CustomTooltipContent.js +19 -8
- package/dist/es/a/Charts/Common/YLabelsDropDown/YlabelsDropDown.js +3 -5
- package/dist/es/a/Charts/Common/YLabelsDropDown/styles.scss +7 -6
- package/dist/es/a/Charts/PieChart/PieChart.js +89 -0
- package/dist/es/a/Charts/PieChart/index.js +1 -0
- package/dist/es/a/Charts/PieChart/styles.scss +48 -0
- package/dist/es/a/Charts/index.js +2 -1
- package/dist/es/a/Notification/styles.scss +17 -5
- package/dist/es/a/index.js +1 -1
- package/dist/es/f/FormInput/FormInput.js +1 -1
- package/dist/es/f/fields/LatexPreviewInput/LatexPreviewInput.js +1 -1
- package/dist/es/f/fields/LatexPreviewInput/styles.scss +1 -0
- package/dist/es/f/fields/TextareaInput/TextareaInput.js +4 -2
- package/dist/es/g/FormBuilder/common/Builder/common/InputBuilder/InputBuilder.js +27 -1
- package/dist/es/g/FormBuilder/common/Builder/common/InputBuilder/styles.scss +15 -0
- package/dist/es/g/FormBuilder/common/Builder/common/Section/Section.js +6 -2
- package/dist/es/g/FormBuilder/common/Renderer/Renderer.js +6 -0
- package/dist/es/utils/applyCharacterLimit.js +67 -0
- package/dist/es/utils/formatting.js +7 -0
- package/dist/es/utils/index.js +2 -1
- package/package.json +3 -3
- package/src/stories/a/AreaChart.stories.jsx +1 -1
- package/src/stories/a/BarChart.stories.jsx +1 -1
- package/src/stories/a/PieChart.stories.jsx +53 -0
- package/src/ui/a/Charts/AreaChart/AreaChart.jsx +8 -14
- package/src/ui/a/Charts/BarChart/BarChart.jsx +4 -2
- package/src/ui/a/Charts/Common/CustomLegend/CustomLegend.jsx +54 -29
- package/src/ui/a/Charts/Common/CustomLegend/styles.scss +41 -14
- package/src/ui/a/Charts/Common/CustomTooltipContent/CustomTooltipContent.jsx +25 -13
- package/src/ui/a/Charts/Common/YLabelsDropDown/YlabelsDropDown.jsx +4 -4
- package/src/ui/a/Charts/Common/YLabelsDropDown/styles.scss +7 -6
- package/src/ui/a/Charts/PieChart/PieChart.jsx +125 -0
- package/src/ui/a/Charts/PieChart/index.js +1 -0
- package/src/ui/a/Charts/PieChart/styles.scss +48 -0
- package/src/ui/a/Charts/index.js +1 -0
- package/src/ui/a/Notification/styles.scss +17 -5
- package/src/ui/a/index.js +1 -1
- package/src/ui/f/FormInput/FormInput.jsx +1 -0
- package/src/ui/f/fields/LatexPreviewInput/LatexPreviewInput.jsx +1 -0
- package/src/ui/f/fields/LatexPreviewInput/styles.scss +1 -0
- package/src/ui/f/fields/TextareaInput/TextareaInput.jsx +2 -0
- package/src/ui/g/FormBuilder/common/Builder/common/InputBuilder/InputBuilder.jsx +34 -0
- package/src/ui/g/FormBuilder/common/Builder/common/InputBuilder/styles.scss +15 -0
- package/src/ui/g/FormBuilder/common/Builder/common/Section/Section.jsx +10 -2
- package/src/ui/g/FormBuilder/common/Renderer/Renderer.jsx +5 -0
- package/src/ui/g/FormBuilder/common/Renderer/common/Section/Section.jsx +0 -1
- package/src/ui/utils/applyCharacterLimit.js +80 -0
- package/src/ui/utils/formatting.js +8 -0
- package/src/ui/utils/index.js +4 -1
- package/tests/__snapshots__/Storyshots.test.js.snap +1165 -429
|
@@ -40,17 +40,6 @@ const AreaChart = _ref => {
|
|
|
40
40
|
color: colors[yKeys.indexOf(key)]
|
|
41
41
|
}));
|
|
42
42
|
const [selectedYLabels, setSelectedYLabels] = (0, _react.useState)(allYLabels);
|
|
43
|
-
const processedData = data.map(item => {
|
|
44
|
-
const yValues = yKeys.map(key => item[key]);
|
|
45
|
-
const lowerBound = Math.min(...yValues);
|
|
46
|
-
const upperBound = Math.max(...yValues);
|
|
47
|
-
const margin = (upperBound - lowerBound) * 0.1;
|
|
48
|
-
return {
|
|
49
|
-
...item,
|
|
50
|
-
bounds: [lowerBound - margin, upperBound + margin],
|
|
51
|
-
isTimeFormat
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
43
|
const yAxisBounds = () => {
|
|
55
44
|
const yValues = data.map(item => yKeys.map(key => item[key]));
|
|
56
45
|
const min = Math.min(...yValues.flat());
|
|
@@ -75,7 +64,7 @@ const AreaChart = _ref => {
|
|
|
75
64
|
width: width,
|
|
76
65
|
height: height
|
|
77
66
|
}, /*#__PURE__*/React.createElement(_recharts.AreaChart, {
|
|
78
|
-
data:
|
|
67
|
+
data: data
|
|
79
68
|
}, /*#__PURE__*/React.createElement(_recharts.CartesianGrid, {
|
|
80
69
|
strokeDasharray: "3 3"
|
|
81
70
|
}), /*#__PURE__*/React.createElement(_recharts.XAxis, {
|
|
@@ -116,7 +105,8 @@ const AreaChart = _ref => {
|
|
|
116
105
|
}
|
|
117
106
|
}), /*#__PURE__*/React.createElement(_recharts.Tooltip, {
|
|
118
107
|
content: /*#__PURE__*/React.createElement(_Common.CustomTooltipContent, {
|
|
119
|
-
|
|
108
|
+
dateFormat: dateFormat,
|
|
109
|
+
isTimeFormat: isTimeFormat
|
|
120
110
|
})
|
|
121
111
|
}), filled && /*#__PURE__*/React.createElement(_recharts.Area, {
|
|
122
112
|
id: "bounds",
|
|
@@ -30,8 +30,9 @@ const BarChart = _ref => {
|
|
|
30
30
|
yLabel,
|
|
31
31
|
colors,
|
|
32
32
|
height,
|
|
33
|
-
width
|
|
34
|
-
|
|
33
|
+
width,
|
|
34
|
+
isTimeFormat,
|
|
35
|
+
capitalizedLegend
|
|
35
36
|
} = _ref;
|
|
36
37
|
const allYLabels = yKeys.map(key => ({
|
|
37
38
|
label: key,
|
|
@@ -49,7 +50,8 @@ const BarChart = _ref => {
|
|
|
49
50
|
setSelectedYLabels: setSelectedYLabels
|
|
50
51
|
})), /*#__PURE__*/React.createElement(_Common.CustomLegend, {
|
|
51
52
|
colorsArray: selectedYLabels.map(item => item.color),
|
|
52
|
-
yKeysArray: selectedYLabels.map(item => item.label)
|
|
53
|
+
yKeysArray: selectedYLabels.map(item => item.label),
|
|
54
|
+
capitalizedLegend: capitalizedLegend
|
|
53
55
|
}), /*#__PURE__*/React.createElement(_recharts.ResponsiveContainer, {
|
|
54
56
|
width: width,
|
|
55
57
|
height: height
|
|
@@ -79,7 +81,7 @@ const BarChart = _ref => {
|
|
|
79
81
|
tickLine: false
|
|
80
82
|
}), /*#__PURE__*/React.createElement(_recharts.Tooltip, {
|
|
81
83
|
content: /*#__PURE__*/React.createElement(_Common.CustomTooltipContent, {
|
|
82
|
-
|
|
84
|
+
isTimeFormat: isTimeFormat
|
|
83
85
|
})
|
|
84
86
|
}), selectedYLabels.map(key => /*#__PURE__*/React.createElement(_recharts.Bar, {
|
|
85
87
|
stackId: "a",
|
|
@@ -7,6 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
|
|
10
|
+
var _utils = require("../../../../utils");
|
|
10
11
|
require("./styles.scss");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
@@ -19,19 +20,19 @@ const CustomLegend = _ref => {
|
|
|
19
20
|
className: userClassName,
|
|
20
21
|
colorsArray,
|
|
21
22
|
yKeysArray,
|
|
23
|
+
orientation,
|
|
24
|
+
getLegendItemTitle,
|
|
25
|
+
getLegendItemSubtitle,
|
|
22
26
|
capitalizedLegend
|
|
23
27
|
} = _ref;
|
|
24
|
-
const capitalizeWord = word => {
|
|
25
|
-
if (!capitalizedLegend) return word;
|
|
26
|
-
const wordsToCapitalize = ['average', 'best', 'worst'];
|
|
27
|
-
return word.split(' ').map(part => wordsToCapitalize.includes(part.toLowerCase()) ? part.charAt(0).toUpperCase() + part.slice(1).toLowerCase() : part).join(' ');
|
|
28
|
-
};
|
|
29
28
|
return /*#__PURE__*/React.createElement("div", {
|
|
30
29
|
id: id,
|
|
31
|
-
className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' ')
|
|
30
|
+
className: [baseClassName, componentClassName, userClassName, orientation].filter(e => e).join(' ')
|
|
32
31
|
}, yKeysArray.map((key, index) => /*#__PURE__*/React.createElement("div", {
|
|
33
32
|
key: key,
|
|
34
33
|
className: "item"
|
|
34
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
35
|
+
className: "title"
|
|
35
36
|
}, /*#__PURE__*/React.createElement("span", {
|
|
36
37
|
className: "dot",
|
|
37
38
|
style: {
|
|
@@ -39,7 +40,9 @@ const CustomLegend = _ref => {
|
|
|
39
40
|
}
|
|
40
41
|
}), /*#__PURE__*/React.createElement("span", {
|
|
41
42
|
className: "text"
|
|
42
|
-
},
|
|
43
|
+
}, capitalizedLegend ? (0, _utils.snakeCaseToTitleCase)(getLegendItemTitle(key)) : getLegendItemTitle(key))), /*#__PURE__*/React.createElement("span", {
|
|
44
|
+
className: "sub-title"
|
|
45
|
+
}, getLegendItemSubtitle(key)))));
|
|
43
46
|
};
|
|
44
47
|
CustomLegend.propTypes = {
|
|
45
48
|
/**
|
|
@@ -58,12 +61,28 @@ CustomLegend.propTypes = {
|
|
|
58
61
|
* Array of keys for the y-axis data.
|
|
59
62
|
*/
|
|
60
63
|
yKeysArray: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
64
|
+
/**
|
|
65
|
+
* The orientation of the Legend
|
|
66
|
+
*/
|
|
67
|
+
orientation: _propTypes.default.oneOf(['vertical', 'horizontal']),
|
|
68
|
+
/**
|
|
69
|
+
* The function to get the legendItemKey
|
|
70
|
+
*/
|
|
71
|
+
getLegendItemTitle: _propTypes.default.func,
|
|
72
|
+
/**
|
|
73
|
+
* The function to get legend children
|
|
74
|
+
*/
|
|
75
|
+
getLegendItemSubtitle: _propTypes.default.func,
|
|
61
76
|
/**
|
|
62
77
|
* Flag on whether to capitalize legend keys
|
|
63
78
|
*/
|
|
64
79
|
capitalizedLegend: _propTypes.default.bool
|
|
65
80
|
};
|
|
66
81
|
CustomLegend.defaultProps = {
|
|
82
|
+
orientation: 'horizontal',
|
|
83
|
+
getLegendItemTitle: key => key,
|
|
84
|
+
/* eslint-disable no-unused-vars */
|
|
85
|
+
getLegendItemSubtitle: () => {},
|
|
67
86
|
capitalizedLegend: false
|
|
68
87
|
};
|
|
69
88
|
var _default = exports.default = CustomLegend;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
@use "@pareto-engineering/bem";
|
|
2
2
|
|
|
3
3
|
$default-padding: 1rem;
|
|
4
|
+
$default-margin: 1rem;
|
|
4
5
|
$default-text-font-size: calc(var(--s-1) * 1rem);
|
|
5
6
|
$default-border-radius: .25rem;
|
|
6
7
|
$default-legend-gap: .625rem;
|
|
@@ -8,33 +9,59 @@ $default-legend-padding: calc($default-padding * .125) calc($default-padding * .
|
|
|
8
9
|
$default-legend-dot-width: .5rem;
|
|
9
10
|
$default-legend-dot-height: .5rem;
|
|
10
11
|
$default-legend-dot-margin-right: .3125rem;
|
|
12
|
+
$default-box-shadow: 0 4px 16px 0 var(--soft-shadow);
|
|
11
13
|
|
|
12
14
|
.#{bem.$base} {
|
|
13
15
|
&.custom-legend {
|
|
14
|
-
display: flex;
|
|
15
16
|
gap: $default-legend-gap;
|
|
16
17
|
justify-content: flex-end;
|
|
17
18
|
padding-bottom: $default-padding;
|
|
18
19
|
padding-right: calc($default-padding * .25);
|
|
19
20
|
|
|
21
|
+
&.vertical {
|
|
22
|
+
display: block;
|
|
23
|
+
margin-right: calc($default-margin * 2);
|
|
24
|
+
min-width: fit-content;
|
|
25
|
+
|
|
26
|
+
.item {
|
|
27
|
+
box-shadow: $default-box-shadow;
|
|
28
|
+
padding-top: $default-padding;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&.horizontal {
|
|
33
|
+
display: flex;
|
|
34
|
+
}
|
|
35
|
+
|
|
20
36
|
.item {
|
|
21
|
-
align-items: center;
|
|
22
37
|
border-radius: $default-border-radius;
|
|
23
|
-
display: flex;
|
|
24
38
|
padding: $default-legend-padding;
|
|
25
|
-
}
|
|
26
39
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
.title {
|
|
41
|
+
align-items: center;
|
|
42
|
+
display: flex;
|
|
43
|
+
|
|
44
|
+
.dot {
|
|
45
|
+
border-radius: 50%;
|
|
46
|
+
display: inline-block;
|
|
47
|
+
height: $default-legend-dot-height;
|
|
48
|
+
margin-right: $default-legend-dot-margin-right;
|
|
49
|
+
width: $default-legend-dot-width;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.text {
|
|
53
|
+
color: var(--paragraph);
|
|
54
|
+
font-size: calc($default-text-font-size * .75);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
34
57
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
58
|
+
.sub-title {
|
|
59
|
+
color: var(--heading);
|
|
60
|
+
display: flex;
|
|
61
|
+
font-size: calc($default-text-font-size * 1.2);
|
|
62
|
+
font-weight: 500;
|
|
63
|
+
justify-content: flex-end;
|
|
64
|
+
}
|
|
38
65
|
}
|
|
39
66
|
}
|
|
40
67
|
}
|
|
@@ -18,13 +18,23 @@ const CustomTooltipContent = _ref => {
|
|
|
18
18
|
let {
|
|
19
19
|
id,
|
|
20
20
|
className: userClassName,
|
|
21
|
-
xLabel,
|
|
22
21
|
dateFormat,
|
|
23
22
|
isTimeFormat,
|
|
23
|
+
isDateValue,
|
|
24
24
|
active,
|
|
25
25
|
payload,
|
|
26
26
|
label
|
|
27
27
|
} = _ref;
|
|
28
|
+
const formatLabelValue = value => {
|
|
29
|
+
if (isTimeFormat) {
|
|
30
|
+
return (0, _utils.formatTime)(value);
|
|
31
|
+
}
|
|
32
|
+
if (typeof value === 'number') {
|
|
33
|
+
if (Number.isInteger(value)) return value;
|
|
34
|
+
return value.toFixed(2);
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
};
|
|
28
38
|
if (active && payload && payload.length) {
|
|
29
39
|
const newPayload = payload.filter(item => item.name !== 'bounds');
|
|
30
40
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -32,14 +42,14 @@ const CustomTooltipContent = _ref => {
|
|
|
32
42
|
className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' ')
|
|
33
43
|
}, /*#__PURE__*/React.createElement("p", {
|
|
34
44
|
className: "label"
|
|
35
|
-
},
|
|
45
|
+
}, isDateValue ? (0, _utils.formatDate)(label, dateFormat) : label), newPayload.map(entry => /*#__PURE__*/React.createElement("p", {
|
|
36
46
|
className: "label",
|
|
37
47
|
key: `${entry.name}`,
|
|
38
48
|
style: {
|
|
39
49
|
color: entry.color,
|
|
40
50
|
textTransform: 'capitalize'
|
|
41
51
|
}
|
|
42
|
-
}, `${
|
|
52
|
+
}, `${(0, _utils.snakeCaseToTitleCase)(entry.name)}: ${formatLabelValue(entry.value)}`)));
|
|
43
53
|
}
|
|
44
54
|
return null;
|
|
45
55
|
};
|
|
@@ -52,10 +62,6 @@ CustomTooltipContent.propTypes = {
|
|
|
52
62
|
* Additional class names for the dropdown component.
|
|
53
63
|
*/
|
|
54
64
|
className: _propTypes.default.string,
|
|
55
|
-
/**
|
|
56
|
-
* The label for the x-axis.
|
|
57
|
-
*/
|
|
58
|
-
xLabel: _propTypes.default.string,
|
|
59
65
|
/**
|
|
60
66
|
* Flag on whether it is a timeformat or not
|
|
61
67
|
*/
|
|
@@ -64,6 +70,10 @@ CustomTooltipContent.propTypes = {
|
|
|
64
70
|
* The type of format for the datetime value
|
|
65
71
|
*/
|
|
66
72
|
dateFormat: _propTypes.default.oneOf(Object.values(_utils.DATE_FORMATS)),
|
|
73
|
+
/**
|
|
74
|
+
* Flag on whether the label is a date value or not
|
|
75
|
+
*/
|
|
76
|
+
isDateValue: _propTypes.default.bool,
|
|
67
77
|
/**
|
|
68
78
|
* If set true, the tooltip is displayed.
|
|
69
79
|
* If set false, the tooltip is hidden, usually calculated internally.
|
|
@@ -81,6 +91,7 @@ CustomTooltipContent.propTypes = {
|
|
|
81
91
|
};
|
|
82
92
|
CustomTooltipContent.defaultProps = {
|
|
83
93
|
isTimeFormat: false,
|
|
94
|
+
isDateValue: true,
|
|
84
95
|
dateFormat: _utils.DATE_FORMATS.HUMAN_READABLE
|
|
85
96
|
};
|
|
86
97
|
var _default = exports.default = CustomTooltipContent;
|
|
@@ -7,14 +7,13 @@ exports.default = void 0;
|
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
|
|
10
|
+
var _utils = require("../../../../utils");
|
|
10
11
|
require("./styles.scss");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
15
|
// DropdownStatus.js
|
|
15
16
|
|
|
16
|
-
// Local Definitions
|
|
17
|
-
|
|
18
17
|
const baseClassName = _exports.default.base;
|
|
19
18
|
const componentClassName = 'y-labels-dropdown';
|
|
20
19
|
const YLabelsDropDown = _ref => {
|
|
@@ -56,7 +55,7 @@ const YLabelsDropDown = _ref => {
|
|
|
56
55
|
style: {
|
|
57
56
|
backgroundColor: item.color
|
|
58
57
|
}
|
|
59
|
-
}), item.label, selectedYLabels.some(label => label.label === item.label) && /*#__PURE__*/React.createElement("span", {
|
|
58
|
+
}), (0, _utils.snakeCaseToTitleCase)(item.label), selectedYLabels.some(label => label.label === item.label) && /*#__PURE__*/React.createElement("span", {
|
|
60
59
|
className: "icon checkmark"
|
|
61
60
|
}, "I")))));
|
|
62
61
|
};
|
|
@@ -93,6 +92,6 @@ YLabelsDropDown.propTypes = {
|
|
|
93
92
|
}))
|
|
94
93
|
};
|
|
95
94
|
YLabelsDropDown.defaultProps = {
|
|
96
|
-
placeholder: '
|
|
95
|
+
placeholder: 'Select Item'
|
|
97
96
|
};
|
|
98
97
|
var _default = exports.default = YLabelsDropDown;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
@use "@pareto-engineering/bem";
|
|
2
2
|
|
|
3
3
|
$default-margin: 1rem;
|
|
4
|
-
$default-border
|
|
4
|
+
$default-border: var(--theme-default-input-border);
|
|
5
|
+
$default-border-radius: var(--theme-default-input-border-radius);
|
|
5
6
|
$default-padding: 1rem;
|
|
6
7
|
$default-width: 15rem;
|
|
7
8
|
$default-box-shadow: 0 .25rem .75rem var(--ui-lines);
|
|
@@ -16,9 +17,9 @@ $default-checkmark-font-size: calc(var(--s-1) * .75rem);
|
|
|
16
17
|
|
|
17
18
|
.dropdown-button {
|
|
18
19
|
align-items: center;
|
|
19
|
-
background-color: var(--
|
|
20
|
-
border:
|
|
21
|
-
border-radius: $default-border-radius;
|
|
20
|
+
background-color: var(--background-far);
|
|
21
|
+
border: $default-border;
|
|
22
|
+
border-radius: calc($default-border-radius / 2);
|
|
22
23
|
color: var(--hard-paragraph);
|
|
23
24
|
cursor: pointer;
|
|
24
25
|
display: flex;
|
|
@@ -53,8 +54,8 @@ $default-checkmark-font-size: calc(var(--s-1) * .75rem);
|
|
|
53
54
|
|
|
54
55
|
.dropdown-item {
|
|
55
56
|
align-items: center;
|
|
56
|
-
border-radius: $default-border-radius;
|
|
57
|
-
color: var(--
|
|
57
|
+
border-radius: calc($default-border-radius / 2);
|
|
58
|
+
color: var(--paragraph);
|
|
58
59
|
cursor: pointer;
|
|
59
60
|
display: flex;
|
|
60
61
|
margin: calc($default-margin * .125);
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _recharts = require("recharts");
|
|
10
|
+
var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
|
|
11
|
+
var _Common = require("../Common");
|
|
12
|
+
require("./styles.scss");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
const baseClassName = _exports.default.base;
|
|
17
|
+
const componentClassName = 'pie-chart';
|
|
18
|
+
const PieChart = _ref => {
|
|
19
|
+
let {
|
|
20
|
+
id,
|
|
21
|
+
className: userClassName,
|
|
22
|
+
data,
|
|
23
|
+
title,
|
|
24
|
+
valueKey,
|
|
25
|
+
labelKey,
|
|
26
|
+
colors,
|
|
27
|
+
height,
|
|
28
|
+
width,
|
|
29
|
+
innerRadius,
|
|
30
|
+
outerRadius
|
|
31
|
+
} = _ref;
|
|
32
|
+
const total = data.reduce((sum, item) => sum + item[valueKey], 0);
|
|
33
|
+
const formattedData = data.map(item => ({
|
|
34
|
+
...item,
|
|
35
|
+
label: item[labelKey],
|
|
36
|
+
color: colors[data.indexOf(item)],
|
|
37
|
+
percentage: (item[valueKey] / total * 100).toFixed(0)
|
|
38
|
+
}));
|
|
39
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
40
|
+
id: id,
|
|
41
|
+
className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' ')
|
|
42
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
43
|
+
className: "chart-header"
|
|
44
|
+
}, /*#__PURE__*/React.createElement("h3", null, title)), /*#__PURE__*/React.createElement("div", {
|
|
45
|
+
className: "chart-content"
|
|
46
|
+
}, /*#__PURE__*/React.createElement(_recharts.ResponsiveContainer, {
|
|
47
|
+
width: width,
|
|
48
|
+
height: height
|
|
49
|
+
}, /*#__PURE__*/React.createElement(_recharts.PieChart, null, /*#__PURE__*/React.createElement(_recharts.Pie, {
|
|
50
|
+
data: formattedData,
|
|
51
|
+
dataKey: valueKey,
|
|
52
|
+
nameKey: labelKey,
|
|
53
|
+
cx: "50%",
|
|
54
|
+
cy: "50%",
|
|
55
|
+
innerRadius: innerRadius,
|
|
56
|
+
outerRadius: outerRadius,
|
|
57
|
+
label: false,
|
|
58
|
+
paddingAngle: 0
|
|
59
|
+
}, formattedData.map((entry, index) => /*#__PURE__*/React.createElement(_recharts.Cell, {
|
|
60
|
+
key: entry[labelKey],
|
|
61
|
+
fill: colors[index],
|
|
62
|
+
strokeWidth: 0
|
|
63
|
+
}))), /*#__PURE__*/React.createElement(_recharts.Tooltip, {
|
|
64
|
+
content: /*#__PURE__*/React.createElement(_Common.CustomTooltipContent, {
|
|
65
|
+
isDateValue: false
|
|
66
|
+
})
|
|
67
|
+
}))), /*#__PURE__*/React.createElement(_Common.CustomLegend, {
|
|
68
|
+
colorsArray: colors,
|
|
69
|
+
yKeysArray: formattedData,
|
|
70
|
+
capitalizedLegend: true,
|
|
71
|
+
orientation: "vertical",
|
|
72
|
+
getLegendItemTitle: entry => entry[labelKey],
|
|
73
|
+
getLegendItemSubtitle: entry => entry[valueKey]
|
|
74
|
+
})));
|
|
75
|
+
};
|
|
76
|
+
PieChart.propTypes = {
|
|
77
|
+
id: _propTypes.default.string,
|
|
78
|
+
className: _propTypes.default.string,
|
|
79
|
+
data: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
80
|
+
[_propTypes.default.string]: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])
|
|
81
|
+
})).isRequired,
|
|
82
|
+
title: _propTypes.default.string.isRequired,
|
|
83
|
+
valueKey: _propTypes.default.string.isRequired,
|
|
84
|
+
labelKey: _propTypes.default.string.isRequired,
|
|
85
|
+
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
86
|
+
height: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
87
|
+
width: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
88
|
+
innerRadius: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
89
|
+
outerRadius: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])
|
|
90
|
+
};
|
|
91
|
+
PieChart.defaultProps = {
|
|
92
|
+
id: undefined,
|
|
93
|
+
className: undefined,
|
|
94
|
+
width: '100%',
|
|
95
|
+
height: 300,
|
|
96
|
+
innerRadius: '0%',
|
|
97
|
+
outerRadius: '100%'
|
|
98
|
+
};
|
|
99
|
+
var _default = exports.default = PieChart;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "PieChart", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _PieChart.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _PieChart = _interopRequireDefault(require("./PieChart"));
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
@use "@pareto-engineering/bem";
|
|
2
|
+
|
|
3
|
+
$default-margin: 1rem;
|
|
4
|
+
$default-padding: 1rem;
|
|
5
|
+
$default-box-shadow: 0 .25rem .75rem var(--ui-lines);
|
|
6
|
+
$default-text-font-size: calc(var(--s-1) * 1rem);
|
|
7
|
+
|
|
8
|
+
.#{bem.$base} {
|
|
9
|
+
&.pie-chart {
|
|
10
|
+
background-color: var(--background-far);
|
|
11
|
+
border-radius: var(--theme-default-border-radius);
|
|
12
|
+
box-shadow: $default-box-shadow;
|
|
13
|
+
margin: $default-margin 0;
|
|
14
|
+
padding: $default-padding;
|
|
15
|
+
|
|
16
|
+
.chart-header {
|
|
17
|
+
align-items: center;
|
|
18
|
+
display: flex;
|
|
19
|
+
justify-content: space-between;
|
|
20
|
+
margin-bottom: $default-margin;
|
|
21
|
+
|
|
22
|
+
h3 {
|
|
23
|
+
color: var(--subtitle);
|
|
24
|
+
margin: calc($default-margin / 5);
|
|
25
|
+
text-align: left;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.chart-content {
|
|
30
|
+
align-items: flex-start;
|
|
31
|
+
display: flex;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.recharts-wrapper {
|
|
35
|
+
.recharts-surface {
|
|
36
|
+
.recharts-text {
|
|
37
|
+
fill: var(--soft-paragraph);
|
|
38
|
+
font-size: calc($default-text-font-size * .75);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.recharts-text.recharts-label {
|
|
42
|
+
fill: var(--paragraph);
|
|
43
|
+
font-size: $default-text-font-size;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -15,5 +15,12 @@ Object.defineProperty(exports, "BarChart", {
|
|
|
15
15
|
return _BarChart.BarChart;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "PieChart", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _PieChart.PieChart;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
var _AreaChart = require("./AreaChart");
|
|
19
|
-
var _BarChart = require("./BarChart");
|
|
25
|
+
var _BarChart = require("./BarChart");
|
|
26
|
+
var _PieChart = require("./PieChart");
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
@use "@pareto-engineering/styles/src/mixins";
|
|
5
5
|
@use "@pareto-engineering/styles/src/globals" as *;
|
|
6
6
|
|
|
7
|
+
$default-border: 1px solid var(--x);
|
|
7
8
|
$default-padding: 1rem;
|
|
8
9
|
$default-margin: 1rem;
|
|
9
10
|
$default-border-radius: 1.5rem;
|
|
@@ -12,10 +13,11 @@ $default-height: var(--notification-height, 5rem);
|
|
|
12
13
|
|
|
13
14
|
.#{bem.$base}.notification {
|
|
14
15
|
align-items: center;
|
|
15
|
-
background-color: var(--
|
|
16
|
+
background-color: var(--background-far);
|
|
17
|
+
border: $default-border;
|
|
16
18
|
border-radius: $default-border-radius;
|
|
17
19
|
bottom: 0;
|
|
18
|
-
color: var(--
|
|
20
|
+
color: var(--paragraph);
|
|
19
21
|
display: flex;
|
|
20
22
|
justify-content: space-between;
|
|
21
23
|
margin-bottom: $default-margin;
|
|
@@ -31,8 +33,16 @@ $default-height: var(--notification-height, 5rem);
|
|
|
31
33
|
> .message-container {
|
|
32
34
|
align-items: center;
|
|
33
35
|
display: flex;
|
|
36
|
+
gap: $default-padding;
|
|
34
37
|
overflow: auto;
|
|
35
38
|
|
|
39
|
+
> .icon {
|
|
40
|
+
background-color: var(--x);
|
|
41
|
+
border-radius: 50%;
|
|
42
|
+
color: var(--white);
|
|
43
|
+
padding: calc($default-padding / 2);
|
|
44
|
+
}
|
|
45
|
+
|
|
36
46
|
> .message {
|
|
37
47
|
font-size: calc(var(--s0) * 1rem);
|
|
38
48
|
margin-left: calc($default-margin / 2);
|
|
@@ -44,12 +54,14 @@ $default-height: var(--notification-height, 5rem);
|
|
|
44
54
|
}
|
|
45
55
|
|
|
46
56
|
.#{bem.$base}.button {
|
|
57
|
+
background-color: transparent;
|
|
58
|
+
color: var(--paragraph);
|
|
47
59
|
padding: calc($default-padding / 2);
|
|
48
60
|
|
|
49
|
-
&:focus
|
|
61
|
+
&:focus,
|
|
62
|
+
&:hover {
|
|
50
63
|
background-color: transparent;
|
|
64
|
+
color: var(--hard-paragraph);
|
|
51
65
|
}
|
|
52
66
|
}
|
|
53
67
|
}
|
|
54
|
-
|
|
55
|
-
|
package/dist/cjs/a/index.js
CHANGED
|
@@ -123,6 +123,12 @@ Object.defineProperty(exports, "People", {
|
|
|
123
123
|
return _People.People;
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
|
+
Object.defineProperty(exports, "PieChart", {
|
|
127
|
+
enumerable: true,
|
|
128
|
+
get: function () {
|
|
129
|
+
return _Charts.PieChart;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
126
132
|
Object.defineProperty(exports, "Popover", {
|
|
127
133
|
enumerable: true,
|
|
128
134
|
get: function () {
|
|
@@ -30,7 +30,7 @@ const FormInput = _ref => {
|
|
|
30
30
|
disabled,
|
|
31
31
|
...otherProps
|
|
32
32
|
} = _ref;
|
|
33
|
-
const newClassName = [className, componentClassName].filter(Boolean).join(' ');
|
|
33
|
+
const newClassName = [className, componentClassName, otherProps.hasCharacterLimit && otherProps.maxLength && `limit-character-count-${otherProps.maxLength}`].filter(Boolean).join(' ');
|
|
34
34
|
if (type === 'textarea') {
|
|
35
35
|
return /*#__PURE__*/React.createElement(_fields.TextareaInput, _extends({
|
|
36
36
|
className: newClassName,
|
|
@@ -42,7 +42,7 @@ const LatexPreviewInput = _ref => {
|
|
|
42
42
|
const LatexPreview = (0, _react.useMemo)(() => (0, _convertLatexToHtml.default)(values[name]), [values[name]]);
|
|
43
43
|
return /*#__PURE__*/React.createElement("div", {
|
|
44
44
|
id: id,
|
|
45
|
-
className: [baseClassName, componentClassName, userClassName, 'form-input'].filter(e => e).join(' '),
|
|
45
|
+
className: [baseClassName, componentClassName, className, userClassName, 'form-input'].filter(e => e).join(' '),
|
|
46
46
|
style: style
|
|
47
47
|
}, /*#__PURE__*/React.createElement(_TextareaInput.TextareaInput, _extends({
|
|
48
48
|
className: "preview-child",
|
|
@@ -37,7 +37,8 @@ const TextareaInput = _ref => {
|
|
|
37
37
|
disabled,
|
|
38
38
|
placeholder,
|
|
39
39
|
autoComplete,
|
|
40
|
-
resize
|
|
40
|
+
resize,
|
|
41
|
+
maxLength
|
|
41
42
|
// ...otherProps
|
|
42
43
|
} = _ref;
|
|
43
44
|
const [field] = (0, _formik.useField)({
|
|
@@ -62,7 +63,8 @@ const TextareaInput = _ref => {
|
|
|
62
63
|
placeholder: placeholder,
|
|
63
64
|
rows: rows,
|
|
64
65
|
disabled: disabled,
|
|
65
|
-
autoComplete: autoComplete
|
|
66
|
+
autoComplete: autoComplete,
|
|
67
|
+
maxLength: maxLength
|
|
66
68
|
})), /*#__PURE__*/React.createElement(_common.FormDescription, {
|
|
67
69
|
className: "s-1",
|
|
68
70
|
description: description,
|