This is an automated email from the ASF dual-hosted git repository.
mgrigorov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/master by this push:
new 219d45ccb3 WICKET-7131 Improved accessibility and screen reader
support (#1034)
219d45ccb3 is described below
commit 219d45ccb3f9a9069295eb53da9d9a7141fd225c
Author: Erik Strid <[email protected]>
AuthorDate: Tue Nov 19 10:09:16 2024 +0100
WICKET-7131 Improved accessibility and screen reader support (#1034)
* Improved accessability and screen reader support
* Ensure that the input field exists before trying to change its attributes
* Fix code style issues
---------
Co-authored-by: Erik Strid <[email protected]>
(cherry picked from commit b25c8311b95e46b46f8b23134b68adc3a4f2e543)
---
.../markup/html/autocomplete/wicket-autocomplete.js | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
index 10fe31f033..70415e395e 100644
---
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
+++
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
@@ -136,6 +136,7 @@
showAutoComplete();
}
render(true, false);
+
jqEvent.preventDefault();
}
break;
@@ -153,6 +154,7 @@
render(true,
false);
showAutoComplete();
}
+
jqEvent.preventDefault();
}
break;
@@ -243,7 +245,7 @@
{
// Remove the autocompletion menu if still present from
// a previous call. This is required to properly
register
- // the mouse event handler again
+ // the mouse event handler again
var choiceDiv=document.getElementById(getMenuId());
if (choiceDiv !== null) {
choiceDiv.parentNode.parentNode.removeChild(choiceDiv.parentNode);
@@ -325,7 +327,6 @@
container.appendChild(choiceDiv);
choiceDiv.id=getMenuId();
choiceDiv.className = "wicket-aa";
- choiceDiv.ariaLive = "polite";
}
@@ -456,7 +457,10 @@
hideAutoCompleteTimer = undefined;
var input = Wicket.$(ajaxAttributes.c);
- $(input).attr("aria-expanded", "false");
+ if (input) {
+ input.setAttribute("aria-expanded", "false");
+ input.removeAttribute("aria-activedescendant");
+ }
visible = 0;
setSelected(-1);
@@ -628,6 +632,7 @@
selChSinceLastRender = true; // selected item
will not have selected style until rendrered
}
element.innerHTML=resp;
+ element.firstChild.role = "listbox";
var selectableElements = getSelectableElements();
if (selectableElements) {
elementCount=selectableElements.length;
@@ -675,6 +680,11 @@
node.onclick = clickFunc;
node.onmouseover = mouseOverFunc;
node.onmousedown = mouseDownFunc;
+ node.role = "option";
+ node.id = getMenuId() + '-item-' + i;
+ node.setAttribute("tabindex", -1);
+ node.setAttribute("aria-posinset", i +
1);
+ node.setAttribute("aria-setsize",
elementCount);
}
} else {
elementCount=0;
@@ -770,6 +780,8 @@
var node=getSelectableElement(0);
var re = /\bselected\b/gi;
var sizeAffected = false;
+ var input=Wicket.$(ajaxAttributes.c);
+
for(var i=0;i<elementCount;i++)
{
var origClassNames = node.className;
@@ -780,6 +792,7 @@
if (node && node instanceof HTMLElement
&& node.attributes) {
node.setAttribute("aria-selected", "true");
+
input.setAttribute("aria-activedescendant", node.id);
}
if (adjustScroll) {