]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Fix _isPointInArea helper when no area is provided (#9489)
authorJukka Kurkela <jukka.kurkela@gmail.com>
Wed, 28 Jul 2021 11:57:35 +0000 (14:57 +0300)
committerGitHub <noreply@github.com>
Wed, 28 Jul 2021 11:57:35 +0000 (07:57 -0400)
src/helpers/helpers.canvas.js
test/specs/helpers.canvas.tests.js
types/index.esm.d.ts

index c65f581156713d1cb6a4753ba0a99b1c5d3bafaa..d6290f2ec0c8e09ffccaf1c9775d63df2f164c2f 100644 (file)
@@ -251,8 +251,8 @@ export function drawPoint(ctx, options, x, y) {
 export function _isPointInArea(point, area, margin) {
   margin = margin || 0.5; // margin - default is to match rounded decimals
 
-  return point && area && point.x > area.left - margin && point.x < area.right + margin &&
-               point.y > area.top - margin && point.y < area.bottom + margin;
+  return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&
+               point.y > area.top - margin && point.y < area.bottom + margin);
 }
 
 export function clipArea(ctx, area) {
index 297ff03ef2e80a1931e4ec96f9492d49f0d15a86..ec7a539042a85d8f0792baa3914fdd8986e4543a 100644 (file)
@@ -24,6 +24,9 @@ describe('Chart.helpers.canvas', function() {
   });
 
   describe('isPointInArea', function() {
+    it('should return true when no area is provided', function() {
+      expect(helpers._isPointInArea({x: 1, y: 1})).toBe(true);
+    });
     it('should determine if a point is in the area', function() {
       var isPointInArea = helpers._isPointInArea;
       var area = {left: 0, top: 0, right: 512, bottom: 256};
index 385c63593750cbda23da4995cb666728f53b965d..fdb23250bbc9b11bcf3c088f380ad2657d609024 100644 (file)
@@ -1629,7 +1629,7 @@ export interface FontSpec {
 export type TextAlign = 'left' | 'center' | 'right';
 
 export interface VisualElement {
-  draw(ctx: CanvasRenderingContext2D): void;
+  draw(ctx: CanvasRenderingContext2D, area?: ChartArea): void;
   inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean): boolean;
   inXRange(mouseX: number, useFinalPosition?: boolean): boolean;
   inYRange(mouseY: number, useFinalPosition?: boolean): boolean;