(function () { 'use strict'; var mobile = document.getElementById('mobileMenuBtn'); if (mobile) mobile.addEventListener('click', function () { var menu = document.querySelector('.nav-menu'); var right = document.querySelector('.nav-right'); if (menu) { menu.classList.toggle('active'); mobile.setAttribute('aria-expanded', String(menu.classList.contains('active'))); } if (right) right.classList.toggle('active'); }); document.querySelectorAll('.nav-menu > div > a').forEach(function (link) { var dropdown = link.parentElement.querySelector('.nav-cont'); if (dropdown) link.addEventListener('click', function (event) { if (window.innerWidth <= 900) { event.preventDefault(); dropdown.classList.toggle('active'); } }); }); document.querySelectorAll('.language-selected').forEach(function (button) { button.setAttribute('role', 'button'); button.tabIndex = 0; button.setAttribute('aria-haspopup', 'true'); function toggle(event) { event.stopPropagation(); button.closest('.language-selector').classList.toggle('active'); } button.addEventListener('click', toggle); button.addEventListener('keydown', function (event) { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); toggle(event); } }); }); document.addEventListener('click', function () { document.querySelectorAll('.language-selector.active').forEach(function (element) { element.classList.remove('active'); }); }); if (window.Swiper) document.querySelectorAll('.swiper, .swiper-container').forEach(function (element) { if (element.swiper || !element.querySelector('.swiper-wrapper')) return; var count = element.querySelectorAll('.swiper-slide').length; new window.Swiper(element, { loop: count > 1, speed: 550, autoplay: count > 1 ? { delay: 6000, disableOnInteraction: false } : false, pagination: { el: element.querySelector('.swiper-pagination'), clickable: true }, navigation: { nextEl: element.querySelector('.swiper-button-next'), prevEl: element.querySelector('.swiper-button-prev') } }); }); document.querySelectorAll('.country-item').forEach(function (item) { item.addEventListener('click', function () { var siblings = Array.from(item.parentElement.children); var index = siblings.indexOf(item); siblings.forEach(function (sibling) { sibling.classList.toggle('active', sibling === item); }); item.parentElement.parentElement.querySelectorAll('.hot-list').forEach(function (list, i) { list.classList.toggle('active', i === index); }); }); }); document.querySelectorAll('[data-local-filter]').forEach(function (input) { input.addEventListener('input', function () { var query = input.value.toLowerCase().trim(); document.querySelectorAll('[data-filter-row]').forEach(function (row) { row.hidden = query && !row.textContent.toLowerCase().includes(query); }); }); }); var search = document.getElementById('document-input'); var searchButton = document.querySelector('.input-search .search-btn'); if (search && searchButton) { function navigateSearch() { var target = new URL(search.dataset.results || 'document-result.html', location.href); target.searchParams.set('search', search.value.trim()); location.href = target.href; } searchButton.setAttribute('role', 'button'); searchButton.tabIndex = 0; searchButton.addEventListener('click', navigateSearch); search.addEventListener('keydown', function (event) { if (event.key === 'Enter') { event.preventDefault(); navigateSearch(); } }); } var searchData = document.getElementById('static-search-data'); var results = document.getElementById('static-search-results'); var queryInput = document.getElementById('static-search-query'); if (searchData && results && queryInput) { var data = JSON.parse(searchData.textContent); var params = new URLSearchParams(location.search); queryInput.value = params.get('search') || ''; function renderSearch() { var query = queryInput.value.trim().toLowerCase(); results.replaceChildren(); var found = data.items.filter(function (item) { return !query || (item.title + ' ' + item.text).toLowerCase().includes(query); }); found.forEach(function (item) { var li = document.createElement('li'); var link = document.createElement('a'); link.href = item.href; link.textContent = item.title; li.append(link); results.append(li); }); if (!found.length) { var li = document.createElement('li'); li.textContent = data.empty; results.append(li); } } document.getElementById('static-search-form').addEventListener('submit', function (event) { event.preventDefault(); var url = new URL(location.href); url.searchParams.set('search', queryInput.value.trim()); history.replaceState(null, '', url); renderSearch(); }); queryInput.addEventListener('input', renderSearch); renderSearch(); } document.querySelectorAll('.static-article img, .practice img').forEach(function (img) { img.style.cursor = 'zoom-in'; img.addEventListener('click', function () { var dialog = document.createElement('dialog'); dialog.className = 'static-lightbox'; var close = document.createElement('button'); close.type = 'button'; close.setAttribute('aria-label', document.documentElement.lang === 'en' ? 'Close' : '关闭'); close.textContent = '\u00d7'; var picture = document.createElement('img'); picture.src = img.src; picture.alt = img.alt; dialog.append(close, picture); document.body.append(dialog); close.addEventListener('click', function () { dialog.close(); }); dialog.addEventListener('click', function (event) { if (event.target === dialog) dialog.close(); }); dialog.addEventListener('close', function () { dialog.remove(); }); dialog.showModal(); }); }); })();