| 1 |
(function () { |
| 2 |
function init(root) { |
| 3 |
// Build header from child panels' data-title, then show panels |
| 4 |
var panels = root.querySelectorAll(".aibui-tab-panel"); |
| 5 |
if (!panels.length) return; |
| 6 |
var header = document.createElement("div"); |
| 7 |
header.className = "aibui-tabs-header"; |
| 8 |
var buttons = []; |
| 9 |
for (var i = 0; i < panels.length; i++) { |
| 10 |
var title = panels[i].getAttribute("data-title") || "Tab " + (i + 1); |
| 11 |
var btn = document.createElement("button"); |
| 12 |
btn.className = "aibui-tab-btn"; |
| 13 |
btn.textContent = title; |
| 14 |
header.appendChild(btn); |
| 15 |
buttons.push(btn); |
| 16 |
} |
| 17 |
root.insertBefore(header, root.firstChild); |
| 18 |
var panelsWrap = document.createElement("div"); |
| 19 |
panelsWrap.className = "aibui-tabs-panels"; |
| 20 |
for (var j = 0; j < panels.length; j++) { |
| 21 |
panelsWrap.appendChild(panels[j]); |
| 22 |
} |
| 23 |
root.appendChild(panelsWrap); |
| 24 |
|
| 25 |
var active = 0; |
| 26 |
var active = parseInt(root.getAttribute("data-active") || "0", 10) || 0; |
| 27 |
function activate(i) { |
| 28 |
for (var b = 0; b < buttons.length; b++) { |
| 29 |
buttons[b].classList.toggle("is-active", b === i); |
| 30 |
} |
| 31 |
for (var p = 0; p < panels.length; p++) { |
| 32 |
panels[p].classList.toggle("is-active", p === i); |
| 33 |
} |
| 34 |
root.setAttribute("data-active", i); |
| 35 |
} |
| 36 |
for (var i = 0; i < buttons.length; i++) { |
| 37 |
(function (idx) { |
| 38 |
buttons[idx].addEventListener("click", function () { |
| 39 |
activate(idx); |
| 40 |
}); |
| 41 |
})(i); |
| 42 |
} |
| 43 |
activate(Math.max(0, Math.min(active, panels.length - 1))); |
| 44 |
} |
| 45 |
function boot() { |
| 46 |
var roots = document.querySelectorAll(".wp-block-ai-builder-aibui-tabs"); |
| 47 |
for (var i = 0; i < roots.length; i++) { |
| 48 |
init(roots[i]); |
| 49 |
} |
| 50 |
} |
| 51 |
if (document.readyState === "loading") { |
| 52 |
document.addEventListener("DOMContentLoaded", boot); |
| 53 |
} else { |
| 54 |
boot(); |
| 55 |
} |
| 56 |
})(); |
| 57 |
|