Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ docs/.vuepress/dist
.project
.settings
.vscode
.zed
*.log
*.swp
*.stackdump
Expand Down
2 changes: 2 additions & 0 deletions docs/axes/labelling.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ Namespace: `options.scales[scaleId].title`, it defines options for the scale tit
| `align` | `string` | `'center'` | Alignment of the axis title. Possible options are `'start'`, `'center'` and `'end'`
| `text` | `string`\|`string[]` | `''` | The text for the title. (i.e. "# of People" or "Response Choices").
| `color` | [`Color`](../general/colors.md) | `Chart.defaults.color` | Color of label.
| `strokeColor` | [`Color`](../general/colors.md) | | Color of text stroke.
| `strokeWidth` | `number` | | Size of stroke width, in pixels.
| `font` | `Font` | `Chart.defaults.font` | See [Fonts](../general/fonts.md)
| `padding` | [`Padding`](../general/padding.md) | `4` | Padding to apply around scale labels. Only `top`, `bottom` and `y` are implemented.

Expand Down
2 changes: 2 additions & 0 deletions src/core/core.scale.js
Original file line number Diff line number Diff line change
Expand Up @@ -1615,6 +1615,8 @@ export default class Scale extends Element {
textAlign: titleAlign(align, position, reverse),
textBaseline: 'middle',
translation: [titleX, titleY],
strokeColor: title.strokeColor,
strokeWidth: title.strokeWidth
});
}

Expand Down
4 changes: 4 additions & 0 deletions src/types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3270,6 +3270,10 @@ export interface CartesianScaleOptions extends CoreScaleOptions {
text: string | string[];
/** Color of the axis label. */
color: Color;
/** The color of the text stroke for the axis label.*/
strokeColor?: Color;
/** The text stroke width for the axis label.*/
strokeWidth?: number;
/** Information about the axis title font. */
font: ScriptableAndScriptableOptions<Partial<FontSpec>, ScriptableCartesianScaleContext>;
/** Padding to apply around scale labels. */
Expand Down
80 changes: 80 additions & 0 deletions test/specs/core.scale.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -817,4 +817,84 @@ describe('Core.scale', function() {
}
});
});
describe('Scale Title stroke', ()=>{
function getChartWithScaleTitleStroke() {
return window.acquireChart({
type: 'line',
options: {
scales: {
x: {
type: 'linear',
title: {
display: true,
text: 'title-x',
color: '#ddd',
strokeWidth: 1,
strokeColor: '#333'
}
},
y: {
type: 'linear',
title: {
display: true,
text: 'title-y',
color: '#ddd',
strokeWidth: 2,
strokeColor: '#222'
}
}
}
}
});
}

function getChartWithoutScaleTitleStroke() {
return window.acquireChart({
type: 'line',
options: {
scales: {
x: {
type: 'linear',
title: {
display: true,
text: 'title-x',
color: '#ddd'
}
},
y: {
type: 'linear',
title: {
display: true,
text: 'title-y',
color: '#ddd'
}
}
}
}
});
}

it('should draw a scale title stroke when provided x-axis', function() {
var chart = getChartWithScaleTitleStroke();
var scale = chart.scales.x;
expect(scale.options.title.strokeColor).toEqual('#333');
expect(scale.options.title.strokeWidth).toEqual(1);
});

it('should draw a scale title stroke when provided y-axis', function() {
var chart = getChartWithScaleTitleStroke();
var scale = chart.scales.y;
expect(scale.options.title.strokeColor).toEqual('#222');
expect(scale.options.title.strokeWidth).toEqual(2);
});

it('should not draw a scale title stroke when not provided', function() {
var chart = getChartWithoutScaleTitleStroke();
var scales = chart.scales;
expect(scales.y.options.title.strokeColor).toBeUndefined();
expect(scales.y.options.title.strokeWidth).toBeUndefined();
expect(scales.x.options.title.strokeColor).toBeUndefined();
expect(scales.x.options.title.strokeWidth).toBeUndefined();
});
});
});