fix(sidebar): hide Analytics via toggle

This commit is contained in:
2026-06-22 18:02:24 +09:30
parent e3ec6c80d0
commit f570e47e27
14 changed files with 334 additions and 109 deletions
@@ -3,6 +3,11 @@ import MenuitemSVGKey from "@/seqta/content/MenuItemSVGKey.json";
import { waitForElm } from "@/seqta/utils/waitForElm";
import { isSeqtaEngageExperience } from "@/seqta/utils/isSeqtaEngage";
import { processMenuItemNode } from "@/seqta/utils/sidebarMenuIcons";
import { MenuOptionsOpen } from "@/seqta/utils/Openers/OpenMenuOptions";
import {
applyMenuItemVisibility,
isMenuItemHidden,
} from "@/seqta/utils/menuItemVisibility";
import { loadAnalyticsPage } from "../loadAnalyticsPage";
import styles from "../styles.css?inline";
@@ -17,7 +22,7 @@ const gradeAnalyticsPlugin: Plugin<{}> = {
"Adds an analytics page with grade trends, distribution charts, and assessment history",
version: "1.0.0",
settings: {},
disableToggle: false,
disableToggle: true,
styles,
run: async () => {
@@ -25,6 +30,10 @@ const gradeAnalyticsPlugin: Plugin<{}> = {
return () => {};
}
if (isMenuItemHidden("analytics")) {
return () => {};
}
const menuList = (await waitForElm("#menu > ul, #menu ul", true, 100, 60)) as HTMLElement;
const analyticsItem = document.createElement("li");
@@ -44,8 +53,11 @@ const gradeAnalyticsPlugin: Plugin<{}> = {
}
processMenuItemNode(analyticsItem);
applyMenuItemVisibility();
const menuObserver = new MutationObserver(() => {
if (MenuOptionsOpen) return;
if (isMenuItemHidden("analytics")) return;
if (!menuList.contains(analyticsItem)) {
if (homeButton?.parentElement === menuList) {
homeButton.insertAdjacentElement("afterend", analyticsItem);
@@ -53,11 +65,20 @@ const gradeAnalyticsPlugin: Plugin<{}> = {
menuList.insertBefore(analyticsItem, menuList.firstChild);
}
processMenuItemNode(analyticsItem);
applyMenuItemVisibility();
}
});
menuObserver.observe(menuList, { childList: true });
const onClick = (e: Event) => {
const target = e.target as HTMLElement;
if (
MenuOptionsOpen ||
analyticsItem.classList.contains("draggable") ||
target.closest(".onoffswitch, .editmenuoption-container")
) {
return;
}
e.preventDefault();
window.history.pushState({}, "", "/#?page=/analytics");
void loadAnalyticsPage();