From dd03016ba1fc2544b5e52ce47b8943b3fd325a7a Mon Sep 17 00:00:00 2001 From: Josh Kelley Date: Tue, 25 Jul 2023 18:39:25 -0400 Subject: [PATCH] Updates to scale type definitions (#11419) While adding some type definitions to chartjs-plugin-zoom (see https://github.com/chartjs/chartjs-plugin-zoom/pull/774), I noticed a few limitations in Chart.js's scale types: * The zoom plugin calls `Scale.parse` with no index parameter. Scale's JSDoc allows this, but its TypeScript definitions did not. * The zoom plugin alters scale options' min and max. The specific types of these depend on which scale is in use, but every scale has them, so `unknown` seems appropriate --- src/scales/scale.time.js | 2 +- src/types/index.d.ts | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/scales/scale.time.js b/src/scales/scale.time.js index 6bcef6c03e6..18493746659 100644 --- a/src/scales/scale.time.js +++ b/src/scales/scale.time.js @@ -56,7 +56,7 @@ function parse(scale, input) { value = parser(value); } - // Only parse if its not a timestamp already + // Only parse if it's not a timestamp already if (!isFinite(value)) { value = typeof parser === 'string' ? adapter.parse(value, /** @type {Unit} */ (parser)) diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 65e1213dcd7..0eb9b5eb679 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -1176,6 +1176,22 @@ export interface CoreScaleOptions { * @default true */ weight: number; + /** + * User defined minimum value for the scale, overrides minimum value from data. + */ + min: unknown; + /** + * User defined maximum value for the scale, overrides maximum value from data. + */ + max: unknown; + /** + * Adjustment used when calculating the maximum data value. + */ + suggestedMin: unknown; + /** + * Adjustment used when calculating the minimum data value. + */ + suggestedMax: unknown; /** * Callback called before the update process starts. */ @@ -1316,7 +1332,7 @@ export interface Scale extends El getBasePixel(): number; init(options: O): void; - parse(raw: unknown, index: number): unknown; + parse(raw: unknown, index?: number): unknown; getUserBounds(): { min: number; max: number; minDefined: boolean; maxDefined: boolean }; getMinMax(canStack: boolean): { min: number; max: number }; getTicks(): Tick[];