fulfillment
This commit is contained in:
parent
e8f1d1db1e
commit
2e90add2e1
67 changed files with 5427 additions and 690 deletions
|
|
@ -44,8 +44,12 @@
|
|||
const style = document.createElement("style");
|
||||
style.id = "freezeSystemStyles";
|
||||
style.textContent = `
|
||||
.frozen-panel { margin-top: 10px; padding: 10px; border: 1px solid rgba(82, 63, 43, 0.18); border-radius: 14px; background: rgba(244, 249, 255, 0.72); }
|
||||
.frozen-panel-title { display:flex; align-items:center; justify-content:space-between; gap:8px; font-weight:700; font-size:13px; color:#4f5f70; margin-bottom:8px; }
|
||||
.frozen-panel { margin-top: 10px; padding: 8px; border: 1px solid rgba(82, 63, 43, 0.18); border-radius: 14px; background: rgba(244, 249, 255, 0.72); }
|
||||
.frozen-panel-title { display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; border:0; background:transparent; padding:0; font-weight:700; font-size:13px; color:#4f5f70; margin:0; cursor:pointer; text-align:left; }
|
||||
.frozen-panel-title::before { content:"▸"; width:14px; color:rgba(79,95,112,.74); }
|
||||
.frozen-panel:not(.collapsed) .frozen-panel-title::before { content:"▾"; }
|
||||
.frozen-panel-body { margin-top:8px; }
|
||||
.frozen-panel.collapsed .frozen-panel-body { display:none; }
|
||||
.frozen-panel-count { font-size:12px; opacity:.72; }
|
||||
.frozen-list { display:grid; grid-template-columns: 1fr; gap:7px; }
|
||||
.frozen-card { display:flex; align-items:center; gap:8px; width:100%; border:1px solid rgba(72, 98, 124, .20); border-radius:12px; padding:7px; background:rgba(255,255,255,.78); cursor:grab; color:#354657; text-align:left; box-shadow: 0 2px 7px rgba(41,53,65,.06); }
|
||||
|
|
@ -64,16 +68,23 @@
|
|||
function ensurePanel() {
|
||||
ensureStyles();
|
||||
let panel = document.getElementById("frozenPanel");
|
||||
if (panel) return panel;
|
||||
if (panel) {
|
||||
const operateBody = document.querySelector('[data-tool-category="operate"] .tool-category-body');
|
||||
if (operateBody && panel.parentNode !== operateBody) operateBody.appendChild(panel);
|
||||
return panel;
|
||||
}
|
||||
panel = document.createElement("section");
|
||||
panel.id = "frozenPanel";
|
||||
panel.className = "frozen-panel";
|
||||
panel.classList.add("collapsed");
|
||||
panel.innerHTML = `
|
||||
<div class="frozen-panel-title"><span>冷凍個体</span><span id="frozenPanelCount" class="frozen-panel-count">0</span></div>
|
||||
<div id="frozenList" class="frozen-list"></div>
|
||||
<button class="frozen-panel-title" type="button" aria-expanded="false"><span>冷凍個体</span><span id="frozenPanelCount" class="frozen-panel-count">0</span></button>
|
||||
<div class="frozen-panel-body"><div id="frozenList" class="frozen-list"></div></div>
|
||||
`;
|
||||
const operateBody = document.querySelector('[data-tool-category="operate"] .tool-category-body');
|
||||
const anchor = global.ui?.toolPalette || document.getElementById("toolPalette");
|
||||
if (anchor?.parentNode) anchor.parentNode.insertBefore(panel, anchor.nextSibling);
|
||||
if (operateBody) operateBody.appendChild(panel);
|
||||
else if (anchor?.parentNode) anchor.parentNode.insertBefore(panel, anchor.nextSibling);
|
||||
else document.body.appendChild(panel);
|
||||
return panel;
|
||||
}
|
||||
|
|
@ -246,6 +257,12 @@
|
|||
const panel = ensurePanel();
|
||||
if (panel.dataset.freezeBound !== "1") {
|
||||
panel.dataset.freezeBound = "1";
|
||||
panel.addEventListener("click", (e) => {
|
||||
const title = e.target.closest(".frozen-panel-title");
|
||||
if (!title) return;
|
||||
const collapsed = !panel.classList.toggle("collapsed");
|
||||
title.setAttribute("aria-expanded", collapsed ? "true" : "false");
|
||||
});
|
||||
panel.addEventListener("dragstart", (e) => {
|
||||
const card = e.target.closest(".frozen-card[data-frozen-id]");
|
||||
if (!card) return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue