npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tsc-react-sortable

v0.1.14

Published

React component written in Typescript

Downloads

36

Readme

tsc-react-sortablejs

React component written in Typescript

Features

  • Drag and Drop between lists
  • Nested lists
  • Calculates items in list automatically
  • Full API of SortableJS
  • Convenient SortableJS API via props
  • Controlled and Uncontrolled components
  • Sortable Utilities
  • Compatible with third part UI libraries
  • SortableJS Plugin Support

If you find any features lacking, create an issue and/or pull request.

Upgrading to Major Version +2.0.0

  • onChange is now (list: any[], Sortable: SortableJS, evt: SortableEvent) => any from (order: string[], Sortable: SortableJS, evt: SortableEvent) => any. There is no need for you to sort out your own lists anymore.
  • Controlled Components only. To use without managing much state, use a FunctionComponent and utilize the useState() hook provided by React.
  • data-id is not required for each list item anymore, as the component will do this for you when the unique key (not the index) is provided. There is a warning message for this.
  • Add event listeners via props, such as add={(evt) => console.log('I added an item from a different list to this list!)}

Caveats / Gotchas

  • Add a list and use the onChange prop to update your state
  • The default import should be ReactSortable by convention. Using Sortable will create a sortable instance and not be controlled by React.

Examples

Motivation

The motivation behind this project is to create a version of React SortableJs that infers types, for safety, intellisense and many other features that intergrate with the Typescript ecosystem.

It turns out that having type safety allowed for many of the features that were lacking in the +1.0.0 version to start working again, such as nested dragging.

The current officially suppported ES2015+ component does not support Typescript.

TODO

This component is still ready to be used, but is still under development and may lack some features. We will be adding these features soon.

  • DOM Manipulation. Currently does not touch the DOM using functions such as evt.item.parentNode.delete. This will allow the component to be an uncontrolled component, which is currently not supported.
  • More Props. The goal is to have this just like vue-draggable where all the features such as clone and sort are exposed via props. This can be added in the options, but having the API would look much nicer.
  • Tests and CI. Would be nice to have this stuff automated. Not sure how to tes the intergration between components and draggable options