@fluentui/react-charting 5.23.11 → 5.23.13

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 (139) 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.js +8 -13
  6. package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
  7. package/lib/components/CommonComponents/CartesianChart.base.js +1 -2
  8. package/lib/components/CommonComponents/CartesianChart.base.js.map +1 -1
  9. package/lib/components/DonutChart/Arc/Arc.js +9 -10
  10. package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
  11. package/lib/components/DonutChart/DonutChart.base.js +3 -3
  12. package/lib/components/DonutChart/DonutChart.base.js.map +1 -1
  13. package/lib/components/DonutChart/Pie/Pie.js +3 -3
  14. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  15. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +3 -3
  16. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  17. package/lib/components/Legends/Legends.base.js +1 -2
  18. package/lib/components/Legends/Legends.base.js.map +1 -1
  19. package/lib/components/LineChart/LineChart.base.js +14 -23
  20. package/lib/components/LineChart/LineChart.base.js.map +1 -1
  21. package/lib/components/LineChart/eventAnnotation/EventAnnotation.js +2 -8
  22. package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  23. package/lib/components/PieChart/Arc/Arc.js +2 -1
  24. package/lib/components/PieChart/Arc/Arc.js.map +1 -1
  25. package/lib/components/PieChart/Pie/Pie.js +4 -4
  26. package/lib/components/PieChart/Pie/Pie.js.map +1 -1
  27. package/lib/components/PieChart/PieChart.base.js +4 -4
  28. package/lib/components/PieChart/PieChart.base.js.map +1 -1
  29. package/lib/components/SankeyChart/SankeyChart.base.js +9 -14
  30. package/lib/components/SankeyChart/SankeyChart.base.js.map +1 -1
  31. package/lib/components/StackedBarChart/MultiStackedBarChart.base.js +4 -5
  32. package/lib/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
  33. package/lib/components/StackedBarChart/StackedBarChart.base.js +3 -3
  34. package/lib/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
  35. package/lib/components/TreeChart/TreeChart.base.js +1 -2
  36. package/lib/components/TreeChart/TreeChart.base.js.map +1 -1
  37. package/lib/components/VerticalBarChart/VerticalBarChart.base.js +30 -44
  38. package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  39. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +10 -17
  40. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  41. package/lib/utilities/SVGTooltipText.js +4 -5
  42. package/lib/utilities/SVGTooltipText.js.map +1 -1
  43. package/lib-amd/components/AreaChart/AreaChart.base.js +8 -13
  44. package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
  45. package/lib-amd/components/CommonComponents/CartesianChart.base.js +1 -2
  46. package/lib-amd/components/CommonComponents/CartesianChart.base.js.map +1 -1
  47. package/lib-amd/components/DonutChart/Arc/Arc.js +9 -10
  48. package/lib-amd/components/DonutChart/Arc/Arc.js.map +1 -1
  49. package/lib-amd/components/DonutChart/DonutChart.base.js +3 -3
  50. package/lib-amd/components/DonutChart/DonutChart.base.js.map +1 -1
  51. package/lib-amd/components/DonutChart/Pie/Pie.js +3 -3
  52. package/lib-amd/components/DonutChart/Pie/Pie.js.map +1 -1
  53. package/lib-amd/components/GaugeChart/GaugeChart.types.js +2 -2
  54. package/lib-amd/components/GaugeChart/GaugeChart.types.js.map +1 -1
  55. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +3 -3
  56. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  57. package/lib-amd/components/HorizontalBarChart/HorizontalBarChart.types.js +1 -1
  58. package/lib-amd/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
  59. package/lib-amd/components/Legends/Legends.base.js +1 -2
  60. package/lib-amd/components/Legends/Legends.base.js.map +1 -1
  61. package/lib-amd/components/LineChart/LineChart.base.js +14 -23
  62. package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
  63. package/lib-amd/components/LineChart/eventAnnotation/EventAnnotation.js +2 -8
  64. package/lib-amd/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  65. package/lib-amd/components/PieChart/Arc/Arc.js +2 -1
  66. package/lib-amd/components/PieChart/Arc/Arc.js.map +1 -1
  67. package/lib-amd/components/PieChart/Pie/Pie.js +4 -4
  68. package/lib-amd/components/PieChart/Pie/Pie.js.map +1 -1
  69. package/lib-amd/components/PieChart/PieChart.base.js +4 -4
  70. package/lib-amd/components/PieChart/PieChart.base.js.map +1 -1
  71. package/lib-amd/components/SankeyChart/SankeyChart.base.js +9 -14
  72. package/lib-amd/components/SankeyChart/SankeyChart.base.js.map +1 -1
  73. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js +4 -5
  74. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
  75. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.types.js +1 -1
  76. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.types.js.map +1 -1
  77. package/lib-amd/components/StackedBarChart/StackedBarChart.base.js +3 -3
  78. package/lib-amd/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
  79. package/lib-amd/components/TreeChart/TreeChart.base.js +1 -2
  80. package/lib-amd/components/TreeChart/TreeChart.base.js.map +1 -1
  81. package/lib-amd/components/TreeChart/TreeChart.types.js +2 -2
  82. package/lib-amd/components/TreeChart/TreeChart.types.js.map +1 -1
  83. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +30 -44
  84. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  85. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +10 -17
  86. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  87. package/lib-amd/utilities/SVGTooltipText.js +4 -5
  88. package/lib-amd/utilities/SVGTooltipText.js.map +1 -1
  89. package/lib-amd/utilities/utilities.js +5 -5
  90. package/lib-amd/utilities/utilities.js.map +1 -1
  91. package/lib-commonjs/components/AreaChart/AreaChart.base.js +8 -13
  92. package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
  93. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js +1 -2
  94. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js.map +1 -1
  95. package/lib-commonjs/components/DonutChart/Arc/Arc.js +9 -10
  96. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
  97. package/lib-commonjs/components/DonutChart/DonutChart.base.js +3 -3
  98. package/lib-commonjs/components/DonutChart/DonutChart.base.js.map +1 -1
  99. package/lib-commonjs/components/DonutChart/Pie/Pie.js +3 -3
  100. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  101. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js +2 -2
  102. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
  103. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +3 -3
  104. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  105. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js +1 -1
  106. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
  107. package/lib-commonjs/components/Legends/Legends.base.js +1 -2
  108. package/lib-commonjs/components/Legends/Legends.base.js.map +1 -1
  109. package/lib-commonjs/components/LineChart/LineChart.base.js +14 -23
  110. package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
  111. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js +2 -8
  112. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  113. package/lib-commonjs/components/PieChart/Arc/Arc.js +2 -1
  114. package/lib-commonjs/components/PieChart/Arc/Arc.js.map +1 -1
  115. package/lib-commonjs/components/PieChart/Pie/Pie.js +4 -4
  116. package/lib-commonjs/components/PieChart/Pie/Pie.js.map +1 -1
  117. package/lib-commonjs/components/PieChart/PieChart.base.js +4 -4
  118. package/lib-commonjs/components/PieChart/PieChart.base.js.map +1 -1
  119. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js +9 -14
  120. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js.map +1 -1
  121. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js +4 -5
  122. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
  123. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.types.js +1 -1
  124. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.types.js.map +1 -1
  125. package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js +3 -3
  126. package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
  127. package/lib-commonjs/components/TreeChart/TreeChart.base.js +1 -2
  128. package/lib-commonjs/components/TreeChart/TreeChart.base.js.map +1 -1
  129. package/lib-commonjs/components/TreeChart/TreeChart.types.js +2 -2
  130. package/lib-commonjs/components/TreeChart/TreeChart.types.js.map +1 -1
  131. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +30 -44
  132. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  133. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +10 -17
  134. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  135. package/lib-commonjs/utilities/SVGTooltipText.js +4 -5
  136. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  137. package/lib-commonjs/utilities/utilities.js +5 -5
  138. package/lib-commonjs/utilities/utilities.js.map +1 -1
  139. package/package.json +4 -4
@@ -4,7 +4,7 @@ define(["require", "exports", "tslib", "react", "d3-shape", "../Arc/index", "@fl
4
4
  exports.Pie = void 0;
5
5
  var getClassNames = (0, Utilities_1.classNamesFunction)();
6
6
  var TEXT_PADDING = 5;
7
- var Pie = exports.Pie = /** @class */ (function (_super) {
7
+ var Pie = /** @class */ (function (_super) {
8
8
  tslib_1.__extends(Pie, _super);
9
9
  function Pie(props) {
10
10
  var _this = _super.call(this, props) || this;
@@ -37,9 +37,8 @@ define(["require", "exports", "tslib", "react", "d3-shape", "../Arc/index", "@fl
37
37
  return _this;
38
38
  }
39
39
  Pie.prototype.render = function () {
40
- var _a;
41
40
  var _this = this;
42
- var pie = (_a = this.props, _a.pie), data = _a.data;
41
+ var _a = this.props, pie = _a.pie, data = _a.data;
43
42
  var focusData = this._pieForFocusRing(data);
44
43
  var piechart = pie(data);
45
44
  var translate = "translate(".concat(this.props.width / 2, ", ").concat(this.props.height / 2, ")");
@@ -69,5 +68,6 @@ define(["require", "exports", "tslib", "react", "d3-shape", "../Arc/index", "@fl
69
68
  };
70
69
  return Pie;
71
70
  }(React.Component));
71
+ exports.Pie = Pie;
72
72
  });
73
73
  //# sourceMappingURL=Pie.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pie.js","sourceRoot":"../src/","sources":["components/DonutChart/Pie/Pie.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { pie as d3Pie } from 'd3-shape';\nimport { IPieProps, IPieStyleProps, IPieStyles } from './index';\nimport { Arc, IArcData } from '../Arc/index';\nimport { IChartDataPoint } from '../index';\nimport { classNamesFunction } from '@fluentui/react/lib/Utilities';\nimport { getStyles } from './Pie.styles';\nimport { getNextGradient, wrapTextInsideDonut } from '../../../utilities/index';\n\nconst getClassNames = classNamesFunction<IPieStyleProps, IPieStyles>();\nconst TEXT_PADDING: number = 5;\n\nexport class Pie extends React.Component<IPieProps, {}> {\n public static defaultProps: Partial<IPieProps> = {\n pie: d3Pie()\n .sort(null)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .value((d: any) => d.data)\n .padAngle(0.02),\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _pieForFocusRing: any;\n private _totalValue: number;\n\n constructor(props: IPieProps) {\n super(props);\n this._hoverCallback = this._hoverCallback.bind(this);\n this._pieForFocusRing = d3Pie()\n .sort(null)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .value((d: any) => d.data)\n .padAngle(0);\n }\n\n public arcGenerator = (d: IArcData, i: number, focusData: IArcData, href?: string): JSX.Element => {\n let color = d && d.data && d.data.color;\n let nextColor = color;\n\n if (this.props.enableGradient) {\n color = this.props.data[i].gradient?.[0] ?? getNextGradient(i, 0, this.props.theme!.isInverted)[0];\n nextColor = this.props.data[i].gradient?.[1] ?? getNextGradient(i, 0, this.props.theme!.isInverted)[1];\n }\n\n return (\n <Arc\n key={i}\n data={d}\n focusData={focusData}\n innerRadius={this.props.innerRadius}\n outerRadius={this.props.outerRadius}\n color={color!}\n nextColor={nextColor}\n enableGradient={this.props.enableGradient}\n roundCorners={this.props.roundCorners}\n onFocusCallback={this._focusCallback}\n hoverOnCallback={this._hoverCallback}\n onBlurCallback={this.props.onBlurCallback}\n hoverLeaveCallback={this.props.hoverLeaveCallback}\n uniqText={this.props.uniqText}\n activeArc={this.props.activeArc}\n href={href}\n calloutId={this.props.calloutId}\n valueInsideDonut={this.props.valueInsideDonut}\n theme={this.props.theme!}\n focusedArcId={this.props.focusedArcId}\n showLabelsInPercent={this.props.showLabelsInPercent}\n totalValue={this._totalValue}\n hideLabels={this.props.hideLabels}\n />\n );\n };\n\n public render(): JSX.Element {\n const { pie, data } = this.props;\n const focusData = this._pieForFocusRing(data);\n const piechart = pie(data);\n const translate = `translate(${this.props.width / 2}, ${this.props.height / 2})`;\n const classNames = getClassNames(getStyles, {\n theme: this.props.theme!,\n });\n\n this._totalValue = this._computeTotalValue();\n\n return (\n <g transform={translate}>\n {piechart.map((d: IArcData, i: number) => this.arcGenerator(d, i, focusData[i], this.props.href))}\n {this.props.valueInsideDonut && (\n <text y={5} textAnchor=\"middle\" dominantBaseline=\"middle\" className={classNames.insideDonutString}>\n {this.props.valueInsideDonut}\n </text>\n )}\n </g>\n );\n }\n\n public componentDidUpdate(): void {\n const classNames = getClassNames(getStyles, {\n theme: this.props.theme!,\n });\n\n wrapTextInsideDonut(classNames.insideDonutString, this.props.innerRadius! * 2 - TEXT_PADDING);\n }\n\n private _focusCallback = (data: IChartDataPoint, id: string, e: SVGPathElement): void => {\n this.props.onFocusCallback!(data, id, e);\n };\n\n private _hoverCallback(data: IChartDataPoint, e: React.MouseEvent<SVGPathElement>): void {\n this.props.hoverOnCallback!(data, e);\n }\n\n private _computeTotalValue = () => {\n let totalValue = 0;\n this.props.data.forEach((arc: IChartDataPoint) => {\n totalValue += arc.data!;\n });\n return totalValue;\n };\n}\n"]}
1
+ {"version":3,"file":"Pie.js","sourceRoot":"../src/","sources":["components/DonutChart/Pie/Pie.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { pie as d3Pie } from 'd3-shape';\nimport { IPieProps, IPieStyleProps, IPieStyles } from './index';\nimport { Arc, IArcData } from '../Arc/index';\nimport { IChartDataPoint } from '../index';\nimport { classNamesFunction } from '@fluentui/react/lib/Utilities';\nimport { getStyles } from './Pie.styles';\nimport { getNextGradient, wrapTextInsideDonut } from '../../../utilities/index';\n\nconst getClassNames = classNamesFunction<IPieStyleProps, IPieStyles>();\nconst TEXT_PADDING: number = 5;\n\nexport class Pie extends React.Component<IPieProps, {}> {\n public static defaultProps: Partial<IPieProps> = {\n pie: d3Pie()\n .sort(null)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .value((d: any) => d.data)\n .padAngle(0.02),\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _pieForFocusRing: any;\n private _totalValue: number;\n\n constructor(props: IPieProps) {\n super(props);\n this._hoverCallback = this._hoverCallback.bind(this);\n this._pieForFocusRing = d3Pie()\n .sort(null)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .value((d: any) => d.data)\n .padAngle(0);\n }\n\n public arcGenerator = (d: IArcData, i: number, focusData: IArcData, href?: string): JSX.Element => {\n let color = d && d.data && d.data.color;\n let nextColor = color;\n\n if (this.props.enableGradient) {\n color = this.props.data[i].gradient?.[0] ?? getNextGradient(i, 0, this.props.theme!.isInverted)[0];\n nextColor = this.props.data[i].gradient?.[1] ?? getNextGradient(i, 0, this.props.theme!.isInverted)[1];\n }\n\n return (\n <Arc\n key={i}\n data={d}\n focusData={focusData}\n innerRadius={this.props.innerRadius}\n outerRadius={this.props.outerRadius}\n color={color!}\n nextColor={nextColor}\n enableGradient={this.props.enableGradient}\n roundCorners={this.props.roundCorners}\n onFocusCallback={this._focusCallback}\n hoverOnCallback={this._hoverCallback}\n onBlurCallback={this.props.onBlurCallback}\n hoverLeaveCallback={this.props.hoverLeaveCallback}\n uniqText={this.props.uniqText}\n activeArc={this.props.activeArc}\n href={href}\n calloutId={this.props.calloutId}\n valueInsideDonut={this.props.valueInsideDonut}\n theme={this.props.theme!}\n focusedArcId={this.props.focusedArcId}\n showLabelsInPercent={this.props.showLabelsInPercent}\n totalValue={this._totalValue}\n hideLabels={this.props.hideLabels}\n />\n );\n };\n\n public render(): JSX.Element {\n const { pie, data } = this.props;\n const focusData = this._pieForFocusRing(data);\n const piechart = pie(data);\n const translate = `translate(${this.props.width / 2}, ${this.props.height / 2})`;\n const classNames = getClassNames(getStyles, {\n theme: this.props.theme!,\n });\n\n this._totalValue = this._computeTotalValue();\n\n return (\n <g transform={translate}>\n {piechart.map((d: IArcData, i: number) => this.arcGenerator(d, i, focusData[i], this.props.href))}\n {this.props.valueInsideDonut && (\n <text y={5} textAnchor=\"middle\" dominantBaseline=\"middle\" className={classNames.insideDonutString}>\n {this.props.valueInsideDonut}\n </text>\n )}\n </g>\n );\n }\n\n public componentDidUpdate(): void {\n const classNames = getClassNames(getStyles, {\n theme: this.props.theme!,\n });\n\n wrapTextInsideDonut(classNames.insideDonutString, this.props.innerRadius! * 2 - TEXT_PADDING);\n }\n\n private _focusCallback = (data: IChartDataPoint, id: string, e: SVGPathElement): void => {\n this.props.onFocusCallback!(data, id, e);\n };\n\n private _hoverCallback(data: IChartDataPoint, e: React.MouseEvent<SVGPathElement>): void {\n this.props.hoverOnCallback!(data, e);\n }\n\n private _computeTotalValue = () => {\n let totalValue = 0;\n this.props.data.forEach((arc: IChartDataPoint) => {\n totalValue += arc.data!;\n });\n return totalValue;\n };\n}\n"]}
@@ -9,7 +9,7 @@ define(["require", "exports"], function (require, exports) {
9
9
  (function (GaugeValueFormat) {
10
10
  GaugeValueFormat["Percentage"] = "percentage";
11
11
  GaugeValueFormat["Fraction"] = "fraction";
12
- })(GaugeValueFormat = exports.GaugeValueFormat || (exports.GaugeValueFormat = {}));
12
+ })(GaugeValueFormat || (exports.GaugeValueFormat = GaugeValueFormat = {}));
13
13
  /**
14
14
  * {@docCategory GaugeChart}
15
15
  */
@@ -17,6 +17,6 @@ define(["require", "exports"], function (require, exports) {
17
17
  (function (GaugeChartVariant) {
18
18
  GaugeChartVariant["SingleSegment"] = "single-segment";
19
19
  GaugeChartVariant["MultipleSegments"] = "multiple-segments";
20
- })(GaugeChartVariant = exports.GaugeChartVariant || (exports.GaugeChartVariant = {}));
20
+ })(GaugeChartVariant || (exports.GaugeChartVariant = GaugeChartVariant = {}));
21
21
  });
22
22
  //# sourceMappingURL=GaugeChart.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GaugeChart.types.js","sourceRoot":"../src/","sources":["components/GaugeChart/GaugeChart.types.ts"],"names":[],"mappings":";;;;IAqCA;;OAEG;IACH,IAAY,gBAGX;IAHD,WAAY,gBAAgB;QAC1B,6CAAyB,CAAA;QACzB,yCAAqB,CAAA;IACvB,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B;IAED;;OAEG;IACH,IAAY,iBAGX;IAHD,WAAY,iBAAiB;QAC3B,qDAAgC,CAAA;QAChC,2DAAsC,CAAA;IACxC,CAAC,EAHW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAG5B","sourcesContent":["import { IStyle, ITheme } from '@fluentui/react/lib/Styling';\nimport { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { ILegendsProps } from '../Legends/index';\nimport { IAccessibilityProps } from '../../types/index';\nimport { ICalloutProps } from '@fluentui/react/lib/Callout';\n\n/**\n * Gauge Chart segment interface.\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartSegment {\n /**\n * Legend text for a segment\n */\n legend: string;\n\n /**\n * Size of the segment\n */\n size: number;\n\n /**\n * Color of the segment\n */\n color?: string;\n\n /**\n * Gradient color of the segment\n */\n gradient?: [string, string];\n\n /**\n * Accessibility data for the segment\n */\n accessibilityData?: IAccessibilityProps;\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport enum GaugeValueFormat {\n Percentage = 'percentage',\n Fraction = 'fraction',\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport enum GaugeChartVariant {\n SingleSegment = 'single-segment',\n MultipleSegments = 'multiple-segments',\n}\n\n/**\n * Gauge Chart properties\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartProps {\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Title of the chart\n */\n chartTitle?: string;\n\n /**\n * Current value of the gauge\n */\n chartValue: number;\n\n /**\n * Sections of the gauge\n */\n segments: IGaugeChartSegment[];\n\n /**\n * Minimum value of the gauge\n * @defaultvalue 0\n */\n minValue?: number;\n\n /**\n * Maximum value of the gauge\n */\n maxValue?: number;\n\n /**\n * Additional text to display below the chart value\n */\n sublabel?: string;\n\n /**\n * Hide the min and max values of the gauge\n * @defaultvalue false\n */\n hideMinMax?: boolean;\n\n /**\n * Format of the chart value\n * @defaultvalue GaugeValueFormat.Percentage\n */\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string);\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /*\n * Props for the legends in the chart\n */\n legendProps?: Partial<ILegendsProps>;\n\n /**\n * Do not show tooltips in chart\n * @defaultvalue false\n */\n hideTooltip?: boolean;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Theme (provided through customization)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: IStyleFunctionOrObject<IGaugeChartStyleProps, IGaugeChartStyles>;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: Partial<ICalloutProps>;\n\n /**\n * Specifies the variant of GaugeChart to be rendered\n * @defaultvalue GaugeChartVariant.MultipleSegments\n */\n variant?: GaugeChartVariant;\n\n /**\n * Prop to enable the gradient in the chart\n * @default false\n */\n enableGradient?: boolean;\n\n /**\n * Prop to enable the round corners in the chart\n * @default false\n */\n roundCorners?: boolean;\n}\n\n/**\n * Gauge Chart style properties\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartStyleProps {\n /**\n * Theme (provided through customization)\n */\n theme: ITheme;\n\n /**\n * Font size of the chart value\n */\n chartValueSize?: number;\n\n /**\n * Width of the chart\n */\n chartWidth?: number;\n\n /**\n * Height of the chart\n */\n chartHeight?: number;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Color of the line\n */\n lineColor?: string;\n\n /**\n * Boolean flag which determines if shape is drawn in callout\n */\n toDrawShape?: boolean;\n\n /**\n * solid color for the arc (when enableGradient is false)\n */\n solidFill?: string;\n\n /**\n * gradient for the arc (when enableGradient is true)\n */\n gradientFill?: string;\n\n /**\n * opacity of the arc\n */\n opacity?: number;\n}\n\n/**\n * Gauge Chart styles\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartStyles {\n /**\n * Styles for the root element\n */\n root?: IStyle;\n\n /**\n * Styles for the chart\n */\n chart?: IStyle;\n\n /**\n * Styles for the min and max values\n */\n limits?: IStyle;\n\n /**\n * Styles for the chart value\n */\n chartValue?: IStyle;\n\n /**\n * Styles for the sublabel\n */\n sublabel?: IStyle;\n\n /**\n * Styles for the needle\n */\n needle?: IStyle;\n\n /**\n * Styles for the chart title\n */\n chartTitle?: IStyle;\n\n /**\n * Styles for the segments\n */\n segment?: IStyle;\n\n /**\n * Styles for gradient segments\n */\n gradientSegment?: IStyle;\n\n /**\n * Styles for the legends container\n */\n legendsContainer?: IStyle;\n\n /**\n * Styles for callout root-content\n */\n calloutContentRoot?: IStyle;\n\n /**\n * Styles for callout x-content\n */\n calloutContentX?: IStyle;\n\n /**\n * Styles for callout y-content\n */\n calloutContentY?: IStyle;\n\n /**\n * Styles for description message\n */\n descriptionMessage?: IStyle;\n\n /**\n * Styles for callout Date time container\n */\n calloutDateTimeContainer?: IStyle;\n\n /**\n * Styles for callout info container\n */\n calloutInfoContainer?: IStyle;\n\n /**\n * Styles for callout block container\n */\n calloutBlockContainer?: IStyle;\n\n /**\n * Styles for callout legend text\n */\n calloutlegendText?: IStyle;\n\n /**\n * Styles for the shape object in the callout\n */\n shapeStyles?: IStyle;\n}\n"]}
1
+ {"version":3,"file":"GaugeChart.types.js","sourceRoot":"../src/","sources":["components/GaugeChart/GaugeChart.types.ts"],"names":[],"mappings":";;;;IAqCA;;OAEG;IACH,IAAY,gBAGX;IAHD,WAAY,gBAAgB;QAC1B,6CAAyB,CAAA;QACzB,yCAAqB,CAAA;IACvB,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;IAED;;OAEG;IACH,IAAY,iBAGX;IAHD,WAAY,iBAAiB;QAC3B,qDAAgC,CAAA;QAChC,2DAAsC,CAAA;IACxC,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B","sourcesContent":["import { IStyle, ITheme } from '@fluentui/react/lib/Styling';\nimport { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { ILegendsProps } from '../Legends/index';\nimport { IAccessibilityProps } from '../../types/index';\nimport { ICalloutProps } from '@fluentui/react/lib/Callout';\n\n/**\n * Gauge Chart segment interface.\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartSegment {\n /**\n * Legend text for a segment\n */\n legend: string;\n\n /**\n * Size of the segment\n */\n size: number;\n\n /**\n * Color of the segment\n */\n color?: string;\n\n /**\n * Gradient color of the segment\n */\n gradient?: [string, string];\n\n /**\n * Accessibility data for the segment\n */\n accessibilityData?: IAccessibilityProps;\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport enum GaugeValueFormat {\n Percentage = 'percentage',\n Fraction = 'fraction',\n}\n\n/**\n * {@docCategory GaugeChart}\n */\nexport enum GaugeChartVariant {\n SingleSegment = 'single-segment',\n MultipleSegments = 'multiple-segments',\n}\n\n/**\n * Gauge Chart properties\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartProps {\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Title of the chart\n */\n chartTitle?: string;\n\n /**\n * Current value of the gauge\n */\n chartValue: number;\n\n /**\n * Sections of the gauge\n */\n segments: IGaugeChartSegment[];\n\n /**\n * Minimum value of the gauge\n * @defaultvalue 0\n */\n minValue?: number;\n\n /**\n * Maximum value of the gauge\n */\n maxValue?: number;\n\n /**\n * Additional text to display below the chart value\n */\n sublabel?: string;\n\n /**\n * Hide the min and max values of the gauge\n * @defaultvalue false\n */\n hideMinMax?: boolean;\n\n /**\n * Format of the chart value\n * @defaultvalue GaugeValueFormat.Percentage\n */\n chartValueFormat?: GaugeValueFormat | ((sweepFraction: [number, number]) => string);\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /*\n * Props for the legends in the chart\n */\n legendProps?: Partial<ILegendsProps>;\n\n /**\n * Do not show tooltips in chart\n * @defaultvalue false\n */\n hideTooltip?: boolean;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Theme (provided through customization)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: IStyleFunctionOrObject<IGaugeChartStyleProps, IGaugeChartStyles>;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: Partial<ICalloutProps>;\n\n /**\n * Specifies the variant of GaugeChart to be rendered\n * @defaultvalue GaugeChartVariant.MultipleSegments\n */\n variant?: GaugeChartVariant;\n\n /**\n * Prop to enable the gradient in the chart\n * @default false\n */\n enableGradient?: boolean;\n\n /**\n * Prop to enable the round corners in the chart\n * @default false\n */\n roundCorners?: boolean;\n}\n\n/**\n * Gauge Chart style properties\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartStyleProps {\n /**\n * Theme (provided through customization)\n */\n theme: ITheme;\n\n /**\n * Font size of the chart value\n */\n chartValueSize?: number;\n\n /**\n * Width of the chart\n */\n chartWidth?: number;\n\n /**\n * Height of the chart\n */\n chartHeight?: number;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Color of the line\n */\n lineColor?: string;\n\n /**\n * Boolean flag which determines if shape is drawn in callout\n */\n toDrawShape?: boolean;\n\n /**\n * solid color for the arc (when enableGradient is false)\n */\n solidFill?: string;\n\n /**\n * gradient for the arc (when enableGradient is true)\n */\n gradientFill?: string;\n\n /**\n * opacity of the arc\n */\n opacity?: number;\n}\n\n/**\n * Gauge Chart styles\n * {@docCategory GaugeChart}\n */\nexport interface IGaugeChartStyles {\n /**\n * Styles for the root element\n */\n root?: IStyle;\n\n /**\n * Styles for the chart\n */\n chart?: IStyle;\n\n /**\n * Styles for the min and max values\n */\n limits?: IStyle;\n\n /**\n * Styles for the chart value\n */\n chartValue?: IStyle;\n\n /**\n * Styles for the sublabel\n */\n sublabel?: IStyle;\n\n /**\n * Styles for the needle\n */\n needle?: IStyle;\n\n /**\n * Styles for the chart title\n */\n chartTitle?: IStyle;\n\n /**\n * Styles for the segments\n */\n segment?: IStyle;\n\n /**\n * Styles for gradient segments\n */\n gradientSegment?: IStyle;\n\n /**\n * Styles for the legends container\n */\n legendsContainer?: IStyle;\n\n /**\n * Styles for callout root-content\n */\n calloutContentRoot?: IStyle;\n\n /**\n * Styles for callout x-content\n */\n calloutContentX?: IStyle;\n\n /**\n * Styles for callout y-content\n */\n calloutContentY?: IStyle;\n\n /**\n * Styles for description message\n */\n descriptionMessage?: IStyle;\n\n /**\n * Styles for callout Date time container\n */\n calloutDateTimeContainer?: IStyle;\n\n /**\n * Styles for callout info container\n */\n calloutInfoContainer?: IStyle;\n\n /**\n * Styles for callout block container\n */\n calloutBlockContainer?: IStyle;\n\n /**\n * Styles for callout legend text\n */\n calloutlegendText?: IStyle;\n\n /**\n * Styles for the shape object in the callout\n */\n shapeStyles?: IStyle;\n}\n"]}
@@ -10,7 +10,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
10
10
  // => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width
11
11
  /** Rate at which the space between the bars in a group changes wrt the bar width */
12
12
  var BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);
13
- var GroupedVerticalBarChartBase = exports.GroupedVerticalBarChartBase = /** @class */ (function (_super) {
13
+ var GroupedVerticalBarChartBase = /** @class */ (function (_super) {
14
14
  tslib_1.__extends(GroupedVerticalBarChartBase, _super);
15
15
  function GroupedVerticalBarChartBase(props) {
16
16
  var _this = _super.call(this, props) || this;
@@ -368,10 +368,9 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
368
368
  return _this;
369
369
  }
370
370
  GroupedVerticalBarChartBase.prototype.render = function () {
371
- var _a;
372
371
  var _this = this;
373
372
  var points = this.props.data;
374
- var keys = (_a = this._createSet(points), _a.keys), xAxisLabels = _a.xAxisLabels, datasetForBars = _a.datasetForBars;
373
+ var _a = this._createSet(points), keys = _a.keys, xAxisLabels = _a.xAxisLabels, datasetForBars = _a.datasetForBars;
375
374
  this._keys = keys;
376
375
  this._xAxisLabels = xAxisLabels;
377
376
  this._datasetForBars = datasetForBars;
@@ -444,5 +443,6 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
444
443
  };
445
444
  return GroupedVerticalBarChartBase;
446
445
  }(React.Component));
446
+ exports.GroupedVerticalBarChartBase = GroupedVerticalBarChartBase;
447
447
  });
448
448
  //# sourceMappingURL=GroupedVerticalBarChart.base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupedVerticalBarChart.base.js","sourceRoot":"../src/","sources":["components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { max as d3Max } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { classNamesFunction, getId, getRTL, memoizeFunction, warnDeprecations } from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet, IPalette } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfXAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatValueWithSIPrefix,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextGradient,\n getNextColor,\n} from '../../utilities/index';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ILegend,\n IGroupedVerticalBarChartData,\n IGroupedVerticalBarChartProps,\n IGroupedVerticalBarChartStyleProps,\n IGroupedVerticalBarChartStyles,\n IGVBarChartSeriesPoint,\n IMargins,\n IBasestate,\n IRefArrayData,\n Legends,\n} from '../../index';\n\nconst COMPONENT_NAME = 'GROUPED VERTICAL BAR CHART';\nconst getClassNames = classNamesFunction<IGroupedVerticalBarChartStyleProps, IGroupedVerticalBarChartStyles>();\ntype StringAxis = D3Axis<string>;\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\n// x1_inner_padding = space_between_bars / (space_between_bars + bar_width)\n// => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width\n/** Rate at which the space between the bars in a group changes wrt the bar width */\nconst BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface IGVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface IGVSingleDataPoint {\n [key: string]: IGVDataPoint;\n}\nexport interface IGroupedVerticalBarChartState extends IBasestate {\n dataPointCalloutProps?: IGVBarChartSeriesPoint;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n}\n\nexport class GroupedVerticalBarChartBase extends React.Component<\n IGroupedVerticalBarChartProps,\n IGroupedVerticalBarChartState\n> {\n public static defaultProps: Partial<IGroupedVerticalBarChartProps> = {\n maxBarWidth: 24,\n };\n\n private _createSet: (\n data: IGroupedVerticalBarChartData[],\n ) => // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { keys: string[]; xAxisLabels: string[]; datasetForBars: any };\n private _dataset: IGVDataPoint[];\n private _keys: string[];\n private _xAxisLabels: string[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _datasetForBars: any;\n private margins: IMargins;\n private _groupedVerticalBarGraph: JSX.Element[];\n private _classNames: IProcessedStyleSet<IGroupedVerticalBarChartStyles>;\n private _refArray: IRefArrayData[];\n private _yMax: number;\n private _calloutId: string;\n private _tooltipId: string;\n private _xAxisType: XAxisTypes;\n private _isRtl: boolean = getRTL();\n private _calloutAnchorPoint: IGVBarChartSeriesPoint | null;\n private _barWidth: number;\n private _domainMargin: number;\n private _emptyChartId: string;\n private _groupWidth: number;\n private _xAxisInnerPadding: number;\n private _xAxisOuterPadding: number;\n\n public constructor(props: IGroupedVerticalBarChartProps) {\n super(props);\n this._createSet = memoizeFunction((data: IGroupedVerticalBarChartData[]) => this._createDataSetOfGVBC(data));\n this.state = {\n color: '',\n dataForHoverCard: 0,\n isCalloutVisible: false,\n refSelected: null,\n selectedLegend: '',\n xCalloutValue: '',\n yCalloutValue: '',\n YValueHover: [],\n hoverXValue: '',\n calloutLegend: '',\n activeLegend: '',\n };\n warnDeprecations(COMPONENT_NAME, props, {\n showYAxisGridLines: 'Dont use this property. Lines are drawn by default',\n showXAxisPath: 'Dont use this property. Axis line removed default.',\n showYAxisPath: 'Dont use this property. No need to display Y axis path. Handling default',\n showXAxisGridLines: 'Dont use this property. Handling with default value.',\n legendColor: 'Dont use this property. colour will pick from given data.',\n });\n this._refArray = [];\n this._calloutId = getId('callout');\n this._tooltipId = getId('GVBCTooltipId_');\n this._emptyChartId = getId('_GVBC_empty');\n this._domainMargin = MIN_DOMAIN_MARGIN;\n }\n\n public render(): React.ReactNode {\n const points = this.props.data;\n const { keys, xAxisLabels, datasetForBars } = this._createSet(points);\n this._keys = keys;\n this._xAxisLabels = xAxisLabels;\n this._datasetForBars = datasetForBars;\n this._xAxisType = getTypeOfAxis(points[0].name, true) as XAxisTypes;\n const legends: JSX.Element = this._getLegendData(points, this.props.theme!.palette);\n this._adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yMax = d3Max(this._dataset, (point: any) => d3Max(this._keys, (key: string) => point[key]));\n this._yMax = Math.max(yMax, this.props.yMaxValue || 0);\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n href: this.props.href!,\n });\n const calloutProps = {\n target: this.state.refSelected,\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n gapSpace: 15,\n isBeakVisible: false,\n setInitialFocus: true,\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 YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n onDismiss: this._closeCallout,\n ...this.props.calloutProps,\n preventDismissOnLostFocus: true,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: this.props.tickValues!,\n tickFormat: this.props.tickFormat!,\n };\n\n return !this._isChartEmpty() ? (\n <CartesianChart\n {...this.props}\n chartTitle={this._getChartTitle()}\n points={this._datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n calloutProps={calloutProps}\n legendBars={legends}\n xAxisType={this._xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={this._xAxisLabels}\n tickParams={tickParams}\n getDomainNRangeValues={this._getDomainNRangeValues}\n getMinMaxOfYAxis={this._getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n tickPadding={this.props.tickPadding || 5}\n maxOfYVal={this._yMax}\n svgFocusZoneProps={{\n direction: FocusZoneDirection.horizontal,\n }}\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.StringAxis && {\n xAxisInnerPadding: this._xAxisInnerPadding,\n xAxisOuterPadding: this._xAxisOuterPadding,\n })}\n barwidth={this._barWidth}\n /* eslint-disable react/jsx-no-bind */\n children={() => {\n return <g>{this._groupedVerticalBarGraph}</g>;\n }}\n />\n ) : (\n <div\n id={this._emptyChartId}\n role={'alert'}\n style={{ opacity: '0' }}\n aria-label={'Graph has no data to display'}\n />\n );\n }\n\n private _getMinMaxOfYAxis = () => {\n return { startValue: 0, endValue: 0 };\n };\n\n private _getDomainNRangeValues = (\n points: IGroupedVerticalBarChartData[],\n margins: IMargins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) => {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n };\n\n private _getGraphData = (\n xScale: StringAxis | NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n ) => {\n const xScale0 = this._createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n this._barWidth = getBarWidth(\n this.props.barwidth,\n this.props.maxBarWidth,\n xScale0.bandwidth() / (this._keys.length + (this._keys.length - 1) * BAR_GAP_RATE),\n );\n this._groupWidth = (this._keys.length + (this._keys.length - 1) * BAR_GAP_RATE) * this._barWidth;\n\n const xScale1 = this._createX1Scale();\n const allGroupsBars: JSX.Element[] = [];\n this._datasetForBars.forEach((singleSet: IGVSingleDataPoint) => {\n allGroupsBars.push(this._buildGraph(singleSet, xScale0, xScale1, containerHeight, xElement!));\n });\n this._groupedVerticalBarGraph = allGroupsBars;\n };\n\n private _getMargins = (margins: IMargins) => (this.margins = margins);\n\n private _createDataSetOfGVBC = (points: IGroupedVerticalBarChartData[]) => {\n const keys: string[] = [];\n const xAxisLabels: string[] = points.map(singlePoint => singlePoint.name);\n points[0].series.forEach((singleKey: IGVBarChartSeriesPoint) => {\n keys.push(singleKey.key);\n });\n const datasetForBars = this._createDataset(points);\n return {\n keys,\n xAxisLabels,\n datasetForBars,\n };\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n : null;\n };\n\n private _getOpacity = (legendTitle: string): string => {\n const opacity = this._legendHighlighted(legendTitle) || this._noLegendHighlighted() ? '' : '0.1';\n return opacity;\n };\n\n private _onBarHover = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (this._calloutAnchorPoint !== pointData) {\n this._calloutAnchorPoint = pointData;\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 === pointData.legend,\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries,\n hoverXValue: pointData.xAxisCalloutData,\n });\n }\n };\n\n private _onBarLeave = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({ isCalloutVisible: false });\n };\n\n private _onBarFocus = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n refArrayIndexNumber: number,\n ): void => {\n this._refArray.forEach((obj: IRefArrayData, index: number) => {\n if (obj.index === pointData.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 === pointData.legend,\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries,\n hoverXValue: pointData.xAxisCalloutData,\n });\n }\n });\n };\n\n private _redirectToUrl = (href: string | undefined): void => {\n href ? (window.location.href = href) : '';\n };\n\n private _refCallback(element: SVGRectElement, legendTitle: string, refIndexNumber: number): void {\n this._refArray[refIndexNumber] = { index: legendTitle, refElement: element };\n }\n\n private _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element => {\n const singleGroup: JSX.Element[] = [];\n const barLabelsForGroup: JSX.Element[] = [];\n\n const yBarScale = d3ScaleLinear()\n .domain([0, this._yMax])\n .range([0, containerHeight! - this.margins.bottom! - this.margins.top!]);\n\n const tempDataSet = Object.keys(this._datasetForBars[0]).splice(0, this._keys.length);\n tempDataSet.forEach((datasetKey: string, index: number) => {\n const refIndexNumber = singleSet.indexNum * tempDataSet.length + index;\n const pointData = singleSet[datasetKey];\n // To align the centers of the generated bandwidth and the calculated one when they differ,\n // use the following addend.\n const xPoint = xScale1(datasetKey) + (xScale1.bandwidth() - this._barWidth) / 2;\n const yPoint = Math.max(containerHeight! - this.margins.bottom! - yBarScale(pointData.data), 0);\n let startColor = pointData.color ? pointData.color : getNextColor(index, 0, this.props.theme?.isInverted);\n let endColor = startColor;\n\n if (this.props.enableGradient) {\n startColor = pointData.gradient?.[0] || getNextGradient(index, 0, this.props.theme?.isInverted)[0];\n endColor = pointData.gradient?.[1] || getNextGradient(index, 0, this.props.theme?.isInverted)[1];\n pointData.color = startColor;\n }\n\n const gradientId = getId('GVBC_Gradient') + `_${singleSet.indexNum}_${index}`;\n\n // Not rendering data with 0.\n pointData.data &&\n singleGroup.push(\n <React.Fragment key={`${singleSet.indexNum}-${index}`}>\n {this.props.enableGradient && (\n <defs>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"100%\" x2=\"0%\" y2=\"0%\">\n <stop offset=\"0\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n </defs>\n )}\n <rect\n className={this._classNames.opacityChangeOnHover}\n height={Math.max(yBarScale(pointData.data), 0)}\n width={this._barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={\n !this.props.hideTooltip && (this._legendHighlighted(pointData.legend) || this._noLegendHighlighted())\n }\n opacity={this._getOpacity(pointData.legend)}\n ref={(e: SVGRectElement | null) => {\n this._refCallback(e!, pointData.legend, refIndexNumber);\n }}\n fill={this.props.enableGradient ? `url(#${gradientId})` : startColor}\n rx={this.props.roundCorners ? 3 : 0}\n onMouseOver={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseMove={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseOut={this._onBarLeave}\n onFocus={this._onBarFocus.bind(this, pointData, singleSet, refIndexNumber)}\n onBlur={this._onBarLeave}\n onClick={this.props.href ? this._redirectToUrl.bind(this, this.props.href!) : pointData.onClick}\n aria-label={this._getAriaLabel(pointData, singleSet.xAxisPoint)}\n role=\"img\"\n />\n </React.Fragment>,\n );\n if (\n pointData.data &&\n !this.props.hideLabels &&\n this._barWidth >= 16 &&\n (this._legendHighlighted(pointData.legend) || this._noLegendHighlighted())\n ) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${index}`}\n x={xPoint + this._barWidth / 2}\n y={yPoint - 6}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {formatValueWithSIPrefix(pointData.data)}\n </text>,\n );\n }\n });\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\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 (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - this._groupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n private _createDataset = (points: IGroupedVerticalBarChartData[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n const dataset: IGVDataPoint[] = [];\n\n points.forEach((point: IGroupedVerticalBarChartData, index: number) => {\n const singleDatasetPoint: IGVDataPoint = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const singleDataSeries: IGVBarChartSeriesPoint[] = [];\n\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint, seriesIndex) => {\n if (this.props.enableGradient) {\n seriesPoint.color =\n seriesPoint.gradient?.[0] || getNextGradient(seriesIndex, 0, this.props.theme?.isInverted)[0];\n }\n singleDatasetPoint[seriesPoint.key] = seriesPoint.data;\n singleDatasetPointForBars[seriesPoint.key] = {\n ...seriesPoint,\n };\n singleDataSeries.push(seriesPoint);\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = singleDataSeries;\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n dataset.push(singleDatasetPoint);\n });\n this._dataset = dataset;\n return datasetForBars;\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n private _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range(\n this._isRtl\n ? [containerWidth! - this.margins.right! - this._domainMargin, this.margins.left! + this._domainMargin]\n : [this.margins.left! + this._domainMargin, containerWidth! - this.margins.right! - this._domainMargin],\n )\n .paddingInner(this._xAxisInnerPadding)\n .paddingOuter(this._xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(this._keys)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(this._isRtl ? [this._groupWidth, 0] : [0, this._groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\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 = (points: IGroupedVerticalBarChartData[], palette: IPalette): JSX.Element => {\n const data = points;\n const defaultPalette: string[] = [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n const actions: ILegend[] = [];\n\n data.forEach((singleChartData: IGroupedVerticalBarChartData) => {\n singleChartData.series.forEach((point: IGVBarChartSeriesPoint) => {\n let color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n if (this.props.enableGradient) {\n const pointIndex = Math.max(singleChartData.series?.findIndex(item => item.legend === point.legend) || 0, 0);\n color = point.gradient?.[0] || getNextGradient(pointIndex, 0, this.props.theme?.isInverted)[0];\n }\n const checkSimilarLegends = actions.filter((leg: ILegend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: ILegend = {\n title: point.legend,\n 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\n actions.push(legend);\n });\n });\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n {...this.props.legendProps}\n />\n );\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: IGVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n private _getDomainMargins = (containerWidth: number): IMargins => {\n this._domainMargin = MIN_DOMAIN_MARGIN;\n\n if (this._xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(this.props.xAxisOuterPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first group and after the last group.\n this._domainMargin = 0;\n } else if (this.props.barwidth !== 'auto') {\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 // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n const groupWidth = (this._keys.length + (this._keys.length - 1) * BAR_GAP_RATE) * this._barWidth;\n /** Rate at which the space between the groups changes wrt the group width */\n const groupGapRate = this._xAxisInnerPadding / (1 - this._xAxisInnerPadding);\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = (this._xAxisLabels.length + (this._xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n this._domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n }\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 private _isChartEmpty(): boolean {\n return !(\n this.props.data &&\n this.props.data.length > 0 &&\n this.props.data.filter((item: IGroupedVerticalBarChartData) => item.series.length).length > 0\n );\n }\n\n private _adjustProps(): void {\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = this._keys.length * bar_width + (this._keys.length - 1) * space_between_bars\n this._xAxisInnerPadding = getScalePadding(\n this.props.xAxisInnerPadding,\n undefined,\n 2 / (2 + this._keys.length + (this._keys.length - 1) * BAR_GAP_RATE),\n );\n this._xAxisOuterPadding = getScalePadding(this.props.xAxisOuterPadding);\n }\n\n private _getChartTitle = (): string => {\n const { chartTitle } = this.props;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${this._xAxisLabels.length} groups of ${this._keys.length} bars each. `\n );\n };\n}\n"]}
1
+ {"version":3,"file":"GroupedVerticalBarChart.base.js","sourceRoot":"../src/","sources":["components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { max as d3Max } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { scaleBand as d3ScaleBand, scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { classNamesFunction, getId, getRTL, memoizeFunction, warnDeprecations } from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet, IPalette } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfXAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatValueWithSIPrefix,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextGradient,\n getNextColor,\n} from '../../utilities/index';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ILegend,\n IGroupedVerticalBarChartData,\n IGroupedVerticalBarChartProps,\n IGroupedVerticalBarChartStyleProps,\n IGroupedVerticalBarChartStyles,\n IGVBarChartSeriesPoint,\n IMargins,\n IBasestate,\n IRefArrayData,\n Legends,\n} from '../../index';\n\nconst COMPONENT_NAME = 'GROUPED VERTICAL BAR CHART';\nconst getClassNames = classNamesFunction<IGroupedVerticalBarChartStyleProps, IGroupedVerticalBarChartStyles>();\ntype StringAxis = D3Axis<string>;\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\n// x1_inner_padding = space_between_bars / (space_between_bars + bar_width)\n// => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width\n/** Rate at which the space between the bars in a group changes wrt the bar width */\nconst BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface IGVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface IGVSingleDataPoint {\n [key: string]: IGVDataPoint;\n}\nexport interface IGroupedVerticalBarChartState extends IBasestate {\n dataPointCalloutProps?: IGVBarChartSeriesPoint;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n}\n\nexport class GroupedVerticalBarChartBase extends React.Component<\n IGroupedVerticalBarChartProps,\n IGroupedVerticalBarChartState\n> {\n public static defaultProps: Partial<IGroupedVerticalBarChartProps> = {\n maxBarWidth: 24,\n };\n\n private _createSet: (\n data: IGroupedVerticalBarChartData[],\n ) => // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { keys: string[]; xAxisLabels: string[]; datasetForBars: any };\n private _dataset: IGVDataPoint[];\n private _keys: string[];\n private _xAxisLabels: string[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _datasetForBars: any;\n private margins: IMargins;\n private _groupedVerticalBarGraph: JSX.Element[];\n private _classNames: IProcessedStyleSet<IGroupedVerticalBarChartStyles>;\n private _refArray: IRefArrayData[];\n private _yMax: number;\n private _calloutId: string;\n private _tooltipId: string;\n private _xAxisType: XAxisTypes;\n private _isRtl: boolean = getRTL();\n private _calloutAnchorPoint: IGVBarChartSeriesPoint | null;\n private _barWidth: number;\n private _domainMargin: number;\n private _emptyChartId: string;\n private _groupWidth: number;\n private _xAxisInnerPadding: number;\n private _xAxisOuterPadding: number;\n\n public constructor(props: IGroupedVerticalBarChartProps) {\n super(props);\n this._createSet = memoizeFunction((data: IGroupedVerticalBarChartData[]) => this._createDataSetOfGVBC(data));\n this.state = {\n color: '',\n dataForHoverCard: 0,\n isCalloutVisible: false,\n refSelected: null,\n selectedLegend: '',\n xCalloutValue: '',\n yCalloutValue: '',\n YValueHover: [],\n hoverXValue: '',\n calloutLegend: '',\n activeLegend: '',\n };\n warnDeprecations(COMPONENT_NAME, props, {\n showYAxisGridLines: 'Dont use this property. Lines are drawn by default',\n showXAxisPath: 'Dont use this property. Axis line removed default.',\n showYAxisPath: 'Dont use this property. No need to display Y axis path. Handling default',\n showXAxisGridLines: 'Dont use this property. Handling with default value.',\n legendColor: 'Dont use this property. colour will pick from given data.',\n });\n this._refArray = [];\n this._calloutId = getId('callout');\n this._tooltipId = getId('GVBCTooltipId_');\n this._emptyChartId = getId('_GVBC_empty');\n this._domainMargin = MIN_DOMAIN_MARGIN;\n }\n\n public render(): React.ReactNode {\n const points = this.props.data;\n const { keys, xAxisLabels, datasetForBars } = this._createSet(points);\n this._keys = keys;\n this._xAxisLabels = xAxisLabels;\n this._datasetForBars = datasetForBars;\n this._xAxisType = getTypeOfAxis(points[0].name, true) as XAxisTypes;\n const legends: JSX.Element = this._getLegendData(points, this.props.theme!.palette);\n this._adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yMax = d3Max(this._dataset, (point: any) => d3Max(this._keys, (key: string) => point[key]));\n this._yMax = Math.max(yMax, this.props.yMaxValue || 0);\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n href: this.props.href!,\n });\n const calloutProps = {\n target: this.state.refSelected,\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n gapSpace: 15,\n isBeakVisible: false,\n setInitialFocus: true,\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 YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n onDismiss: this._closeCallout,\n ...this.props.calloutProps,\n preventDismissOnLostFocus: true,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: this.props.tickValues!,\n tickFormat: this.props.tickFormat!,\n };\n\n return !this._isChartEmpty() ? (\n <CartesianChart\n {...this.props}\n chartTitle={this._getChartTitle()}\n points={this._datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n calloutProps={calloutProps}\n legendBars={legends}\n xAxisType={this._xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={this._xAxisLabels}\n tickParams={tickParams}\n getDomainNRangeValues={this._getDomainNRangeValues}\n getMinMaxOfYAxis={this._getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n tickPadding={this.props.tickPadding || 5}\n maxOfYVal={this._yMax}\n svgFocusZoneProps={{\n direction: FocusZoneDirection.horizontal,\n }}\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.StringAxis && {\n xAxisInnerPadding: this._xAxisInnerPadding,\n xAxisOuterPadding: this._xAxisOuterPadding,\n })}\n barwidth={this._barWidth}\n /* eslint-disable react/jsx-no-bind */\n children={() => {\n return <g>{this._groupedVerticalBarGraph}</g>;\n }}\n />\n ) : (\n <div\n id={this._emptyChartId}\n role={'alert'}\n style={{ opacity: '0' }}\n aria-label={'Graph has no data to display'}\n />\n );\n }\n\n private _getMinMaxOfYAxis = () => {\n return { startValue: 0, endValue: 0 };\n };\n\n private _getDomainNRangeValues = (\n points: IGroupedVerticalBarChartData[],\n margins: IMargins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) => {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n };\n\n private _getGraphData = (\n xScale: StringAxis | NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n ) => {\n const xScale0 = this._createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n this._barWidth = getBarWidth(\n this.props.barwidth,\n this.props.maxBarWidth,\n xScale0.bandwidth() / (this._keys.length + (this._keys.length - 1) * BAR_GAP_RATE),\n );\n this._groupWidth = (this._keys.length + (this._keys.length - 1) * BAR_GAP_RATE) * this._barWidth;\n\n const xScale1 = this._createX1Scale();\n const allGroupsBars: JSX.Element[] = [];\n this._datasetForBars.forEach((singleSet: IGVSingleDataPoint) => {\n allGroupsBars.push(this._buildGraph(singleSet, xScale0, xScale1, containerHeight, xElement!));\n });\n this._groupedVerticalBarGraph = allGroupsBars;\n };\n\n private _getMargins = (margins: IMargins) => (this.margins = margins);\n\n private _createDataSetOfGVBC = (points: IGroupedVerticalBarChartData[]) => {\n const keys: string[] = [];\n const xAxisLabels: string[] = points.map(singlePoint => singlePoint.name);\n points[0].series.forEach((singleKey: IGVBarChartSeriesPoint) => {\n keys.push(singleKey.key);\n });\n const datasetForBars = this._createDataset(points);\n return {\n keys,\n xAxisLabels,\n datasetForBars,\n };\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n : null;\n };\n\n private _getOpacity = (legendTitle: string): string => {\n const opacity = this._legendHighlighted(legendTitle) || this._noLegendHighlighted() ? '' : '0.1';\n return opacity;\n };\n\n private _onBarHover = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (this._calloutAnchorPoint !== pointData) {\n this._calloutAnchorPoint = pointData;\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 === pointData.legend,\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries,\n hoverXValue: pointData.xAxisCalloutData,\n });\n }\n };\n\n private _onBarLeave = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({ isCalloutVisible: false });\n };\n\n private _onBarFocus = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n refArrayIndexNumber: number,\n ): void => {\n this._refArray.forEach((obj: IRefArrayData, index: number) => {\n if (obj.index === pointData.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 === pointData.legend,\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries,\n hoverXValue: pointData.xAxisCalloutData,\n });\n }\n });\n };\n\n private _redirectToUrl = (href: string | undefined): void => {\n href ? (window.location.href = href) : '';\n };\n\n private _refCallback(element: SVGRectElement, legendTitle: string, refIndexNumber: number): void {\n this._refArray[refIndexNumber] = { index: legendTitle, refElement: element };\n }\n\n private _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element => {\n const singleGroup: JSX.Element[] = [];\n const barLabelsForGroup: JSX.Element[] = [];\n\n const yBarScale = d3ScaleLinear()\n .domain([0, this._yMax])\n .range([0, containerHeight! - this.margins.bottom! - this.margins.top!]);\n\n const tempDataSet = Object.keys(this._datasetForBars[0]).splice(0, this._keys.length);\n tempDataSet.forEach((datasetKey: string, index: number) => {\n const refIndexNumber = singleSet.indexNum * tempDataSet.length + index;\n const pointData = singleSet[datasetKey];\n // To align the centers of the generated bandwidth and the calculated one when they differ,\n // use the following addend.\n const xPoint = xScale1(datasetKey) + (xScale1.bandwidth() - this._barWidth) / 2;\n const yPoint = Math.max(containerHeight! - this.margins.bottom! - yBarScale(pointData.data), 0);\n let startColor = pointData.color ? pointData.color : getNextColor(index, 0, this.props.theme?.isInverted);\n let endColor = startColor;\n\n if (this.props.enableGradient) {\n startColor = pointData.gradient?.[0] || getNextGradient(index, 0, this.props.theme?.isInverted)[0];\n endColor = pointData.gradient?.[1] || getNextGradient(index, 0, this.props.theme?.isInverted)[1];\n pointData.color = startColor;\n }\n\n const gradientId = getId('GVBC_Gradient') + `_${singleSet.indexNum}_${index}`;\n\n // Not rendering data with 0.\n pointData.data &&\n singleGroup.push(\n <React.Fragment key={`${singleSet.indexNum}-${index}`}>\n {this.props.enableGradient && (\n <defs>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"100%\" x2=\"0%\" y2=\"0%\">\n <stop offset=\"0\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n </defs>\n )}\n <rect\n className={this._classNames.opacityChangeOnHover}\n height={Math.max(yBarScale(pointData.data), 0)}\n width={this._barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={\n !this.props.hideTooltip && (this._legendHighlighted(pointData.legend) || this._noLegendHighlighted())\n }\n opacity={this._getOpacity(pointData.legend)}\n ref={(e: SVGRectElement | null) => {\n this._refCallback(e!, pointData.legend, refIndexNumber);\n }}\n fill={this.props.enableGradient ? `url(#${gradientId})` : startColor}\n rx={this.props.roundCorners ? 3 : 0}\n onMouseOver={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseMove={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseOut={this._onBarLeave}\n onFocus={this._onBarFocus.bind(this, pointData, singleSet, refIndexNumber)}\n onBlur={this._onBarLeave}\n onClick={this.props.href ? this._redirectToUrl.bind(this, this.props.href!) : pointData.onClick}\n aria-label={this._getAriaLabel(pointData, singleSet.xAxisPoint)}\n role=\"img\"\n />\n </React.Fragment>,\n );\n if (\n pointData.data &&\n !this.props.hideLabels &&\n this._barWidth >= 16 &&\n (this._legendHighlighted(pointData.legend) || this._noLegendHighlighted())\n ) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${index}`}\n x={xPoint + this._barWidth / 2}\n y={yPoint - 6}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {formatValueWithSIPrefix(pointData.data)}\n </text>,\n );\n }\n });\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\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 (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - this._groupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n private _createDataset = (points: IGroupedVerticalBarChartData[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n const dataset: IGVDataPoint[] = [];\n\n points.forEach((point: IGroupedVerticalBarChartData, index: number) => {\n const singleDatasetPoint: IGVDataPoint = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const singleDataSeries: IGVBarChartSeriesPoint[] = [];\n\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint, seriesIndex) => {\n if (this.props.enableGradient) {\n seriesPoint.color =\n seriesPoint.gradient?.[0] || getNextGradient(seriesIndex, 0, this.props.theme?.isInverted)[0];\n }\n singleDatasetPoint[seriesPoint.key] = seriesPoint.data;\n singleDatasetPointForBars[seriesPoint.key] = {\n ...seriesPoint,\n };\n singleDataSeries.push(seriesPoint);\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = singleDataSeries;\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n dataset.push(singleDatasetPoint);\n });\n this._dataset = dataset;\n return datasetForBars;\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n private _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range(\n this._isRtl\n ? [containerWidth! - this.margins.right! - this._domainMargin, this.margins.left! + this._domainMargin]\n : [this.margins.left! + this._domainMargin, containerWidth! - this.margins.right! - this._domainMargin],\n )\n .paddingInner(this._xAxisInnerPadding)\n .paddingOuter(this._xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(this._keys)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(this._isRtl ? [this._groupWidth, 0] : [0, this._groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\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 = (points: IGroupedVerticalBarChartData[], palette: IPalette): JSX.Element => {\n const data = points;\n const defaultPalette: string[] = [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n const actions: ILegend[] = [];\n\n data.forEach((singleChartData: IGroupedVerticalBarChartData) => {\n singleChartData.series.forEach((point: IGVBarChartSeriesPoint) => {\n let color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n if (this.props.enableGradient) {\n const pointIndex = Math.max(singleChartData.series?.findIndex(item => item.legend === point.legend) || 0, 0);\n color = point.gradient?.[0] || getNextGradient(pointIndex, 0, this.props.theme?.isInverted)[0];\n }\n const checkSimilarLegends = actions.filter((leg: ILegend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: ILegend = {\n title: point.legend,\n 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\n actions.push(legend);\n });\n });\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n {...this.props.legendProps}\n />\n );\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: IGVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n private _getDomainMargins = (containerWidth: number): IMargins => {\n this._domainMargin = MIN_DOMAIN_MARGIN;\n\n if (this._xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(this.props.xAxisOuterPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first group and after the last group.\n this._domainMargin = 0;\n } else if (this.props.barwidth !== 'auto') {\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 // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n const groupWidth = (this._keys.length + (this._keys.length - 1) * BAR_GAP_RATE) * this._barWidth;\n /** Rate at which the space between the groups changes wrt the group width */\n const groupGapRate = this._xAxisInnerPadding / (1 - this._xAxisInnerPadding);\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = (this._xAxisLabels.length + (this._xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n this._domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n }\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 private _isChartEmpty(): boolean {\n return !(\n this.props.data &&\n this.props.data.length > 0 &&\n this.props.data.filter((item: IGroupedVerticalBarChartData) => item.series.length).length > 0\n );\n }\n\n private _adjustProps(): void {\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = this._keys.length * bar_width + (this._keys.length - 1) * space_between_bars\n this._xAxisInnerPadding = getScalePadding(\n this.props.xAxisInnerPadding,\n undefined,\n 2 / (2 + this._keys.length + (this._keys.length - 1) * BAR_GAP_RATE),\n );\n this._xAxisOuterPadding = getScalePadding(this.props.xAxisOuterPadding);\n }\n\n private _getChartTitle = (): string => {\n const { chartTitle } = this.props;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${this._xAxisLabels.length} groups of ${this._keys.length} bars each. `\n );\n };\n}\n"]}
@@ -9,6 +9,6 @@ define(["require", "exports"], function (require, exports) {
9
9
  (function (HorizontalBarChartVariant) {
10
10
  HorizontalBarChartVariant["PartToWhole"] = "part-to-whole";
11
11
  HorizontalBarChartVariant["AbsoluteScale"] = "absolute-scale";
12
- })(HorizontalBarChartVariant = exports.HorizontalBarChartVariant || (exports.HorizontalBarChartVariant = {}));
12
+ })(HorizontalBarChartVariant || (exports.HorizontalBarChartVariant = HorizontalBarChartVariant = {}));
13
13
  });
14
14
  //# sourceMappingURL=HorizontalBarChart.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalBarChart.types.js","sourceRoot":"../src/","sources":["components/HorizontalBarChart/HorizontalBarChart.types.ts"],"names":[],"mappings":";;;;IAsOA;;OAEG;IACH,IAAY,yBAGX;IAHD,WAAY,yBAAyB;QACnC,0DAA6B,CAAA;QAC7B,6DAAgC,CAAA;IAClC,CAAC,EAHW,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QAGpC","sourcesContent":["import { IChartProps, IChartDataPoint } from './index';\nimport { IStyle, ITheme } from '@fluentui/react/lib/Styling';\nimport { ICalloutProps } from '@fluentui/react/lib/Callout';\nimport { IRenderFunction, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\n\n/**\n * Horizontal Bar Chart properties\n * {@docCategory HorizontalBarChart}\n */\nexport interface IHorizontalBarChartProps {\n /**\n * An array of chart data points for the Horizontal bar chart\n */\n data?: IChartProps[];\n\n /**\n * Width of bar chart\n */\n width?: number;\n\n /**\n * Height of bar chart\n * @default 15\n */\n barHeight?: number;\n\n /**\n * Additional CSS class(es) to apply to the StackedBarChart.\n */\n className?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * This property tells whether to show ratio on top of stacked bar chart or not.\n */\n hideRatio?: boolean[];\n\n /**\n * Do not show tooltips in chart\n *\n * @default false\n */\n hideTooltip?: boolean;\n\n /**\n * This property tells how to show data text on top right of bar chart.\n * If barChartCustomData props added, then this props will be overrided.\n * @default 'default'\n */\n chartDataMode?: ChartDataMode;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IHorizontalBarChartStyleProps, IHorizontalBarChartStyles>;\n\n /**\n * Define a custom callout renderer for a horizontal bar\n */\n onRenderCalloutPerHorizontalBar?: IRenderFunction<IChartDataPoint>;\n\n /**\n * props for the callout in the chart\n */\n calloutProps?: Partial<ICalloutProps>;\n\n /**\n * Custom text to the chart (right side of the chart)\n * IChartProps will be available as props to the method prop.\n * If this method not given, default values (IHorizontalDataPoint \\{x,y\\})\n * will be used to display the data/text based on given chartModeData prop.\n */\n barChartCustomData?: IRenderFunction<IChartProps>;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * Prop to define the variant of HorizontalBarChart to render\n * @default HorizontalBarChartVariant.PartToWhole\n */\n variant?: HorizontalBarChartVariant;\n\n /**\n * Prop to hide the bar labels\n * @default false\n */\n hideLabels?: boolean;\n\n /**\n * @default false\n * The prop used to enable gradient fill color for the chart.\n */\n enableGradient?: boolean;\n\n /**\n * @default false\n * The prop used to enable rounded corners for the chart.\n */\n roundCorners?: boolean;\n}\n\n/**\n * Horizontal Bar Chart style properties\n * {@docCategory HorizontalBarChart}\n */\nexport interface IHorizontalBarChartStyleProps {\n /**\n * Theme (provided through customization.)\n */\n theme: ITheme;\n\n /**\n * Additional CSS class(es) to apply to the StackedBarChart.\n */\n className?: string;\n\n /**\n * Width of the chart.\n */\n width: number | undefined;\n\n /**\n * line color for callout\n */\n color?: string;\n\n /**\n * Height of bar chart\n * @default 15\n */\n barHeight?: number;\n\n /**\n * prop to check if benchmark data is provided\n */\n showTriangle?: boolean;\n\n /**\n * Prop to define the variant of HorizontalBarChart to render\n */\n variant?: HorizontalBarChartVariant;\n\n /**\n * Prop to hide the bar labels\n */\n hideLabels?: boolean;\n}\n\n/**\n * Horizontal Bar Chart styles\n * {@docCategory HorizontalBarChart}\n */\nexport interface IHorizontalBarChartStyles {\n /**\n * Styling for the root container\n */\n root: IStyle;\n\n /**\n * Styling for each item in the container\n */\n items: IStyle;\n\n /**\n * Style for the chart.\n */\n chart: IStyle;\n\n /**\n * Style for the chart Title.\n */\n chartTitle: IStyle;\n\n /**\n * Style for the bars.\n */\n barWrapper: IStyle;\n\n /**\n * Style for left side text of the chart title\n */\n chartTitleLeft: IStyle;\n\n /**\n * Style for right side text of the chart title\n */\n chartTitleRight: IStyle;\n\n /**\n * Style for the chart data text denominator.\n */\n chartDataTextDenominator: IStyle;\n\n /**\n * Style for the benchmark container\n */\n benchmarkContainer: IStyle;\n\n /**\n * Style for the benchmark triangle\n */\n triangle: IStyle;\n\n /**\n * Style for the bar labels\n */\n barLabel: IStyle;\n\n /**\n * Style for the div containing the chart\n */\n chartWrapper: IStyle;\n}\n\n/**\n * Chart data mode for chart data text\n * default: show the datapoint.x value\n * fraction: show the fraction of datapoint.x/datapoint.y\n * percentage: show the percentage of (datapoint.x/datapoint.y)%\n * {@docCategory HorizontalBarChart}\n */\nexport type ChartDataMode = 'default' | 'fraction' | 'percentage';\n\n/**\n * {@docCategory HorizontalBarChart}\n */\nexport enum HorizontalBarChartVariant {\n PartToWhole = 'part-to-whole',\n AbsoluteScale = 'absolute-scale',\n}\n"]}
1
+ {"version":3,"file":"HorizontalBarChart.types.js","sourceRoot":"../src/","sources":["components/HorizontalBarChart/HorizontalBarChart.types.ts"],"names":[],"mappings":";;;;IAsOA;;OAEG;IACH,IAAY,yBAGX;IAHD,WAAY,yBAAyB;QACnC,0DAA6B,CAAA;QAC7B,6DAAgC,CAAA;IAClC,CAAC,EAHW,yBAAyB,yCAAzB,yBAAyB,QAGpC","sourcesContent":["import { IChartProps, IChartDataPoint } from './index';\nimport { IStyle, ITheme } from '@fluentui/react/lib/Styling';\nimport { ICalloutProps } from '@fluentui/react/lib/Callout';\nimport { IRenderFunction, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\n\n/**\n * Horizontal Bar Chart properties\n * {@docCategory HorizontalBarChart}\n */\nexport interface IHorizontalBarChartProps {\n /**\n * An array of chart data points for the Horizontal bar chart\n */\n data?: IChartProps[];\n\n /**\n * Width of bar chart\n */\n width?: number;\n\n /**\n * Height of bar chart\n * @default 15\n */\n barHeight?: number;\n\n /**\n * Additional CSS class(es) to apply to the StackedBarChart.\n */\n className?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * This property tells whether to show ratio on top of stacked bar chart or not.\n */\n hideRatio?: boolean[];\n\n /**\n * Do not show tooltips in chart\n *\n * @default false\n */\n hideTooltip?: boolean;\n\n /**\n * This property tells how to show data text on top right of bar chart.\n * If barChartCustomData props added, then this props will be overrided.\n * @default 'default'\n */\n chartDataMode?: ChartDataMode;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IHorizontalBarChartStyleProps, IHorizontalBarChartStyles>;\n\n /**\n * Define a custom callout renderer for a horizontal bar\n */\n onRenderCalloutPerHorizontalBar?: IRenderFunction<IChartDataPoint>;\n\n /**\n * props for the callout in the chart\n */\n calloutProps?: Partial<ICalloutProps>;\n\n /**\n * Custom text to the chart (right side of the chart)\n * IChartProps will be available as props to the method prop.\n * If this method not given, default values (IHorizontalDataPoint \\{x,y\\})\n * will be used to display the data/text based on given chartModeData prop.\n */\n barChartCustomData?: IRenderFunction<IChartProps>;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * Prop to define the variant of HorizontalBarChart to render\n * @default HorizontalBarChartVariant.PartToWhole\n */\n variant?: HorizontalBarChartVariant;\n\n /**\n * Prop to hide the bar labels\n * @default false\n */\n hideLabels?: boolean;\n\n /**\n * @default false\n * The prop used to enable gradient fill color for the chart.\n */\n enableGradient?: boolean;\n\n /**\n * @default false\n * The prop used to enable rounded corners for the chart.\n */\n roundCorners?: boolean;\n}\n\n/**\n * Horizontal Bar Chart style properties\n * {@docCategory HorizontalBarChart}\n */\nexport interface IHorizontalBarChartStyleProps {\n /**\n * Theme (provided through customization.)\n */\n theme: ITheme;\n\n /**\n * Additional CSS class(es) to apply to the StackedBarChart.\n */\n className?: string;\n\n /**\n * Width of the chart.\n */\n width: number | undefined;\n\n /**\n * line color for callout\n */\n color?: string;\n\n /**\n * Height of bar chart\n * @default 15\n */\n barHeight?: number;\n\n /**\n * prop to check if benchmark data is provided\n */\n showTriangle?: boolean;\n\n /**\n * Prop to define the variant of HorizontalBarChart to render\n */\n variant?: HorizontalBarChartVariant;\n\n /**\n * Prop to hide the bar labels\n */\n hideLabels?: boolean;\n}\n\n/**\n * Horizontal Bar Chart styles\n * {@docCategory HorizontalBarChart}\n */\nexport interface IHorizontalBarChartStyles {\n /**\n * Styling for the root container\n */\n root: IStyle;\n\n /**\n * Styling for each item in the container\n */\n items: IStyle;\n\n /**\n * Style for the chart.\n */\n chart: IStyle;\n\n /**\n * Style for the chart Title.\n */\n chartTitle: IStyle;\n\n /**\n * Style for the bars.\n */\n barWrapper: IStyle;\n\n /**\n * Style for left side text of the chart title\n */\n chartTitleLeft: IStyle;\n\n /**\n * Style for right side text of the chart title\n */\n chartTitleRight: IStyle;\n\n /**\n * Style for the chart data text denominator.\n */\n chartDataTextDenominator: IStyle;\n\n /**\n * Style for the benchmark container\n */\n benchmarkContainer: IStyle;\n\n /**\n * Style for the benchmark triangle\n */\n triangle: IStyle;\n\n /**\n * Style for the bar labels\n */\n barLabel: IStyle;\n\n /**\n * Style for the div containing the chart\n */\n chartWrapper: IStyle;\n}\n\n/**\n * Chart data mode for chart data text\n * default: show the datapoint.x value\n * fraction: show the fraction of datapoint.x/datapoint.y\n * percentage: show the percentage of (datapoint.x/datapoint.y)%\n * {@docCategory HorizontalBarChart}\n */\nexport type ChartDataMode = 'default' | 'fraction' | 'percentage';\n\n/**\n * {@docCategory HorizontalBarChart}\n */\nexport enum HorizontalBarChartVariant {\n PartToWhole = 'part-to-whole',\n AbsoluteScale = 'absolute-scale',\n}\n"]}
@@ -7,9 +7,8 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/HoverCard",
7
7
  tslib_1.__extends(LegendsBase, _super);
8
8
  function LegendsBase(props) {
9
9
  var _a;
10
- var _this = this;
11
10
  var _b;
12
- _this = _super.call(this, props) || this;
11
+ var _this = _super.call(this, props) || this;
13
12
  /** Boolean variable to check if one or more legends are selected */
14
13
  _this._isLegendSelected = false;
15
14
  _this._onRenderData = function (data) {
@@ -1 +1 @@
1
- {"version":3,"file":"Legends.base.js","sourceRoot":"../src/","sources":["components/Legends/Legends.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport { HoverCard, HoverCardType, IExpandingCardProps } from '@fluentui/react/lib/HoverCard';\nimport { classNamesFunction, find, getNativeProps, buttonProperties } from '@fluentui/react/lib/Utilities';\nimport { ResizeGroup } from '@fluentui/react/lib/ResizeGroup';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport { OverflowSet, IOverflowSetItemProps } from '@fluentui/react/lib/OverflowSet';\nimport { FocusZone, FocusZoneDirection, FocusZoneTabbableElements } from '@fluentui/react-focus';\nimport {\n ILegend,\n ILegendsProps,\n LegendShape,\n ILegendsStyles,\n ILegendStyleProps,\n ILegendOverflowData,\n} from './Legends.types';\nimport { Shape } from './shape';\n\nconst getClassNames = classNamesFunction<ILegendStyleProps, ILegendsStyles>();\n\n// This is an internal interface used for rendering the legends with unique key\ninterface ILegendItem extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n name?: string;\n title: string;\n action: VoidFunction;\n hoverAction: VoidFunction;\n onMouseOutAction: VoidFunction;\n color: string;\n shape?: LegendShape;\n key: number;\n opacity?: number;\n stripePattern?: boolean;\n isLineLegendInBarChart?: boolean;\n}\n\nexport interface ILegendState {\n activeLegend: string;\n isHoverCardVisible: boolean;\n /** Set of legends selected, both for multiple selection and single selection */\n selectedLegends: { [key: string]: boolean };\n}\nexport class LegendsBase extends React.Component<ILegendsProps, ILegendState> {\n private _hoverCardRef: HTMLDivElement;\n private _classNames: IProcessedStyleSet<ILegendsStyles>;\n /** Boolean variable to check if one or more legends are selected */\n private _isLegendSelected = false;\n\n public constructor(props: ILegendsProps) {\n super(props);\n let defaultSelectedLegends = {};\n if (props.canSelectMultipleLegends) {\n defaultSelectedLegends =\n props.defaultSelectedLegends?.reduce((combinedDict, key) => ({ [key]: true, ...combinedDict }), {}) || {};\n } else if (props.defaultSelectedLegend) {\n defaultSelectedLegends = { [props.defaultSelectedLegend]: true };\n }\n\n this.state = {\n activeLegend: '',\n isHoverCardVisible: false,\n selectedLegends: defaultSelectedLegends,\n };\n }\n\n public render(): JSX.Element {\n const { theme, className, styles } = this.props;\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n });\n this._isLegendSelected = Object.keys(this.state.selectedLegends).length > 0;\n const dataToRender = this._generateData();\n return (\n <div className={this._classNames.root}>\n {this.props.enabledWrapLines ? (\n this._onRenderData(dataToRender)\n ) : (\n <ResizeGroup\n data={dataToRender}\n onReduceData={this._onReduceData}\n onRenderData={this._onRenderData}\n onGrowData={this._onGrowData}\n />\n )}\n </div>\n );\n }\n\n private _generateData(): ILegendOverflowData {\n const { allowFocusOnLegends = true, shape } = this.props;\n const dataItems: ILegendItem[] = this.props.legends.map((legend: ILegend, index: number) => {\n return {\n ...(allowFocusOnLegends && {\n nativeButtonProps: getNativeProps<React.HTMLAttributes<HTMLButtonElement>>(legend, buttonProperties, [\n 'title',\n ]),\n 'aria-setsize': this.props.legends.length,\n 'aria-posinset': index + 1,\n }),\n title: legend.title,\n action: legend.action!,\n hoverAction: legend.hoverAction!,\n onMouseOutAction: legend.onMouseOutAction!,\n color: legend.color,\n shape: shape ? shape : legend.shape,\n stripePattern: legend.stripePattern,\n isLineLegendInBarChart: legend.isLineLegendInBarChart,\n opacity: legend.opacity,\n key: index,\n };\n });\n const result: ILegendOverflowData = {\n primary: dataItems,\n overflow: [],\n };\n return result;\n }\n\n private _onRenderData = (data: IOverflowSetItemProps | ILegendOverflowData): JSX.Element => {\n const { overflowProps, allowFocusOnLegends = true, canSelectMultipleLegends = false } = this.props;\n const rootStyles = {\n root: {\n justifyContent: this.props.centerLegends ? 'center' : 'unset',\n flexWrap: 'wrap',\n },\n };\n return (\n <FocusZone\n {...(allowFocusOnLegends && {\n role: 'listbox',\n 'aria-label': 'Legends',\n 'aria-multiselectable': canSelectMultipleLegends,\n })}\n >\n <OverflowSet\n items={data.primary}\n overflowItems={data.overflow}\n onRenderItem={this._renderButton}\n onRenderOverflowButton={this._renderOverflowItems}\n {...overflowProps}\n styles={{ ...rootStyles, ...overflowProps?.styles }}\n />\n </FocusZone>\n );\n };\n\n private _onReduceData = (currentdata: IOverflowSetItemProps): {} | void => {\n if (currentdata.primary.length === 0) {\n return;\n }\n const overflow = [...currentdata.primary.slice(-1), ...currentdata.overflow];\n const primary = currentdata.primary.slice(0, -1);\n return { primary, overflow };\n };\n\n private _onGrowData = (currentdata: IOverflowSetItemProps): {} | void => {\n if (currentdata.overflow.length === 0) {\n return;\n }\n const overflow = currentdata.overflow.slice(1);\n const primary = [...currentdata.primary, ...currentdata.overflow.slice(0, 1)];\n return { primary, overflow };\n };\n\n /**\n * This function will get called when there is an ability to\n * select multiple legends\n * @param legend ILegend\n */\n private _canSelectMultipleLegends = (legend: ILegend): { [key: string]: boolean } => {\n let selectedLegends = { ...this.state.selectedLegends };\n if (selectedLegends[legend.title]) {\n // Delete entry for the deselected legend to make\n // the number of keys equal to the number of selected legends\n delete selectedLegends[legend.title];\n } else {\n selectedLegends[legend.title] = true;\n // Clear set if all legends are selected\n if (Object.keys(selectedLegends).length === this.props.legends.length) {\n selectedLegends = {};\n }\n }\n this.setState({ selectedLegends });\n return selectedLegends;\n };\n\n /**\n * This function will get called when there is\n * ability to select only single legend\n * @param legend ILegend\n */\n\n private _canSelectOnlySingleLegend = (legend: ILegend): boolean => {\n if (this.state.selectedLegends[legend.title]) {\n this.setState({ selectedLegends: {} });\n return false;\n } else {\n this.setState({ selectedLegends: { [legend.title]: true } });\n return true;\n }\n };\n\n private _onClick = (legend: ILegend, event: React.MouseEvent<HTMLButtonElement>): void => {\n const { canSelectMultipleLegends = false } = this.props;\n let selectedLegends: string[] = [];\n if (canSelectMultipleLegends) {\n const nextSelectedLegends = this._canSelectMultipleLegends(legend);\n selectedLegends = Object.keys(nextSelectedLegends);\n } else {\n const isSelected = this._canSelectOnlySingleLegend(legend);\n selectedLegends = isSelected ? [legend.title] : [];\n }\n this.props.onChange?.(selectedLegends, event, legend);\n legend.action?.();\n };\n\n private _onRenderCompactCard = (expandingCard: IExpandingCardProps): JSX.Element => {\n const { allowFocusOnLegends = true, className, styles, theme, canSelectMultipleLegends = false } = this.props;\n const overflowHoverCardLegends: JSX.Element[] = [];\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n });\n expandingCard.renderData.forEach((legend: IOverflowSetItemProps, index: number) => {\n const hoverCardElement = this._renderButton(legend, index, true);\n overflowHoverCardLegends.push(hoverCardElement);\n });\n const hoverCardData = (\n <FocusZone\n {...(allowFocusOnLegends && {\n role: 'listbox',\n 'aria-label': 'Legends',\n 'aria-multiselectable': canSelectMultipleLegends,\n })}\n direction={FocusZoneDirection.vertical}\n handleTabKey={FocusZoneTabbableElements.all}\n isCircularNavigation={true}\n {...this.props.focusZonePropsInHoverCard}\n className={classNames.hoverCardRoot}\n >\n {overflowHoverCardLegends}\n </FocusZone>\n );\n return hoverCardData;\n };\n\n private _renderOverflowItems = (legends: ILegend[]) => {\n const { allowFocusOnLegends = true } = this.props;\n const items: IContextualMenuItem[] = [];\n legends.forEach((legend: ILegend, i: number) => {\n items.push({ key: i.toString(), name: legend.title, onClick: legend.action });\n });\n const renderOverflowData: IExpandingCardProps = { renderData: legends };\n const { theme, className, styles, overflowText } = this.props;\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n });\n const plainCardProps = {\n onRenderPlainCard: this._onRenderCompactCard,\n renderData: renderOverflowData,\n };\n\n const overflowString = overflowText ? overflowText : 'more';\n // execute similar to \"_onClick\" and \"_onLeave\" logic at HoverCard onCardHide event\n const onHoverCardHideHandler = () => {\n this.setState({ isHoverCardVisible: false });\n // Unhighlight the focused legend in the hover card\n const activeOverflowItem = find(legends, (legend: ILegend) => legend.title === this.state.activeLegend);\n if (activeOverflowItem) {\n this.setState({ activeLegend: '' });\n if (activeOverflowItem.onMouseOutAction) {\n activeOverflowItem.onMouseOutAction();\n }\n }\n };\n return (\n <HoverCard\n type={HoverCardType.plain}\n plainCardProps={plainCardProps}\n instantOpenOnClick={true}\n // eslint-disable-next-line react/jsx-no-bind\n onCardHide={onHoverCardHideHandler}\n setInitialFocus={true}\n trapFocus={true}\n onCardVisible={this._hoverCardVisible}\n styles={classNames.subComponentStyles.hoverCardStyles}\n cardDismissDelay={300}\n target={this._hoverCardRef}\n >\n {/* \"button\" role is not allowed as a child of parent role \"listbox\" */}\n <div role=\"option\">\n <div\n className={classNames.overflowIndicationTextStyle}\n ref={(rootElem: HTMLDivElement) => (this._hoverCardRef = rootElem)}\n {...(allowFocusOnLegends && {\n role: 'button',\n 'aria-expanded': this.state.isHoverCardVisible,\n 'aria-label': `${items.length} ${overflowString}`,\n })}\n data-is-focusable={allowFocusOnLegends}\n >\n {items.length} {overflowString}\n </div>\n </div>\n </HoverCard>\n );\n };\n\n private _hoverCardVisible = () => {\n this.setState({ isHoverCardVisible: true });\n };\n\n private _onHoverOverLegend = (legend: ILegend) => {\n if (legend.hoverAction) {\n this.setState({ activeLegend: legend.title });\n legend.hoverAction();\n }\n };\n\n private _onLeave = (legend: ILegend) => {\n if (legend.onMouseOutAction) {\n this.setState({ activeLegend: '' });\n legend.onMouseOutAction();\n }\n };\n\n private _renderButton = (data: IOverflowSetItemProps, index?: number, overflow?: boolean) => {\n const { allowFocusOnLegends = true } = this.props;\n const legend: ILegend = {\n title: data.title,\n color: data.color,\n shape: data.shape,\n action: data.action,\n hoverAction: data.hoverAction,\n onMouseOutAction: data.onMouseOutAction,\n stripePattern: data.stripePattern,\n isLineLegendInBarChart: data.isLineLegendInBarChart,\n opacity: data.opacity,\n };\n const color = this._getColor(legend.title, legend.color);\n const { theme, className, styles } = this.props;\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n colorOnSelectedState: color,\n borderColor: legend.color,\n overflow,\n stripePattern: legend.stripePattern,\n isLineLegendInBarChart: legend.isLineLegendInBarChart,\n opacity: legend.opacity,\n });\n const onClickHandler = (event: React.MouseEvent<HTMLButtonElement>) => {\n this._onClick(legend, event);\n };\n const onHoverHandler = () => {\n this._onHoverOverLegend(legend);\n };\n const onMouseOut = () => {\n this._onLeave(legend);\n };\n const shape = this._getShape(classNames, legend, color);\n return (\n <button\n {...(allowFocusOnLegends && {\n 'aria-selected': !!this.state.selectedLegends[legend.title],\n role: 'option',\n 'aria-label': `${legend.title}`,\n 'aria-setsize': data['aria-setsize'],\n 'aria-posinset': data['aria-posinset'],\n })}\n {...(data.nativeButtonProps && { ...data.nativeButtonProps })}\n key={index}\n className={classNames.legend}\n onClick={onClickHandler}\n onMouseOver={onHoverHandler}\n onMouseOut={onMouseOut}\n onFocus={onHoverHandler}\n onBlur={onMouseOut}\n data-is-focusable={allowFocusOnLegends}\n /* eslint-enable react/jsx-no-bind */\n >\n {shape}\n <div className={classNames.text}>{legend.title}</div>\n </button>\n );\n };\n\n private _getShape(\n classNames: IProcessedStyleSet<ILegendsStyles>,\n legend: ILegend,\n color: string,\n ): React.ReactNode | string {\n const svgParentProps: React.SVGAttributes<SVGElement> = {\n className: classNames.shape,\n };\n const svgChildProps: React.SVGAttributes<SVGElement> = {\n fill: color,\n strokeWidth: 2,\n stroke: legend.color,\n };\n return (\n <Shape\n svgProps={svgParentProps}\n pathProps={svgChildProps}\n shape={legend.shape as LegendShape}\n classNameForNonSvg={classNames.rect}\n />\n );\n }\n\n private _getColor(title: string, color: string): string {\n const { theme } = this.props;\n let legendColor = color;\n // if one or more legends are selected\n if (this._isLegendSelected) {\n // if the given legend (title) is one of the selected legends\n if (this.state.selectedLegends[title]) {\n legendColor = color;\n }\n // if the given legend is unselected\n else {\n legendColor = theme!.semanticColors.buttonBackground;\n }\n }\n // if no legend is selected\n else {\n // if the given legend is hovered\n // or none of the legends is hovered\n if (this.state.activeLegend === title || this.state.activeLegend === '') {\n legendColor = color;\n }\n // if there is a hovered legend but the given legend is not the one\n else {\n legendColor = theme!.semanticColors.buttonBackground;\n }\n }\n return legendColor;\n }\n}\n"]}
1
+ {"version":3,"file":"Legends.base.js","sourceRoot":"../src/","sources":["components/Legends/Legends.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport { IContextualMenuItem } from '@fluentui/react/lib/ContextualMenu';\nimport { HoverCard, HoverCardType, IExpandingCardProps } from '@fluentui/react/lib/HoverCard';\nimport { classNamesFunction, find, getNativeProps, buttonProperties } from '@fluentui/react/lib/Utilities';\nimport { ResizeGroup } from '@fluentui/react/lib/ResizeGroup';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport { OverflowSet, IOverflowSetItemProps } from '@fluentui/react/lib/OverflowSet';\nimport { FocusZone, FocusZoneDirection, FocusZoneTabbableElements } from '@fluentui/react-focus';\nimport {\n ILegend,\n ILegendsProps,\n LegendShape,\n ILegendsStyles,\n ILegendStyleProps,\n ILegendOverflowData,\n} from './Legends.types';\nimport { Shape } from './shape';\n\nconst getClassNames = classNamesFunction<ILegendStyleProps, ILegendsStyles>();\n\n// This is an internal interface used for rendering the legends with unique key\ninterface ILegendItem extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n name?: string;\n title: string;\n action: VoidFunction;\n hoverAction: VoidFunction;\n onMouseOutAction: VoidFunction;\n color: string;\n shape?: LegendShape;\n key: number;\n opacity?: number;\n stripePattern?: boolean;\n isLineLegendInBarChart?: boolean;\n}\n\nexport interface ILegendState {\n activeLegend: string;\n isHoverCardVisible: boolean;\n /** Set of legends selected, both for multiple selection and single selection */\n selectedLegends: { [key: string]: boolean };\n}\nexport class LegendsBase extends React.Component<ILegendsProps, ILegendState> {\n private _hoverCardRef: HTMLDivElement;\n private _classNames: IProcessedStyleSet<ILegendsStyles>;\n /** Boolean variable to check if one or more legends are selected */\n private _isLegendSelected = false;\n\n public constructor(props: ILegendsProps) {\n super(props);\n let defaultSelectedLegends = {};\n if (props.canSelectMultipleLegends) {\n defaultSelectedLegends =\n props.defaultSelectedLegends?.reduce((combinedDict, key) => ({ [key]: true, ...combinedDict }), {}) || {};\n } else if (props.defaultSelectedLegend) {\n defaultSelectedLegends = { [props.defaultSelectedLegend]: true };\n }\n\n this.state = {\n activeLegend: '',\n isHoverCardVisible: false,\n selectedLegends: defaultSelectedLegends,\n };\n }\n\n public render(): JSX.Element {\n const { theme, className, styles } = this.props;\n this._classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n });\n this._isLegendSelected = Object.keys(this.state.selectedLegends).length > 0;\n const dataToRender = this._generateData();\n return (\n <div className={this._classNames.root}>\n {this.props.enabledWrapLines ? (\n this._onRenderData(dataToRender)\n ) : (\n <ResizeGroup\n data={dataToRender}\n onReduceData={this._onReduceData}\n onRenderData={this._onRenderData}\n onGrowData={this._onGrowData}\n />\n )}\n </div>\n );\n }\n\n private _generateData(): ILegendOverflowData {\n const { allowFocusOnLegends = true, shape } = this.props;\n const dataItems: ILegendItem[] = this.props.legends.map((legend: ILegend, index: number) => {\n return {\n ...(allowFocusOnLegends && {\n nativeButtonProps: getNativeProps<React.HTMLAttributes<HTMLButtonElement>>(legend, buttonProperties, [\n 'title',\n ]),\n 'aria-setsize': this.props.legends.length,\n 'aria-posinset': index + 1,\n }),\n title: legend.title,\n action: legend.action!,\n hoverAction: legend.hoverAction!,\n onMouseOutAction: legend.onMouseOutAction!,\n color: legend.color,\n shape: shape ? shape : legend.shape,\n stripePattern: legend.stripePattern,\n isLineLegendInBarChart: legend.isLineLegendInBarChart,\n opacity: legend.opacity,\n key: index,\n };\n });\n const result: ILegendOverflowData = {\n primary: dataItems,\n overflow: [],\n };\n return result;\n }\n\n private _onRenderData = (data: IOverflowSetItemProps | ILegendOverflowData): JSX.Element => {\n const { overflowProps, allowFocusOnLegends = true, canSelectMultipleLegends = false } = this.props;\n const rootStyles = {\n root: {\n justifyContent: this.props.centerLegends ? 'center' : 'unset',\n flexWrap: 'wrap',\n },\n };\n return (\n <FocusZone\n {...(allowFocusOnLegends && {\n role: 'listbox',\n 'aria-label': 'Legends',\n 'aria-multiselectable': canSelectMultipleLegends,\n })}\n >\n <OverflowSet\n items={data.primary}\n overflowItems={data.overflow}\n onRenderItem={this._renderButton}\n onRenderOverflowButton={this._renderOverflowItems}\n {...overflowProps}\n styles={{ ...rootStyles, ...overflowProps?.styles }}\n />\n </FocusZone>\n );\n };\n\n private _onReduceData = (currentdata: IOverflowSetItemProps): {} | void => {\n if (currentdata.primary.length === 0) {\n return;\n }\n const overflow = [...currentdata.primary.slice(-1), ...currentdata.overflow];\n const primary = currentdata.primary.slice(0, -1);\n return { primary, overflow };\n };\n\n private _onGrowData = (currentdata: IOverflowSetItemProps): {} | void => {\n if (currentdata.overflow.length === 0) {\n return;\n }\n const overflow = currentdata.overflow.slice(1);\n const primary = [...currentdata.primary, ...currentdata.overflow.slice(0, 1)];\n return { primary, overflow };\n };\n\n /**\n * This function will get called when there is an ability to\n * select multiple legends\n * @param legend ILegend\n */\n private _canSelectMultipleLegends = (legend: ILegend): { [key: string]: boolean } => {\n let selectedLegends = { ...this.state.selectedLegends };\n if (selectedLegends[legend.title]) {\n // Delete entry for the deselected legend to make\n // the number of keys equal to the number of selected legends\n delete selectedLegends[legend.title];\n } else {\n selectedLegends[legend.title] = true;\n // Clear set if all legends are selected\n if (Object.keys(selectedLegends).length === this.props.legends.length) {\n selectedLegends = {};\n }\n }\n this.setState({ selectedLegends });\n return selectedLegends;\n };\n\n /**\n * This function will get called when there is\n * ability to select only single legend\n * @param legend ILegend\n */\n\n private _canSelectOnlySingleLegend = (legend: ILegend): boolean => {\n if (this.state.selectedLegends[legend.title]) {\n this.setState({ selectedLegends: {} });\n return false;\n } else {\n this.setState({ selectedLegends: { [legend.title]: true } });\n return true;\n }\n };\n\n private _onClick = (legend: ILegend, event: React.MouseEvent<HTMLButtonElement>): void => {\n const { canSelectMultipleLegends = false } = this.props;\n let selectedLegends: string[] = [];\n if (canSelectMultipleLegends) {\n const nextSelectedLegends = this._canSelectMultipleLegends(legend);\n selectedLegends = Object.keys(nextSelectedLegends);\n } else {\n const isSelected = this._canSelectOnlySingleLegend(legend);\n selectedLegends = isSelected ? [legend.title] : [];\n }\n this.props.onChange?.(selectedLegends, event, legend);\n legend.action?.();\n };\n\n private _onRenderCompactCard = (expandingCard: IExpandingCardProps): JSX.Element => {\n const { allowFocusOnLegends = true, className, styles, theme, canSelectMultipleLegends = false } = this.props;\n const overflowHoverCardLegends: JSX.Element[] = [];\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n });\n expandingCard.renderData.forEach((legend: IOverflowSetItemProps, index: number) => {\n const hoverCardElement = this._renderButton(legend, index, true);\n overflowHoverCardLegends.push(hoverCardElement);\n });\n const hoverCardData = (\n <FocusZone\n {...(allowFocusOnLegends && {\n role: 'listbox',\n 'aria-label': 'Legends',\n 'aria-multiselectable': canSelectMultipleLegends,\n })}\n direction={FocusZoneDirection.vertical}\n handleTabKey={FocusZoneTabbableElements.all}\n isCircularNavigation={true}\n {...this.props.focusZonePropsInHoverCard}\n className={classNames.hoverCardRoot}\n >\n {overflowHoverCardLegends}\n </FocusZone>\n );\n return hoverCardData;\n };\n\n private _renderOverflowItems = (legends: ILegend[]) => {\n const { allowFocusOnLegends = true } = this.props;\n const items: IContextualMenuItem[] = [];\n legends.forEach((legend: ILegend, i: number) => {\n items.push({ key: i.toString(), name: legend.title, onClick: legend.action });\n });\n const renderOverflowData: IExpandingCardProps = { renderData: legends };\n const { theme, className, styles, overflowText } = this.props;\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n });\n const plainCardProps = {\n onRenderPlainCard: this._onRenderCompactCard,\n renderData: renderOverflowData,\n };\n\n const overflowString = overflowText ? overflowText : 'more';\n // execute similar to \"_onClick\" and \"_onLeave\" logic at HoverCard onCardHide event\n const onHoverCardHideHandler = () => {\n this.setState({ isHoverCardVisible: false });\n // Unhighlight the focused legend in the hover card\n const activeOverflowItem = find(legends, (legend: ILegend) => legend.title === this.state.activeLegend);\n if (activeOverflowItem) {\n this.setState({ activeLegend: '' });\n if (activeOverflowItem.onMouseOutAction) {\n activeOverflowItem.onMouseOutAction();\n }\n }\n };\n return (\n <HoverCard\n type={HoverCardType.plain}\n plainCardProps={plainCardProps}\n instantOpenOnClick={true}\n // eslint-disable-next-line react/jsx-no-bind\n onCardHide={onHoverCardHideHandler}\n setInitialFocus={true}\n trapFocus={true}\n onCardVisible={this._hoverCardVisible}\n styles={classNames.subComponentStyles.hoverCardStyles}\n cardDismissDelay={300}\n target={this._hoverCardRef}\n >\n {/* \"button\" role is not allowed as a child of parent role \"listbox\" */}\n <div role=\"option\">\n <div\n className={classNames.overflowIndicationTextStyle}\n ref={(rootElem: HTMLDivElement) => (this._hoverCardRef = rootElem)}\n {...(allowFocusOnLegends && {\n role: 'button',\n 'aria-expanded': this.state.isHoverCardVisible,\n 'aria-label': `${items.length} ${overflowString}`,\n })}\n data-is-focusable={allowFocusOnLegends}\n >\n {items.length} {overflowString}\n </div>\n </div>\n </HoverCard>\n );\n };\n\n private _hoverCardVisible = () => {\n this.setState({ isHoverCardVisible: true });\n };\n\n private _onHoverOverLegend = (legend: ILegend) => {\n if (legend.hoverAction) {\n this.setState({ activeLegend: legend.title });\n legend.hoverAction();\n }\n };\n\n private _onLeave = (legend: ILegend) => {\n if (legend.onMouseOutAction) {\n this.setState({ activeLegend: '' });\n legend.onMouseOutAction();\n }\n };\n\n private _renderButton = (data: IOverflowSetItemProps, index?: number, overflow?: boolean) => {\n const { allowFocusOnLegends = true } = this.props;\n const legend: ILegend = {\n title: data.title,\n color: data.color,\n shape: data.shape,\n action: data.action,\n hoverAction: data.hoverAction,\n onMouseOutAction: data.onMouseOutAction,\n stripePattern: data.stripePattern,\n isLineLegendInBarChart: data.isLineLegendInBarChart,\n opacity: data.opacity,\n };\n const color = this._getColor(legend.title, legend.color);\n const { theme, className, styles } = this.props;\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n colorOnSelectedState: color,\n borderColor: legend.color,\n overflow,\n stripePattern: legend.stripePattern,\n isLineLegendInBarChart: legend.isLineLegendInBarChart,\n opacity: legend.opacity,\n });\n const onClickHandler = (event: React.MouseEvent<HTMLButtonElement>) => {\n this._onClick(legend, event);\n };\n const onHoverHandler = () => {\n this._onHoverOverLegend(legend);\n };\n const onMouseOut = () => {\n this._onLeave(legend);\n };\n const shape = this._getShape(classNames, legend, color);\n return (\n <button\n {...(allowFocusOnLegends && {\n 'aria-selected': !!this.state.selectedLegends[legend.title],\n role: 'option',\n 'aria-label': `${legend.title}`,\n 'aria-setsize': data['aria-setsize'],\n 'aria-posinset': data['aria-posinset'],\n })}\n {...(data.nativeButtonProps && { ...data.nativeButtonProps })}\n key={index}\n className={classNames.legend}\n onClick={onClickHandler}\n onMouseOver={onHoverHandler}\n onMouseOut={onMouseOut}\n onFocus={onHoverHandler}\n onBlur={onMouseOut}\n data-is-focusable={allowFocusOnLegends}\n /* eslint-enable react/jsx-no-bind */\n >\n {shape}\n <div className={classNames.text}>{legend.title}</div>\n </button>\n );\n };\n\n private _getShape(\n classNames: IProcessedStyleSet<ILegendsStyles>,\n legend: ILegend,\n color: string,\n ): React.ReactNode | string {\n const svgParentProps: React.SVGAttributes<SVGElement> = {\n className: classNames.shape,\n };\n const svgChildProps: React.SVGAttributes<SVGElement> = {\n fill: color,\n strokeWidth: 2,\n stroke: legend.color,\n };\n return (\n <Shape\n svgProps={svgParentProps}\n pathProps={svgChildProps}\n shape={legend.shape as LegendShape}\n classNameForNonSvg={classNames.rect}\n />\n );\n }\n\n private _getColor(title: string, color: string): string {\n const { theme } = this.props;\n let legendColor = color;\n // if one or more legends are selected\n if (this._isLegendSelected) {\n // if the given legend (title) is one of the selected legends\n if (this.state.selectedLegends[title]) {\n legendColor = color;\n }\n // if the given legend is unselected\n else {\n legendColor = theme!.semanticColors.buttonBackground;\n }\n }\n // if no legend is selected\n else {\n // if the given legend is hovered\n // or none of the legends is hovered\n if (this.state.activeLegend === title || this.state.activeLegend === '') {\n legendColor = color;\n }\n // if there is a hovered legend but the given legend is not the one\n else {\n legendColor = theme!.semanticColors.buttonBackground;\n }\n }\n return legendColor;\n }\n}\n"]}