WICG / spatial-navigation

Directional focus navigation with arrow keys
https://drafts.csswg.org/css-nav-1/
Other
216 stars 38 forks source link

Intercept nav events and and prevent consequent logic from unfolding? #153

Open jayarjo opened 5 years ago

jayarjo commented 5 years ago

Is there a way to intercept nav events and prevent consequent logic from unfolding? Obviously one can intercept keydown, but that would be cumbersome, would be great if nav events themselves behaved similarly.

jihyerish commented 5 years ago

@jayarjo Thanks for your feedback! Yes, as you pointed out, there wasn't the procedure about preventing the navigation events in the previous polyfill. I updated the polyfill with https://github.com/WICG/spatial-navigation/pull/156, and now you can prevent the events.

You can see how it works in this demo.

jayarjo commented 5 years ago

@jihyerish great that there's progress on this! But do you actually reset those global flags back to initial value anywhere? Or they are not meant to?

jihyerish commented 5 years ago

@jayarjo Yes, the flags are used for defining the prevent default behavior for the navigation events. Those flags are set as true when the events are triggered. And if those flags are set as true, in the processing model flows to the prevented behavior of the corresponding events.

For example, in the polyfill code line 316 -319, it follows the prevented behavior of navbeforescroll.

      if (!navbeforescrollPrevented) {
        moveScroll(container, dir);
        return true;
      }