knockout-sortable - simple list

https://github.com/rniemeyer/knockout-sortable

by unklefolk

HTML

<script src="https://github.com/downloads/SteveSanderson/knockout/knockout-2.0.0.debug.js"></script>
<script src="https://github.com/downloads/rniemeyer/knockout-sortable/knockout-sortable.js"></script>
<div id="main">
    <h3>Tasks</h3>
<ul data-bind="template: {foreach: tasks}">
  <li data-bind="text: name, slideDown: true"></li>
</ul>


<script type="text/html" id="task">
  
</script>

CSS

body {
    font-family: arial;
}

h3 {
    text-align: center;
    font-weight: bold;
}

div {
    padding: 5px;
    margin: 5px;
    border: black 1px solid;
}

p, a {
    font-size: .8em;
}

ul {
    padding-bottom: 10px;
}

.ko_container {
    width: 125px;
    min-height: 50px;
    background-color: #AAA;
}

.high {
    background-color: red;
}

.trash {
    background-color: #000;
}

.item {
    background-color: #DDD;
    cursor: move;
    text-align: center;
}

.item input {
    width: 100px;
}

#main {
    float: left;
    width: 150px;
    margin-top: 0px;
}

#results {
    margin-left: 175px;
    width: 150px;
}

JavaScript

var Task = function(name) {
    this.name = ko.observable(name);
}

ko.bindingHandlers.slideDown = {
    init: function (element, valueAccessor) {
        var value = valueAccessor();
        $(element).toggle(ko.utils.unwrapObservable(value));
},
    update: function (element, valueAccessor, allBindingsAccessor) {
        var value = valueAccessor();
        ko.utils.unwrapObservable(value) ? $(element).hide().slideDown(2000) : $(element).slideDown(2000);
}};


var ViewModel = function() {
    var self = this;
    self.tasks = ko.observableArray([
        new Task("Get dog food"),
        new Task("Mow lawn"),
        new Task("Fix car"),
        new Task("Fix fence"),
        new Task("Walk dog"),
        new Task("Read book")
    ]);



};

ko.applyBindings(new ViewModel());