Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FE] 접근성 개선 작업인 모달, 포커스, 스크린리더 개선을 진행한다. #814

Merged
merged 15 commits into from
Oct 23, 2024

Conversation

ooherin
Copy link
Contributor

@ooherin ooherin commented Oct 17, 2024

❗ Issue

✨ 구현한 기능

모달 접근성 개선

  • 기존 모달은 켜져도 focus 가 가지 않는 문제가 있었습니다. 이를 FocusTrap 을 사용하여 모달이 켜지면, 해당 모달의 인풋, 버튼 같은 접근 요소에서만 포커스가 되고 자동으로 포커스가 돌도록 해주었습니다. 또한 스크린 리더기로도 모달을 x 버튼을 눌러 끌 수 있도록 해주었습니다.

체크리스트 생성, 편집 페이지

  • 기존에는 불필요한 요소의 포커스 및 메세지 부재, 스크린 리더로 상호작용 불가 등 다양한 문제점이 있었습니다. 이를 해결하기 위해 statusMessagevisually-hidden 속성을 주어, 적절한 메세지가 전달되도록 하였습니다. 또한 tabIndex 를 사용하여 포커스가 타겟 요소에만 가도록 했습니다. statusMessage 의 경우 응집성을 위해 보통 클릭 이벤트를 관리하는 hook 에서 처리하도록 하였습니다.

탭 키보드 접근성 개선

  • 저희 탭의 경우 모바일 기준으로 제작되어, 데스크톱에서는 보이지 않는 탭으로 이동할 수 있는 방법이 딱히 없었습니다. 사실 이것을 개선하면, 스크린 리더 접근성과 상충되어 고민했으나, 데스크톱 사용자를 위한 키보드 접근성이 우선순위가 높다고 판단해 진행했습니다. Tab 컴포넌트 안에 키보드 이벤트로 탭을 이동할 수 있게 했으며, 현재 탭의 위치에 따라 자동으로 탭이 옆으로 스크롤 되게 해주었습니다.

로그인, 회원가입 키보드 접근성 개선

  • 기존에는 디자인 특성상 auth 페이지에서 엔터로 submit 을 할 수 없었지만, 이는 키보드 접근성이 낮은 것 같아 해당 기능을 추가했습니다.

관련 영상

질문 o / x before 질문 o / x after
before.mp4
after.mp4
옵션 before 옵션 after
before.mp4
after.mp4
지도 모달 before 지도 모달 after
before.mp4
after.mp4
질문 선택 before 질문 선택 after
before.mp4
after.mp4
탭 키보드 접근성 before 탭 키보드 접근성 after
before.mov
after.mov

📢 논의하고 싶은 내용

저희 디테일 페이지의 경우 스크린 리더 접근성이 조금 떨어지는 것 같다는 생각이 들었습니다. (텍스트를 분리해서 읽는 등) 다음에 시간이 된다면 이에 대해 추가 작업을 논의해도 좋을 것 같습니다.

🎸 기타

Copy link

@ooherin ooherin marked this pull request as draft October 17, 2024 02:23
@ooherin ooherin force-pushed the feat/777-accessibility branch from 456fa11 to f7ff7e2 Compare October 22, 2024 01:32
Copy link

@ooherin ooherin force-pushed the feat/777-accessibility branch from 476654e to 373934e Compare October 22, 2024 07:14
@ooherin ooherin marked this pull request as ready for review October 22, 2024 07:14
Copy link

@ooherin ooherin marked this pull request as draft October 22, 2024 07:16
Copy link

@ooherin ooherin force-pushed the feat/777-accessibility branch from a897aff to 1edc28a Compare October 22, 2024 17:37
Copy link

@ooherin ooherin marked this pull request as ready for review October 22, 2024 17:51
Copy link

Copy link

Copy link
Contributor

@skiende74 skiende74 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다. 영상으로되어있으니 한눈에 보기가 좋네요

return (
<S.VisibleContainer>
<S.VisibleContainer role="navigation" aria-label="탭 내비게이션">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nav 태그를 사용하면 role이 자동으로 들어가기때문에 또넣어줄 필요가 없습니다.

const { id, name, className } = tab;
const isCompleted = 'isCompleted' in tab ? tab.isCompleted : undefined;

return (
<TabButton
ref={el => (tabRefs.current[index - 1] = el)}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이렇게도 되는줄 몰랐네요

@skiende74
Copy link
Contributor

"질문 선택 after" 12초부분에서, 하나 선택시 "11개중 x개 선택됨" 이 뜨고 "~~~ 선택되었습니다" 가 뜨는데
"~~~ 선택되었습니다"가 먼저뜨고 "11개중 x개 선택됨"이 뜨는게 더좋지않을까요?

11개중 x개 선택됨에 아마 assertive or alert가 되어있을거같은데 polite로 해주면 될거같습니다.

Copy link
Contributor

@healim01 healim01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~ 드디어 모든 접근성 개선이 끝났네요

@healim01 healim01 changed the title [FE] 접근성 개선 작업을 진행한다. [FE] 접근성 개선 작업인 모달, 포커스, 스크린리더 개선을 진행한다. Oct 23, 2024
@healim01 healim01 merged commit b8dc5f9 into dev-fe Oct 23, 2024
3 checks passed
@healim01 healim01 deleted the feat/777-accessibility branch October 23, 2024 03:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants