From 5dfe76f1df1b803b802170ebc1fe7abffd9ea048 Mon Sep 17 00:00:00 2001 From: shats Date: Tue, 10 Feb 2026 18:22:34 +0700 Subject: [PATCH] feat(GatewayAutocomplete): enhance UI layout and improve gateway card display for better user interaction --- frontend/src/FilterManager.jsx | 65 +++++++++++++++------------------- 1 file changed, 29 insertions(+), 36 deletions(-) diff --git a/frontend/src/FilterManager.jsx b/frontend/src/FilterManager.jsx index f2da96f..b2beeab 100644 --- a/frontend/src/FilterManager.jsx +++ b/frontend/src/FilterManager.jsx @@ -431,7 +431,7 @@ function GatewayAutocomplete({ label, value, onChange, gateways = [], required = return (
-
+
@@ -443,24 +443,17 @@ function GatewayAutocomplete({ label, value, onChange, gateways = [], required = value={inputValue} onChange={handleInputChange} onFocus={() => setIsOpen(true)} + onBlur={() => setIsOpen(false)} onKeyDown={handleKeyDown} placeholder={placeholder} required={required && !value} autoComplete="off" /> - setIsOpen(!isOpen)} - > - -
- {/* Карточки gateway вместо выпадающего списка */} - {isOpen && ( -
+ {/* Карточки gateway под полем, ВСЕГДА видимы */} +
{gateways.length === 0 ? (
@@ -471,7 +464,7 @@ function GatewayAutocomplete({ label, value, onChange, gateways = [], required = Ничего не найдено. Уточните запрос по IP, имени или описанию.
) : ( -
+
{filteredGateways.map((gw, idx) => { const isSelected = gw.name === value; const isHighlighted = highlightedIndex === idx; @@ -486,35 +479,35 @@ function GatewayAutocomplete({ label, value, onChange, gateways = [], required =
-
- - {gw.country ? countryToFlag(gw.country) : } - -
-
- {gw.name} - {gw.comment && ( - - {gw.comment} - +
+
+ + {gw.country ? countryToFlag(gw.country) : } + +
+
+ {gw.ip || gw.name} +
+
+ {gw.comment || gw.name} +
+ {gw.serverDns && ( +
+ {gw.serverDns} +
)}
-
- {gw.ip && IP: {gw.ip}} - {gw.ip && gw.serverDns && } - {gw.serverDns && {gw.serverDns}} -
+ {gw.primary && ( + + Основной + + )}
- {gw.primary && ( - - Основной - - )}
@@ -524,7 +517,7 @@ function GatewayAutocomplete({ label, value, onChange, gateways = [], required =
)}
- )} +
{/* Показываем выбранный gateway отдельной карточкой под полем */} {value && selectedGateway && !isOpen && (