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

fix(Textarea): 最大文字数を超えたエラーを色以外でも表現する #5084

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

daiHash
Copy link
Contributor

@daiHash daiHash commented Nov 8, 2024

関連URL

https://smarthr.atlassian.net/browse/SHRUI-1074

概要

最大文字数を超えたエラー色とマイナス記号で表現されておりましたので、記号や色以外で表現しました。

変更内容

  • もとの表現 がマイナス(-)とスラッシュ(/)記号残り何文字、最大文字数、超えた場合表現されてましたが、支援技術で読み上げたときも含めてちょっとわかりにくいので、
     - 最大文字数 => 残り何文字(あと{n}文字)
     - 最大文字数マイナスでの表現 => 何文字超えてますの表現({n}文字超過
  • その他
     - 最大文字数を超えたエラーの場合aria-invalid=trueになっていませんでしたので、こちらも修正
     - スクリーンリーダー
      - 最大文字数がある場合input focus時にdescriptionで補足追加
      - 入力中に残り文字数または超えた場合に何文字超えたかも通知するように修正しました
    残り文字数
image

最大文字数超えたエラー
image

reference

確認方法

Storybook や Chromaticで確認できますが、storybookですとiframe内描画されますのでライブリージオンが2回読み上げてしまう問題がるようなので、スクリーンリーダーで確認する場合はsandboxで確認のほうが良さそう

@daiHash daiHash self-assigned this Nov 8, 2024
@daiHash daiHash requested a review from a team as a code owner November 8, 2024 06:55
@daiHash daiHash requested review from Qs-F, s-sasaki-0529, masuP9, maiha2, neet and schktjm and removed request for a team November 8, 2024 06:55
Copy link

pkg-pr-new bot commented Nov 8, 2024

Open in Stackblitz

pnpm add https://pkg.pr.new/kufu/smarthr-ui@5084

commit: f32fbfd

setSrCounterMessage(counterText)
}
})
}, 1000),
Copy link
Contributor Author

Choose a reason for hiding this comment

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

スクリーンリーダー読み上げようのメッセージは1秒くらい遅延しています。input入力で更新すると、連続更新された場合にスクリーンリーダーで古いカウントでも読み上げてしまう場合がりました

例えば
messageの文言をさん文字くらい消すと、最大文字数が10文字であれば、あと4文字 => あと5文字 => あと6文字 でよみあげてしまうばあいがありますため、クリーンリーダー通知メッセージ更新を遅延してます

@@ -70,16 +74,14 @@ const textarea = tv({
'aria-[invalid]:shr-border-danger',
],
counter: 'smarthr-ui-Textarea-counter shr-block shr-text-sm',
counterText: 'shr-font-bold',
counterText: 'shr-text-black',
srOnlyNotice: 'shr-sr-only',
Copy link
Collaborator

Choose a reason for hiding this comment

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

should: 使われてなさそうなので消したい

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ああっ。。残してしまっていました。。削除しました🙇‍♂️

</span>

<VisuallyHiddenText aria-live="polite" aria-atomic={true}>
Copy link
Collaborator

Choose a reason for hiding this comment

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

ask: aria-atomic={true} は紐づくラベルを一緒に読み上げてくれる理解であってますか?(必要有無は検討してもよさそうに感じました)

Copy link
Contributor Author

@daiHash daiHash Nov 8, 2024

Choose a reason for hiding this comment

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

@uknmr

aria-atomic={true} は紐づくラベルを一緒に読み上げてくれる理解であってますか?

はい、おっしゃるとおり、trueの場合はaria-atomic=trueがあるライブリージオン要素内のコンテンツが全てまたは一部のみ更新されたか関係なくライブリージオン内のすべてのテキストが読み上げられます。
すみません、aria-atomicの属性は最初に試していました実装でcountの部分のみ更新してましたので、aria-atomic={true} ですべてのテキストが読み上げるようにしてましたが、毎回全てのテキストを更新するように修正したためaria-atomic は不要(まあ、すべて更新しているのでtrue/falseでも問題なくすべてよみあげらるので)のため消しました🙇‍♂️

aria-atomic の属性がライブリージオンの要素内のテキストを、

  • aria-atomic= true すべて読み上げる
Screen.Recording.2024-11-08.at.19.22.52.mov
  • aria-atomic= false テキストの更新された部分のみ読み上げる(デフォルトがfalse)、count
    お数字のみ読み上げられる
Screen.Recording.2024-11-08.at.19.21.51.mov

@daiHash daiHash requested a review from uknmr November 8, 2024 11:03
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.

2 participants