From 82fb5a67d39d965595d2ad833dbf930e559c0202 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Tue, 24 Mar 2020 21:57:21 +0100 Subject: [PATCH] luci-base: form.js / ui.js: tie form labels to widgets Signed-off-by: Jo-Philipp Wich (cherry picked from commit 22ba6fc40933bee02c3ea93bbda952bb44bf3af1) --- .../luci-base/htdocs/luci-static/resources/form.js | 11 ++++++++++- modules/luci-base/htdocs/luci-static/resources/ui.js | 3 ++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/luci-base/htdocs/luci-static/resources/form.js b/modules/luci-base/htdocs/luci-static/resources/form.js index b3133a8d3..917584bb8 100644 --- a/modules/luci-base/htdocs/luci-static/resources/form.js +++ b/modules/luci-base/htdocs/luci-static/resources/form.js @@ -1644,7 +1644,16 @@ var CBIValue = CBIAbstractValue.extend({ if (typeof(this.title) === 'string' && this.title !== '') { optionEl.appendChild(E('label', { 'class': 'cbi-value-title', - 'for': 'widget.cbid.%s.%s.%s'.format(config_name, section_id, this.option) + 'for': 'widget.cbid.%s.%s.%s'.format(config_name, section_id, this.option), + 'click': function(ev) { + var node = ev.currentTarget, + elem = node.nextElementSibling.querySelector('#' + node.getAttribute('for')) || node.nextElementSibling.querySelector('[data-widget-id="' + node.getAttribute('for') + '"]'); + + if (elem) { + elem.click(); + elem.focus(); + } + } }, this.titleref ? E('a', { 'class': 'cbi-title-ref', diff --git a/modules/luci-base/htdocs/luci-static/resources/ui.js b/modules/luci-base/htdocs/luci-static/resources/ui.js index b78a109bf..0e196df4b 100644 --- a/modules/luci-base/htdocs/luci-static/resources/ui.js +++ b/modules/luci-base/htdocs/luci-static/resources/ui.js @@ -236,7 +236,8 @@ var UICheckbox = UIElement.extend({ 'name': this.options.name, 'type': 'checkbox', 'value': this.options.value_enabled, - 'checked': (this.value == this.options.value_enabled) ? '' : null + 'checked': (this.value == this.options.value_enabled) ? '' : null, + 'data-widget-id': this.options.id ? 'widget.' + this.options.id : null })); frameEl.appendChild(E('label', { 'for': id })); -- 2.25.1