validate exchange calculator amounts

This commit is contained in:
2026-09-06 18:11:42 +03:00
parent 9b41ace2c7
commit 3f30e64004
2 changed files with 19 additions and 3 deletions
+13 -3
View File
@@ -33,6 +33,7 @@ export const TenderDetailModal = () => {
// Kur Farkı Calculator State
const [bidAmount, setBidAmount] = useState(15000);
const [bidAmountError, setBidAmountError] = useState(null);
const [fx, setFx] = useState(null);
const [fxError, setFxError] = useState(null);
useEffect(() => {
@@ -48,6 +49,7 @@ export const TenderDetailModal = () => {
const usdRate = fx?.rates?.USD;
const eurRate = fx?.rates?.EUR;
const fxIsStale = Boolean(fx?.refreshError);
const bidAmountValid = Number.isFinite(bidAmount) && bidAmount >= 0 && bidAmount <= 1e12;
if (!activeTenderDetail) return null;
// Havuzdaki güncel kayıt: takip/görev değişince düğme etiketleri de değişsin.
@@ -374,19 +376,27 @@ export const TenderDetailModal = () => {
<input
type="number"
value={bidAmount}
onChange={(e) => setBidAmount(Number(e.target.value))}
min="0"
max="1000000000000"
step="0.01"
onChange={(e) => {
const value = Number(e.target.value);
setBidAmount(value);
setBidAmountError(Number.isFinite(value) && value >= 0 && value <= 1e12 ? null : 'Tutar 0 ile 1.000.000.000.000 TL arasında olmalıdır.');
}}
className="w-full bg-white/10 border border-white/20 rounded-lg px-3 py-1.5 text-xs text-white"
/>
{bidAmountError && <p role="alert" className="text-xs text-amber-200">{bidAmountError}</p>}
</div>
<div className="bg-blue-950/80 p-3 rounded-lg border border-blue-800 text-xs space-y-1">
<div className="flex justify-between text-slate-300">
<span>Dolar Karşılığı:</span>
<span className="font-bold text-white">{usdRate ? '$' + (bidAmount / usdRate).toFixed(2) : 'Kur bekleniyor'}</span>
<span className="font-bold text-white">{!usdRate ? 'Kur bekleniyor' : bidAmountValid ? '$' + (bidAmount / usdRate).toFixed(2) : 'Geçerli tutar gerekli'}</span>
</div>
<div className="flex justify-between text-slate-300">
<span>Euro Karşılığı:</span>
<span className="font-bold text-white">{eurRate ? '€' + (bidAmount / eurRate).toFixed(2) : 'Kur bekleniyor'}</span>
<span className="font-bold text-white">{!eurRate ? 'Kur bekleniyor' : bidAmountValid ? '€' + (bidAmount / eurRate).toFixed(2) : 'Geçerli tutar gerekli'}</span>
</div>
</div>
</div>