From 14c10afcc366ad6792a849a31b9a2d24bc4b62ae Mon Sep 17 00:00:00 2001 From: Roy Schut Date: Wed, 26 May 2021 17:34:46 +0200 Subject: [PATCH] feat(project): make all accessible by keyboard --- src/components/Button/Button.module.scss | 4 +++ src/components/Card/Card.module.scss | 5 +++- src/components/Card/Card.tsx | 14 +++++++++-- src/components/Dropdown/Dropdown.module.scss | 4 ++- src/components/Dropdown/Dropdown.tsx | 4 +-- .../Filter/__snapshots__/Filter.test.tsx.snap | 5 ++++ .../__snapshots__/FilterModal.test.tsx.snap | 1 + src/components/Header/Header.tsx | 2 +- .../Header/__snapshots__/Header.test.tsx.snap | 1 + .../IconButton/IconButton.module.scss | 1 + src/components/IconButton/IconButton.tsx | 14 +++++++++-- .../__snapshots__/IconButton.test.tsx.snap | 1 + src/components/Layout/Layout.tsx | 9 +++++-- .../Layout/__snapshots__/Layout.test.tsx.snap | 4 +++ .../MenuButton/MenuButton.module.scss | 1 + src/components/MenuButton/MenuButton.tsx | 7 +++--- .../__snapshots__/MenuButton.test.tsx.snap | 1 + .../Root/__snapshots__/Root.test.tsx.snap | 4 +++ src/components/Shelf/Shelf.module.scss | 1 + src/components/Shelf/Shelf.tsx | 25 +++++++++++-------- src/components/Sidebar/Sidebar.tsx | 8 +++--- .../__snapshots__/SideBar.test.tsx.snap | 3 +++ src/components/TileDock/TileDock.tsx | 3 +-- .../VirtualizedGrid.module.scss | 6 +++++ .../VirtualizedGrid/VirtualizedGrid.scss | 3 --- .../VirtualizedGrid/VirtualizedGrid.tsx | 5 +++- 26 files changed, 102 insertions(+), 34 deletions(-) create mode 100644 src/components/VirtualizedGrid/VirtualizedGrid.module.scss delete mode 100644 src/components/VirtualizedGrid/VirtualizedGrid.scss diff --git a/src/components/Button/Button.module.scss b/src/components/Button/Button.module.scss index 50b8384fb..5b3860412 100644 --- a/src/components/Button/Button.module.scss +++ b/src/components/Button/Button.module.scss @@ -30,6 +30,7 @@ @media (hover: hover) and (pointer: fine) { &:hover:not(.active), + &:focus:not(.active), &:active { z-index: 1; background-color: rgba(variables.$black, 0.8); @@ -37,5 +38,8 @@ transform: scale(1.1); opacity: 1; } + &:focus.active { + transform: scale(1.1); + } } } diff --git a/src/components/Card/Card.module.scss b/src/components/Card/Card.module.scss index 5c00157c5..df7fa75f3 100644 --- a/src/components/Card/Card.module.scss +++ b/src/components/Card/Card.module.scss @@ -6,8 +6,11 @@ cursor: pointer; transition: transform 0.2s ease-out, -webkit-transform 0.2s ease-out; + // @media (hover: hover) and (pointer: fine) { + &:focus, &:hover { - z-index: 10; + z-index: 1; + outline: none; transform: scale(1.05); & .poster { diff --git a/src/components/Card/Card.tsx b/src/components/Card/Card.tsx index 35281af58..ed9222574 100644 --- a/src/components/Card/Card.tsx +++ b/src/components/Card/Card.tsx @@ -1,4 +1,4 @@ -import React, { memo } from 'react'; +import React, { KeyboardEvent, memo } from 'react'; import classNames from 'classnames'; import { formatDurationTag } from '../../utils/formatting'; @@ -39,7 +39,17 @@ function Card({ }; return ( -
+
+ (event.key === 'Enter' || event.key === ' ') && !disabled && onClick && onClick() + } + role="button" + aria-label={`Play ${title}`} + >
{featured ? title : ''}
diff --git a/src/components/Dropdown/Dropdown.module.scss b/src/components/Dropdown/Dropdown.module.scss index 760630ac1..7cbe92222 100644 --- a/src/components/Dropdown/Dropdown.module.scss +++ b/src/components/Dropdown/Dropdown.module.scss @@ -65,7 +65,9 @@ $select-focus: theme.$primary-color; background-image: linear-gradient(to top, #ddd, #eee 33%); cursor: not-allowed; } - &:hover { + &:hover, + &:focus { + outline: none; border-color: $select-focus; } diff --git a/src/components/Dropdown/Dropdown.tsx b/src/components/Dropdown/Dropdown.tsx index 45c3e6e3f..309aaafdc 100644 --- a/src/components/Dropdown/Dropdown.tsx +++ b/src/components/Dropdown/Dropdown.tsx @@ -15,8 +15,8 @@ type Props = { const Dropdown: React.FC = ({ name, value, defaultLabel, options, onClick, onChange, optionsStyle }: Props) => { return ( -
- diff --git a/src/components/Filter/__snapshots__/Filter.test.tsx.snap b/src/components/Filter/__snapshots__/Filter.test.tsx.snap index d88059edf..fe2c69da4 100644 --- a/src/components/Filter/__snapshots__/Filter.test.tsx.snap +++ b/src/components/Filter/__snapshots__/Filter.test.tsx.snap @@ -12,6 +12,7 @@ exports[` renders Filter 1`] = ` aria-label="close menu" class="iconButton" role="button" + tabindex="0" >