@quillsql/react 2.14.6 → 2.14.8

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 (53) hide show
  1. package/dist/cjs/Chart.d.ts +2 -1
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +9 -4
  4. package/dist/cjs/ChartBuilder.d.ts +4 -1
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +9 -5
  7. package/dist/cjs/Context.d.ts.map +1 -1
  8. package/dist/cjs/Context.js +7 -0
  9. package/dist/cjs/ReportBuilder.d.ts +3 -1
  10. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  11. package/dist/cjs/ReportBuilder.js +4 -4
  12. package/dist/cjs/StaticChart.d.ts +2 -1
  13. package/dist/cjs/StaticChart.d.ts.map +1 -1
  14. package/dist/cjs/StaticChart.js +2 -2
  15. package/dist/cjs/components/Chart/BarChart.d.ts +3 -1
  16. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  17. package/dist/cjs/components/Chart/BarChart.js +16 -4
  18. package/dist/cjs/components/Chart/CustomLegend.d.ts +2 -0
  19. package/dist/cjs/components/Chart/CustomLegend.d.ts.map +1 -0
  20. package/dist/cjs/components/Chart/CustomLegend.js +21 -0
  21. package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
  22. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  23. package/dist/cjs/components/Chart/LineChart.js +6 -2
  24. package/dist/cjs/components/Chart/PieChart.d.ts +1 -0
  25. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
  26. package/dist/cjs/components/Chart/PieChart.js +31 -2
  27. package/dist/esm/Chart.d.ts +2 -1
  28. package/dist/esm/Chart.d.ts.map +1 -1
  29. package/dist/esm/Chart.js +9 -4
  30. package/dist/esm/ChartBuilder.d.ts +4 -1
  31. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  32. package/dist/esm/ChartBuilder.js +9 -5
  33. package/dist/esm/Context.d.ts.map +1 -1
  34. package/dist/esm/Context.js +7 -0
  35. package/dist/esm/ReportBuilder.d.ts +3 -1
  36. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  37. package/dist/esm/ReportBuilder.js +4 -4
  38. package/dist/esm/StaticChart.d.ts +2 -1
  39. package/dist/esm/StaticChart.d.ts.map +1 -1
  40. package/dist/esm/StaticChart.js +2 -2
  41. package/dist/esm/components/Chart/BarChart.d.ts +3 -1
  42. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  43. package/dist/esm/components/Chart/BarChart.js +17 -5
  44. package/dist/esm/components/Chart/CustomLegend.d.ts +2 -0
  45. package/dist/esm/components/Chart/CustomLegend.d.ts.map +1 -0
  46. package/dist/esm/components/Chart/CustomLegend.js +17 -0
  47. package/dist/esm/components/Chart/LineChart.d.ts +2 -1
  48. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  49. package/dist/esm/components/Chart/LineChart.js +7 -3
  50. package/dist/esm/components/Chart/PieChart.d.ts +1 -0
  51. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
  52. package/dist/esm/components/Chart/PieChart.js +32 -3
  53. package/package.json +1 -1
@@ -1,12 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis, Bar, BarChart as ReChartsBarChart, Customized, } from 'recharts';
2
+ import { CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis, Bar, BarChart as ReChartsBarChart, Customized, Legend, } from 'recharts';
3
3
  import { valueFormatter } from '../../utils/valueFormatter';
4
4
  import { axisFormatter } from '../../utils/axisFormatter';
5
5
  import { generateArrayFromColor, selectColor } from '../../utils/color';
6
6
  import ChartTooltip from '../../components/Chart/ChartTooltip';
7
7
  import getDomain from '../../utils/getDomain';
8
8
  import CustomReferenceLine from './CustomReferenceLine';
9
- export default function BarChart({ colors, colorMap, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isStacked, isAnimationActive = true, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, onClickChartElement, dateFilter, referenceLines, }) {
9
+ import { RenderLegend } from './CustomLegend';
10
+ export default function BarChart({ colors, colorMap, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isStacked, isAnimationActive = true, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, onClickChartElement, dateFilter, referenceLines, showLegend = false, stackedMode = false, }) {
10
11
  const getCustomColor = (field) => {
11
12
  const key = field.startsWith('comparison_') ? 'comparison' : 'primary';
12
13
  field = field.replace('comparison_', '');
@@ -44,7 +45,12 @@ export default function BarChart({ colors, colorMap, yAxisFields, data, containe
44
45
  ? onClickChartElement(event?.activePayload
45
46
  ? event.activePayload[0].payload
46
47
  : undefined)
47
- : undefined, children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: true, vertical: false, stroke: "#e5e7eb" })), _jsx(YAxis, { width: 44, hide: hideYAxis, axisLine: false, tickLine: false, type: "number", domain: getDomain(data, yAxisFields, referenceLines), tick: { transform: 'translate(-3, 0)' }, tickCount: 5, style: {
48
+ : undefined, children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: true, vertical: false, stroke: "#e5e7eb" })), showLegend && (_jsx(Legend, { verticalAlign: "top", align: "left", fontSize: 11, color: theme.secondaryTextColor, wrapperStyle: {
49
+ paddingLeft: 20,
50
+ paddingBottom: 20,
51
+ }, content: _jsx(RenderLegend, {}) })), _jsx(YAxis, { width: 44, hide: hideYAxis, axisLine: false, tickLine: false, type: "number", domain: stackedMode
52
+ ? [0, 'auto']
53
+ : getDomain(data, yAxisFields, referenceLines), tick: { transform: 'translate(-3, 0)' }, tickCount: 5, style: {
48
54
  fontSize: '12px',
49
55
  fontFamily: theme.chartLabelFontFamily,
50
56
  }, tickFormatter: (tick) => {
@@ -93,8 +99,14 @@ export default function BarChart({ colors, colorMap, yAxisFields, data, containe
93
99
  fields: yAxisFields,
94
100
  });
95
101
  }, xAxisFormat: xAxisFormat, xAxisField: xAxisField, colors: colors, comparison: comparison, dateFilter: dateFilter }));
96
- }, position: { y: 0 } }), sortYAxisFields(yAxisFields).map((elem) => {
97
- return (_jsx(Bar, { dataKey: elem.field, stackId: isStacked ? elem.field.replace('comparison_', '') : undefined, type: "linear", fill: getCustomColor(elem.field) ??
102
+ }, position: { y: 0 } }), sortYAxisFields([...yAxisFields]).map((elem, index) => {
103
+ return (_jsx(Bar, { radius: stackedMode && index === yAxisFields.length - 1
104
+ ? [3, 3, 0, 0]
105
+ : 0, dataKey: elem.field, stackId: stackedMode
106
+ ? 'same_id'
107
+ : isStacked
108
+ ? elem.field.replace('comparison_', '')
109
+ : undefined, type: "linear", fill: getCustomColor(elem.field) ??
98
110
  selectColor(elem, colors.length >= yAxisFields.length / (comparison ? 2 : 1)
99
111
  ? colors
100
112
  : generateArrayFromColor(colors.slice(0, 2), yAxisFields.length), yAxisFields.findIndex((field) => field.field === elem.field?.replace('comparison_', ''))), isAnimationActive: isAnimationActive }, elem.field));
@@ -0,0 +1,2 @@
1
+ export declare const RenderLegend: (props: any) => import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CustomLegend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomLegend.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/CustomLegend.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,UAAW,GAAG,4CAyCtC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useContext } from 'react';
3
+ import { ThemeContext } from '../../Context';
4
+ export const RenderLegend = (props) => {
5
+ const { payload } = props;
6
+ const [theme] = useContext(ThemeContext);
7
+ console.log('theme', theme);
8
+ return (_jsx("div", { style: { display: 'flex', justifyContent: 'flex-start' }, children: payload.map((entry, index) => (_jsxs("div", { style: {
9
+ display: 'flex',
10
+ alignItems: 'center',
11
+ marginRight: '1rem',
12
+ }, children: [_jsx("svg", { style: { marginRight: '0.5rem' }, width: "16", height: "16", viewBox: "0 0 16 16", children: _jsx("rect", { width: "16", height: "16", rx: "3", fill: payload?.[index]?.color }) }), _jsx("span", { style: {
13
+ color: theme?.secondaryTextColor,
14
+ fontFamily: theme?.fontFamily,
15
+ fontSize: theme?.fontSizeMedium || '14px',
16
+ }, children: entry.value })] }, `legend-${index}`))) }));
17
+ };
@@ -1,6 +1,6 @@
1
1
  import { type ColorMapType } from '../../Chart';
2
2
  import { AxisFormat } from '../../Dashboard';
3
- export default function LineChart({ colors, colorMap, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, comparisonLineStyle, cartesianGridLineColor, onClickChartElement, dateFilter, referenceLines, }: {
3
+ export default function LineChart({ colors, colorMap, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, comparisonLineStyle, cartesianGridLineColor, onClickChartElement, dateFilter, referenceLines, showLegend, }: {
4
4
  colors: string[];
5
5
  colorMap?: ColorMapType;
6
6
  yAxisFields: any[];
@@ -28,5 +28,6 @@ export default function LineChart({ colors, colorMap, yAxisFields, data, contain
28
28
  label: string;
29
29
  query: number[];
30
30
  }[];
31
+ showLegend?: boolean;
31
32
  }): import("react/jsx-runtime").JSX.Element;
32
33
  //# sourceMappingURL=LineChart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/LineChart.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA4B7C,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,MAAM,EACN,QAAa,EACb,WAAW,EACX,IAAI,EACJ,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,KAAK,EACL,UAAU,EACV,iBAAwB,EACxB,SAAiB,EACjB,SAAiB,EACjB,iBAAyB,EACzB,2BAAmC,EACnC,yBAAgC,EAChC,wBAAgC,EAChC,sBAAgC,EAChC,mBAA6B,EAC7B,sBAAsB,EACtB,mBAA8B,EAC9B,UAAU,EACV,cAAc,GACf,EAAE;IACD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,GAAG,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2BAA2B,EAAE,OAAO,CAAC;IACrC,yBAAyB,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,sBAAsB,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CACvD,2CAgTA"}
1
+ {"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/LineChart.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA4B7C,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,MAAM,EACN,QAAa,EACb,WAAW,EACX,IAAI,EACJ,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,KAAK,EACL,UAAU,EACV,iBAAwB,EACxB,SAAiB,EACjB,SAAiB,EACjB,iBAAyB,EACzB,2BAAmC,EACnC,yBAAgC,EAChC,wBAAgC,EAChC,sBAAgC,EAChC,mBAA6B,EAC7B,sBAAsB,EACtB,mBAA8B,EAC9B,UAAU,EACV,cAAc,EACd,UAAkB,GACnB,EAAE;IACD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,GAAG,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2BAA2B,EAAE,OAAO,CAAC;IACrC,yBAAyB,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,sBAAsB,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,2CA6TA"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Area, CartesianGrid, ComposedChart, Customized, ResponsiveContainer, Tooltip, XAxis, YAxis, } from 'recharts';
2
+ import { Area, CartesianGrid, ComposedChart, Customized, Legend, ResponsiveContainer, Tooltip, XAxis, YAxis, } from 'recharts';
3
3
  import { DATE_FORMAT_TYPES, valueFormatter } from '../../utils/valueFormatter';
4
4
  import { axisFormatter } from '../../utils/axisFormatter';
5
5
  import { selectColor } from '../../utils/color';
@@ -24,7 +24,7 @@ function createLineForEmptyChart(yAxisFields, dateFilter, xAxisField, xAxisForma
24
24
  }
25
25
  return lineChartData;
26
26
  }
27
- export default function LineChart({ colors, colorMap = {}, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive = true, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', comparisonLineStyle = 'solid', cartesianGridLineColor, onClickChartElement = () => { }, dateFilter, referenceLines, }) {
27
+ export default function LineChart({ colors, colorMap = {}, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive = true, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', comparisonLineStyle = 'solid', cartesianGridLineColor, onClickChartElement = () => { }, dateFilter, referenceLines, showLegend = false, }) {
28
28
  const formattedData = useMemo(() => {
29
29
  if (!data || data.length === 0) {
30
30
  return createLineForEmptyChart(yAxisFields, dateFilter, xAxisField, xAxisFormat);
@@ -76,7 +76,11 @@ export default function LineChart({ colors, colorMap = {}, yAxisFields, data, co
76
76
  return sum + 1;
77
77
  return sum;
78
78
  }, 0);
79
- return (_jsx("div", { style: { ...containerStyle }, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: '100%', minWidth: 0, minHeight: 0, children: _jsxs(ComposedChart, { data: formattedData, onClick: (event) => onClickChartElement(event?.activePayload ? event.activePayload[0].payload : undefined), children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: cartesianGridLineColor ?? '#e5e7eb', strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), _jsx(XAxis, { dataKey: xAxisField, hide: hideXAxis, tick: { transform: 'translate(0, 6)' }, style: {
79
+ return (_jsx("div", { style: { ...containerStyle }, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: '100%', minWidth: 0, minHeight: 0, children: _jsxs(ComposedChart, { data: formattedData, onClick: (event) => onClickChartElement(event?.activePayload ? event.activePayload[0].payload : undefined), children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: cartesianGridLineColor ?? '#e5e7eb', strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), showLegend && (_jsx(Legend, { verticalAlign: "top", align: "left", fontSize: 11, color: theme.secondaryTextColor, wrapperStyle: {
80
+ paddingLeft: 20,
81
+ paddingBottom: 20,
82
+ fontFamily: theme?.fontFamily,
83
+ } })), _jsx(XAxis, { dataKey: xAxisField, hide: hideXAxis, tick: { transform: 'translate(0, 6)' }, style: {
80
84
  fontSize: '12px',
81
85
  fontFamily: theme?.chartLabelFontFamily ||
82
86
  theme?.fontFamily ||
@@ -72,6 +72,7 @@ export interface DonutChartProps extends React.HTMLAttributes<HTMLDivElement> {
72
72
  label: string;
73
73
  format: AxisFormat;
74
74
  }[];
75
+ showLegend?: boolean;
75
76
  }
76
77
  declare const PieChartWrapper: React.ForwardRefExoticComponent<DonutChartProps & React.RefAttributes<HTMLDivElement>>;
77
78
  export default PieChartWrapper;
@@ -1 +1 @@
1
- {"version":3,"file":"PieChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/PieChart.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PieChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/PieChart.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import { Pie, PieChart, ResponsiveContainer, Tooltip } from 'recharts';
4
4
  import { generateArrayFromColor } from '../../utils/color';
@@ -209,8 +209,35 @@ export const DonutChartTooltip = ({ active, payload, valueFormatter, theme, yAxi
209
209
  }
210
210
  return null;
211
211
  };
212
+ const renderCustomizedLabel = ({ cx, cy, name, midAngle, outerRadius, percent, tooltipPayload, color, theme, }) => {
213
+ const RADIAN = Math.PI / 180;
214
+ const radius = outerRadius + 25;
215
+ const x = cx + radius * Math.cos(-midAngle * RADIAN);
216
+ const y = cy + radius * Math.sin(-midAngle * RADIAN);
217
+ const category = tooltipPayload?.[0]?.dataKey;
218
+ const rawValue = tooltipPayload?.[0]?.payload?.[`raw_${category}`];
219
+ const displayValue = rawValue
220
+ ? `${rawValue}`
221
+ : `${(percent * 100).toFixed(0)}%`;
222
+ const isRightSide = x > cx;
223
+ const isTopSide = y < cy;
224
+ // Calculate consistent left alignment position
225
+ const padding = 10;
226
+ let textX;
227
+ if (isRightSide) {
228
+ // Right side: start text at x + padding
229
+ textX = x + padding;
230
+ }
231
+ else {
232
+ // Left side: estimate text width and position so text starts at x - padding - textWidth
233
+ const longestText = name.length > displayValue.length ? name : displayValue;
234
+ const estimatedTextWidth = longestText.length * 7; // Rough estimate, adjust as needed
235
+ textX = x - padding - estimatedTextWidth;
236
+ }
237
+ return (_jsx("g", { children: isTopSide ? (_jsxs(_Fragment, { children: [_jsx("text", { x: textX, y: y - 8, fill: color, textAnchor: "start", dominantBaseline: "central", fontSize: theme?.fontSize || '14px', fontWeight: "500", fontFamily: theme?.fontFamily, children: name }), _jsx("text", { x: textX, y: y + 8, fill: color, textAnchor: "start", dominantBaseline: "central", fontSize: theme?.fontSize || '14px', fontWeight: "400", fontFamily: theme?.fontFamily, children: displayValue })] })) : (_jsxs(_Fragment, { children: [_jsx("text", { x: textX, y: y + 8, fill: color, textAnchor: "start", dominantBaseline: "central", fontSize: theme?.fontSize || '14px', fontWeight: "400", fontFamily: theme?.fontFamily, children: displayValue }), _jsx("text", { x: textX, y: y - 8, fill: color, textAnchor: "start", dominantBaseline: "central", fontSize: theme?.fontSize || '14px', fontWeight: "500", fontFamily: theme?.fontFamily, children: name })] })) }));
238
+ };
212
239
  const PieChartWrapper = React.forwardRef((props, ref) => {
213
- const { category = 'pct_of_the_total', index = 'status', data, colors = [], colorMap = {}, variant = 'donut', valueFormatter = defaultValueFormatter, className, containerStyle, theme, onClickChartElement, yAxisFields, ...other } = props;
240
+ const { category = 'pct_of_the_total', index = 'status', data, colors = [], colorMap = {}, variant = 'donut', valueFormatter = defaultValueFormatter, className, containerStyle, theme, onClickChartElement, yAxisFields, showLegend = false, ...other } = props;
214
241
  const isDonut = variant == 'donut';
215
242
  if (!data || data.length === 0) {
216
243
  return (_jsx("div", { style: {
@@ -239,7 +266,9 @@ const PieChartWrapper = React.forwardRef((props, ref) => {
239
266
  generateArrayFromColor(colorMap[category]['primary'], data.length)) ??
240
267
  (colors.length >= data.length
241
268
  ? colors
242
- : generateArrayFromColor(colors.slice(0, 2), data.length)), index, category), cx: "50%", cy: "50%", startAngle: 90, endAngle: -270, innerRadius: isDonut ? '70%' : '0%', outerRadius: "100%", paddingAngle: 0, dataKey: category, nameKey: index, isAnimationActive: true, onClick: onClickChartElement }), _jsx(Tooltip, { wrapperStyle: {
269
+ : generateArrayFromColor(colors.slice(0, 2), data.length)), index, category), cx: "50%", cy: "50%", startAngle: 90, endAngle: -270, innerRadius: isDonut ? (showLegend ? '50%' : '70%') : '0%', outerRadius: showLegend ? '70%' : '100%', paddingAngle: 0, dataKey: category, nameKey: index, isAnimationActive: true, onClick: onClickChartElement, labelLine: false, label: showLegend
270
+ ? (props) => renderCustomizedLabel({ ...props, theme })
271
+ : undefined }), _jsx(Tooltip, { wrapperStyle: {
243
272
  outline: 'none',
244
273
  }, content: ({ active, payload }) => {
245
274
  return (_jsx(DonutChartTooltip, { active: active, payload: payload, valueFormatter: valueFormatter, theme: theme, yAxisFields: yAxisFields }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quillsql/react",
3
- "version": "2.14.6",
3
+ "version": "2.14.8",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./dist/esm/index.js",