deseretdigital / dayzed

Primitives to build simple, flexible, WAI-ARIA compliant React date-picker components.
https://dayzed.netlify.app
MIT License
660 stars 27 forks source link

Unable to navigate using arrow keys #2

Closed knitcodemonkey closed 6 years ago

knitcodemonkey commented 6 years ago

Arrow keys are a very nice feature when navigating through something with as many elements as a calendar.

mkartchner994 commented 6 years ago

Looks like you have addressed this in the examples in PR https://github.com/deseretdigital/dayzed/pull/4, and I went ahead and merged it. Great work!

Would we want to add this functionality as a part of the dazyed library? Or do we just want to suggest that users implement this in some fashion on their side? I think I would prefer the second option, as the example shows a great way to add it, but leaves it up to the users to implement it in a way that will work best for their situation - Example: maybe down arrow jumps 2 weeks ahead instead of one?

knitcodemonkey commented 6 years ago

I think the arrow key implementation will be determined by the user of the package. Showing them how to implement it should be enough.

SimeonC commented 3 years ago

Sorry to resurrect a nearly 4 year old thread, I was recently starting to implement this like in the example and I stumbled across the official spec for aria compatible keyboard navigation here https://www.w3.org/TR/wai-aria-practices/examples/dialog-modal/datepicker-dialog.html.

In implementing this I have a (soon to be) 300 line onKeyDown handler function + extras, as there's a standard now would you be interested in adding this to the main library now?

I've actually struggled with a couple of things that probably would be easier if it was inside of useDayzed code rather than integrating using the exposed functions, specifically the "next/prev month" interactions;

One other thing I'm having problems with that would be easier with more access to dayzed internals is that all dates should be tabindex="-1" except the currently selected date or today. (I think for this ranges/multiple selections would all be focusable with correct aria labels)