Facebook Pixel

File Explorer

React.js
hard
45 mins

This project implements a dynamic and recursive file explorer component in React. It mimics the behavior of a typical file system viewer, where folders can be expanded or collapsed, and users can add or remove files and folders at any level of the hierarchy.

Key Features:

  • Recursive Rendering: Folders can contain nested folders/files to any depth, handled with recursion.
  • Expand/Collapse UI: Each folder has toggle icons (using react-icons) to show/hide its contents.
  • Add Items: Users can add a file or folder inside any existing folder dynamically.
  • Remove Items: Files or folders (and their children) can be removed instantly.
  • State Management: The file tree is managed using React useState, and state updates propagate through the recursive structure.
  • Minimal Styling: Clean, readable layout using inline styles and icons for better UX.
  • Design a modal that appears when users click "Add Folder" or "Add File". The modal should contain:
    • An input field (<input>) where users can type the name of a new file or folder.
    • An Add button (<button>) to submit the name.
    • A Cancel button (<button>) to close the modal without making any changes.

Icons Used

  • MdExpandMore – Folder collapsed
    import { MdExpandMore } from "react-icons/md"

  • MdExpandLess – Folder expanded
    import { MdExpandLess } from "react-icons/md"

  • MdDeleteOutline – Delete file/folder
    import { MdDeleteOutline } from "react-icons/md"

  • FiFolderPlus – Add new folder
    import { FiFolderPlus } from "react-icons/fi";

  • AiOutlineFileAdd – Add new file
    import { AiOutlineFileAdd } from "react-icons/ai";

You need to ensure that data-testid attributes are added to the relevant elements .

  • Add data-testid="add" to the "Add" button inside the modal.
  • Add data-testid="cancel" to the "Cancel" button inside the modal.
  • For the "Add Folder" icon, add data-testid="add-folder-{id}", where {id} is the ID of the folder.
  • For the "Add File" icon, add data-testid="add-file-{id}", where {id} is the ID of the file.
  • For the "Delete" icon, add data-testid="delete" to each delete button.

Reference UI

fileExplorer

Preview what you need to build

Companies:

microsoft
adobe

Solve Similar questions 🔥

Please Login.
Please Login.