PromptInput rejects every file when accept lists file extensions (".xlsx")
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 83/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- react, typescript
- Área
- frontend
Línea de trabajo
Lee packages/elements/src/prompt-input.tsx, especialmente matchesAccept alrededor de las líneas 555–576, donde se comparan los patrones de accept. Comprueba la reproducción del issue usando un archivo .xlsx con el tipo vacío y el comportamiento existente del filtrado de archivos para los patrones MIME. Se considera terminado cuando los valores de accept basados en extensiones permiten que los archivos coincidentes pasen mediante add, pegado y arrastre, sin romper el filtrado por tipo MIME.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
PromptInput passes accept to its hidden file input, where extension entries like .xlsx or .csv are valid. The filter that runs afterwards (matchesAccept) only understands type/* and exact MIME types, so an extension entry never matches. With accept=".xlsx" the file dialog offers the spreadsheet, then add rejects it: onError fires with code: "accept" ("No files match the accepted types."), or nothing happens without onError. Paste and drop use the same filter.
I use extensions because the browser often reports an empty or generic type ("" or application/octet-stream) for .md, .csv or Office files, depending on the OS.
Repro (registry main 6a9d5b1, Chrome):
const file = new File(["sheet"], "report.xlsx", { type: "" });
const AddButton = () => {
const attachments = usePromptInputAttachments();
return (
<button onClick={() => attachments.add([file])} type="button">
Add
</button>
);
};
<PromptInput accept=".xlsx" onError={console.log} onSubmit={() => {}}>
<PromptInputBody>
<AddButton />
<PromptInputTextarea />
</PromptInputBody>
</PromptInput>;
Expected: the file is added, as the native accept attribute allows it.
Actual: onError is called with { code: "accept" } and nothing is added.
Cause: prompt-input.tsx#L555-L576 compares every pattern that does not end in /* with f.type, and a pattern starting with "." never equals a MIME type. It came in with #279, which replaced the old fallback that returned true for anything except image/*.
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.5k
- Forks
- 291
- Merge medio
- 20 min
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de vercel/ai-elements
-
PromptInput: successful async submit clears text typed while the submit was pendingPosiblemente ocupada @NicolasMilliard la tomó hace 12 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
vercel/ai-elements#518 ·
Los mantenedores suelen responder en 1 día
-
Attachments: remove button stays invisible on keyboard focus and on touch screensPosiblemente ocupada @HardMax71 la tomó hace 28 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
vercel/ai-elements#507 ·
Los mantenedores suelen responder en 1 día
-
ChainOfThought: the header's aria-controls points at an element that is never renderedPosiblemente ocupada @HardMax71 la tomó hace 28 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
vercel/ai-elements#505 ·
Los mantenedores suelen responder en 1 día
-
Context: ContextReasoningUsage and ContextCacheUsage don't compile with ai 7Posiblemente ocupada @burrows99 la tomó hace 18 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
vercel/ai-elements#500 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
vercel/ai-elements#498 ·
Los mantenedores suelen responder en 1 día
Todos los issues de vercel/ai-elements
Issues similares
-
area:cli bug P4
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
bug from-studio
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
esengine/DeepSeek-Reasonix#14868 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
loopbackio/loopback-next#11878 ·
Los mantenedores suelen responder en 2 días
-
bug 🐛
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
comunica/comunica#1925 · 1 comentario ·
Los mantenedores suelen responder en 1 día