-
-
Notifications
You must be signed in to change notification settings - Fork 66
Expand file tree
/
Copy pathActions.jsx
More file actions
88 lines (82 loc) · 2.34 KB
/
Actions.jsx
File metadata and controls
88 lines (82 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import { useEffect, useState } from "react";
import Modal from "../../components/Modal/Modal";
import DeleteAction from "./Delete/Delete.action";
import UploadFileAction from "./UploadFile/UploadFile.action";
import PreviewFileAction from "./PreviewFile/PreviewFile.action";
import { useSelection } from "../../contexts/SelectionContext";
import { useShortcutHandler } from "../../hooks/useShortcutHandler";
import { useTranslation } from "../../contexts/TranslationProvider";
const Actions = ({
fileUploadConfig,
onFileUploading,
onFileUploaded,
onDelete,
onRefresh,
onPick,
maxFileSize,
filePreviewPath,
filePreviewComponent,
acceptedFileTypes,
triggerAction,
permissions,
}) => {
const [activeAction, setActiveAction] = useState(null);
const { selectedFiles } = useSelection();
const t = useTranslation();
// Triggers all the keyboard shortcuts based actions
useShortcutHandler(triggerAction, onRefresh, onPick, permissions);
const actionTypes = {
uploadFile: {
title: t("upload"),
component: (
<UploadFileAction
fileUploadConfig={fileUploadConfig}
maxFileSize={maxFileSize}
acceptedFileTypes={acceptedFileTypes}
onFileUploading={onFileUploading}
onFileUploaded={onFileUploaded}
/>
),
width: "35%",
},
delete: {
title: t("delete"),
component: <DeleteAction triggerAction={triggerAction} onDelete={onDelete} />,
width: "25%",
},
previewFile: {
title: t("preview"),
component: (
<PreviewFileAction
filePreviewPath={filePreviewPath}
filePreviewComponent={filePreviewComponent}
/>
),
width: "50%",
},
};
useEffect(() => {
if (triggerAction.isActive) {
const actionType = triggerAction.actionType;
if (actionType === "previewFile") {
actionTypes[actionType].title = selectedFiles?.name ?? t("preview");
}
setActiveAction(actionTypes[actionType]);
} else {
setActiveAction(null);
}
}, [triggerAction.isActive]);
if (activeAction) {
return (
<Modal
heading={activeAction.title}
show={triggerAction.isActive}
setShow={triggerAction.close}
dialogWidth={activeAction.width}
>
{activeAction?.component}
</Modal>
);
}
};
export default Actions;