akiran / react-slick

React carousel component
http://react-slick.neostack.com/
MIT License
11.61k stars 2.09k forks source link

New behaviour of focusOnSelect: true interferes with custom keyboard nav using child elements #2294

Open Shelagh-Lewins opened 8 months ago

Shelagh-Lewins commented 8 months ago

Version 0.27.10 introduced a new behaviour for the setting focusOnSelect. This behaviour causes a problem if you have rolled your own keyboard controls and are using slickGoTo when an element inside the slide's parent div gains focus; focus is forced up to the parent div, meaning that pressing tab again will first move focus to the inner element, but then it'll be moved back out to the parent by the custom focusOnSelect behaviour. The user can never tab to the next slide.

We have a number of Slick Slider carousels in which we built our own keyboard navigation, and the new behaviour of focusOnSelect breaks this.

I'm not sure this custom behaviour would ever add anything? Perhaps it could be reverted?

Or at the least, reading this issue might help someone else!

https://github.com/akiran/react-slick/compare/0.27.9...0.27.10

if (this.props.focusOnSelect) {
      const nodes = this.list.querySelectorAll(".slick-current");
      nodes[0] && nodes[0].focus();
}