WMDE-Fisch has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/354649 )

Change subject: Improve support for screenreaders
......................................................................

Improve support for screenreaders

This patch improves screenreader support by applying some basic
rules and improving the OOjs UI usage. Things done here:

- make use of 'aria-label' attribute to label interactive buttons
- use connect method on help button to allow keyboard interaction
- give hint on help button that it opens a dialog
- communicate state of autoexpand button
- add attributes to make screenreaders understand the accordion
mechanism if the slider widget

See:
https://www.w3.org/TR/wai-aria-practices/#button
https://www.w3.org/TR/wai-aria-practices/#accordion

Bug: T165489
Change-Id: I7a174e5971a751ec54d4d5115d5441f0a577c103
---
M modules/ext.RevisionSlider.HelpButtonView.js
M modules/ext.RevisionSlider.SliderArrowView.js
M modules/ext.RevisionSlider.init.js
3 files changed, 32 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/RevisionSlider 
refs/changes/49/354649/1

diff --git a/modules/ext.RevisionSlider.HelpButtonView.js 
b/modules/ext.RevisionSlider.HelpButtonView.js
index 9fa0018..ec2bb99 100644
--- a/modules/ext.RevisionSlider.HelpButtonView.js
+++ b/modules/ext.RevisionSlider.HelpButtonView.js
@@ -24,16 +24,17 @@
                                width: 200,
                                classes: [ 'mw-revslider-tooltip', 
'mw-revslider-help-tooltip' ]
                        } );
+                       helpButton.connect( mw.libs.revisionSlider.HelpDialog, {
+                               click: 'show'
+                       } );
                        helpButton.$element
-                               .click( function () {
-                                       
mw.libs.revisionSlider.HelpDialog.show();
-                               } )
                                .mouseover( function () {
                                        helpPopup.toggle( true );
                                } )
                                .mouseout( function () {
                                        helpPopup.toggle( false );
-                               } );
+                               } )
+                               .children().attr( 'aria-haspopup', 'true' );
 
                        $( 'body' ).append( helpPopup.$element );
 
diff --git a/modules/ext.RevisionSlider.SliderArrowView.js 
b/modules/ext.RevisionSlider.SliderArrowView.js
index 8454d95..3032132 100644
--- a/modules/ext.RevisionSlider.SliderArrowView.js
+++ b/modules/ext.RevisionSlider.SliderArrowView.js
@@ -47,6 +47,7 @@
 
                        backwardArrowButton.$element
                                .attr( 'data-dir', -1 )
+                               .children().attr( 'arial-label', mw.msg( 
'revisionslider-arrow-tooltip-older' ) )
                                .mouseover( { button: backwardArrowButton, 
popup: backwardArrowPopup }, this.showPopup )
                                .mouseout( { popup: backwardArrowPopup }, 
this.hidePopup )
                                .focusin( { button: backwardArrowButton }, 
this.arrowFocusHandler );
@@ -88,6 +89,7 @@
 
                        forwardArrowButton.$element
                                .attr( 'data-dir', 1 )
+                               .children().attr( 'arial-label', mw.msg( 
'revisionslider-arrow-tooltip-newer' ) )
                                .mouseover( { button: forwardArrowButton, 
popup: forwardArrowPopup }, this.showPopup )
                                .mouseout( { popup: forwardArrowPopup }, 
this.hidePopup )
                                .focusin( { button: forwardArrowButton }, 
this.arrowFocusHandler );
diff --git a/modules/ext.RevisionSlider.init.js 
b/modules/ext.RevisionSlider.init.js
index f964ef4..12cf1f5 100644
--- a/modules/ext.RevisionSlider.init.js
+++ b/modules/ext.RevisionSlider.init.js
@@ -8,6 +8,12 @@
                        var startTime = mw.now(),
                                api = new mw.libs.revisionSlider.Api( 
mw.util.wikiScript( 'api' ) );
 
+                       toggleButton.$element.attr( 'role', 'heading' );
+                       toggleButton.$element.children().attr( {
+                               'aria-expanded': autoExpand,
+                               'aria-controls': 'mw-revslider-slider-wrapper'
+                       } );
+
                        mw.track( 'counter.MediaWiki.RevisionSlider.event.init' 
);
                        mw.libs.revisionSlider.userOffset = 
mw.user.options.get( 'timecorrection' ) ? mw.user.options.get( 'timecorrection' 
).split( '|' )[ 1 ] : mw.config.get( 'extRevisionSliderTimeOffset' );
 
@@ -29,6 +35,7 @@
                                        revs.reverse();
 
                                        $container = $( 
'.mw-revslider-slider-wrapper' );
+                                       $container.attr( 'id', 
'mw-revslider-slider-wrapper' );
 
                                        revisionList = new 
mw.libs.revisionSlider.RevisionList( mw.libs.revisionSlider.makeRevisions( revs 
) );
                                        revisionList.getView().setDir( 
$container.css( 'direction' ) || 'ltr' );
@@ -66,6 +73,7 @@
                        $( '.mw-revslider-container' ).removeClass( 
'mw-revslider-container-collapsed' )
                                .addClass( 'mw-revslider-container-expanded' );
                        $( '.mw-revslider-slider-wrapper' ).show();
+                       toggleButton.$element.children().attr( 'aria-expanded', 
'true' );
                        expanded = true;
                },
 
@@ -74,28 +82,41 @@
                        $( '.mw-revslider-container' ).removeClass( 
'mw-revslider-container-expanded' )
                                .addClass( 'mw-revslider-container-collapsed' );
                        $( '.mw-revslider-slider-wrapper' ).hide();
+                       toggleButton.$element.children().attr( 'aria-expanded', 
'false' );
                };
 
        autoExpandButton = new OO.ui.ToggleButtonWidget( {
                icon: 'pin',
                classes: [ 'mw-revslider-auto-expand-button' ],
-               title: mw.message( autoExpand ?
+               title: mw.msg( autoExpand ?
                        'revisionslider-turn-off-auto-expand-title' :
                        'revisionslider-turn-on-auto-expand-title'
-               ).text(),
+               ),
                value: autoExpand
        } );
+       autoExpandButton.$element.children().attr(
+               'arial-label',
+               mw.msg( autoExpand ?
+               'revisionslider-turn-off-auto-expand-title' :
+               'revisionslider-turn-on-auto-expand-title'
+       ) );
 
        autoExpandButton.connect( this, {
                click: function () {
                        autoExpand = !autoExpand;
                        settings.setAutoExpand( autoExpand );
                        if ( autoExpand ) {
-                               autoExpandButton.setTitle( mw.message( 
'revisionslider-turn-off-auto-expand-title' ).text() );
+                               autoExpandButton.setTitle( mw.msg( 
'revisionslider-turn-off-auto-expand-title' ) );
+                               autoExpandButton.$element.children().attr(
+                                       'arial-label', mw.msg( 
'revisionslider-turn-off-auto-expand-title' )
+                               );
                                expand();
                                mw.track( 
'counter.MediaWiki.RevisionSlider.event.autoexpand_on' );
                        } else {
-                               autoExpandButton.setTitle( mw.message( 
'revisionslider-turn-on-auto-expand-title' ).text() );
+                               autoExpandButton.setTitle( mw.msg( 
'revisionslider-turn-on-auto-expand-title' ) );
+                               autoExpandButton.$element.children().attr(
+                                       'arial-label', mw.msg( 
'revisionslider-turn-on-auto-expand-title' )
+                               );
                                mw.track( 
'counter.MediaWiki.RevisionSlider.event.autoexpand_off' );
                        }
                }

-- 
To view, visit https://gerrit.wikimedia.org/r/354649
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7a174e5971a751ec54d4d5115d5441f0a577c103
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/RevisionSlider
Gerrit-Branch: master
Gerrit-Owner: WMDE-Fisch <christoph.jau...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to