Giter Site home page Giter Site logo

tree-finder

tree-finder

Build Status NPM Version

A Javascript library for the browser, tree-finder exports a custom element named <tree-finder>, which can be used to easily render filebrowers or other hierarchical trees. Only visible cells are rendered.

Features

  • lazy data model and virtualized rendering -> can support billions of rows
  • tree-like columns
  • multi-sort
  • multi-selection
  • multi-filter
  • built in breadcrumbs
  • full clipboard model, with support for copy/cut/paste between multiple <tree-finder> instances
  • command hooks to support 3rd party integrations
    • basic actions
      • open
      • delete
      • rename
      • copy
      • cut
      • paste
    • integration of command hooks with selection model
  • icon support
    • icons-as-svg-elements
    • icons-as-css-classes
  • drag-n-drop

Examples - try <tree-finder> out live

basic
basic

Installation

Include via a CDN like JSDelivr:

  <script src="https://cdn.jsdelivr.net/npm/@tree-finder/base/dist/tree-finder.js"></script>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tree-finder/base/dist/tree-finder.css">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tree-finder/base/dist/theme/material.css">

Or, add to your project via yarn:

yarn add @tree-finder/base

... then import into your asset bundle.

import "@tree-finder/base";
import "@tree-finder/base/style/theme/material.css";

Development

  • First, ensure that you have nodejs >= 12.0.0 and yarn >= v1.2.0 installed
  • Clone this repo
  • Build and run the "simple" example
    cd examples/simple
    yarn
    yarn start

yarn start will launch a dev server. Open the url it supplies in any browser in order to view the example. While the dev server is running, any changes you make to the source code (ie any .ts or .less files) will trigger a rebuild, and the example will automatically reload in your browser.

Data Model

A tree-finder instance should be inited with a root directory:

  await treeFinder.init({
    root,
    gridOptions: {
      doWindowResize: true,
      showFilter: true,
    },
  });

Starting from the root, objects should contain at least the field kind which will be dir for directory, or another file type (e.g. text). For directories, it should have a method async getChildren to get the contents of that directory.

tree-finder's Projects

tree-finder icon tree-finder

Versatile tree-viewer/filebrowser widget, built on top of regular-table

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.