Skip to content

Commit

Permalink
Add check to colors plugin if defaults are set (#11927)
Browse files Browse the repository at this point in the history
  • Loading branch information
LeeLenaleee authored Oct 13, 2024
1 parent 5d2dfbe commit 3f2968c
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 2 deletions.
14 changes: 12 additions & 2 deletions src/plugins/plugin.colors.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {DoughnutController, PolarAreaController} from '../index.js';
import {DoughnutController, PolarAreaController, defaults} from '../index.js';
import type {Chart, ChartDataset} from '../types.js';

export interface ColorsPluginOptions {
Expand Down Expand Up @@ -87,6 +87,10 @@ function containsColorsDefinition(
return descriptor && (descriptor.borderColor || descriptor.backgroundColor);
}

function containsDefaultColorsDefenitions() {
return defaults.borderColor !== 'rgba(0,0,0,0.1)' || defaults.backgroundColor !== 'rgba(0,0,0,0.1)';
}

export default {
id: 'colors',

Expand All @@ -106,7 +110,13 @@ export default {
} = chart.config;
const {elements} = chartOptions;

if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || (elements && containsColorsDefinitions(elements)))) {
const containsColorDefenition = (
containsColorsDefinitions(datasets) ||
containsColorsDefinition(chartOptions) ||
(elements && containsColorsDefinitions(elements)) ||
containsDefaultColorsDefenitions());

if (!options.forceOverride && containsColorDefenition) {
return;
}

Expand Down
34 changes: 34 additions & 0 deletions test/specs/plugin.colors.tests.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
describe('Plugin.colors', () => {
describe('auto', jasmine.fixture.specs('plugin.colors'));

describe('Plugin.colors.chartDefaults', () => {
beforeAll(() => {
Chart.defaults.backgroundColor = ['green', 'yellow'];
});

afterAll(() => {
Chart.defaults.backgroundColor = 'rgba(0,0,0,0.1)';
});

it('should not use colors plugin when chart defaults are given', () => {
const chart = window.acquireChart({
type: 'bar',
data: {
datasets: [{
data: [1, 10],
label: 'dataset1'
}],
labels: ['label1', 'label2']
},
options: {
plugins: {
colors: {
enabled: true
}
}
}
});

const meta = chart.getDatasetMeta(0);
expect(meta.data[0].options.backgroundColor).toBe('green');
expect(meta.data[1].options.backgroundColor).toBe('yellow');
});
});
});

0 comments on commit 3f2968c

Please sign in to comment.