The swap animation plugin currently only works with Sortable
. It adds a swap animation on sortable:sorted
,
and animates both source
and over
via translate3d
. It is currently possible to change the duration and
the easing function of the animation.
This plugin is not included by default, so make sure to import it before using.
- ES6:
import { Sortable, Plugins } from '@hnrq/draggable';
// Or
// import Sortable from '@hnrq/draggable/lib/sortable';
// import SwapAnimation from '@hnrq/draggable/lib/plugins/swap-animation';
const sortable = new Sortable(document.querySelectorAll('ul'), {
draggable: 'li',
swapAnimation: {
duration: 200,
easingFunction: 'ease-in-out',
horizontal: true,
},
plugins: [Plugins.SwapAnimation], // Or [SwapAnimation]
});
- Browser (All plugins bundle):
<script src="https://cdn.jsdelivr.net/npm/@hnrq/[email protected]/lib/draggable.bundle.js"></script>
<script>
const sortable = new Draggable.Sortable(document.querySelectorAll('ul'), {
draggable: 'li',
swapAnimation: {
duration: 200,
easingFunction: 'ease-in-out',
horizontal: true,
},
plugins: [Draggable.Plugins.SwapAnimation],
});
</script>
- Browser (Standalone):
<script src="https://cdn.jsdelivr.net/npm/@hnrq/[email protected]/lib/sortable.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@hnrq/[email protected]/lib/plugins/swap-animation.js"></script>
<script>
const sortable = new Sortable.default(document.querySelectorAll('ul'), {
draggable: 'li',
swapAnimation: {
duration: 200,
easingFunction: 'ease-in-out',
horizontal: true,
},
plugins: [SwapAnimation.default],
});
</script>
new SwapAnimation(draggable: Draggable): SwapAnimation
To create a swap animation plugin instance.
duration {Integer}
The duration option allows you to specify the animation during for a single swap. Default: 150
easingFunction {String}
The easing option allows you to specify an animation easing function. Default: 'ease-in-out'
horizontal {Boolean}
The horizontal option allows you to set the elements to animate horizontally. Default: false
import { Sortable, Plugins } from '@hnrq/draggable';
const sortable = new Sortable(document.querySelectorAll('ul'), {
draggable: 'li',
swapAnimation: {
duration: 200,
easingFunction: 'ease-in-out',
horizontal: true,
},
plugins: [Plugins.SwapAnimation],
});
- Add support for staggering animations
- Find cross-container animation solution
- Add support for
Swappable
andDroppable
- Only works within same container
- Animations don't stagger
- Only works with
Sortable