2398 Commits

Author SHA1 Message Date
Adrian Cerbaro
3dffb4fb8e
fix: respect dataset clipping area when filling line charts (#12057)
* fix(plugin.filler): respect dataset clipping area when filling line charts

The filling area must respect the dataset's clipping area when clipping is enabled. Before this change, the line would be clipped according to the dataset's area but the fill would overlap other datasets.

Closes #12052

* chore(plugin.filler): use @ts-expect-error instead of @ts-ignore
2025-04-14 15:41:14 +02:00
Josh Kelley
ebe20add53
Export ...ParsedData interfaces (#12035)
Otherwise, trying to inherit from DatasetController in a TypeScript project may result in TypeScript errors similar to the following:

> error TS9006: Declaration emit for this file requires using private name 'RadialParsedData' from module '"/Users/joshkel/src/app/node_modules/chart.js/dist/types/index"'. An explicit type annotation may unblock declaration emit.
2025-02-18 13:36:35 -05:00
Josh Kelley
2f425290ee
[fix] Handle non-primitives in isNumber (#12034)
While investigating https://github.com/chartjs/chartjs-plugin-zoom/issues/928, I found that `isNonPrimitive` will throw TypeError on a Moment.js object after it's passed through Chart.js's options proxy, because the object has its `Symbol.toPrimitive`, `toString`, and `valueOf` all set to null.

(See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion for background reading.)

Since isNumber appears to be a low-level function that can take any arbitrary input, it seems worth letting it handle this case.
2025-02-16 12:24:26 -05:00
Josh Kelley
370f6c385d
Fix helpers Chart type (#12012)
helpers.dom.ts functions referenced the internal `Chart` JavaScript class rather than the published `Chart<TType, TData, TLabel>` TypeScript definition. This causes errors when outside code tries to call helper functions.

The two `Chart` interfaces are incompatible - the `width`, `height`, and `currentDevicePixelRatio` properties are declared as readonly in the TS declaration but are manipulated by helpers.dom.ts functions, and helpers.dom.ts functions need to be invoked both by internal Chart.js code (which uses the JS class) and by outside code (which uses the TS types). To address this, I'm importing the JS version as `PrivateChart`. There may be a better solution.

It's my understanding that the comment about "typedefs are auto-exported" is obsolete now that helpers.dom is a native TS file.

Fixes #11153
2025-01-30 10:29:19 +01:00
Josh Kelley
f744621c9c
Type fixes for time adapters (#12010)
Specific changes:

* `formats` is defined as an arbitrary record.  In practice, it maps from `TimeUnit` and `'datetime'` to the specific date library's format strings.
* `parse` and `format` were defined as requiring `TimeUnit`, but they actually take date library format strings.  (E.g., it's up to the caller to look up format strings via `formats()` or user parameters.)
* `endOf` is never passed `isoWeek` (`isoWeek` isn't a normal `TimeUnit`, it's only used as a special case to `startOf`), and [chartjs-adapter-date-fns](https://github.com/chartjs/chartjs-adapter-date-fns/blob/v3.0.0/src/index.js#L101) doesn't support it.
* The constructor's options parameter is optional.
* `weekday` is documented as allowing a boolean (true means to start on Monday).
* `export default { _date: DateAdapterBase }` meant that `new _date()` returns a `DateAdapterBase` instance, whose methods take no parameters.  Since it can be overridden at runtime, I replaced it with a more generic constructor + static methods.
2025-01-29 11:32:29 +01:00
Mariss Tubelis
97b564b718
Bugfix: Binary search wrapper returns non-existing index (#11991) 2025-01-05 09:42:33 -05:00
Mariss Tubelis
a77a63b16b
Bugfix: return nearest non-null point on interaction when spanGaps=true (#11986)
* First step in fixing the bug of spanGaps null point interaction

* Complete bugfix of spanGaps null point interaction

* Add two tests in core.interaction.tests for the bugfix change

* Remove odd line break

* Use isNullOrUndef helper for point value checks

* Add 10 more test cases for nearest interaction when spanGaps=true
2025-01-03 10:50:56 -05:00
Mariss Tubelis
1e3d6e5711
Bugfix: span gaps over null values beyond scale limits (#11984)
* Bugfix: spanGaps not working near min and max limits

* Fix error when meta.dataset.options = null

* Add tests for correct setting of line controller properties _drawStart and _drawCount

* Fix spacing in controller line tests

* Add tension to test

* Add a better test case

* Avoid the use of FindLastIndex

* Avoid taking 0 for null value and improve naming
2025-01-02 19:17:24 -05:00
DustinEwan
3a515d08e8
fix: correct typing for doughnut, pie, and polarArea charts (#11521)
* fix(#10896): correct typing for doughnut, pie, and polarArea charts

* formatting
2024-11-18 15:43:17 -05:00
Mikhail
49256c6149
simplify check undefinded (#11501) 2024-11-18 15:24:43 -05:00
Jacco van den Berg
bb82c8f549
Export TRBL from geometric (#11948)
Co-authored-by: Jacco van den Berg <jacco@jem-id.nl>
2024-11-04 15:10:35 +01:00
Nikolai Iakovlev
6dd448b933
Fix: applyStack() returned the sum of all values for hidden dataset indices, which resulted in wrong show animations (#11938) 2024-10-24 11:55:58 -04:00
Jacco van den Berg
03d1d5caa2
Allow array's in backgroundColor defaults and add hover background and border color to defaults (#11931)
* Allow array as default and add extra default options

* Add test

---------

Co-authored-by: Jacco van den Berg <jacco@jem-id.nl>
2024-10-15 20:31:51 +02:00
Jacco van den Berg
3f2968cb41
Add check to colors plugin if defaults are set (#11927) 2024-10-13 09:12:16 +02:00
Moriwaki Masafumi
5d2dfbe68d
Avoid error if borderOpts.dash is undefined (#11907) 2024-10-12 21:14:07 -04:00
Jacco van den Berg
680cd227d4
Fix initial dataset stacks (#11882)
* Update cahced _stacked value after updating stacks

* Add test

---------

Co-authored-by: Jacco van den Berg <jacco@jem-id.nl>
2024-08-26 17:13:12 +02:00
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
Jacco van den Berg
3dac05ed00
Return false from the average tooltip positioner on no valid data (#11863) 2024-08-17 08:52:36 +02:00
Artur Morys - Magiera
b51b57aca4
fix(types): exclude DeepPartial<unknown[]> from ChartOptions interface (#11867)
* fix(types): exclude DeepPartial<unknown[]> from ChartOptions interface

* refactor: format index.d.ts to comply with ESLint rules
2024-08-16 19:57:26 -04:00
Artur Morys - Magiera
74122c1b0f
fix(types): add xCenter and yCenter properties to RadialLinearScale interface (#11862) 2024-08-16 08:25:47 +02:00
huqingkun
b9c01414ba
Bugfix/issue 11804 tooltip show for all invisible (#11858)
* exclude 0 angle from inRange to not showing tooltip when all data are hidden

Signed-off-by: Hu, Vince <Qingkun.Hu@fmr.com>

* test 0 angle point not in arc range

---------

Signed-off-by: Hu, Vince <Qingkun.Hu@fmr.com>
2024-08-12 11:56:35 -04:00
Dimitris-Rafail Katsampas
f3f84fd624
fix: Unset _resizeBeforeDraw before _resize() call to avoid possible recursion (#11851)
* fix: Unset _resizeBeforeDraw before _resize to avoid possible recursion

* chore: Comment update

* chore: Reverted dependency change in package json
2024-08-08 20:08:30 +02:00
huqingkun
147ee593ba
fix issue #11717 (#11844)
* fix issue #11717

Signed-off-by: Hu, Vince <Qingkun.Hu@fmr.com>

* unit test for issue #11717

* fixing test lint style issue

* update codes according review comments

---------

Signed-off-by: Hu, Vince <Qingkun.Hu@fmr.com>
2024-08-06 17:32:26 +02:00
Jacco van den Berg
19c02c8a25
Remove boxPading from legend options (#11817)
Co-authored-by: Jacco van den Berg <jacco@jem-id.nl>
2024-06-26 14:01:19 +02:00
Michel Machado
4ee6c9e279
Add fit method to LegendElement interface (#11796) 2024-05-31 08:43:46 -04:00
Jacco van den Berg
ff740789a5
Fix drawing angle lines on reversed radial scale (#11788)
* Fix drawing angle lines on reversed radial scale

* add test

* Show ticks in test

---------

Co-authored-by: Jacco van den Berg <jacco@jem-id.nl>
2024-05-24 16:15:28 +02:00
Jon Dufresne
228a485603
types: Allow passing undefined for chart options (#11780)
When exactOptionalPropertyTypes, TypeScript distinguishes between the
value undefined and the property not existing. See:

https://www.typescriptlang.org/tsconfig/#exactOptionalPropertyTypes

For Chart.js options, this difference is not important and either
passing undefined or not including it have the same effect.
2024-05-21 09:07:35 -04:00
Jon Dufresne
5c9e5c66d2
Fix some typos (#11781) 2024-05-21 12:10:07 +02:00
Arun Philip
e7b8fa290f
do not attempt to clear canvas if one does not exist (#11764)
* do not attempt to clear canvas if one does not exist

* update test to explicitly run clearCanvas method to ensure it doesn't throw an error

* explicitly set canvas and ctx to null in test since the helper in test code didn't

* Update test/specs/helpers.canvas.tests.js

---------

Co-authored-by: Jacco van den Berg <jaccoberg2281@gmail.com>
2024-05-17 08:16:58 -04:00
EricWittrock
f785882aeb
Fix error when object prototype is frozen (#11754) 2024-04-29 06:42:05 +02:00
EricWittrock
6daf4ba4e3
#11450 hide bar by dataindex (#11755) 2024-04-29 06:36:56 +02:00
Jacco van den Berg
8c004a1c42
Create parsed object with correct keys (#11690)
* Create parsed object with correct keys

* Add test
2024-04-28 20:37:29 -04:00
Arun Philip
1777f959e5
platform.isAttached should return false if canvas is false-y (#11707)
* platform.isAttached should return false if canvas is false-y

* change styling to conform to codeclimate linter
2024-03-11 09:57:07 +01:00
Arun Philip
bbdaa6a14b
addListener and removeListener are only invoked on defined (and valid) values (#11685) 2024-02-28 10:55:52 -05:00
Megaemce
4068bd8c47
fix #11503, autoskipping 0 ticks when min is below 0 (#11682) 2024-02-24 20:30:35 +01:00
mirumi
ef5e4d4692
docs(types): fix description in index.d.ts (#11674) 2024-02-18 13:31:37 +01:00
waszkiewiczja
caa56ce87d
changed r to optional in BubbleDataPoint (#11662) 2024-02-12 08:49:57 -05:00
Hyun-je Alex Moon
dff44828db
fix(#11615): fix calculating caretX position on stacked bar with index interaction. (#11616) 2023-12-27 07:18:14 +01:00
Jacco van den Berg
8e19199f58
Update font spec type (#11605) 2023-12-04 19:56:38 +01:00
Josh Kelley
429d99dbc2
Tooltip fixes (getLabelAndValue on null controller, null getParsed) (#11596)
* Fix for getLabelAndValue on null controller

I encountered #11315 under the following circumstances:

1. Position the cursor over the chart area, such that it causes a
   tooltip to be shown.
2. Move the cursor out of the chart area, such that the tooltip remains
   visible.
3. Cause the chart contents to be changed, such that the dataset
   referenced by the active tooltip element is no longer valid.
4. Move the mouse again.  This triggers an `inChartArea = false` event,
   so it reuses the previous, now invalid, active elements.

This fixes #11315 under the circumstances for which I've reproduced it,
but there may be others.

* Further fixes for elements added / changed

This possibly fixes #11365.
2023-11-29 14:51:56 -05:00
Kevin Read
e92d10445b
fix: Guard access to window in helpers.dom.ts for browserless rendering (#11588) 2023-11-17 16:34:20 +01:00
Jacco van den Berg
2a03e138e9
Fix backdrop padding (#11577)
* fix for alignment inner

* Add test

* Remove eslint ignores

* remove unecesarry config

* Remove text from test
2023-11-10 00:25:36 +01:00
Dimitris-Rafail Katsampas
6722512744
fix: Property platform missing from chart configuration typings (#11572) 2023-11-09 23:35:01 +01:00
Vsevolod Fedorov
06f9ffb275
fix: pass Plugin TType down to hooks chart arg (#11569) 2023-11-06 18:34:29 +01:00
Mikhail
ca77bed318
fix: simplify check hasFunction (#11490) 2023-09-11 08:31:29 +02:00
Cazka
e74ee7b75b
allow mode to be a callback function (#11488) 2023-09-06 17:13:33 +02:00
Chocomint
44b97b8698
docs: Fix typo for documentation of plugins.tooltip.textDirection (#11483) 2023-09-04 10:13:29 +02:00
Mercy Bickell
a3fc84113e
fix: Add backgroundColor type on CoreScaleOptions (#11348)
* Fix: add backgroundColor type on CartesianScaleOptions

* Add instead on CoreScaleOptions

* Remove redundant backgroundColor from RadialLinearScaleOptions
2023-08-08 00:18:54 +02:00
Bogdan Korshunov
132324f5b8
BorderRadius of Bar Chart issue on Firefox 116 (#11435)
Co-authored-by: bogdankorshunov <korshunov.oren@gmail.com>
2023-08-07 20:16:32 +02:00
stockiNail
79f1a0a9e8
Add clip option to scale configuration to allow unclipped scales (#11404)
* Add clip option to scale configuration to allow unclipped scales

* add images

* fix cc

* change name of function
2023-08-07 20:16:20 +02:00