jonathanphz
10/8/2015 - 2:17 AM

Sortable List using Angularjs and ng-sortable

Sortable List using Angularjs and ng-sortable

<link href="http://a5hik.github.io/ng-sortable/dist/ng-sortable.min.css" rel="stylesheet" />
h1 {
  text-align: center;
}

ul {
  padding: 0;
  width: 400px;
  margin: 0 auto;
  
  li:nth-of-type(1) {
    background: #00B9A7;
    color: #fff;
  }
  
  li:nth-of-type(2) {
    background: #00CEBA;
    color: #fff;
  }
  
  li:nth-of-type(3) {
    background: #1BE2CF;
    color: #fff;
  }
}

li {
  list-style: none;
  max-width: 350px;
  text-align: center;
  background: #00B9A7;
  margin: 0 auto 5px;
  border-radius: 5px;
}

.as-sortable-placeholder {
  background: transparent;
}

.as-sortable-item-handle {
    padding: 30px 5px;
}

ul.as-sortable-dragging {
  padding: 0;
 width: 400px !important;
   li {
     max-width: 400px;
     //fix offset
     margin-left: -20px;
     background: lighten(#00B9A7, 5%);
     color: #fff;
     
      div {
        padding: 45px 25px;
      }
  }
}
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular.min.js"></script>
<script src="http://a5hik.github.io/ng-sortable/dist/ng-sortable.js"></script>
var app = angular.module('angularApp', ['ui.sortable']);

app.controller('MainCtrl', function($scope) {

  $scope.items = [{
    name: 'George Washington University'
  }, {
    name: 'Boston University'
  }, {
    name: 'New York University'
  }]

  $scope.sortableOptions = {
    
    orderChanged: function(event) {
      var audio = document.getElementById("clickSound2");
      audio.play();
    },
    dragStart: function (event) {
      var audio2 = document.getElementById("clickSound");
      audio2.play();
    },
    containment: '#sortable-container',
    containerPositioning: 'relative'
  };
  
  
  
  
  
});
<div ng-app="angularApp">
  <div ng-controller="MainCtrl" id="sortable-container">
    <h1>Sortable List</h1>
    <ul as-sortable="sortableOptions" ng-model="items">
      <li ng-repeat="item in items" as-sortable-item class="as-sortable-item">
        <div as-sortable-item-handle class="as-sortable-item-handle">
          <span data-ng-bind="item.name"></span>
        </div>
      </li>
    </ul>

    <!-- Audio SRC -->
    <audio id="clickSound">
      <source src="http://mihailo.centarzatalente.com/sounds/click.mp3"></source>
      <source src="http://mihailo.centarzatalente.com/sounds/click.ogg"></source>
      Audio not supported.
    </audio>

    <audio id="clickSound2">
      <source src="http://mihailo.centarzatalente.com/sounds/clickUp.mp3"></source>
      <source src="http://mihailo.centarzatalente.com/sounds/clickUp.ogg"></source>
      Audio not supported.
    </audio>
  </div>
</div>

Sortable List using Angularjs and ng-sortable

Drag and drop sortable list with click sound

A Pen by Jonathan on CodePen.

License.