import { SearchableSelect } from './SearchableSelect'; import { useEffect, useMemo, useState } from 'react'; import type { FormEvent } from 'react'; import { Link, useNavigate } from 'react-router'; import { useAuth } from '../auth/AuthContext'; import { useOperationalContext } from '../context/OperationalContext'; import { listCompaniesForArea, listOperationalAreas } from '../lib/api'; import type { OperationalAssetSummary } from '../lib/api'; import { Icon } from './Icon'; export function OperationalContextBar() { const navigate = useNavigate(); const { hasPermission } = useAuth(); const { areaId, companyId, setAreaId, setCompanyId, clearContext } = useOperationalContext(); const [areas, setAreas] = useState([]); const [companies, setCompanies] = useState([]); const [search, setSearch] = useState(''); const canReadInventory = hasPermission('assets.read'); const canReadInspections = hasPermission('inspections.read'); useEffect(() => { if (!canReadInventory && !canReadInspections) return; listOperationalAreas().then(setAreas).catch(() => setAreas([])); }, [canReadInventory, canReadInspections]); useEffect(() => { if (!areaId) { setCompanies([]); if (companyId) setCompanyId(''); return; } listCompaniesForArea(areaId) .then((rows) => { setCompanies(rows); if (companyId && !rows.some((item) => item.id === companyId)) setCompanyId(''); }) .catch(() => setCompanies([])); }, [areaId, companyId, setCompanyId]); const selectedArea = useMemo(() => areas.find((item) => item.id === areaId) ?? null, [areas, areaId]); const selectedCompany = useMemo(() => companies.find((item) => item.id === companyId) ?? null, [companies, companyId]); const submitSearch = (event: FormEvent) => { event.preventDefault(); const term = search.trim(); if (!term || !canReadInventory) return; navigate(`/inventarios?view=list&search=${encodeURIComponent(term)}`); }; if (!canReadInventory && !canReadInspections) return null; return
CONTEXTO DE TRABAJO {selectedArea ? selectedArea.name : 'Todas las Áreas'}{selectedCompany ? ` · ${selectedCompany.name}` : ''}
{canReadInventory &&
setSearch(event.target.value)} placeholder="Buscar en el Inventario…" /> }
{canReadInventory && Inventario} {canReadInspections && Inspecciones} {(areaId || companyId) && }
; }