Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-nestable

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-nestable

Drag & drop hierarchical list made as a react component

  • 3.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
15K
decreased by-9.57%
Maintainers
1
Weekly downloads
 
Created
Source

Table of Contents

  • Demo
  • Installation
  • Usage
  • Options
  • Todo
  • License

Demo

Demo

Installation

npm install -save react-nestable

Usage

import Nestable from 'react-nestable';

// this usually goes once
// to the entry point of the whole app
// (e.g. src/index.js)
import 'react-nestable/dist/styles/index.css';

// every item must have a unique `id`
// in order to distinguish elements
const items = [
  { id: 0, text: 'Andy' },
  {
    id: 1, text: 'Harry',
    children: [
      { id: 2, text: 'David' }
    ]
  },
  { id: 3, text: 'Lisa' }
];

const renderItem = ({ item }) => item.text;

const Example = () => (
  <Nestable
    items={items}
    renderItem={renderItem}
  />
);

Options

PropertyTypeDefaultDescription
childrenPropstring"children"Name of a property for children.
classNamestringundefinedExtra class name which can be passed to a root element.
collapsedbooleanfalseMakes groups collapsed by default.
confirmChangefunction() => trueCallback which has a single parameter with keys: dragItem - item which is being dragged, destinationParent - item where dragItem is about to land (or null if moving to root). Let function return false if this movement should not happen.
disableCollapsebooleanfalseDisable toggling a collapsed state of items with children. If you need to set a specific initial state, then it is still possible to do so with the public method collapse.
disableDragboolean or functionfalseDisable dragging. Pass boolean to apply to all items. Pass a callback to target individual items. It has a single parameter with keys: item - item from your array, index - number, index of the item, depth - number, depth of the item.
groupstring or numberrandom stringDifferent group names may be passed if you have more than one nestable component on a page and want some extra styles for portal instances.
handlernodeundefinedIf you pass it, it will get wrapped with drag handlers and you may use it in your render method.
idPropstring"id"Name of a property for id.
itemsarray[]Array of items. Every item must be of shape {id: @uniq} to distinguish elements.
maxDepthnumber10Maximum available level of nesting.
onChangefunction() => {}Callback which has a single parameter with keys: items - new array after position was changed, dragItem - item which has been moved, targetPath - array of numbers, those numbers are indices and they make path to a location, to where item has been moved.
onCollapseChangefunction() => {}Callback which has a single parameter with one of two possible keys: openIds - array of ids which are open if collapsed is set to ture, or closedIds - array of ids which are closed if collapsed is set to false. Note: this callback is triggered not only when user explicitly opens or closes an item, but when implicit events happen as well, like when the only child of open item is moved out.
onDragEndfunction() => {}Callback which has no parameters. It is invoked when dragging ends via drop or cancel.
onDragStartfunction() => {}Callback which has a single parameter with keys: dragItem - item which has been moved.
renderCollapseIconfunction() => <DefaultIcon />Function for rendering collapse icon. Has a single parameter with keys: isCollapsed - boolean, true if this group has children and is collapsed, item - item from your array.
renderItemfunction({item}) => String(item)Function for rendering every item. Has a single parameter with keys: item - item from your array, index - number, index of the item, depth - number, depth of the item, collapseIcon - node, icon for items with children (allows you to collapse the group), handler - node, which you have passed via the same property, but wrapped with some additional events, isDraggable - boolean, tells if dragging is allowed for this item (see disableDrag prop for details).
thresholdnumber30Amount of pixels which mouse should move horizontally before increasing/decreasing level (nesting) of current element.
Public methods
MethodAcceptsDescription
collapsestring or array"NONE" - expand all groups; "ALL" - collapse all groups; [] - collapse all groups with ids from given array.

Todo

  • add touch
  • cover with tests

PS: Please, make an issue or create a PR if you need any more functionality.

License

ISC

Keywords

FAQs

Package last updated on 11 Dec 2023

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc