From 335de444879138ec9e556c8edac08b678bf27fab Mon Sep 17 00:00:00 2001 From: zihluwang Date: Thu, 2 Apr 2026 15:06:47 +0800 Subject: [PATCH] feat: add mode filtering to ModCodes component --- src/page/mod-codes/index.tsx | 47 ++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/page/mod-codes/index.tsx b/src/page/mod-codes/index.tsx index ead06fd..4ec1a4c 100644 --- a/src/page/mod-codes/index.tsx +++ b/src/page/mod-codes/index.tsx @@ -48,9 +48,9 @@ const MOD_CODES: ModCode[] = (rawModCodes as ModCodeSource[]).map((item, index) })) export default function ModCodes() { - const [keyword, setKeyword] = useState("") const [activeTag, setActiveTag] = useState("全部") const [activeWeapon, setActiveWeapon] = useState("全部") + const [activeMode, setActiveMode] = useState("全部") const [copiedId, setCopiedId] = useState(null) const [copyErrorId, setCopyErrorId] = useState(null) @@ -77,6 +77,16 @@ export default function ModCodes() { return ["全部", ...Array.from(weapons)] }, []) + const allModes = useMemo(() => { + const modes = new Set() + MOD_CODES.forEach((item) => { + if (item.mode) { + modes.add(item.mode) + } + }) + return ["全部", ...Array.from(modes)] + }, []) + const allTags = useMemo(() => { const tags = new Set() MOD_CODES.forEach((item) => { @@ -86,19 +96,13 @@ export default function ModCodes() { }, []) const filtered = useMemo(() => { - const q = keyword.trim().toLowerCase() return MOD_CODES.filter((item) => { const matchWeapon = activeWeapon === "全部" || item.weapon === activeWeapon + const matchMode = activeMode === "全部" || item.mode === activeMode const matchTag = activeTag === "全部" || item.tags.includes(activeTag) - const matchKeyword = - q.length === 0 || - item.weapon.toLowerCase().includes(q) || - item.code.toLowerCase().includes(q) || - (item.mode?.toLowerCase().includes(q) ?? false) || - item.tags.some((tag) => tag.toLowerCase().includes(q)) - return matchWeapon && matchTag && matchKeyword + return matchWeapon && matchMode && matchTag }) - }, [activeWeapon, activeTag, keyword]) + }, [activeMode, activeWeapon, activeTag]) const colCount = useColumnCount() @@ -126,9 +130,7 @@ export default function ModCodes() { return (
-

- 支持按武器、tag 与关键字筛选。关键字可匹配枪械名称、改枪码或 tag。 -

+

支持按武器、模式与 tag 筛选。