diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx index b693288a81b996295cb0c1be37372d7e128ec4ce..a1baf413617f3c629730c593cffb6f3fb8e849ef 100644 --- a/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx @@ -142,7 +142,7 @@ class ActionsDropdown extends Component { return ( <Dropdown ref={(ref) => { this._dropdown = ref; }} > - <DropdownTrigger tabIndex={0} > + <DropdownTrigger tabIndex={0} accessKey="a"> <Button hideLabel aria-label={intl.formatMessage(intlMessages.actionsLabel)} diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/emoji-select/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/emoji-select/component.jsx index 5462e5586e4c623303d9a3347a1d6d1fbc09fb1a..e558a33889c5ec5a704e982fec64b5729bc3f60b 100644 --- a/bigbluebutton-html5/imports/ui/components/actions-bar/emoji-select/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/actions-bar/emoji-select/component.jsx @@ -61,6 +61,7 @@ const EmojiSelect = ({ size="lg" color="primary" onClick={() => null} + accessKey="s" > <div id="currentStatus" hidden> { intl.formatMessage(intlMessages.currentStatusDesc, { 0: selected }) } diff --git a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/component.jsx b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/component.jsx index 043a7d7c2e66a375b89adb592b5b28d901daa7fd..48f43ad49a6693229094f2653f4cc7c39060e077 100644 --- a/bigbluebutton-html5/imports/ui/components/audio/audio-controls/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/audio/audio-controls/component.jsx @@ -64,6 +64,7 @@ const AudioControls = ({ icon={unmute ? 'mute' : 'unmute'} size="lg" circle + accessKey="m" /> : null} <Button className={styles.button} @@ -76,6 +77,7 @@ const AudioControls = ({ icon={join ? 'audio_off' : 'audio_on'} size="lg" circle + accessKey={join ? 'l' : 'j'} /> </span>); diff --git a/bigbluebutton-html5/imports/ui/components/audio/echo-test/component.jsx b/bigbluebutton-html5/imports/ui/components/audio/echo-test/component.jsx index e8a37027fdfe4860f29300f94e2d07e126214ea3..01c6f1c1777c586942cf92f432ab1d8adea7353c 100644 --- a/bigbluebutton-html5/imports/ui/components/audio/echo-test/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/audio/echo-test/component.jsx @@ -5,14 +5,22 @@ import { defineMessages, intlShape, injectIntl } from 'react-intl'; import { styles } from './styles'; const intlMessages = defineMessages({ - yes: { + confirmLabel: { id: 'app.audioModal.yes', description: 'Hear yourself yes', }, - no: { + disconfirmLabel: { id: 'app.audioModal.no', description: 'Hear yourself no', }, + confirmAriaLabel: { + id: 'app.audioModal.yes.arialabel', + description: 'provides better context for yes btn label', + }, + disconfirmAriaLabel: { + id: 'app.audioModal.no.arialabel', + description: 'provides better context for no btn label', + }, }); const propTypes = { @@ -38,7 +46,8 @@ class EchoTest extends Component { <span className={styles.echoTest}> <Button className={styles.button} - label={intl.formatMessage(intlMessages.yes)} + label={intl.formatMessage(intlMessages.confirmLabel)} + aria-label={intl.formatMessage(intlMessages.confirmAriaLabel)} icon="thumbs_up" circle color="success" @@ -47,7 +56,8 @@ class EchoTest extends Component { /> <Button className={styles.button} - label={intl.formatMessage(intlMessages.no)} + label={intl.formatMessage(intlMessages.disconfirmLabel)} + aria-label={intl.formatMessage(intlMessages.disconfirmAriaLabel)} icon="thumbs_down" circle color="danger" diff --git a/bigbluebutton-html5/imports/ui/components/chat/component.jsx b/bigbluebutton-html5/imports/ui/components/chat/component.jsx index c7d6ea534b03b867c7cff961d6dfef9cd6a32f0a..b90a40fb1f4a7590cb8488fc2ccfc57b25c7eea1 100644 --- a/bigbluebutton-html5/imports/ui/components/chat/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/chat/component.jsx @@ -54,6 +54,7 @@ const Chat = (props) => { to="/users" role="button" aria-label={intl.formatMessage(intlMessages.hideChatLabel, { 0: title })} + accessKey="h" > <Icon iconName="left_arrow" /> {title} </Link> @@ -73,6 +74,7 @@ const Chat = (props) => { onClick={() => actions.handleClosePrivateChat(chatID)} aria-label={intl.formatMessage(intlMessages.closeChatLabel, { 0: title })} label={intl.formatMessage(intlMessages.closeChatLabel, { 0: title })} + accessKey="g" /> </Link> : <ChatDropdown /> diff --git a/bigbluebutton-html5/imports/ui/components/chat/message-list/component.jsx b/bigbluebutton-html5/imports/ui/components/chat/message-list/component.jsx index 61f4f5b8dcad3d9e59ca07a2e5b804dd2115d589..8bd763652eeb24a70fa7e0e40235a12badbf682a 100644 --- a/bigbluebutton-html5/imports/ui/components/chat/message-list/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/chat/message-list/component.jsx @@ -143,6 +143,7 @@ class MessageList extends Component { if (hasUnreadMessages && scrollPosition !== null) { return ( <Button + aria-hidden="true" className={styles.unreadButton} size="sm" label={intl.formatMessage(intlMessages.moreMessages)} diff --git a/bigbluebutton-html5/imports/ui/components/nav-bar/component.jsx b/bigbluebutton-html5/imports/ui/components/nav-bar/component.jsx index 3d287229770d23225f470d6bc6cbf90d3b21d763..3fbd14a2dd6b3bb6fd76dbb3fd2a8c2fa4251d84 100644 --- a/bigbluebutton-html5/imports/ui/components/nav-bar/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/nav-bar/component.jsx @@ -198,6 +198,7 @@ class NavBar extends Component { className={cx(toggleBtnClasses)} aria-expanded={isExpanded} aria-describedby="newMessage" + accessKey="u" /> <div id="newMessage" diff --git a/bigbluebutton-html5/imports/ui/components/nav-bar/settings-dropdown/component.jsx b/bigbluebutton-html5/imports/ui/components/nav-bar/settings-dropdown/component.jsx index 69a3b3096c4793f0ec6ad30ed8cdc92d2c2dea07..c73bbe8ea4fc40506f9adbf0a749ba9485d1e3d7 100644 --- a/bigbluebutton-html5/imports/ui/components/nav-bar/settings-dropdown/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/nav-bar/settings-dropdown/component.jsx @@ -154,7 +154,7 @@ class SettingsDropdown extends Component { onShow={this.onActionsShow} onHide={this.onActionsHide} > - <DropdownTrigger tabIndex={0}> + <DropdownTrigger tabIndex={0} accessKey="o"> <Button label={intl.formatMessage(intlMessages.optionsLabel)} icon="more" diff --git a/bigbluebutton-html5/imports/ui/components/user-list/chat-list-item/component.jsx b/bigbluebutton-html5/imports/ui/components/user-list/chat-list-item/component.jsx index e3b50f1fb95909fd028b15b21b497c2d3e15c5d1..6c302a71fb8a2a932b595c3c751599151e997745 100644 --- a/bigbluebutton-html5/imports/ui/components/user-list/chat-list-item/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/user-list/chat-list-item/component.jsx @@ -71,6 +71,7 @@ const ChatListItem = (props) => { role="button" aria-expanded={isCurrentChat} tabIndex={tabIndex} + accessKey={isPublicChat(chat) ? 'p' : null} > <div className={styles.chatListItemLink}> <div className={styles.chatIcon}> diff --git a/bigbluebutton-html5/private/locales/en.json b/bigbluebutton-html5/private/locales/en.json index 7e257112e80c526010784af123e9e26e9f7f2625..f52fe19a623a50c829007f47c812858c29cc6f20 100755 --- a/bigbluebutton-html5/private/locales/en.json +++ b/bigbluebutton-html5/private/locales/en.json @@ -36,7 +36,7 @@ "app.userList.menu.removeUser.label": "Remove user", "app.userList.menu.muteUserAudio.label": "Mute user", "app.userList.menu.unmuteUserAudio.label": "Unmute user", - "app.userList.userAriaLabel": "User : {0} Role: {1} Person: {2} Status: {3}", + "app.userList.userAriaLabel": "{0} {1} {2} Status {3}", "app.userList.menu.promoteUser.label": "Promote {0} to moderator", "app.userList.menu.demoteUser.label": "Demote {0} to viewer", "app.media.label": "Media", @@ -93,7 +93,7 @@ "app.navBar.settingsDropdown.leaveSessionDesc": "Leave the meeting", "app.navBar.settingsDropdown.exitFullscreenDesc": "Exit fullscreen mode", "app.navBar.userListToggleBtnLabel": "User List Toggle", - "app.navBar.toggleUserList.ariaLabel": "Users / Conversations Toggle", + "app.navBar.toggleUserList.ariaLabel": "Users and Conversations Toggle", "app.navBar.toggleUserList.newMessages": "with new message notification", "app.navBar.recording": "This session is being recorded", "app.navBar.recording.on": "Recording", @@ -247,6 +247,8 @@ "app.audioModal.closeLabel": "Close", "app.audioModal.yes": "Yes", "app.audioModal.no": "No", + "app.audioModal.yes.arialabel" : "Echo is audible", + "app.audioModal.no.arialabel" : "Echo is inaudible", "app.audioModal.echoTestTitle": "This is a private echo test. Speak a few words. Did you hear audio?", "app.audioModal.settingsTitle": "Change your audio settings", "app.audioModal.helpTitle": "There was an issue with your media devices",