fix: sidebar layout not being applied on pageload #249

This commit is contained in:
SethBurkart123
2025-04-06 14:03:51 +10:00
parent bb6ee72159
commit 0c1a71f398
4 changed files with 252 additions and 235 deletions
+20 -5
View File
@@ -465,8 +465,6 @@ export function tryLoad() {
) )
} }
function ReplaceMenuSVG(element: HTMLElement, svg: string) { function ReplaceMenuSVG(element: HTMLElement, svg: string) {
let item = element.firstChild as HTMLElement let item = element.firstChild as HTMLElement
item!.firstChild!.remove() item!.firstChild!.remove()
@@ -477,9 +475,10 @@ function ReplaceMenuSVG(element: HTMLElement, svg: string) {
item.insertBefore(newsvg as Node, item.firstChild) item.insertBefore(newsvg as Node, item.firstChild)
} }
const processedSymbol = Symbol('processed')
export async function ObserveMenuItemPosition() { export async function ObserveMenuItemPosition() {
await waitForElm("#menu > ul > li") await waitForElm("#menu > ul > li")
await delay(100)
eventManager.register( eventManager.register(
"menuList", "menuList",
@@ -488,6 +487,19 @@ export async function ObserveMenuItemPosition() {
}, },
(element: Element) => { (element: Element) => {
const node = element as HTMLElement const node = element as HTMLElement
// Only process top-level menu items and skip everything else
if (!node.classList.contains('item') ||
node.nodeName !== 'LI' ||
node.parentElement?.parentElement?.id !== 'menu') {
return
}
// Early exit if already processed
if ((element as any)[processedSymbol]) {
return
}
if (!node?.dataset?.checked && !MenuOptionsOpen) { if (!node?.dataset?.checked && !MenuOptionsOpen) {
const key = const key =
MenuitemSVGKey[node?.dataset?.key! as keyof typeof MenuitemSVGKey] MenuitemSVGKey[node?.dataset?.key! as keyof typeof MenuitemSVGKey]
@@ -511,7 +523,9 @@ export async function ObserveMenuItemPosition() {
label.replaceChild(span, textNode) label.replaceChild(span, textNode)
} }
} }
ChangeMenuItemPositions(settingsState.menuorder) ChangeMenuItemPositions(settingsState.menuorder);
(element as any)[processedSymbol] = true
} }
}, },
) )
@@ -584,9 +598,10 @@ export function init() {
if (settingsState.onoff) { if (settingsState.onoff) {
console.info("[BetterSEQTA+] Enabled") console.info("[BetterSEQTA+] Enabled")
if (settingsState.DarkMode) document.documentElement.classList.add("dark") if (settingsState.DarkMode) document.documentElement.classList.add("dark");
document.querySelector(".legacy-root")?.classList.add("hidden") document.querySelector(".legacy-root")?.classList.add("hidden")
ObserveMenuItemPosition();
new StorageChangeHandler() new StorageChangeHandler()
new MessageHandler() new MessageHandler()
+11 -8
View File
@@ -1,4 +1,5 @@
import type { SettingsState } from "@/types/storage"
import { settingsState } from "../listeners/SettingsState" import { settingsState } from "../listeners/SettingsState"
import stringToHTML from "../stringToHTML" import stringToHTML from "../stringToHTML"
import Sortable from "sortablejs" import Sortable from "sortablejs"
@@ -212,22 +213,24 @@ export function OpenMenuOptions() {
} }
saveNewOrder(sortable) saveNewOrder(sortable)
}) })
} }
function saveNewOrder(sortable: any) {
function saveNewOrder(sortable: any) {
var order = sortable.toArray() var order = sortable.toArray()
settingsState.menuorder = order settingsState.menuorder = order
} }
function cloneAttributes(target: any, source: any) { function cloneAttributes(target: any, source: any) {
[...source.attributes].forEach((attr) => { [...source.attributes].forEach((attr) => {
target.setAttribute(attr.nodeName, attr.nodeValue) target.setAttribute(attr.nodeName, attr.nodeValue)
}) })
} }
export function ChangeMenuItemPositions(storage: any) {
let menuorder = storage
export function ChangeMenuItemPositions(menuorder: SettingsState["menuorder"]) {
var menuList = document.querySelector("#menu")!.firstChild!.childNodes var menuList = document.querySelector("#menu")!.firstChild!.childNodes
let listorder = [] let listorder = []
@@ -253,4 +256,4 @@ export function OpenMenuOptions() {
listItemsDOM!.appendChild(element) listItemsDOM!.appendChild(element)
} }
} }
} }
+1 -1
View File
@@ -2,7 +2,7 @@ import { settingsState } from "./listeners/SettingsState"
import { animate, stagger } from "motion" import { animate, stagger } from "motion"
import stringToHTML from "./stringToHTML" import stringToHTML from "./stringToHTML"
import browser from "webextension-polyfill" import browser from "webextension-polyfill"
import kofi from "@/resources/kofi.png" import kofi from "@/resources/kofi.png?base64"
export async function DeleteWhatsNew() { export async function DeleteWhatsNew() {
const bkelement = document.getElementById("whatsnewbk") const bkelement = document.getElementById("whatsnewbk")
@@ -108,7 +108,6 @@ export class MessageHandler {
editSidebar() { editSidebar() {
if (!MenuOptionsOpen) { if (!MenuOptionsOpen) {
OpenMenuOptions(); OpenMenuOptions();
closeExtensionPopup();
} }
} }
} }