Додані повідомлення та перепрацьована структура застосунку та api

This commit is contained in:
2026-03-15 00:25:10 +02:00
parent 85483b85bb
commit 4bc9c11512
101 changed files with 5763 additions and 2546 deletions

View File

@@ -94,12 +94,55 @@ Router
pageActive();
})
function pageActive(element) {
const active = document.querySelector("nav li [data-state='active']");
if (active) active.setAttribute('data-state', '');
// function pageActive(element) {
// const active = document.querySelector("nav-item[data-state='active']");
// if (active) active.setAttribute('data-state', '');
// if (element) {
// const target = document.getElementById(`menu-${element}`);
// if (target) target.setAttribute('data-state', 'active');
// }
// }
function pageActive(element) {
// 1. Знаходимо контейнер меню
const navContainer = document.querySelector('navigation-container');
if (!navContainer) {
console.warn('Компонент <navigation-container> не знайдено.');
return;
}
// 2. Видаляємо активний стан у всіх елементів.
// Шукаємо як у Light DOM (через querySelectorAll на документі),
// так і у Shadow DOM (через shadowRoot).
const activeInLight = document.querySelector("nav-item[data-state='active']");
if (activeInLight) {
activeInLight.setAttribute('data-state', '');
}
const activeInShadow = navContainer.shadowRoot.querySelector("nav-item[data-state='active']");
if (activeInShadow) {
activeInShadow.setAttribute('data-state', '');
}
// 3. Знаходимо цільовий елемент
if (element) {
const target = document.getElementById(`nav-${element}`);
if (target) target.setAttribute('data-state', 'active');
const targetId = `menu-${element}`;
let target = null;
// Спробуємо знайти в основному DOM
target = document.getElementById(targetId);
// Якщо не знайдено, шукаємо у Shadow DOM контейнера
if (!target) {
// Використовуємо querySelector для пошуку по всьому shadowRoot
// Якщо елементи переміщені у itemsHiddenContainer, вони будуть тут
target = navContainer.shadowRoot.querySelector(`#${targetId}`);
}
// 4. Встановлюємо активний стан, якщо знайдено
if (target) {
target.setAttribute('data-state', 'active');
}
}
}