fix: combine detailed tender search fields
This commit is contained in:
@@ -5,37 +5,34 @@ import { CITIES_LIST, INSTITUTION_TYPES_LIST } from '../data/constants';
|
||||
import { SlidersHorizontal, Search, RotateCcw, X } from 'lucide-react';
|
||||
|
||||
export const DetailedSearchModal = () => {
|
||||
const {
|
||||
isDetailedSearchOpen,
|
||||
setIsDetailedSearchOpen,
|
||||
searchQuery,
|
||||
setSearchQuery,
|
||||
selectedCity,
|
||||
setSelectedCity,
|
||||
selectedAlimTuru,
|
||||
setSelectedAlimTuru,
|
||||
selectedSektorler,
|
||||
setSelectedSektorler,
|
||||
toggleSektor,
|
||||
sektorListesi,
|
||||
selectedKurumTipi,
|
||||
setSelectedKurumTipi,
|
||||
onlyValidOnly,
|
||||
setOnlyValidOnly,
|
||||
setActiveTab
|
||||
} = useApp();
|
||||
const {isDetailedSearchOpen}=useApp();
|
||||
return isDetailedSearchOpen?<DetailedSearchForm/>:null;
|
||||
};
|
||||
|
||||
const DetailedSearchForm = () => {
|
||||
const context=useApp();
|
||||
const {setIsDetailedSearchOpen,setActiveTab,sektorListesi}=context;
|
||||
const titleId=useId();
|
||||
const modalFocus=useModalFocus(isDetailedSearchOpen,()=>setIsDetailedSearchOpen(false));
|
||||
|
||||
const [iknQuery, setIknQuery] = useState('');
|
||||
const [kurumQuery, setKurumQuery] = useState('');
|
||||
|
||||
if (!isDetailedSearchOpen) return null;
|
||||
const modalFocus=useModalFocus(true,()=>setIsDetailedSearchOpen(false));
|
||||
const [searchQuery,setSearchQuery]=useState(context.searchQuery);
|
||||
const [selectedCity,setSelectedCity]=useState(context.selectedCity);
|
||||
const [selectedAlimTuru,setSelectedAlimTuru]=useState(context.selectedAlimTuru);
|
||||
const [selectedKurumTipi,setSelectedKurumTipi]=useState(context.selectedKurumTipi);
|
||||
const [selectedSektorler,setSelectedSektorler]=useState(context.selectedSektorler);
|
||||
const [onlyValidOnly,setOnlyValidOnly]=useState(context.onlyValidOnly);
|
||||
const [iknQuery,setIknQuery]=useState(context.detailedQueries.registration);
|
||||
const [kurumQuery,setKurumQuery]=useState(context.detailedQueries.institution);
|
||||
const toggleSektor=sector=>setSelectedSektorler(old=>old.includes(sector)?old.filter(value=>value!==sector):[...old,sector]);
|
||||
|
||||
const handleApplySearch = (e) => {
|
||||
e.preventDefault();
|
||||
if (kurumQuery) setSearchQuery(kurumQuery);
|
||||
else if (iknQuery) setSearchQuery(iknQuery);
|
||||
context.setSearchQuery(searchQuery.trim());
|
||||
context.setDetailedQueries({institution:kurumQuery.trim(),registration:iknQuery.trim()});
|
||||
context.setSelectedCity(selectedCity);
|
||||
context.setSelectedAlimTuru(selectedAlimTuru);
|
||||
context.setSelectedKurumTipi(selectedKurumTipi);
|
||||
context.setSelectedSektorler(selectedSektorler);
|
||||
context.setOnlyValidOnly(onlyValidOnly);
|
||||
|
||||
setActiveTab('list');
|
||||
setIsDetailedSearchOpen(false);
|
||||
@@ -45,8 +42,9 @@ export const DetailedSearchModal = () => {
|
||||
setSearchQuery('');
|
||||
setSelectedCity('');
|
||||
setSelectedAlimTuru('');
|
||||
setSelectedSektorler([]);
|
||||
setSelectedKurumTipi('');
|
||||
setSelectedSektorler([]);
|
||||
setOnlyValidOnly(true);
|
||||
setIknQuery('');
|
||||
setKurumQuery('');
|
||||
};
|
||||
@@ -72,6 +70,7 @@ export const DetailedSearchModal = () => {
|
||||
|
||||
{/* Form Body */}
|
||||
<form onSubmit={handleApplySearch} className="p-6 space-y-4 text-xs">
|
||||
<p className="text-slate-600">Doldurduğunuz alanlar birlikte uygulanır. Değişiklikler İhaleleri Ara düğmesine bastığınızda listeye yansır.</p>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
|
||||
@@ -82,7 +81,7 @@ export const DetailedSearchModal = () => {
|
||||
type="text"
|
||||
value={searchQuery}
|
||||
onChange={(e) => setSearchQuery(e.target.value)}
|
||||
placeholder="Başlık, açıklama içinde aranır..."
|
||||
placeholder="Başlık, kurum, İKN veya kalemde aranır..."
|
||||
className="w-full bg-slate-50 border border-slate-300 rounded-lg px-3 py-2 text-slate-800 focus:ring-2 focus:ring-blue-500"
|
||||
/>
|
||||
</div>
|
||||
@@ -168,6 +167,19 @@ export const DetailedSearchModal = () => {
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label className="block font-bold text-slate-700 mb-1">Kurum Tipi</label>
|
||||
<select
|
||||
aria-label="Kurum Tipi"
|
||||
value={selectedKurumTipi}
|
||||
onChange={(e) => setSelectedKurumTipi(e.target.value)}
|
||||
className="w-full bg-slate-50 border border-slate-300 rounded-lg px-3 py-2 text-slate-800"
|
||||
>
|
||||
<option value="">Tümü</option>
|
||||
{INSTITUTION_TYPES_LIST.map(type => <option key={type} value={type}>{type}</option>)}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div className="pt-2">
|
||||
|
||||
Reference in New Issue
Block a user