PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.11
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.11
2.0.13 2.0.12 2.0.11 2.0.10 2.0.9 trunk 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
blockenberg / blocks / use-case-section / frontend.js

frontend.js in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.11, at blocks/use-case-section/frontend.js

45 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ====================================================
2 Use Case Section — frontend.js
3 Handles: tabs display mode switching
4 ==================================================== */
5 (function () {
6 'use strict';
7
8 document.querySelectorAll('.bkbg-usec-wrap[data-display-style="tabs"]').forEach(function (wrap) {
9 var grid = wrap.querySelector('.bkbg-usec-grid--tabs');
10 if (!grid) return;
11
12 var cards = Array.from(grid.querySelectorAll('.bkbg-usec-card'));
13 if (cards.length === 0) return;
14
15 /* Build tab nav */
16 var nav = document.createElement('div');
17 nav.className = 'bkbg-usec-tabs-nav';
18
19 cards.forEach(function (card, idx) {
20 var label = card.dataset.tabLabel || ('Tab ' + (idx + 1));
21 var btn = document.createElement('button');
22 btn.type = 'button';
23 btn.className = 'bkbg-usec-tab-btn' + (idx === 0 ? ' is-active' : '');
24 btn.textContent = label;
25
26 btn.addEventListener('click', function () {
27 /* Deactivate all */
28 nav.querySelectorAll('.bkbg-usec-tab-btn').forEach(function (b) { b.classList.remove('is-active'); });
29 cards.forEach(function (c) { c.classList.remove('is-active'); });
30 /* Activate selected */
31 btn.classList.add('is-active');
32 cards[idx].classList.add('is-active');
33 });
34
35 nav.appendChild(btn);
36 });
37
38 /* Insert nav before grid */
39 grid.parentNode.insertBefore(nav, grid);
40
41 /* Show first card */
42 cards[0].classList.add('is-active');
43 });
44 })();
45