Treeview

This page is the demo for a series on how to create a treeview in react.

Part 1

Structure

  • components
    • toggle-group
      • index.ts
      • toggle-group.tsx
    • treeview
      • icons.tsx
      • index.tsx
      • treeview.tsx
    • roving-tabindex.tsx
    • index.tsx
  • lib
    • treeview
      • index.ts
      • initialValue.ts
      • tree-state.tsx
      • useTreeNode.tsx
    • utils
      • chainable-map.ts
      • index.ts
  • pages
    • _app.tsx
    • _document.tsx
    • index.tsx
    • toggle-group.tsx
    • treeview.tsx
  • public
    • favicon.ico
    • file.png
    • folder.png
    • next.svg
    • thirteen.svg
    • vercel.svg
  • styles
    • global.css
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Open

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Open state indicator

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Selection

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Part 2

Adding Roving tabindex

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Up / Down keybindings

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Right and Left keybindings

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Updated focus styles

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Home and end keybindings

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Typeahead

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Selection

  • components
  • lib
  • pages
  • public
  • styles
  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

ARIA

  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Part 3: Animation

  • .eslintrc.json
  • .gitignore
  • .prettierrc.js
  • next-env.d.ts
  • next.config.js
  • package.json
  • postcss.config.js
  • README.md
  • tailwind.config.js
  • tsconfig.json
  • yarn.lock

Large dataset