| [ Index ] |
PHP Cross Reference of Drupal 6 (yi-drupal) |
[Summary view] [Print] [Text view]
1 /* 2 * jQuery UI Selectable 1.7.3 3 * 4 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) 5 * Dual licensed under the MIT (MIT-LICENSE.txt) 6 * and GPL (GPL-LICENSE.txt) licenses. 7 * 8 * http://docs.jquery.com/UI/Selectables 9 * 10 * Depends: 11 * ui.core.js 12 */ 13 (function($) { 14 15 $.widget("ui.selectable", $.extend({}, $.ui.mouse, { 16 17 _init: function() { 18 var self = this; 19 20 this.element.addClass("ui-selectable"); 21 22 this.dragged = false; 23 24 // cache selectee children based on filter 25 var selectees; 26 this.refresh = function() { 27 selectees = $(self.options.filter, self.element[0]); 28 selectees.each(function() { 29 var $this = $(this); 30 var pos = $this.offset(); 31 $.data(this, "selectable-item", { 32 element: this, 33 $element: $this, 34 left: pos.left, 35 top: pos.top, 36 right: pos.left + $this.outerWidth(), 37 bottom: pos.top + $this.outerHeight(), 38 startselected: false, 39 selected: $this.hasClass('ui-selected'), 40 selecting: $this.hasClass('ui-selecting'), 41 unselecting: $this.hasClass('ui-unselecting') 42 }); 43 }); 44 }; 45 this.refresh(); 46 47 this.selectees = selectees.addClass("ui-selectee"); 48 49 this._mouseInit(); 50 51 this.helper = $(document.createElement('div')) 52 .css({border:'1px dotted black'}) 53 .addClass("ui-selectable-helper"); 54 }, 55 56 destroy: function() { 57 this.element 58 .removeClass("ui-selectable ui-selectable-disabled") 59 .removeData("selectable") 60 .unbind(".selectable"); 61 this._mouseDestroy(); 62 }, 63 64 _mouseStart: function(event) { 65 var self = this; 66 67 this.opos = [event.pageX, event.pageY]; 68 69 if (this.options.disabled) 70 return; 71 72 var options = this.options; 73 74 this.selectees = $(options.filter, this.element[0]); 75 76 this._trigger("start", event); 77 78 $(options.appendTo).append(this.helper); 79 // position helper (lasso) 80 this.helper.css({ 81 "z-index": 100, 82 "position": "absolute", 83 "left": event.clientX, 84 "top": event.clientY, 85 "width": 0, 86 "height": 0 87 }); 88 89 if (options.autoRefresh) { 90 this.refresh(); 91 } 92 93 this.selectees.filter('.ui-selected').each(function() { 94 var selectee = $.data(this, "selectable-item"); 95 selectee.startselected = true; 96 if (!event.metaKey) { 97 selectee.$element.removeClass('ui-selected'); 98 selectee.selected = false; 99 selectee.$element.addClass('ui-unselecting'); 100 selectee.unselecting = true; 101 // selectable UNSELECTING callback 102 self._trigger("unselecting", event, { 103 unselecting: selectee.element 104 }); 105 } 106 }); 107 108 $(event.target).parents().andSelf().each(function() { 109 var selectee = $.data(this, "selectable-item"); 110 if (selectee) { 111 selectee.$element.removeClass("ui-unselecting").addClass('ui-selecting'); 112 selectee.unselecting = false; 113 selectee.selecting = true; 114 selectee.selected = true; 115 // selectable SELECTING callback 116 self._trigger("selecting", event, { 117 selecting: selectee.element 118 }); 119 return false; 120 } 121 }); 122 123 }, 124 125 _mouseDrag: function(event) { 126 var self = this; 127 this.dragged = true; 128 129 if (this.options.disabled) 130 return; 131 132 var options = this.options; 133 134 var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY; 135 if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; } 136 if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; } 137 this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1}); 138 139 this.selectees.each(function() { 140 var selectee = $.data(this, "selectable-item"); 141 //prevent helper from being selected if appendTo: selectable 142 if (!selectee || selectee.element == self.element[0]) 143 return; 144 var hit = false; 145 if (options.tolerance == 'touch') { 146 hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); 147 } else if (options.tolerance == 'fit') { 148 hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); 149 } 150 151 if (hit) { 152 // SELECT 153 if (selectee.selected) { 154 selectee.$element.removeClass('ui-selected'); 155 selectee.selected = false; 156 } 157 if (selectee.unselecting) { 158 selectee.$element.removeClass('ui-unselecting'); 159 selectee.unselecting = false; 160 } 161 if (!selectee.selecting) { 162 selectee.$element.addClass('ui-selecting'); 163 selectee.selecting = true; 164 // selectable SELECTING callback 165 self._trigger("selecting", event, { 166 selecting: selectee.element 167 }); 168 } 169 } else { 170 // UNSELECT 171 if (selectee.selecting) { 172 if (event.metaKey && selectee.startselected) { 173 selectee.$element.removeClass('ui-selecting'); 174 selectee.selecting = false; 175 selectee.$element.addClass('ui-selected'); 176 selectee.selected = true; 177 } else { 178 selectee.$element.removeClass('ui-selecting'); 179 selectee.selecting = false; 180 if (selectee.startselected) { 181 selectee.$element.addClass('ui-unselecting'); 182 selectee.unselecting = true; 183 } 184 // selectable UNSELECTING callback 185 self._trigger("unselecting", event, { 186 unselecting: selectee.element 187 }); 188 } 189 } 190 if (selectee.selected) { 191 if (!event.metaKey && !selectee.startselected) { 192 selectee.$element.removeClass('ui-selected'); 193 selectee.selected = false; 194 195 selectee.$element.addClass('ui-unselecting'); 196 selectee.unselecting = true; 197 // selectable UNSELECTING callback 198 self._trigger("unselecting", event, { 199 unselecting: selectee.element 200 }); 201 } 202 } 203 } 204 }); 205 206 return false; 207 }, 208 209 _mouseStop: function(event) { 210 var self = this; 211 212 this.dragged = false; 213 214 var options = this.options; 215 216 $('.ui-unselecting', this.element[0]).each(function() { 217 var selectee = $.data(this, "selectable-item"); 218 selectee.$element.removeClass('ui-unselecting'); 219 selectee.unselecting = false; 220 selectee.startselected = false; 221 self._trigger("unselected", event, { 222 unselected: selectee.element 223 }); 224 }); 225 $('.ui-selecting', this.element[0]).each(function() { 226 var selectee = $.data(this, "selectable-item"); 227 selectee.$element.removeClass('ui-selecting').addClass('ui-selected'); 228 selectee.selecting = false; 229 selectee.selected = true; 230 selectee.startselected = true; 231 self._trigger("selected", event, { 232 selected: selectee.element 233 }); 234 }); 235 this._trigger("stop", event); 236 237 this.helper.remove(); 238 239 return false; 240 } 241 242 })); 243 244 $.extend($.ui.selectable, { 245 version: "1.7.3", 246 defaults: { 247 appendTo: 'body', 248 autoRefresh: true, 249 cancel: ":input,option", 250 delay: 0, 251 distance: 0, 252 filter: '*', 253 tolerance: 'touch' 254 } 255 }); 256 257 })(jQuery);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Jul 9 18:01:44 2012 | Cross-referenced by PHPXref 0.7 |