From b391387ce7fc8a89c82aa3537b5fc1c31ed9b7f0 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sun, 11 Aug 2019 21:01:12 +0200 Subject: [PATCH] luci-base: form.js: improve ui tab interaction - Delay initialization of tab groups - Tag section nodes with IDs to store per-section tab state Signed-off-by: Jo-Philipp Wich --- .../htdocs/luci-static/resources/form.js | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/luci-base/htdocs/luci-static/resources/form.js b/modules/luci-base/htdocs/luci-static/resources/form.js index 4cdef2e69..31867162e 100644 --- a/modules/luci-base/htdocs/luci-static/resources/form.js +++ b/modules/luci-base/htdocs/luci-static/resources/form.js @@ -185,6 +185,11 @@ var CBIMap = CBINode.extend({ this.checkDepends(); + var tabGroups = mapEl.querySelectorAll('.cbi-section-node-tabbed'); + + for (var i = 0; i < tabGroups.length; i++) + ui.tabs.initTabGroup(tabGroups[i].childNodes); + return mapEl; }, this)); }, @@ -748,11 +753,9 @@ var CBITypedSection = CBIAbstractSection.extend({ sectionEl.appendChild(E('div', { 'id': 'cbi-%s-%s'.format(config_name, cfgsections[i]), 'class': this.tabs - ? 'cbi-section-node cbi-section-node-tabbed' : 'cbi-section-node' + ? 'cbi-section-node cbi-section-node-tabbed' : 'cbi-section-node', + 'data-section-id': cfgsections[i] }, nodes[i])); - - if (this.tabs) - ui.tabs.initTabGroup(sectionEl.lastChild.childNodes); } if (nodes.length == 0) @@ -819,7 +822,8 @@ var CBITableSection = CBITypedSection.extend({ 'dragleave': this.sortable ? L.bind(this.handleDragLeave, this) : null, 'dragend': this.sortable ? L.bind(this.handleDragEnd, this) : null, 'drop': this.sortable ? L.bind(this.handleDrop, this) : null, - 'data-title': (sectionname && (!this.anonymous || this.sectiontitle)) ? sectionname : null + 'data-title': (sectionname && (!this.anonymous || this.sectiontitle)) ? sectionname : null, + 'data-section-id': cfgsections[i] }); if (this.extedit || this.rowcolors) @@ -1312,11 +1316,9 @@ var CBINamedSection = CBIAbstractSection.extend({ sectionEl.appendChild(E('div', { 'id': 'cbi-%s-%s'.format(config_name, section_id), 'class': this.tabs - ? 'cbi-section-node cbi-section-node-tabbed' : 'cbi-section-node' + ? 'cbi-section-node cbi-section-node-tabbed' : 'cbi-section-node', + 'data-section-id': section_id }, nodes)); - - if (this.tabs) - ui.tabs.initTabGroup(sectionEl.lastChild.childNodes); } else if (this.addremove) { sectionEl.appendChild( -- 2.25.1