Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
react-nested-file-tree
Advanced tools
React component for presenting file-directory-tree-like structured data.
Requires React 15.0.0+.
For npm-based project
npm install react-nested-file-tree --save
Or use it as individual script
Download distributiont package files in /dist/
and include them in your page.
<link href="/default.css" rel="stylesheet">
...
<script src="./react-nested-file-tree.js"></script>
Also need to alias the default export property:
const FileTree = NestedFileTree.default;
Suppose you have an Object contains data to describe nested directory tree:
const directory = {
"_contents": [
{
"name": "filename_1",
"path": "filename_1"
},
{
"name": "filename_2",
"path": "filename_2"
}
],
"folder_1": {
"_contents": [
{
"name": "filename_1",
"path": "folder_1/filename_1"
}
]
},
"folder_2": {
"_contents": [],
"folder_2_1": {
"_contents": [
{
"name": "filename1.md",
"path": "folder_2/folder_2_1/filename1.md"
}
],
"folder_2_1_1": {
"_contents": [
{
"name": "filename1.md",
"path": "folder_2/folder_2_1/folder_2_1_1/filename1.md"
}
]
}
}
}
}
With this kind of data tructure, you can do:
import NestedFileTreeView from 'react-nested-file-tree'
// basic styles
import 'react-nested-file-tree/dist/default.css'
class MyDirectory extends Component {
constructor (props) {
super(props)
this.state = {
selectedFile: 'some_folder/some_file'
}
}
handleFileClick (file) {
console.log(file)
this.setState({ selectedFile: file.path })
}
handleFolderClick (folderName) {
console.log(folderName)
}
render () {
return (
<NestedFileTreeView
selectedFilePath={this.state.selectedFile}
fileClickHandler={::this.handleFileClick}
folderClickHandler={::this.folderClickHandler}
directory={directory} />
)
}
}
See example
folder for more examples, and online demo.
Directory data object, it has to be in below nested fomat:
{
_contents: [
{
name: 'file_name1',
path: 'file_name1'
}
],
folder_name1: {
_contents: [
{
name: 'file_name2',
path: 'folder_name1/file_name2'
}
],
folder_name2: {
_contents: [
{
name: 'file_name3',
path: 'folder_name1/folder_name2/file_name3'
}
]
}
}
}
Which represents a file directory:
|-- file_name1
|-- folder_name1
|-- file_name2
|-- folder_name2
|-- file_name3
A number to limit maximum folder depth to display.
For example, given maxFolderLevel={2}
, then only 2 level of folders are rendered, if there are folders deeper than that, it would show <span class="more">...<span>
All folders are collapsed by default. If given expended={true}
(true
can be omitted), then all folders would be expended until user click on it to collapse.
A callback function for file name click event handler, the file object will be passed in:
function ({name, path}) {}
A callback function for folder name click event handler, the folder name string, current folder path, and folder Object will be passed in as parameters:
function (name, currentPath, folderObj) {}
For passing in extra class names to the file element <li class="item">...</li>
.
For passing in extra class names to the folder element <li class="subFolder">...</li>
.
To sepecify a selected file by file path. With default styles, the selected file will be highlighted in blue.
By default the selected file element will has class name active
, you can pass in extra class names for that.
You can create your own stateless folder component folderTemplate={CustomFolder}
like this:
function CustomFolder ({ name, currentPath, folderObj, onclick }) {
return (
<a onClick={onclick}>
<span className='icon'>other stuff</span>
{name}
</a>
)
}
Create your own stateless component file fileTemplate={CustomFile}
like this:
function CustomFile (props) {
return (
<a>
<span className='icon'>other stuff</span>
{props.name}
</a>
)
}
npm install
to install dependencynpm test
to run testsnpm run example
to run development server on localhost:8080
npm run build:dist
to build distribution packageFAQs
React component for file directory
We found that react-nested-file-tree demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.