Skip to content

Commit 09edfec

Browse files
authored
axis marks’ ariaLabel option (#2162)
* refactor the axis marks’ ariaLabel option * concrete use case: a continuous horizontal crosshair
1 parent 0032c11 commit 09edfec

File tree

3 files changed

+104
-8
lines changed

3 files changed

+104
-8
lines changed

src/marks/axis.js

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ function axisKy(
8989
labelAnchor,
9090
labelArrow,
9191
labelOffset,
92+
ariaLabel = `${k}-axis`,
9293
...options
9394
}
9495
) {
@@ -107,6 +108,7 @@ function axisKy(
107108
tickPadding,
108109
tickRotate,
109110
x,
111+
ariaLabel,
110112
...options
111113
})
112114
: null,
@@ -126,6 +128,7 @@ function axisKy(
126128
marginRight,
127129
marginBottom,
128130
marginLeft,
131+
ariaLabel,
129132
...options
130133
})
131134
: null,
@@ -150,7 +153,7 @@ function axisKy(
150153
}
151154
this.dy = cla === "top" ? 3 - marginTop : cla === "bottom" ? marginBottom - 3 : 0;
152155
this.dx = anchor === "right" ? clo : -clo;
153-
this.ariaLabel = `${k}-axis label`;
156+
this.ariaLabel = `${ariaLabel} label`;
154157
return {
155158
facets: [[0]],
156159
channels: {text: {value: [formatAxisLabel(k, scale, {anchor, label, labelAnchor: cla, labelArrow})]}}
@@ -190,6 +193,7 @@ function axisKx(
190193
labelAnchor,
191194
labelArrow,
192195
labelOffset,
196+
ariaLabel = `${k}-axis`,
193197
...options
194198
}
195199
) {
@@ -208,6 +212,7 @@ function axisKx(
208212
tickPadding,
209213
tickRotate,
210214
y,
215+
ariaLabel,
211216
...options
212217
})
213218
: null,
@@ -227,6 +232,7 @@ function axisKx(
227232
marginRight,
228233
marginBottom,
229234
marginLeft,
235+
ariaLabel,
230236
...options
231237
})
232238
: null,
@@ -248,7 +254,7 @@ function axisKx(
248254
this.lineAnchor = anchor;
249255
this.dy = anchor === "top" ? -clo : clo;
250256
this.dx = cla === "right" ? marginRight - 3 : cla === "left" ? 3 - marginLeft : 0;
251-
this.ariaLabel = `${k}-axis label`;
257+
this.ariaLabel = `${ariaLabel} label`;
252258
return {
253259
facets: [[0]],
254260
channels: {text: {value: [formatAxisLabel(k, scale, {anchor, label, labelAnchor: cla, labelArrow})]}}
@@ -275,6 +281,7 @@ function axisTickKy(
275281
insetRight = inset,
276282
dx = 0,
277283
y = k === "y" ? undefined : null,
284+
ariaLabel,
278285
...options
279286
}
280287
) {
@@ -283,7 +290,7 @@ function axisTickKy(
283290
k,
284291
data,
285292
{
286-
ariaLabel: `${k}-axis tick`,
293+
ariaLabel: `${ariaLabel} tick`,
287294
ariaHidden: true
288295
},
289296
{
@@ -318,6 +325,7 @@ function axisTickKx(
318325
insetBottom = inset,
319326
dy = 0,
320327
x = k === "x" ? undefined : null,
328+
ariaLabel,
321329
...options
322330
}
323331
) {
@@ -326,7 +334,7 @@ function axisTickKx(
326334
k,
327335
data,
328336
{
329-
ariaLabel: `${k}-axis tick`,
337+
ariaLabel: `${ariaLabel} tick`,
330338
ariaHidden: true
331339
},
332340
{
@@ -363,6 +371,7 @@ function axisTextKy(
363371
insetLeft = inset,
364372
insetRight = inset,
365373
dx = 0,
374+
ariaLabel,
366375
y = k === "y" ? undefined : null,
367376
...options
368377
}
@@ -371,7 +380,7 @@ function axisTextKy(
371380
textY,
372381
k,
373382
data,
374-
{ariaLabel: `${k}-axis tick label`},
383+
{ariaLabel: `${ariaLabel} tick label`},
375384
{
376385
facetAnchor,
377386
frameAnchor,
@@ -410,14 +419,15 @@ function axisTextKx(
410419
insetBottom = inset,
411420
dy = 0,
412421
x = k === "x" ? undefined : null,
422+
ariaLabel,
413423
...options
414424
}
415425
) {
416426
return axisMark(
417427
textX,
418428
k,
419429
data,
420-
{ariaLabel: `${k}-axis tick label`},
430+
{ariaLabel: `${ariaLabel} tick label`},
421431
{
422432
facetAnchor,
423433
frameAnchor,
@@ -466,10 +476,12 @@ function gridKy(
466476
x = null,
467477
x1 = anchor === "left" ? x : null,
468478
x2 = anchor === "right" ? x : null,
479+
ariaLabel = `${k}-grid`,
480+
ariaHidden = true,
469481
...options
470482
}
471483
) {
472-
return axisMark(ruleY, k, data, {ariaLabel: `${k}-grid`, ariaHidden: true}, {y, x1, x2, ...gridDefaults(options)});
484+
return axisMark(ruleY, k, data, {ariaLabel, ariaHidden}, {y, x1, x2, ...gridDefaults(options)});
473485
}
474486

475487
function gridKx(
@@ -481,10 +493,12 @@ function gridKx(
481493
y = null,
482494
y1 = anchor === "top" ? y : null,
483495
y2 = anchor === "bottom" ? y : null,
496+
ariaLabel = `${k}-grid`,
497+
ariaHidden = true,
484498
...options
485499
}
486500
) {
487-
return axisMark(ruleX, k, data, {ariaLabel: `${k}-grid`, ariaHidden: true}, {x, y1, y2, ...gridDefaults(options)});
501+
return axisMark(ruleX, k, data, {ariaLabel, ariaHidden}, {x, y1, y2, ...gridDefaults(options)});
488502
}
489503

490504
function gridDefaults({

0 commit comments

Comments
 (0)