diff --git a/package-lock.json b/package-lock.json index ff09297..4950414 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "chartjs-chart-matrix", - "version": "1.0.1", + "version": "1.0.2", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.0.1", + "version": "1.0.2", "license": "MIT", "devDependencies": { "@rollup/plugin-commonjs": "^19.0.0", diff --git a/package.json b/package.json index e4a917e..137c2f0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "chartjs-chart-matrix", - "version": "1.0.1", + "version": "1.0.2", "description": "Chart.js module for creating matrix charts", "main": "dist/chartjs-chart-matrix.js", "module": "dist/chartjs-chart-matrix.esm.js", diff --git a/types/index.esm.d.ts b/types/index.esm.d.ts index b814b59..3f09ef5 100644 --- a/types/index.esm.d.ts +++ b/types/index.esm.d.ts @@ -1,12 +1,22 @@ -import { ControllerDatasetOptions, PointHoverOptions, PointOptions, ScriptableAndArrayOptions, ScriptableContext, ChartType, Scriptable } from 'chart.js'; +import { + Chart, + ChartType, + ChartComponent, + CommonElementOptions, + CommonHoverOptions, + ControllerDatasetOptions, + DatasetController, + Element, + ScriptableAndArrayOptions, + ScriptableContext, + VisualElement +} from 'chart.js'; +import { AnyObject } from 'chart.js/types/basic'; export interface MatrixControllerDatasetOptions extends ControllerDatasetOptions, - ScriptableAndArrayOptions>, - ScriptableAndArrayOptions> { - - width: Scriptable>, - height: Scriptable>, + ScriptableAndArrayOptions>, + ScriptableAndArrayOptions> { } export interface MatrixDataPoint { @@ -25,3 +35,35 @@ declare module 'chart.js' { } } } + +export interface MatrixProps { + x: number; + y: number; + width: number; + height: number; +} + +export type AnchorX = 'left' | 'center' | 'right'; +export type AnchorY = 'top' | 'center' | 'bottom'; +export interface MatrixOptions extends CommonElementOptions { + anchorX: AnchorX; + anchorY: AnchorY; + width: number; + height: number; +} + +export type MatrixController = DatasetController; +export const MatrixController: ChartComponent & { + prototype: MatrixController; + new (chart: Chart, datasetIndex: number): MatrixController; +}; + +export interface MatrixElement< + T extends MatrixProps = MatrixProps, + O extends MatrixOptions = MatrixOptions +> extends Element, VisualElement {} + +export const MatrixElement: ChartComponent & { + prototype: MatrixElement; + new (cfg: AnyObject): MatrixElement; +}; diff --git a/types/tests/options.ts b/types/tests/options.ts index ce55585..4acd0ce 100644 --- a/types/tests/options.ts +++ b/types/tests/options.ts @@ -1,5 +1,7 @@ -import '../index.esm'; import { Chart } from 'chart.js'; +import { MatrixController, MatrixElement } from '../index.esm'; + +Chart.register(MatrixController, MatrixElement); const chart = new Chart('test', { type: 'matrix', @@ -7,6 +9,12 @@ const chart = new Chart('test', { datasets: [{ label: 'Matrix', data: [{ x: 1, y: 1, v: 10 }], + anchorX: 'center', + anchorY: 'top', + width: 10, + height: 10, + borderWidth: 1, + hoverBorderWidth: () => 2, }] }, });