From 2cb8d6552250257513a4b27b905ec5cd7cde63fe Mon Sep 17 00:00:00 2001 From: ayush-chauhan233 Date: Mon, 10 Mar 2025 20:38:57 +0530 Subject: [PATCH] [MM-61604]: Fixed aria-expanded not correctly announced by screen reader (#30262) * [MM-61604]: Fixed aria-expanded not correctly announced by screen reader * [MM-61604]: Translation changes --- .../components/emoji_picker_skin.tsx | 139 +++++++++--------- webapp/channels/src/i18n/en.json | 1 + 2 files changed, 74 insertions(+), 66 deletions(-) diff --git a/webapp/channels/src/components/emoji_picker/components/emoji_picker_skin.tsx b/webapp/channels/src/components/emoji_picker/components/emoji_picker_skin.tsx index 5e31a93c3f..45720d034c 100644 --- a/webapp/channels/src/components/emoji_picker/components/emoji_picker_skin.tsx +++ b/webapp/channels/src/components/emoji_picker/components/emoji_picker_skin.tsx @@ -112,12 +112,62 @@ export class EmojiPickerSkin extends React.PureComponent { this.setState({pickerExtended: true}); }; - extended() { + skinTonePickerButton() { + const {pickerExtended} = this.state; + + const expandButtonLabel = this.props.intl.formatMessage({ + id: 'emoji_picker.skin_tone', + defaultMessage: 'Skin tone', + }); const closeButtonLabel = this.props.intl.formatMessage({ id: 'emoji_skin.close', defaultMessage: 'Close skin tones', }); - const choices = skinTones.map((skinTone) => { + + const emoji = skinTones.find(({value}) => value === this.props.userSkinTone)!.emoji; + + const buttonClassName = classNames('style--none', {'skin-tones__close-icon': pickerExtended, 'skin-tones__icon skin-tones__expand-icon': !pickerExtended}); + const spriteClassName = classNames('emojisprite', `emoji-category-${emoji?.category}`, `emoji-${emoji?.unified.toLowerCase()}`); + + const handleOnClick = () => { + if (pickerExtended) { + this.hideSkinTonePicker(this.props.userSkinTone); + } else { + this.showSkinTonePicker(); + } + }; + + return ( + + ); + } + + choices() { + return skinTones.map((skinTone) => { const skin = skinTone.value; const emoji = skinTone.emoji; const spriteClassName = classNames('emojisprite', `emoji-category-${emoji.category}`, `emoji-${emoji.unified.toLowerCase()}`); @@ -138,68 +188,6 @@ export class EmojiPickerSkin extends React.PureComponent { ); }); - return ( - <> -
- -
- -
-
-
- {choices} -
- - ); - } - - collapsed() { - const emoji = skinTones.find(({value}) => value === this.props.userSkinTone)!.emoji; - const spriteClassName = classNames('emojisprite', `emoji-category-${emoji?.category}`, `emoji-${emoji?.unified.toLowerCase()}`); - const expandButtonLabel = this.props.intl.formatMessage({ - id: 'emoji_picker.skin_tone', - defaultMessage: 'Skin tone', - }); - - return ( - - - - ); } render() { @@ -211,10 +199,29 @@ export class EmojiPickerSkin extends React.PureComponent { >
- {this.state.pickerExtended ? this.extended() : this.collapsed() } + {this.skinTonePickerButton()} + {this.state.pickerExtended && + <> +
+ +
+
+ {this.choices()} +
+ }
diff --git a/webapp/channels/src/i18n/en.json b/webapp/channels/src/i18n/en.json index 4ef2e24ca1..0bdd607906 100644 --- a/webapp/channels/src/i18n/en.json +++ b/webapp/channels/src/i18n/en.json @@ -3745,6 +3745,7 @@ "emoji_picker.search_emoji": "Search for an emoji", "emoji_picker.searchResults": "Search Results", "emoji_picker.skin_tone": "Skin tone", + "emoji_picker.skin_tone_icons": "Skin tone icons", "emoji_picker.smileys-emotion": "Smileys & Emotion", "emoji_picker.symbols": "Symbols", "emoji_picker.travel-places": "Travel Places",