We are building a kanban-board-like web application that looks somehow like this:
So we have swimlanes with items in them.
Currently we have a layout like this:
<ul>
<ul class="swimlane">
<li>Item a1</li>
</ul>
<ul class="swimlane">
<li>Item b1</li>
<li>Item b2</li>
<li>Item b3</li>
</ul>
<ul class="swimlane">
<li>Item c1</li>
<li>Item c2</li>
</ul>
</ul>
So we have a list off lanes which are themselves lists of items.
Now we are trying to make the board navigation accessible by allowing table navigation from nvda. Eg: clt+alt+left
goes to the next* cell in the lane to the left.
In order to do that we looked at the aria roles grid
, row
and gridcell
.
But it seems, that these things only support row based layout but not column based ones. We don't really have rows that span all lanes. Every item can have an arbitrary height in theory.
Is there something like a column
role or a workaround to achieve a similar thing?
*
of course next is not always easy to determine, because the lanes can have a different number of items, so not every item has a left neighbour (eg. item b2
from the example)
Another solution would be to implement the table-navigation shortcuts of nvda by hand. But it seems that nvda captures these keystrokes before they reach the browser and my application. Would there be a way around that?
Third solution would be to use somehow similar shortcuts than nvda. But we would like to avoid that.