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