prevent document controls from implicit submit

This commit is contained in:
2026-09-06 16:49:10 +03:00
parent 73e4e93da6
commit b092fbf604
+11 -11
View File
@@ -304,7 +304,7 @@ const TenderDocumentSession = ({ tender }) => {
</p> </p>
<div className="flex gap-2 flex-wrap"> <div className="flex gap-2 flex-wrap">
<button <button type="button"
onClick={dokumaniAc} onClick={dokumaniAc}
disabled={busy !== null} disabled={busy !== null}
className="bg-blue-600 hover:bg-blue-500 disabled:opacity-40 text-white font-bold text-xs px-4 py-2.5 rounded-xl flex items-center gap-2" className="bg-blue-600 hover:bg-blue-500 disabled:opacity-40 text-white font-bold text-xs px-4 py-2.5 rounded-xl flex items-center gap-2"
@@ -313,7 +313,7 @@ const TenderDocumentSession = ({ tender }) => {
EKAP Dokümanlarını Aç EKAP Dokümanlarını Aç
</button> </button>
<button <button type="button"
onClick={ilaniAnalizEt} onClick={ilaniAnalizEt}
disabled={busy !== null} disabled={busy !== null}
className="bg-amber-400 hover:bg-amber-300 disabled:opacity-40 text-slate-950 font-black text-xs px-4 py-2.5 rounded-xl flex items-center gap-2" className="bg-amber-400 hover:bg-amber-300 disabled:opacity-40 text-slate-950 font-black text-xs px-4 py-2.5 rounded-xl flex items-center gap-2"
@@ -377,7 +377,7 @@ const TenderDocumentSession = ({ tender }) => {
accept=".pdf,.docx,.xlsx,.zip,.txt" accept=".pdf,.docx,.xlsx,.zip,.txt"
className="hidden" className="hidden"
/> />
<button <button type="button"
onClick={() => dosyaRef.current?.click()} onClick={() => dosyaRef.current?.click()}
disabled={yukleniyor} disabled={yukleniyor}
className="bg-slate-900 hover:bg-slate-800 disabled:opacity-40 text-white font-bold text-xs px-3.5 py-2 rounded-lg flex items-center gap-2" className="bg-slate-900 hover:bg-slate-800 disabled:opacity-40 text-white font-bold text-xs px-3.5 py-2 rounded-lg flex items-center gap-2"
@@ -399,7 +399,7 @@ const TenderDocumentSession = ({ tender }) => {
{listeBekliyor && <p role="status" className="text-xs text-slate-500">Belge listesi yükleniyor…</p>} {listeBekliyor && <p role="status" className="text-xs text-slate-500">Belge listesi yükleniyor…</p>}
{listeHata && <div role="alert" className="text-xs text-red-700"> {listeHata && <div role="alert" className="text-xs text-red-700">
Belge listesi alınamadı: {listeHata} Belge listesi alınamadı: {listeHata}
<button onClick={belgeleriYukle} className="ml-2 underline">Listeyi yeniden yükle</button> <button type="button" onClick={belgeleriYukle} className="ml-2 underline">Listeyi yeniden yükle</button>
</div>} </div>}
{belgeler.length > 0 && ( {belgeler.length > 0 && (
<div className="space-y-1.5"> <div className="space-y-1.5">
@@ -413,14 +413,14 @@ const TenderDocumentSession = ({ tender }) => {
<span className="text-[10px] text-slate-400 whitespace-nowrap"> <span className="text-[10px] text-slate-400 whitespace-nowrap">
{(b.boyut / 1024).toLocaleString('tr-TR', { maximumFractionDigits: 0 })} KB {(b.boyut / 1024).toLocaleString('tr-TR', { maximumFractionDigits: 0 })} KB
</span> </span>
<button <button type="button"
onClick={() => belgeyiAnalizEt(b)} onClick={() => belgeyiAnalizEt(b)}
disabled={busy !== null} disabled={busy !== null}
className="text-[10px] font-bold text-amber-700 hover:text-amber-800 disabled:opacity-40 whitespace-nowrap" className="text-[10px] font-bold text-amber-700 hover:text-amber-800 disabled:opacity-40 whitespace-nowrap"
> >
{busy === 'belge' ? '…' : 'AI analiz'} {busy === 'belge' ? '…' : 'AI analiz'}
</button> </button>
<button <button type="button"
onClick={() => belgeyiAnalizEt(b, 'derin')} onClick={() => belgeyiAnalizEt(b, 'derin')}
disabled={busy !== null} disabled={busy !== null}
className="text-[10px] font-bold text-indigo-700 hover:text-indigo-800 disabled:opacity-40 whitespace-nowrap" className="text-[10px] font-bold text-indigo-700 hover:text-indigo-800 disabled:opacity-40 whitespace-nowrap"
@@ -428,16 +428,16 @@ const TenderDocumentSession = ({ tender }) => {
> >
Derin Derin
</button> </button>
{okunabilirMi(b.ad) && <button onClick={() => metniIncele(b)} disabled={busy !== null || !b.erisilebilir} {okunabilirMi(b.ad) && <button type="button" onClick={() => metniIncele(b)} disabled={busy !== null || !b.erisilebilir}
aria-label={`${b.ad} metnini incele`} className="text-[10px] text-blue-700 disabled:opacity-40">Metni incele</button>} aria-label={`${b.ad} metnini incele`} className="text-[10px] text-blue-700 disabled:opacity-40">Metni incele</button>}
{b.tur === 'ihale' && okunabilirMi(b.ad) && ( {b.tur === 'ihale' && okunabilirMi(b.ad) && (
<button onClick={() => kalemleriYenidenCikar(b)} disabled={busy !== null || yukleniyor || !b.erisilebilir} <button type="button" onClick={() => kalemleriYenidenCikar(b)} disabled={busy !== null || yukleniyor || !b.erisilebilir}
aria-label={`${b.ad} için kalem çıkarımını yeniden dene`} aria-label={`${b.ad} için kalem çıkarımını yeniden dene`}
className="text-[10px] font-bold text-blue-700 disabled:opacity-40"> className="text-[10px] font-bold text-blue-700 disabled:opacity-40">
{busy === 'kalem' ? 'İşleniyor…' : 'Kalemleri yeniden çıkar'} {busy === 'kalem' ? 'İşleniyor…' : 'Kalemleri yeniden çıkar'}
</button> </button>
)} )}
<button disabled={busy !== null || yukleniyor} onClick={() => belgeSil(b.id)} className="text-slate-300 hover:text-red-600" aria-label="Sil"> <button type="button" disabled={busy !== null || yukleniyor} onClick={() => belgeSil(b.id)} className="text-slate-300 hover:text-red-600" aria-label="Sil">
<Trash2 className="w-3.5 h-3.5" /> <Trash2 className="w-3.5 h-3.5" />
</button> </button>
</div> </div>
@@ -459,7 +459,7 @@ const TenderDocumentSession = ({ tender }) => {
assertCurrent(); assertCurrent();
setIsAiSpecAnalyzerOpen(true); setIsAiSpecAnalyzerOpen(true);
}} />} }} />}
<button onClick={()=>setMetinOnizleme(null)} className="text-xs underline">Metin önizlemesini kapat</button> <button type="button" onClick={()=>setMetinOnizleme(null)} className="text-xs underline">Metin önizlemesini kapat</button>
</section>} </section>}
{(ekapIhalesi || belgeler.length > 0) && ( {(ekapIhalesi || belgeler.length > 0) && (
@@ -478,7 +478,7 @@ const TenderDocumentSession = ({ tender }) => {
</div> </div>
</div> </div>
<button <button type="button"
onClick={derinAnalizEt} onClick={derinAnalizEt}
disabled={busy !== null} disabled={busy !== null}
className="w-full bg-amber-400 hover:bg-amber-300 disabled:opacity-40 text-slate-950 font-black text-xs px-4 py-2.5 rounded-xl flex items-center justify-center gap-2" className="w-full bg-amber-400 hover:bg-amber-300 disabled:opacity-40 text-slate-950 font-black text-xs px-4 py-2.5 rounded-xl flex items-center justify-center gap-2"