diff --git a/src/marks/waffle.js b/src/marks/waffle.js index c9d8771d21..883a4a1b14 100644 --- a/src/marks/waffle.js +++ b/src/marks/waffle.js @@ -35,6 +35,7 @@ export class WaffleY extends BarY { function waffleRender(y) { return function (index, scales, values, dimensions, context) { + const {ariaLabel, href, title, ...visualValues} = values; const {unit, gap, rx, ry, round} = this; const {document} = context; const Y1 = values.channels[`${y}1`].value; @@ -86,7 +87,7 @@ function waffleRender(y) { .attr("id", (i) => `${patternId}-${i}`) .select("rect") .call(applyDirectStyles, this) - .call(applyChannelStyles, this, values) + .call(applyChannelStyles, this, visualValues) ) .call((g) => g @@ -104,6 +105,7 @@ function waffleRender(y) { ) .attr("fill", (i) => `url(#${patternId}-${i})`) .attr("stroke", this.stroke == null ? null : (i) => `url(#${patternId}-${i})`) + .call(applyChannelStyles, this, {ariaLabel, href, title}) ) .node(); }; diff --git a/test/output/waffleHref.svg b/test/output/waffleHref.svg new file mode 100644 index 0000000000..b8b5e3ad46 --- /dev/null +++ b/test/output/waffleHref.svg @@ -0,0 +1,423 @@ + + + + + 0 + 10 + 20 + 30 + 40 + 50 + 60 + 70 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + waffle 0 + + waffle 1 + + waffle 2 + + waffle 3 + + waffle 4 + + waffle 5 + + waffle 6 + + waffle 7 + + waffle 8 + + waffle 9 + + waffle 10 + + waffle 11 + + waffle 12 + + waffle 13 + + waffle 14 + + waffle 15 + + waffle 16 + + waffle 17 + + waffle 18 + + waffle 19 + + waffle 20 + + waffle 21 + + waffle 22 + + waffle 23 + + waffle 24 + + waffle 25 + + waffle 26 + + waffle 27 + + waffle 28 + + waffle 29 + + waffle 30 + + waffle 31 + + waffle 32 + + waffle 33 + + waffle 34 + + waffle 35 + + waffle 36 + + waffle 37 + + waffle 38 + + waffle 39 + + waffle 40 + + waffle 41 + + waffle 42 + + waffle 43 + + waffle 44 + + waffle 45 + + waffle 46 + + waffle 47 + + waffle 48 + + waffle 49 + + waffle 50 + + waffle 51 + + waffle 52 + + waffle 53 + + waffle 54 + + waffle 55 + + waffle 56 + + waffle 57 + + waffle 58 + + waffle 59 + + waffle 60 + + waffle 61 + + waffle 62 + + waffle 63 + + waffle 64 + + waffle 65 + + waffle 66 + + waffle 67 + + waffle 68 + + waffle 69 + + waffle 70 + + waffle 71 + + waffle 72 + + waffle 73 + + waffle 74 + + waffle 75 + + waffle 76 + + + \ No newline at end of file diff --git a/test/plots/waffle.ts b/test/plots/waffle.ts index 455efd3a4a..fdfa98a025 100644 --- a/test/plots/waffle.ts +++ b/test/plots/waffle.ts @@ -246,3 +246,21 @@ export async function waffleYGrouped() { marks: [Plot.waffleY(athletes, Plot.groupX({y: "count"}, {x: "sport", unit: 10})), Plot.ruleY([0])] }); } + +export function waffleHref() { + return Plot.plot({ + inset: 10, + marks: [ + Plot.waffleY( + {length: 77}, + { + y: 1, + fill: (d, i) => i % 7, + href: (d, i) => `/?${i}`, + title: (d, i) => `waffle ${i}`, + target: "_blank" + } + ) + ] + }); +}