Skip to content
This repository was archived by the owner on Oct 8, 2021. It is now read-only.

Commit 56dddc6

Browse files
jugglinmikearschmitz
authored andcommitted
Slider and Rangeslider: Express module dependency
Both modules have a hard dependency on the "vmouse" module that should be expressed in AMD. Re gh-5987 Closes gh-7383 Closes gh-7274 (cherry picked from commit 44e2d98)
1 parent 54c9777 commit 56dddc6

File tree

6 files changed

+153
-0
lines changed

6 files changed

+153
-0
lines changed

js/widgets/forms/rangeslider.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ define( [ "jquery",
99
"../../jquery.mobile.core",
1010
"../../jquery.mobile.widget",
1111
"./textinput",
12+
"../../vmouse",
1213
"./reset",
1314
"./slider" ], function( jQuery ) {
1415
//>>excludeEnd("jqmBuildExclude");

js/widgets/forms/slider.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ define( [ "jquery",
99
"../../jquery.mobile.core",
1010
"../../jquery.mobile.widget",
1111
"./textinput",
12+
"../../vmouse",
1213
"./reset" ], function( jQuery ) {
1314
//>>excludeEnd("jqmBuildExclude");
1415
(function( $, undefined ) {
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<!doctype html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<title>jQuery Mobile RangeSlider Test Suite</title>
7+
8+
<script src="../../../external/requirejs/require.js"></script>
9+
<script src="../../../js/requirejs.config.js"></script>
10+
<script src="../../../js/jquery.tag.inserter.js"></script>
11+
<script src="../../../tests/jquery.testHelper.js"></script>
12+
13+
<link rel="stylesheet" href="../../../css/themes/default/jquery.mobile.css"/>
14+
<link rel="stylesheet" href="../../../external/qunit/qunit.css"/>
15+
<link rel="stylesheet" href="../../jqm-tests.css"/>
16+
<script src="../../../external/qunit/qunit.js"></script>
17+
<script>
18+
$.testHelper.asyncLoad([
19+
[
20+
"widgets/forms/rangeslider"
21+
],
22+
[
23+
"rangeslider_core.js"
24+
]
25+
]);
26+
</script>
27+
28+
<script src="../../swarminject.js"></script>
29+
</head>
30+
<body>
31+
<div id="qunit"></div>
32+
33+
<form class="ui-body-a" id="plain">
34+
<input type="range"></input>
35+
<input type="range"></input>
36+
</form>
37+
</body>
38+
</html>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
test( "Rangeslider widget works correctly", function() {
2+
var rangeslider = $( "#plain" ).rangeslider(),
3+
handles = rangeslider.parent().find( ".ui-slider-handle" ),
4+
track = handles.closest( ".ui-slider-track" ),
5+
offset = handles.offset();
6+
7+
deepEqual( rangeslider.rangeslider( "widget" ).hasClass( "ui-rangeslider" ), true,
8+
"Has class ui-rangeslider" );
9+
equal( handles.length, 2, "Contains two handle elements" );
10+
equal( track.length, 1, "Contains one track element" );
11+
12+
function moveHandle( handle, xPos ) {
13+
var trackWidth, trackX,
14+
down = $.Event( "mousedown" ),
15+
move = $.Event( "mousemove" ),
16+
up = $.Event( "mouseup" ),
17+
offset = handle.offset();
18+
19+
down.target = move.target = up.target = handle[ 0 ];
20+
down.pageY = move.pageY = up.pageY = offset.top;
21+
down.pageX = offset.left;
22+
up.pageX = move.pageX = xPos;
23+
handle.trigger( down );
24+
handle.trigger( move );
25+
handle.trigger( up );
26+
}
27+
28+
// GH-7274: Events dependency
29+
// These tests cannot be expressed in the integration tests because the
30+
// "events/touch" module is artificially loaded in that environment.
31+
trackWidth = track.width();
32+
trackX = track.offset().left;
33+
ok( trackWidth > 0, "Track has a non-zero width" );
34+
35+
moveHandle( handles.eq( 0 ), trackX + trackWidth * 0.2 );
36+
moveHandle( handles.eq( 1 ), trackX + trackWidth * 0.8 );
37+
ok( handles.eq( 0 ).offset().left > 0, "Lower handle responds to user interaction" );
38+
ok( handles.eq( 1 ).offset().left > handles.eq( 0 ).offset().left,
39+
"Upper handle responds to user interaction" );
40+
});
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<!doctype html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<title>jQuery Mobile Slider Test Suite</title>
7+
8+
<script src="../../../external/requirejs/require.js"></script>
9+
<script src="../../../js/requirejs.config.js"></script>
10+
<script src="../../../js/jquery.tag.inserter.js"></script>
11+
<script src="../../../tests/jquery.testHelper.js"></script>
12+
13+
<link rel="stylesheet" href="../../../css/themes/default/jquery.mobile.css"/>
14+
<link rel="stylesheet" href="../../../external/qunit/qunit.css"/>
15+
<link rel="stylesheet" href="../../jqm-tests.css"/>
16+
<script src="../../../external/qunit/qunit.js"></script>
17+
<script>
18+
$.testHelper.asyncLoad([
19+
[
20+
"widgets/forms/slider"
21+
],
22+
[
23+
"slider_core.js"
24+
]
25+
]);
26+
</script>
27+
28+
<script src="../../swarminject.js"></script>
29+
</head>
30+
<body>
31+
<div id="qunit"></div>
32+
33+
<form class="ui-body-a">
34+
<input type="range" id="plain"></input>
35+
</form>
36+
</body>
37+
</html>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
test( "Slider widget works correctly", function() {
2+
var trackWidth, trackX,
3+
slider = $( "#plain" ).slider(),
4+
handle = slider.parent().find( ".ui-slider-handle" ),
5+
track = handle.closest( ".ui-slider-track" ),
6+
offset = handle.offset();
7+
8+
deepEqual( slider.slider( "widget" ).hasClass( "ui-slider-input" ), true,
9+
"Has class ui-slider-input" );
10+
equal( handle.length, 1, "Slider contains a handle element" );
11+
12+
function moveHandle( handle, xPos ) {
13+
var down = $.Event( "mousedown" ),
14+
move = $.Event( "mousemove" ),
15+
up = $.Event( "mouseup" ),
16+
offset = handle.offset();
17+
18+
down.target = move.target = up.target = handle[ 0 ];
19+
down.pageY = move.pageY = up.pageY = offset.top;
20+
down.pageX = offset.left;
21+
up.pageX = move.pageX = xPos;
22+
handle.trigger( down );
23+
handle.trigger( move );
24+
handle.trigger( up );
25+
}
26+
27+
// GH-7274: Events dependency
28+
// This test cannot be expressed in the integration tests because the
29+
// "events/touch" module is artificially loaded in that environment.
30+
trackWidth = track.width();
31+
trackX = track.offset().left;
32+
ok( trackWidth > 0, "Track has a non-zero width" );
33+
34+
moveHandle( handle, trackX + trackWidth * 0.5 );
35+
ok( handle.offset().left > 0, "Handle responds to user interaction" );
36+
});

0 commit comments

Comments
 (0)