Files
front-AT/app/Components/InformacionEquipos/SelectorSala.tsx
T

70 lines
1.7 KiB
TypeScript
Raw Normal View History

2026-01-21 11:58:32 -06:00
"use client";
import { envConfig } from "@/app/lib/config";
2026-01-21 17:10:17 -06:00
import { useEffect, useState } from "react";
import { usePathname, useRouter, useSearchParams } from "next/navigation";
import axios from "axios";
2026-01-21 11:58:32 -06:00
interface Area {
id_area_ubicacion: number;
area: string;
extra: string;
}
interface Props {
onSearch: (id: number) => void;
}
export default function SelectorSala({ onSearch }: Props) {
const [sala, setSala] = useState<Area[]>([]);
const searchParams = useSearchParams();
const pathname = usePathname();
const router = useRouter();
const paramSala = Number(searchParams.get("sala")) || 0;
const [selected, setSelected] = useState<number>(paramSala);
useEffect(() => {
setSelected(paramSala);
onSearch(paramSala);
}, [paramSala]);
2026-01-21 11:58:32 -06:00
const handleChangeEquipo = (e: React.ChangeEvent<HTMLSelectElement>) => {
2026-01-27 18:33:17 -06:00
const value = Number(e.target.value);
setSelected(value);
onSearch(value);
const params = new URLSearchParams(searchParams.toString());
2026-01-27 18:33:17 -06:00
if (value === 0) {
params.delete("sala");
} else {
params.set("sala", String(value));
2026-01-27 18:33:17 -06:00
}
2026-01-21 11:58:32 -06:00
router.push(`${pathname}?${params.toString()}`);
2026-01-21 11:58:32 -06:00
};
useEffect(() => {
const fetchData = async () => {
const response = await axios.get(`${envConfig.apiUrl}/area-ubicacion`);
setSala(response.data);
};
fetchData();
}, []);
return (
<form className="form-container">
2026-01-28 14:50:38 -06:00
<label>Salas</label>
2026-01-21 11:58:32 -06:00
<select value={selected} onChange={handleChangeEquipo}>
<option value={0}>-- Selecciona una sala --</option>
{sala.map((s) => (
<option key={s.id_area_ubicacion} value={s.id_area_ubicacion}>
{s.area}
</option>
))}
2026-01-21 11:58:32 -06:00
</select>
</form>
);
}
//IO