@fluentui/react-charts 9.3.6 → 9.3.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.
- package/CHANGELOG.md +46 -2
- package/dist/index.d.ts +70 -17
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -16
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -1
- package/lib/components/AreaChart/AreaChart.js +3 -43
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +1 -2
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.js +8 -11
- package/lib/components/ChartTable/ChartTable.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.types.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +107 -67
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +7 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +7 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +52 -32
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.js +1 -2
- package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +9 -7
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +8 -5
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +0 -2
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +48 -25
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +309 -209
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +9 -15
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib/components/DonutChart/Pie/Pie.js +4 -2
- package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.js +8 -13
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js +4 -17
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +8 -13
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +24 -36
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +3 -16
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +5 -25
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/Legends/Legends.js +3 -4
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/Legends/Legends.types.js.map +1 -1
- package/lib/components/Legends/OverflowMenu.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +68 -75
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/LineChart.types.js +1 -1
- package/lib/components/LineChart/LineChart.types.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/EventAnnotation.js +3 -4
- package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +1 -2
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js +4 -10
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +1 -2
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +41 -49
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +1 -2
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/Sparkline/Sparkline.js +11 -7
- package/lib/components/Sparkline/Sparkline.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +15 -92
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +28 -49
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/types/ChartAnnotation.js.map +1 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/utilities/Common.styles.js +0 -1
- package/lib/utilities/Common.styles.js.map +1 -1
- package/lib/utilities/Common.styles.raw.js +0 -1
- package/lib/utilities/Common.styles.raw.js.map +1 -1
- package/lib/utilities/FocusableTooltipText.js +1 -1
- package/lib/utilities/FocusableTooltipText.js.map +1 -1
- package/lib/utilities/getWindow.js +0 -1
- package/lib/utilities/getWindow.js.map +1 -1
- package/lib/utilities/hooks.js +34 -0
- package/lib/utilities/hooks.js.map +1 -0
- package/lib/utilities/image-export-utils.js +118 -78
- package/lib/utilities/image-export-utils.js.map +1 -1
- package/lib/utilities/utilities.js +243 -102
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -16
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +2 -41
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +0 -2
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.js +9 -11
- package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +107 -67
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +7 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +7 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +51 -31
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.js +1 -2
- package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +7 -6
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +7 -4
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +0 -2
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +48 -25
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +309 -208
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +7 -13
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/Pie.js +4 -2
- package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.js +7 -12
- package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js +3 -16
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +7 -12
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +22 -34
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +2 -15
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +4 -23
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.js +3 -4
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
- package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +67 -74
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.types.js +1 -1
- package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js +2 -2
- package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +0 -2
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +4 -10
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +0 -2
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +38 -46
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +0 -2
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Sparkline/Sparkline.js +11 -7
- package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +14 -91
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +26 -47
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/types/ChartAnnotation.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.js +0 -1
- package/lib-commonjs/utilities/Common.styles.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.raw.js +0 -1
- package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -1
- package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/getWindow.js +0 -1
- package/lib-commonjs/utilities/getWindow.js.map +1 -1
- package/lib-commonjs/utilities/hooks.js +45 -0
- package/lib-commonjs/utilities/hooks.js.map +1 -0
- package/lib-commonjs/utilities/image-export-utils.js +119 -79
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +253 -101
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +9 -9
- package/lib/components/DeclarativeChart/imageExporter.js +0 -223
- package/lib/components/DeclarativeChart/imageExporter.js.map +0 -1
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js +0 -233
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import { useFocusableGroup } from '@fluentui/react-tabster';
|
|
3
|
+
import { extent as d3Extent, max as d3Max } from 'd3-array';
|
|
4
4
|
import { scaleLinear as d3ScaleLinear } from 'd3-scale';
|
|
5
5
|
import { area as d3Area, line as d3Line, curveLinear as d3curveLinear } from 'd3-shape';
|
|
6
|
-
import
|
|
7
|
-
import { useFocusableGroup } from '@fluentui/react-tabster';
|
|
6
|
+
import * as React from 'react';
|
|
8
7
|
import { useRtl } from '../../utilities/index';
|
|
8
|
+
import { useSparklineStyles } from './useSparklineStyles.styles';
|
|
9
9
|
/**
|
|
10
10
|
* Sparkline is the context wrapper and container for all Sparkline content/controls,
|
|
11
11
|
* It has no direct style or slot opinions.
|
|
@@ -23,9 +23,13 @@ import { useRtl } from '../../utilities/index';
|
|
|
23
23
|
let _emptyChartId = '_SparklineChart_empty';
|
|
24
24
|
let _isRTL = useRtl();
|
|
25
25
|
const [points, setPoints] = React.useState([]);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
26
|
+
var _props_width;
|
|
27
|
+
// Use props with default fallbacks instead of hardcoded values
|
|
28
|
+
const width = (_props_width = props.width) !== null && _props_width !== void 0 ? _props_width : 80;
|
|
29
|
+
var _props_height;
|
|
30
|
+
const height = (_props_height = props.height) !== null && _props_height !== void 0 ? _props_height : 20;
|
|
31
|
+
var _props_valueTextWidth;
|
|
32
|
+
const valueTextWidth = (_props_valueTextWidth = props.valueTextWidth) !== null && _props_valueTextWidth !== void 0 ? _props_valueTextWidth : 80;
|
|
29
33
|
const line = React.useMemo(()=>{
|
|
30
34
|
return d3Line().x((d)=>x(d.x)).y((d)=>y(d.y)).curve(d3curveLinear);
|
|
31
35
|
}, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Sparkline/Sparkline.tsx"],"sourcesContent":["'use client';\n\nimport
|
|
1
|
+
{"version":3,"sources":["../src/components/Sparkline/Sparkline.tsx"],"sourcesContent":["'use client';\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { extent as d3Extent, max as d3Max } from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { area as d3Area, line as d3Line, curveLinear as d3curveLinear } from 'd3-shape';\nimport * as React from 'react';\nimport { SparklineProps } from '../../index';\nimport { LineChartDataPoint } from '../../types/DataPoint';\nimport { useRtl } from '../../utilities/index';\nimport { useSparklineStyles } from './useSparklineStyles.styles';\n\n/**\n * Sparkline is the context wrapper and container for all Sparkline content/controls,\n * It has no direct style or slot opinions.\n *\n * Sparkline also provides API interfaces for callbacks that will occur on navigation events.\n */\nexport const Sparkline: React.FunctionComponent<SparklineProps> = React.forwardRef<HTMLDivElement, SparklineProps>(\n (props, forwardedRef) => {\n let margin = {\n top: 2,\n right: 0,\n bottom: 0,\n left: 0,\n };\n let x: any;\n let y: any;\n let _emptyChartId: string = '_SparklineChart_empty';\n let _isRTL: boolean = useRtl();\n const [points, setPoints] = React.useState<LineChartDataPoint[]>([]);\n\n // Use props with default fallbacks instead of hardcoded values\n const width = props.width ?? 80;\n const height = props.height ?? 20;\n const valueTextWidth = props.valueTextWidth ?? 80;\n\n const line = React.useMemo(() => {\n return d3Line<LineChartDataPoint>()\n .x((d: LineChartDataPoint) => x(d.x))\n .y((d: LineChartDataPoint) => y(d.y))\n .curve(d3curveLinear);\n }, [x, y]);\n\n const area = React.useMemo(() => {\n return d3Area<LineChartDataPoint>()\n .x((d: LineChartDataPoint) => x(d.x))\n .y0(height)\n .y1((d: LineChartDataPoint) => y(d.y))\n .curve(d3curveLinear);\n }, [height, x, y]);\n\n React.useEffect(() => {\n if (!_isChartEmpty()) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const _points = props.data!.lineChartData![0].data;\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const [xMin, xMax] = d3Extent(_points, (d: any) => d.x);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n x = d3ScaleLinear()\n .domain([xMin, xMax])\n .range([margin.left!, width - margin.right!]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n y = d3ScaleLinear()\n /* eslint-disable @typescript-eslint/no-explicit-any */\n .domain([0, d3Max(_points, (d: any) => d.y)])\n .range([height - margin.bottom!, margin.top!]);\n\n setPoints(_points as LineChartDataPoint[]);\n }\n }, []);\n\n const { data } = props;\n function _isChartEmpty(): boolean {\n return !(\n data &&\n data.lineChartData &&\n data.lineChartData.length > 0 &&\n data.lineChartData.filter(item => item.data.length === 0).length === 0\n );\n }\n function drawSparkline() {\n if (!line || !area) {\n return null;\n }\n return (\n <>\n <path\n className=\"line\"\n d={line(points)!}\n fill={'transparent'}\n opacity={1}\n strokeWidth={2}\n stroke={data!.lineChartData![0].color!}\n />\n <path\n className=\"area\"\n d={area(points)!}\n opacity={1}\n fillOpacity={0.2}\n fill={data!.lineChartData![0].color!}\n role=\"img\"\n aria-hidden\n />\n </>\n );\n }\n\n const classes = useSparklineStyles(props);\n const focusAttributes = useFocusableGroup();\n return !_isChartEmpty() ? (\n <div className={classes.inlineBlock} {...focusAttributes}>\n {width >= 50 && height >= 16 ? (\n <svg\n width={width}\n height={height}\n aria-label={`Sparkline with label ${data!.lineChartData![0].legend!}`}\n tabIndex={0}\n >\n {points ? drawSparkline() : null}\n </svg>\n ) : (\n <></>\n )}\n {props.showLegend && props.data!.lineChartData![0].legend ? (\n <svg width={valueTextWidth} height={height}>\n <text x=\"0%\" textAnchor={_isRTL ? 'end' : 'start'} dx={8} y=\"100%\" dy={-5} className={classes.valueText}>\n {props.data!.lineChartData![0].legend!}\n </text>\n </svg>\n ) : (\n <></>\n )}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\nSparkline.displayName = 'Sparkline';\n"],"names":["useFocusableGroup","extent","d3Extent","max","d3Max","scaleLinear","d3ScaleLinear","area","d3Area","line","d3Line","curveLinear","d3curveLinear","React","useRtl","useSparklineStyles","Sparkline","forwardRef","props","forwardedRef","margin","top","right","bottom","left","x","y","_emptyChartId","_isRTL","points","setPoints","useState","width","height","valueTextWidth","useMemo","d","curve","y0","y1","useEffect","_isChartEmpty","_points","data","lineChartData","xMin","xMax","domain","range","length","filter","item","drawSparkline","path","className","fill","opacity","strokeWidth","stroke","color","fillOpacity","role","aria-hidden","classes","focusAttributes","div","inlineBlock","svg","aria-label","legend","tabIndex","showLegend","text","textAnchor","dx","dy","valueText","id","style","displayName"],"mappings":"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"}
|
|
@@ -3,13 +3,12 @@ import * as React from 'react';
|
|
|
3
3
|
import { useVerticalBarChartStyles } from './useVerticalBarChartStyles.styles';
|
|
4
4
|
import { max as d3Max, min as d3Min } from 'd3-array';
|
|
5
5
|
import { line as d3Line } from 'd3-shape';
|
|
6
|
-
import { select as d3Select } from 'd3-selection';
|
|
7
6
|
import { scaleLinear as d3ScaleLinear, scaleBand as d3ScaleBand, scaleUtc as d3ScaleUtc } from 'd3-scale';
|
|
8
7
|
import { useId } from '@fluentui/react-utilities';
|
|
9
8
|
import { tokens } from '@fluentui/react-theme';
|
|
10
9
|
import { CartesianChart, Legends, ChartPopover } from '../../index';
|
|
11
|
-
import { ChartTypes, getAccessibleDataObject, XAxisTypes, getTypeOfAxis,
|
|
12
|
-
import {
|
|
10
|
+
import { ChartTypes, getAccessibleDataObject, XAxisTypes, getTypeOfAxis, formatScientificLimitWidth, getBarWidth, getScalePadding, isScalePaddingDefined, calculateAppropriateBarWidth, useRtl, areArraysEqual, calculateLongestLabelWidth, findVerticalNumericMinMaxOfY, createNumericYAxis, domainRangeOfVerticalNumeric, domainRangeOfDateForAreaLineScatterVerticalBarCharts, domainRangeOfXStringAxis, createStringYAxis, calcTotalWidth, calcBandwidth, calcRequiredWidth, sortAxisCategories } from '../../utilities/index';
|
|
11
|
+
import { useImageExport } from '../../utilities/hooks';
|
|
13
12
|
var CircleVisbility = /*#__PURE__*/ function(CircleVisbility) {
|
|
14
13
|
CircleVisbility["show"] = "visibility";
|
|
15
14
|
CircleVisbility["hide"] = "hidden";
|
|
@@ -38,7 +37,6 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
38
37
|
let _yMax;
|
|
39
38
|
let _yMin;
|
|
40
39
|
let _isHavingLine = _checkForLine();
|
|
41
|
-
const _tooltipId = useId('VCTooltipID_');
|
|
42
40
|
let _xAxisType;
|
|
43
41
|
let _calloutAnchorPoint;
|
|
44
42
|
let _domainMargin;
|
|
@@ -48,8 +46,7 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
48
46
|
const _vbcBarId = useId('_VBC_bar_');
|
|
49
47
|
let _xAxisInnerPadding = 0;
|
|
50
48
|
let _xAxisOuterPadding = 0;
|
|
51
|
-
const cartesianChartRef =
|
|
52
|
-
const _legendsRef = React.useRef(null);
|
|
49
|
+
const { cartesianChartRef, legendsRef: _legendsRef } = useImageExport(props.componentRef, props.hideLegend);
|
|
53
50
|
const [color, setColor] = React.useState('');
|
|
54
51
|
const [dataForHoverCard, setDataForHoverCard] = React.useState(0);
|
|
55
52
|
const [activeLegend, setActiveLegend] = React.useState(undefined);
|
|
@@ -68,17 +65,6 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
68
65
|
const [isPopoverOpen, setPopoverOpen] = React.useState(false);
|
|
69
66
|
const [selectedLegends, setSelectedLegends] = React.useState(((_props_legendProps = props.legendProps) === null || _props_legendProps === void 0 ? void 0 : _props_legendProps.selectedLegends) || []);
|
|
70
67
|
const prevPropsRef = React.useRef(null);
|
|
71
|
-
React.useImperativeHandle(props.componentRef, ()=>{
|
|
72
|
-
var _cartesianChartRef_current;
|
|
73
|
-
var _cartesianChartRef_current_chartContainer;
|
|
74
|
-
return {
|
|
75
|
-
chartContainer: (_cartesianChartRef_current_chartContainer = (_cartesianChartRef_current = cartesianChartRef.current) === null || _cartesianChartRef_current === void 0 ? void 0 : _cartesianChartRef_current.chartContainer) !== null && _cartesianChartRef_current_chartContainer !== void 0 ? _cartesianChartRef_current_chartContainer : null,
|
|
76
|
-
toImage: (opts)=>{
|
|
77
|
-
var _cartesianChartRef_current, _legendsRef_current;
|
|
78
|
-
return toImage((_cartesianChartRef_current = cartesianChartRef.current) === null || _cartesianChartRef_current === void 0 ? void 0 : _cartesianChartRef_current.chartContainer, (_legendsRef_current = _legendsRef.current) === null || _legendsRef_current === void 0 ? void 0 : _legendsRef_current.toSVG, _useRtl, opts);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
}, []);
|
|
82
68
|
React.useEffect(()=>{
|
|
83
69
|
if (prevPropsRef.current) {
|
|
84
70
|
var _prevProps_legendProps, _props_legendProps;
|
|
@@ -531,31 +517,8 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
531
517
|
tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,
|
|
532
518
|
opacity: shouldHighlight ? 1 : 0.1,
|
|
533
519
|
rx: props.roundCorners ? 3 : 0
|
|
534
|
-
}), _renderBarLabel(xPoint, yPoint, point.y, point.legend, isHeightNegative));
|
|
520
|
+
}), _renderBarLabel(xPoint, yPoint, point.y, point.legend, isHeightNegative, point.barLabel));
|
|
535
521
|
});
|
|
536
|
-
// Removing un wanted tooltip div from DOM, when prop not provided.
|
|
537
|
-
if (!props.showXAxisLablesTooltip) {
|
|
538
|
-
try {
|
|
539
|
-
// eslint-disable-next-line no-restricted-globals
|
|
540
|
-
document.getElementById(_tooltipId) && document.getElementById(_tooltipId).remove();
|
|
541
|
-
// eslint-disable-next-line no-empty
|
|
542
|
-
} catch (e) {}
|
|
543
|
-
}
|
|
544
|
-
// Used to display tooltip at x axis labels.
|
|
545
|
-
if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {
|
|
546
|
-
const xAxisElement = d3Select(xElement).call(xBarScale);
|
|
547
|
-
try {
|
|
548
|
-
// eslint-disable-next-line no-restricted-globals
|
|
549
|
-
document.getElementById(_tooltipId) && document.getElementById(_tooltipId).remove();
|
|
550
|
-
// eslint-disable-next-line no-empty
|
|
551
|
-
} catch (e) {}
|
|
552
|
-
const tooltipProps = {
|
|
553
|
-
tooltipCls: classes.tooltip,
|
|
554
|
-
id: _tooltipId,
|
|
555
|
-
axis: xAxisElement
|
|
556
|
-
};
|
|
557
|
-
xAxisElement && tooltipOfAxislabels(tooltipProps);
|
|
558
|
-
}
|
|
559
522
|
return bars;
|
|
560
523
|
}
|
|
561
524
|
function _createStringBars(containerHeight, containerWidth, xElement) {
|
|
@@ -606,32 +569,8 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
606
569
|
tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,
|
|
607
570
|
rx: props.roundCorners ? 3 : 0,
|
|
608
571
|
opacity: shouldHighlight ? 1 : 0.1
|
|
609
|
-
}), _renderBarLabel(xPoint, yPoint, point.y, point.legend, isHeightNegative));
|
|
572
|
+
}), _renderBarLabel(xPoint, yPoint, point.y, point.legend, isHeightNegative, point.barLabel));
|
|
610
573
|
});
|
|
611
|
-
// Removing un wanted tooltip div from DOM, when prop not provided.
|
|
612
|
-
if (!props.showXAxisLablesTooltip) {
|
|
613
|
-
try {
|
|
614
|
-
// eslint-disable-next-line no-restricted-globals
|
|
615
|
-
document.getElementById(_tooltipId) && document.getElementById(_tooltipId).remove();
|
|
616
|
-
// eslint-disable-next-line no-empty
|
|
617
|
-
} catch (e) {}
|
|
618
|
-
}
|
|
619
|
-
// Used to display tooltip at x axis labels.
|
|
620
|
-
if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {
|
|
621
|
-
const xAxisElement = d3Select(xElement).call(xBarScale);
|
|
622
|
-
try {
|
|
623
|
-
// eslint-disable-next-line no-restricted-globals
|
|
624
|
-
document.getElementById(_tooltipId) && document.getElementById(_tooltipId).remove();
|
|
625
|
-
// eslint-disable-next-line no-empty
|
|
626
|
-
} catch (e) {}
|
|
627
|
-
const tooltipProps = {
|
|
628
|
-
tooltipCls: classes.tooltip,
|
|
629
|
-
id: _tooltipId,
|
|
630
|
-
axis: xAxisElement,
|
|
631
|
-
showTooltip: props.showXAxisLablesTooltip
|
|
632
|
-
};
|
|
633
|
-
xAxisElement && tooltipOfAxislabels(tooltipProps);
|
|
634
|
-
}
|
|
635
574
|
return bars;
|
|
636
575
|
}
|
|
637
576
|
function _createDateBars(containerHeight, containerWidth, xElement) {
|
|
@@ -680,31 +619,8 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
680
619
|
tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,
|
|
681
620
|
rx: props.roundCorners ? 3 : 0,
|
|
682
621
|
opacity: shouldHighlight ? 1 : 0.1
|
|
683
|
-
}), _renderBarLabel(xPoint, yPoint, point.y, point.legend, isHeightNegative));
|
|
622
|
+
}), _renderBarLabel(xPoint, yPoint, point.y, point.legend, isHeightNegative, point.barLabel));
|
|
684
623
|
});
|
|
685
|
-
// Removing un wanted tooltip div from DOM, when prop not provided.
|
|
686
|
-
if (!props.showXAxisLablesTooltip) {
|
|
687
|
-
try {
|
|
688
|
-
// eslint-disable-next-line no-restricted-globals
|
|
689
|
-
document.getElementById(_tooltipId) && document.getElementById(_tooltipId).remove();
|
|
690
|
-
// eslint-disable-next-line no-empty
|
|
691
|
-
} catch (e) {}
|
|
692
|
-
}
|
|
693
|
-
// Used to display tooltip at x axis labels.
|
|
694
|
-
if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {
|
|
695
|
-
const xAxisElement = d3Select(xElement).call(xBarScale);
|
|
696
|
-
try {
|
|
697
|
-
// eslint-disable-next-line no-restricted-globals
|
|
698
|
-
document.getElementById(_tooltipId) && document.getElementById(_tooltipId).remove();
|
|
699
|
-
// eslint-disable-next-line no-empty
|
|
700
|
-
} catch (e) {}
|
|
701
|
-
const tooltipProps = {
|
|
702
|
-
tooltipCls: classes.tooltip,
|
|
703
|
-
id: _tooltipId,
|
|
704
|
-
axis: xAxisElement
|
|
705
|
-
};
|
|
706
|
-
xAxisElement && tooltipOfAxislabels(tooltipProps);
|
|
707
|
-
}
|
|
708
624
|
return bars;
|
|
709
625
|
}
|
|
710
626
|
function _onLegendHover(legendTitle) {
|
|
@@ -809,10 +725,12 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
809
725
|
const lineYValue = ((_point_lineData = point.lineData) === null || _point_lineData === void 0 ? void 0 : _point_lineData.yAxisCalloutData) || ((_point_lineData1 = point.lineData) === null || _point_lineData1 === void 0 ? void 0 : _point_lineData1.y);
|
|
810
726
|
return ((_point_callOutAccessibilityData = point.callOutAccessibilityData) === null || _point_callOutAccessibilityData === void 0 ? void 0 : _point_callOutAccessibilityData.ariaLabel) || `${xValue}. ` + (legend ? `${legend}, ` : '') + `${yValue}.` + (typeof lineYValue !== 'undefined' ? ` ${lineLegend}, ${lineYValue}.` : '');
|
|
811
727
|
}
|
|
812
|
-
function _renderBarLabel(xPoint, yPoint, barValue, legend, isNegativeBar) {
|
|
728
|
+
function _renderBarLabel(xPoint, yPoint, barValue, legend, isNegativeBar, customBarLabel) {
|
|
813
729
|
if (props.hideLabels || _barWidth < 16 || !(_legendHighlighted(legend) || _noLegendHighlighted())) {
|
|
814
730
|
return null;
|
|
815
731
|
}
|
|
732
|
+
// Use custom barLabel if provided, otherwise use the formatted barValue
|
|
733
|
+
const displayLabel = customBarLabel !== undefined ? customBarLabel : typeof props.yAxisTickFormat === 'function' ? props.yAxisTickFormat(barValue) : formatScientificLimitWidth(barValue);
|
|
816
734
|
return /*#__PURE__*/ React.createElement("text", {
|
|
817
735
|
x: xPoint + _barWidth / 2,
|
|
818
736
|
y: isNegativeBar ? yPoint + 12 : yPoint - 6,
|
|
@@ -823,7 +741,7 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
823
741
|
direction: 'ltr',
|
|
824
742
|
unicodeBidi: 'isolate'
|
|
825
743
|
}
|
|
826
|
-
},
|
|
744
|
+
}, displayLabel);
|
|
827
745
|
}
|
|
828
746
|
function _getDomainMargins(containerWidth) {
|
|
829
747
|
var _props_data;
|
|
@@ -899,6 +817,10 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
899
817
|
right: margins.right + _domainMargin
|
|
900
818
|
};
|
|
901
819
|
}
|
|
820
|
+
function _getChartTitle() {
|
|
821
|
+
const { chartTitle, data } = props;
|
|
822
|
+
return (chartTitle ? `${chartTitle}. ` : '') + `Vertical bar chart with ${(data === null || data === void 0 ? void 0 : data.length) || 0} bars` + (_isHavingLine ? ' and 1 line' : '') + '. ';
|
|
823
|
+
}
|
|
902
824
|
function _isChartEmpty() {
|
|
903
825
|
return _points.length === 0 || _points.every((point)=>point.y === 0) && !_isHavingLine;
|
|
904
826
|
}
|
|
@@ -969,6 +891,7 @@ const MIN_DOMAIN_MARGIN = 8;
|
|
|
969
891
|
return !_isChartEmpty() ? /*#__PURE__*/ React.createElement(CartesianChart, {
|
|
970
892
|
...props,
|
|
971
893
|
points: _points,
|
|
894
|
+
chartTitle: _getChartTitle(),
|
|
972
895
|
chartType: ChartTypes.VerticalBarChart,
|
|
973
896
|
xAxisType: _xAxisType,
|
|
974
897
|
createYAxis: createNumericYAxis,
|