Skip to content

Commit 28310ff

Browse files
committed
Slider & Interactions: Add Windows 8 touch support
Fixes #9709 Fixes #9710 Closes jquerygh-1152
1 parent 1bbbcc7 commit 28310ff

10 files changed

+111
-1
lines changed

tests/unit/draggable/draggable_core.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,4 +273,18 @@ asyncTest( "#4261: active element should blur when mousing down on a draggable",
273273
});
274274
});
275275

276+
test( "ui-draggable-handle assigned to appropriate element", function() {
277+
expect( 4 );
278+
279+
var element = $( "<div><p></p></div>" ).appendTo( "#qunit-fixture" ).draggable();
280+
ok( element.hasClass( "ui-draggable-handle" ), "handle is element by default" );
281+
282+
element.draggable( "option", "handle", "p" );
283+
ok( !element.hasClass( "ui-draggable-handle" ), "removed from element" );
284+
ok( element.find( "p" ).hasClass( "ui-draggable-handle" ), "added to handle" );
285+
286+
element.draggable( "destroy" );
287+
ok( !element.find( "p" ).hasClass( "ui-draggable-handle" ), "removed in destroy()" );
288+
});
289+
276290
})( jQuery );

tests/unit/sortable/sortable_core.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,25 @@ test( "#9314: Sortable: Items cannot be dragged directly into bottom position",
1616
TestHelpers.sortable.sort( $( "li", el[ 1 ] )[ 0 ], 0, -12, 5, "Dragging the sortable into connected sortable" );
1717
});
1818

19+
test( "ui-sortable-handle applied to appropriate element", function() {
20+
expect( 6 );
21+
var item = "<li><p></p></li>",
22+
el = $( "<ul>" + item + item + "</ul>" )
23+
.sortable()
24+
.appendTo( "#qunit-fixture" );
25+
26+
ok( el.find( "li:first" ).hasClass( "ui-sortable-handle" ), "defaults to item" );
27+
ok( el.find( "li:last" ).hasClass( "ui-sortable-handle" ), "both items received class name" );
28+
29+
el.sortable( "option", "handle", "p" );
30+
ok( !el.find( "li" ).hasClass( "ui-sortable-handle" ), "removed on change" );
31+
ok( el.find( "p" ).hasClass( "ui-sortable-handle" ), "applied to handle" );
32+
33+
el.append( item ).sortable( "refresh" );
34+
ok( el.find( "p:last" ).hasClass( "ui-sortable-handle" ), "class name applied on refresh" );
35+
36+
el.sortable( "destroy" );
37+
equal( el.find( ".ui-sortable-handle" ).length, 0, "class name removed on destroy" );
38+
});
39+
1940
})( jQuery );

themes/base/jquery.ui.base.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
@import url("jquery.ui.button.css");
1616
@import url("jquery.ui.datepicker.css");
1717
@import url("jquery.ui.dialog.css");
18+
@import url("jquery.ui.draggable.css");
1819
@import url("jquery.ui.menu.css");
1920
@import url("jquery.ui.progressbar.css");
2021
@import url("jquery.ui.resizable.css");
2122
@import url("jquery.ui.selectable.css");
2223
@import url("jquery.ui.selectmenu.css");
24+
@import url("jquery.ui.sortable.css");
2325
@import url("jquery.ui.slider.css");
2426
@import url("jquery.ui.spinner.css");
2527
@import url("jquery.ui.tabs.css");

themes/base/jquery.ui.draggable.css

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*!
2+
* jQuery UI Draggable @VERSION
3+
* http://jqueryui.com
4+
*
5+
* Copyright 2013 jQuery Foundation and other contributors
6+
* Released under the MIT license.
7+
* http://jquery.org/license
8+
*/
9+
.ui-draggable-handle {
10+
-ms-touch-action: none;
11+
touch-action: none;
12+
}

themes/base/jquery.ui.resizable.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
position: absolute;
1414
font-size: 0.1px;
1515
display: block;
16+
-ms-touch-action: none;
17+
touch-action: none;
1618
}
1719
.ui-resizable-disabled .ui-resizable-handle,
1820
.ui-resizable-autohide .ui-resizable-handle {

themes/base/jquery.ui.selectable.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
* Released under the MIT license.
77
* http://jquery.org/license
88
*/
9+
.ui-selectable {
10+
-ms-touch-action: none;
11+
touch-action: none;
12+
}
913
.ui-selectable-helper {
1014
position: absolute;
1115
z-index: 100;

themes/base/jquery.ui.slider.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
width: 1.2em;
1919
height: 1.2em;
2020
cursor: default;
21+
-ms-touch-action: none;
22+
touch-action: none;
2123
}
2224
.ui-slider .ui-slider-range {
2325
position: absolute;

themes/base/jquery.ui.sortable.css

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*!
2+
* jQuery UI Sortable @VERSION
3+
* http://jqueryui.com
4+
*
5+
* Copyright 2013 jQuery Foundation and other contributors
6+
* Released under the MIT license.
7+
* http://jquery.org/license
8+
*/
9+
.ui-sortable-handle {
10+
-ms-touch-action: none;
11+
touch-action: none;
12+
}

ui/jquery.ui.draggable.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,16 @@ $.widget("ui.draggable", $.ui.mouse, {
6060
if (this.options.disabled){
6161
this.element.addClass("ui-draggable-disabled");
6262
}
63+
this._setHandleClassName();
6364

6465
this._mouseInit();
66+
},
6567

68+
_setOption: function( key, value ) {
69+
this._super( key, value );
70+
if ( key === "handle" ) {
71+
this._setHandleClassName();
72+
}
6673
},
6774

6875
_destroy: function() {
@@ -71,6 +78,7 @@ $.widget("ui.draggable", $.ui.mouse, {
7178
return;
7279
}
7380
this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );
81+
this._removeHandleClassName();
7482
this._mouseDestroy();
7583
},
7684

@@ -296,6 +304,17 @@ $.widget("ui.draggable", $.ui.mouse, {
296304
true;
297305
},
298306

307+
_setHandleClassName: function() {
308+
this._removeHandleClassName();
309+
$( this.options.handle || this.element ).addClass( "ui-draggable-handle" );
310+
},
311+
312+
_removeHandleClassName: function() {
313+
this.element.find( ".ui-draggable-handle" )
314+
.addBack()
315+
.removeClass( "ui-draggable-handle" );
316+
},
317+
299318
_createHelper: function(event) {
300319

301320
var o = this.options,

ui/jquery.ui.sortable.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,35 @@ $.widget("ui.sortable", $.ui.mouse, {
8484
//Initialize mouse events for interaction
8585
this._mouseInit();
8686

87+
this._setHandleClassName();
88+
8789
//We're ready to go
8890
this.ready = true;
8991

9092
},
9193

94+
_setOption: function( key, value ) {
95+
this._super( key, value );
96+
97+
if ( key === "handle" ) {
98+
this._setHandleClassName();
99+
}
100+
},
101+
102+
_setHandleClassName: function() {
103+
this.element.find( ".ui-sortable-handle" ).removeClass( "ui-sortable-handle" );
104+
$.each( this.items, function() {
105+
( this.instance.options.handle ?
106+
this.item.find( this.instance.options.handle ) : this.item )
107+
.addClass( "ui-sortable-handle" );
108+
});
109+
},
110+
92111
_destroy: function() {
93112
this.element
94-
.removeClass("ui-sortable ui-sortable-disabled");
113+
.removeClass( "ui-sortable ui-sortable-disabled" )
114+
.find( ".ui-sortable-handle" )
115+
.removeClass( "ui-sortable-handle" );
95116
this._mouseDestroy();
96117

97118
for ( var i = this.items.length - 1; i >= 0; i-- ) {
@@ -598,6 +619,7 @@ $.widget("ui.sortable", $.ui.mouse, {
598619

599620
refresh: function(event) {
600621
this._refreshItems(event);
622+
this._setHandleClassName();
601623
this.refreshPositions();
602624
return this;
603625
},

0 commit comments

Comments
 (0)