[Feature Request]: Add Event Parameter to Distinguish Adding / Removing Files from File Upload component
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- react, typescript
- Área
- frontend
Línea de trabajo
Start at the FileUpload component's onChange prop and inspect how its event is produced when files are added or removed. Determine how the event can distinguish those actions, then check the component's existing tests for the expected behavior. Done means consumers can tell whether an onChange resulted from adding or removing files.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
Hello,
When we add or remove files from the file upload component, the event that is passed in to the onChange prop is as follows:
cancelBubble : boolean,
cancelable : boolean,
defaultPrevented : boolean
detail: {value: Array(File)}
However, when uploading or remove files (by hitting on the X on one of the files), the event cannot tell them apart, therefore when trying to implement logic to prevent the use from uploading duplicated files, it is impossible to know whether they are uploading or removing.
This is how I am trying to add logic to the file upload, using react-hook-form
<Controller
name={formField.key as Path<TData>}
control={props.reactHookForm.control}
key={formField.key as string}
render={({ field, fieldState }) => (
<FormField
label={formField.label}
errorText={fieldState.error?.message}
>
<FileUpload
onChange={(e) => {
console.log(e);
let filesToUpload = e.detail.value;
let skipFileCheck = false;
// check to make sure the file is allowed
if (formField.allowedTypes.includes(DocumentType.ANY))
{
skipFileCheck = true;
}
if (!skipFileCheck)
{
filesToUpload.forEach((file: File) => {
if (!formField.allowedTypes.includes(file.type as DocumentType)) {
// remove the file from the list
filesToUpload = filesToUpload.filter((f) => f !== file);
}
});
}
// remove any files that already exist in the field
if (field.value)
{
field.value.forEach((file: File) => {
filesToUpload = filesToUpload.filter((f) => f !== file);
});
}
field.onChange(filesToUpload);
}}
value={field.value ? field.value : []}
i18nStrings={{
uploadButtonText: e =>
e ? "Choose files" : "Choose file",
dropzoneText: e =>
e
? "Drop files to upload"
: "Drop file to upload",
removeFileAriaLabel: e =>
`Remove file ${e + 1}`,
limitShowFewer: "Show fewer files",
limitShowMore: "Show more files",
errorIconAriaLabel: "Error"
}}
showFileLastModified
showFileSize
multiple
showFileThumbnail
tokenLimit={3}
constraintText="Hint text for file requirements"
/>
</FormField>
)}
/>
Code of Conduct
- I agree to follow this project's Code of Conduct
- I checked the current issues for duplicate requests
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.7k
- Forks
- 248
- Merge medio
- 3 d 14 h
- PR fusionados (30 d)
- 83
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 cloudscape-design/components
-
[Bug]: Circular app layout navigation and help icons are shifted upward in the official demoAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
cloudscape-design/components#5184 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
cloudscape-design/components#5152 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
cloudscape-design/components#5149 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
cloudscape-design/components#5117 · 2 comentarios ·
Los mantenedores suelen responder en 2 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
cloudscape-design/components#5106 · 1 comentario ·
Los mantenedores suelen responder en 2 días
Todos los issues de cloudscape-design/components
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
outline/outline#14348 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
[Bug]: Agent import retains quotes in .env API keys followed by inline commentsPosiblemente ocupada @yxr-2025 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
elie222/rakazo#2322 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
awslabs/visual-asset-management-system#804 ·
Los mantenedores suelen responder en 1 día
-
用户目录有单引号时,热加载时YAML解析崩溃Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
dsh-market/dsh-market#1027 · 1 comentario ·
Los mantenedores suelen responder en 1 día