diff --git a/frontend/src/FilterManager.jsx b/frontend/src/FilterManager.jsx index 9ca2da9..e634954 100644 --- a/frontend/src/FilterManager.jsx +++ b/frontend/src/FilterManager.jsx @@ -428,6 +428,37 @@ function GatewayAutocomplete({ label, value, onChange, gateways = [], required = const selectedGateway = gateways.find(g => g.name === value); + const selectedGatewayInfo = + value && selectedGateway && !isOpen ? ( +
+
+ + {selectedGateway.country ? countryToFlag(selectedGateway.country) : } + +
+
+ {selectedGateway.name} + {selectedGateway.comment && ({selectedGateway.comment})} +
+
+ {[selectedGateway.serverDns].filter(Boolean).join(' · ')} +
+
+ {selectedGateway.primary && Основной} +
+
+ ) : null; + + const freeGatewayWarning = + value && !selectedGateway && !isOpen ? ( +
+
+ +
Gateway "{value}" — свободный ввод
+
+
+ ) : null; + return (
@@ -454,99 +485,72 @@ function GatewayAutocomplete({ label, value, onChange, gateways = [], required = {/* Карточки gateway под полем, ВСЕГДА видимы */}
- {gateways.length === 0 ? ( -
- - Нет доступных gateway для выбранного сервера -
- ) : filteredGateways.length === 0 ? ( -
- Ничего не найдено. Уточните запрос по IP, имени или описанию. -
- ) : ( -
- {filteredGateways.map((gw, idx) => { - const isSelected = gw.name === value; - const isHighlighted = highlightedIndex === idx; - return ( -
- -
- ); - })} -
- )} -
+
+ + + ); + })} + + )} - {value && selectedGateway && !isOpen && ( -
-
- - {selectedGateway.country ? countryToFlag(selectedGateway.country) : } - -
-
- {selectedGateway.name} - {selectedGateway.comment && ({selectedGateway.comment})} -
-
- {[selectedGateway.serverDns].filter(Boolean).join(' · ')} -
-
- {selectedGateway.primary && Основной} -
-
- )} - {/* Предупреждение если gateway не в списке */} - {value && !selectedGateway && !isOpen && ( -
-
- -
Gateway "{value}" — свободный ввод
-
-
- )} + {selectedGatewayInfo} + {freeGatewayWarning} ); }