Keyboard Navigation
About this document: Outline FOLIO keyboard shortcuts and process for app POs/Devs to implement keyboard shortcuts.
Platform-wide keyboard shortcuts (if using standard stripes-components)
Action | Keyboard shortcut |
---|---|
Navigate main toolbar | Tab / Shift + Tab |
Open a menu dropdown | Enter |
Navigate menu dropdown | up and down arrows (To be implemented with STCOR-382 and STCOR-383 for main toolbar) |
Select an item in a menu dropdown | Enter |
Navigate the entire Search and Filter pane | Tab |
Select/Un-select checkbox filters | Spacebar |
Reset all or Reset a filter | Spacebar |
Expand / Collapse filter | Spacebar |
Go to the Results List pane (or go to the first result) | To be implemented STRIPES-662 |
Navigate the results list | Tab / Shift + Tab |
Select a result/View result in third pane | |
Access Tags pane | Focus on Tag icon and hit Enter (Will implement requirement to move focus to Tags pane when Enter is hit) |
View Record: Navigate result | Tab/Shift + Tab and up/down arrows |
View Record: Expand/Collapse accordion | Enter or Spacebar |
View Record: Any action/button | Enter or Spacebar |
Create/Edit Record: Navigate fields | Tab / Shift + Tab |
Create/Edit Record: Expand / Collapse accordion | Spacebar |
Create/Edit Record: Navigate by accordion | Tab / Shift + Tab or up/down arrows |
Create/Edit Record: Save / Cancel | Spacebar (Will implement requirement to support hitting Enter key UIU-1252) |
Create/Edit Record: Add a service point, Assign permission/proxy/sponsor, Add address, and Reset password email. In general any action/button on the Edit record. | Spacebar (Will implement requirement to support hitting Enter key too - UIU-1256) |
Activate a link | Enter |
Select/Unselect any checkbox or radio button | Spacebar |
Cancel any changes/updates | esc |
Close a modal window | esc |
Copy | ctrl + c |
Cut | ctrl + x |
Paste | ctrl + v |
Find | ctrl + f |
Platform-wide keyboard shortcuts (each app must implement)
Action | Keyboard shortcut |
---|---|
Create new record (focus must be on any element on the Users app) | alt + n |
Expand all accordions on detail record (focus must be on any element on the detail record) | cmd / ctrl + alt + b |
Collapse all accordions on detail record (focus must be on any element on the detail record) | cmd / ctrl + alt + g |
Edit selected detail record (focus must be on any element on the detail record) | cmd / ctrl + alt + e |
Save edit / new form changes (focus must be on any element on the detail record) | cmd / ctrl + s |
Go to Search & Filter pane (aka first pane) | cmd / ctrl + alt + h |
View shortcuts list | cmd/ctrl + alt + k |
Duplicate a record | alt + c |
Export results (csv) | TBD |
Delete a record | TBD |
Add a repeatable field | TBD |
Delete a repeatable field | TBD |
Go to Results List pane (aka second pane) | TBD - STRIPES-651 |
Go to Result pane (aka third pane) | TBD - STRIPES-652 |
Go to Results List pane header dropdown | TBD |
Go to Result pane header dropdown | TBD |
Go to Tags pane (aka fourth pane) | TBD |
App specific keyboard shortcut Implementation
What POs need to know
- Do not get shortcut key happy
- If your app requires 10+ shortcut keys outside of the platform wide ones described above then there may be a UX issue that needs to be addressed. Shortcut keys should be used to streamline workflows but the hope is the UX supports this and shortcut keys are a complement. Also we want to minimize the number of shortcut keys to minimize the risk of conflict with browser/screenreader/and operating system keys.
- POs should have someone test Platform-wide keyboard shortcuts (if using standard stripes-components) are functional on his/her app(s).
- Overall for any shortcut implemented for your app, please have someone test to verify implementation.
Questions to ask SIGs when considering app-specific keyboard shortcuts
- Ask SIG members to describe repeated actions/workflows. Then ask yourself - can a keyboard shortcut streamline the described action/workflow?
- Is there an action that is cumbersome that a keyboard shortcut can address?
Keyboard shortcut requirements
- Stripes-force team will create user stories that POs can clone to support platform-wide keyboard shortcuts that each app must implement.
- If your app requires a shortcut then
- Write a requirement that describes the action it should execute and where keyboard focus should be when executing action AND where keyboard focus should be once action is executed.
- Work with your development team to define keyboard shortcut combination. Team needs to make sure that combination does not conflict with browser/screenreader/and operating system keys.
- Review this document to ensure the shortcut to be implemented does not conflict with platform-wide keyboard shortcuts.
- After implementation then have users Test!!!!
- After testing, document your shortcut keys on a To be created page that will list all apps' shortcut keys.
Defining keyboard shortcuts - Best practices
- Keep it Simple
- Avoid using the following characters for shortcut keys: @ {} [] \ ~ | ^ ' < >
- Avoid case-sensitive letters
- Ask SIG(s) to document (or provide links) what keyboard shortcuts are used in current system. If possible, try to implement a similar/same shortcut to support a familiar user experience.
- Think of the user workflow when defining keys. For example, if a user takes an action and it is typically followed by another action then the shortcuts should have a similar keyboard shortcut pattern.
- You must define keyboard shortcuts for MacOS and Windows. For MacOS - use Command + [] and avoid Control.
- Keyboard shortcut pattern:
- Primary actions keyboard shortcut pattern: cmd / crtl + [letter, if possible the first character in the action name, for example cmd /ctrl+s = Save record]
- Secondary actions keyboard shortcut pattern: cmd / ctrl + alt + [letter, if possible the first character in the action name, for example cmd/ctrl + alt + h = Go to Search & Filter pane
FRONTEND Developer Information: Keyboard shortcuts modal implementation
There is an API! https://github.com/folio-org/stripes-components/tree/master/lib/Commander. Also, keyboard shortcuts will be displayed for each app in a modal, accessed from the app menu or via the shortcut key combination cmd/ctrl + alt + k. The below guidelines should be applied to achieve consistency across apps.
Guideline 1 - Presentation of shortcut key combinations in the modal
Shortcut key combinations should be presented in Camel Case with spaces between the components.
Shortcut key combination example | Correct or incorrect? |
---|---|
Ctrl + Alt + E | correct |
Ctrl+alt+e | incorrect |
ctrl + alt + e | incorrect |
Guideline 2 - Presentation of shortcut actions/descriptions in the modal
Shortcuts should be described and ordered as per the below list of actions, to achieve consistency across applications.
If a shortcut is not relevant to an app it should be omitted.
A shortcut can be renamed to make it more relevant. For example in eHoldings "Create a new record" is renamed to "Create a new custom package or title record".
1. Create a new record
2. Edit a record
3. Save a record
4. Duplicate a record
5. Expand all accordions
6. Collapse all accordions
7. Expand or collapse an accordion
8. Go to Search & filter pane
9. Open keyboard shortcuts modal
10. Close a modal or pop-up
11. Copy
12. Cut
13. Paste
14. Find
Guideline 3 - Display of app specific shortcuts
App specific shortcuts should be displayed at the top of the list, or inserted into the list at a point where they make most sense.