Sha256: 34d9ba5fd3dda94e44852285ac15cd336d70208337e8473dac05eaf804b1ee83

Contents?: true

Size: 1.41 KB

Versions: 5

Compression:

Stored size: 1.41 KB

Contents

(function() {
  function enableDraggableLists(element) {
    if (element.hasClass('draggable-list')) return;
    element.addClass('draggable-list');
    var list_selected = jQuery(element.get(0).cloneNode(false)).addClass('selected');
    list_selected.attr('id', list_selected.attr('id') + '_selected').insertAfter(element);
    element.find('input:checkbox').each(function(index, item) {
      var li = jQuery(item).closest('li').addClass('draggable-item');
      li.children('label').removeAttr('for');
      if (jQuery(item).is(':checked')) li.appendTo(list_selected);
      li.draggable({appendTo: 'body', helper: 'clone'});
    });
    jQuery([element, list_selected]).droppable({
      hoverClass: 'hover',
      accept: function(draggable) {
        var parent_id = draggable.parent().attr('id'), id = jQuery(this).attr('id'),
          requested_id = jQuery(this).hasClass('selected') ? id.replace('_selected', '') : id + '_selected';
        return parent_id == requested_id;
      },
      drop: function(event, ui) {
        jQuery(this).append(ui.draggable);
        var input = jQuery('input:checkbox', ui.draggable);
        input.prop('checked', jQuery(this).hasClass('selected'));
        input.trigger('change');
        ui.draggable.css({left: '0px', top: '0px'});
      }
    });
    return element;
  };
  jQuery.fn.draggableLists = function() {
    this.each(function() { enableDraggableLists(jQuery(this)); });
  };
})();

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
active_scaffold-3.4.3 app/assets/javascripts/jquery/draggable_lists.js
active_scaffold-3.4.2 app/assets/javascripts/jquery/draggable_lists.js
active_scaffold-3.4.1 app/assets/javascripts/jquery/draggable_lists.js
active_scaffold-3.4.0.1 app/assets/javascripts/jquery/draggable_lists.js
active_scaffold-3.4.0 app/assets/javascripts/jquery/draggable_lists.js