feat(GatewayAutocomplete): add selected gateway info and free gateway warning to enhance user feedback
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 3m32s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 3m32s
This commit is contained in:
@@ -428,6 +428,37 @@ function GatewayAutocomplete({ label, value, onChange, gateways = [], required =
|
||||
|
||||
const selectedGateway = gateways.find(g => g.name === value);
|
||||
|
||||
const selectedGatewayInfo =
|
||||
value && selectedGateway && !isOpen ? (
|
||||
<div className="mt-2">
|
||||
<div className="d-flex align-items-center gap-2 p-2 bg-light rounded">
|
||||
<span className="avatar avatar-xs bg-primary-lt">
|
||||
{selectedGateway.country ? countryToFlag(selectedGateway.country) : <IconServer size={14} />}
|
||||
</span>
|
||||
<div className="flex-grow-1">
|
||||
<div className="fw-bold">
|
||||
<code>{selectedGateway.name}</code>
|
||||
{selectedGateway.comment && <span className="text-muted ms-2">({selectedGateway.comment})</span>}
|
||||
</div>
|
||||
<div className="text-muted small">
|
||||
{[selectedGateway.serverDns].filter(Boolean).join(' · ')}
|
||||
</div>
|
||||
</div>
|
||||
{selectedGateway.primary && <span className="badge bg-green-lt text-green">Основной</span>}
|
||||
</div>
|
||||
</div>
|
||||
) : null;
|
||||
|
||||
const freeGatewayWarning =
|
||||
value && !selectedGateway && !isOpen ? (
|
||||
<div className="mt-2">
|
||||
<div className="d-flex align-items-center gap-2 p-2 bg-warning-lt rounded">
|
||||
<IconAlertTriangle size={16} className="text-warning" />
|
||||
<div className="text-muted small">Gateway "{value}" — свободный ввод</div>
|
||||
</div>
|
||||
</div>
|
||||
) : null;
|
||||
|
||||
return (
|
||||
<div className="mb-3" ref={containerRef}>
|
||||
<label className={`form-label ${required ? 'required' : ''}`}>{label}</label>
|
||||
@@ -517,36 +548,9 @@ function GatewayAutocomplete({ label, value, onChange, gateways = [], required =
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
{value && selectedGateway && !isOpen && (
|
||||
<div className="mt-2">
|
||||
<div className="d-flex align-items-center gap-2 p-2 bg-light rounded">
|
||||
<span className="avatar avatar-xs bg-primary-lt">
|
||||
{selectedGateway.country ? countryToFlag(selectedGateway.country) : <IconServer size={14} />}
|
||||
</span>
|
||||
<div className="flex-grow-1">
|
||||
<div className="fw-bold">
|
||||
<code>{selectedGateway.name}</code>
|
||||
{selectedGateway.comment && <span className="text-muted ms-2">({selectedGateway.comment})</span>}
|
||||
</div>
|
||||
<div className="text-muted small">
|
||||
{[selectedGateway.serverDns].filter(Boolean).join(' · ')}
|
||||
</div>
|
||||
</div>
|
||||
{selectedGateway.primary && <span className="badge bg-green-lt text-green">Основной</span>}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Предупреждение если gateway не в списке */}
|
||||
{value && !selectedGateway && !isOpen && (
|
||||
<div className="mt-2">
|
||||
<div className="d-flex align-items-center gap-2 p-2 bg-warning-lt rounded">
|
||||
<IconAlertTriangle size={16} className="text-warning" />
|
||||
<div className="text-muted small">Gateway "{value}" — свободный ввод</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{selectedGatewayInfo}
|
||||
{freeGatewayWarning}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user