@fluentui/react-charting 5.16.20 → 5.16.21

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.
@@ -56,8 +56,11 @@ export declare class LineChartBase extends React.Component<ILineChartProps, ILin
56
56
  private _onMouseOverLargeDataset;
57
57
  private _handleFocus;
58
58
  private _handleHover;
59
- private _onLineClick;
60
- private _onDataPointClick;
59
+ /**
60
+ * Screen readers announce an element as clickable if the onClick attribute is set.
61
+ * This function sets the attribute only when a click event handler is provided.
62
+ */
63
+ private _getClickHandler;
61
64
  private _handleMouseOut;
62
65
  private _handleChartMouseLeave;
63
66
  private _handleLegendClick;
@@ -76,5 +79,6 @@ export declare class LineChartBase extends React.Component<ILineChartProps, ILin
76
79
  */
77
80
  private _noLegendHighlighted;
78
81
  private _getColorFillBarOpacity;
82
+ private _getAriaLabel;
79
83
  }
80
84
  export {};
@@ -320,7 +320,6 @@ var LineChartBase = /** @class */ (function (_super) {
320
320
  // if no points need to be called out then don't show vertical line and callout card
321
321
  if (found) {
322
322
  var _this_2 = _this_1;
323
- d3Select('#' + circleId).attr('aria-labelledby', "toolTip" + _this_1._uniqueCallOutID);
324
323
  d3Select("#" + _this_1._verticalLine)
325
324
  .attr('transform', function () { return "translate(" + _this_2._xAxisScale(x) + ", 0)"; })
326
325
  .attr('visibility', 'visibility');
@@ -381,15 +380,17 @@ var LineChartBase = /** @class */ (function (_super) {
381
380
  });
382
381
  }
383
382
  };
384
- _this_1._onLineClick = function (func) {
385
- if (func) {
386
- func();
387
- }
388
- };
389
- _this_1._onDataPointClick = function (func) {
383
+ /**
384
+ * Screen readers announce an element as clickable if the onClick attribute is set.
385
+ * This function sets the attribute only when a click event handler is provided.
386
+ */
387
+ _this_1._getClickHandler = function (func) {
390
388
  if (func) {
391
- func();
389
+ return {
390
+ onClick: func,
391
+ };
392
392
  }
393
+ return {};
393
394
  };
394
395
  _this_1._handleMouseOut = function () {
395
396
  d3Select("#" + _this_1._verticalLine).attr('visibility', 'hidden');
@@ -512,6 +513,16 @@ var LineChartBase = /** @class */ (function (_super) {
512
513
  _this_1._getColorFillBarOpacity = function (colorFillBar) {
513
514
  return colorFillBar.applyPattern ? 1 : 0.4;
514
515
  };
516
+ _this_1._getAriaLabel = function (lineIndex, pointIndex) {
517
+ var _a;
518
+ var line = _this_1._points[lineIndex];
519
+ var point = line.data[pointIndex];
520
+ var formattedDate = point.x instanceof Date ? point.x.toLocaleString() : point.x;
521
+ var xValue = point.xAxisCalloutData || formattedDate;
522
+ var legend = line.legend;
523
+ var yValue = point.yAxisCalloutData || point.y;
524
+ return ((_a = point.callOutAccessibilityData) === null || _a === void 0 ? void 0 : _a.ariaLabel) || xValue + ". " + legend + ", " + yValue + ".";
525
+ };
515
526
  _this_1.state = {
516
527
  hoverXValue: '',
517
528
  activeLegend: '',
@@ -657,60 +668,62 @@ var LineChartBase = /** @class */ (function (_super) {
657
668
  else {
658
669
  this._points = this._injectIndexPropertyInLineChartData(this.props.data.lineChartData);
659
670
  }
660
- for (var i = this._points.length - 1; i >= 0; i--) {
671
+ var _loop_1 = function (i) {
661
672
  var linesForLine = [];
662
673
  var bordersForLine = [];
663
674
  var pointsForLine = [];
664
- var legendVal = this._points[i].legend;
665
- var lineColor = this._points[i].color;
666
- var activePoint = this.state.activePoint;
667
- var theme = this.props.theme;
668
- var verticaLineHeight = containerHeight - this.margins.bottom + 6;
669
- if (this._points[i].data.length === 1) {
670
- var _0 = this._points[i].data[0], x1 = _0.x, y1 = _0.y, xAxisCalloutData = _0.xAxisCalloutData, xAxisCalloutAccessibilityData = _0.xAxisCalloutAccessibilityData;
671
- var circleId = this._circleId + "_" + i;
672
- pointsForLine.push(React.createElement("circle", { id: circleId, key: circleId, r: activePoint === circleId ? 5.5 : 3.5, cx: this._xAxisScale(x1), cy: this._yAxisScale(y1), fill: activePoint === circleId ? theme.palette.white : lineColor, onMouseOver: this._handleHover.bind(this, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseMove: this._handleHover.bind(this, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseOut: this._handleMouseOut, strokeWidth: activePoint === circleId ? DEFAULT_LINE_STROKE_SIZE : 0, stroke: activePoint === circleId ? lineColor : '' }));
675
+ var legendVal = this_1._points[i].legend;
676
+ var lineColor = this_1._points[i].color;
677
+ var activePoint = this_1.state.activePoint;
678
+ var theme = this_1.props.theme;
679
+ var verticaLineHeight = containerHeight - this_1.margins.bottom + 6;
680
+ if (this_1._points[i].data.length === 1) {
681
+ var _0 = this_1._points[i].data[0], x1_1 = _0.x, y1 = _0.y, xAxisCalloutData_1 = _0.xAxisCalloutData, xAxisCalloutAccessibilityData_1 = _0.xAxisCalloutAccessibilityData;
682
+ var circleId_1 = this_1._circleId + "_" + i;
683
+ pointsForLine.push(React.createElement("circle", __assign({ id: circleId_1, key: circleId_1, r: activePoint === circleId_1 ? 5.5 : 3.5, cx: this_1._xAxisScale(x1_1), cy: this_1._yAxisScale(y1), fill: activePoint === circleId_1 ? theme.palette.white : lineColor, onMouseOver: this_1._handleHover.bind(this_1, x1_1, y1, verticaLineHeight, xAxisCalloutData_1, circleId_1, xAxisCalloutAccessibilityData_1), onMouseMove: this_1._handleHover.bind(this_1, x1_1, y1, verticaLineHeight, xAxisCalloutData_1, circleId_1, xAxisCalloutAccessibilityData_1), onMouseOut: this_1._handleMouseOut, strokeWidth: activePoint === circleId_1 ? DEFAULT_LINE_STROKE_SIZE : 0, stroke: activePoint === circleId_1 ? lineColor : '', role: "img", "aria-label": this_1._getAriaLabel(i, 0), "data-is-focusable": true, ref: function (e) {
684
+ _this_1._refCallback(e, circleId_1);
685
+ }, onFocus: function () { return _this_1._handleFocus(circleId_1, x1_1, xAxisCalloutData_1, circleId_1, xAxisCalloutAccessibilityData_1); }, onBlur: this_1._handleMouseOut }, this_1._getClickHandler(this_1._points[i].data[0].onDataPointClick))));
673
686
  }
674
687
  var gapIndex = 0;
675
- var gaps = (_b = (_a = this._points[i].gaps) === null || _a === void 0 ? void 0 : _a.sort(function (a, b) { return a.startIndex - b.startIndex; })) !== null && _b !== void 0 ? _b : [];
688
+ var gaps = (_b = (_a = this_1._points[i].gaps) === null || _a === void 0 ? void 0 : _a.sort(function (a, b) { return a.startIndex - b.startIndex; })) !== null && _b !== void 0 ? _b : [];
676
689
  // Use path rendering technique for larger datasets to optimize performance.
677
- if (this.props.optimizeLargeData) {
690
+ if (this_1.props.optimizeLargeData && this_1._points[i].data.length > 1) {
678
691
  var line = d3Line()
679
692
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
680
693
  .x(function (d) { return _this_1._xAxisScale(d[0]); })
681
694
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
682
695
  .y(function (d) { return _this_1._yAxisScale(d[1]); })
683
696
  .curve(d3curveLinear);
684
- var lineId = this._lineId + "_" + i;
685
- var borderId = this._borderId + "_" + i;
686
- var strokeWidth = ((_c = this._points[i].lineOptions) === null || _c === void 0 ? void 0 : _c.strokeWidth) || this.props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;
687
- var isLegendSelected = this._legendHighlighted(legendVal) || this._noLegendHighlighted() || this.state.isSelectedLegend;
697
+ var lineId = this_1._lineId + "_" + i;
698
+ var borderId = this_1._borderId + "_" + i;
699
+ var strokeWidth = ((_c = this_1._points[i].lineOptions) === null || _c === void 0 ? void 0 : _c.strokeWidth) || this_1.props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;
700
+ var isLegendSelected = this_1._legendHighlighted(legendVal) || this_1._noLegendHighlighted() || this_1.state.isSelectedLegend;
688
701
  var lineData = [];
689
- for (var k = 0; k < this._points[i].data.length; k++) {
702
+ for (var k = 0; k < this_1._points[i].data.length; k++) {
690
703
  lineData.push([
691
- this._points[i].data[k].x instanceof Date
692
- ? this._points[i].data[k].x.getTime()
693
- : this._points[i].data[k].x,
694
- this._points[i].data[k].y,
704
+ this_1._points[i].data[k].x instanceof Date
705
+ ? this_1._points[i].data[k].x.getTime()
706
+ : this_1._points[i].data[k].x,
707
+ this_1._points[i].data[k].y,
695
708
  ]);
696
709
  }
697
710
  if (isLegendSelected) {
698
- var lineBorderWidth = ((_d = this._points[i].lineOptions) === null || _d === void 0 ? void 0 : _d.lineBorderWidth)
699
- ? Number.parseFloat(this._points[i].lineOptions.lineBorderWidth.toString())
711
+ var lineBorderWidth = ((_d = this_1._points[i].lineOptions) === null || _d === void 0 ? void 0 : _d.lineBorderWidth)
712
+ ? Number.parseFloat(this_1._points[i].lineOptions.lineBorderWidth.toString())
700
713
  : 0;
701
714
  if (lineBorderWidth > 0) {
702
- bordersForLine.push(React.createElement("path", { id: borderId, key: borderId, d: line(lineData), fill: "transparent", strokeLinecap: (_f = (_e = this._points[i].lineOptions) === null || _e === void 0 ? void 0 : _e.strokeLinecap) !== null && _f !== void 0 ? _f : 'round', strokeWidth: Number.parseFloat(strokeWidth.toString()) + lineBorderWidth, stroke: ((_g = this._points[i].lineOptions) === null || _g === void 0 ? void 0 : _g.lineBorderColor) || theme.palette.white, opacity: 1 }));
715
+ bordersForLine.push(React.createElement("path", { id: borderId, key: borderId, d: line(lineData), fill: "transparent", strokeLinecap: (_f = (_e = this_1._points[i].lineOptions) === null || _e === void 0 ? void 0 : _e.strokeLinecap) !== null && _f !== void 0 ? _f : 'round', strokeWidth: Number.parseFloat(strokeWidth.toString()) + lineBorderWidth, stroke: ((_g = this_1._points[i].lineOptions) === null || _g === void 0 ? void 0 : _g.lineBorderColor) || theme.palette.white, opacity: 1 }));
703
716
  }
704
- linesForLine.push(React.createElement("path", { id: lineId, key: lineId, d: line(lineData), fill: "transparent", "data-is-focusable": true, stroke: lineColor, strokeWidth: strokeWidth, strokeLinecap: (_j = (_h = this._points[i].lineOptions) === null || _h === void 0 ? void 0 : _h.strokeLinecap) !== null && _j !== void 0 ? _j : 'round', onMouseMove: this._onMouseOverLargeDataset.bind(this, i, verticaLineHeight), onMouseOver: this._onMouseOverLargeDataset.bind(this, i, verticaLineHeight), onMouseOut: this._handleMouseOut, onClick: this._onLineClick.bind(this, this._points[i].onLineClick), opacity: 1 }));
717
+ linesForLine.push(React.createElement("path", __assign({ id: lineId, key: lineId, d: line(lineData), fill: "transparent", "data-is-focusable": true, stroke: lineColor, strokeWidth: strokeWidth, strokeLinecap: (_j = (_h = this_1._points[i].lineOptions) === null || _h === void 0 ? void 0 : _h.strokeLinecap) !== null && _j !== void 0 ? _j : 'round', onMouseMove: this_1._onMouseOverLargeDataset.bind(this_1, i, verticaLineHeight), onMouseOver: this_1._onMouseOverLargeDataset.bind(this_1, i, verticaLineHeight), onMouseOut: this_1._handleMouseOut }, this_1._getClickHandler(this_1._points[i].onLineClick), { opacity: 1, role: "img", "aria-label": legendVal + ", series " + (i + 1) + " of " + this_1._points.length + " with " + this_1._points[i].data.length + " data points." })));
705
718
  }
706
719
  else {
707
- linesForLine.push(React.createElement("path", { id: lineId, key: lineId, d: line(lineData), fill: "transparent", "data-is-focusable": true, stroke: lineColor, strokeWidth: strokeWidth, strokeLinecap: (_l = (_k = this._points[i].lineOptions) === null || _k === void 0 ? void 0 : _k.strokeLinecap) !== null && _l !== void 0 ? _l : 'round', opacity: 0.1 }));
720
+ linesForLine.push(React.createElement("path", { id: lineId, key: lineId, d: line(lineData), fill: "transparent", "data-is-focusable": true, stroke: lineColor, strokeWidth: strokeWidth, strokeLinecap: (_l = (_k = this_1._points[i].lineOptions) === null || _k === void 0 ? void 0 : _k.strokeLinecap) !== null && _l !== void 0 ? _l : 'round', opacity: 0.1, role: "img", "aria-label": legendVal + ", series " + (i + 1) + " of " + this_1._points.length + " with " + this_1._points[i].data.length + " data points." }));
708
721
  }
709
- var isPointHighlighted = this.state.activeLine !== null && this.state.activeLine === i;
710
- pointsForLine.push(React.createElement("circle", { id: this._staticHighlightCircle + "_" + i, key: this._staticHighlightCircle + "_" + i, r: 5.5, cx: 0, cy: 0, fill: theme.palette.white, "data-is-focusable": true, strokeWidth: DEFAULT_LINE_STROKE_SIZE, stroke: lineColor, visibility: isPointHighlighted ? 'visibility' : 'hidden', onMouseMove: this._onMouseOverLargeDataset.bind(this, i, verticaLineHeight), onMouseOver: this._onMouseOverLargeDataset.bind(this, i, verticaLineHeight), onMouseOut: this._handleMouseOut }));
722
+ var isPointHighlighted = this_1.state.activeLine !== null && this_1.state.activeLine === i;
723
+ pointsForLine.push(React.createElement("circle", { id: this_1._staticHighlightCircle + "_" + i, key: this_1._staticHighlightCircle + "_" + i, r: 5.5, cx: 0, cy: 0, fill: theme.palette.white, strokeWidth: DEFAULT_LINE_STROKE_SIZE, stroke: lineColor, visibility: isPointHighlighted ? 'visibility' : 'hidden', onMouseMove: this_1._onMouseOverLargeDataset.bind(this_1, i, verticaLineHeight), onMouseOver: this_1._onMouseOverLargeDataset.bind(this_1, i, verticaLineHeight), onMouseOut: this_1._handleMouseOut }));
711
724
  }
712
- else {
713
- var _loop_1 = function (j) {
725
+ else if (!this_1.props.optimizeLargeData) {
726
+ var _loop_2 = function (j) {
714
727
  var gapResult = this_1._checkInGap(j, gaps, gapIndex);
715
728
  var isInGap = gapResult.isInGap;
716
729
  gapIndex = gapResult.gapIndex;
@@ -723,16 +736,16 @@ var LineChartBase = /** @class */ (function (_super) {
723
736
  var strokeWidth = ((_m = this_1._points[i].lineOptions) === null || _m === void 0 ? void 0 : _m.strokeWidth) || this_1.props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;
724
737
  var isLegendSelected = this_1._legendHighlighted(legendVal) || this_1._noLegendHighlighted() || this_1.state.isSelectedLegend;
725
738
  var currentPointHidden = this_1._points[i].hideNonActiveDots && activePoint !== circleId;
726
- pointsForLine.push(React.createElement("path", { id: circleId, key: circleId, d: path, "data-is-focusable": true, onMouseOver: this_1._handleHover.bind(this_1, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseMove: this_1._handleHover.bind(this_1, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseOut: this_1._handleMouseOut, onFocus: function () { return _this_1._handleFocus(lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData); }, onBlur: this_1._handleMouseOut, onClick: this_1._onDataPointClick.bind(this_1, this_1._points[i].data[j - 1].onDataPointClick), opacity: isLegendSelected && !currentPointHidden ? 1 : 0.01, fill: this_1._getPointFill(lineColor, circleId, j, false), stroke: lineColor, strokeWidth: strokeWidth }));
739
+ pointsForLine.push(React.createElement("path", __assign({ id: circleId, key: circleId, d: path, "data-is-focusable": true, onMouseOver: this_1._handleHover.bind(this_1, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseMove: this_1._handleHover.bind(this_1, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseOut: this_1._handleMouseOut, onFocus: function () { return _this_1._handleFocus(lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData); }, onBlur: this_1._handleMouseOut }, this_1._getClickHandler(this_1._points[i].data[j - 1].onDataPointClick), { opacity: isLegendSelected && !currentPointHidden ? 1 : 0.01, fill: this_1._getPointFill(lineColor, circleId, j, false), stroke: lineColor, strokeWidth: strokeWidth, role: "img", "aria-label": this_1._getAriaLabel(i, j - 1) })));
727
740
  if (j + 1 === this_1._points[i].data.length) {
728
741
  // If this is last point of the line segment.
729
742
  var lastCircleId_1 = "" + circleId + j + "L";
730
743
  var lastPointHidden = this_1._points[i].hideNonActiveDots && activePoint !== lastCircleId_1;
731
744
  path = this_1._getPath(this_1._xAxisScale(x2), this_1._yAxisScale(y2), lastCircleId_1, j, true, this_1._points[i].index);
732
745
  var _3 = this_1._points[i].data[j], lastCirlceXCallout_1 = _3.xAxisCalloutData, lastCirlceXCalloutAccessibilityData_1 = _3.xAxisCalloutAccessibilityData;
733
- pointsForLine.push(React.createElement("path", { id: lastCircleId_1, key: lastCircleId_1, d: path, "data-is-focusable": true, onMouseOver: this_1._handleHover.bind(this_1, x2, y2, verticaLineHeight, lastCirlceXCallout_1, lastCircleId_1, lastCirlceXCalloutAccessibilityData_1), onMouseMove: this_1._handleHover.bind(this_1, x2, y2, verticaLineHeight, lastCirlceXCallout_1, lastCircleId_1, lastCirlceXCalloutAccessibilityData_1), onMouseOut: this_1._handleMouseOut, onFocus: function () {
746
+ pointsForLine.push(React.createElement("path", __assign({ id: lastCircleId_1, key: lastCircleId_1, d: path, "data-is-focusable": true, onMouseOver: this_1._handleHover.bind(this_1, x2, y2, verticaLineHeight, lastCirlceXCallout_1, lastCircleId_1, lastCirlceXCalloutAccessibilityData_1), onMouseMove: this_1._handleHover.bind(this_1, x2, y2, verticaLineHeight, lastCirlceXCallout_1, lastCircleId_1, lastCirlceXCalloutAccessibilityData_1), onMouseOut: this_1._handleMouseOut, onFocus: function () {
734
747
  return _this_1._handleFocus(lineId, x2, lastCirlceXCallout_1, lastCircleId_1, lastCirlceXCalloutAccessibilityData_1);
735
- }, onBlur: this_1._handleMouseOut, onClick: this_1._onDataPointClick.bind(this_1, this_1._points[i].data[j].onDataPointClick), opacity: isLegendSelected && !lastPointHidden ? 1 : 0.01, fill: this_1._getPointFill(lineColor, lastCircleId_1, j, true), stroke: lineColor, strokeWidth: strokeWidth }));
748
+ }, onBlur: this_1._handleMouseOut }, this_1._getClickHandler(this_1._points[i].data[j].onDataPointClick), { opacity: isLegendSelected && !lastPointHidden ? 1 : 0.01, fill: this_1._getPointFill(lineColor, lastCircleId_1, j, true), stroke: lineColor, strokeWidth: strokeWidth, role: "img", "aria-label": this_1._getAriaLabel(i, j) })));
736
749
  /* eslint-enable react/jsx-no-bind */
737
750
  }
738
751
  if (isLegendSelected) {
@@ -744,9 +757,9 @@ var LineChartBase = /** @class */ (function (_super) {
744
757
  if (lineBorderWidth > 0) {
745
758
  bordersForLine.push(React.createElement("line", { id: borderId, key: borderId, x1: this_1._xAxisScale(x1), y1: this_1._yAxisScale(y1), x2: this_1._xAxisScale(x2), y2: this_1._yAxisScale(y2), strokeLinecap: (_q = (_p = this_1._points[i].lineOptions) === null || _p === void 0 ? void 0 : _p.strokeLinecap) !== null && _q !== void 0 ? _q : 'round', strokeWidth: Number.parseFloat(strokeWidth.toString()) + lineBorderWidth, stroke: ((_r = this_1._points[i].lineOptions) === null || _r === void 0 ? void 0 : _r.lineBorderColor) || theme.palette.white, opacity: 1 }));
746
759
  }
747
- linesForLine.push(React.createElement("line", { id: lineId, key: lineId, x1: this_1._xAxisScale(x1), y1: this_1._yAxisScale(y1), x2: this_1._xAxisScale(x2), y2: this_1._yAxisScale(y2), strokeWidth: strokeWidth, ref: function (e) {
760
+ linesForLine.push(React.createElement("line", __assign({ id: lineId, key: lineId, x1: this_1._xAxisScale(x1), y1: this_1._yAxisScale(y1), x2: this_1._xAxisScale(x2), y2: this_1._yAxisScale(y2), strokeWidth: strokeWidth, ref: function (e) {
748
761
  _this_1._refCallback(e, lineId);
749
- }, onMouseOver: this_1._handleHover.bind(this_1, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseMove: this_1._handleHover.bind(this_1, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseOut: this_1._handleMouseOut, stroke: lineColor, strokeLinecap: (_t = (_s = this_1._points[i].lineOptions) === null || _s === void 0 ? void 0 : _s.strokeLinecap) !== null && _t !== void 0 ? _t : 'round', strokeDasharray: (_u = this_1._points[i].lineOptions) === null || _u === void 0 ? void 0 : _u.strokeDasharray, strokeDashoffset: (_v = this_1._points[i].lineOptions) === null || _v === void 0 ? void 0 : _v.strokeDashoffset, opacity: 1, onClick: this_1._onLineClick.bind(this_1, this_1._points[i].onLineClick) }));
762
+ }, onMouseOver: this_1._handleHover.bind(this_1, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseMove: this_1._handleHover.bind(this_1, x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData), onMouseOut: this_1._handleMouseOut, stroke: lineColor, strokeLinecap: (_t = (_s = this_1._points[i].lineOptions) === null || _s === void 0 ? void 0 : _s.strokeLinecap) !== null && _t !== void 0 ? _t : 'round', strokeDasharray: (_u = this_1._points[i].lineOptions) === null || _u === void 0 ? void 0 : _u.strokeDasharray, strokeDashoffset: (_v = this_1._points[i].lineOptions) === null || _v === void 0 ? void 0 : _v.strokeDashoffset, opacity: 1 }, this_1._getClickHandler(this_1._points[i].onLineClick))));
750
763
  }
751
764
  }
752
765
  else {
@@ -755,12 +768,15 @@ var LineChartBase = /** @class */ (function (_super) {
755
768
  }
756
769
  }
757
770
  };
758
- var this_1 = this;
759
- for (var j = 1; j < this._points[i].data.length; j++) {
760
- _loop_1(j);
771
+ for (var j = 1; j < this_1._points[i].data.length; j++) {
772
+ _loop_2(j);
761
773
  }
762
774
  }
763
775
  lines.push.apply(lines, __spreadArray(__spreadArray(__spreadArray([], bordersForLine), linesForLine), pointsForLine));
776
+ };
777
+ var this_1 = this;
778
+ for (var i = this._points.length - 1; i >= 0; i--) {
779
+ _loop_1(i);
764
780
  }
765
781
  var classNames = getClassNames(this.props.styles, {
766
782
  theme: this.props.theme,