56 Commits

Author SHA1 Message Date
Jacco van den Berg
2fa724110a
Check if range method exists on element before executing it (#11873)
Co-authored-by: Jacco van den Berg <jacco@jem-id.nl>
2024-08-20 21:37:23 +02:00
Dan Onoshko
64a027874c
fix: move types to src dir to escape src / dist dirs in paths (#10993) 2022-12-16 07:56:06 -05:00
Dan Onoshko
51441272a7
refactor: move to esm in sources (#10879) 2022-11-17 08:08:44 -05:00
Dan Onoshko
ce375a6876
feat: add ESM support (#10525)
* feat: add ESM support

* build: rename UMD bundle

* chore: edit supbackages description

* style: disable es/no-import-meta linter rule

* test: dynamic import in cjs module

* docs: edit integrations page

* docs: review fixes

* chore: remove useless regex in webpack config

* ci: test size-limit only for ESM bundle
2022-08-04 18:43:26 -04:00
Yiwen Wang
ebcaff15c2
Add option to include invisible points (#10362)
* Add option to include invisible points

* Minor fixes

* Add doc for newly added option

* Fix typo

* Add test for newly added option

* Improve description of the new option

* Update docs/configuration/interactions.md

Co-authored-by: Jacco van den Berg <39033624+LeeLenaleee@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Jacco van den Berg <39033624+LeeLenaleee@users.noreply.github.com>

Co-authored-by: Yiwen Wang 🌊 <yiwwan@microsoft.com>
Co-authored-by: Jacco van den Berg <39033624+LeeLenaleee@users.noreply.github.com>
2022-05-25 13:25:27 +03:00
t-mangoe
d573dfb63e
display tooltips only at points in chart area (#10289)
* show only points in chart area

* use the _isPointInArea helper function
2022-05-07 10:43:47 -04:00
Josh Kelley
c057c96693
Interaction functions (#10046)
* Refactor get...Items functions to take events rather than positions

To work toward exposing something like the get...Items functions.

* Switch getAxisItems to use optimizedEvaluateItems

optimizedEvaluateItems falls back to evaluating all items for unsorted items, and sorting / optimizing ought to be okay, so this ought to be equivalent.

* Performance

* Consolidate getRelativePosition

helpers.dom.js's getRelativePosition already had logic to handle ChartEvent vs. Event (as demonstrated by the `native` check within `getCanvasPosition`), so it's redundant for core.interaction.js to have its own `native` check.

Update `getRelativePosition` to use the same `native` check as core.interaction.js's version.  As best as I can tell, the ChartEvent's x and y are populated from `getRelativePosition`, so the previous `getCanvasPosition` was effectively just duplicating `getRelativePosition'`s work.  I added a test to verify this; it depends on a local, not-yet-submitted change in chartjs-test-utils' `triggerMouseEvent` to return the mouse event that it triggers.

* Add an API to refactor duplicate isPointInArea

* Rename and update JSDoc to prepare for making this public

* Give functions a consistent, generic interface

* Export functions for discussion

* Code review feedback

Add a non-null assertion, as requested in code review.

Add JSDoc to clarify that `getCanvasPosition` now expects a native `Event`, not a `ChartEvent`.  Add `@ts-ignore`; `getCanvasPosition` relied on some loose conversions between `Event`, `TouchEvent`, and `Touch` that would require several changes to make TypeScript happy.

* Code review feedback

Return the event directly, to speed up the code a bit.  Add JSDoc to help communicate its intent.  Update various comments.

* Finalize exports; add docs and TypeScript

* Update src/helpers/helpers.dom.js

* Update src/helpers/helpers.dom.js

Only thing needed actually is the update of chartjs-test-utils to 0.4.0

* Bump chartjs-test-utils dependency

To get supporting work from https://github.com/chartjs/chartjs-test-utils/pull/19

Co-authored-by: Jukka Kurkela <jukka.kurkela@gmail.com>
2022-03-24 09:02:30 -04:00
Jukka Kurkela
ba6b446b04
Limit active element changes to chartArea (#9970)
* Limit active element changes to chartArea

* CC, remove duplicate ChartEvent interface

* CC2
2021-12-08 16:44:45 +02:00
Luuk de Vlieger
7784fbfded
Support "r" axis for non-intersecting interaction (#9919)
* Support "r" axis for non-intersecting interaction

* Extract some interaction functionality

* Remove whitespace and semicolons

* WIP: add interaction test

* Update documentation

* Fix test

* Add another test

* Update axis params

* Add additional axis check to binary search

* Update axis type
2021-12-05 08:57:07 -05:00
Jukka Kurkela
6552a01265
Stop modifying options in interaction handlers (#9939)
* Stop modifying options in interaction handlers
* Don't use object spread
2021-12-01 17:55:58 -05:00
Jukka Kurkela
ba2f158dc6
Fix interaction on partially visible bar (#9446) 2021-07-20 07:57:56 -04:00
Jukka Kurkela
77cfac1785
Ignore items outside chart area for interaction (#9171) 2021-05-27 17:15:50 -04:00
Jukka Kurkela
79cc6d3206
Use maxOverflow as minimum layout padding (#8650)
* Use maxOverflow as minimum layout padding

* fixes
2021-03-16 16:32:29 -04:00
Jukka Kurkela
ddfbcf777a
Update eslint-config-chartjs to v0.3.0 (#8406) 2021-02-10 08:21:39 -05:00
Evert Timberg
17f6edb650
Remove I prefix from TS types (#8017)
* Remove I prefix from TS types
* Update missing `ILayoutItem` typedefs
* IEvent should become ChartEvent
* Prevent FillTarget collision
* Import FontSpec instead of IFontSpec
* Prevent recursive DateAdapter problem
2020-11-07 08:35:19 -05:00
Jukka Kurkela
2563ff174e
Merge x/y interaction mode functions (#7794) 2020-09-14 11:36:35 -04:00
Samuel Gratzl
3e28825c0f
use direct imports instead of generic helpers import (#7385)
Split all helper functions in different files and import them directly where used
2020-05-21 16:41:56 -04:00
Ben McCann
5ef519e4d2
Shorten imports (#7168) 2020-03-01 09:57:24 -05:00
Jukka Kurkela
5e489f16f6
Issue 4991 (#7084)
* Fix remaining handleEvent issues

* Reduce lines

* Update tooltip always on replay

* Address issues

* Fix test

* More tooltip fixing

* Extend comment
2020-02-25 14:35:32 -05:00
Jukka Kurkela
d801e56106
Update dependencies and alter privacy of functions (#7138)
* Update dependencies

* Fix privacy problems

* color lib & consistency

* Review update

* getLabelCapacity

* Review update
2020-02-22 08:35:16 -05:00
Ben McCann
3682da7899
JSDoc fixes (#7112) 2020-02-17 14:31:43 -05:00
Jukka Kurkela
25a9969489
Enable esnext and fix all lint errors (#7094)
* enable esnext and fix all lint errors

* Review update

* Missed some

* Some cleanup still

* Remove leftover eslint disable
2020-02-13 18:41:49 -05:00
Ben McCann
7609385544
Cleanup some Typescript comments (#7088) 2020-02-12 08:03:23 -05:00
Ben McCann
795c86e95b
Fix errors reported by TypeScript compiler (#7030) 2020-02-07 18:03:33 -05:00
Ben McCann
f9cd9fdf76
JSDoc and other cleanup (#7057) 2020-02-05 08:27:02 -05:00
Ben McCann
3b61a1f86e
Generate ticks when source is data (#7044)
Generate ticks when source is data
2020-02-03 19:22:09 -05:00
Ben McCann
1c18a74ea0
Fix some JSDoc errors (#7026)
* Fix some JSDoc errors

* Fix helpers.dom JSDoc errors

* Add scale JSDoc errors

* Address review comment

* Fix additional errors

* Document optional parameters

* JSDoc fixes for datasetController

* Remove undefined
2020-02-03 07:52:55 -05:00
Jukka Kurkela
cb6d7f80d1 Fix binarySearch for empty dataset (#7023) 2020-01-28 11:46:23 -05:00
Jukka Kurkela
9fda5ec667 Use binary search for interpolations (#6958) 2020-01-21 18:31:17 -05:00
Jukka Kurkela
fb19b77e4b Fix tooltip for 'dataset' mode (#6961) 2020-01-21 09:48:58 -05:00
Jukka Kurkela
f1677b6652 Limit interactions to chartArea (+/-0.5px) (#6943)
Limit interactions to chartArea (+/-0.5px)
2020-01-11 18:10:32 -05:00
Jukka Kurkela
b83f64b16e Rewrite animation logic (#6845)
* Rewrite animation logic

* Review update 1

* Review update 2

* Review update 3

* Add 'none' to api.md
2019-12-27 17:13:24 -05:00
Evert Timberg
c8bdca62e8
Move all helpers to src/helpers (#6841)
* Move all helpers into src/helpers

* Move curve helpers to their own file

* DOM helpers moved to their own file

* Update migration docs

* Remove migration docs on new functions
2019-12-17 08:04:40 -05:00
Ben McCann
e25936648c Optimize tooltip event handler (#6827)
* Optimize tooltip event handler

* Address review comments

* Additional cleanup
2019-12-15 08:26:17 -05:00
Ben McCann
2be634a478 Interactions cleanup (#6825) 2019-12-14 13:09:50 -05:00
Jukka Kurkela
5eed101a53 Use correct dataset index in parseVisibleItems (#6786)
* Use correct dataset index

* Review1
2019-11-23 17:38:48 -05:00
Ben McCann
a3392e0e59 Remove index and datasetIndex from Element (#6688)
Remove `index` and `datasetIndex` properties from elements.
2019-11-10 07:52:12 -05:00
Jukka Kurkela
0228776e66 Remove deprecated interaction modes (#6625)
* Remove deprecated interaction modes
* Use default modes
2019-10-28 18:11:38 -04:00
Jukka Kurkela
6b6f1a4c51 Implement dataset.order (#6268)
Allow sorting datasets based on the `order` property
2019-10-22 19:14:54 -04:00
Ben McCann
2f874fde62 Use lowercase for primitives in jsdocs (#6033) 2019-02-11 08:51:39 +01:00
Jukka Kurkela
f5437fe548 Fix nearest interaction mode to return all items (#5857)
Return all items that are at the nearest distance to the point and add unit tests for nearest + axis: 'x' and nearest + axis: 'y'
2018-11-27 16:26:41 +01:00
Evert Timberg
52145de5db Fix regression in x-axis interaction mode (#4762) 2017-09-16 08:01:26 -04:00
Simon Brunel
9ef5cc72f6 Enforce variable declaration coding style (#4610)
For consistency, enable ESLint `one-var` rule to require multiple variable declarations for initialized variables per scope. Uninitialized variables can still be declared together (preferred) or separately.

http://eslint.org/docs/rules/one-var
2017-08-03 18:33:18 +02:00
Evert Timberg
326991ce50 index-y interaction mode + convert horizontal bar defaults to new mode (#4458)
index-y interaction mode + convert horizontal bar defaults to new mode
2017-07-28 18:07:28 -04:00
Simon Brunel
889ecd560b Make Chart.defaults/Ticks/Interaction importable (#4512)
Default options can now be accessed by importing `core/core.defaults`. The returned object acts as a singleton and is populated when importing classes that expose their own default values (meaning that importing only `code.defaults` results in an empty object). Also make `Chart.Ticks` and `Chart.Interaction` importable since existing defaults rely on these values.

Add the `defaults._set` method that make easier declaring new defaults by merging given values with existing ones for a specific scope (`global`, `scale`, `bar`, etc).
2017-07-16 19:38:19 +02:00
Simon Brunel
717e8d950a Make Chart.helpers importable (#4479)
Properly export helpers and remove dependencies to `Chart.helpers`. Helpers can now be accessed from `src/helpers/index.js` (`var helpers = require('path/to/helpers/index')`, instead of `var helpers = Chart.helpers`).
2017-07-15 15:13:56 +02:00
Simon Brunel
ba6e041713 Unit tests for Chart constructor and deprecations 2017-02-10 18:37:56 -05:00
Simon Brunel
13c6121876 Remove deprecated nested chart accesses 2017-02-10 18:37:56 -05:00
Simon Brunel
312773ba7b Platform event API abstraction
Move base platform definition and logic in src/platform/platform.js and simplify the browser -> Chart.js event mapping by listing only different naming then fallback to the native type.

Replace `createEvent` by `add/removeEventListener` methods which dispatch Chart.js IEvent objects instead of native events. Move `add/removeResizeListener` implementation into the DOM platform which is now accessible via `platform.add/removeEventListener(chart, 'resize', listener)`.

Finally, remove `bindEvent` and `unbindEvent` from the helpers since the implementation is specific to the chart controller (and should be private).
2017-01-15 14:25:38 -05:00
Evert Timberg
ecc35c527b Refactoring to put browser specific code in a new class (#3718)
Refactoring to put browser specific code in a new class, BrowserPlatform.
BrowserPlatform implements IPlatform. Chart.Platform is the constructor for the platform object that is attached to the chart instance.

Plugins are notified about the event using the `onEvent` call. The legend plugin was converted to use onEvent instead of the older private `handleEvent` method.
Wrote test to check that plugins are notified about events
2016-12-21 10:22:05 -05:00