]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Move parameter of TType in ChartMeta to first option (#10550)
authorJacco van den Berg <jaccoberg2281@gmail.com>
Wed, 3 Aug 2022 23:06:15 +0000 (01:06 +0200)
committerGitHub <noreply@github.com>
Wed, 3 Aug 2022 23:06:15 +0000 (01:06 +0200)
* move paramter of TType in ChartMeta to first option

* add missing ChartMeta change

* Add note in migration guide

docs/migration/v4-migration.md
types/index.esm.d.ts
types/tests/controllers/doughnut_meta_total.ts

index 71810e91f831bf1a3886bd8259397b6cb6c8821a..252488ca8cdd47b2b89b0f77c23835ab71ae7c41 100644 (file)
@@ -11,3 +11,6 @@ A number of changes were made to the configuration options passed to the `Chart`
 #### Specific changes
 
 * The radialLinear grid indexable and scriptable options don't decrease the index of the specified grid line anymore.
+
+#### Type changes
+* The order of the `ChartMeta` parameters have been changed from `<Element, DatasetElement, Type>` to `<Type, Element, DatasetElement>`
index 4284e2d1019e7a69af76cad7e2e6b5a37bba5464..cf2dcb1c07a8a318cffcff40ce28f060838f461b 100644 (file)
@@ -458,11 +458,9 @@ interface ChartMetaCommon<TElement extends Element = Element, TDatasetElement ex
 }
 
 export type ChartMeta<
+  TType extends ChartType = ChartType,
   TElement extends Element = Element,
   TDatasetElement extends Element = Element,
-  // TODO - V4, move this to the first parameter.
-  // When this was introduced, doing so was a breaking change
-  TType extends ChartType = ChartType,
 > = DeepPartial<
 { [key in ChartType]: ChartTypeRegistry[key]['metaExtensions'] }[TType]
 > & ChartMetaCommon<TElement, TDatasetElement>;
@@ -580,7 +578,7 @@ export class DatasetController<
 
   readonly chart: Chart;
   readonly index: number;
-  readonly _cachedMeta: ChartMeta<TElement, TDatasetElement, TType>;
+  readonly _cachedMeta: ChartMeta<TType, TElement, TDatasetElement>;
   enableOptionSharing: boolean;
   // If true, the controller supports the decimation
   // plugin. Defaults to `false` for all controllers
@@ -597,7 +595,7 @@ export class DatasetController<
   draw(): void;
   reset(): void;
   getDataset(): ChartDataset;
-  getMeta(): ChartMeta<TElement, TDatasetElement, TType>;
+  getMeta(): ChartMeta<TType, TElement, TDatasetElement>;
   getScaleForId(scaleID: string): Scale | undefined;
   configure(): void;
   initialize(): void;
@@ -633,9 +631,9 @@ export class DatasetController<
   setHoverStyle(element: TElement, datasetIndex: number, index: number): void;
 
   parse(start: number, count: number): void;
-  protected parsePrimitiveData(meta: ChartMeta<TElement, TDatasetElement, TType>, data: AnyObject[], start: number, count: number): AnyObject[];
-  protected parseArrayData(meta: ChartMeta<TElement, TDatasetElement, TType>, data: AnyObject[], start: number, count: number): AnyObject[];
-  protected parseObjectData(meta: ChartMeta<TElement, TDatasetElement, TType>, data: AnyObject[], start: number, count: number): AnyObject[];
+  protected parsePrimitiveData(meta: ChartMeta<TType, TElement, TDatasetElement>, data: AnyObject[], start: number, count: number): AnyObject[];
+  protected parseArrayData(meta: ChartMeta<TType, TElement, TDatasetElement>, data: AnyObject[], start: number, count: number): AnyObject[];
+  protected parseObjectData(meta: ChartMeta<TType, TElement, TDatasetElement>, data: AnyObject[], start: number, count: number): AnyObject[];
   protected getParsed(index: number): TParsedData;
   protected applyStack(scale: Scale, parsed: unknown[]): number;
   protected updateRangeFromParsed(
index 5a57295ce8ee9a8702c3acad0678d9ef93782ed7..da94fa0d8b0f0bf5022cabb159fdcbcb79f9802b 100644 (file)
@@ -12,5 +12,5 @@ const chart = new Chart('id', {
 
 // A cast is required because the exact type of ChartMeta will vary with
 // mixed charts
-const meta = <ChartMeta<Element, Element, 'doughnut'>>chart.getDatasetMeta(0);
+const meta = <ChartMeta<'doughnut', Element, Element>>chart.getDatasetMeta(0);
 const total = meta.total;