Skip to content

Commit 199d290

Browse files
authored
FileUpload - include file dismiss hook (#589)
1 parent 2881fc1 commit 199d290

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

src/components/FileUpload/FileUpload.stories.tsx

+9-1
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,22 @@ export default {
3434
},
3535
onFileSelect: { action: "file selected" },
3636
onRetry: { action: "retry requested" },
37+
onFileFailure: { action: "operation failed" },
38+
onFileClose: { action: "operation dismissed" },
3739
},
3840
};
3941

4042
export const SmallSize = {
4143
args: {
4244
title: "Upload file",
43-
supportedFileTypes: [".txt", ".csv", ".json", ".sql"],
45+
supportedFileTypes: [".txt", ".csv"],
4446
size: "sm",
4547
progress: 75,
4648
showProgress: false,
4749
showSuccess: false,
50+
onRetry: () => console.log("File retried"),
51+
onFileFailure: () => console.log("File failed"),
52+
onFileClose: () => console.log("File dismissed"),
4853
},
4954
parameters: {
5055
docs: {
@@ -61,6 +66,9 @@ export const MediumSize = {
6166
supportedFileTypes: [".txt", ".csv", ".json", ".sql"],
6267
progress: 65,
6368
size: "md",
69+
onRetry: () => console.log("File retried"),
70+
onFileFailure: () => console.log("File failed"),
71+
onFileClose: () => console.log("File dismissed"),
6472
},
6573
parameters: {
6674
docs: {

src/components/FileUpload/FileUpload.tsx

+12-6
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ interface FileUploadProps {
2121
failureMessage?: string;
2222
onRetry?: () => void;
2323
onFileSelect?: (file: File) => void;
24-
onFileSelectFailure?: () => void;
24+
onFileFailure?: () => void;
25+
onFileClose?: () => void;
2526
}
2627

2728
const UploadArea = styled.div<{
@@ -198,7 +199,8 @@ export const FileUpload = ({
198199
failureMessage = "Upload failed",
199200
showProgress = false,
200201
showSuccess = false,
201-
onFileSelectFailure,
202+
onFileFailure,
203+
onFileClose,
202204
}: FileUploadProps) => {
203205
const [isDragging, setIsDragging] = useState(false);
204206
const [isNotSupported, setIsNotSupported] = useState(false);
@@ -266,8 +268,8 @@ export const FileUpload = ({
266268
const processFile = useCallback(
267269
(file: File) => {
268270
if (!isFiletypeSupported(file.name, supportedFileTypes)) {
269-
if (onFileSelectFailure) {
270-
onFileSelectFailure();
271+
if (onFileFailure) {
272+
onFileFailure();
271273
console.log("File type not supported");
272274
setIsNotSupported(true);
273275
} else {
@@ -288,7 +290,7 @@ export const FileUpload = ({
288290
setIsNotSupported(false);
289291
}
290292
},
291-
[onFileSelect, supportedFileTypes, onFileSelectFailure]
293+
[onFileSelect, supportedFileTypes, onFileFailure]
292294
);
293295

294296
const handleDrop = useCallback(
@@ -327,7 +329,11 @@ export const FileUpload = ({
327329
if (fileInputRef.current) {
328330
fileInputRef.current.value = "";
329331
}
330-
}, []);
332+
333+
if (onFileClose) {
334+
onFileClose();
335+
}
336+
}, [onFileClose]);
331337

332338
const handleRetryUpload = useCallback(() => {
333339
if (onRetry) {

0 commit comments

Comments
 (0)