From 7d71856fdf956e646cb484b9c815d87cf07d387d Mon Sep 17 00:00:00 2001 From: blowindblo Date: Fri, 27 Mar 2026 00:40:53 +0800 Subject: [PATCH] fix(TooltipContext): correct hit detection by accounting for chart padding --- .changeset/metal-flowers-sneeze.md | 5 +++++ .../src/lib/components/tooltip/TooltipContext.svelte | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/metal-flowers-sneeze.md diff --git a/.changeset/metal-flowers-sneeze.md b/.changeset/metal-flowers-sneeze.md new file mode 100644 index 000000000..05e7b99cd --- /dev/null +++ b/.changeset/metal-flowers-sneeze.md @@ -0,0 +1,5 @@ +--- +'layerchart': patch +--- + +fix(TooltipContext): correct `bisect-band` hit detection by accounting for chart padding diff --git a/packages/layerchart/src/lib/components/tooltip/TooltipContext.svelte b/packages/layerchart/src/lib/components/tooltip/TooltipContext.svelte index a844762ac..5ff781ecd 100644 --- a/packages/layerchart/src/lib/components/tooltip/TooltipContext.svelte +++ b/packages/layerchart/src/lib/components/tooltip/TooltipContext.svelte @@ -310,8 +310,8 @@ case 'bisect-band': { // `x` and `y` values at pointer coordinate - const xValueAtPoint = scaleInvert(ctx.xScale, point.x); - const yValueAtPoint = scaleInvert(ctx.yScale, point.y); + const xValueAtPoint = scaleInvert(ctx.xScale, point.x - ctx.padding.left); + const yValueAtPoint = scaleInvert(ctx.yScale, point.y - ctx.padding.top); if (isScaleBand(ctx.xScale)) { // Find point closest to pointer within the x band