chartkick icon indicating copy to clipboard operation
chartkick copied to clipboard

Canvas accessibility options like aria-label

Open danman01 opened this issue 2 years ago • 1 comments

Hello all, I am looking at chart.js accessibility, and they say it is up the user to provide a canvas element with appropriate aria- attributes. I took a look at the various chartkick options and code and don't readily see anything related to generating the actual canvas element with something like passed-in html options:

So if I could do this, it would be ideal -- but perhaps there is a way and I am not seeing it?

<%= column_chart '...',
   canvas_html_options: { aria: { label: 'my chart title' } }
%>

Which would generate the added aria-label:

<canvas aria-label='my chart title' height='...' width='...'></canvas>

I do see we can customize the surrounding <div> with our own attributes by passing the html option ( which overrides original div, so we need to be sure to construct it carefully ), and perhaps just adding aria-* there is fine. But is it possible to access the canvas element, or will this need to be implemented?

Thanks for reading and for working on this great library!

danman01 avatar Nov 14 '23 12:11 danman01

Hi @danman01, one way to currently do this is:

<div role="img" aria-label="my chart title"><%= column_chart data %></div>

https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Img_role

ankane avatar Nov 21 '23 18:11 ankane