Saltar al contenido

Listado

Beta

Buscar, filtrar y elegir entre muchos ítems: lista o grilla, orden, paginación, estado vacío y detalle en un Drawer.

registry/examples/templates/list.tsx
Abrir en una pestaña nueva ↗

Para probarlo: buscá "zzz" para ver el vacío, filtrá por turno Noche, cambiá a grilla, ordená por cupo y abrí una materia con "Ver".

Qué incluye

Decisiones

  • Cualquier filtro vuelve a la página 1. Si no, el usuario queda en una página que ya no existe.
  • El conteo tiene aria-live="polite": al filtrar, el lector de pantalla escucha "4 materias" sin que haya que mover el foco.
  • "Ver" es un botón, no la fila entera. Una fila clickeable no se anuncia, no se tabula y choca con el botón de ordenar. El botón lleva aria-label con el nombre de la materia.
  • El Drawer es controlado (open + onOpenChange) y se cierra al inscribirse; la confirmación va en un Toast para no tapar el listado.
  • Inscribirme se deshabilita si no hay cupo, en vez de dejar que falle.
  • Columnas secundarias se ocultan por ancho (max-lg:hidden, max-sm:hidden); en móvil la grilla suele funcionar mejor que la tabla.

Cómo adaptarlo

  • Mové el filtrado y el orden al servidor cuando haya más de unas cientas filas: la forma del estado (query, carrera, turno, sort, page) es la misma.
  • Si el detalle necesita más que un Drawer sm, usá size="md" o llevalo a una página propia y dejá el Drawer para la vista rápida.

Instalación

npx shadcn@latest add https://polen.cdc.cool/r/template-list.json