Drag’n’drop revisited

I got a message from a screen-reader user of The Session recently, letting me know of a problem they were having. I love getting any kind of feedback around accessibility, so this was like gold dust to me.



They pointed out that the drag’n’drop interface for rearranging the order of tunes in a set was inaccessible.



Drag and drop



Of course! I slapped my forehead. How could I have missed this?



It had been a while since I had implemented that functionality, so before even looking at the existing code, I started to think about how I could improve the situation. Maybe I could capture keystroke events from the arrow keys and announce changes via ARIA values? That sounded a bit heavy-handed though: mess with people’s native keyboard functionality at your peril.



Then I looked at the code. That was when I realised that the fix was going to be much, much easier than I thought.



I documented my process of adding the drag’n’drop functionality back in 2016. Past me had his progressive enhancement hat on:




One of the interfaces needed for this feature was a form to re-order items in a list. So I thought to myself, ���what���s the simplest technology to enable this functionality?��� I came up with a series of select elements within a form.




Reordering



The problem was in my feature detection:




There���s a little bit of mustard-cutting going on: does the dragula object exist, and does the browser understand querySelector? If so, the select elements are hidden and the drag���n���drop is enabled.




The logic was fine, but the execution was flawed. I was being lazy and hiding the select elements with display: none. That hides them visually, but it also hides them from screen readers. I swapped out that style declaration for one that visually hides the elements, but keeps them accessible and focusable.



It was a very quick fix. I had the odd sensation of wanting to thank Past Me for making things easy for Present Me. But I don’t want to talk about time travel because if we start talking about it then we’re going to be here all day talking about it, making diagrams with straws.



I pushed the fix, told the screen-reader user who originally contacted me, and got a reply back saying that everything was working great now. Success!

 •  0 comments  •  flag
Share on Twitter
Published on April 07, 2019 11:30
No comments have been added yet.


Jeremy Keith's Blog

Jeremy Keith
Jeremy Keith isn't a Goodreads Author (yet), but they do have a blog, so here are some recent posts imported from their feed.
Follow Jeremy Keith's blog with rss.