diff --git a/src/helpers/helpers.canvas.js b/src/helpers/helpers.canvas.js index c65f5811567..d6290f2ec0c 100644 --- a/src/helpers/helpers.canvas.js +++ b/src/helpers/helpers.canvas.js @@ -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) { diff --git a/test/specs/helpers.canvas.tests.js b/test/specs/helpers.canvas.tests.js index 297ff03ef2e..ec7a539042a 100644 --- a/test/specs/helpers.canvas.tests.js +++ b/test/specs/helpers.canvas.tests.js @@ -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}; diff --git a/types/index.esm.d.ts b/types/index.esm.d.ts index 385c6359375..fdb23250bbc 100644 --- a/types/index.esm.d.ts +++ b/types/index.esm.d.ts @@ -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;