From 9b751296ede2cb0c9a0872752a55031e6be7dd56 Mon Sep 17 00:00:00 2001 From: ht Date: Sun, 6 Sep 2026 15:29:22 +0300 Subject: [PATCH] fix: unify search dialog focus and overlay behavior --- docs/quality/uygulama-durumu.md | 8 ++++++++ src/components/DetailedSearchModal.jsx | 18 ++++++++++++++---- src/components/UrunAramaModal.jsx | 25 +++++++------------------ tests/browser-qa.mjs | 3 +++ 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/docs/quality/uygulama-durumu.md b/docs/quality/uygulama-durumu.md index 268d450..c4cd465 100644 --- a/docs/quality/uygulama-durumu.md +++ b/docs/quality/uygulama-durumu.md @@ -1224,3 +1224,11 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö - Portal ile body altına açılan kılavuz da aynı sıraya katılıyor. Yeni DOM alanları eklendiğinde izolasyon yeniden uygulanıyor; son pencere kapanınca gözlemci kapatılıyor. Alttaki pencere kaldırılırken üst pencerenin odağı geri alınmıyor. - Yedi tarayıcı kabulü geçti: ihale açıkken başlığın inert olması, analiz üstteyken ihale detayının inert olması, kılavuz üstteyken iki pencerenin inert olması, sırayla kapanışta doğru pencere/odağın geri gelmesi, tümü kapalıyken hiçbir artık inert alanın kalmaması ve ardından firma profilinin normal açılması. Kanıt `rapor/qa-modal-background-isolation.json`. - 275 test ve build başarılı. Bu doğrulama tarayıcı DOM inert durumu ve gerçek klavye etkileşimini kapsar; belirli bir ekran okuyucuyla dinleme testi yapılmış değildir. Henüz ortak kancayı kullanmayan diğer pencerelerin kabulü ayrıca gereklidir. Genel plan açık. + + +### 2026-09-06 — Detaylı arama ve ürün aramasında pencere tutarlılığı + +- Detaylı aramadaki geçersiz inset renk değeri inset-0 ile değiştirildi; pencere yüksekliği görünümle sınırlandı ve iç kaydırma eklendi. Ortak modal odağı/arka plan izolasyonu, başlık bağlantısı, kapatma adı, beş arama alanının erişilebilir etiketi ve sektör düğmelerinin basılı durumu eklendi. +- Ürün araması native dialog üst katmanında, kılavuz ise özel portal penceresindeydi. ? ile kılavuz açılınca ortak izolasyon ürün aramasını inert yapıyor fakat native üst katman nedeniyle odak kılavuza geçemiyordu. Bu çakışma tarayıcıda tekrar üretildi. Ürün araması diğer pencerelerle aynı modal yığınını kullanıyor; gövde kaydırma kilidi ve arama durumunun korunması devam ediyor. +- On iki tarayıcı kabulü geçti: detaylı arama ilk odağı/ileri-geri Tab, görünüm sınırları, beş alan etiketi, Kayseri+laboratuvar tek sonucu; ürün araması odağı/Tab; ürün üstünde kılavuz ve geri dönüş; sentetik ürün sonucundan doğru ihale detayına geçiş; detay kapanınca başlıktaki ÜRÜN ARA düğmesine dönüş; yeniden açıldığında önceki sorgu ve sonucun korunması. Kanıt `rapor/qa-search-modals-focus.json`. Kılavuz kapanış ölçümü QA düzeneği sıcak yenilenirken alındığı için temiz oturumda tekrarlandı; son ölçüm geçti. +- QA sunucusu yalnız “QA pencere testi” sorgusuna bir sentetik ürün sonucu döndürüyor; bu kaynak arama kalitesinin testi değildir. 275 test ve build başarılı. Native dialog yerine ortak yığın kullanımı nedeniyle mobil tarayıcı/gerçek ekran okuyucu kabulü ayrıca gereklidir. Genel plan açık. diff --git a/src/components/DetailedSearchModal.jsx b/src/components/DetailedSearchModal.jsx index 3b051e7..9210df7 100644 --- a/src/components/DetailedSearchModal.jsx +++ b/src/components/DetailedSearchModal.jsx @@ -1,4 +1,5 @@ -import React, { useState } from 'react'; +import React, { useState, useId } from 'react'; +import {useModalFocus} from '../hooks/useModalFocus'; import { useApp } from '../context/AppContext'; import { CITIES_LIST, INSTITUTION_TYPES_LIST } from '../data/constants'; import { SlidersHorizontal, Search, RotateCcw, X } from 'lucide-react'; @@ -23,6 +24,8 @@ export const DetailedSearchModal = () => { setOnlyValidOnly, setActiveTab } = useApp(); + const titleId=useId(); + const modalFocus=useModalFocus(isDetailedSearchOpen,()=>setIsDetailedSearchOpen(false)); const [iknQuery, setIknQuery] = useState(''); const [kurumQuery, setKurumQuery] = useState(''); @@ -49,16 +52,17 @@ export const DetailedSearchModal = () => { }; return ( -
-
+
+
{/* Header */}
- Detaylı İhale Arama + Detaylı İhale Arama