From 4768f66c3967b1983a25a83e8f8da551c86682f0 Mon Sep 17 00:00:00 2001 From: wxs Date: Fri, 17 Jul 2026 10:54:41 +0800 Subject: [PATCH] fix: remove metric catalog search --- src/content/market/plugin-toolbar.ts | 49 ++-------------------------- tests/market-content-entry.test.ts | 20 +++--------- 2 files changed, 7 insertions(+), 62 deletions(-) diff --git a/src/content/market/plugin-toolbar.ts b/src/content/market/plugin-toolbar.ts index ae83b1b..6a234c1 100644 --- a/src/content/market/plugin-toolbar.ts +++ b/src/content/market/plugin-toolbar.ts @@ -36,7 +36,6 @@ interface MetricCatalogDom { metricActions: Record; panel: HTMLElement; root: HTMLElement; - searchInput: HTMLInputElement; selectedCount: HTMLElement; } @@ -301,9 +300,6 @@ export function ensurePluginToolbar( metricCatalog.closeButton.addEventListener("click", () => { setMetricCatalogOpen(metricCatalog, false); }); - metricCatalog.searchInput.addEventListener("input", () => { - syncMetricCatalog(toolbarDom); - }); SPREAD_FILTER_DEFINITIONS.forEach(({ metric }) => { const rule = spreadMetricRules[metric]; @@ -519,13 +515,6 @@ function createMetricCatalog(document: Document): MetricCatalogDom { panel.hidden = true; applyMetricCatalogPanelStyles(panel); - const searchInput = document.createElement("input"); - searchInput.type = "search"; - searchInput.placeholder = "搜索指标"; - searchInput.dataset.pluginSpreadMetricCatalogSearch = "input"; - searchInput.setAttribute("aria-label", "搜索筛选指标"); - applyMetricCatalogSearchStyles(searchInput); - const closeButton = document.createElement("button"); closeButton.type = "button"; closeButton.dataset.pluginSpreadMetricCatalogClose = "button"; @@ -537,7 +526,7 @@ function createMetricCatalog(document: Document): MetricCatalogDom { const panelHeader = document.createElement("div"); panelHeader.dataset.pluginSpreadMetricCatalogHeader = "root"; applyMetricCatalogHeaderStyles(panelHeader); - panelHeader.append(searchInput, closeButton); + panelHeader.append(closeButton); const group = document.createElement("div"); group.dataset.pluginSpreadMetricCatalogGroup = "传播表现"; @@ -573,7 +562,6 @@ function createMetricCatalog(document: Document): MetricCatalogDom { metricActions, panel, root, - searchInput, selectedCount }; } @@ -652,9 +640,6 @@ function readMetricCatalogDom(root: HTMLElement): MetricCatalogDom { root: root.querySelector( '[data-plugin-spread-metric-catalog="root"]' ) as HTMLElement, - searchInput: root.querySelector( - '[data-plugin-spread-metric-catalog-search="input"]' - ) as HTMLInputElement, selectedCount: root.querySelector( '[data-plugin-spread-metric-selected-count="text"]' ) as HTMLElement @@ -800,7 +785,6 @@ export function setToolbarBusyState( toolbar.exportCustomPagesInput, toolbar.metricCatalog.addButton, toolbar.metricCatalog.closeButton, - toolbar.metricCatalog.searchInput, ...Object.values(toolbar.metricCatalog.metricActions), ...Object.values(toolbar.spreadMetricRules).flatMap((rule) => [ rule.detailsButton, @@ -921,40 +905,22 @@ function syncSpreadFilterNote(toolbar: PluginToolbarDom): void { } function syncMetricCatalog(toolbar: PluginToolbarDom): void { - const searchTerm = toolbar.metricCatalog.searchInput.value.trim().toLowerCase(); const enabledCount = Object.values(toolbar.spreadMetricRules).filter( (rule) => rule.enabledInput.checked ).length; toolbar.metricCatalog.selectedCount.textContent = `已选 ${enabledCount} 项`; - SPREAD_FILTER_DEFINITIONS.forEach(({ label, metric }) => { + SPREAD_FILTER_DEFINITIONS.forEach(({ metric }) => { const action = toolbar.metricCatalog.metricActions[metric]; const isSelected = toolbar.spreadMetricRules[metric].enabledInput.checked; - const item = action.closest( - `[data-plugin-spread-metric-catalog-item="${metric}"]` - ) as HTMLElement | null; action.disabled = isSelected; action.textContent = isSelected ? "已添加" : "添加"; - if (item) { - item.hidden = Boolean(searchTerm) && !label.toLowerCase().includes(searchTerm); - } }); } function setMetricCatalogOpen(catalog: MetricCatalogDom, isOpen: boolean): void { catalog.panel.hidden = !isOpen; catalog.addButton.setAttribute("aria-expanded", String(isOpen)); - if (!isOpen) { - catalog.searchInput.value = ""; - Object.values(catalog.metricActions).forEach((action) => { - const item = action.closest("[data-plugin-spread-metric-catalog-item]") as - | HTMLElement - | null; - if (item) { - item.hidden = false; - } - }); - } } function syncSpreadMetricRuleSecondaryControls(rule: SpreadMetricRuleDom): void { @@ -1253,16 +1219,7 @@ function applyMetricCatalogPanelStyles(panel: HTMLElement): void { function applyMetricCatalogHeaderStyles(header: HTMLElement): void { header.style.display = "flex"; header.style.alignItems = "center"; - header.style.gap = "6px"; -} - -function applyMetricCatalogSearchStyles(input: HTMLInputElement): void { - input.style.width = "100%"; - input.style.height = "30px"; - input.style.padding = "0 8px"; - input.style.border = "1px solid #cbd5e1"; - input.style.borderRadius = "5px"; - input.style.boxSizing = "border-box"; + header.style.justifyContent = "flex-end"; } function applyMetricCatalogCloseButtonStyles(button: HTMLButtonElement): void { diff --git a/tests/market-content-entry.test.ts b/tests/market-content-entry.test.ts index 6ba2b53..da159be 100644 --- a/tests/market-content-entry.test.ts +++ b/tests/market-content-entry.test.ts @@ -1652,7 +1652,7 @@ describe("market-content-entry", () => { expect(finishAction?.textContent).toBe("添加"); }); - test("catalog search resets its visible metric list after closing", async () => { + test("catalog does not render a metric search input", async () => { document.body.innerHTML = buildMarketFixture(); const { createMarketController } = await import("../src/content/market/index"); @@ -1664,22 +1664,10 @@ describe("market-content-entry", () => { await controller.ready; click('[data-plugin-spread-metric-catalog-trigger="button"]'); - const searchInput = document.querySelector( - '[data-plugin-spread-metric-catalog-search="input"]' - ) as HTMLInputElement | null; - const interactionItem = document.querySelector( - '[data-plugin-spread-metric-catalog-item="interactionRate"]' - ) as HTMLElement | null; - if (!searchInput) { - throw new Error("Missing metric catalog search input"); - } - searchInput.value = "完播"; - searchInput.dispatchEvent(new Event("input")); - expect(interactionItem?.hidden).toBe(true); - click('[data-plugin-spread-metric-catalog-close="button"]'); - click('[data-plugin-spread-metric-catalog-trigger="button"]'); - expect(interactionItem?.hidden).toBe(false); + expect( + document.querySelector('[data-plugin-spread-metric-catalog-search="input"]') + ).toBeNull(); }); test("busy toolbar disables catalog and selected rule actions", async () => {