More screen reader accessibility fixes.
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
# shellcheck shell=bash disable=SC2034,SC2154
|
# shellcheck shell=bash disable=SC2034,SC2154
|
||||||
|
|
||||||
pkgname=skald-git
|
pkgname=skald-git
|
||||||
pkgver=0.0.0.r1528.gaac197e
|
pkgver=0.0.0.r1529.g486ce7f
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc='Audio-only hall-based conferencing server'
|
pkgdesc='Audio-only hall-based conferencing server'
|
||||||
arch=('x86_64' 'aarch64')
|
arch=('x86_64' 'aarch64')
|
||||||
|
|||||||
+5
-4
@@ -69,8 +69,6 @@
|
|||||||
</button>
|
</button>
|
||||||
<h2 id="chat-history-heading" class="sr-only">Chat History</h2>
|
<h2 id="chat-history-heading" class="sr-only">Chat History</h2>
|
||||||
<div id="box"></div>
|
<div id="box"></div>
|
||||||
<div id="chat-announcements" role="status" aria-live="polite" aria-atomic="true" class="sr-only"></div>
|
|
||||||
<div id="urgent-announcements" role="alert" aria-live="assertive" aria-atomic="true" class="sr-only"></div>
|
|
||||||
<div id="audio-streams" aria-hidden="true"></div>
|
<div id="audio-streams" aria-hidden="true"></div>
|
||||||
<div class="reply">
|
<div class="reply">
|
||||||
<form id="inputform">
|
<form id="inputform">
|
||||||
@@ -81,7 +79,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="resizer" class="connected-only invisible" aria-hidden="true" tabindex="0" role="separator" aria-label="Chat resize handle" aria-orientation="vertical" aria-valuemin="0" aria-valuemax="100" aria-valuenow="50" aria-valuetext="Chat width 50 percent"></div>
|
<div id="resizer" class="connected-only invisible" aria-hidden="true" tabindex="0" role="separator" aria-label="Resize chat panel with Left and Right Arrow" aria-orientation="vertical" aria-valuemin="0" aria-valuemax="100" aria-valuenow="50" aria-valuetext="Chat width 50 percent"></div>
|
||||||
<div class="coln-right" id="right">
|
<div class="coln-right" id="right">
|
||||||
<button class="chat-btn show-chat invisible" id="show-chat" aria-label="Show chat">
|
<button class="chat-btn show-chat invisible" id="show-chat" aria-label="Show chat">
|
||||||
<i class="far fa-comment-alt icon-chat" aria-hidden="true"></i>
|
<i class="far fa-comment-alt icon-chat" aria-hidden="true"></i>
|
||||||
@@ -115,6 +113,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
<div id="chat-announcements" role="status" aria-live="polite" aria-atomic="true" class="sr-only"></div>
|
||||||
|
<div id="urgent-announcements" role="alert" aria-live="assertive" aria-atomic="true" class="sr-only"></div>
|
||||||
|
|
||||||
<aside id="sidebarnav" class="sidenav connected-only invisible" aria-hidden="true" aria-label="Settings">
|
<aside id="sidebarnav" class="sidenav connected-only invisible" aria-hidden="true" aria-label="Settings">
|
||||||
<div class="sidenav-header">
|
<div class="sidenav-header">
|
||||||
@@ -198,8 +198,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<dialog id="invite-dialog">
|
<dialog id="invite-dialog" aria-labelledby="invite-dialog-title">
|
||||||
<form method="dialog">
|
<form method="dialog">
|
||||||
|
<h2 id="invite-dialog-title" class="sr-only">Invite user</h2>
|
||||||
<label for="invite-username">Username (optional):</label>
|
<label for="invite-username">Username (optional):</label>
|
||||||
<input id="invite-username" type="text"/>
|
<input id="invite-username" type="text"/>
|
||||||
<br>
|
<br>
|
||||||
|
|||||||
+26
-7
@@ -435,10 +435,10 @@ function setConnected(connected) {
|
|||||||
for(let elt of document.querySelectorAll('.connected-only')) {
|
for(let elt of document.querySelectorAll('.connected-only')) {
|
||||||
if(connected) {
|
if(connected) {
|
||||||
elt.classList.remove('invisible');
|
elt.classList.remove('invisible');
|
||||||
elt.removeAttribute('aria-hidden');
|
setAccessibleHidden(elt, false);
|
||||||
} else {
|
} else {
|
||||||
elt.classList.add('invisible');
|
elt.classList.add('invisible');
|
||||||
elt.setAttribute('aria-hidden', 'true');
|
setAccessibleHidden(elt, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2200,6 +2200,12 @@ function gotFileTransfer(f) {
|
|||||||
div.classList.add('message-row');
|
div.classList.add('message-row');
|
||||||
let box = document.getElementById('box');
|
let box = document.getElementById('box');
|
||||||
box.appendChild(div);
|
box.appendChild(div);
|
||||||
|
if(!f.up) {
|
||||||
|
announceChat(
|
||||||
|
`File offer from ${f.username}: ${f.name}. ` +
|
||||||
|
'Choosing Accept will disclose your IP address.',
|
||||||
|
);
|
||||||
|
}
|
||||||
return div;
|
return div;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3620,6 +3626,7 @@ document.getElementById('resizer').addEventListener('keydown', function(e) {
|
|||||||
function displayError(message, level) {
|
function displayError(message, level) {
|
||||||
if(!level)
|
if(!level)
|
||||||
level = "error";
|
level = "error";
|
||||||
|
let text = String(message);
|
||||||
let position = 'center';
|
let position = 'center';
|
||||||
let gravity = 'top';
|
let gravity = 'top';
|
||||||
|
|
||||||
@@ -3635,9 +3642,14 @@ function displayError(message, level) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(level === "info")
|
||||||
|
announceChat(text);
|
||||||
|
else
|
||||||
|
announceUrgent(text);
|
||||||
|
|
||||||
/** @ts-ignore */
|
/** @ts-ignore */
|
||||||
Toastify({
|
Toastify({
|
||||||
text: message,
|
text: text,
|
||||||
duration: 8000, // Increased from 4000 for screen reader users
|
duration: 8000, // Increased from 4000 for screen reader users
|
||||||
close: true,
|
close: true,
|
||||||
position: position,
|
position: position,
|
||||||
@@ -3742,6 +3754,13 @@ function toggleLeftPanel() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setChatPanelVisible(visible) {
|
||||||
|
let chatPanel = document.getElementById('left');
|
||||||
|
setVisibility('left', visible);
|
||||||
|
if(chatPanel)
|
||||||
|
setAccessibleHidden(chatPanel, !visible);
|
||||||
|
}
|
||||||
|
|
||||||
document.getElementById('sidebarCollapse').onclick = function(e) {
|
document.getElementById('sidebarCollapse').onclick = function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
toggleLeftPanel();
|
toggleLeftPanel();
|
||||||
@@ -3762,7 +3781,7 @@ document.getElementById('closeside').onclick = function(e) {
|
|||||||
|
|
||||||
document.getElementById('close-chat').onclick = function(e) {
|
document.getElementById('close-chat').onclick = function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setVisibility('left', false);
|
setChatPanelVisible(false);
|
||||||
setVisibility('show-chat', true);
|
setVisibility('show-chat', true);
|
||||||
resizePeers();
|
resizePeers();
|
||||||
document.getElementById('show-chat').focus();
|
document.getElementById('show-chat').focus();
|
||||||
@@ -3770,7 +3789,7 @@ document.getElementById('close-chat').onclick = function(e) {
|
|||||||
|
|
||||||
document.getElementById('show-chat').onclick = function(e) {
|
document.getElementById('show-chat').onclick = function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setVisibility('left', true);
|
setChatPanelVisible(true);
|
||||||
setVisibility('show-chat', false);
|
setVisibility('show-chat', false);
|
||||||
resizePeers();
|
resizePeers();
|
||||||
document.getElementById('close-chat').focus();
|
document.getElementById('close-chat').focus();
|
||||||
@@ -3891,7 +3910,7 @@ document.addEventListener('keydown', function(e) {
|
|||||||
|
|
||||||
if(isChatVisible) {
|
if(isChatVisible) {
|
||||||
// Collapse chat
|
// Collapse chat
|
||||||
setVisibility('left', false);
|
setChatPanelVisible(false);
|
||||||
setVisibility('show-chat', true);
|
setVisibility('show-chat', true);
|
||||||
resizePeers();
|
resizePeers();
|
||||||
|
|
||||||
@@ -3909,7 +3928,7 @@ document.addEventListener('keydown', function(e) {
|
|||||||
}, 100);
|
}, 100);
|
||||||
} else {
|
} else {
|
||||||
// Expand chat
|
// Expand chat
|
||||||
setVisibility('left', true);
|
setChatPanelVisible(true);
|
||||||
setVisibility('show-chat', false);
|
setVisibility('show-chat', false);
|
||||||
resizePeers();
|
resizePeers();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user