From 98b39c57033899b354fdb812e29b0e947906343e Mon Sep 17 00:00:00 2001 From: shats Date: Tue, 17 Feb 2026 21:52:32 +0700 Subject: [PATCH] feat(NetworkMapUnifi): add fullscreen toggle functionality and improve button layout for better user experience --- frontend/src/NetworkMapUnifi.jsx | 65 ++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 15 deletions(-) diff --git a/frontend/src/NetworkMapUnifi.jsx b/frontend/src/NetworkMapUnifi.jsx index b76810a..cd0917e 100644 --- a/frontend/src/NetworkMapUnifi.jsx +++ b/frontend/src/NetworkMapUnifi.jsx @@ -1,5 +1,5 @@ import { useMemo, useCallback, useState, useRef, useEffect } from 'react'; -import { IconRefresh } from '@tabler/icons-react'; +import { IconRefresh, IconMaximize, IconMinimize } from '@tabler/icons-react'; const UNIFI_BG = '#0f172a'; const UNIFI_CARD_BG = '#1e293b'; @@ -63,6 +63,7 @@ export default function NetworkMapUnifi({ servers = [], connections = [], pingMa const [size, setSize] = useState({ w: 800, h: 520 }); const [positions, setPositions] = useState({}); const [drag, setDrag] = useState(null); + const [isFullscreen, setIsFullscreen] = useState(false); useEffect(() => { const el = containerRef.current; @@ -75,6 +76,16 @@ export default function NetworkMapUnifi({ servers = [], connections = [], pingMa return () => ro.disconnect(); }, []); + // Трек полноэкранного режима + useEffect(() => { + const handler = () => { + const fs = Boolean(document.fullscreenElement); + setIsFullscreen(fs); + }; + document.addEventListener('fullscreenchange', handler); + return () => document.removeEventListener('fullscreenchange', handler); + }, []); + // Инициализация позиций: из localStorage или по кругу useEffect(() => { if (servers.length === 0) { @@ -386,20 +397,44 @@ export default function NetworkMapUnifi({ servers = [], connections = [], pingMa zIndex: 10, }} > - +
+ + +
);