This is an automated email from the ASF dual-hosted git repository. adelbene pushed a commit to branch wicket-10.x in repository https://gitbox.apache.org/repos/asf/wicket.git
commit dc3b7c747cccb343c8951677507563dec9091462 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) {
