Skip to content

Commit

Permalink
Enable scriptable element chart options (#9012)
Browse files Browse the repository at this point in the history
  • Loading branch information
etimberg authored May 1, 2021
1 parent ea7b8cb commit 49e7eda
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 11 deletions.
23 changes: 12 additions & 11 deletions types/index.esm.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -604,7 +604,7 @@ export interface DatasetControllerChartComponent extends ChartComponent {
};
}

export interface Defaults extends CoreChartOptions<ChartType>, ElementChartOptions, PluginChartOptions<ChartType> {
export interface Defaults extends CoreChartOptions<ChartType>, ElementChartOptions<ChartType>, PluginChartOptions<ChartType> {

scale: ScaleOptionsByType;
scales: {
Expand Down Expand Up @@ -641,7 +641,7 @@ export interface Defaults extends CoreChartOptions<ChartType>, ElementChartOptio
export type Overrides = {
[key in ChartType]:
CoreChartOptions<key> &
ElementChartOptions &
ElementChartOptions<key> &
PluginChartOptions<key> &
DatasetChartOptions<ChartType> &
ScaleChartOptions<key> &
Expand Down Expand Up @@ -1887,16 +1887,17 @@ export const BarElement: ChartComponent & {
new (cfg: AnyObject): BarElement;
};

export interface ElementOptionsByType {
arc: ArcOptions & ArcHoverOptions;
bar: BarOptions & BarHoverOptions;
line: LineOptions & LineHoverOptions;
point: PointOptions & PointHoverOptions;
}
export interface ElementChartOptions {
elements: Partial<ElementOptionsByType>;
export interface ElementOptionsByType<TType extends ChartType> {
arc: ScriptableAndArrayOptions<ArcOptions & ArcHoverOptions, ScriptableContext<TType>>;
bar: ScriptableAndArrayOptions<BarOptions & BarHoverOptions, ScriptableContext<TType>>;
line: ScriptableAndArrayOptions<LineOptions & LineHoverOptions, ScriptableContext<TType>>;
point: ScriptableAndArrayOptions<PointOptions & PointHoverOptions, ScriptableContext<TType>>;
}

export type ElementChartOptions<TType extends ChartType = ChartType> = {
elements: ElementOptionsByType<TType>
};

export class BasePlatform {
/**
* Called at chart construction time, returns a context2d instance implementing
Expand Down Expand Up @@ -3321,7 +3322,7 @@ export type ScaleChartOptions<TType extends ChartType = ChartType> = {

export type ChartOptions<TType extends ChartType = ChartType> = DeepPartial<
CoreChartOptions<TType> &
ElementChartOptions &
ElementChartOptions<TType> &
PluginChartOptions<TType> &
DatasetChartOptions<TType> &
ScaleChartOptions<TType> &
Expand Down
49 changes: 49 additions & 0 deletions types/tests/elements/scriptable_element_options.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { Chart } from '../../index.esm';

const chart = new Chart('id', {
type: 'line',
data: {
labels: [],
datasets: []
},
options: {
elements: {
line: {
borderWidth: () => 2,
},
point: {
pointStyle: (ctx) => 'star',
}
}
}
});

const chart2 = new Chart('id', {
type: 'bar',
data: {
labels: [],
datasets: []
},
options: {
elements: {
bar: {
borderWidth: (ctx) => 2,
}
}
}
});

const chart3 = new Chart('id', {
type: 'doughnut',
data: {
labels: [],
datasets: []
},
options: {
elements: {
arc: {
borderWidth: (ctx) => 3,
}
}
}
});

0 comments on commit 49e7eda

Please sign in to comment.