From a9c4bcc08b34cead37932887043fe4efc7e35b6b Mon Sep 17 00:00:00 2001 From: chihlasm Date: Sat, 4 Apr 2026 14:27:23 +0000 Subject: [PATCH] feat: add grouping toolbar items and traffic flow toggle DeviceToolbar gets Subnet/VLAN/Site/DMZ grouping section with drag-drop. PropertiesPanel gets Show Traffic toggle that switches edges between connection and animated types. DiagramEditor handles both device and group node drops. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../network/panels/DeviceToolbar.tsx | 30 ++++++- .../network/panels/PropertiesPanel.tsx | 22 +++++ .../pages/NetworkDiagrams/DiagramEditor.tsx | 80 +++++++++++++------ 3 files changed, 106 insertions(+), 26 deletions(-) diff --git a/frontend/src/components/network/panels/DeviceToolbar.tsx b/frontend/src/components/network/panels/DeviceToolbar.tsx index dd13ce96..fa5ea810 100644 --- a/frontend/src/components/network/panels/DeviceToolbar.tsx +++ b/frontend/src/components/network/panels/DeviceToolbar.tsx @@ -1,5 +1,5 @@ import { useState, useMemo, useCallback } from 'react' -import { Search, Plus, ChevronDown, ChevronRight, X } from 'lucide-react' +import { Search, Plus, ChevronDown, ChevronRight, X, LayoutGrid } from 'lucide-react' import { getDeviceRenderConfig, CATEGORY_LABELS, CATEGORY_ORDER } from '../nodes/deviceRegistry' import type { DeviceTypeResponse, DeviceTypeCreate } from '@/types' import { deviceTypesApi } from '@/api' @@ -121,6 +121,34 @@ export function DeviceToolbar({ deviceTypes, onDeviceTypesChange }: DeviceToolba })} + {/* Grouping section */} +
+
+ Grouping +
+
+ {[ + { slug: 'subnet', label: 'Subnet' }, + { slug: 'vlan', label: 'VLAN' }, + { slug: 'site', label: 'Site' }, + { slug: 'dmz', label: 'DMZ' }, + ].map(item => ( +
{ + e.dataTransfer.setData('application/reactflow-group', JSON.stringify(item)) + e.dataTransfer.effectAllowed = 'move' + }} + className="flex cursor-grab items-center gap-2 rounded px-2 py-1.5 text-xs text-primary hover:bg-elevated active:cursor-grabbing" + > + + {item.label} +
+ ))} +
+
+
{!showAddForm ? (
+
+ Show Traffic + +