fix: sidebar layout not being applied on pageload #249

This commit is contained in:
SethBurkart123
2025-04-06 14:03:51 +10:00
parent eb2c665843
commit fbf066cea8
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) {
let item = element.firstChild as HTMLElement
item!.firstChild!.remove()
@@ -477,9 +475,10 @@ function ReplaceMenuSVG(element: HTMLElement, svg: string) {
item.insertBefore(newsvg as Node, item.firstChild)
}
const processedSymbol = Symbol('processed')
export async function ObserveMenuItemPosition() {
await waitForElm("#menu > ul > li")
await delay(100)
eventManager.register(
"menuList",
@@ -488,6 +487,19 @@ export async function ObserveMenuItemPosition() {
},
(element: Element) => {
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) {
const key =
MenuitemSVGKey[node?.dataset?.key! as keyof typeof MenuitemSVGKey]
@@ -511,7 +523,9 @@ export async function ObserveMenuItemPosition() {
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) {
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")
ObserveMenuItemPosition();
new StorageChangeHandler()
new MessageHandler()
+5 -2
View File
@@ -1,4 +1,5 @@
import type { SettingsState } from "@/types/storage"
import { settingsState } from "../listeners/SettingsState"
import stringToHTML from "../stringToHTML"
import Sortable from "sortablejs"
@@ -214,6 +215,8 @@ export function OpenMenuOptions() {
})
}
function saveNewOrder(sortable: any) {
var order = sortable.toArray()
settingsState.menuorder = order
@@ -225,9 +228,9 @@ export function OpenMenuOptions() {
})
}
export function ChangeMenuItemPositions(storage: any) {
let menuorder = storage
export function ChangeMenuItemPositions(menuorder: SettingsState["menuorder"]) {
var menuList = document.querySelector("#menu")!.firstChild!.childNodes
let listorder = []
+1 -1
View File
@@ -2,7 +2,7 @@ import { settingsState } from "./listeners/SettingsState"
import { animate, stagger } from "motion"
import stringToHTML from "./stringToHTML"
import browser from "webextension-polyfill"
import kofi from "@/resources/kofi.png"
import kofi from "@/resources/kofi.png?base64"
export async function DeleteWhatsNew() {
const bkelement = document.getElementById("whatsnewbk")
@@ -108,7 +108,6 @@ export class MessageHandler {
editSidebar() {
if (!MenuOptionsOpen) {
OpenMenuOptions();
closeExtensionPopup();
}
}
}