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

draggy

v2.0.5

Published

Make element draggable

Downloads

2,411

Readme

Draggy

Make any element draggable. Demo.

npm install draggy

import Draggable from 'draggy';

//make an element draggable
var el = document.querySelector('.my-element');
var draggy = new Draggable(el, {
	release: true,
	sniper: false,
	axis: 'x'
});

//bind event handler
draggy.on('drag', function () {
	// ...
});

Options

| Parameter | Default | Description | |---|:---:|---| | axis | null | Restrict movement by axis: 'x', 'y' or null. | | pin | [0,0, selfWidth, selfHeight] | Defines a smaller area within the draggable element that stays within movement limits. Useful to restrict movement based on an inner shape rather than the full element. | | precision | 1 | Round position to that extent, in pixels. | | css3 | true | Use position vs translate3d to place element. The first is more precise and reliable, the second is faster. | | release | false | Continue movement when user releases drag. | | repeat | false | Loop movement by one of axis: 'x', 'y' or 'both'. | | sniper | true | Slow down movement by pressing Ctrl/Cmd. | | threshold | 0 | A movement threshold required to start drag - whether an array, number or function. | | within | document | Restrict movement within the container. Pass 'parent' to use parent node. | | handle | self.element | Use element or selector as a handle for drag. Clicking outside the handle is ignored. | | cancel | undefined | Ignore dragging started on the elements matching the selector. | | droppable | undefined | Selector, element or list of elements to detect droppable areas. For each drop element will be invoked drop, dragover and dragout events. |

Events

| Name | Description | |---|---| | dragstart | Drag started. Called both on element/controller. | | threshold | Entered threshold mode. Called on controller. | | drag | Drag iteration. Called both on element/controller. | | track | Track movement. Called on controller. | | release | User released drag. Called on controller. | | dragend | Drag has completely finished. Called both on element/controller. | | dragover | Called on self and on drop target. | | dragout | Called on self and on drop target. | | drop | Called on self and on drop target. |

What draggy is not

  • It doesn’t do ghost move, as it is not draggable behavior and can be implemented externally.
  • It doesn’t do mouse hiding on drag, as it can be done via callbacks.
  • It doesn’t init itself automatically - it's up to you to decide when to create/init draggable.
  • It doesn’t polyfill native draggable, as it targets to complete simple task of visual placement of element.

Alternatives

License

MIT