-
- {groups[index].icon ? (
-
- ) : null}
-
-
- {groups[index].name}
+
{
+ setIsOpen((prev) => {
+ const newOpen = [...prev]
+ newOpen[index] = !prev[index]
+ return newOpen
+ })
+ }}
+ >
+
+
+
+ {groups[index].icon ? (
+
+ ) : null}
+
+
+ {groups[index].name}
+
+ {proxyDisplayMode === 'full' && (
+
+ {groups[index].type}
+
+ )}
+ {proxyDisplayMode === 'full' && (
+
+ {groups[index].now}
+
+ )}
+
+
{proxyDisplayMode === 'full' && (
-
- {groups[index].type}
-
- )}
- {proxyDisplayMode === 'full' && (
-
- {groups[index].now}
-
+
+ {groups[index].all.length}
+
)}
+
+
+
-
- {proxyDisplayMode === 'full' && (
-
- {groups[index].all.length}
-
- )}
-
-
-
-
-
-
-
-
- ) : (
-
Never See This
- )
- }}
- itemContent={(index, groupIndex) => {
- let innerIndex = index
- groupCounts.slice(0, groupIndex).forEach((count) => {
- innerIndex -= count
- })
- return allProxies[groupIndex] ? (
-
- {Array.from({ length: cols }).map((_, i) => {
- if (!allProxies[groupIndex][innerIndex * cols + i]) return null
- return (
-
- )
- })}
-
- ) : (
-
Never See This
- )
- }}
- />
+
+
+
+ ) : (
+
Never See This
+ )
+ }}
+ itemContent={(index, groupIndex) => {
+ let innerIndex = index
+ groupCounts.slice(0, groupIndex).forEach((count) => {
+ innerIndex -= count
+ })
+ return allProxies[groupIndex] ? (
+
+ {Array.from({ length: cols }).map((_, i) => {
+ if (!allProxies[groupIndex][innerIndex * cols + i]) return null
+ return (
+
+ )
+ })}
+
+ ) : (
+
Never See This
+ )
+ }}
+ />
+
)
}
diff --git a/src/renderer/src/pages/rules.tsx b/src/renderer/src/pages/rules.tsx
index 90665cb..37875ca 100644
--- a/src/renderer/src/pages/rules.tsx
+++ b/src/renderer/src/pages/rules.tsx
@@ -35,19 +35,20 @@ const Rules: React.FC = () => {