
Security News
How Enterprise Security Is Adapting to AI-Accelerated Threats
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.
@dflex/draggable
Advanced tools
> Draggable is a native utility written in pure JS works for Web and Mobile
Draggable is a native utility written in pure JS works for Web and Mobile
DFlex draggable is the simplest solution to create JavaScript draggable elements. No need for a special tutorial and thinking about implementation complexity or even migration to different technologies for different frameworks. It can be used with any app you have whether it is React, Vue, Angular or Svelte.
Visit DFlex site for more https://jalal246.github.io/dflex/ and to see live examples with the full code.
npm install @dflex/draggable
import { store, Draggable } from "@dflex/draggable";
Register draggable element in draggable store:
store.register({ id: string, element: Node });
Create draggable instance with onmousedownhandler
const draggable = new Draggable(id: string, {x: event.clientX, y: event.clientY});
Move the element with onmousemove handler
draggable.dragAt(event.clientX, event.clientY);
You can end dragging withonmouseup handler
draggable.endDragging();
While you can add style, classes related to drag since you trigger dragAt and endDragging.
You can also control the few style properties that Draggable use when dragging.
When create draggable Instance you can use draggedStyle: Array<draggedStyleObj>
draggedStyleObj: {
prop: string;
dragValue: string;
afterDragValue?: string;
}
Default value for draggedStyle:
const draggedStyle = [
{
prop: "zIndex",
dragValue: "99",
afterDragValue: null,
},
];
You can change it after creating dragged instance. The following example
will change background color red during the drag and purple after finish dragging.
draggable.draggedStyle = [
{
prop: "zIndex",
dragValue: "99",
afterDragValue: null,
},
{
prop: "pointerEvents",
dragValue: "pointer",
afterDragValue: null,
},
{
prop: "background",
dragValue: "red",
afterDragValue: "purple",
},
];
You can add strictly draggable, moving only horizontal or vertical by yourself because you control dragging coordinations.
You can control the clickable area, simply because it's a mouse event. Could be on the entire element or a small button of the element. It's up to you.
You know when the dragging is going to start and end without adding additional API functions.
It can be nested dragging. Related to a list of elements or just one element It doesn't matter. It is always the same.
yarn test draggable
This package is licensed under the GPL-3.0 License
If you like this project, you can support it by contributing. If you find a bug, please let me know, applying a pull request is welcome. This project needs your support. You can fix typos, add new examples, or build with me new features.
Support this project by giving it a Star ⭐
FAQs
Draggable only package for all JavaScript frameworks
The npm package @dflex/draggable receives a total of 18 weekly downloads. As such, @dflex/draggable popularity was classified as not popular.
We found that @dflex/draggable demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.