a11y: make tender card date keyboard accessible
This commit is contained in:
@@ -1314,6 +1314,11 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö
|
|||||||
- Karttaki tarih regex ile eşleşse bile gün/ay/yıl bileşenleri artık JavaScript takviminde ayrıca doğrulanıyor. 31 Şubat gibi imkânsız tarihlerin gün veya ay olarak gösterilmesi engellendi; doğrulama etiketi kullanılıyor.
|
- Karttaki tarih regex ile eşleşse bile gün/ay/yıl bileşenleri artık JavaScript takviminde ayrıca doğrulanıyor. 31 Şubat gibi imkânsız tarihlerin gün veya ay olarak gösterilmesi engellendi; doğrulama etiketi kullanılıyor.
|
||||||
- Bilinen ve geçerli tarihler aynı görünümü koruyor. 281 test ve build başarılı. Kart bileşeni için ayrı geçersiz tarih tarayıcı kabulü henüz eklenmedi; genel plan açık.
|
- Bilinen ve geçerli tarihler aynı görünümü koruyor. 281 test ve build başarılı. Kart bileşeni için ayrı geçersiz tarih tarayıcı kabulü henüz eklenmedi; genel plan açık.
|
||||||
|
|
||||||
|
### 2026-09-06 — İhale kartı klavye erişimi
|
||||||
|
|
||||||
|
- Kartın tarih bloğu daha önce yalnız tıklanabilir bir `div` idi. Artık detay açan, klavyeyle odaklanabilen ve tarih doğrulama durumunu açıklayan bir düğme; başlıktaki detay düğmesiyle aynı hedefi kullanıyor.
|
||||||
|
- 281 test ve build başarılı. Gerçek klavye/focus tarayıcı kabulü henüz eklenmedi; genel plan açık.
|
||||||
|
|
||||||
### 2026-09-06 — Analitik geçersiz tarih kontrolü
|
### 2026-09-06 — Analitik geçersiz tarih kontrolü
|
||||||
|
|
||||||
- Analitik `parseDateTR`, JavaScript tarih yuvarlamasıyla 31 Şubat gibi imkânsız günleri geçerli tarihe dönüştürmüyordu; artık gün/ay/yıl bileşenlerini doğrulayıp geçersiz girdide `null` döndürüyor. Geçersiz tarihler yanlış hafta sonu veya kısa süre riskine dönüşmüyor.
|
- Analitik `parseDateTR`, JavaScript tarih yuvarlamasıyla 31 Şubat gibi imkânsız günleri geçerli tarihe dönüştürmüyordu; artık gün/ay/yıl bileşenlerini doğrulayıp geçersiz girdide `null` döndürüyor. Geçersiz tarihler yanlış hafta sonu veya kısa süre riskine dönüşmüyor.
|
||||||
|
|||||||
@@ -32,9 +32,10 @@ export const TenderCard = ({ tender }) => {
|
|||||||
<div className="bg-white rounded-xl border border-blue-200/80 shadow-xs hover:shadow-md transition-all overflow-hidden flex flex-col md:flex-row group border-l-4 border-l-blue-600">
|
<div className="bg-white rounded-xl border border-blue-200/80 shadow-xs hover:shadow-md transition-all overflow-hidden flex flex-col md:flex-row group border-l-4 border-l-blue-600">
|
||||||
|
|
||||||
{/* Left Date Block */}
|
{/* Left Date Block */}
|
||||||
<div
|
<button type="button"
|
||||||
onClick={() => setActiveTenderDetail(tender)}
|
onClick={() => setActiveTenderDetail(tender)}
|
||||||
className="bg-[#edf4ff] group-hover:bg-[#e2edff] text-blue-900 md:w-36 p-4 flex flex-col items-center justify-center shrink-0 border-b md:border-b-0 md:border-r border-blue-100 cursor-pointer select-none transition-colors"
|
aria-label={`${tender.tarih || 'Tarih doğrulanmalı'} tarih bilgisi; ihale detayını aç`}
|
||||||
|
className="bg-[#edf4ff] group-hover:bg-[#e2edff] text-blue-900 md:w-36 p-4 flex flex-col items-center justify-center shrink-0 border-b md:border-b-0 md:border-r border-blue-100 cursor-pointer select-none transition-colors text-center focus-visible:outline-2 focus-visible:outline-blue-600 focus-visible:outline-offset-[-2px]"
|
||||||
>
|
>
|
||||||
<span className="text-[9px] font-black uppercase tracking-widest text-blue-900/50">İhale</span>
|
<span className="text-[9px] font-black uppercase tracking-widest text-blue-900/50">İhale</span>
|
||||||
<span className="text-3xl font-black tracking-tight text-blue-700 leading-none">{day}</span>
|
<span className="text-3xl font-black tracking-tight text-blue-700 leading-none">{day}</span>
|
||||||
@@ -42,7 +43,7 @@ export const TenderCard = ({ tender }) => {
|
|||||||
<span className="text-[11px] font-semibold bg-white/80 px-2 py-0.5 rounded-full text-blue-800 mt-2 border border-blue-200">
|
<span className="text-[11px] font-semibold bg-white/80 px-2 py-0.5 rounded-full text-blue-800 mt-2 border border-blue-200">
|
||||||
{tender.saat || 'Saat doğrulanmalı'}
|
{tender.saat || 'Saat doğrulanmalı'}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</button>
|
||||||
|
|
||||||
{/* Main Card Content */}
|
{/* Main Card Content */}
|
||||||
<div className="flex-1 p-4 flex flex-col justify-between space-y-3">
|
<div className="flex-1 p-4 flex flex-col justify-between space-y-3">
|
||||||
|
|||||||
Reference in New Issue
Block a user