drag-tracker

A simple library for dragging things around. Tracks dragging with touch or mouse.

Usage no npm install needed!

<script type="module">
  import dragTracker from 'https://cdn.skypack.dev/drag-tracker';
</script>

README

drag-tracker

A simple library for dragging things around. Tracks dragging with touch or mouse (left button).

Demo

https://rawgit.com/Sphinxxxx/drag-tracker/master/demo/index.html
https://codepen.io/Sphinxxxx/pen/KXedQe

Usage

dragTracker({
  container:          /* The element the user can drag within */,
  selector:           /* CSS selector for elements inside the container that are draggable, or a single HTML element */,
  
  callback:           /* Your code which decides what happens during a drag operation */,
  callbackDragStart:  /* Optional callback when a drag operation is about to start */,
  callbackDragEnd:    /* Optional callback when a drag operation has ended */,
  callbackClick:      /* Optional callback when a draggable element is only clicked, not dragged */,
  propagateEvents:    /* Whether to let mouse/touch events propagate (bubble) after being handled. Usually not wanted in case multiple handlers track the same container */,
  
  roundCoords:  true  /* Whether callback coordinates should be integers */,
  dragOutside:  true  /* Whether the draggable elements can be dragged outside the bounds of the container */,

  /* Whether callback coordinates should be adjusted to suit the dragged element instead of the actual mouse position */
  handleOffset: true (default)  /* Coordinates are the element's center for SVG `<circle>`s and `<ellipse>`s, and the top-left corner for all other elements */,
                'center'        /* Coordinates are always the element's center */
                'topleft'       /* Coordinates are always the element's top-left corner */
                false           /* No adjustment, just use the mouse position */
});

All options are optional. Without a callback, the coordinates are written to console.log.