Add ARIA attributes to contextmenu (#30)

This commit is contained in:
bymyself
2024-07-28 10:51:05 -07:00
committed by GitHub
parent 7504f3e017
commit 299b9fbe95

View File

@@ -13910,14 +13910,18 @@ LGraphNode.prototype.executeAction = function(action)
} else {
element.innerHTML = value && value.title ? value.title : name;
element.value = value;
element.setAttribute("role", "menuitem");
if (value) {
if (value.disabled) {
disabled = true;
element.classList.add("disabled");
element.setAttribute("aria-disabled", "true");
}
if (value.submenu || value.has_submenu) {
element.classList.add("has_submenu");
element.setAttribute("aria-haspopup", "true");
element.setAttribute("aria-expanded", "false");
}
}
@@ -13941,6 +13945,16 @@ LGraphNode.prototype.executeAction = function(action)
LiteGraph.pointerListenerAdd(element,"enter",inner_over);
}
function setAriaExpanded() {
const entries = that.root.querySelectorAll("div.litemenu-entry.has_submenu");
if (entries) {
for (let i = 0; i < entries.length; i++) {
entries[i].setAttribute("aria-expanded", "false");
}
}
element.setAttribute("aria-expanded", "true");
}
function inner_over(e) {
var value = this.value;
if (!value || !value.has_submenu) {
@@ -13948,6 +13962,7 @@ LGraphNode.prototype.executeAction = function(action)
}
//if it is a submenu, autoopen like the item was clicked
inner_onclick.call(this, e);
setAriaExpanded();
}
//menu option clicked
@@ -13958,6 +13973,9 @@ LGraphNode.prototype.executeAction = function(action)
if (that.current_submenu) {
that.current_submenu.close(e);
}
if (value?.has_submenu || value?.submenu) {
setAriaExpanded();
}
//global callback
if (options.callback) {