From e38da24dc2b451980995a464173f51bc9a5a3e22 Mon Sep 17 00:00:00 2001 From: Wx-2025 <351320169@qq.com> Date: Tue, 8 Jul 2025 11:05:42 +0800 Subject: [PATCH] Update drawer.js --- ui/drawer.js | 119 +++++++++++++++++++++++++++------------------------ 1 file changed, 64 insertions(+), 55 deletions(-) diff --git a/ui/drawer.js b/ui/drawer.js index 08ffbd5..3d5e700 100644 --- a/ui/drawer.js +++ b/ui/drawer.js @@ -1,3 +1,6 @@ + +import { getSlideToggleOptions } from '/script.js'; +import { slideToggle } from '/lib.js'; import { extension_settings } from "/scripts/extensions.js"; import { extensionName, defaultSettings } from "../utils/settings.js"; import { @@ -62,70 +65,76 @@ async function loadSettings() { export function createDrawer() { if ($("#amily2-main-drawer").length > 0) return; - const amily2DrawerHtml = ` -
-
-
-
- -
- `; +const amily2DrawerHtml = ` +
+
+ +
+ +
+ `; $("#sys-settings-button").after(amily2DrawerHtml); - $(document).on( - "mousedown", - "#amily2-main-drawer .drawer-toggle", - async function (e) { - e.preventDefault(); - e.stopPropagation(); +$(document).on( + "mousedown", + "#amily2_drawer_icon", + async function (e) { + e.preventDefault(); + e.stopPropagation(); - const drawerIcon = $("#amily2-drawer-icon"); - const contentPanel = $("#amily2-drawer-content"); - const isOpening = drawerIcon.hasClass("closedIcon"); + const drawerIcon = $(this); + const contentPanel = $("#amily2_drawer_content"); - $(".openIcon") - .not(drawerIcon) - .removeClass("openIcon") - .addClass("closedIcon"); - $(".openDrawer") - .not(contentPanel) - .removeClass("openDrawer") - .slideUp({ duration: 200, easing: "swing" }); + + $('.openDrawer').not(contentPanel).not('.pinnedOpen').addClass('resizing').each((_, el) => { + slideToggle(el, { + ...getSlideToggleOptions(), + onAnimationEnd: function (el) { + el.closest('.drawer-content').classList.remove('resizing'); + }, + }); + }); + + $('.openIcon').not(drawerIcon).not('.drawerPinnedOpen').toggleClass('closedIcon openIcon'); + $('.openDrawer').not(contentPanel).not('.pinnedOpen').toggleClass('closedDrawer openDrawer'); + + drawerIcon.toggleClass('closedIcon openIcon'); + contentPanel.toggleClass('closedDrawer openDrawer'); - drawerIcon.toggleClass("closedIcon openIcon"); - contentPanel.toggleClass("openDrawer"); - contentPanel.slideToggle({ - duration: 200, - easing: "swing", - }); + contentPanel.addClass('resizing').each((_, el) => { + slideToggle(el, { + ...getSlideToggleOptions(), + onAnimationEnd: function (el) { + el.closest('.drawer-content').classList.remove('resizing'); + }, + }); + }); - const isInitialized = contentPanel.data("initialized"); - if (isOpening && !isInitialized) { - try { - const modalContent = await $.get( - `${extensionFolderPath}/assets/amily2-modal.html`, - ); - contentPanel.html(modalContent); - await loadSettings(); - bindModalEvents(); - contentPanel.data("initialized", true); - - console.log("[Amily2号-建设部] 宫殿内室已根据最高指令激活。"); - } catch (error) { - - console.error("[Amily2号-建设部] 加载宫殿内部HTML失败:", error); - contentPanel.html( - '

紧急报告:无法加载Amily2号府邸内饰。

', - ); - } + const isInitialized = contentPanel.data("initialized"); + if (drawerIcon.hasClass("openIcon") && !isInitialized) { + try { + const extensionFolderPath = `scripts/extensions/third-party/${extensionName}`; + const modalContent = await $.get( + `${extensionFolderPath}/assets/amily2-modal.html`, + ); + contentPanel.html(modalContent); + await loadSettings(); + bindModalEvents(); + contentPanel.data("initialized", true); + console.log("[Amily2号-建设部] 宫殿内室已根据最高指令激活。"); + } catch (error) { + console.error("[Amily2号-建设部] 加载宫殿内部HTML失败:", error); + contentPanel.html( + '

紧急报告:无法加载Amily2号府邸内饰。

', + ); } - - }, - ); + } + }, +); }