Skip to content

Instantly share code, notes, and snippets.

@Bajix
Created December 28, 2016 01:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Bajix/c7eb7bb017f25bf12ff3509ee7ceede6 to your computer and use it in GitHub Desktop.
Save Bajix/c7eb7bb017f25bf12ff3509ee7ceede6 to your computer and use it in GitHub Desktop.
Wrapper around jQuery UI sortable
var DefineMap = require('can-define/map/'),
Component = require('can-component'),
batch = require('can-event/batch/'),
$ = require('can-jquery');
require('jquery-ui/ui/widgets/sortable');
require('./sortable-list.css!');
var ViewModel = DefineMap.extend({
list: {
value: Array
},
to: {
type: 'number'
},
from: {
type: 'number'
}
});
Component.extend({
tag: 'sortable-list',
ViewModel: ViewModel,
events: {
inserted: function() {
var viewModel = this.viewModel;
$(this.element).sortable({
update: function( ev, ui ) {
viewModel.to = ui.item.index();
},
start: function( ev, ui ) {
viewModel.from = ui.item.index();
}
});
},
'{element} sortstop': function() {
var item = this.viewModel.list[this.viewModel.from];
batch.start();
this.viewModel.list.splice(this.viewModel.from, 1);
this.viewModel.list.splice(this.viewModel.to, 0, item);
batch.stop();
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment