'use client' import { useState } from 'react' export interface DisplayRow { key: string submissionNum: number isFirstInGroup: boolean date: string code: string prompt: string rendered: string | null zone: string sector: string } export function ResponsesTable({ rows }: { rows: DisplayRow[] }) { const [expanded, setExpanded] = useState>(new Set()) function toggle(submissionNum: number) { setExpanded((prev) => { const next = new Set(prev) if (next.has(submissionNum)) next.delete(submissionNum) else next.add(submissionNum) return next }) } return ( {rows .filter((row) => row.isFirstInGroup || expanded.has(row.submissionNum)) .map((row) => { const groupClass = row.submissionNum % 2 === 0 ? 'admin-group-even' : 'admin-group-odd' const isExpanded = expanded.has(row.submissionNum) const trClass = row.isFirstInGroup ? `${groupClass} admin-group-start admin-row-toggle` : groupClass return ( toggle(row.submissionNum) : undefined} onKeyDown={ row.isFirstInGroup ? (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault() toggle(row.submissionNum) } } : undefined } role={row.isFirstInGroup ? 'button' : undefined} tabIndex={row.isFirstInGroup ? 0 : undefined} aria-expanded={row.isFirstInGroup ? isExpanded : undefined} > ) })}
# Fecha Código Pregunta Valor Departamento Sector
{row.isFirstInGroup && ( )} {row.submissionNum} {row.date} {row.code} {row.prompt} {row.rendered === null ? ( sin dato ) : ( row.rendered )} {row.zone} {row.sector}
) }