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) {

Reply via email to