feat(ServerManager): add group selection functionality for servers in ServerManager and ServerGroupCard components
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m51s

This commit is contained in:
2026-02-17 12:10:49 +07:00
parent e09976b64e
commit 7cd33384b7
2 changed files with 22 additions and 5 deletions
+12
View File
@@ -284,6 +284,17 @@ function ServerManager() {
setSelectedServers(newSet);
};
const toggleGroupSelection = (servers, selectAll) => {
setSelectedServers((prev) => {
const next = new Set(prev);
servers.forEach((s) => {
if (selectAll) next.add(s.ip);
else next.delete(s.ip);
});
return next;
});
};
const selectAllServers = () => {
if (selectedServers.size === filteredServers.length) {
setSelectedServers(new Set());
@@ -838,6 +849,7 @@ function ServerManager() {
servers={item.servers}
selectedSet={selectedServers}
onSelect={toggleServerSelection}
onSelectGroup={toggleGroupSelection}
onEdit={handleEdit}
onDelete={confirmDelete}
/>
@@ -31,6 +31,7 @@ export default function ServerGroupCard({
servers,
selectedSet,
onSelect,
onSelectGroup,
onEdit,
onDelete
}) {
@@ -43,11 +44,15 @@ export default function ServerGroupCard({
const allSelected = servers.length > 0 && servers.every((s) => selectedSet.has(s.ip));
const handleGroupSelect = () => {
servers.forEach((s) => {
const selected = selectedSet.has(s.ip);
if (allSelected && selected) onSelect?.(s);
if (!allSelected && !selected) onSelect?.(s);
});
if (onSelectGroup) {
onSelectGroup(servers, !allSelected);
} else {
servers.forEach((s) => {
const selected = selectedSet.has(s.ip);
if (allSelected && selected) onSelect?.(s);
if (!allSelected && !selected) onSelect?.(s);
});
}
};
return (