}
const center = element.getCenterPoint(useFinalPosition);
- if (!_isPointInArea(center, chart.chartArea, chart._minPadding)) {
+ if (!_isPointInArea(center, chart.chartArea, chart._minPadding) && !element.inRange(position.x, position.y, useFinalPosition)) {
return;
}
const distance = distanceMetric(position, center);
--- /dev/null
+module.exports = {
+ config: {
+ type: 'bar',
+ data: {
+ labels: ['a', 'b', 'c'],
+ datasets: [
+ {
+ data: [220, 250, 225],
+ },
+ ],
+ },
+ options: {
+ events: ['click'],
+ interaction: {
+ mode: 'nearest'
+ },
+ plugins: {
+ tooltip: true,
+ legend: false
+ },
+ scales: {
+ y: {
+ beginAtZero: false
+ }
+ }
+ }
+ },
+ options: {
+ spriteText: true,
+ canvas: {
+ width: 256,
+ height: 256
+ },
+ async run(chart) {
+ const point = {
+ x: chart.chartArea.left + chart.chartArea.width / 2,
+ y: chart.chartArea.top + chart.chartArea.height / 2,
+ };
+ await jasmine.triggerMouseEvent(chart, 'click', point);
+ }
+ }
+};
--- /dev/null
+module.exports = {
+ config: {
+ type: 'scatter',
+ data: {
+ datasets: [{
+ data: [{x: 1, y: 1}, {x: 48, y: 1}]
+ }]
+ },
+ options: {
+ events: ['click'],
+ interaction: {
+ mode: 'nearest',
+ intersect: false
+ },
+ plugins: {
+ tooltip: true,
+ legend: false
+ },
+ scales: {
+ x: {
+ min: 5,
+ max: 50
+ },
+ y: {
+ min: 0,
+ max: 2
+ }
+ },
+ layout: {
+ padding: 50
+ }
+ }
+ },
+ options: {
+ spriteText: true,
+ canvas: {
+ width: 256,
+ height: 256
+ },
+ async run(chart) {
+ const point = chart.getDatasetMeta(0).data[0];
+ await jasmine.triggerMouseEvent(chart, 'click', {y: point.y, x: chart.chartArea.left});
+ }
+ }
+};
-// Tests of the interaction handlers in Core.Interaction
-
-// Test the rectangle element
describe('Core.Interaction', function() {
+ describe('auto', jasmine.fixture.specs('core.interaction'));
+
describe('point mode', function() {
beforeEach(function() {
this.chart = window.acquireChart({