Skip to content

Commit

Permalink
[charts] Prevent invalid releasePointerCapture (#15602)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexfauquette authored and web-flow committed Nov 26, 2024
1 parent ca9b2e7 commit 6d224a3
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions packages/x-charts/src/hooks/useInteractionItemProps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,29 @@ export const useInteractionItemProps = (skip?: boolean) => {
});
};
const onPointerLeave = (event: React.PointerEvent) => {
event.currentTarget.releasePointerCapture(event.pointerId);
dispatchInteraction({ type: 'leaveItem', data });
if (event.currentTarget.hasPointerCapture(event.pointerId)) {
event.currentTarget.releasePointerCapture(event.pointerId);
}

store.update((prev) => {
const prevItem = prev.interaction.item;
if (
prevItem === null ||
Object.keys(data).some(
(key) => data[key as keyof typeof data] !== prevItem[key as keyof typeof prevItem],
)
) {
// The item is already something else, no need to clean it.
return prev;
}
return {
...prev,
interaction: {
...prev.interaction,
item: null,
},
};
});
clearHighlighted();
};
return {
Expand Down

0 comments on commit 6d224a3

Please sign in to comment.