You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An open-source React.js package for easy integration of a file manager into applications. It provides a user-friendly interface for managing files and folders, including viewing, uploading, and deleting, with full UI and backend integration.
4
4
5
-
## Features
5
+
## ✨ Features
6
6
7
7
-**View Files and Folders**: Display the directory structure with folders and files.
8
8
-**Upload Files**: Upload new files to a selected directory.
9
9
-**Delete Files and Folders**: Remove unwanted files or folders.
10
+
-**Copy and Move Files**: Easily copy or move files and folders to a different directory.
11
+
-**Inline Folder Creation and Renaming**: Create new folders and rename files or folders directly within the file list.
10
12
-**Toolbar**: Access common file operations such as upload, delete, and refresh with a convenient toolbar.
11
-
-**Breadcrumb Navigation**: Easily navigate through the directory structure.
12
-
-**Navigation Pane**: Easily switch between folders and directories with a sidebar navigation pane.
13
+
-**Breadcrumb Navigation**: Navigate through the directory structure with a breadcrumb trail.
14
+
-**Navigation Pane**: Quickly switch between folders and directories using a sidebar navigation pane.
13
15
-**Context Menu**: Right-click to open a context menu with options for cutting, copying, pasting, renaming, and deleting files or folders.
14
16
15
-
## Installation
17
+
## 🚀 Installation
16
18
17
19
To install `React File Manager`, use the following command:
18
20
19
21
```bash
20
22
npm i @cubone/react-file-manager
21
23
```
22
24
23
-
## Usage
25
+
## 💻 Usage
24
26
25
27
Here’s a basic example of how to use the File Manager Component in your React application:
26
28
@@ -33,17 +35,17 @@ function App() {
33
35
const [files, setFiles] =useState([
34
36
{
35
37
name:"Documents",
36
-
isDirectory:true, // Folder
38
+
isDirectory:true, // Folder
37
39
path:"/Documents", // Located in Root directory
38
40
},
39
41
{
40
42
name:"Pictures",
41
-
isDirectory:true, // Folder
43
+
isDirectory:true, // Folder
42
44
path:"/Pictures", // Located in Root directory
43
45
},
44
46
{
45
47
name:"Pic.png",
46
-
isDirectory:false, // File
48
+
isDirectory:false, // File
47
49
path:"/Pictures/Pic.png", // Located inside the "Pictures" folder
|`files`|`Array<{ name: string, isDirectory: boolean, path: string }>`| An array of file and folder objects representing the current directory structure. Each object includes `name`, `isDirectory`, and `path` properties. |
63
-
|`isLoading`|`boolean`| A boolean state indicating whether the application is currently performing an operation, such as creating, renaming, or deleting a file/folder. Displays a loading state if set `true`. |
64
-
|`fileUploadConfig`|`{ url: string; headers?: { [key: string]: string } }`| Configuration object for file uploads. It includes the upload URL (`url`) and an optional `headers` object for setting custom HTTP headers in the upload request. The `headers` object can accept any standard or custom headers required by the server. Example: `{ url: "https://example.com/fileupload", headers: { Authorization: "Bearer" + TOKEN, "X-Custom-Header": "value" } }`|
65
-
| onCreateFolder | (name: string, parentFolder: { name: string, isDirectory: boolean, path: string }) => void | A callback function triggered when a new folder is created. Use this function to update the files state to include the new folder under the specified parent folder using create folder API call to your server. |
66
-
|`onFileUploading`|`(file: { name: string, isDirectory: boolean, path: string }, parentFolder: { name: string, isDirectory: boolean, path: string }) => { [key: string]: any }`| A callback function triggered during the file upload process. You can also return an object with key-value pairs that will be appended to the `FormData` along with the file being uploaded. The object can contain any number of valid properties. |
67
-
|`onFileUploaded`|`(response: { [key: string]: any }) => void`| A callback function triggered after a file is successfully uploaded. Provides JSON `response` holding uploaded file details, use it to extracts the uploaded file details and add it to the `files` state e.g. ``setFiles((prev) => [...prev, JSON.parse(response)]);``|
68
-
| onRename | (file: { name: string, isDirectory: boolean, path: string }, newName: string) => void | A callback function triggered when a file or folder is renamed. |
69
-
| onDelete | (file: { name: string, isDirectory: boolean, path: string }) => void | A callback function triggered when a file or folder is deleted. |
70
-
| onPaste | (sourceItem: { name: string, isDirectory: boolean, path: string }, destinationFolder: { name: string, isDirectory: boolean, path: string }, operationType: "copy" or "move") => void | A callback function triggered when a file or folder is pasted into a new location. Depending on operationType, use this to either copy or move the sourceItem to the destinationFolder, updating the files state accordingly. |
71
-
|`onRefresh`|`() => void`| A callback function triggered when the file manager is refreshed. Use this to refresh the `files` state to reflect any changes or updates. |
|`files`|`Array<{ name: string, isDirectory: boolean, path: string }>`| An array of file and folder objects representing the current directory structure. Each object includes `name`, `isDirectory`, and `path` properties. |
66
+
|`isLoading`|`boolean`| A boolean state indicating whether the application is currently performing an operation, such as creating, renaming, or deleting a file/folder. Displays a loading state if set `true`. |
67
+
|`fileUploadConfig`|`{ url: string; headers?: { [key: string]: string } }`| Configuration object for file uploads. It includes the upload URL (`url`) and an optional `headers` object for setting custom HTTP headers in the upload request. The `headers` object can accept any standard or custom headers required by the server. Example: `{ url: "https://example.com/fileupload", headers: { Authorization: "Bearer" + TOKEN, "X-Custom-Header": "value" } }`|
68
+
| onCreateFolder | (name: string, parentFolder: { name: string, isDirectory: boolean, path: string }) => void | A callback function triggered when a new folder is created. Use this function to update the files state to include the new folder under the specified parent folder using create folder API call to your server. |
69
+
|`onFileUploading`|`(file: { name: string, isDirectory: boolean, path: string }, parentFolder: { name: string, isDirectory: boolean, path: string }) => { [key: string]: any }`| A callback function triggered during the file upload process. You can also return an object with key-value pairs that will be appended to the `FormData` along with the file being uploaded. The object can contain any number of valid properties. |
70
+
|`onFileUploaded`|`(response: { [key: string]: any }) => void`| A callback function triggered after a file is successfully uploaded. Provides JSON `response` holding uploaded file details, use it to extracts the uploaded file details and add it to the `files` state e.g. `setFiles((prev) => [...prev, JSON.parse(response)]);`|
71
+
| onRename | (file: { name: string, isDirectory: boolean, path: string }, newName: string) => void | A callback function triggered when a file or folder is renamed. |
72
+
| onDelete | (file: { name: string, isDirectory: boolean, path: string }) => void | A callback function triggered when a file or folder is deleted. |
73
+
| onPaste | (sourceItem: { name: string, isDirectory: boolean, path: string }, destinationFolder: { name: string, isDirectory: boolean, path: string }, operationType: "copy" or "move") => void | A callback function triggered when a file or folder is pasted into a new location. Depending on operationType, use this to either copy or move the sourceItem to the destinationFolder, updating the files state accordingly. |
74
+
|`onRefresh`|`() => void`| A callback function triggered when the file manager is refreshed. Use this to refresh the `files` state to reflect any changes or updates. |
75
+
76
+
## 🤝 Contributing
74
77
75
78
Contributions are welcome! To contribute:
76
79
@@ -89,8 +92,9 @@ cd react-file-manager
89
92
npm i
90
93
npm run dev
91
94
```
95
+
92
96
The application should now be running on `http://localhost:5173`, have fun!
0 commit comments