@fluentui/react-charting 5.16.8 → 5.16.10

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 (42) hide show
  1. package/CHANGELOG.json +49 -1
  2. package/CHANGELOG.md +23 -2
  3. package/dist/react-charting.js +1 -1
  4. package/dist/react-charting.min.js +1 -1
  5. package/lib/components/AreaChart/AreaChart.base.d.ts +5 -0
  6. package/lib/components/AreaChart/AreaChart.base.js +71 -12
  7. package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
  8. package/lib/components/AreaChart/AreaChart.types.d.ts +1 -0
  9. package/lib/components/AreaChart/AreaChart.types.js.map +1 -1
  10. package/lib/components/Legends/Legends.base.js +13 -5
  11. package/lib/components/Legends/Legends.base.js.map +1 -1
  12. package/lib/components/VerticalBarChart/VerticalBarChart.base.d.ts +2 -0
  13. package/lib/components/VerticalBarChart/VerticalBarChart.base.js +11 -2
  14. package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  15. package/lib/version.js +1 -1
  16. package/lib/version.js.map +1 -1
  17. package/lib-amd/components/AreaChart/AreaChart.base.d.ts +5 -0
  18. package/lib-amd/components/AreaChart/AreaChart.base.js +71 -12
  19. package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
  20. package/lib-amd/components/AreaChart/AreaChart.types.d.ts +1 -0
  21. package/lib-amd/components/AreaChart/AreaChart.types.js.map +1 -1
  22. package/lib-amd/components/Legends/Legends.base.js +13 -5
  23. package/lib-amd/components/Legends/Legends.base.js.map +1 -1
  24. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.d.ts +2 -0
  25. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +11 -2
  26. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  27. package/lib-amd/version.js +1 -1
  28. package/lib-amd/version.js.map +1 -1
  29. package/lib-commonjs/components/AreaChart/AreaChart.base.d.ts +5 -0
  30. package/lib-commonjs/components/AreaChart/AreaChart.base.js +71 -12
  31. package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
  32. package/lib-commonjs/components/AreaChart/AreaChart.types.d.ts +1 -0
  33. package/lib-commonjs/components/AreaChart/AreaChart.types.js.map +1 -1
  34. package/lib-commonjs/components/Legends/Legends.base.js +13 -5
  35. package/lib-commonjs/components/Legends/Legends.base.js.map +1 -1
  36. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.d.ts +2 -0
  37. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +11 -2
  38. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  39. package/lib-commonjs/version.js +1 -1
  40. package/lib-commonjs/version.js.map +1 -1
  41. package/package.json +3 -3
  42. package/src/components/AreaChart/AreaChart.types.ts +5 -0
@@ -10,6 +10,7 @@ export interface IVerticalBarChartState extends IBasestate {
10
10
  hoverXValue?: string | number | null;
11
11
  callOutAccessibilityData?: IAccessibilityProps;
12
12
  calloutLegend: string;
13
+ emptyChart?: boolean;
13
14
  }
14
15
  export declare class VerticalBarChartBase extends React.Component<IVerticalBarChartProps, IVerticalBarChartState> {
15
16
  private _points;
@@ -29,6 +30,7 @@ export declare class VerticalBarChartBase extends React.Component<IVerticalBarCh
29
30
  private _calloutAnchorPoint;
30
31
  private _domainMargin;
31
32
  constructor(props: IVerticalBarChartProps);
33
+ componentDidMount(): void;
32
34
  render(): JSX.Element;
33
35
  private _createLine;
34
36
  private _checkForLine;
@@ -307,6 +307,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-shape", "d3-sele
307
307
  YValueHover: [],
308
308
  hoverXValue: '',
309
309
  calloutLegend: '',
310
+ emptyChart: false,
310
311
  };
311
312
  _this._isHavingLine = _this._checkForLine();
312
313
  _this._calloutId = Utilities_1.getId('callout');
@@ -319,6 +320,14 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-shape", "d3-sele
319
320
  _this._domainMargin = MIN_DOMAIN_MARGIN;
320
321
  return _this;
321
322
  }
323
+ VerticalBarChartBase.prototype.componentDidMount = function () {
324
+ var isChartEmpty = this.state.emptyChart ||
325
+ this._points.length === 0 ||
326
+ (d3_array_1.max(this._points, function (point) { return point.y; }) <= 0 && !this._isHavingLine);
327
+ if (this.state.emptyChart !== isChartEmpty) {
328
+ this.setState({ emptyChart: isChartEmpty });
329
+ }
330
+ };
322
331
  VerticalBarChartBase.prototype.render = function () {
323
332
  var _this = this;
324
333
  this._adjustProps();
@@ -337,14 +346,14 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-shape", "d3-sele
337
346
  tickValues: this.props.tickValues,
338
347
  tickFormat: this.props.tickFormat,
339
348
  };
340
- return (React.createElement(index_1.CartesianChart, tslib_1.__assign({}, this.props, { points: this._points, chartType: index_2.ChartTypes.VerticalBarChart, xAxisType: this._xAxisType, calloutProps: calloutProps, tickParams: tickParams }, (this._isHavingLine && { isCalloutForStack: true }), { legendBars: legendBars, datasetForXAxisDomain: this._xAxisLabels, barwidth: this._barWidth, focusZoneDirection: react_focus_1.FocusZoneDirection.horizontal, customizedCallout: this._getCustomizedCallout(), getmargins: this._getMargins, getGraphData: this._getGraphData, getAxisData: this._getAxisData, onChartMouseLeave: this._handleChartMouseLeave, getDomainMargins: this._getDomainMargins }, (this._xAxisType !== index_2.XAxisTypes.NumericAxis && { xAxisInnerPadding: 2 / 3, xAxisOuterPadding: 0 }), {
349
+ return !this.state.emptyChart ? (React.createElement(index_1.CartesianChart, tslib_1.__assign({}, this.props, { points: this._points, chartType: index_2.ChartTypes.VerticalBarChart, xAxisType: this._xAxisType, calloutProps: calloutProps, tickParams: tickParams }, (this._isHavingLine && { isCalloutForStack: true }), { legendBars: legendBars, datasetForXAxisDomain: this._xAxisLabels, barwidth: this._barWidth, focusZoneDirection: react_focus_1.FocusZoneDirection.horizontal, customizedCallout: this._getCustomizedCallout(), getmargins: this._getMargins, getGraphData: this._getGraphData, getAxisData: this._getAxisData, onChartMouseLeave: this._handleChartMouseLeave, getDomainMargins: this._getDomainMargins }, (this._xAxisType !== index_2.XAxisTypes.NumericAxis && { xAxisInnerPadding: 2 / 3, xAxisOuterPadding: 0 }), {
341
350
  /* eslint-disable react/jsx-no-bind */
342
351
  // eslint-disable-next-line react/no-children-prop
343
352
  children: function (props) {
344
353
  return (React.createElement(React.Fragment, null,
345
354
  React.createElement("g", null, _this._bars),
346
355
  _this._isHavingLine && (React.createElement("g", null, _this._createLine(props.xScale, props.yScale, props.containerHeight, props.containerWidth)))));
347
- } })));
356
+ } }))) : (React.createElement("div", { id: Utilities_1.getId('_VBC_'), role: 'alert', style: { opacity: '0' }, "aria-label": 'Graph has no data to display' }));
348
357
  };
349
358
  VerticalBarChartBase.prototype._adjustProps = function () {
350
359
  this._points = this.props.data || [];
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalBarChart.base.js","sourceRoot":"../src/","sources":["components/VerticalBarChart/VerticalBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { line as d3Line } from 'd3-shape';\nimport { select as d3Select } from 'd3-selection';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear as D3ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\nimport { classNamesFunction, getId, getRTL } from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet, IPalette } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ChartHoverCard,\n IBasestate,\n IMargins,\n ILegend,\n IRefArrayData,\n IVerticalBarChartProps,\n IVerticalBarChartStyleProps,\n IVerticalBarChartStyles,\n IVerticalBarChartDataPoint,\n Legends,\n IChildProps,\n IYValueHover,\n} from '../../index';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n NumericAxis,\n StringAxis,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n} from '../../utilities/index';\nimport { formatPrefix as d3FormatPrefix } from 'd3-format';\n\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\nconst getClassNames = classNamesFunction<IVerticalBarChartStyleProps, IVerticalBarChartStyles>();\n\nconst MIN_DOMAIN_MARGIN = 8;\n\nexport interface IVerticalBarChartState extends IBasestate {\n dataPointCalloutProps?: IVerticalBarChartDataPoint; // define this in hover and focus\n /**\n * data point of x, where rectangle is hovered or focused\n */\n activeXdataPoint: number | string | null;\n YValueHover: IYValueHover[];\n hoverXValue?: string | number | null;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n}\n\ntype ColorScale = (_p?: number) => string;\n\nexport class VerticalBarChartBase extends React.Component<IVerticalBarChartProps, IVerticalBarChartState> {\n private _points: IVerticalBarChartDataPoint[];\n private _barWidth: number;\n private _colors: string[];\n private _classNames: IProcessedStyleSet<IVerticalBarChartStyles>;\n private _refArray: IRefArrayData[];\n private _calloutId: string;\n private margins: IMargins;\n private _isRtl: boolean = getRTL();\n private _bars: JSX.Element[];\n private _xAxisLabels: string[];\n private _yMax: number;\n private _isHavingLine: boolean;\n private _tooltipId: string;\n private _xAxisType: XAxisTypes;\n private _calloutAnchorPoint: IVerticalBarChartDataPoint | null;\n private _domainMargin: number;\n\n public constructor(props: IVerticalBarChartProps) {\n super(props);\n this.state = {\n color: '',\n dataForHoverCard: 0,\n isCalloutVisible: false,\n refSelected: null,\n selectedLegend: '',\n activeLegend: '',\n xCalloutValue: '',\n yCalloutValue: '',\n activeXdataPoint: null,\n YValueHover: [],\n hoverXValue: '',\n calloutLegend: '',\n };\n this._isHavingLine = this._checkForLine();\n this._calloutId = getId('callout');\n this._tooltipId = getId('VCTooltipID_');\n this._refArray = [];\n this._xAxisType =\n this.props.data! && this.props.data!.length > 0\n ? (getTypeOfAxis(this.props.data![0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n this._domainMargin = MIN_DOMAIN_MARGIN;\n }\n\n public render(): JSX.Element {\n this._adjustProps();\n this._xAxisLabels = this._points.map((point: IVerticalBarChartDataPoint) => point.x as string);\n this._yMax = Math.max(\n d3Max(this._points, (point: IVerticalBarChartDataPoint) => point.y)!,\n this.props.yMaxValue || 0,\n );\n const legendBars: JSX.Element = this._getLegendData(this._points, this.props.theme!.palette);\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n legendColor: this.state.color,\n });\n const calloutProps = {\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n target: this.state.refSelected,\n isBeakVisible: false,\n ...(this._isHavingLine && {\n YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n }),\n gapSpace: 15,\n color: this.state.color,\n legend: this.state.calloutLegend,\n XValue: this.state.xCalloutValue,\n YValue: this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard,\n onDismiss: this._closeCallout,\n preventDismissOnLostFocus: true,\n ...this.props.calloutProps,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData),\n };\n const tickParams = {\n tickValues: this.props.tickValues,\n tickFormat: this.props.tickFormat,\n };\n return (\n <CartesianChart\n {...this.props}\n points={this._points}\n chartType={ChartTypes.VerticalBarChart}\n xAxisType={this._xAxisType}\n calloutProps={calloutProps}\n tickParams={tickParams}\n {...(this._isHavingLine && { isCalloutForStack: true })}\n legendBars={legendBars}\n datasetForXAxisDomain={this._xAxisLabels}\n barwidth={this._barWidth}\n focusZoneDirection={FocusZoneDirection.horizontal}\n customizedCallout={this._getCustomizedCallout()}\n getmargins={this._getMargins}\n getGraphData={this._getGraphData}\n getAxisData={this._getAxisData}\n onChartMouseLeave={this._handleChartMouseLeave}\n getDomainMargins={this._getDomainMargins}\n {...(this._xAxisType !== XAxisTypes.NumericAxis && { xAxisInnerPadding: 2 / 3, xAxisOuterPadding: 0 })}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: IChildProps) => {\n return (\n <>\n <g>{this._bars}</g>\n {this._isHavingLine && (\n <g>{this._createLine(props.xScale!, props.yScale!, props.containerHeight, props.containerWidth)}</g>\n )}\n </>\n );\n }}\n />\n );\n }\n\n private _createLine = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScale: any,\n containerHeight: number = 0,\n containerWidth: number = 0,\n ): React.ReactNode => {\n const isNumericAxis = this._xAxisType === XAxisTypes.NumericAxis;\n const { xBarScale } = this._getScales(containerHeight, containerWidth, isNumericAxis);\n const colorScale = this._createColors();\n const { theme } = this.props;\n const { data, lineLegendColor = theme!.palette.yellow, lineLegendText } = this.props;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const lineData: Array<any> = [];\n const line: JSX.Element[] = [];\n data &&\n data.forEach((item: IVerticalBarChartDataPoint, index: number) => {\n if (item.lineData && item.lineData.y) {\n lineData.push({ x: item.x, y: item.lineData!.y, point: item, index });\n }\n });\n const linePath = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => (!isNumericAxis ? xBarScale(d.x) + 0.5 * xBarScale.bandwidth() : xScale(d.x)))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d.y));\n const shouldHighlight = this._legendHighlighted(lineLegendText!) || this._noLegendHighlighted() ? true : false;\n const lineBorderWidth = this.props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(this.props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n\n if (lineBorderWidth > 0) {\n line.push(\n <path\n opacity={shouldHighlight ? 1 : 0.1}\n d={linePath(lineData)!}\n fill=\"transparent\"\n strokeLinecap=\"square\"\n strokeWidth={3 + lineBorderWidth * 2}\n stroke={theme!.palette.white}\n />,\n );\n }\n line.push(\n <path\n opacity={shouldHighlight ? 1 : 0.1}\n d={linePath(lineData)!}\n fill=\"transparent\"\n strokeLinecap=\"square\"\n strokeWidth={3}\n stroke={lineLegendColor}\n />,\n );\n\n const dots: React.ReactNode[] = lineData.map(\n (item: { x: number | string; y: number; point: IVerticalBarChartDataPoint; index: number }, index: number) => {\n return (\n <circle\n key={index}\n cx={!isNumericAxis ? xBarScale(item.x) + 0.5 * xBarScale.bandwidth() : xScale(item.x)}\n cy={yScale(item.y)}\n onMouseOver={this._onBarHover.bind(this, item.point, colorScale(item.y))}\n onMouseOut={this._onBarLeave}\n r={8}\n stroke={lineLegendColor}\n fill={this.props.theme!.palette.white}\n strokeWidth={3}\n visibility={this.state.activeXdataPoint === item.x ? CircleVisbility.show : CircleVisbility.hide}\n onClick={item.point.lineData?.onClick}\n />\n );\n },\n );\n\n return (\n <>\n {line}\n {dots}\n </>\n );\n };\n\n private _checkForLine = (): boolean => {\n const { data } = this.props;\n return data!.some((item: IVerticalBarChartDataPoint) => item?.lineData?.y !== undefined);\n };\n\n private _adjustProps(): void {\n this._points = this.props.data || [];\n this._barWidth = this.props.barWidth || 16;\n const { palette } = this.props.theme!;\n this._colors = this.props.colors || [palette.blueLight, palette.blue, palette.blueMid, palette.blueDark];\n this._isHavingLine = this._checkForLine();\n }\n\n private _getMargins = (margins: IMargins) => {\n this.margins = margins;\n };\n\n private _renderContentForBothLineAndBars = (point: IVerticalBarChartDataPoint): JSX.Element => {\n const { YValueHover, hoverXValue } = this._getCalloutContentForLineAndBar(point);\n const content: JSX.Element[] = YValueHover.map((item: IYValueHover, index: number) => {\n return (\n <ChartHoverCard\n key={index}\n Legend={item.legend}\n {...(index === 0 && { XValue: `${hoverXValue || item.data}` })}\n color={item.color}\n YValue={item.data || item.y}\n culture={this.props.culture}\n />\n );\n });\n return <>{content}</>;\n };\n private _renderContentForOnlyBars = (props: IVerticalBarChartDataPoint): JSX.Element => {\n const { useSingleColor = false } = this.props;\n return (\n <>\n <ChartHoverCard\n XValue={props.xAxisCalloutData || (props.x as string)}\n Legend={props.legend}\n YValue={props.yAxisCalloutData || props.y}\n color={!useSingleColor && props.color ? props.color : this._createColors()(props.y)}\n culture={this.props.culture}\n />\n </>\n );\n };\n\n private _renderCallout = (props?: IVerticalBarChartDataPoint): JSX.Element | null => {\n return props\n ? this._isHavingLine\n ? this._renderContentForBothLineAndBars(props)\n : this._renderContentForOnlyBars(props)\n : null;\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps, this._renderCallout)\n : null;\n };\n\n private _getGraphData = (\n xScale: StringAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n ) => {\n return (this._bars =\n this._xAxisType === XAxisTypes.NumericAxis\n ? this._createNumericBars(containerHeight, containerWidth, xElement!)\n : this._createStringBars(containerHeight, containerWidth, xElement!));\n };\n\n private _createColors(): D3ScaleLinear<string, string> | ColorScale {\n const increment = this._colors.length <= 1 ? 1 : 1 / (this._colors.length - 1);\n const { useSingleColor = false } = this.props;\n if (useSingleColor) {\n return (_p?: number) => {\n const { theme, colors } = this.props;\n return colors && colors.length > 0 ? colors[0] : theme!.palette.blueLight;\n };\n }\n const domainValues = [];\n for (let i = 0; i < this._colors.length; i++) {\n domainValues.push(increment * i * this._yMax);\n }\n const colorScale = d3ScaleLinear<string>().domain(domainValues).range(this._colors);\n return colorScale;\n }\n\n private _refCallback = (element: SVGRectElement, legendTitle: string): void => {\n this._refArray.push({ index: legendTitle, refElement: element });\n };\n\n private _getCalloutContentForLineAndBar = (\n point: IVerticalBarChartDataPoint,\n ): { YValueHover: IYValueHover[]; hoverXValue: string | number | null } => {\n const YValueHover: IYValueHover[] = [];\n const { theme, useSingleColor = false } = this.props;\n const { data, lineLegendText, lineLegendColor = theme!.palette.yellow } = this.props;\n const selectedPoint = data!.filter((xDataPoint: IVerticalBarChartDataPoint) => xDataPoint.x === point.x);\n // there might be no y value of the line for the hovered bar. so we need to check this condition\n if (this._isHavingLine && selectedPoint[0].lineData?.y !== undefined) {\n // callout data for the line\n YValueHover.push({\n legend: lineLegendText,\n color: lineLegendColor,\n y: selectedPoint[0].lineData?.y,\n data: selectedPoint[0].lineData?.yAxisCalloutData,\n yAxisCalloutData: selectedPoint[0].lineData?.yAxisCalloutData,\n });\n }\n // callout data for the bar\n YValueHover.push({\n legend: selectedPoint[0].legend,\n y: selectedPoint[0].y,\n color: !useSingleColor\n ? selectedPoint[0].color\n ? selectedPoint[0].color\n : this._createColors()(selectedPoint[0].y)\n : this._createColors()(1),\n data: selectedPoint[0].yAxisCalloutData,\n yAxisCalloutData: selectedPoint[0].yAxisCalloutData,\n });\n return { YValueHover, hoverXValue: point.xAxisCalloutData || point.x.toString() };\n };\n\n private _onBarHover(\n point: IVerticalBarChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n\n const { YValueHover, hoverXValue } = this._getCalloutContentForLineAndBar(point);\n if (this._calloutAnchorPoint !== point) {\n this._calloutAnchorPoint = point;\n this.setState({\n refSelected: mouseEvent,\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend,\n dataForHoverCard: point.y,\n calloutLegend: point.legend!,\n color: point.color || color,\n // To display callout value, if no callout value given, taking given point.x value as a string.\n xCalloutValue: point.xAxisCalloutData || point.x.toString(),\n yCalloutValue: point.yAxisCalloutData!,\n dataPointCalloutProps: point,\n activeXdataPoint: point.x,\n YValueHover,\n hoverXValue,\n callOutAccessibilityData: point.callOutAccessibilityData,\n });\n }\n }\n\n private _onBarLeave = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({\n isCalloutVisible: false,\n activeXdataPoint: null,\n YValueHover: [],\n hoverXValue: '',\n });\n };\n\n private _onBarFocus = (point: IVerticalBarChartDataPoint, refArrayIndexNumber: number, color: string): void => {\n const { YValueHover, hoverXValue } = this._getCalloutContentForLineAndBar(point);\n this._refArray.forEach((obj: IRefArrayData, index: number) => {\n if (obj.index === point.legend! && refArrayIndexNumber === index) {\n this.setState({\n refSelected: obj.refElement,\n /** Show the callout if highlighted bar is focused and Hide it if unhighlighted bar is focused */\n isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend,\n calloutLegend: point.legend!,\n dataForHoverCard: point.y,\n color: point.color || color,\n xCalloutValue: point.xAxisCalloutData || point.x.toString(),\n yCalloutValue: point.yAxisCalloutData!,\n dataPointCalloutProps: point,\n activeXdataPoint: point.x,\n YValueHover,\n hoverXValue,\n callOutAccessibilityData: point.callOutAccessibilityData,\n });\n }\n });\n };\n\n private _getScales = (\n containerHeight: number,\n containerWidth: number,\n isNumericScale: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): { xBarScale: any; yBarScale: any } => {\n if (isNumericScale) {\n const xMax = d3Max(this._points, (point: IVerticalBarChartDataPoint) => point.x as number)!;\n const xMin = d3Min(this._points, (point: IVerticalBarChartDataPoint) => point.x as number)!;\n const xBarScale = d3ScaleLinear()\n .domain(this._isRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([\n this.margins.left! + this._domainMargin,\n containerWidth - this.margins.right! - this._barWidth - this._domainMargin,\n ]);\n const yBarScale = d3ScaleLinear()\n .domain([0, this._yMax])\n .range([0, containerHeight - this.margins.bottom! - this.margins.top!]);\n return { xBarScale, yBarScale };\n } else {\n const xBarScale = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range([this.margins.left! + this._domainMargin, containerWidth - this.margins.right! - this._domainMargin])\n .paddingInner(2 / 3);\n\n const yBarScale = d3ScaleLinear()\n .domain([0, this._yMax])\n .range([0, containerHeight - this.margins.bottom! - this.margins.top!]);\n return { xBarScale, yBarScale };\n }\n };\n\n private _createNumericBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { useSingleColor = false } = this.props;\n const { xBarScale, yBarScale } = this._getScales(containerHeight, containerWidth, true);\n const colorScale = this._createColors();\n const bars = this._points.map((point: IVerticalBarChartDataPoint, index: number) => {\n const shouldHighlight = this._legendHighlighted(point.legend!) || this._noLegendHighlighted() ? true : false;\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n legendColor: this.state.color,\n shouldHighlight: shouldHighlight,\n });\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n const xPoint = xBarScale(point.x as number);\n const yPoint = containerHeight - this.margins.bottom! - yBarScale(point.y);\n return (\n <g key={point.x}>\n <rect\n x={xPoint}\n className={this._classNames.opacityChangeOnHover}\n y={yPoint}\n width={this._barWidth}\n data-is-focusable={!this.props.hideTooltip}\n height={barHeight}\n ref={(e: SVGRectElement) => {\n this._refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={this._onBarHover.bind(this, point, colorScale(point.y))}\n aria-label={this._getAriaLabel(point)}\n role=\"img\"\n onMouseLeave={this._onBarLeave}\n onFocus={this._onBarFocus.bind(this, point, index, colorScale(point.y))}\n onBlur={this._onBarLeave}\n fill={point.color && !useSingleColor ? point.color : colorScale(point.y)}\n />\n {this._renderBarLabel(xPoint, yPoint, point.y)}\n </g>\n );\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!this.props.showXAxisLablesTooltip) {\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: this._classNames.tooltip!,\n id: this._tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars;\n }\n\n private _createStringBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { xBarScale, yBarScale } = this._getScales(containerHeight, containerWidth, false);\n const colorScale = this._createColors();\n const bars = this._points.map((point: IVerticalBarChartDataPoint, index: number) => {\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n const xPoint = xBarScale(point.x);\n const yPoint = containerHeight - this.margins.bottom! - yBarScale(point.y);\n return (\n <g key={point.x} transform={`translate(${0.5 * (xBarScale.bandwidth() - this._barWidth)}, 0)`}>\n <rect\n x={xPoint}\n y={yPoint}\n width={this._barWidth}\n height={barHeight}\n aria-label={this._getAriaLabel(point)}\n role=\"img\"\n ref={(e: SVGRectElement) => {\n this._refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={this._onBarHover.bind(this, point, colorScale(point.y))}\n onMouseLeave={this._onBarLeave}\n onBlur={this._onBarLeave}\n data-is-focusable={!this.props.hideTooltip}\n onFocus={this._onBarFocus.bind(this, point, index, colorScale(point.y))}\n fill={point.color ? point.color : colorScale(point.y)}\n />\n {this._renderBarLabel(xPoint, yPoint, point.y)}\n </g>\n );\n });\n\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!this.props.showXAxisLablesTooltip) {\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: this._classNames.tooltip!,\n id: this._tooltipId,\n xAxis: xAxisElement,\n showTooltip: this.props.showXAxisLablesTooltip,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars;\n }\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n private _onLegendClick(legendTitle: string): void {\n if (this.state.selectedLegend === legendTitle) {\n this.setState({\n selectedLegend: '',\n });\n } else {\n this.setState({\n selectedLegend: legendTitle,\n });\n }\n }\n\n private _onLegendHover(legendTitle: string): void {\n this.setState({\n activeLegend: legendTitle,\n });\n }\n\n private _onLegendLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _getLegendData = (data: IVerticalBarChartDataPoint[], palette: IPalette): JSX.Element => {\n const { theme, useSingleColor } = this.props;\n const { lineLegendText, lineLegendColor = theme!.palette.yellow } = this.props;\n const actions: ILegend[] = [];\n data.forEach((point: IVerticalBarChartDataPoint, _index: number) => {\n const color: string = !useSingleColor ? point.color! : this._createColors()(1);\n // mapping data to the format Legends component needs\n const legend: ILegend = {\n title: point.legend!,\n color: color,\n action: () => {\n this._onLegendClick(point.legend!);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(point.legend!);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n };\n actions.push(legend);\n });\n if (this._isHavingLine && lineLegendText && lineLegendColor) {\n const lineLegend: ILegend = {\n title: lineLegendText,\n color: lineLegendColor,\n action: () => {\n this._onLegendClick(lineLegendText);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(lineLegendText);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n isLineLegendInBarChart: true,\n };\n actions.unshift(lineLegend);\n }\n const legends = (\n <Legends\n legends={actions}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n overflowProps={this.props.legendsOverflowProps}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n overflowText={this.props.legendsOverflowText}\n {...this.props.legendProps}\n />\n );\n return legends;\n };\n\n private _getAxisData = (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n this._yMax = Math.max(domainValue[domainValue.length - 1], this.props.yMaxValue || 0);\n }\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legendTitle: string) => {\n return (\n this.state.selectedLegend === legendTitle ||\n (this.state.selectedLegend === '' && this.state.activeLegend === legendTitle)\n );\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this.state.selectedLegend === '' && this.state.activeLegend === '';\n };\n\n private _getAriaLabel = (point: IVerticalBarChartDataPoint): string => {\n const xValue = point.xAxisCalloutData || point.x;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.y;\n const lineLegend = this.props.lineLegendText || 'Line';\n const lineYValue = point.lineData?.yAxisCalloutData || point.lineData?.y;\n return (\n point.callOutAccessibilityData?.ariaLabel ||\n `${xValue}. ` +\n (legend ? `${legend}, ` : '') +\n `${yValue}.` +\n (typeof lineYValue !== 'undefined' ? ` ${lineLegend}, ${lineYValue}.` : '')\n );\n };\n\n private _renderBarLabel(xPoint: number, yPoint: number, barValue: number) {\n if (this.props.hideLabels || this._barWidth < 16) {\n return null;\n }\n\n return (\n <text\n x={xPoint + this._barWidth / 2}\n y={yPoint - 6}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {d3FormatPrefix(barValue < 1000 ? '.2~' : '.1', barValue)(barValue)}\n </text>\n );\n }\n\n private _getDomainMargins = (containerWidth: number): IMargins => {\n if (this._xAxisType !== XAxisTypes.NumericAxis) {\n /** Total width available to render the bars */\n const totalWidth =\n containerWidth - (this.margins.left! + MIN_DOMAIN_MARGIN) - (this.margins.right! + MIN_DOMAIN_MARGIN);\n let barWidth = Math.min(this.props.barWidth || 16, 24);\n /** Total width required to render the bars. Directly proportional to bar width */\n const reqWidth = (3 * this._xAxisLabels.length - 2) * barWidth;\n\n this._domainMargin = MIN_DOMAIN_MARGIN;\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n this._domainMargin += (totalWidth - reqWidth) / 2;\n } else {\n /** Maximum possible bar width to maintain 2:1 spacing */\n const maxBandwidth = totalWidth / (3 * this._xAxisLabels.length - 2);\n barWidth = maxBandwidth;\n }\n this._barWidth = barWidth;\n }\n\n return {\n ...this.margins,\n left: this.margins.left! + this._domainMargin,\n right: this.margins.right! + this._domainMargin,\n };\n };\n}\n"]}
1
+ {"version":3,"file":"VerticalBarChart.base.js","sourceRoot":"../src/","sources":["components/VerticalBarChart/VerticalBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { line as d3Line } from 'd3-shape';\nimport { select as d3Select } from 'd3-selection';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear as D3ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\nimport { classNamesFunction, getId, getRTL } from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet, IPalette } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ChartHoverCard,\n IBasestate,\n IMargins,\n ILegend,\n IRefArrayData,\n IVerticalBarChartProps,\n IVerticalBarChartStyleProps,\n IVerticalBarChartStyles,\n IVerticalBarChartDataPoint,\n Legends,\n IChildProps,\n IYValueHover,\n} from '../../index';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n NumericAxis,\n StringAxis,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n} from '../../utilities/index';\nimport { formatPrefix as d3FormatPrefix } from 'd3-format';\n\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\nconst getClassNames = classNamesFunction<IVerticalBarChartStyleProps, IVerticalBarChartStyles>();\n\nconst MIN_DOMAIN_MARGIN = 8;\n\nexport interface IVerticalBarChartState extends IBasestate {\n dataPointCalloutProps?: IVerticalBarChartDataPoint; // define this in hover and focus\n /**\n * data point of x, where rectangle is hovered or focused\n */\n activeXdataPoint: number | string | null;\n YValueHover: IYValueHover[];\n hoverXValue?: string | number | null;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n emptyChart?: boolean;\n}\n\ntype ColorScale = (_p?: number) => string;\n\nexport class VerticalBarChartBase extends React.Component<IVerticalBarChartProps, IVerticalBarChartState> {\n private _points: IVerticalBarChartDataPoint[];\n private _barWidth: number;\n private _colors: string[];\n private _classNames: IProcessedStyleSet<IVerticalBarChartStyles>;\n private _refArray: IRefArrayData[];\n private _calloutId: string;\n private margins: IMargins;\n private _isRtl: boolean = getRTL();\n private _bars: JSX.Element[];\n private _xAxisLabels: string[];\n private _yMax: number;\n private _isHavingLine: boolean;\n private _tooltipId: string;\n private _xAxisType: XAxisTypes;\n private _calloutAnchorPoint: IVerticalBarChartDataPoint | null;\n private _domainMargin: number;\n\n public constructor(props: IVerticalBarChartProps) {\n super(props);\n this.state = {\n color: '',\n dataForHoverCard: 0,\n isCalloutVisible: false,\n refSelected: null,\n selectedLegend: '',\n activeLegend: '',\n xCalloutValue: '',\n yCalloutValue: '',\n activeXdataPoint: null,\n YValueHover: [],\n hoverXValue: '',\n calloutLegend: '',\n emptyChart: false,\n };\n this._isHavingLine = this._checkForLine();\n this._calloutId = getId('callout');\n this._tooltipId = getId('VCTooltipID_');\n this._refArray = [];\n this._xAxisType =\n this.props.data! && this.props.data!.length > 0\n ? (getTypeOfAxis(this.props.data![0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n this._domainMargin = MIN_DOMAIN_MARGIN;\n }\n\n public componentDidMount(): void {\n const isChartEmpty =\n this.state.emptyChart ||\n this._points.length === 0 ||\n (d3Max(this._points, (point: IVerticalBarChartDataPoint) => point.y)! <= 0 && !this._isHavingLine);\n if (this.state.emptyChart !== isChartEmpty) {\n this.setState({ emptyChart: isChartEmpty });\n }\n }\n\n public render(): JSX.Element {\n this._adjustProps();\n this._xAxisLabels = this._points.map((point: IVerticalBarChartDataPoint) => point.x as string);\n this._yMax = Math.max(\n d3Max(this._points, (point: IVerticalBarChartDataPoint) => point.y)!,\n this.props.yMaxValue || 0,\n );\n const legendBars: JSX.Element = this._getLegendData(this._points, this.props.theme!.palette);\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n legendColor: this.state.color,\n });\n const calloutProps = {\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n target: this.state.refSelected,\n isBeakVisible: false,\n ...(this._isHavingLine && {\n YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n }),\n gapSpace: 15,\n color: this.state.color,\n legend: this.state.calloutLegend,\n XValue: this.state.xCalloutValue,\n YValue: this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard,\n onDismiss: this._closeCallout,\n preventDismissOnLostFocus: true,\n ...this.props.calloutProps,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData),\n };\n const tickParams = {\n tickValues: this.props.tickValues,\n tickFormat: this.props.tickFormat,\n };\n return !this.state.emptyChart ? (\n <CartesianChart\n {...this.props}\n points={this._points}\n chartType={ChartTypes.VerticalBarChart}\n xAxisType={this._xAxisType}\n calloutProps={calloutProps}\n tickParams={tickParams}\n {...(this._isHavingLine && { isCalloutForStack: true })}\n legendBars={legendBars}\n datasetForXAxisDomain={this._xAxisLabels}\n barwidth={this._barWidth}\n focusZoneDirection={FocusZoneDirection.horizontal}\n customizedCallout={this._getCustomizedCallout()}\n getmargins={this._getMargins}\n getGraphData={this._getGraphData}\n getAxisData={this._getAxisData}\n onChartMouseLeave={this._handleChartMouseLeave}\n getDomainMargins={this._getDomainMargins}\n {...(this._xAxisType !== XAxisTypes.NumericAxis && { xAxisInnerPadding: 2 / 3, xAxisOuterPadding: 0 })}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: IChildProps) => {\n return (\n <>\n <g>{this._bars}</g>\n {this._isHavingLine && (\n <g>{this._createLine(props.xScale!, props.yScale!, props.containerHeight, props.containerWidth)}</g>\n )}\n </>\n );\n }}\n />\n ) : (\n <div id={getId('_VBC_')} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n }\n\n private _createLine = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScale: any,\n containerHeight: number = 0,\n containerWidth: number = 0,\n ): React.ReactNode => {\n const isNumericAxis = this._xAxisType === XAxisTypes.NumericAxis;\n const { xBarScale } = this._getScales(containerHeight, containerWidth, isNumericAxis);\n const colorScale = this._createColors();\n const { theme } = this.props;\n const { data, lineLegendColor = theme!.palette.yellow, lineLegendText } = this.props;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const lineData: Array<any> = [];\n const line: JSX.Element[] = [];\n data &&\n data.forEach((item: IVerticalBarChartDataPoint, index: number) => {\n if (item.lineData && item.lineData.y) {\n lineData.push({ x: item.x, y: item.lineData!.y, point: item, index });\n }\n });\n const linePath = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => (!isNumericAxis ? xBarScale(d.x) + 0.5 * xBarScale.bandwidth() : xScale(d.x)))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d.y));\n const shouldHighlight = this._legendHighlighted(lineLegendText!) || this._noLegendHighlighted() ? true : false;\n const lineBorderWidth = this.props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(this.props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n\n if (lineBorderWidth > 0) {\n line.push(\n <path\n opacity={shouldHighlight ? 1 : 0.1}\n d={linePath(lineData)!}\n fill=\"transparent\"\n strokeLinecap=\"square\"\n strokeWidth={3 + lineBorderWidth * 2}\n stroke={theme!.palette.white}\n />,\n );\n }\n line.push(\n <path\n opacity={shouldHighlight ? 1 : 0.1}\n d={linePath(lineData)!}\n fill=\"transparent\"\n strokeLinecap=\"square\"\n strokeWidth={3}\n stroke={lineLegendColor}\n />,\n );\n\n const dots: React.ReactNode[] = lineData.map(\n (item: { x: number | string; y: number; point: IVerticalBarChartDataPoint; index: number }, index: number) => {\n return (\n <circle\n key={index}\n cx={!isNumericAxis ? xBarScale(item.x) + 0.5 * xBarScale.bandwidth() : xScale(item.x)}\n cy={yScale(item.y)}\n onMouseOver={this._onBarHover.bind(this, item.point, colorScale(item.y))}\n onMouseOut={this._onBarLeave}\n r={8}\n stroke={lineLegendColor}\n fill={this.props.theme!.palette.white}\n strokeWidth={3}\n visibility={this.state.activeXdataPoint === item.x ? CircleVisbility.show : CircleVisbility.hide}\n onClick={item.point.lineData?.onClick}\n />\n );\n },\n );\n\n return (\n <>\n {line}\n {dots}\n </>\n );\n };\n\n private _checkForLine = (): boolean => {\n const { data } = this.props;\n return data!.some((item: IVerticalBarChartDataPoint) => item?.lineData?.y !== undefined);\n };\n\n private _adjustProps(): void {\n this._points = this.props.data || [];\n this._barWidth = this.props.barWidth || 16;\n const { palette } = this.props.theme!;\n this._colors = this.props.colors || [palette.blueLight, palette.blue, palette.blueMid, palette.blueDark];\n this._isHavingLine = this._checkForLine();\n }\n\n private _getMargins = (margins: IMargins) => {\n this.margins = margins;\n };\n\n private _renderContentForBothLineAndBars = (point: IVerticalBarChartDataPoint): JSX.Element => {\n const { YValueHover, hoverXValue } = this._getCalloutContentForLineAndBar(point);\n const content: JSX.Element[] = YValueHover.map((item: IYValueHover, index: number) => {\n return (\n <ChartHoverCard\n key={index}\n Legend={item.legend}\n {...(index === 0 && { XValue: `${hoverXValue || item.data}` })}\n color={item.color}\n YValue={item.data || item.y}\n culture={this.props.culture}\n />\n );\n });\n return <>{content}</>;\n };\n private _renderContentForOnlyBars = (props: IVerticalBarChartDataPoint): JSX.Element => {\n const { useSingleColor = false } = this.props;\n return (\n <>\n <ChartHoverCard\n XValue={props.xAxisCalloutData || (props.x as string)}\n Legend={props.legend}\n YValue={props.yAxisCalloutData || props.y}\n color={!useSingleColor && props.color ? props.color : this._createColors()(props.y)}\n culture={this.props.culture}\n />\n </>\n );\n };\n\n private _renderCallout = (props?: IVerticalBarChartDataPoint): JSX.Element | null => {\n return props\n ? this._isHavingLine\n ? this._renderContentForBothLineAndBars(props)\n : this._renderContentForOnlyBars(props)\n : null;\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps, this._renderCallout)\n : null;\n };\n\n private _getGraphData = (\n xScale: StringAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n ) => {\n return (this._bars =\n this._xAxisType === XAxisTypes.NumericAxis\n ? this._createNumericBars(containerHeight, containerWidth, xElement!)\n : this._createStringBars(containerHeight, containerWidth, xElement!));\n };\n\n private _createColors(): D3ScaleLinear<string, string> | ColorScale {\n const increment = this._colors.length <= 1 ? 1 : 1 / (this._colors.length - 1);\n const { useSingleColor = false } = this.props;\n if (useSingleColor) {\n return (_p?: number) => {\n const { theme, colors } = this.props;\n return colors && colors.length > 0 ? colors[0] : theme!.palette.blueLight;\n };\n }\n const domainValues = [];\n for (let i = 0; i < this._colors.length; i++) {\n domainValues.push(increment * i * this._yMax);\n }\n const colorScale = d3ScaleLinear<string>().domain(domainValues).range(this._colors);\n return colorScale;\n }\n\n private _refCallback = (element: SVGRectElement, legendTitle: string): void => {\n this._refArray.push({ index: legendTitle, refElement: element });\n };\n\n private _getCalloutContentForLineAndBar = (\n point: IVerticalBarChartDataPoint,\n ): { YValueHover: IYValueHover[]; hoverXValue: string | number | null } => {\n const YValueHover: IYValueHover[] = [];\n const { theme, useSingleColor = false } = this.props;\n const { data, lineLegendText, lineLegendColor = theme!.palette.yellow } = this.props;\n const selectedPoint = data!.filter((xDataPoint: IVerticalBarChartDataPoint) => xDataPoint.x === point.x);\n // there might be no y value of the line for the hovered bar. so we need to check this condition\n if (this._isHavingLine && selectedPoint[0].lineData?.y !== undefined) {\n // callout data for the line\n YValueHover.push({\n legend: lineLegendText,\n color: lineLegendColor,\n y: selectedPoint[0].lineData?.y,\n data: selectedPoint[0].lineData?.yAxisCalloutData,\n yAxisCalloutData: selectedPoint[0].lineData?.yAxisCalloutData,\n });\n }\n // callout data for the bar\n YValueHover.push({\n legend: selectedPoint[0].legend,\n y: selectedPoint[0].y,\n color: !useSingleColor\n ? selectedPoint[0].color\n ? selectedPoint[0].color\n : this._createColors()(selectedPoint[0].y)\n : this._createColors()(1),\n data: selectedPoint[0].yAxisCalloutData,\n yAxisCalloutData: selectedPoint[0].yAxisCalloutData,\n });\n return { YValueHover, hoverXValue: point.xAxisCalloutData || point.x.toString() };\n };\n\n private _onBarHover(\n point: IVerticalBarChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n\n const { YValueHover, hoverXValue } = this._getCalloutContentForLineAndBar(point);\n if (this._calloutAnchorPoint !== point) {\n this._calloutAnchorPoint = point;\n this.setState({\n refSelected: mouseEvent,\n /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */\n isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend,\n dataForHoverCard: point.y,\n calloutLegend: point.legend!,\n color: point.color || color,\n // To display callout value, if no callout value given, taking given point.x value as a string.\n xCalloutValue: point.xAxisCalloutData || point.x.toString(),\n yCalloutValue: point.yAxisCalloutData!,\n dataPointCalloutProps: point,\n activeXdataPoint: point.x,\n YValueHover,\n hoverXValue,\n callOutAccessibilityData: point.callOutAccessibilityData,\n });\n }\n }\n\n private _onBarLeave = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({\n isCalloutVisible: false,\n activeXdataPoint: null,\n YValueHover: [],\n hoverXValue: '',\n });\n };\n\n private _onBarFocus = (point: IVerticalBarChartDataPoint, refArrayIndexNumber: number, color: string): void => {\n const { YValueHover, hoverXValue } = this._getCalloutContentForLineAndBar(point);\n this._refArray.forEach((obj: IRefArrayData, index: number) => {\n if (obj.index === point.legend! && refArrayIndexNumber === index) {\n this.setState({\n refSelected: obj.refElement,\n /** Show the callout if highlighted bar is focused and Hide it if unhighlighted bar is focused */\n isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend,\n calloutLegend: point.legend!,\n dataForHoverCard: point.y,\n color: point.color || color,\n xCalloutValue: point.xAxisCalloutData || point.x.toString(),\n yCalloutValue: point.yAxisCalloutData!,\n dataPointCalloutProps: point,\n activeXdataPoint: point.x,\n YValueHover,\n hoverXValue,\n callOutAccessibilityData: point.callOutAccessibilityData,\n });\n }\n });\n };\n\n private _getScales = (\n containerHeight: number,\n containerWidth: number,\n isNumericScale: boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): { xBarScale: any; yBarScale: any } => {\n if (isNumericScale) {\n const xMax = d3Max(this._points, (point: IVerticalBarChartDataPoint) => point.x as number)!;\n const xMin = d3Min(this._points, (point: IVerticalBarChartDataPoint) => point.x as number)!;\n const xBarScale = d3ScaleLinear()\n .domain(this._isRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([\n this.margins.left! + this._domainMargin,\n containerWidth - this.margins.right! - this._barWidth - this._domainMargin,\n ]);\n const yBarScale = d3ScaleLinear()\n .domain([0, this._yMax])\n .range([0, containerHeight - this.margins.bottom! - this.margins.top!]);\n return { xBarScale, yBarScale };\n } else {\n const xBarScale = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range([this.margins.left! + this._domainMargin, containerWidth - this.margins.right! - this._domainMargin])\n .paddingInner(2 / 3);\n\n const yBarScale = d3ScaleLinear()\n .domain([0, this._yMax])\n .range([0, containerHeight - this.margins.bottom! - this.margins.top!]);\n return { xBarScale, yBarScale };\n }\n };\n\n private _createNumericBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { useSingleColor = false } = this.props;\n const { xBarScale, yBarScale } = this._getScales(containerHeight, containerWidth, true);\n const colorScale = this._createColors();\n const bars = this._points.map((point: IVerticalBarChartDataPoint, index: number) => {\n const shouldHighlight = this._legendHighlighted(point.legend!) || this._noLegendHighlighted() ? true : false;\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n legendColor: this.state.color,\n shouldHighlight: shouldHighlight,\n });\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n const xPoint = xBarScale(point.x as number);\n const yPoint = containerHeight - this.margins.bottom! - yBarScale(point.y);\n return (\n <g key={point.x}>\n <rect\n x={xPoint}\n className={this._classNames.opacityChangeOnHover}\n y={yPoint}\n width={this._barWidth}\n data-is-focusable={!this.props.hideTooltip}\n height={barHeight}\n ref={(e: SVGRectElement) => {\n this._refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={this._onBarHover.bind(this, point, colorScale(point.y))}\n aria-label={this._getAriaLabel(point)}\n role=\"img\"\n onMouseLeave={this._onBarLeave}\n onFocus={this._onBarFocus.bind(this, point, index, colorScale(point.y))}\n onBlur={this._onBarLeave}\n fill={point.color && !useSingleColor ? point.color : colorScale(point.y)}\n />\n {this._renderBarLabel(xPoint, yPoint, point.y)}\n </g>\n );\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!this.props.showXAxisLablesTooltip) {\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: this._classNames.tooltip!,\n id: this._tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars;\n }\n\n private _createStringBars(containerHeight: number, containerWidth: number, xElement: SVGElement): JSX.Element[] {\n const { xBarScale, yBarScale } = this._getScales(containerHeight, containerWidth, false);\n const colorScale = this._createColors();\n const bars = this._points.map((point: IVerticalBarChartDataPoint, index: number) => {\n const barHeight: number = Math.max(yBarScale(point.y), 0);\n if (barHeight < 1) {\n return <React.Fragment key={point.x}> </React.Fragment>;\n }\n const xPoint = xBarScale(point.x);\n const yPoint = containerHeight - this.margins.bottom! - yBarScale(point.y);\n return (\n <g key={point.x} transform={`translate(${0.5 * (xBarScale.bandwidth() - this._barWidth)}, 0)`}>\n <rect\n x={xPoint}\n y={yPoint}\n width={this._barWidth}\n height={barHeight}\n aria-label={this._getAriaLabel(point)}\n role=\"img\"\n ref={(e: SVGRectElement) => {\n this._refCallback(e, point.legend!);\n }}\n onClick={point.onClick}\n onMouseOver={this._onBarHover.bind(this, point, colorScale(point.y))}\n onMouseLeave={this._onBarLeave}\n onBlur={this._onBarLeave}\n data-is-focusable={!this.props.hideTooltip}\n onFocus={this._onBarFocus.bind(this, point, index, colorScale(point.y))}\n fill={point.color ? point.color : colorScale(point.y)}\n />\n {this._renderBarLabel(xPoint, yPoint, point.y)}\n </g>\n );\n });\n\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!this.props.showXAxisLablesTooltip) {\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: this._classNames.tooltip!,\n id: this._tooltipId,\n xAxis: xAxisElement,\n showTooltip: this.props.showXAxisLablesTooltip,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars;\n }\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n private _onLegendClick(legendTitle: string): void {\n if (this.state.selectedLegend === legendTitle) {\n this.setState({\n selectedLegend: '',\n });\n } else {\n this.setState({\n selectedLegend: legendTitle,\n });\n }\n }\n\n private _onLegendHover(legendTitle: string): void {\n this.setState({\n activeLegend: legendTitle,\n });\n }\n\n private _onLegendLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _getLegendData = (data: IVerticalBarChartDataPoint[], palette: IPalette): JSX.Element => {\n const { theme, useSingleColor } = this.props;\n const { lineLegendText, lineLegendColor = theme!.palette.yellow } = this.props;\n const actions: ILegend[] = [];\n data.forEach((point: IVerticalBarChartDataPoint, _index: number) => {\n const color: string = !useSingleColor ? point.color! : this._createColors()(1);\n // mapping data to the format Legends component needs\n const legend: ILegend = {\n title: point.legend!,\n color: color,\n action: () => {\n this._onLegendClick(point.legend!);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(point.legend!);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n };\n actions.push(legend);\n });\n if (this._isHavingLine && lineLegendText && lineLegendColor) {\n const lineLegend: ILegend = {\n title: lineLegendText,\n color: lineLegendColor,\n action: () => {\n this._onLegendClick(lineLegendText);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(lineLegendText);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n isLineLegendInBarChart: true,\n };\n actions.unshift(lineLegend);\n }\n const legends = (\n <Legends\n legends={actions}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n overflowProps={this.props.legendsOverflowProps}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n overflowText={this.props.legendsOverflowText}\n {...this.props.legendProps}\n />\n );\n return legends;\n };\n\n private _getAxisData = (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n this._yMax = Math.max(domainValue[domainValue.length - 1], this.props.yMaxValue || 0);\n }\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legendTitle: string) => {\n return (\n this.state.selectedLegend === legendTitle ||\n (this.state.selectedLegend === '' && this.state.activeLegend === legendTitle)\n );\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this.state.selectedLegend === '' && this.state.activeLegend === '';\n };\n\n private _getAriaLabel = (point: IVerticalBarChartDataPoint): string => {\n const xValue = point.xAxisCalloutData || point.x;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.y;\n const lineLegend = this.props.lineLegendText || 'Line';\n const lineYValue = point.lineData?.yAxisCalloutData || point.lineData?.y;\n return (\n point.callOutAccessibilityData?.ariaLabel ||\n `${xValue}. ` +\n (legend ? `${legend}, ` : '') +\n `${yValue}.` +\n (typeof lineYValue !== 'undefined' ? ` ${lineLegend}, ${lineYValue}.` : '')\n );\n };\n\n private _renderBarLabel(xPoint: number, yPoint: number, barValue: number) {\n if (this.props.hideLabels || this._barWidth < 16) {\n return null;\n }\n\n return (\n <text\n x={xPoint + this._barWidth / 2}\n y={yPoint - 6}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {d3FormatPrefix(barValue < 1000 ? '.2~' : '.1', barValue)(barValue)}\n </text>\n );\n }\n\n private _getDomainMargins = (containerWidth: number): IMargins => {\n if (this._xAxisType !== XAxisTypes.NumericAxis) {\n /** Total width available to render the bars */\n const totalWidth =\n containerWidth - (this.margins.left! + MIN_DOMAIN_MARGIN) - (this.margins.right! + MIN_DOMAIN_MARGIN);\n let barWidth = Math.min(this.props.barWidth || 16, 24);\n /** Total width required to render the bars. Directly proportional to bar width */\n const reqWidth = (3 * this._xAxisLabels.length - 2) * barWidth;\n\n this._domainMargin = MIN_DOMAIN_MARGIN;\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n this._domainMargin += (totalWidth - reqWidth) / 2;\n } else {\n /** Maximum possible bar width to maintain 2:1 spacing */\n const maxBandwidth = totalWidth / (3 * this._xAxisLabels.length - 2);\n barWidth = maxBandwidth;\n }\n this._barWidth = barWidth;\n }\n\n return {\n ...this.margins,\n left: this.margins.left! + this._domainMargin,\n right: this.margins.right! + this._domainMargin,\n };\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  define(["require", "exports", "@fluentui/set-version"], function (require, exports, set_version_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- set_version_1.setVersion('@fluentui/react-charting', '5.16.8');
4
+ set_version_1.setVersion('@fluentui/react-charting', '5.16.10');
5
5
  });
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"../src/","sources":["version.ts"],"names":[],"mappings":";;;IAGA,wBAAU,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@fluentui/set-version';\nsetVersion('@fluentui/react-charting', '5.16.8');"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"../src/","sources":["version.ts"],"names":[],"mappings":";;;IAGA,wBAAU,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC","sourcesContent":["// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@fluentui/set-version';\nsetVersion('@fluentui/react-charting', '5.16.10');"]}
@@ -28,6 +28,8 @@ export interface IAreaChartState extends IBasestate {
28
28
  nearestCircleToHighlight: number | string | Date | null;
29
29
  xAxisCalloutAccessibilityData?: IAccessibilityProps;
30
30
  isShowCalloutPending: boolean;
31
+ /** focused point */
32
+ activePoint: string;
31
33
  }
32
34
  export declare class AreaChartBase extends React.Component<IAreaChartProps, IAreaChartState> {
33
35
  private _calloutPoints;
@@ -83,5 +85,8 @@ export declare class AreaChartBase extends React.Component<IAreaChartProps, IAre
83
85
  */
84
86
  private _noLegendHighlighted;
85
87
  private _addDefaultColors;
88
+ private _handleFocus;
89
+ private _handleBlur;
90
+ private _getAriaLabel;
86
91
  }
87
92
  export {};
@@ -96,6 +96,7 @@ var AreaChartBase = /** @class */ (function (_super) {
96
96
  dataPointCalloutProps: found,
97
97
  hoverXValue: xAxisCalloutData ? xAxisCalloutData : formattedDate,
98
98
  xAxisCalloutAccessibilityData: xAxisCalloutAccessibilityData,
99
+ activePoint: '',
99
100
  });
100
101
  }
101
102
  else {
@@ -291,7 +292,7 @@ var AreaChartBase = /** @class */ (function (_super) {
291
292
  };
292
293
  _this._updateCircleFillColor = function (xDataPoint, lineColor, circleId) {
293
294
  var fillColor = lineColor;
294
- if (_this.state.nearestCircleToHighlight === xDataPoint) {
295
+ if (_this.state.nearestCircleToHighlight === xDataPoint || _this.state.activePoint === circleId) {
295
296
  _this._highlightedCircleId = circleId;
296
297
  if (!_this.state.isCircleClicked) {
297
298
  fillColor = _this.props.theme.palette.white;
@@ -323,7 +324,11 @@ var AreaChartBase = /** @class */ (function (_super) {
323
324
  _this._stackedData.forEach(function (singleStackedData, index) {
324
325
  graph.push(React.createElement(React.Fragment, { key: index + "-graph-" + _this._uniqueIdForGraph },
325
326
  React.createElement("path", tslib_1.__assign({ id: index + "-line-" + _this._uniqueIdForGraph, d: line(singleStackedData), fill: 'transparent', strokeWidth: 3, stroke: _this._colors[index], opacity: _this._getLineOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove }, points[index].lineOptions)),
326
- singleStackedData.length === 1 ? (React.createElement("circle", { id: index + "-graph-" + _this._uniqueIdForGraph, cx: xScale(singleStackedData[0].xVal), cy: yScale(singleStackedData[0].values[1]), r: 6, stroke: _this._colors[index], strokeWidth: 3, fill: _this._colors[index], opacity: _this._opacity[index], fillOpacity: _this._getOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove })) : (React.createElement("path", { id: index + "-graph-" + _this._uniqueIdForGraph, d: area(singleStackedData), fill: _this._colors[index], opacity: _this._opacity[index], fillOpacity: _this._getOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove }))));
327
+ singleStackedData.length === 1 ? (React.createElement("circle", { id: index + "-graph-" + _this._uniqueIdForGraph, cx: xScale(singleStackedData[0].xVal), cy: yScale(singleStackedData[0].values[1]), r: 6, stroke: _this._colors[index], strokeWidth: 3, fill: _this._colors[index], opacity: _this._opacity[index], fillOpacity: _this._getOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove })) : (React.createElement("path", tslib_1.__assign({ id: index + "-graph-" + _this._uniqueIdForGraph, d: area(singleStackedData), fill: _this._colors[index], opacity: _this._opacity[index], fillOpacity: _this._getOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove }, (_this.props.optimizeLargeData && {
328
+ 'data-is-focusable': true,
329
+ role: 'img',
330
+ 'aria-label': points[index].legend + ", series " + (index + 1) + " of " + points.length + " with " + points[index].data.length + " data points.",
331
+ }))))));
327
332
  });
328
333
  var circleRadius = pointOptions && pointOptions.r ? Number(pointOptions.r) : 8;
329
334
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -331,12 +336,26 @@ var AreaChartBase = /** @class */ (function (_super) {
331
336
  if (points.length === index) {
332
337
  return;
333
338
  }
334
- graph.push(React.createElement("g", { key: index + "-dots-" + _this._uniqueIdForGraph, d: area(singleStackedData), clipPath: "url(#clip)" }, singleStackedData.map(function (singlePoint, pointIndex) {
335
- var circleId = _this._circleId + "_" + (index * _this._stackedData[0].length + pointIndex);
336
- var xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;
337
- lineColor = points[index].color;
338
- return (React.createElement("circle", tslib_1.__assign({ key: circleId, id: circleId, "data-is-focusable": true, cx: xScale(singlePoint.xVal), cy: yScale(singlePoint.values[1]), stroke: lineColor, strokeWidth: 3, visibility: _this.state.nearestCircleToHighlight ? 'visibility' : 'hidden', fill: _this._updateCircleFillColor(xDataPoint, lineColor, circleId), onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove, onClick: _this._onDataPointClick.bind(_this, points[index].data[pointIndex].onDataPointClick) }, pointOptions, { r: _this._getCircleRadius(xDataPoint, circleRadius) })));
339
- })));
339
+ if (!_this.props.optimizeLargeData || singleStackedData.length === 1) {
340
+ // Render circles for all data points
341
+ graph.push(React.createElement("g", { key: index + "-dots-" + _this._uniqueIdForGraph, d: area(singleStackedData), clipPath: "url(#clip)" }, singleStackedData.map(function (singlePoint, pointIndex) {
342
+ var circleId = _this._circleId + "_" + (index * _this._stackedData[0].length + pointIndex);
343
+ var xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;
344
+ lineColor = points[index].color;
345
+ return (React.createElement("circle", tslib_1.__assign({ key: circleId, id: circleId, "data-is-focusable": true, cx: xScale(singlePoint.xVal), cy: yScale(singlePoint.values[1]), stroke: lineColor, strokeWidth: 3, fill: _this._updateCircleFillColor(xDataPoint, lineColor, circleId), onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove, onClick: _this._onDataPointClick.bind(_this, points[index].data[pointIndex].onDataPointClick), onFocus: function () { return _this._handleFocus(index, pointIndex, circleId); }, onBlur: _this._handleBlur }, pointOptions, { r: _this._getCircleRadius(xDataPoint, circleRadius, circleId), role: "img", "aria-label": _this._getAriaLabel(index, pointIndex) })));
346
+ })));
347
+ }
348
+ else {
349
+ // Render circles for data points close to the mouse pointer only
350
+ singleStackedData.forEach(function (singlePoint, pointIndex) {
351
+ var xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;
352
+ if (_this.state.nearestCircleToHighlight === xDataPoint) {
353
+ var circleId = _this._circleId + "_" + (index * _this._stackedData[0].length + pointIndex);
354
+ lineColor = points[index].color;
355
+ graph.push(React.createElement("circle", tslib_1.__assign({ key: circleId, id: circleId, cx: xScale(singlePoint.xVal), cy: yScale(singlePoint.values[1]), stroke: lineColor, strokeWidth: 3, fill: _this._updateCircleFillColor(xDataPoint, lineColor, circleId), onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove, onClick: _this._onDataPointClick.bind(_this, points[index].data[pointIndex].onDataPointClick) }, pointOptions, { r: _this._getCircleRadius(xDataPoint, circleRadius, circleId) })));
356
+ }
357
+ });
358
+ }
340
359
  });
341
360
  graph.push(React.createElement("line", tslib_1.__assign({ id: _this._verticalLineId, key: _this._verticalLineId, x1: _this.state.lineXValue, y1: 0, x2: _this.state.lineXValue, y2: containerHeight, strokeWidth: 1, strokeDasharray: 5.5, stroke: lineColor, opacity: 0.5, visibility: _this.state.displayOfLine }, pointLineOptions)));
342
361
  var classNames = getClassNames(_this.props.styles, {
@@ -367,12 +386,12 @@ var AreaChartBase = /** @class */ (function (_super) {
367
386
  }
368
387
  return graph;
369
388
  };
370
- _this._getCircleRadius = function (xDataPoint, circleRadius) {
371
- var _a = _this.state, isCircleClicked = _a.isCircleClicked, nearestCircleToHighlight = _a.nearestCircleToHighlight;
389
+ _this._getCircleRadius = function (xDataPoint, circleRadius, circleId) {
390
+ var _a = _this.state, isCircleClicked = _a.isCircleClicked, nearestCircleToHighlight = _a.nearestCircleToHighlight, activePoint = _a.activePoint;
372
391
  if (isCircleClicked && nearestCircleToHighlight === xDataPoint) {
373
392
  return 1;
374
393
  }
375
- else if (nearestCircleToHighlight === xDataPoint) {
394
+ else if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {
376
395
  return circleRadius;
377
396
  }
378
397
  else {
@@ -415,6 +434,45 @@ var AreaChartBase = /** @class */ (function (_super) {
415
434
  })
416
435
  : [];
417
436
  };
437
+ _this._handleFocus = function (lineIndex, pointIndex, circleId) {
438
+ var _a = _this.props.data.lineChartData[lineIndex].data[pointIndex], x = _a.x, y = _a.y, xAxisCalloutData = _a.xAxisCalloutData;
439
+ var formattedDate = x instanceof Date ? x.toLocaleString() : x;
440
+ var modifiedXVal = x instanceof Date ? x.getTime() : x;
441
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
442
+ var found = _this._calloutPoints.find(function (e) { return e.x === modifiedXVal; });
443
+ // Show details in the callout for the focused point only
444
+ found.values = found.values.filter(function (e) { return e.y === y; });
445
+ _this.setState({
446
+ refSelected: "#" + circleId,
447
+ isCalloutVisible: true,
448
+ hoverXValue: xAxisCalloutData ? xAxisCalloutData : formattedDate,
449
+ YValueHover: found.values,
450
+ stackCalloutProps: found,
451
+ dataPointCalloutProps: found,
452
+ activePoint: circleId,
453
+ });
454
+ };
455
+ _this._handleBlur = function () {
456
+ _this.setState({
457
+ refSelected: null,
458
+ isCalloutVisible: false,
459
+ hoverXValue: undefined,
460
+ YValueHover: [],
461
+ stackCalloutProps: undefined,
462
+ dataPointCalloutProps: undefined,
463
+ activePoint: '',
464
+ });
465
+ };
466
+ _this._getAriaLabel = function (lineIndex, pointIndex) {
467
+ var _a;
468
+ var line = _this.props.data.lineChartData[lineIndex];
469
+ var point = line.data[pointIndex];
470
+ var formattedDate = point.x instanceof Date ? point.x.toLocaleString() : point.x;
471
+ var xValue = point.xAxisCalloutData || formattedDate;
472
+ var legend = line.legend;
473
+ var yValue = point.yAxisCalloutData || point.y;
474
+ return ((_a = point.callOutAccessibilityData) === null || _a === void 0 ? void 0 : _a.ariaLabel) || xValue + ". " + legend + ", " + yValue + ".";
475
+ };
418
476
  _this._createSet = Utilities_1.memoizeFunction(_this._createDataSet);
419
477
  _this.state = {
420
478
  selectedLegend: '',
@@ -428,6 +486,7 @@ var AreaChartBase = /** @class */ (function (_super) {
428
486
  isCircleClicked: false,
429
487
  nearestCircleToHighlight: null,
430
488
  isShowCalloutPending: false,
489
+ activePoint: '',
431
490
  };
432
491
  Utilities_2.warnDeprecations(COMPONENT_NAME, props, {
433
492
  showYAxisGridLines: 'Dont use this property. Lines are drawn by default',
@@ -463,7 +522,7 @@ var AreaChartBase = /** @class */ (function (_super) {
463
522
  tickValues: this.props.tickValues,
464
523
  tickFormat: this.props.tickFormat,
465
524
  };
466
- var calloutProps = tslib_1.__assign({ target: this.state.refSelected, isCalloutVisible: this.state.isCalloutVisible, directionalHint: Callout_1.DirectionalHint.topAutoEdge, YValueHover: this.state.YValueHover, hoverXValue: this.state.hoverXValue, id: "toolTip" + this._uniqueCallOutID, gapSpace: 15, isBeakVisible: false, setInitialFocus: true, onDismiss: this._closeCallout, 'data-is-focusable': true, xAxisCalloutAccessibilityData: this.state.xAxisCalloutAccessibilityData }, this.props.calloutProps);
525
+ var calloutProps = tslib_1.__assign({ target: this.state.refSelected, isCalloutVisible: this.state.isCalloutVisible, directionalHint: Callout_1.DirectionalHint.topAutoEdge, YValueHover: this.state.YValueHover, hoverXValue: this.state.hoverXValue, id: "toolTip" + this._uniqueCallOutID, gapSpace: 15, isBeakVisible: false, onDismiss: this._closeCallout, 'data-is-focusable': true, xAxisCalloutAccessibilityData: this.state.xAxisCalloutAccessibilityData }, this.props.calloutProps);
467
526
  return (React.createElement(index_1.CartesianChart, tslib_1.__assign({}, this.props, { chartTitle: chartTitle, points: points, chartType: index_2.ChartTypes.AreaChart, calloutProps: calloutProps, legendBars: legends, isCalloutForStack: true, xAxisType: isXAxisDateType ? index_2.XAxisTypes.DateAxis : index_2.XAxisTypes.NumericAxis, tickParams: tickParams, maxOfYVal: stackedInfo.maxOfYVal, getGraphData: this._getGraphData, getmargins: this._getMargins, customizedCallout: this._getCustomizedCallout(), onChartMouseLeave: this._handleChartMouseLeave,
468
527
  /* eslint-disable react/jsx-no-bind */
469
528
  // eslint-disable-next-line react/no-children-prop