PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.7
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.7
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 / glossary / frontend.js

frontend.js in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.7, at blocks/glossary/frontend.js

71 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function () {
2 'use strict';
3
4 document.querySelectorAll('.bkbg-gl-list').forEach(function (list) {
5 var opts = {};
6 try { opts = JSON.parse(list.dataset.opts || '{}'); } catch (e) {}
7
8 var items = list.querySelectorAll('.bkbg-gl-item');
9
10 /* --- Expandable accordion --- */
11 if (opts.expandable) {
12 items.forEach(function (item) {
13 var term = item.querySelector('.bkbg-gl-term');
14 var def = item.querySelector('.bkbg-gl-def');
15 if (!term || !def) return;
16 def.style.display = 'none';
17 term.setAttribute('role', 'button');
18 term.setAttribute('aria-expanded', 'false');
19 term.style.cursor = 'pointer';
20 term.addEventListener('click', function () {
21 var open = def.style.display !== 'none';
22 def.style.display = open ? 'none' : '';
23 term.setAttribute('aria-expanded', String(!open));
24 });
25 });
26 }
27
28 /* --- Alpha nav smooth scroll --- */
29 var wrap = list.closest('[class*="bkbg-gl"]') || list.parentElement;
30 var nav = wrap && wrap.querySelector('.bkbg-gl-alpha-nav');
31 if (nav) {
32 nav.querySelectorAll('.bkbg-gl-nav-btn.active').forEach(function (btn) {
33 btn.addEventListener('click', function (e) {
34 var href = btn.getAttribute('href');
35 if (!href) return;
36 e.preventDefault();
37 var target = document.querySelector(href);
38 if (target) {
39 target.scrollIntoView({ behavior: 'smooth', block: 'start' });
40 }
41 });
42 });
43 }
44 });
45
46 /* --- Search --- (listens on the search input above the list) */
47 document.querySelectorAll('.bkbg-gl-search').forEach(function (input) {
48 var wrap = input.closest('[class*="bkbg-gl"]') || input.parentElement;
49 var listEl = wrap && wrap.querySelector('.bkbg-gl-list');
50 if (!listEl) return;
51
52 input.addEventListener('input', function () {
53 var q = input.value.trim().toLowerCase();
54 var items = listEl.querySelectorAll('.bkbg-gl-item');
55 items.forEach(function (item) {
56 var term = (item.dataset.term || '').toLowerCase();
57 var def = (item.querySelector('.bkbg-gl-def') || {}).textContent || '';
58 var match = !q || term.indexOf(q) !== -1 || def.toLowerCase().indexOf(q) !== -1;
59 item.classList.toggle('hidden', !match);
60 });
61 // Hide empty letter sections
62 if (listEl) {
63 listEl.querySelectorAll('.bkbg-gl-letter-section').forEach(function (section) {
64 var visible = section.querySelectorAll('.bkbg-gl-item:not(.hidden)').length > 0;
65 section.style.display = visible ? '' : 'none';
66 });
67 }
68 });
69 });
70 })();
71