@fluentui/react-charting 5.23.32 → 5.23.34

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 (47) hide show
  1. package/CHANGELOG.json +55 -1
  2. package/CHANGELOG.md +24 -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 +4 -1
  6. package/lib/components/AreaChart/AreaChart.base.js +56 -35
  7. package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
  8. package/lib/components/DeclarativeChart/DeclarativeChart.js +9 -8
  9. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  10. package/lib/components/GaugeChart/GaugeChart.base.d.ts +3 -1
  11. package/lib/components/GaugeChart/GaugeChart.base.js +31 -20
  12. package/lib/components/GaugeChart/GaugeChart.base.js.map +1 -1
  13. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.d.ts +11 -1
  14. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +55 -39
  15. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  16. package/lib/components/VerticalBarChart/VerticalBarChart.base.d.ts +3 -1
  17. package/lib/components/VerticalBarChart/VerticalBarChart.base.js +56 -51
  18. package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  19. package/lib-amd/components/AreaChart/AreaChart.base.d.ts +4 -1
  20. package/lib-amd/components/AreaChart/AreaChart.base.js +55 -34
  21. package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
  22. package/lib-amd/components/DeclarativeChart/DeclarativeChart.js +9 -8
  23. package/lib-amd/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  24. package/lib-amd/components/GaugeChart/GaugeChart.base.d.ts +3 -1
  25. package/lib-amd/components/GaugeChart/GaugeChart.base.js +30 -19
  26. package/lib-amd/components/GaugeChart/GaugeChart.base.js.map +1 -1
  27. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.d.ts +11 -1
  28. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +54 -38
  29. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  30. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.d.ts +3 -1
  31. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +55 -50
  32. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  33. package/lib-commonjs/components/AreaChart/AreaChart.base.d.ts +4 -1
  34. package/lib-commonjs/components/AreaChart/AreaChart.base.js +55 -34
  35. package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
  36. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +9 -8
  37. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  38. package/lib-commonjs/components/GaugeChart/GaugeChart.base.d.ts +3 -1
  39. package/lib-commonjs/components/GaugeChart/GaugeChart.base.js +30 -19
  40. package/lib-commonjs/components/GaugeChart/GaugeChart.base.js.map +1 -1
  41. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.d.ts +11 -1
  42. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +54 -38
  43. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  44. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.d.ts +3 -1
  45. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +55 -50
  46. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  47. package/package.json +3 -3
@@ -22,7 +22,7 @@ var MIN_DOMAIN_MARGIN = 8;
22
22
  var VerticalBarChartBase = /** @class */ (function (_super) {
23
23
  tslib_1.__extends(VerticalBarChartBase, _super);
24
24
  function VerticalBarChartBase(props) {
25
- var _a, _b;
25
+ var _a;
26
26
  var _this = _super.call(this, props) || this;
27
27
  _this._isRtl = (0, Utilities_1.getRTL)();
28
28
  _this._getDomainNRangeValues = function (points, margins, width, chartType, isRTL, xAxisType, barWidth, tickValues, shiftX) {
@@ -95,12 +95,12 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
95
95
  dots));
96
96
  };
97
97
  _this._getCircleVisibilityAndRadius = function (xAxisPoint, legend) {
98
- var _a = _this.state, selectedLegend = _a.selectedLegend, activeXdataPoint = _a.activeXdataPoint;
99
- if (selectedLegend !== '') {
100
- if (xAxisPoint === activeXdataPoint && selectedLegend === legend) {
98
+ var activeXdataPoint = _this.state.activeXdataPoint;
99
+ if (!_this._noLegendHighlighted()) {
100
+ if (xAxisPoint === activeXdataPoint && _this._legendHighlighted(legend)) {
101
101
  return { visibility: CircleVisbility.show, radius: 8 };
102
102
  }
103
- else if (selectedLegend === legend) {
103
+ else if (_this._legendHighlighted(legend)) {
104
104
  // Don't hide the circle to keep it focusable. For more information,
105
105
  // see https://fuzzbomb.github.io/accessibility-demos/visually-hidden-focus-test.html
106
106
  return { visibility: CircleVisbility.show, radius: 0.3 };
@@ -173,7 +173,9 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
173
173
  : _this._createColors()(selectedPoint[0].y)
174
174
  : _this._createColors()(1);
175
175
  // there might be no y value of the line for the hovered bar. so we need to check this condition
176
- if (_this._isHavingLine && ((_a = selectedPoint[0].lineData) === null || _a === void 0 ? void 0 : _a.y) !== undefined) {
176
+ if (_this._isHavingLine &&
177
+ ((_a = selectedPoint[0].lineData) === null || _a === void 0 ? void 0 : _a.y) !== undefined &&
178
+ (_this._legendHighlighted(lineLegendText) || _this._noLegendHighlighted())) {
177
179
  // callout data for the line
178
180
  YValueHover.push({
179
181
  legend: lineLegendText,
@@ -183,18 +185,20 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
183
185
  yAxisCalloutData: (_d = selectedPoint[0].lineData) === null || _d === void 0 ? void 0 : _d.yAxisCalloutData,
184
186
  });
185
187
  }
186
- // callout data for the bar
187
- YValueHover.push({
188
- legend: selectedPoint[0].legend,
189
- y: selectedPoint[0].y,
190
- color: enableGradient
191
- ? useSingleColor
192
- ? (0, index_2.getNextGradient)(0, 0)[0]
193
- : ((_e = selectedPoint[0].gradient) === null || _e === void 0 ? void 0 : _e[0]) || (0, index_2.getNextGradient)(pointIndex, 0)[0]
194
- : calloutColor,
195
- data: selectedPoint[0].yAxisCalloutData,
196
- yAxisCalloutData: selectedPoint[0].yAxisCalloutData,
197
- });
188
+ if (_this._legendHighlighted(selectedPoint[0].legend) || _this._noLegendHighlighted()) {
189
+ // callout data for the bar
190
+ YValueHover.push({
191
+ legend: selectedPoint[0].legend,
192
+ y: selectedPoint[0].y,
193
+ color: enableGradient
194
+ ? useSingleColor
195
+ ? (0, index_2.getNextGradient)(0, 0)[0]
196
+ : ((_e = selectedPoint[0].gradient) === null || _e === void 0 ? void 0 : _e[0]) || (0, index_2.getNextGradient)(pointIndex, 0)[0]
197
+ : calloutColor,
198
+ data: selectedPoint[0].yAxisCalloutData,
199
+ yAxisCalloutData: selectedPoint[0].yAxisCalloutData,
200
+ });
201
+ }
198
202
  var hoverXValue = point.x instanceof Date ? (0, index_2.formatDate)(point.x, _this.props.useUTC) : point.x.toString();
199
203
  return {
200
204
  YValueHover: YValueHover,
@@ -220,7 +224,7 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
220
224
  _this.setState({
221
225
  refSelected: obj.refElement,
222
226
  /** Show the callout if highlighted bar is focused and Hide it if unhighlighted bar is focused */
223
- isCalloutVisible: _this.state.selectedLegend === '' || _this.state.selectedLegend === point.legend,
227
+ isCalloutVisible: _this._noLegendHighlighted() || _this._legendHighlighted(point.legend),
224
228
  calloutLegend: point.legend,
225
229
  dataForHoverCard: point.y,
226
230
  color: point.color || color,
@@ -325,9 +329,6 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
325
329
  var legend = {
326
330
  title: legendTitle,
327
331
  color: color,
328
- action: function () {
329
- _this._onLegendClick(legendTitle);
330
- },
331
332
  hoverAction: function () {
332
333
  _this._handleChartMouseLeave();
333
334
  _this._onLegendHover(legendTitle);
@@ -342,9 +343,6 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
342
343
  var lineLegend = {
343
344
  title: lineLegendText,
344
345
  color: lineLegendColor,
345
- action: function () {
346
- _this._onLegendClick(lineLegendText);
347
- },
348
346
  hoverAction: function () {
349
347
  _this._handleChartMouseLeave();
350
348
  _this._onLegendHover(lineLegendText);
@@ -356,7 +354,7 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
356
354
  };
357
355
  actions.unshift(lineLegend);
358
356
  }
359
- var legends = (React.createElement(index_1.Legends, tslib_1.__assign({ legends: actions, enabledWrapLines: _this.props.enabledLegendsWrapLines, overflowProps: _this.props.legendsOverflowProps, focusZonePropsInHoverCard: _this.props.focusZonePropsForLegendsInHoverCard, overflowText: _this.props.legendsOverflowText }, _this.props.legendProps)));
357
+ var legends = (React.createElement(index_1.Legends, tslib_1.__assign({ legends: actions, enabledWrapLines: _this.props.enabledLegendsWrapLines, overflowProps: _this.props.legendsOverflowProps, focusZonePropsInHoverCard: _this.props.focusZonePropsForLegendsInHoverCard, overflowText: _this.props.legendsOverflowText }, _this.props.legendProps, { onChange: _this._onLegendSelectionChange.bind(_this) })));
360
358
  return legends;
361
359
  };
362
360
  _this._getAxisData = function (yAxisData) {
@@ -373,14 +371,13 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
373
371
  * 2. hovering: if there is no selected legend and the user hovers over it
374
372
  */
375
373
  _this._legendHighlighted = function (legendTitle) {
376
- return (_this.state.selectedLegend === legendTitle ||
377
- (_this.state.selectedLegend === '' && _this.state.activeLegend === legendTitle));
374
+ return _this._getHighlightedLegend().includes(legendTitle);
378
375
  };
379
376
  /**
380
377
  * This function checks if none of the legends is selected or hovered.
381
378
  */
382
379
  _this._noLegendHighlighted = function () {
383
- return _this.state.selectedLegend === '' && _this.state.activeLegend === '';
380
+ return _this._getHighlightedLegend().length === 0;
384
381
  };
385
382
  _this._getAriaLabel = function (point) {
386
383
  var _a, _b, _c;
@@ -444,8 +441,8 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
444
441
  dataForHoverCard: 0,
445
442
  isCalloutVisible: false,
446
443
  refSelected: null,
447
- selectedLegend: (_b = (_a = props.legendProps) === null || _a === void 0 ? void 0 : _a.selectedLegend) !== null && _b !== void 0 ? _b : '',
448
- activeLegend: '',
444
+ selectedLegends: ((_a = props.legendProps) === null || _a === void 0 ? void 0 : _a.selectedLegends) || [],
445
+ activeLegend: undefined,
449
446
  xCalloutValue: '',
450
447
  yCalloutValue: '',
451
448
  activeXdataPoint: null,
@@ -467,10 +464,10 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
467
464
  return _this;
468
465
  }
469
466
  VerticalBarChartBase.prototype.componentDidUpdate = function (prevProps) {
470
- var _a, _b, _c, _d;
471
- if (((_a = prevProps.legendProps) === null || _a === void 0 ? void 0 : _a.selectedLegend) !== ((_b = this.props.legendProps) === null || _b === void 0 ? void 0 : _b.selectedLegend)) {
467
+ var _a, _b, _c;
468
+ if (!(0, index_2.areArraysEqual)((_a = prevProps.legendProps) === null || _a === void 0 ? void 0 : _a.selectedLegends, (_b = this.props.legendProps) === null || _b === void 0 ? void 0 : _b.selectedLegends)) {
472
469
  this.setState({
473
- selectedLegend: (_d = (_c = this.props.legendProps) === null || _c === void 0 ? void 0 : _c.selectedLegend) !== null && _d !== void 0 ? _d : '',
470
+ selectedLegends: ((_c = this.props.legendProps) === null || _c === void 0 ? void 0 : _c.selectedLegends) || [],
474
471
  });
475
472
  }
476
473
  };
@@ -493,7 +490,8 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
493
490
  tickValues: this.props.tickValues,
494
491
  tickFormat: this.props.tickFormat,
495
492
  };
496
- return !this._isChartEmpty() ? (React.createElement(index_1.CartesianChart, tslib_1.__assign({}, this.props, { chartTitle: this._getChartTitle(), points: this._points, supportNegativeData: this.props.supportNegativeData, chartType: index_2.ChartTypes.VerticalBarChart, xAxisType: this._xAxisType, createYAxis: index_2.createNumericYAxis, calloutProps: calloutProps, tickParams: tickParams }, (this._isHavingLine && this._noLegendHighlighted() && { isCalloutForStack: true }), { legendBars: legendBars, datasetForXAxisDomain: this._xAxisLabels, barwidth: this._barWidth, focusZoneDirection: react_focus_1.FocusZoneDirection.horizontal, customizedCallout: this._getCustomizedCallout(), createStringYAxis: index_2.createStringYAxis, getmargins: this._getMargins, getMinMaxOfYAxis: index_2.findVerticalNumericMinMaxOfY, getGraphData: this._getGraphData, getDomainNRangeValues: this._getDomainNRangeValues, getAxisData: this._getAxisData, onChartMouseLeave: this._handleChartMouseLeave, getDomainMargins: this._getDomainMargins }, (this._xAxisType === index_2.XAxisTypes.StringAxis && {
493
+ return !this._isChartEmpty() ? (React.createElement(index_1.CartesianChart, tslib_1.__assign({}, this.props, { chartTitle: this._getChartTitle(), points: this._points, supportNegativeData: this.props.supportNegativeData, chartType: index_2.ChartTypes.VerticalBarChart, xAxisType: this._xAxisType, createYAxis: index_2.createNumericYAxis, calloutProps: calloutProps, tickParams: tickParams }, (this._isHavingLine &&
494
+ (this._noLegendHighlighted() || this._getHighlightedLegend().length > 1) && { isCalloutForStack: true }), { legendBars: legendBars, datasetForXAxisDomain: this._xAxisLabels, barwidth: this._barWidth, focusZoneDirection: react_focus_1.FocusZoneDirection.horizontal, customizedCallout: this._getCustomizedCallout(), createStringYAxis: index_2.createStringYAxis, getmargins: this._getMargins, getMinMaxOfYAxis: index_2.findVerticalNumericMinMaxOfY, getGraphData: this._getGraphData, getDomainNRangeValues: this._getDomainNRangeValues, getAxisData: this._getAxisData, onChartMouseLeave: this._handleChartMouseLeave, getDomainMargins: this._getDomainMargins }, (this._xAxisType === index_2.XAxisTypes.StringAxis && {
497
495
  xAxisInnerPadding: this._xAxisInnerPadding,
498
496
  xAxisOuterPadding: this._xAxisOuterPadding,
499
497
  }), { ref: this._cartesianChartRef,
@@ -546,7 +544,7 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
546
544
  this.setState({
547
545
  refSelected: mouseEvent,
548
546
  /** Show the callout if highlighted bar is hovered and Hide it if unhighlighted bar is hovered */
549
- isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend,
547
+ isCalloutVisible: this._noLegendHighlighted() || this._legendHighlighted(point.legend),
550
548
  dataForHoverCard: point.y,
551
549
  calloutLegend: point.legend,
552
550
  color: point.color || color,
@@ -556,7 +554,7 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
556
554
  yCalloutValue: point.yAxisCalloutData,
557
555
  dataPointCalloutProps: point,
558
556
  // Hovering over a bar should highlight corresponding line points only when no legend is selected
559
- activeXdataPoint: this._noLegendHighlighted() ? point.x : null,
557
+ activeXdataPoint: this._noLegendHighlighted() || this._legendHighlighted(point.legend) ? point.x : null,
560
558
  YValueHover: YValueHover,
561
559
  hoverXValue: hoverXValue,
562
560
  callOutAccessibilityData: point.callOutAccessibilityData,
@@ -808,18 +806,6 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
808
806
  }
809
807
  return bars;
810
808
  };
811
- VerticalBarChartBase.prototype._onLegendClick = function (legendTitle) {
812
- if (this.state.selectedLegend === legendTitle) {
813
- this.setState({
814
- selectedLegend: '',
815
- });
816
- }
817
- else {
818
- this.setState({
819
- selectedLegend: legendTitle,
820
- });
821
- }
822
- };
823
809
  VerticalBarChartBase.prototype._onLegendHover = function (legendTitle) {
824
810
  this.setState({
825
811
  activeLegend: legendTitle,
@@ -827,9 +813,28 @@ var VerticalBarChartBase = /** @class */ (function (_super) {
827
813
  };
828
814
  VerticalBarChartBase.prototype._onLegendLeave = function () {
829
815
  this.setState({
830
- activeLegend: '',
816
+ activeLegend: undefined,
831
817
  });
832
818
  };
819
+ VerticalBarChartBase.prototype._onLegendSelectionChange = function (selectedLegends, event, currentLegend) {
820
+ var _a, _b;
821
+ if ((_a = this.props.legendProps) === null || _a === void 0 ? void 0 : _a.canSelectMultipleLegends) {
822
+ this.setState({ selectedLegends: selectedLegends });
823
+ }
824
+ else {
825
+ this.setState({ selectedLegends: selectedLegends.slice(-1) });
826
+ }
827
+ if ((_b = this.props.legendProps) === null || _b === void 0 ? void 0 : _b.onChange) {
828
+ this.props.legendProps.onChange(selectedLegends, event, currentLegend);
829
+ }
830
+ };
831
+ VerticalBarChartBase.prototype._getHighlightedLegend = function () {
832
+ return this.state.selectedLegends.length > 0
833
+ ? this.state.selectedLegends
834
+ : this.state.activeLegend
835
+ ? [this.state.activeLegend]
836
+ : [];
837
+ };
833
838
  VerticalBarChartBase.prototype._renderBarLabel = function (xPoint, yPoint, barValue, legend, isNegativeBar) {
834
839
  if (this.props.hideLabels ||
835
840
  this._barWidth < 16 ||