Skip to content

Commit 26dd782

Browse files
committed
fix: Do not render tooltip descriptions if set to null
1 parent 5c9876d commit 26dd782

File tree

3 files changed

+34
-11
lines changed

3 files changed

+34
-11
lines changed

src/cartesian-chart/__tests__/cartesian-chart-error-bars.test.tsx

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe("CartesianChart: errorbar series", () => {
3131
expect(getAllTooltipSeries()).toHaveLength(1);
3232
expect(getTooltipSeries(0).findKey().getElement().textContent).toBe("Column 1");
3333
expect(getTooltipSeries(0).findValue().getElement().textContent).toBe("2");
34-
expect(getTooltipSeries(0).findDescription().getElement().textContent).toBe("Error range1 - 3");
34+
expect(getTooltipSeries(0).findDescription()!.getElement().textContent).toBe("Error range1 - 3");
3535
});
3636

3737
test("attaches error series to the previous series by using `:previous` as value for `linkedTo`", async () => {
@@ -48,7 +48,7 @@ describe("CartesianChart: errorbar series", () => {
4848
expect(getAllTooltipSeries()).toHaveLength(1);
4949
expect(getTooltipSeries(0).findKey().getElement().textContent).toBe("Column 1");
5050
expect(getTooltipSeries(0).findValue().getElement().textContent).toBe("2");
51-
expect(getTooltipSeries(0).findDescription().getElement().textContent).toBe("Error range1 - 3");
51+
expect(getTooltipSeries(0).findDescription()!.getElement().textContent).toBe("Error range1 - 3");
5252
});
5353

5454
test("renders only the error range if error bar series name is not provided", async () => {
@@ -63,7 +63,7 @@ describe("CartesianChart: errorbar series", () => {
6363
await highlightFirstPointAndWaitForTooltip();
6464

6565
expect(getAllTooltipSeries()).toHaveLength(1);
66-
expect(getTooltipSeries(0).findDescription().getElement().textContent).toBe("1 - 3");
66+
expect(getTooltipSeries(0).findDescription()!.getElement().textContent).toBe("1 - 3");
6767
});
6868

6969
test("renders multiple error bars per series", async () => {
@@ -81,7 +81,7 @@ describe("CartesianChart: errorbar series", () => {
8181
expect(getAllTooltipSeries()).toHaveLength(1);
8282
expect(getTooltipSeries(0).findKey().getElement().textContent).toBe("Column 1");
8383
expect(getTooltipSeries(0).findValue().getElement().textContent).toBe("2");
84-
expect(getTooltipSeries(0).findDescription().getElement().textContent).toBe(
84+
expect(getTooltipSeries(0).findDescription()!.getElement().textContent).toBe(
8585
"Error range 1" + "1 - 3" + "Error range 2" + "0 - 4",
8686
);
8787
});
@@ -107,7 +107,29 @@ describe("CartesianChart: errorbar series", () => {
107107
expect(getAllTooltipSeries()).toHaveLength(1);
108108
expect(getTooltipSeries(0).findKey().getElement().textContent).toBe("Custom key Column 1");
109109
expect(getTooltipSeries(0).findValue().getElement().textContent).toBe("Custom value 2");
110-
expect(getTooltipSeries(0).findDescription().getElement().textContent).toBe("Custom description 1 - 3");
110+
expect(getTooltipSeries(0).findDescription()!.getElement().textContent).toBe("Custom description 1 - 3");
111+
});
112+
113+
test("does not render description if set to null", async () => {
114+
renderCartesianChart({
115+
highcharts,
116+
series: [
117+
{ type: "column", name: "Column 1", data: [2], id: "column-1" },
118+
{ type: "errorbar", name: "Column 2", data: [{ low: 1, high: 3 }], linkedTo: "column-1" },
119+
],
120+
tooltip: {
121+
point: () => ({
122+
description: null,
123+
}),
124+
},
125+
});
126+
127+
await highlightFirstPointAndWaitForTooltip();
128+
129+
expect(getAllTooltipSeries()).toHaveLength(1);
130+
expect(getTooltipSeries(0).findKey().getElement().textContent).toBe("Column 1");
131+
expect(getTooltipSeries(0).findValue().getElement().textContent).toBe("2");
132+
expect(getTooltipSeries(0).findDescription()).toBe(null);
111133
});
112134
});
113135

src/cartesian-chart/__tests__/cartesian-chart-tooltip.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ describe("CartesianChart: tooltip", () => {
189189
getTooltipSeries(0).findValue().find("button")!.click();
190190
expect(onClickValue).toHaveBeenCalledWith("root");
191191

192-
expect(getTooltipSeries(0).findDescription().getElement().textContent).toBe("1 - 4");
192+
expect(getTooltipSeries(0).findDescription()!.getElement().textContent).toBe("1 - 4");
193193

194194
expect(getTooltipSeries(1).findKey().getElement().textContent).toBe("Custom name for Threshold");
195195
expect(getTooltipSeries(1).findValue().getElement().textContent).toBe("T");
@@ -217,7 +217,7 @@ describe("CartesianChart: tooltip", () => {
217217

218218
expectCustomSubItems();
219219

220-
expect(getTooltipSeries(0).findDescription().getElement().textContent).toBe("1 - 4");
220+
expect(getTooltipSeries(0).findDescription()!.getElement().textContent).toBe("1 - 4");
221221

222222
expect(getTooltipSeries(1).findKey().getElement().textContent).toBe("Threshold");
223223
expect(getTooltipSeries(1).findValue().getElement().textContent).toBe(""); // X threshold has no y value

src/core/components/core-tooltip.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ function getTooltipContentCartesian(
150150
const detailItems: ChartSeriesDetailItem[] = matchedItems.map((item) => {
151151
const valueFormatter = getFormatter(item.point.series.yAxis);
152152
const itemY = isXThreshold(item.point.series) ? null : (item.point.y ?? null);
153-
const customContent = renderers.point ? renderers.point({ item }) : null;
153+
const customContent = renderers.point ? renderers.point({ item }) : undefined;
154154
return {
155155
key: customContent?.key ?? item.point.series.name,
156156
value: customContent?.value ?? valueFormatter(itemY),
@@ -159,8 +159,7 @@ function getTooltipContentCartesian(
159159
expandableId: customContent?.expandable ? item.point.series.name : undefined,
160160
highlighted: item.point.x === point?.x && item.point.y === point?.y,
161161
description:
162-
customContent?.description ??
163-
(item.errorRanges.length ? (
162+
customContent?.description === undefined && item.errorRanges.length ? (
164163
<>
165164
{item.errorRanges.map((errorBarPoint, index) => (
166165
<div key={index} className={styles["error-range"]}>
@@ -171,7 +170,9 @@ function getTooltipContentCartesian(
171170
</div>
172171
))}
173172
</>
174-
) : null),
173+
) : (
174+
customContent?.description
175+
),
175176
};
176177
});
177178
// We only support cartesian charts with a single x axis.

0 commit comments

Comments
 (0)