| 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 |
|