All Projects → mynameistechno → Finderjs

mynameistechno / Finderjs

Licence: mit
Browse hierarchical data in columns, similar to OS X's Finder

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Finderjs

Httpimport
Module for remote in-memory Python package/module loading through HTTP/S
Stars: ✭ 153 (-38.06%)
Mutual labels:  finder
Tinyfilemanager
The best web based PHP File Manager in single file, Manage your files efficiently and easily with tinyfilemanager
Stars: ✭ 2,679 (+984.62%)
Mutual labels:  file-manager
Jaya
Cross platform file manager application for Windows, Mac and Linux operating systems. (planned mobile support)
Stars: ✭ 219 (-11.34%)
Mutual labels:  file-manager
Esp8266 Iot Framework
Framework for IoT projects implementing HTTPS requests, a React web interface, WiFi manager, live dashboard, configuration manager, file manager and OTA updates.
Stars: ✭ 165 (-33.2%)
Mutual labels:  file-manager
Totalfinder I18n
Localization for TotalFinder
Stars: ✭ 181 (-26.72%)
Mutual labels:  finder
Awesome Finder
😎 Search the awesome curated list without browser
Stars: ✭ 194 (-21.46%)
Mutual labels:  finder
Filesystem
FileSystem is an application that allows you to browse the content of your iPhone disk, displaying file and folders, files contents, and detailed informations about file and folder permissions.
Stars: ✭ 148 (-40.08%)
Mutual labels:  finder
Joshuto
ranger-like terminal file manager written in Rust
Stars: ✭ 224 (-9.31%)
Mutual labels:  file-manager
Rx Explorer
一款轻量的UWP文件管理器 | A lightweight UWP Explorer
Stars: ✭ 184 (-25.51%)
Mutual labels:  file-manager
File Commander
Cross-platform Total Commander-like orthodox file manager for Windows, Mac and Linux
Stars: ✭ 216 (-12.55%)
Mutual labels:  file-manager
Relation Classification Using Bidirectional Lstm Tree
TensorFlow Implementation of the paper "End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures" and "Classifying Relations via Long Short Term Memory Networks along Shortest Dependency Paths" for classifying relations
Stars: ✭ 167 (-32.39%)
Mutual labels:  tree-structure
Vim Netranger
A ranger-like system/cloud storage explorer for Vim, bringing together the best of Vim, ranger, and rclone.
Stars: ✭ 170 (-31.17%)
Mutual labels:  file-manager
Laravel Tournaments
Laravel Package that allows you to generate customizable tournaments trees.
Stars: ✭ 196 (-20.65%)
Mutual labels:  tree-structure
Docviewer
文档/文件查看器(支持本地或者其他app分享过来的word、excel、pdf、rtf等格式文件)
Stars: ✭ 155 (-37.25%)
Mutual labels:  file-manager
Ultracopier
Ultracopier acts as a replacement for files copy dialogs. Features: play/pause, speed limitation, on-error resume, error/collision management ...
Stars: ✭ 220 (-10.93%)
Mutual labels:  file-manager
Graphview
Flutter GraphView is used to display data in graph structures. It can display Tree layout, Directed and Layered graph. Useful for Family Tree, Hierarchy View.
Stars: ✭ 152 (-38.46%)
Mutual labels:  tree-structure
Goful
Goful is a CUI file manager written in Go.
Stars: ✭ 194 (-21.46%)
Mutual labels:  file-manager
Arrow Meta
Functional companion to Kotlin's Compiler
Stars: ✭ 246 (-0.4%)
Mutual labels:  tree-structure
Ngraph.path
Path finding in a graph
Stars: ✭ 2,545 (+930.36%)
Mutual labels:  finder
Qian
A minimalist file-explorer using Electron via Elm !
Stars: ✭ 198 (-19.84%)
Mutual labels:  finder

npm version Build Status Code Climate Test Coverage

finderjs

Finder-like UI component for viewing hierarchical content in columns.

Demo:

http://mynameistechno.github.io/finderjs/

React

The engineering team at AndcultureCode has written a React wrapper for finderjs! Check it out:

https://github.com/AndcultureCode/react-finderjs

Installation

npm install finderjs

Usage

Use it as a CommonJS module, as a standalone script, or as a jQuery plugin. Roll your own CSS or feel free to use the styling in example/finderjs.css, which leverages flexbox.

In its simplest form:

var f = finder(container, data, options);
Parameter Type Description
container Element Container element for finder
data Array|Function Data source can be an array or function
options Object Configure classNames, item rendering, etc

Data

The hierarchical data is represented with nested arrays. A data source can be an array or a function that executes a callback with the data (an array). This is handy for asynchronous data, such as a remote web service.

Source is an array

Each item in the array itself should be an object. When the data source is an array, each object that doesn't contain a children property is considered a leaf node. When a leaf node is selected, the leaf-selected event will be emitted. When present, the value of the children property should be an array. When a node has children and it is selected, it will use the children to populate the next column.

var container = document.getElementById('container');
var data = [
  {
    label: 'Item 1',
    children: [
      {
        label: 'Item 1A',
        children: [
          {
            label: 'Item 1A1'
          }
        ]
      },
      {
        label: 'Item 1B'
      }
    ]
  }
];
var options = {};

var f = finder(container, data, options);

f.on('leaf-selected', function(item) {
  console.log('Leaf selected', item);
});

See this example for more details.

Source is a function

When the data source is a function there is no need for the children property. This function will be called on every selection and will pass along the selected item. A callback is provided and should be called only if there are children for a new column.

var container = document.getElementById('container');
var options = {};

/**
 * This function will be called on load and on every selection.
 * @param  {Object}   parent - item that was selected
 * @param  {Object}   cfg    - config object
 * @param  {Function} callback - call this with the data (Array)
 */
function remoteSource(parent, cfg, callback) {
  var children = [...];

  if (children.length) {
    callback(children);
  }
}

var f = finder(container, remoteSource, options);

See this example for more details.

Notes

If an object has a url property it will be treated slightly differently: the anchor tag that wraps the item will have the href attribute assigned to it. Upon selection of this item the browser will be redirected to the provided URL.

Events

finder will return an EventEmitter which allows you to listen to (and emit) the following events:

Event Description
item-selected An item was selected (clicked or keyboard arrow)
leaf-selected A leaf node was selected
interior-selected An interior node was selected
create-column Append a column to the container
column-created A column was appended to the container
navigate Navigate the finder by going up, down, right, or left
go-to Specify a path to programmatically "go to". Accepts a string or array, e.g. path/file.txt or ['path', 'file.txt']

Note that for historical reasons, leaf-selected and interior-selected receive the node object from the data model, while item-selected receives the DOM elements for the column and item selected.

See the examples for more details.

Options

Option Type Description
className Object Override the default classnames by populating this object
labelKey string Override the data key used to render labels. Defaults to label.
childKey string Override the data key used to populate children. Defaults to children.
createItemContent Function Define how each item is rendered. The first parameter passed in is the config object and the second is the item object that is currently being iterated on. It should return an HTML Element.
defaultPath string or array Specify path to preselect on load. E.g. path/file.txt or ['path', 'file.txt'].

Project commands

Command Description
npm install Install dependencies into node_modules/
make build Build finderjs and example
make install Clears node_modules and installs
make clean Remove build and coverage data
make lint Lint files
make test Run tests
make cover Run coverage tests
make watch in=<file> out=<file> Watchify a file
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].