From 7f8084530842b48f3c38641953fa34b734bf7b0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Mon, 27 Jun 2022 10:38:36 +0200 Subject: [PATCH] LinkHints: enable radio button (#5656) --- src/ui/zabapgit_js_common.w3mi.data.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/ui/zabapgit_js_common.w3mi.data.js b/src/ui/zabapgit_js_common.w3mi.data.js index 0acdb0764..02ae602a6 100644 --- a/src/ui/zabapgit_js_common.w3mi.data.js +++ b/src/ui/zabapgit_js_common.w3mi.data.js @@ -1474,8 +1474,10 @@ LinkHints.prototype.hintActivate = function (hint) { this.activatedDropdown = hint.parent.parentElement; this.activatedDropdown.classList.toggle("force-nav-hover"); hint.parent.focus(); - } else if (hint.parent.type === "checkbox" || hint.parent.type === "radio") { + } else if (hint.parent.type === "checkbox") { this.toggleCheckbox(hint); + } else if (hint.parent.type === "radio") { + this.toggleRadioButton(hint); } else if (hint.parent.type === "submit") { hint.parent.click(); } else if (hint.parent.nodeName === "INPUT" || hint.parent.nodeName === "TEXTAREA") { @@ -1487,18 +1489,26 @@ LinkHints.prototype.hintActivate = function (hint) { }; LinkHints.prototype.toggleCheckbox = function (hint) { - // ensures that onclick handler is executed - // https://stackoverflow.com/questions/41981509/trigger-an-event-when-a-checkbox-is-changed-programmatically-via-javascript - var event = document.createEvent("HTMLEvents"); var checked = hint.parent.checked; - event.initEvent("click", false, true); - hint.parent.parentElement.dispatchEvent(event); + this.triggerClickHandler(hint.parent.parentElement); if (checked === hint.parent.checked) { // fallback if no handler is registered hint.parent.checked = !hint.parent.checked; } }; +LinkHints.prototype.toggleRadioButton = function(hint) { + this.triggerClickHandler(hint.parent); +}; + +LinkHints.prototype.triggerClickHandler = function(el){ + // ensures that onclick handler is executed + // https://stackoverflow.com/questions/41981509/trigger-an-event-when-a-checkbox-is-changed-programmatically-via-javascript + var event = document.createEvent("HTMLEvents"); + event.initEvent("click", false, true); + el.dispatchEvent(event); +}; + LinkHints.prototype.filterHints = function () { var visibleHints = 0; for (var i = this.hintsMap.first; i <= this.hintsMap.last; i++) {