Открытая группа меню закрывает соседнюю
CI / lint-test (push) Successful in 17s Details
CI / build-push (push) Successful in 18s Details

При наведении или клике на «Сообщения»/«Пользователи» остальные группы теперь закрываются сразу, поэтому два списка не висят одновременно. Клик вне меню по-прежнему закрывает всё.
This commit is contained in:
MpakobecEx 2026-10-26 02:32:01 +05:00
parent 92d2d1efcc
commit afeed5b67e
4 changed files with 25 additions and 11 deletions

View File

@ -171,7 +171,7 @@ make backup E=test # на домашнем сервере: ./scripts/clickho
## Версионирование
- Единый источник версии — `common/version.py` (`__version__`), текущая — `0.6.6`.
- Единый источник версии — `common/version.py` (`__version__`), текущая — `0.6.7`.
- Схема — SemVer-подобная (`MAJOR.MINOR.PATCH`); git-тег = `v` + версия (`v0.1`).
- Docker-образы тегируются версией (Блок 2), события ClickHouse получают `bot_version` (Блок 3).
- Выпуск: изменить `common/version.py` → коммит → аннотированный тег `vX.Y` → `git push --tags`.

View File

@ -98,6 +98,23 @@
}
var groups = document.querySelectorAll("[data-group]");
function hideGroup(group) {
var dropdown = group.querySelector("[data-group-dropdown]");
var toggle = group.querySelector("[data-group-toggle]");
if (dropdown) {
dropdown.classList.add("hidden");
dropdown.classList.remove("flex");
}
if (toggle) toggle.setAttribute("aria-expanded", "false");
}
function hideOthers(current) {
groups.forEach(function (group) {
if (group !== current) hideGroup(group);
});
}
groups.forEach(function (group) {
var toggle = group.querySelector("[data-group-toggle]");
var dropdown = group.querySelector("[data-group-dropdown]");
@ -114,12 +131,15 @@
toggle.addEventListener("click", function (event) {
event.stopPropagation();
if (closeTimer) clearTimeout(closeTimer);
setOpen(dropdown.classList.contains("hidden"));
var willOpen = dropdown.classList.contains("hidden");
if (willOpen) hideOthers(group);
setOpen(willOpen);
});
if (window.matchMedia("(min-width: 640px)").matches) {
group.addEventListener("mouseenter", function () {
if (closeTimer) clearTimeout(closeTimer);
hideOthers(group);
setOpen(true);
});
group.addEventListener("mouseleave", function () {
@ -130,13 +150,7 @@
});
document.addEventListener("click", function () {
groups.forEach(function (group) {
var dropdown = group.querySelector("[data-group-dropdown]");
if (dropdown) {
dropdown.classList.add("hidden");
dropdown.classList.remove("flex");
}
});
groups.forEach(hideGroup);
});
var tags = {

View File

@ -7,4 +7,4 @@
from __future__ import annotations
__version__ = "0.6.6"
__version__ = "0.6.7"

View File

@ -7,4 +7,4 @@ from common import __version__
def test_version_is_set():
assert __version__
assert __version__ == "0.6.6"
assert __version__ == "0.6.7"