Skip to content

Commit

Permalink
[common] added 'speach' module for screen reader
Browse files Browse the repository at this point in the history
  • Loading branch information
maxkadushkin committed Dec 7, 2023
1 parent 91de30f commit d9a44cf
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
10 changes: 10 additions & 0 deletions apps/common/main/lib/controller/ScreenReaderFocus.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,12 @@ Common.UI.ScreenReaderFocusManager = new(function() {
Common.NotificationCenter.on({
'app:ready': function (mode) {
_isDocReady = true;

if ( !Common.Utils.ScreeenReaderHelper ) {
require(['common/main/lib/util/ScreenReaderHelper'], function () {
Common.Utils.ScreeenReaderHelper.setEnabled(true);
});
}
}
});
$(document).on('keyup', function(e) {
Expand Down Expand Up @@ -222,15 +228,19 @@ Common.UI.ScreenReaderFocusManager = new(function() {
} else if (e.keyCode == Common.UI.Keys.LEFT) {
turnOffHints = true;
_prevItem();
Common.Utils.ScreeenReaderHelper.speech('previous item');
} else if (e.keyCode == Common.UI.Keys.RIGHT || e.keyCode == Common.UI.Keys.TAB) {
turnOffHints = true;
_nextItem();
Common.Utils.ScreeenReaderHelper.speech('next item');
} else if (e.keyCode == Common.UI.Keys.UP) {
turnOffHints = true;
_nextLevel();
Common.Utils.ScreeenReaderHelper.speech('next level');
} else if (e.keyCode == Common.UI.Keys.DOWN) {
turnOffHints = true;
_prevLevel();
Common.Utils.ScreeenReaderHelper.speech('previous level');
}
if (!_focusMode && turnOffHints) {
_focusMode = true;
Expand Down
42 changes: 42 additions & 0 deletions apps/common/main/lib/util/ScreenReaderHelper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

const helper = function() {
let $elem;

const set_enabled = function(enabled) {
if ( enabled ) {
if ( !$elem ) {
if ( ($elem = $('div[aria-live]')).length == 0 ) {
const tmpl = '<div aria-live="assertive" class="sr-only" style=""></div>'
$elem = $(tmpl).appendTo($('body'));
}
}
} else {
if ( $elem ) {
$elem.remove($elem);
$elem = undefined;
}
}
}

const set_text_to_speech = function(text) {
if ( !$elem ){
set_enabled(true);
}

$elem.text('');
setTimeout(e => {
$elem.text(text);
}, 0);
}

return {
setEnabled: set_enabled,
disable: function() { set_enabled(false); },
speech: set_text_to_speech,
}
}

!window.Common && (window.Common = {});
!Common.Utils && (Common.Utils = {});

Common.Utils.ScreeenReaderHelper = new helper();

0 comments on commit d9a44cf

Please sign in to comment.