53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
// src/features/legislativas/nacionales/ResultadosNacionalesCardsWidget.tsx
|
|
import { useQuery } from '@tanstack/react-query';
|
|
import { getResumenPorProvincia } from '../../../apiService';
|
|
import { ProvinciaCard } from './components/ProvinciaCard';
|
|
// 1. La importación de CSS ahora se hace como un módulo
|
|
import styles from './ResultadosNacionalesCardsWidget.module.css';
|
|
|
|
interface Props {
|
|
eleccionId: number;
|
|
focoDistritoId?: string;
|
|
focoCategoriaId?: number;
|
|
cantidadResultados?: number;
|
|
mostrarBancas?: boolean;
|
|
}
|
|
|
|
export const ResultadosNacionalesCardsWidget = ({
|
|
eleccionId,
|
|
focoDistritoId,
|
|
focoCategoriaId,
|
|
cantidadResultados,
|
|
mostrarBancas = false
|
|
}: Props) => {
|
|
|
|
const { data, isLoading, error } = useQuery({
|
|
queryKey: ['resumenPorProvincia', eleccionId, focoDistritoId, focoCategoriaId, cantidadResultados],
|
|
|
|
queryFn: () => getResumenPorProvincia(eleccionId, {
|
|
focoDistritoId,
|
|
focoCategoriaId,
|
|
cantidadResultados
|
|
}),
|
|
refetchInterval: 30000,
|
|
});
|
|
|
|
if (isLoading) return <div>Cargando resultados por provincia...</div>;
|
|
if (error) return <div>Error al cargar los datos.</div>;
|
|
if (!data || data.length === 0) return <div>No hay resultados para mostrar con los filtros seleccionados.</div>
|
|
|
|
// 2. Todas las props 'className' ahora usan el objeto 'styles'
|
|
return (
|
|
<section className={styles.cardsWidgetContainer}>
|
|
<div className={styles.cardsGrid}>
|
|
{data?.map(provinciaData => (
|
|
<ProvinciaCard
|
|
key={provinciaData.provinciaId}
|
|
data={provinciaData}
|
|
mostrarBancas={mostrarBancas}
|
|
/>
|
|
))}
|
|
</div>
|
|
</section>
|
|
);
|
|
}; |