@@ -36,11 +36,9 @@ $.widget( "ui.droppable", {
36
36
widgetEventPrefix : "drop" ,
37
37
options : {
38
38
accept : "*" ,
39
- activeClass : false ,
40
39
addClasses : true ,
41
40
classes : { } ,
42
41
greedy : false ,
43
- hoverClass : false ,
44
42
scope : "default" ,
45
43
tolerance : "intersect" ,
46
44
@@ -124,19 +122,15 @@ $.widget( "ui.droppable", {
124
122
125
123
_activate : function ( event ) {
126
124
var draggable = $ . ui . ddmanager . current ;
127
- if ( this . options . activeClass ) {
128
- this . element . addClass ( this . options . activeClass ) ;
129
- }
125
+ this . _addClass ( "ui-droppable-active" ) ;
130
126
if ( draggable ) {
131
127
this . _trigger ( "activate" , event , this . ui ( draggable ) ) ;
132
128
}
133
129
} ,
134
130
135
131
_deactivate : function ( event ) {
136
132
var draggable = $ . ui . ddmanager . current ;
137
- if ( this . options . activeClass ) {
138
- this . element . removeClass ( this . options . activeClass ) ;
139
- }
133
+ this . _removeClass ( "ui-droppable-active" ) ;
140
134
if ( draggable ) {
141
135
this . _trigger ( "deactivate" , event , this . ui ( draggable ) ) ;
142
136
}
@@ -152,9 +146,7 @@ $.widget( "ui.droppable", {
152
146
}
153
147
154
148
if ( this . accept . call ( this . element [ 0 ] , ( draggable . currentItem || draggable . element ) ) ) {
155
- if ( this . options . hoverClass ) {
156
- this . element . addClass ( this . options . hoverClass ) ;
157
- }
149
+ this . _addClass ( "ui-droppable-hover" ) ;
158
150
this . _trigger ( "over" , event , this . ui ( draggable ) ) ;
159
151
}
160
152
@@ -170,14 +162,16 @@ $.widget( "ui.droppable", {
170
162
}
171
163
172
164
if ( this . accept . call ( this . element [ 0 ] , ( draggable . currentItem || draggable . element ) ) ) {
173
- if ( this . options . hoverClass ) {
174
- this . element . removeClass ( this . options . hoverClass ) ;
175
- }
165
+ this . _removeClass ( "ui-droppable-hover" ) ;
176
166
this . _trigger ( "out" , event , this . ui ( draggable ) ) ;
177
167
}
178
168
179
169
} ,
180
170
171
+ // Extension point just to make backcompat sane and avoid duplicating all the logic in _drop
172
+ // TODO: Remove in 1.13 along with call to it below
173
+ _classesCompat : $ . noop ,
174
+
181
175
_drop : function ( event , custom ) {
182
176
183
177
var draggable = custom || $ . ui . ddmanager . current ,
@@ -203,12 +197,11 @@ $.widget( "ui.droppable", {
203
197
}
204
198
205
199
if ( this . accept . call ( this . element [ 0 ] , ( draggable . currentItem || draggable . element ) ) ) {
206
- if ( this . options . activeClass ) {
207
- this . element . removeClass ( this . options . activeClass ) ;
208
- }
209
- if ( this . options . hoverClass ) {
210
- this . element . removeClass ( this . options . hoverClass ) ;
211
- }
200
+ this . _removeClass ( "ui-droppable-active" ) ;
201
+ this . _removeClass ( "ui-droppable-hover" ) ;
202
+
203
+ // See above TODO and remove this too
204
+ this . _classesCompat ( ) ;
212
205
this . _trigger ( "drop" , event , this . ui ( draggable ) ) ;
213
206
return this . element ;
214
207
}
@@ -412,6 +405,62 @@ $.ui.ddmanager = {
412
405
}
413
406
} ;
414
407
408
+ // DEPRECATED TODO: switch return back to widget declaration at top of file when this is removed
409
+ if ( $ . uiBackCompat !== false ) {
410
+
411
+ // DialogClass option
412
+ $ . widget ( "ui.droppable" , $ . ui . droppable , {
413
+ options : {
414
+ hoverClass : false ,
415
+ activeClass : false
416
+ } ,
417
+ _classesCompat : function ( ) {
418
+ if ( this . options . activeClass ) {
419
+ this . element . removeClass ( this . options . activeClass ) ;
420
+ }
421
+ if ( this . options . hoverClass ) {
422
+ this . element . removeClass ( this . options . hoverClass ) ;
423
+ }
424
+ } ,
425
+ _activate : function ( event ) {
426
+ if ( this . options . activeClass ) {
427
+ this . element . addClass ( this . options . activeClass ) ;
428
+ }
429
+ this . _super ( event ) ;
430
+ } ,
431
+ _deactivate : function ( event ) {
432
+ if ( this . options . activeClass ) {
433
+ this . element . removeClass ( this . options . activeClass ) ;
434
+ }
435
+ this . _super ( event ) ;
436
+ } ,
437
+ _toggleDroppableClasses : function ( stateVal ) {
438
+
439
+ var draggable = $ . ui . ddmanager . current ;
440
+
441
+ // Bail if draggable and droppable are same element
442
+ if ( ! draggable || ( draggable . currentItem ||
443
+ draggable . element ) [ 0 ] === this . element [ 0 ] ) {
444
+ return ;
445
+ }
446
+
447
+ if ( this . options . hoverClass && this . accept . call ( this . element [ 0 ] , ( draggable . currentItem ||
448
+ draggable . element ) ) ) {
449
+ this . element [ ( stateVal ? "add" : "remove" ) + "Class" ] ( this . options . hoverClass ) ;
450
+ }
451
+
452
+ } ,
453
+ _out : function ( event ) {
454
+ this . _super ( event ) ;
455
+ this . _toggleDroppableClasses ( false ) ;
456
+ } ,
457
+ _over : function ( event ) {
458
+ this . _super ( event ) ;
459
+ this . _toggleDroppableClasses ( true ) ;
460
+ }
461
+ } ) ;
462
+ }
463
+
415
464
return $ . ui . droppable ;
416
465
417
466
} ) ) ;
0 commit comments