@pareto-engineering/design-system 5.1.3 → 5.2.1

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.
Files changed (35) hide show
  1. package/dist/cjs/a/Charts/AreaChart/AreaChart.js +1 -0
  2. package/dist/cjs/a/Charts/BarChart/BarChart.js +1 -0
  3. package/dist/cjs/a/Charts/Common/CustomLegend/CustomLegend.js +6 -2
  4. package/dist/cjs/a/Charts/Common/CustomLegend/styles.scss +10 -2
  5. package/dist/cjs/a/Charts/Common/CustomTooltipContent/CustomTooltipContent.js +44 -12
  6. package/dist/cjs/a/Charts/Common/CustomTooltipContent/styles.scss +4 -0
  7. package/dist/cjs/a/Charts/PieChart/PieChart.js +21 -3
  8. package/dist/cjs/a/Charts/PieChart/styles.scss +88 -0
  9. package/dist/cjs/a/HamburgerButton/styles.scss +151 -9
  10. package/dist/cjs/a/XMLEditor/XMLEditor.js +4 -1
  11. package/dist/cjs/f/fields/EditorInput/EditorInput.js +8 -1
  12. package/dist/es/a/Charts/AreaChart/AreaChart.js +1 -0
  13. package/dist/es/a/Charts/BarChart/BarChart.js +1 -0
  14. package/dist/es/a/Charts/Common/CustomLegend/CustomLegend.js +6 -2
  15. package/dist/es/a/Charts/Common/CustomLegend/styles.scss +10 -2
  16. package/dist/es/a/Charts/Common/CustomTooltipContent/CustomTooltipContent.js +44 -12
  17. package/dist/es/a/Charts/Common/CustomTooltipContent/styles.scss +4 -0
  18. package/dist/es/a/Charts/PieChart/PieChart.js +21 -3
  19. package/dist/es/a/Charts/PieChart/styles.scss +88 -0
  20. package/dist/es/a/HamburgerButton/styles.scss +151 -9
  21. package/dist/es/a/XMLEditor/XMLEditor.js +6 -3
  22. package/dist/es/f/fields/EditorInput/EditorInput.js +8 -1
  23. package/package.json +6 -5
  24. package/src/ui/a/Charts/AreaChart/AreaChart.jsx +1 -0
  25. package/src/ui/a/Charts/BarChart/BarChart.jsx +1 -0
  26. package/src/ui/a/Charts/Common/CustomLegend/CustomLegend.jsx +11 -3
  27. package/src/ui/a/Charts/Common/CustomLegend/styles.scss +10 -2
  28. package/src/ui/a/Charts/Common/CustomTooltipContent/CustomTooltipContent.jsx +42 -5
  29. package/src/ui/a/Charts/Common/CustomTooltipContent/styles.scss +4 -0
  30. package/src/ui/a/Charts/PieChart/PieChart.jsx +19 -2
  31. package/src/ui/a/Charts/PieChart/styles.scss +88 -0
  32. package/src/ui/a/HamburgerButton/styles.scss +151 -9
  33. package/src/ui/a/XMLEditor/XMLEditor.jsx +15 -2
  34. package/src/ui/f/fields/EditorInput/EditorInput.jsx +7 -0
  35. package/tests/__snapshots__/Storyshots.test.js.snap +426 -159
@@ -57,6 +57,7 @@ const AreaChart = _ref => {
57
57
  selectedYLabels: selectedYLabels,
58
58
  setSelectedYLabels: setSelectedYLabels
59
59
  })), /*#__PURE__*/React.createElement(_Common.CustomLegend, {
60
+ key: id,
60
61
  colorsArray: colors,
61
62
  yKeysArray: yKeys,
62
63
  capitalizedLegend: capitalizedLegend
@@ -49,6 +49,7 @@ const BarChart = _ref => {
49
49
  selectedYLabels: selectedYLabels,
50
50
  setSelectedYLabels: setSelectedYLabels
51
51
  })), /*#__PURE__*/React.createElement(_Common.CustomLegend, {
52
+ key: id,
52
53
  colorsArray: selectedYLabels.map(item => item.color),
53
54
  yKeysArray: selectedYLabels.map(item => item.label),
54
55
  capitalizedLegend: capitalizedLegend
@@ -40,9 +40,13 @@ const CustomLegend = _ref => {
40
40
  }
41
41
  }), /*#__PURE__*/React.createElement("span", {
42
42
  className: "text"
43
- }, capitalizedLegend ? (0, _utils.snakeCaseToTitleCase)(getLegendItemTitle(key)) : getLegendItemTitle(key))), /*#__PURE__*/React.createElement("span", {
43
+ }, capitalizedLegend ? (0, _utils.snakeCaseToTitleCase)(getLegendItemTitle(key)) : getLegendItemTitle(key))), /*#__PURE__*/React.createElement("div", {
44
+ className: "sub-title-percentage-container"
45
+ }, /*#__PURE__*/React.createElement("span", {
44
46
  className: "sub-title"
45
- }, getLegendItemSubtitle(key)))));
47
+ }, getLegendItemSubtitle(key)), key.percentage && /*#__PURE__*/React.createElement("span", {
48
+ className: "percentage-title"
49
+ }, `${key.percentage}%`)))));
46
50
  };
47
51
  CustomLegend.propTypes = {
48
52
  /**
@@ -24,7 +24,6 @@ $default-box-shadow: 0 4px 16px 0 var(--soft-shadow);
24
24
  min-width: fit-content;
25
25
 
26
26
  .item {
27
- box-shadow: $default-box-shadow;
28
27
  padding-top: $default-padding;
29
28
  }
30
29
  }
@@ -55,12 +54,21 @@ $default-box-shadow: 0 4px 16px 0 var(--soft-shadow);
55
54
  }
56
55
  }
57
56
 
57
+
58
+
58
59
  .sub-title {
59
60
  color: var(--heading);
60
61
  display: flex;
61
62
  font-size: calc($default-text-font-size * 1.2);
62
63
  font-weight: 500;
63
- justify-content: flex-end;
64
+ justify-content: flex-start;
65
+ margin-left: 1rem;
66
+ }
67
+
68
+ .percentage-title {
69
+ color: var(--paragraph);
70
+ font-size: calc($default-text-font-size * .75);
71
+ justify-content: flex-start;
64
72
  }
65
73
  }
66
74
  }
@@ -23,7 +23,8 @@ const CustomTooltipContent = _ref => {
23
23
  isDateValue,
24
24
  active,
25
25
  payload,
26
- label
26
+ label,
27
+ isPieChart
27
28
  } = _ref;
28
29
  const formatLabelValue = value => {
29
30
  if (isTimeFormat) {
@@ -35,21 +36,47 @@ const CustomTooltipContent = _ref => {
35
36
  }
36
37
  return value;
37
38
  };
38
- if (active && payload && payload.length) {
39
- const newPayload = payload.filter(item => item.name !== 'bounds');
40
- return /*#__PURE__*/React.createElement("div", {
41
- id: id,
42
- className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' ')
43
- }, /*#__PURE__*/React.createElement("p", {
44
- className: "label"
45
- }, isDateValue ? (0, _utils.formatDate)(label, dateFormat) : label), newPayload.map(entry => /*#__PURE__*/React.createElement("p", {
39
+ const renderContent = entry => {
40
+ if (isPieChart) {
41
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", null, "Submissions"), /*#__PURE__*/React.createElement("div", {
42
+ className: "pie-chart-label"
43
+ }, /*#__PURE__*/React.createElement("div", {
44
+ className: "status"
45
+ }, /*#__PURE__*/React.createElement("span", {
46
+ className: "dot",
47
+ style: {
48
+ backgroundColor: entry?.payload?.color
49
+ }
50
+ }), /*#__PURE__*/React.createElement("p", {
51
+ className: "label",
52
+ key: `${entry.name}`,
53
+ style: {
54
+ color: entry.color,
55
+ textTransform: 'capitalize'
56
+ }
57
+ }, `${(0, _utils.snakeCaseToTitleCase)(entry.name)} `)), /*#__PURE__*/React.createElement("p", {
58
+ className: "value"
59
+ }, `${formatLabelValue(entry.value)}`), /*#__PURE__*/React.createElement("p", {
60
+ className: "percentage-title"
61
+ }, `${entry?.payload?.percentage}%`)));
62
+ }
63
+ return /*#__PURE__*/React.createElement("p", {
46
64
  className: "label",
47
65
  key: `${entry.name}`,
48
66
  style: {
49
67
  color: entry.color,
50
68
  textTransform: 'capitalize'
51
69
  }
52
- }, `${(0, _utils.snakeCaseToTitleCase)(entry.name)}: ${formatLabelValue(entry.value)}`)));
70
+ }, `${(0, _utils.snakeCaseToTitleCase)(entry.name)}: ${formatLabelValue(entry.value)}`);
71
+ };
72
+ if (active && payload && payload?.length) {
73
+ const newPayload = payload.filter(item => item?.name !== 'bounds');
74
+ return /*#__PURE__*/React.createElement("div", {
75
+ id: id,
76
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' ')
77
+ }, /*#__PURE__*/React.createElement("p", {
78
+ className: "label"
79
+ }, isDateValue ? (0, _utils.formatDate)(label, dateFormat) : label), newPayload.map(entry => renderContent(entry)));
53
80
  }
54
81
  return null;
55
82
  };
@@ -87,11 +114,16 @@ CustomTooltipContent.propTypes = {
87
114
  /**
88
115
  *The label value which is active now, usually calculated internally.
89
116
  */
90
- label: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired
117
+ label: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]).isRequired,
118
+ /**
119
+ * Flag on whether the chart is a pie chart or not
120
+ */
121
+ isPieChart: _propTypes.default.bool
91
122
  };
92
123
  CustomTooltipContent.defaultProps = {
93
124
  isTimeFormat: false,
94
125
  isDateValue: true,
95
- dateFormat: _utils.DATE_FORMATS.HUMAN_READABLE
126
+ dateFormat: _utils.DATE_FORMATS.HUMAN_READABLE,
127
+ isPieChart: false
96
128
  };
97
129
  var _default = exports.default = CustomTooltipContent;
@@ -5,6 +5,9 @@ $default-padding: 1rem;
5
5
  $default-text-font-size: calc(var(--s-1) * 1rem);
6
6
  $default-border-radius: .25rem;
7
7
  $default-border-line-width: .0625rem;
8
+ $default-legend-dot-width: .5rem;
9
+ $default-legend-dot-height: .5rem;
10
+ $default-legend-dot-margin-right: .3125rem;
8
11
 
9
12
  .#{bem.$base} {
10
13
  &.custom-tooltip-content {
@@ -20,3 +23,4 @@ $default-border-line-width: .0625rem;
20
23
  }
21
24
  }
22
25
  }
26
+
@@ -62,9 +62,27 @@ const PieChart = _ref => {
62
62
  strokeWidth: 0
63
63
  }))), /*#__PURE__*/React.createElement(_recharts.Tooltip, {
64
64
  content: /*#__PURE__*/React.createElement(_Common.CustomTooltipContent, {
65
- isDateValue: false
65
+ isDateValue: false,
66
+ isPieChart: true
66
67
  })
67
- }))), /*#__PURE__*/React.createElement(_Common.CustomLegend, {
68
+ }), /*#__PURE__*/React.createElement("text", {
69
+ x: "50%",
70
+ y: "50%",
71
+ textAnchor: "middle",
72
+ dominantBaseline: "middle",
73
+ style: {}
74
+ }, /*#__PURE__*/React.createElement("tspan", {
75
+ x: "50%",
76
+ dy: "-1.2em",
77
+ fontSize: "14",
78
+ fill: "grey"
79
+ }, "Total"), /*#__PURE__*/React.createElement("tspan", {
80
+ x: "50%",
81
+ dy: "1.2em",
82
+ fill: "var(--heading)",
83
+ fontSize: "22"
84
+ }, `${total}`)))), /*#__PURE__*/React.createElement(_Common.CustomLegend, {
85
+ key: id,
68
86
  colorsArray: colors,
69
87
  yKeysArray: formattedData,
70
88
  capitalizedLegend: true,
@@ -93,7 +111,7 @@ PieChart.defaultProps = {
93
111
  className: undefined,
94
112
  width: '100%',
95
113
  height: 300,
96
- innerRadius: '0%',
114
+ innerRadius: '50%',
97
115
  outerRadius: '100%'
98
116
  };
99
117
  var _default = exports.default = PieChart;
@@ -3,7 +3,11 @@
3
3
  $default-margin: 1rem;
4
4
  $default-padding: 1rem;
5
5
  $default-box-shadow: 0 .25rem .75rem var(--ui-lines);
6
+ $soft-box-shadow: 0 .25rem 1rem var(--soft-shadow);
6
7
  $default-text-font-size: calc(var(--s-1) * 1rem);
8
+ $default-legend-dot-width: .75rem;
9
+ $default-legend-dot-height: .75rem;
10
+ $default-legend-dot-margin-right: .3125rem;
7
11
 
8
12
  .#{bem.$base} {
9
13
  &.pie-chart {
@@ -13,6 +17,90 @@ $default-text-font-size: calc(var(--s-1) * 1rem);
13
17
  margin: $default-margin 0;
14
18
  padding: $default-padding;
15
19
 
20
+ .custom-legend {
21
+ .item {
22
+ padding-top: 0;
23
+ }
24
+
25
+ .title .dot {
26
+ height: $default-legend-dot-height;
27
+ width: $default-legend-dot-width;
28
+ }
29
+
30
+ .title .text {
31
+ font-size: calc($default-text-font-size * 1.5);
32
+ }
33
+
34
+ .sub-title-percentage-container {
35
+ align-items: center;
36
+ display: flex;
37
+ gap: .8rem;
38
+ margin-left: .5rem;
39
+ width: fit-content;
40
+ }
41
+
42
+ .sub-title-percentage-container .sub-title {
43
+ font-size: calc($default-text-font-size * 1.25);
44
+ }
45
+
46
+ .sub-title-percentage-container .percentage-title {
47
+ font-size: calc($default-text-font-size * 1);
48
+ }
49
+ }
50
+
51
+ .custom-tooltip-content {
52
+ box-shadow: $soft-box-shadow;
53
+
54
+ p {
55
+ color: var(--hard-paragraph);
56
+ font-size: calc($default-text-font-size * .8);
57
+ font-weight: 600;
58
+ margin: 0;
59
+ }
60
+
61
+ .pie-chart-label {
62
+ align-items: center;
63
+ display: flex;
64
+ gap: 1.25rem;
65
+ justify-content: flex-start;
66
+
67
+ .status {
68
+ align-items: center;
69
+ display: flex;
70
+ gap: .1rem;
71
+ }
72
+
73
+ .label {
74
+ color: var(--hard-paragraph);
75
+ font-size: calc($default-text-font-size * 1);
76
+ font-weight: 600;
77
+ text-transform: capitalize;
78
+ }
79
+
80
+ .dot {
81
+ border-radius: 50%;
82
+ display: inline-block;
83
+ height: $default-legend-dot-height;
84
+ margin-right: $default-legend-dot-margin-right;
85
+ width: $default-legend-dot-width;
86
+ }
87
+
88
+ .value {
89
+ color: var(--hard-paragraph);
90
+ font-size: calc($default-text-font-size * 1);
91
+ font-weight: 600;
92
+ text-transform: capitalize;
93
+ }
94
+
95
+ .percentage-title {
96
+ color: var(--soft-paragraph);
97
+ font-size: calc($default-text-font-size * 1);
98
+ font-weight: 300;
99
+ text-transform: capitalize;
100
+ }
101
+ }
102
+ }
103
+
16
104
  .chart-header {
17
105
  align-items: center;
18
106
  display: flex;
@@ -1,6 +1,8 @@
1
1
  /* @pareto-engineering/generator-front 1.0.12 */
2
2
 
3
3
  @use "@pareto-engineering/bem";
4
+ @use "sass:math";
5
+ @use "sass:list";
4
6
 
5
7
  /*
6
8
  $hamburger-padding-x : 15px !default;
@@ -22,17 +24,157 @@ $hamburger-hover-filter : opacity(50%) !default;
22
24
  $hamburger-active-hover-filter: $hamburger-hover-filter !default;
23
25
  */
24
26
 
25
- $hamburgers-types:(
26
- squeeze
27
- );
28
- $hamburger-layer-color : var(--x);
29
- $hamburger-padding-x : .5em;
30
- $hamburger-padding-y : .5em;
27
+ // Define the variables to be used with the hamburgers library
28
+ $hamburger-types: (squeeze);
29
+ $hamburger-layer-color: var(--x);
30
+ $hamburger-padding-x: .5em;
31
+ $hamburger-padding-y: .5em;
31
32
 
32
- // Open the following file for the template
33
+ // Additional hamburger variables with defaults
34
+ $hamburger-layer-width: 40px !default;
35
+ $hamburger-layer-height: 4px !default;
36
+ $hamburger-layer-spacing: 6px !default;
37
+ $hamburger-layer-border-radius: 4px !default;
38
+ $hamburger-hover-opacity: .7 !default;
39
+ $hamburger-hover-use-filter: false !default;
40
+ $hamburger-hover-filter: opacity(50%) !default;
41
+ $hamburger-active-layer-color: $hamburger-layer-color !default;
42
+ $hamburger-active-hover-opacity: $hamburger-hover-opacity !default;
43
+ $hamburger-active-hover-filter: $hamburger-hover-filter !default;
44
+
45
+ // Base Hamburger Styles
46
+ // ==================================================
47
+ .hamburger {
48
+ background-color: transparent;
49
+ border: 0;
50
+ color: inherit;
51
+ cursor: pointer;
52
+ display: inline-block;
53
+
54
+ // Normalize (<button>)
55
+ font: inherit;
56
+ margin: 0;
57
+ overflow: visible;
58
+ padding: $hamburger-padding-y $hamburger-padding-x;
59
+ text-transform: none;
60
+ transition-duration: .15s;
61
+
62
+ transition-property: opacity, filter;
63
+ transition-timing-function: linear;
64
+
65
+ &:hover {
66
+ @if $hamburger-hover-use-filter == true {
67
+ filter: $hamburger-hover-filter;
68
+ }
69
+ @else {
70
+ opacity: $hamburger-hover-opacity;
71
+ }
72
+ }
73
+
74
+ &.is-active {
75
+ &:hover {
76
+ @if $hamburger-hover-use-filter == true {
77
+ filter: $hamburger-active-hover-filter;
78
+ }
79
+ @else {
80
+ opacity: $hamburger-active-hover-opacity;
81
+ }
82
+ }
83
+
84
+ .hamburger-inner,
85
+ .hamburger-inner::before,
86
+ .hamburger-inner::after {
87
+ background-color: $hamburger-active-layer-color;
88
+ }
89
+ }
90
+ }
91
+
92
+ .hamburger-box {
93
+ display: inline-block;
94
+ height: $hamburger-layer-height * 3 + $hamburger-layer-spacing * 2;
95
+ position: relative;
96
+ width: $hamburger-layer-width;
97
+ }
98
+
99
+ .hamburger-inner {
100
+ display: block;
101
+ margin-top: math.div($hamburger-layer-height, -2);
102
+ top: 50%;
103
+
104
+ &,
105
+ &::before,
106
+ &::after {
107
+ background-color: $hamburger-layer-color;
108
+ border-radius: $hamburger-layer-border-radius;
109
+ height: $hamburger-layer-height;
110
+ position: absolute;
111
+ transition-duration: .15s;
112
+ transition-property: transform;
113
+ transition-timing-function: ease;
114
+ width: $hamburger-layer-width;
115
+ }
116
+
117
+ &::before,
118
+ &::after {
119
+ content: "";
120
+ display: block;
121
+ }
122
+
123
+ &::before {
124
+ top: ($hamburger-layer-spacing + $hamburger-layer-height) * -1;
125
+ }
126
+
127
+ &::after {
128
+ bottom: ($hamburger-layer-spacing + $hamburger-layer-height) * -1;
129
+ }
130
+ }
131
+
132
+ // Squeeze Type
133
+ // ==================================================
134
+
135
+ @if list.index($hamburger-types, squeeze) {
136
+ /*
137
+ * Squeeze
138
+ */
139
+ .hamburger-squeeze {
140
+ .hamburger-inner {
141
+ transition-duration: .1s;
142
+ transition-timing-function: cubic-bezier(.55, .055, .675, .19);
143
+
144
+ &::before {
145
+ transition: top .1s .12s ease,
146
+ opacity .1s ease;
147
+ }
148
+
149
+ &::after {
150
+ transition: bottom .1s .12s ease,
151
+ transform .1s cubic-bezier(.55, .055, .675, .19);
152
+ }
153
+ }
154
+
155
+ &.is-active {
156
+ .hamburger-inner {
157
+ transform: rotate(45deg);
158
+ transition-delay: .12s;
159
+ transition-timing-function: cubic-bezier(.215, .61, .355, 1);
160
+
161
+ &::before {
162
+ opacity: 0;
163
+ top: 0;
164
+ transition: top .1s ease,
165
+ opacity .1s .12s ease;
166
+ }
33
167
 
34
- @import "hamburgers/_sass/hamburgers/hamburgers";
35
- @import "hamburgers/_sass/hamburgers/types/squeeze";
168
+ &::after {
169
+ bottom: 0;
170
+ transform: rotate(-90deg);
171
+ transition: bottom .1s ease,
172
+ transform .1s .12s cubic-bezier(.215, .61, .355, 1);
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
36
178
 
37
179
  /*
38
180
  .#{bem.$base}.hamburger-button{
@@ -44,7 +44,10 @@ const XMLEditor = _ref => {
44
44
  (0, _react.useEffect)(() => {
45
45
  const startState = _state.EditorState.create({
46
46
  doc: config,
47
- extensions: [_view.keymap.of([_commands.defaultKeymap, _commands.indentWithTab, ..._commands.historyKeymap]), (0, _language.indentOnInput)(), (0, _view.lineNumbers)(), (0, _language.bracketMatching)(), (0, _language.foldGutter)(), (0, _view.drawSelection)(), (0, _view.highlightActiveLine)(), (0, _view.highlightActiveLineGutter)(), (0, _view.highlightSpecialChars)(), (0, _view.dropCursor)(), (0, _view.rectangularSelection)(), (0, _view.crosshairCursor)(), (0, _langXml.xml)(), (0, _commands.history)(), _common.theme, _state.EditorState.readOnly.of(readOnly), _view.EditorView.updateListener.of(view => {
47
+ extensions: [_state.Prec.highest(_view.keymap.of([{
48
+ key: 'Enter',
49
+ run: view => (0, _commands.insertNewlineAndIndent)(view)
50
+ }])), _view.keymap.of([_commands.defaultKeymap, _commands.indentWithTab, ..._commands.historyKeymap]), (0, _language.indentOnInput)(), (0, _view.lineNumbers)(), (0, _language.bracketMatching)(), (0, _language.foldGutter)(), (0, _view.drawSelection)(), (0, _view.highlightActiveLine)(), (0, _view.highlightActiveLineGutter)(), (0, _view.highlightSpecialChars)(), (0, _view.dropCursor)(), (0, _view.rectangularSelection)(), (0, _view.crosshairCursor)(), (0, _langXml.xml)(), (0, _commands.history)(), _common.theme, _state.EditorState.readOnly.of(readOnly), _view.EditorView.updateListener.of(view => {
48
51
  onChange(view);
49
52
  // view.state.doc.toString() to receive the current content in the editor.
50
53
  }), _view.EditorView.focusChangeEffect.of((state, focused) => {
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var React = _react;
9
+ var _lexical = require("lexical");
9
10
  var _formik = require("formik");
10
11
  var _LexicalComposer = require("@lexical/react/LexicalComposer");
11
12
  var _LexicalRichTextPlugin = require("@lexical/react/LexicalRichTextPlugin");
@@ -68,7 +69,8 @@ const EditorInput = _ref2 => {
68
69
  disabled,
69
70
  showDebugger,
70
71
  setEditorState,
71
- setPlainTextKey
72
+ setPlainTextKey,
73
+ validate
72
74
  // ...otherProps
73
75
  } = _ref2;
74
76
  const [field,,] = (0, _formik.useField)(name);
@@ -115,6 +117,11 @@ const EditorInput = _ref2 => {
115
117
  };
116
118
  const onChange = state => {
117
119
  setFieldValue(name, JSON.stringify(state));
120
+ validate?.(state.read(() => {
121
+ const root = (0, _lexical.$getRoot)();
122
+ const textContent = root.getTextContent();
123
+ return textContent;
124
+ }));
118
125
  };
119
126
  const initialConfig = {
120
127
  nameSpace: name,
@@ -47,6 +47,7 @@ const AreaChart = ({
47
47
  selectedYLabels: selectedYLabels,
48
48
  setSelectedYLabels: setSelectedYLabels
49
49
  })), /*#__PURE__*/React.createElement(CustomLegend, {
50
+ key: id,
50
51
  colorsArray: colors,
51
52
  yKeysArray: yKeys,
52
53
  capitalizedLegend: capitalizedLegend
@@ -40,6 +40,7 @@ const BarChart = ({
40
40
  selectedYLabels: selectedYLabels,
41
41
  setSelectedYLabels: setSelectedYLabels
42
42
  })), /*#__PURE__*/React.createElement(CustomLegend, {
43
+ key: id,
43
44
  colorsArray: selectedYLabels.map(item => item.color),
44
45
  yKeysArray: selectedYLabels.map(item => item.label),
45
46
  capitalizedLegend: capitalizedLegend
@@ -29,9 +29,13 @@ const CustomLegend = ({
29
29
  }
30
30
  }), /*#__PURE__*/React.createElement("span", {
31
31
  className: "text"
32
- }, capitalizedLegend ? snakeCaseToTitleCase(getLegendItemTitle(key)) : getLegendItemTitle(key))), /*#__PURE__*/React.createElement("span", {
32
+ }, capitalizedLegend ? snakeCaseToTitleCase(getLegendItemTitle(key)) : getLegendItemTitle(key))), /*#__PURE__*/React.createElement("div", {
33
+ className: "sub-title-percentage-container"
34
+ }, /*#__PURE__*/React.createElement("span", {
33
35
  className: "sub-title"
34
- }, getLegendItemSubtitle(key)))));
36
+ }, getLegendItemSubtitle(key)), key.percentage && /*#__PURE__*/React.createElement("span", {
37
+ className: "percentage-title"
38
+ }, `${key.percentage}%`)))));
35
39
  CustomLegend.propTypes = {
36
40
  /**
37
41
  * The id of the dropdown component.
@@ -24,7 +24,6 @@ $default-box-shadow: 0 4px 16px 0 var(--soft-shadow);
24
24
  min-width: fit-content;
25
25
 
26
26
  .item {
27
- box-shadow: $default-box-shadow;
28
27
  padding-top: $default-padding;
29
28
  }
30
29
  }
@@ -55,12 +54,21 @@ $default-box-shadow: 0 4px 16px 0 var(--soft-shadow);
55
54
  }
56
55
  }
57
56
 
57
+
58
+
58
59
  .sub-title {
59
60
  color: var(--heading);
60
61
  display: flex;
61
62
  font-size: calc($default-text-font-size * 1.2);
62
63
  font-weight: 500;
63
- justify-content: flex-end;
64
+ justify-content: flex-start;
65
+ margin-left: 1rem;
66
+ }
67
+
68
+ .percentage-title {
69
+ color: var(--paragraph);
70
+ font-size: calc($default-text-font-size * .75);
71
+ justify-content: flex-start;
64
72
  }
65
73
  }
66
74
  }
@@ -13,7 +13,8 @@ const CustomTooltipContent = ({
13
13
  isDateValue,
14
14
  active,
15
15
  payload,
16
- label
16
+ label,
17
+ isPieChart
17
18
  }) => {
18
19
  const formatLabelValue = value => {
19
20
  if (isTimeFormat) {
@@ -25,21 +26,47 @@ const CustomTooltipContent = ({
25
26
  }
26
27
  return value;
27
28
  };
28
- if (active && payload && payload.length) {
29
- const newPayload = payload.filter(item => item.name !== 'bounds');
30
- return /*#__PURE__*/React.createElement("div", {
31
- id: id,
32
- className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' ')
33
- }, /*#__PURE__*/React.createElement("p", {
34
- className: "label"
35
- }, isDateValue ? formatDate(label, dateFormat) : label), newPayload.map(entry => /*#__PURE__*/React.createElement("p", {
29
+ const renderContent = entry => {
30
+ if (isPieChart) {
31
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", null, "Submissions"), /*#__PURE__*/React.createElement("div", {
32
+ className: "pie-chart-label"
33
+ }, /*#__PURE__*/React.createElement("div", {
34
+ className: "status"
35
+ }, /*#__PURE__*/React.createElement("span", {
36
+ className: "dot",
37
+ style: {
38
+ backgroundColor: entry?.payload?.color
39
+ }
40
+ }), /*#__PURE__*/React.createElement("p", {
41
+ className: "label",
42
+ key: `${entry.name}`,
43
+ style: {
44
+ color: entry.color,
45
+ textTransform: 'capitalize'
46
+ }
47
+ }, `${snakeCaseToTitleCase(entry.name)} `)), /*#__PURE__*/React.createElement("p", {
48
+ className: "value"
49
+ }, `${formatLabelValue(entry.value)}`), /*#__PURE__*/React.createElement("p", {
50
+ className: "percentage-title"
51
+ }, `${entry?.payload?.percentage}%`)));
52
+ }
53
+ return /*#__PURE__*/React.createElement("p", {
36
54
  className: "label",
37
55
  key: `${entry.name}`,
38
56
  style: {
39
57
  color: entry.color,
40
58
  textTransform: 'capitalize'
41
59
  }
42
- }, `${snakeCaseToTitleCase(entry.name)}: ${formatLabelValue(entry.value)}`)));
60
+ }, `${snakeCaseToTitleCase(entry.name)}: ${formatLabelValue(entry.value)}`);
61
+ };
62
+ if (active && payload && payload?.length) {
63
+ const newPayload = payload.filter(item => item?.name !== 'bounds');
64
+ return /*#__PURE__*/React.createElement("div", {
65
+ id: id,
66
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' ')
67
+ }, /*#__PURE__*/React.createElement("p", {
68
+ className: "label"
69
+ }, isDateValue ? formatDate(label, dateFormat) : label), newPayload.map(entry => renderContent(entry)));
43
70
  }
44
71
  return null;
45
72
  };
@@ -77,11 +104,16 @@ CustomTooltipContent.propTypes = {
77
104
  /**
78
105
  *The label value which is active now, usually calculated internally.
79
106
  */
80
- label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired
107
+ label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
108
+ /**
109
+ * Flag on whether the chart is a pie chart or not
110
+ */
111
+ isPieChart: PropTypes.bool
81
112
  };
82
113
  CustomTooltipContent.defaultProps = {
83
114
  isTimeFormat: false,
84
115
  isDateValue: true,
85
- dateFormat: DATE_FORMATS.HUMAN_READABLE
116
+ dateFormat: DATE_FORMATS.HUMAN_READABLE,
117
+ isPieChart: false
86
118
  };
87
119
  export default CustomTooltipContent;