|
59 | 59 | insertZone: 50, |
60 | 60 | scroll: 20, |
61 | 61 | isAllowed: function(cEl, hint) { return true; }, // Params: current el., hint el. |
62 | | - complete: function(cEl) { return true; } // Params: current el., hint el. |
| 62 | + onDragStart: function( e, cEl ) { return true; }, // Params: e jQ. event obj., current el. |
| 63 | + complete: function(cEl) { return true; } // Params: current el., hint el. |
63 | 64 | }, |
64 | 65 |
|
65 | 66 | setting = $.extend(true, {}, defaults, options), |
|
108 | 109 |
|
109 | 110 | // Container with all actual elements and parameters |
110 | 111 | state = { |
| 112 | + isDragged: false, |
111 | 113 | isRelEFP: null, // How browser counts elementFromPoint() position (relative to window/document) |
112 | 114 | oEl: null, // overElement is element which returns elementFromPoint() method |
113 | 115 | rootEl: null, |
|
145 | 147 | // Return this ensures chaining |
146 | 148 | return this.on('mousedown touchstart', function(e) |
147 | 149 | { |
| 150 | + var target = $( e.target ); |
| 151 | + |
| 152 | + if ( state.isDragged !== false || target.hasClass( setting.ignoreClass ) ) return; |
| 153 | + |
148 | 154 | // Solves selection/range highlighting |
149 | 155 | e.preventDefault(); |
150 | 156 |
|
|
154 | 160 | } |
155 | 161 |
|
156 | 162 | // El must be li in jQuery object |
157 | | - var el = $(e.target).is('li') ? $(e.target) : $(e.target).closest('li'), |
| 163 | + var el = target.is('li') ? target : target.closest('li'), |
158 | 164 | rEl = $(this); |
159 | 165 | // Check if el is not empty |
160 | 166 | if(el[0]) |
161 | 167 | { |
| 168 | + setting.onDragStart( e, el ); |
162 | 169 | startDrag(e, el, rEl); |
163 | 170 | } |
164 | 171 | } |
|
308 | 315 | setTouchEvent(e); |
309 | 316 | } |
310 | 317 |
|
311 | | - state.isDragged = false; |
312 | | - |
313 | 318 | if(hintStyle.display == 'block' && hintNode.length && state.isAllowed) |
314 | 319 | { |
315 | 320 | targetEl = hintNode; |
|
358 | 363 | tidyEmptyLists(); |
359 | 364 | } |
360 | 365 |
|
| 366 | + setting.complete( cEl.el ); |
| 367 | + |
| 368 | + state.isDragged = false; |
| 369 | + |
361 | 370 | }); |
362 | 371 |
|
363 | 372 | scrollStop(state); |
|
0 commit comments