Fix usages of ARIA tabpanel (#10628)
* RovingTabIndex handle looping around start/end * Make TabbedView expose aria tabpanel/tablist/tab roles * Fix right panel being wrongly specified as aria tabs Not all right panels map to the top right header buttons so we cannot describe it as a tabpanel relation * tsc strict * Update snapshots * Fix ARIA AXE violation * Update tests
This commit is contained in:
parent
961b843662
commit
a1a087f755
9 changed files with 153 additions and 66 deletions
|
@ -3,9 +3,11 @@
|
|||
exports[`<RoomSettingsDialog /> Settings tabs renders default tabs correctly 1`] = `
|
||||
NodeList [
|
||||
<div
|
||||
aria-controls="mx_tabpanel_ROOM_GENERAL_TAB"
|
||||
aria-selected="true"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel mx_TabbedView_tabLabel_active"
|
||||
data-testid="settings-tab-ROOM_GENERAL_TAB"
|
||||
role="button"
|
||||
role="tab"
|
||||
tabindex="0"
|
||||
>
|
||||
<span
|
||||
|
@ -13,66 +15,79 @@ NodeList [
|
|||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_ROOM_GENERAL_TAB_label"
|
||||
>
|
||||
General
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_ROOM_SECURITY_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-ROOM_SECURITY_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_RoomSettingsDialog_securityIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_ROOM_SECURITY_TAB_label"
|
||||
>
|
||||
Security & Privacy
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_ROOM_ROLES_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-ROOM_ROLES_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_RoomSettingsDialog_rolesIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_ROOM_ROLES_TAB_label"
|
||||
>
|
||||
Roles & Permissions
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_ROOM_NOTIFICATIONS_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-ROOM_NOTIFICATIONS_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_RoomSettingsDialog_notificationsIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_ROOM_NOTIFICATIONS_TAB_label"
|
||||
>
|
||||
Notifications
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_ROOM_POLL_HISTORY_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-ROOM_POLL_HISTORY_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_RoomSettingsDialog_pollsIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_ROOM_POLL_HISTORY_TAB_label"
|
||||
>
|
||||
Poll history
|
||||
</span>
|
||||
|
|
|
@ -3,9 +3,11 @@
|
|||
exports[`<UserSettingsDialog /> renders tabs correctly 1`] = `
|
||||
NodeList [
|
||||
<div
|
||||
aria-controls="mx_tabpanel_USER_GENERAL_TAB"
|
||||
aria-selected="true"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel mx_TabbedView_tabLabel_active"
|
||||
data-testid="settings-tab-USER_GENERAL_TAB"
|
||||
role="button"
|
||||
role="tab"
|
||||
tabindex="0"
|
||||
>
|
||||
<span
|
||||
|
@ -13,126 +15,151 @@ NodeList [
|
|||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_USER_GENERAL_TAB_label"
|
||||
>
|
||||
General
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_USER_APPEARANCE_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-USER_APPEARANCE_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_UserSettingsDialog_appearanceIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_USER_APPEARANCE_TAB_label"
|
||||
>
|
||||
Appearance
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_USER_NOTIFICATIONS_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-USER_NOTIFICATIONS_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_UserSettingsDialog_bellIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_USER_NOTIFICATIONS_TAB_label"
|
||||
>
|
||||
Notifications
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_USER_PREFERENCES_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-USER_PREFERENCES_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_UserSettingsDialog_preferencesIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_USER_PREFERENCES_TAB_label"
|
||||
>
|
||||
Preferences
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_USER_KEYBOARD_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-USER_KEYBOARD_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_UserSettingsDialog_keyboardIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_USER_KEYBOARD_TAB_label"
|
||||
>
|
||||
Keyboard
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_USER_SIDEBAR_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-USER_SIDEBAR_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_UserSettingsDialog_sidebarIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_USER_SIDEBAR_TAB_label"
|
||||
>
|
||||
Sidebar
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_USER_SECURITY_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-USER_SECURITY_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_UserSettingsDialog_securityIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_USER_SECURITY_TAB_label"
|
||||
>
|
||||
Security & Privacy
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_USER_LABS_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-USER_LABS_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_UserSettingsDialog_labsIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_USER_LABS_TAB_label"
|
||||
>
|
||||
Labs
|
||||
</span>
|
||||
</div>,
|
||||
<div
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel "
|
||||
aria-controls="mx_tabpanel_USER_HELP_TAB"
|
||||
aria-selected="false"
|
||||
class="mx_AccessibleButton mx_TabbedView_tabLabel"
|
||||
data-testid="settings-tab-USER_HELP_TAB"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
role="tab"
|
||||
tabindex="-1"
|
||||
>
|
||||
<span
|
||||
class="mx_TabbedView_maskedIcon mx_UserSettingsDialog_helpIcon"
|
||||
/>
|
||||
<span
|
||||
class="mx_TabbedView_tabLabel_text"
|
||||
id="mx_tabpanel_USER_HELP_TAB_label"
|
||||
>
|
||||
Help & About
|
||||
</span>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue