Update drawer.js

This commit is contained in:
2025-07-08 11:05:42 +08:00
committed by GitHub
parent 348acd7c1c
commit e38da24dc2

View File

@@ -1,3 +1,6 @@
import { getSlideToggleOptions } from '/script.js';
import { slideToggle } from '/lib.js';
import { extension_settings } from "/scripts/extensions.js"; import { extension_settings } from "/scripts/extensions.js";
import { extensionName, defaultSettings } from "../utils/settings.js"; import { extensionName, defaultSettings } from "../utils/settings.js";
import { import {
@@ -62,70 +65,76 @@ async function loadSettings() {
export function createDrawer() { export function createDrawer() {
if ($("#amily2-main-drawer").length > 0) return; if ($("#amily2-main-drawer").length > 0) return;
const amily2DrawerHtml = ` const amily2DrawerHtml = `
<div id="amily2-main-drawer" class="drawer"> <div id="amily2-main-drawer" class="drawer">
<div class="drawer-toggle drawer-header" title="Amily2号优化助手"> <div id="amily2_drawer_icon" class="drawer-toggle drawer-header closedIcon interactable" title="Amily2号优化助手" tabindex="0">
<div id="amily2-drawer-icon" class="drawer-icon fa-solid fa-magic fa-fw closedIcon interactable" tabindex="0"></div> <i class="drawer-icon fa-solid fa-magic fa-fw"></i>
</div> </div>
<div id="amily2-drawer-content" class="drawer-content" style="display: none;"> <div id="amily2_drawer_content" class="drawer-content closedDrawer" style="display: none;">
<!-- 王座将在此处动态加载 --> <!-- 王座将在此处动态加载 -->
</div> </div>
</div> </div>
`; `;
$("#sys-settings-button").after(amily2DrawerHtml); $("#sys-settings-button").after(amily2DrawerHtml);
$(document).on( $(document).on(
"mousedown", "mousedown",
"#amily2-main-drawer .drawer-toggle", "#amily2_drawer_icon",
async function (e) { async function (e) {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
const drawerIcon = $("#amily2-drawer-icon"); const drawerIcon = $(this);
const contentPanel = $("#amily2-drawer-content"); const contentPanel = $("#amily2_drawer_content");
const isOpening = drawerIcon.hasClass("closedIcon");
$(".openIcon")
.not(drawerIcon) $('.openDrawer').not(contentPanel).not('.pinnedOpen').addClass('resizing').each((_, el) => {
.removeClass("openIcon") slideToggle(el, {
.addClass("closedIcon"); ...getSlideToggleOptions(),
$(".openDrawer") onAnimationEnd: function (el) {
.not(contentPanel) el.closest('.drawer-content').classList.remove('resizing');
.removeClass("openDrawer") },
.slideUp({ duration: 200, easing: "swing" }); });
});
$('.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.addClass('resizing').each((_, el) => {
contentPanel.toggleClass("openDrawer"); slideToggle(el, {
contentPanel.slideToggle({ ...getSlideToggleOptions(),
duration: 200, onAnimationEnd: function (el) {
easing: "swing", el.closest('.drawer-content').classList.remove('resizing');
}); },
});
});
const isInitialized = contentPanel.data("initialized"); const isInitialized = contentPanel.data("initialized");
if (isOpening && !isInitialized) { if (drawerIcon.hasClass("openIcon") && !isInitialized) {
try { try {
const modalContent = await $.get( const extensionFolderPath = `scripts/extensions/third-party/${extensionName}`;
`${extensionFolderPath}/assets/amily2-modal.html`, const modalContent = await $.get(
); `${extensionFolderPath}/assets/amily2-modal.html`,
contentPanel.html(modalContent); );
await loadSettings(); contentPanel.html(modalContent);
bindModalEvents(); await loadSettings();
contentPanel.data("initialized", true); bindModalEvents();
contentPanel.data("initialized", true);
console.log("[Amily2号-建设部] 宫殿内室已根据最高指令激活。"); console.log("[Amily2号-建设部] 宫殿内室已根据最高指令激活。");
} catch (error) { } catch (error) {
console.error("[Amily2号-建设部] 加载宫殿内部HTML失败:", error);
console.error("[Amily2号-建设部] 加载宫殿内部HTML失败:", error); contentPanel.html(
contentPanel.html( '<p style="color:red; padding: 20px;">紧急报告无法加载Amily2号府邸内饰。</p>',
'<p style="color:red; padding: 20px;">紧急报告无法加载Amily2号府邸内饰。</p>', );
);
}
} }
}
}, },
); );
} }