jquery_mobile_rails 1.0rc2 → 1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -1
- data/lib/jquery_mobile_rails/version.rb +1 -1
- data/vendor/assets/images/jquery-mobile/ajax-loader.png +0 -0
- data/vendor/assets/images/jquery-mobile/icons-18-black.png +0 -0
- data/vendor/assets/images/jquery-mobile/icons-18-white.png +0 -0
- data/vendor/assets/images/jquery-mobile/icons-36-black.png +0 -0
- data/vendor/assets/images/jquery-mobile/icons-36-white.png +0 -0
- data/vendor/assets/javascripts/jquery.mobile.js +451 -358
- data/vendor/assets/javascripts/jquery.mobile.min.js +163 -167
- data/vendor/assets/stylesheets/jquery.mobile.css.erb +250 -295
- data/vendor/assets/stylesheets/jquery.mobile.min.css.erb +2 -12
- data/vendor/assets/stylesheets/jquery.mobile.structure.css +714 -0
- data/vendor/assets/stylesheets/jquery.mobile.structure.min.css +2 -0
- metadata +16 -55
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/log/development.log +0 -1190
- data/test/dummy/tmp/cache/assets/C60/CD0/sprockets%2F96395d25676c3e145f2c737f9b811253 +0 -0
- data/test/dummy/tmp/cache/assets/CBA/160/sprockets%2F77c904cba3582ef88315030f9a39d449 +0 -0
- data/test/dummy/tmp/cache/assets/CD8/2C0/sprockets%2F4505f85a8dc0311824ad596b46d0b1d8 +0 -0
- data/test/dummy/tmp/cache/assets/CDE/910/sprockets%2F8af59305547610b5be0e9e038bb58f21 +0 -0
- data/test/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2 +0 -0
- data/test/dummy/tmp/cache/assets/CF3/780/sprockets%2Fc2b4847962a06be1e379f195661ec98f +0 -0
- data/test/dummy/tmp/cache/assets/CF6/520/sprockets%2Fa68357de390392f99ff65d1864ecc053 +0 -0
- data/test/dummy/tmp/cache/assets/D06/130/sprockets%2F022e8fcf6020f9aed0922654e17df114 +0 -0
- data/test/dummy/tmp/cache/assets/D11/D20/sprockets%2Fcac21eac42152981882bf9e489316af4 +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D38/020/sprockets%2F36d245d9ec1d3f0b6f16e493151cc72a +0 -0
- data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +0 -0
- data/test/dummy/tmp/cache/assets/D72/4D0/sprockets%2Fe3eb326c1536a68947ef19c55baee1e2 +0 -0
- data/test/dummy/tmp/cache/assets/D81/6B0/sprockets%2Fcd078298b7a8b8507fdc38be4c95a7b6 +0 -0
- data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
- data/test/dummy/tmp/cache/assets/DD4/190/sprockets%2F6a00e5cca788babeb65b76d61f598dd4 +0 -0
- data/test/dummy/tmp/cache/assets/DDC/0B0/sprockets%2F63d8cfc5e184b372b7ec77cca69d4db7 +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/E26/080/sprockets%2F2bfebfc43c7345cc7c93d4cbc21eae63 +0 -0
- data/test/dummy/tmp/cache/assets/E5B/BE0/sprockets%2Fac9c282fedce5fe73313ade7e4cc0dc4 +0 -0
data/README.rdoc
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,11 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
/*
|
2
|
+
* jQuery Mobile Framework 1.0
|
3
|
+
* http://jquerymobile.com
|
4
|
+
*
|
5
|
+
* Copyright 2011 (c) jQuery Project
|
6
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
7
|
+
* http://jquery.org/license
|
8
|
+
*
|
9
|
+
*/
|
9
10
|
/*!
|
10
11
|
* jQuery UI Widget @VERSION
|
11
12
|
*
|
@@ -15,6 +16,7 @@
|
|
15
16
|
*
|
16
17
|
* http://docs.jquery.com/UI/Widget
|
17
18
|
*/
|
19
|
+
|
18
20
|
(function( $, undefined ) {
|
19
21
|
|
20
22
|
// jQuery 1.4+
|
@@ -269,10 +271,7 @@ $.Widget.prototype = {
|
|
269
271
|
|
270
272
|
})( jQuery );
|
271
273
|
/*
|
272
|
-
*
|
273
|
-
* Copyright (c) jQuery Project
|
274
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
275
|
-
* http://jquery.org/license
|
274
|
+
* widget factory extentions for mobile
|
276
275
|
*/
|
277
276
|
|
278
277
|
(function( $, undefined ) {
|
@@ -312,20 +311,18 @@ $.widget( "mobile.widget", {
|
|
312
311
|
// TODO remove dependency on the page widget for the keepNative.
|
313
312
|
// Currently the keepNative value is defined on the page prototype so
|
314
313
|
// the method is as well
|
315
|
-
var page = $(target).data( "page" ),
|
316
|
-
keepNative = page && page.keepNativeSelector();
|
314
|
+
var page = $(target).closest(":jqmData(role='page')").data( "page" ),
|
315
|
+
keepNative = (page && page.keepNativeSelector()) || "";
|
317
316
|
|
318
|
-
$( this.options.initSelector, target ).not( keepNative
|
317
|
+
$( this.options.initSelector, target ).not( keepNative )[ this.widgetName ]();
|
319
318
|
}
|
320
319
|
});
|
321
320
|
|
322
321
|
})( jQuery );
|
323
322
|
/*
|
324
|
-
*
|
325
|
-
* Copyright (c) jQuery Project
|
326
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
327
|
-
* http://jquery.org/license
|
323
|
+
* a workaround for window.matchMedia
|
328
324
|
*/
|
325
|
+
|
329
326
|
(function( $, undefined ) {
|
330
327
|
|
331
328
|
var $window = $( window ),
|
@@ -366,10 +363,9 @@ $.mobile.media = (function() {
|
|
366
363
|
};
|
367
364
|
})();
|
368
365
|
|
369
|
-
})(jQuery)
|
370
|
-
|
371
|
-
*
|
372
|
-
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
|
366
|
+
})(jQuery);
|
367
|
+
/*
|
368
|
+
* support tests
|
373
369
|
*/
|
374
370
|
|
375
371
|
(function( $, undefined ) {
|
@@ -378,6 +374,7 @@ var fakeBody = $( "<body>" ).prependTo( "html" ),
|
|
378
374
|
fbCSS = fakeBody[ 0 ].style,
|
379
375
|
vendors = [ "Webkit", "Moz", "O" ],
|
380
376
|
webos = "palmGetResource" in window, //only used to rule out scrollTop
|
377
|
+
operamini = window.operamini && ({}).toString.call( window.operamini ) === "[object OperaMini]",
|
381
378
|
bb = window.blackberry; //only used to rule out box shadow, as it's filled opaque on BB
|
382
379
|
|
383
380
|
// thx Modernizr
|
@@ -440,7 +437,7 @@ $.extend( $.support, {
|
|
440
437
|
cssPseudoElement: !!propExists( "content" ),
|
441
438
|
touchOverflow: !!propExists( "overflowScrolling" ),
|
442
439
|
boxShadow: !!propExists( "boxShadow" ) && !bb,
|
443
|
-
scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos,
|
440
|
+
scrollTop: ( "pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[ 0 ] ) && !webos && !operamini,
|
444
441
|
dynamicBaseTag: baseTagTest()
|
445
442
|
});
|
446
443
|
|
@@ -466,7 +463,7 @@ $.mobile.ajaxBlacklist =
|
|
466
463
|
// BlackBerry browsers, pre-webkit
|
467
464
|
window.blackberry && !window.WebKitPoint ||
|
468
465
|
// Opera Mini
|
469
|
-
|
466
|
+
operamini ||
|
470
467
|
// Symbian webkits pre 7.3
|
471
468
|
nokiaLTE7_3;
|
472
469
|
|
@@ -486,10 +483,7 @@ if ( !$.support.boxShadow ) {
|
|
486
483
|
|
487
484
|
})( jQuery );
|
488
485
|
/*
|
489
|
-
*
|
490
|
-
* Copyright (c) jQuery Project
|
491
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
492
|
-
* http://jquery.org/license
|
486
|
+
* "mouse" plugin
|
493
487
|
*/
|
494
488
|
|
495
489
|
// This plugin is an experiment for abstracting away the touch and mouse
|
@@ -983,12 +977,10 @@ if ( eventCaptureSupported ) {
|
|
983
977
|
}, true);
|
984
978
|
}
|
985
979
|
})( jQuery, window, document );
|
986
|
-
/*
|
987
|
-
*
|
988
|
-
* Copyright (c) jQuery Project
|
989
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
990
|
-
* http://jquery.org/license
|
980
|
+
/*
|
981
|
+
* "events" plugin - Handles events
|
991
982
|
*/
|
983
|
+
|
992
984
|
(function( $, window, undefined ) {
|
993
985
|
|
994
986
|
// add new event shortcuts
|
@@ -1223,7 +1215,7 @@ $.event.special.swipe = {
|
|
1223
1215
|
last_orientation = orientation;
|
1224
1216
|
win.trigger( "orientationchange" );
|
1225
1217
|
}
|
1226
|
-
}
|
1218
|
+
}
|
1227
1219
|
|
1228
1220
|
// Get the current page orientation. This method is exposed publicly, should it
|
1229
1221
|
// be needed, as jQuery.event.special.orientationchange.orientation()
|
@@ -1303,17 +1295,8 @@ $.each({
|
|
1303
1295
|
});
|
1304
1296
|
|
1305
1297
|
})( jQuery, this );
|
1306
|
-
/*!
|
1307
|
-
* jQuery hashchange event - v1.3 - 7/21/2010
|
1308
|
-
* http://benalman.com/projects/jquery-hashchange-plugin/
|
1309
|
-
*
|
1310
|
-
* Copyright (c) 2010 "Cowboy" Ben Alman
|
1311
|
-
* Dual licensed under the MIT and GPL licenses.
|
1312
|
-
* http://benalman.com/about/license/
|
1313
|
-
*/
|
1314
|
-
|
1315
1298
|
// Script: jQuery hashchange event
|
1316
|
-
//
|
1299
|
+
//
|
1317
1300
|
// *Version: 1.3, Last updated: 7/21/2010*
|
1318
1301
|
//
|
1319
1302
|
// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/
|
@@ -1694,10 +1677,7 @@ $.each({
|
|
1694
1677
|
|
1695
1678
|
})(jQuery,this);
|
1696
1679
|
/*
|
1697
|
-
*
|
1698
|
-
* Copyright (c) jQuery Project
|
1699
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
1700
|
-
* http://jquery.org/license
|
1680
|
+
* "page" plugin
|
1701
1681
|
*/
|
1702
1682
|
|
1703
1683
|
(function( $, undefined ) {
|
@@ -1730,17 +1710,14 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
1730
1710
|
}
|
1731
1711
|
});
|
1732
1712
|
})( jQuery );
|
1733
|
-
|
1734
|
-
|
1735
|
-
|
1736
|
-
*
|
1737
|
-
* Copyright 2010, jQuery Project
|
1738
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
1739
|
-
* http://jquery.org/license
|
1740
|
-
*/
|
1713
|
+
/*
|
1714
|
+
* "core" - The base file for jQm
|
1715
|
+
*/
|
1741
1716
|
|
1742
1717
|
(function( $, window, undefined ) {
|
1743
1718
|
|
1719
|
+
var nsNormalizeDict = {};
|
1720
|
+
|
1744
1721
|
// jQuery.mobile configurable options
|
1745
1722
|
$.extend( $.mobile, {
|
1746
1723
|
|
@@ -1764,6 +1741,9 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
1764
1741
|
// Automatically load and show pages based on location.hash
|
1765
1742
|
hashListeningEnabled: true,
|
1766
1743
|
|
1744
|
+
// disable to prevent jquery from bothering with links
|
1745
|
+
linkBindingEnabled: true,
|
1746
|
+
|
1767
1747
|
// Set default page transition - 'none' for no transitions
|
1768
1748
|
defaultPageTransition: "slide",
|
1769
1749
|
|
@@ -1849,24 +1829,42 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
1849
1829
|
}, 150 );
|
1850
1830
|
},
|
1851
1831
|
|
1832
|
+
// Expose our cache for testing purposes.
|
1833
|
+
nsNormalizeDict: nsNormalizeDict,
|
1834
|
+
|
1852
1835
|
// Take a data attribute property, prepend the namespace
|
1853
|
-
// and then camel case the attribute string
|
1836
|
+
// and then camel case the attribute string. Add the result
|
1837
|
+
// to our nsNormalizeDict so we don't have to do this again.
|
1854
1838
|
nsNormalize: function( prop ) {
|
1855
1839
|
if ( !prop ) {
|
1856
1840
|
return;
|
1857
1841
|
}
|
1858
1842
|
|
1859
|
-
return $.camelCase( $.mobile.ns + prop );
|
1843
|
+
return nsNormalizeDict[ prop ] || ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) );
|
1860
1844
|
},
|
1861
1845
|
|
1862
1846
|
getInheritedTheme: function( el, defaultTheme ) {
|
1863
|
-
// Find the closest parent with a theme class on it.
|
1864
|
-
var themedParent = el.closest( "[class*='ui-bar-'],[class*='ui-body-']" ),
|
1865
|
-
|
1866
|
-
// If there's a themed parent, extract the theme letter
|
1867
|
-
// from the theme class .
|
1868
|
-
ltr = ( themedParent.length && /ui-(bar|body)-([a-z])\b/.exec( themedParent.attr( "class" ) )[ 2 ] || "" ) || "";
|
1869
1847
|
|
1848
|
+
// Find the closest parent with a theme class on it. Note that
|
1849
|
+
// we are not using $.fn.closest() on purpose here because this
|
1850
|
+
// method gets called quite a bit and we need it to be as fast
|
1851
|
+
// as possible.
|
1852
|
+
|
1853
|
+
var e = el[ 0 ],
|
1854
|
+
ltr = "",
|
1855
|
+
re = /ui-(bar|body)-([a-z])\b/,
|
1856
|
+
c, m;
|
1857
|
+
|
1858
|
+
while ( e ) {
|
1859
|
+
var c = e.className || "";
|
1860
|
+
if ( ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) {
|
1861
|
+
// We found a parent with a theme class
|
1862
|
+
// on it so bail from this loop.
|
1863
|
+
break;
|
1864
|
+
}
|
1865
|
+
e = e.parentNode;
|
1866
|
+
}
|
1867
|
+
|
1870
1868
|
// Return the theme letter we found, if none, return the
|
1871
1869
|
// specified default.
|
1872
1870
|
|
@@ -1929,10 +1927,11 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
1929
1927
|
};
|
1930
1928
|
|
1931
1929
|
// Monkey-patching Sizzle to filter the :jqmData selector
|
1932
|
-
var oldFind = $.find
|
1930
|
+
var oldFind = $.find,
|
1931
|
+
jqmDataRE = /:jqmData\(([^)]*)\)/g;
|
1933
1932
|
|
1934
1933
|
$.find = function( selector, context, ret, extra ) {
|
1935
|
-
selector = selector.replace(
|
1934
|
+
selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" );
|
1936
1935
|
|
1937
1936
|
return oldFind.call( this, selector, context, ret, extra );
|
1938
1937
|
};
|
@@ -1949,11 +1948,9 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
1949
1948
|
})( jQuery, this );
|
1950
1949
|
|
1951
1950
|
/*
|
1952
|
-
*
|
1953
|
-
* Copyright (c) jQuery Project
|
1954
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
1955
|
-
* http://jquery.org/license
|
1951
|
+
* core utilities for auto ajax navigation, base tag mgmt,
|
1956
1952
|
*/
|
1953
|
+
|
1957
1954
|
( function( $, undefined ) {
|
1958
1955
|
|
1959
1956
|
//define vars for interal use
|
@@ -2515,7 +2512,7 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
2515
2512
|
|
2516
2513
|
//simply set the active page's minimum height to screen height, depending on orientation
|
2517
2514
|
function getScreenHeight(){
|
2518
|
-
var orientation =
|
2515
|
+
var orientation = $.event.special.orientationchange.orientation(),
|
2519
2516
|
port = orientation === "portrait",
|
2520
2517
|
winMin = port ? 480 : 320,
|
2521
2518
|
screenHeight = port ? screen.availHeight : screen.availWidth,
|
@@ -2689,13 +2686,29 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
2689
2686
|
// attribute and in need of enhancement.
|
2690
2687
|
if ( page.length === 0 && dataUrl && !path.isPath( dataUrl ) ) {
|
2691
2688
|
page = settings.pageContainer.children( "#" + dataUrl )
|
2692
|
-
.attr( "data-" + $.mobile.ns + "url", dataUrl )
|
2689
|
+
.attr( "data-" + $.mobile.ns + "url", dataUrl );
|
2693
2690
|
}
|
2694
2691
|
|
2695
2692
|
// If we failed to find a page in the DOM, check the URL to see if it
|
2696
|
-
// refers to the first page in the application.
|
2697
|
-
|
2698
|
-
|
2693
|
+
// refers to the first page in the application. If it isn't a reference
|
2694
|
+
// to the first page and refers to non-existent embedded page, error out.
|
2695
|
+
if ( page.length === 0 ) {
|
2696
|
+
if ( $.mobile.firstPage && path.isFirstPageUrl( fileUrl ) ) {
|
2697
|
+
// Check to make sure our cached-first-page is actually
|
2698
|
+
// in the DOM. Some user deployed apps are pruning the first
|
2699
|
+
// page from the DOM for various reasons, we check for this
|
2700
|
+
// case here because we don't want a first-page with an id
|
2701
|
+
// falling through to the non-existent embedded page error
|
2702
|
+
// case. If the first-page is not in the DOM, then we let
|
2703
|
+
// things fall through to the ajax loading code below so
|
2704
|
+
// that it gets reloaded.
|
2705
|
+
if ( $.mobile.firstPage.parent().length ) {
|
2706
|
+
page = $( $.mobile.firstPage );
|
2707
|
+
}
|
2708
|
+
} else if ( path.isEmbeddedPage( fileUrl ) ) {
|
2709
|
+
deferred.reject( absUrl, options );
|
2710
|
+
return deferred.promise();
|
2711
|
+
}
|
2699
2712
|
}
|
2700
2713
|
|
2701
2714
|
// Reset base to the default document base.
|
@@ -2755,7 +2768,7 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
2755
2768
|
type: settings.type,
|
2756
2769
|
data: settings.data,
|
2757
2770
|
dataType: "html",
|
2758
|
-
success: function( html ) {
|
2771
|
+
success: function( html, textStatus, xhr ) {
|
2759
2772
|
//pre-parse html to check for a data-url,
|
2760
2773
|
//use it as the new fileUrl, base path, etc
|
2761
2774
|
var all = $( "<div></div>" ),
|
@@ -2791,6 +2804,9 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
2791
2804
|
}
|
2792
2805
|
|
2793
2806
|
if ( newPageTitle && !page.jqmData( "title" ) ) {
|
2807
|
+
if ( ~newPageTitle.indexOf( "&" ) ) {
|
2808
|
+
newPageTitle = $( "<div>" + newPageTitle + "</div>" ).text();
|
2809
|
+
}
|
2794
2810
|
page.jqmData( "title", newPageTitle );
|
2795
2811
|
}
|
2796
2812
|
|
@@ -2841,7 +2857,9 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
2841
2857
|
hideMsg();
|
2842
2858
|
}
|
2843
2859
|
|
2844
|
-
// Add the page reference to our triggerData.
|
2860
|
+
// Add the page reference and xhr to our triggerData.
|
2861
|
+
triggerData.xhr = xhr;
|
2862
|
+
triggerData.textStatus = textStatus;
|
2845
2863
|
triggerData.page = page;
|
2846
2864
|
|
2847
2865
|
// Let listeners know the page loaded successfully.
|
@@ -2849,12 +2867,17 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
2849
2867
|
|
2850
2868
|
deferred.resolve( absUrl, options, page, dupCachedPage );
|
2851
2869
|
},
|
2852
|
-
error: function() {
|
2870
|
+
error: function( xhr, textStatus, errorThrown ) {
|
2853
2871
|
//set base back to current path
|
2854
2872
|
if( base ) {
|
2855
2873
|
base.set( path.get() );
|
2856
2874
|
}
|
2857
2875
|
|
2876
|
+
// Add error info to our triggerData.
|
2877
|
+
triggerData.xhr = xhr;
|
2878
|
+
triggerData.textStatus = textStatus;
|
2879
|
+
triggerData.errorThrown = errorThrown;
|
2880
|
+
|
2858
2881
|
var plfEvent = new $.Event( "pageloadfailed" );
|
2859
2882
|
|
2860
2883
|
// Let listeners know the page load failed.
|
@@ -3025,7 +3048,11 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
3025
3048
|
// Wrap this in a try/catch block since IE9 throw "Unspecified error" if document.activeElement
|
3026
3049
|
// is undefined when we are in an IFrame.
|
3027
3050
|
try {
|
3028
|
-
|
3051
|
+
if(document.activeElement && document.activeElement.nodeName.toLowerCase() != 'body') {
|
3052
|
+
$(document.activeElement).blur();
|
3053
|
+
} else {
|
3054
|
+
$( "input:focus, textarea:focus, select:focus" ).blur();
|
3055
|
+
}
|
3029
3056
|
} catch(e) {}
|
3030
3057
|
|
3031
3058
|
// If we're displaying the page as a dialog, we don't want the url
|
@@ -3047,11 +3074,15 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
3047
3074
|
path.set( url );
|
3048
3075
|
}
|
3049
3076
|
|
3050
|
-
//if title element wasn't found, try the page div data attr too
|
3051
|
-
|
3077
|
+
// if title element wasn't found, try the page div data attr too
|
3078
|
+
// If this is a deep-link or a reload ( active === undefined ) then just use pageTitle
|
3079
|
+
var newPageTitle = ( !active )? pageTitle : toPage.jqmData( "title" ) || toPage.children(":jqmData(role='header')").find(".ui-title" ).getEncodedText();
|
3052
3080
|
if( !!newPageTitle && pageTitle == document.title ) {
|
3053
3081
|
pageTitle = newPageTitle;
|
3054
3082
|
}
|
3083
|
+
if ( !toPage.jqmData( "title" ) ) {
|
3084
|
+
toPage.jqmData( "title", pageTitle );
|
3085
|
+
}
|
3055
3086
|
|
3056
3087
|
// Make sure we have a transition defined.
|
3057
3088
|
settings.transition = settings.transition
|
@@ -3109,7 +3140,14 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
3109
3140
|
function findClosestLink( ele )
|
3110
3141
|
{
|
3111
3142
|
while ( ele ) {
|
3112
|
-
|
3143
|
+
// Look for the closest element with a nodeName of "a".
|
3144
|
+
// Note that we are checking if we have a valid nodeName
|
3145
|
+
// before attempting to access it. This is because the
|
3146
|
+
// node we get called with could have originated from within
|
3147
|
+
// an embedded SVG document where some symbol instance elements
|
3148
|
+
// don't have nodeName defined on them, or strings are of type
|
3149
|
+
// SVGAnimatedString.
|
3150
|
+
if ( ( typeof ele.nodeName === "string" ) && ele.nodeName.toLowerCase() == "a" ) {
|
3113
3151
|
break;
|
3114
3152
|
}
|
3115
3153
|
ele = ele.parentNode;
|
@@ -3189,7 +3227,7 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
3189
3227
|
$( document ).bind( "vclick", function( event ) {
|
3190
3228
|
// if this isn't a left click we don't care. Its important to note
|
3191
3229
|
// that when the virtual event is generated it will create
|
3192
|
-
if ( event.which > 1 ){
|
3230
|
+
if ( event.which > 1 || !$.mobile.linkBindingEnabled ){
|
3193
3231
|
return;
|
3194
3232
|
}
|
3195
3233
|
|
@@ -3206,6 +3244,10 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
3206
3244
|
|
3207
3245
|
// click routing - direct to HTTP or Ajax, accordingly
|
3208
3246
|
$( document ).bind( "click", function( event ) {
|
3247
|
+
if( !$.mobile.linkBindingEnabled ){
|
3248
|
+
return;
|
3249
|
+
}
|
3250
|
+
|
3209
3251
|
var link = findClosestLink( event.target );
|
3210
3252
|
|
3211
3253
|
// If there is no link associated with the click or its not a left
|
@@ -3403,11 +3445,9 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
3403
3445
|
|
3404
3446
|
})( jQuery );
|
3405
3447
|
/*
|
3406
|
-
*
|
3407
|
-
* Copyright (c) jQuery Project
|
3408
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
3409
|
-
* http://jquery.org/license
|
3448
|
+
* history.pushState support, layered on top of hashchange
|
3410
3449
|
*/
|
3450
|
+
|
3411
3451
|
( function( $, window ) {
|
3412
3452
|
// For now, let's Monkeypatch this onto the end of $.mobile._registerInternalEvents
|
3413
3453
|
// Scope self to pushStateHandler so we can reference it sanely within the
|
@@ -3537,14 +3577,10 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
3537
3577
|
pushStateHandler.init();
|
3538
3578
|
}
|
3539
3579
|
});
|
3540
|
-
})( jQuery, this )
|
3541
|
-
|
3542
|
-
|
3543
|
-
|
3544
|
-
* Copyright 2010, jQuery Project
|
3545
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
3546
|
-
* http://jquery.org/license
|
3547
|
-
*/
|
3580
|
+
})( jQuery, this );
|
3581
|
+
/*
|
3582
|
+
* "transitions" plugin - Page change tranistions
|
3583
|
+
*/
|
3548
3584
|
|
3549
3585
|
(function( $, window, undefined ) {
|
3550
3586
|
|
@@ -3588,10 +3624,7 @@ if ( $.mobile.defaultTransitionHandler === $.mobile.noneTransitionHandler ) {
|
|
3588
3624
|
|
3589
3625
|
})( jQuery, this );
|
3590
3626
|
/*
|
3591
|
-
*
|
3592
|
-
* Copyright (c) jQuery Project
|
3593
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
3594
|
-
* http://jquery.org/license
|
3627
|
+
* "degradeInputs" plugin - degrades inputs to another type after custom enhancements are made.
|
3595
3628
|
*/
|
3596
3629
|
|
3597
3630
|
(function( $, undefined ) {
|
@@ -3644,9 +3677,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
3644
3677
|
});
|
3645
3678
|
|
3646
3679
|
})( jQuery );/*
|
3647
|
-
*
|
3648
|
-
* Copyright (c) jQuery Project
|
3649
|
-
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
|
3680
|
+
* "dialog" plugin.
|
3650
3681
|
*/
|
3651
3682
|
|
3652
3683
|
(function( $, window, undefined ) {
|
@@ -3654,20 +3685,15 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
3654
3685
|
$.widget( "mobile.dialog", $.mobile.widget, {
|
3655
3686
|
options: {
|
3656
3687
|
closeBtnText : "Close",
|
3657
|
-
|
3688
|
+
overlayTheme : "a",
|
3658
3689
|
initSelector : ":jqmData(role='dialog')"
|
3659
3690
|
},
|
3660
3691
|
_create: function() {
|
3661
3692
|
var self = this,
|
3662
3693
|
$el = this.element,
|
3663
|
-
pageTheme = $el.attr( "class" ).match( /ui-body-[a-z]/ ),
|
3664
3694
|
headerCloseButton = $( "<a href='#' data-" + $.mobile.ns + "icon='delete' data-" + $.mobile.ns + "iconpos='notext'>"+ this.options.closeBtnText + "</a>" );
|
3665
3695
|
|
3666
|
-
|
3667
|
-
$el.removeClass( pageTheme[ 0 ] );
|
3668
|
-
}
|
3669
|
-
|
3670
|
-
$el.addClass( "ui-body-" + this.options.theme );
|
3696
|
+
$el.addClass( "ui-overlay-" + this.options.overlayTheme );
|
3671
3697
|
|
3672
3698
|
// Class the markup for dialog styling
|
3673
3699
|
// Set aria role
|
@@ -3678,8 +3704,9 @@ $.widget( "mobile.dialog", $.mobile.widget, {
|
|
3678
3704
|
.prepend( headerCloseButton )
|
3679
3705
|
.end()
|
3680
3706
|
.find( ":jqmData(role='content'),:jqmData(role='footer')" )
|
3707
|
+
.addClass( "ui-overlay-shadow" )
|
3681
3708
|
.last()
|
3682
|
-
.addClass( "ui-corner-bottom
|
3709
|
+
.addClass( "ui-corner-bottom" );
|
3683
3710
|
|
3684
3711
|
// this must be an anonymous function so that select menu dialogs can replace
|
3685
3712
|
// the close method. This is a change from previously just defining data-rel=back
|
@@ -3723,10 +3750,7 @@ $( $.mobile.dialog.prototype.options.initSelector ).live( "pagecreate", function
|
|
3723
3750
|
|
3724
3751
|
})( jQuery, this );
|
3725
3752
|
/*
|
3726
|
-
*
|
3727
|
-
* Copyright (c) jQuery Project
|
3728
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
3729
|
-
* http://jquery.org/license
|
3753
|
+
* This plugin handles theming and layout of headers, footers, and content areas
|
3730
3754
|
*/
|
3731
3755
|
|
3732
3756
|
(function( $, undefined ) {
|
@@ -3742,12 +3766,14 @@ $( ":jqmData(role='page'), :jqmData(role='dialog')" ).live( "pagecreate", functi
|
|
3742
3766
|
|
3743
3767
|
var $page = $( this ),
|
3744
3768
|
o = $page.data( "page" ).options,
|
3769
|
+
pageRole = $page.jqmData( "role" ),
|
3745
3770
|
pageTheme = o.theme;
|
3746
3771
|
|
3747
3772
|
$( ":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')", this ).each(function() {
|
3748
3773
|
var $this = $( this ),
|
3749
3774
|
role = $this.jqmData( "role" ),
|
3750
3775
|
theme = $this.jqmData( "theme" ),
|
3776
|
+
contentTheme = theme || o.contentTheme || ( pageRole === "dialog" && pageTheme ),
|
3751
3777
|
$headeranchors,
|
3752
3778
|
leftbtn,
|
3753
3779
|
rightbtn,
|
@@ -3799,8 +3825,8 @@ $( ":jqmData(role='page'), :jqmData(role='dialog')" ).live( "pagecreate", functi
|
|
3799
3825
|
});
|
3800
3826
|
|
3801
3827
|
} else if ( role === "content" ) {
|
3802
|
-
if (
|
3803
|
-
$this.addClass( "ui-body-" + (
|
3828
|
+
if ( contentTheme ) {
|
3829
|
+
$this.addClass( "ui-body-" + ( contentTheme ) );
|
3804
3830
|
}
|
3805
3831
|
|
3806
3832
|
// Add ARIA role
|
@@ -3810,11 +3836,9 @@ $( ":jqmData(role='page'), :jqmData(role='dialog')" ).live( "pagecreate", functi
|
|
3810
3836
|
});
|
3811
3837
|
|
3812
3838
|
})( jQuery );/*
|
3813
|
-
*
|
3814
|
-
* Copyright (c) jQuery Project
|
3815
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
3816
|
-
* http://jquery.org/license
|
3839
|
+
* "collapsible" plugin
|
3817
3840
|
*/
|
3841
|
+
|
3818
3842
|
(function( $, undefined ) {
|
3819
3843
|
|
3820
3844
|
$.widget( "mobile.collapsible", $.mobile.widget, {
|
@@ -3822,7 +3846,7 @@ $.widget( "mobile.collapsible", $.mobile.widget, {
|
|
3822
3846
|
expandCueText: " click to expand contents",
|
3823
3847
|
collapseCueText: " click to collapse contents",
|
3824
3848
|
collapsed: true,
|
3825
|
-
heading: "
|
3849
|
+
heading: "h1,h2,h3,h4,h5,h6,legend",
|
3826
3850
|
theme: null,
|
3827
3851
|
contentTheme: null,
|
3828
3852
|
iconTheme: "d",
|
@@ -3833,10 +3857,9 @@ $.widget( "mobile.collapsible", $.mobile.widget, {
|
|
3833
3857
|
var $el = this.element,
|
3834
3858
|
o = this.options,
|
3835
3859
|
collapsible = $el.addClass( "ui-collapsible" ),
|
3836
|
-
collapsibleHeading = $el.
|
3860
|
+
collapsibleHeading = $el.children( o.heading ).first(),
|
3837
3861
|
collapsibleContent = collapsible.wrapInner( "<div class='ui-collapsible-content'></div>" ).find( ".ui-collapsible-content" ),
|
3838
|
-
collapsibleSet = $el.closest( ":jqmData(role='collapsible-set')" ).addClass( "ui-collapsible-set" )
|
3839
|
-
colllapsiblesInSet = collapsibleSet.children( ":jqmData(role='collapsible')" );
|
3862
|
+
collapsibleSet = $el.closest( ":jqmData(role='collapsible-set')" ).addClass( "ui-collapsible-set" );
|
3840
3863
|
|
3841
3864
|
// Replace collapsibleHeading if it's a legend
|
3842
3865
|
if ( collapsibleHeading.is( "legend" ) ) {
|
@@ -3865,57 +3888,17 @@ $.widget( "mobile.collapsible", $.mobile.widget, {
|
|
3865
3888
|
.addClass( "ui-collapsible-heading" )
|
3866
3889
|
.append( "<span class='ui-collapsible-heading-status'></span>" )
|
3867
3890
|
.wrapInner( "<a href='#' class='ui-collapsible-heading-toggle'></a>" )
|
3868
|
-
.find( "a
|
3891
|
+
.find( "a" )
|
3892
|
+
.first()
|
3869
3893
|
.buttonMarkup({
|
3870
3894
|
shadow: false,
|
3871
3895
|
corners: false,
|
3872
3896
|
iconPos: "left",
|
3873
3897
|
icon: "plus",
|
3874
3898
|
theme: o.theme
|
3875
|
-
})
|
3876
|
-
|
3877
|
-
|
3878
|
-
collapsibleHeading
|
3879
|
-
.find( "a:eq(0), .ui-btn-inner" )
|
3880
|
-
.addClass( "ui-corner-top ui-corner-bottom" );
|
3881
|
-
} else {
|
3882
|
-
// If we are in a collapsible set
|
3883
|
-
|
3884
|
-
// Initialize the collapsible set if it's not already initialized
|
3885
|
-
if ( !collapsibleSet.jqmData( "collapsiblebound" ) ) {
|
3886
|
-
|
3887
|
-
collapsibleSet
|
3888
|
-
.jqmData( "collapsiblebound", true )
|
3889
|
-
.bind( "expand", function( event ) {
|
3890
|
-
|
3891
|
-
$( event.target )
|
3892
|
-
.closest( ".ui-collapsible" )
|
3893
|
-
.siblings( ".ui-collapsible" )
|
3894
|
-
.trigger( "collapse" );
|
3895
|
-
|
3896
|
-
});
|
3897
|
-
}
|
3898
|
-
|
3899
|
-
colllapsiblesInSet.first()
|
3900
|
-
.find( "a:eq(0)" )
|
3901
|
-
.addClass( "ui-corner-top" )
|
3902
|
-
.find( ".ui-btn-inner" )
|
3903
|
-
.addClass( "ui-corner-top" );
|
3904
|
-
|
3905
|
-
colllapsiblesInSet.last()
|
3906
|
-
.jqmData( "collapsible-last", true )
|
3907
|
-
.find( "a:eq(0)" )
|
3908
|
-
.addClass( "ui-corner-bottom" )
|
3909
|
-
.find( ".ui-btn-inner" )
|
3910
|
-
.addClass( "ui-corner-bottom" );
|
3911
|
-
|
3912
|
-
|
3913
|
-
if ( collapsible.jqmData( "collapsible-last" ) ) {
|
3914
|
-
collapsibleHeading
|
3915
|
-
.find( "a:eq(0), .ui-btn-inner" )
|
3916
|
-
.addClass( "ui-corner-bottom" );
|
3917
|
-
}
|
3918
|
-
}
|
3899
|
+
})
|
3900
|
+
.add( ".ui-btn-inner" )
|
3901
|
+
.addClass( "ui-corner-top ui-corner-bottom" );
|
3919
3902
|
|
3920
3903
|
//events
|
3921
3904
|
collapsible
|
@@ -3942,7 +3925,7 @@ $.widget( "mobile.collapsible", $.mobile.widget, {
|
|
3942
3925
|
|
3943
3926
|
if ( contentTheme && ( !collapsibleSet.length || collapsible.jqmData( "collapsible-last" ) ) ) {
|
3944
3927
|
collapsibleHeading
|
3945
|
-
.find( "a
|
3928
|
+
.find( "a" ).first().add( collapsibleHeading.find( ".ui-btn-inner" ) )
|
3946
3929
|
.toggleClass( "ui-corner-bottom", isCollapse );
|
3947
3930
|
collapsibleContent.toggleClass( "ui-corner-bottom", !isCollapse );
|
3948
3931
|
}
|
@@ -3971,10 +3954,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
3971
3954
|
|
3972
3955
|
})( jQuery );
|
3973
3956
|
/*
|
3974
|
-
*
|
3975
|
-
* Copyright (c) jQuery Project
|
3976
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
3977
|
-
* http://jquery.org/license
|
3957
|
+
* "fieldcontain" plugin - simple class additions to make form row separators
|
3978
3958
|
*/
|
3979
3959
|
|
3980
3960
|
(function( $, undefined ) {
|
@@ -3989,10 +3969,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
3989
3969
|
});
|
3990
3970
|
|
3991
3971
|
})( jQuery );/*
|
3992
|
-
*
|
3993
|
-
* Copyright (c) jQuery Project
|
3994
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
3995
|
-
* http://jquery.org/license
|
3972
|
+
* plugin for creating CSS grids
|
3996
3973
|
*/
|
3997
3974
|
|
3998
3975
|
(function( $, undefined ) {
|
@@ -4041,10 +4018,7 @@ $.fn.grid = function( options ) {
|
|
4041
4018
|
});
|
4042
4019
|
};
|
4043
4020
|
})( jQuery );/*
|
4044
|
-
*
|
4045
|
-
* Copyright (c) jQuery Project
|
4046
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
4047
|
-
* http://jquery.org/license
|
4021
|
+
* "navbar" plugin
|
4048
4022
|
*/
|
4049
4023
|
|
4050
4024
|
(function( $, undefined ) {
|
@@ -4092,10 +4066,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
4092
4066
|
|
4093
4067
|
})( jQuery );
|
4094
4068
|
/*
|
4095
|
-
*
|
4096
|
-
* Copyright (c) jQuery Project
|
4097
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
4098
|
-
* http://jquery.org/license
|
4069
|
+
* "listview" plugin
|
4099
4070
|
*/
|
4100
4071
|
|
4101
4072
|
(function( $, undefined ) {
|
@@ -4107,7 +4078,7 @@ var listCountPerPage = {};
|
|
4107
4078
|
|
4108
4079
|
$.widget( "mobile.listview", $.mobile.widget, {
|
4109
4080
|
options: {
|
4110
|
-
theme:
|
4081
|
+
theme: null,
|
4111
4082
|
countTheme: "c",
|
4112
4083
|
headerTheme: "b",
|
4113
4084
|
dividerTheme: "b",
|
@@ -4128,25 +4099,6 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4128
4099
|
t.refresh( true );
|
4129
4100
|
},
|
4130
4101
|
|
4131
|
-
_itemApply: function( $list, item ) {
|
4132
|
-
var $countli = item.find( ".ui-li-count" );
|
4133
|
-
if ( $countli.length ) {
|
4134
|
-
item.addClass( "ui-li-has-count" );
|
4135
|
-
}
|
4136
|
-
$countli.addClass( "ui-btn-up-" + ( $list.jqmData( "counttheme" ) || this.options.countTheme ) + " ui-btn-corner-all" );
|
4137
|
-
|
4138
|
-
// TODO class has to be defined in markup
|
4139
|
-
item.find( "h1, h2, h3, h4, h5, h6" ).addClass( "ui-li-heading" ).end()
|
4140
|
-
.find( "p, dl" ).addClass( "ui-li-desc" ).end()
|
4141
|
-
.find( ">img:eq(0), .ui-link-inherit>img:eq(0)" ).addClass( "ui-li-thumb" ).each(function() {
|
4142
|
-
item.addClass( $(this).is( ".ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" );
|
4143
|
-
}).end()
|
4144
|
-
.find( ".ui-li-aside" ).each(function() {
|
4145
|
-
var $this = $(this);
|
4146
|
-
$this.prependTo( $this.parent() ); //shift aside to front for css float
|
4147
|
-
});
|
4148
|
-
},
|
4149
|
-
|
4150
4102
|
_removeCorners: function( li, which ) {
|
4151
4103
|
var top = "ui-corner-top ui-corner-tr ui-corner-tl",
|
4152
4104
|
bot = "ui-corner-bottom ui-corner-br ui-corner-bl";
|
@@ -4179,8 +4131,11 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4179
4131
|
$topli = $visibleli.first()
|
4180
4132
|
.addClass( "ui-corner-top" );
|
4181
4133
|
|
4182
|
-
$topli.add( $topli.find( ".ui-btn-inner" )
|
4183
|
-
|
4134
|
+
$topli.add( $topli.find( ".ui-btn-inner" )
|
4135
|
+
.not( ".ui-li-link-alt span:first-child" ) )
|
4136
|
+
.addClass( "ui-corner-top" )
|
4137
|
+
.end()
|
4138
|
+
.find( ".ui-li-link-alt, .ui-li-link-alt span:first-child" )
|
4184
4139
|
.addClass( "ui-corner-tr" )
|
4185
4140
|
.end()
|
4186
4141
|
.find( ".ui-li-thumb" )
|
@@ -4204,6 +4159,56 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4204
4159
|
}
|
4205
4160
|
},
|
4206
4161
|
|
4162
|
+
// This is a generic utility method for finding the first
|
4163
|
+
// node with a given nodeName. It uses basic DOM traversal
|
4164
|
+
// to be fast and is meant to be a substitute for simple
|
4165
|
+
// $.fn.closest() and $.fn.children() calls on a single
|
4166
|
+
// element. Note that callers must pass both the lowerCase
|
4167
|
+
// and upperCase version of the nodeName they are looking for.
|
4168
|
+
// The main reason for this is that this function will be
|
4169
|
+
// called many times and we want to avoid having to lowercase
|
4170
|
+
// the nodeName from the element every time to ensure we have
|
4171
|
+
// a match. Note that this function lives here for now, but may
|
4172
|
+
// be moved into $.mobile if other components need a similar method.
|
4173
|
+
_findFirstElementByTagName: function( ele, nextProp, lcName, ucName )
|
4174
|
+
{
|
4175
|
+
var dict = {};
|
4176
|
+
dict[ lcName ] = dict[ ucName ] = true;
|
4177
|
+
while ( ele ) {
|
4178
|
+
if ( dict[ ele.nodeName ] ) {
|
4179
|
+
return ele;
|
4180
|
+
}
|
4181
|
+
ele = ele[ nextProp ];
|
4182
|
+
}
|
4183
|
+
return null;
|
4184
|
+
},
|
4185
|
+
_getChildrenByTagName: function( ele, lcName, ucName )
|
4186
|
+
{
|
4187
|
+
var results = [],
|
4188
|
+
dict = {};
|
4189
|
+
dict[ lcName ] = dict[ ucName ] = true;
|
4190
|
+
ele = ele.firstChild;
|
4191
|
+
while ( ele ) {
|
4192
|
+
if ( dict[ ele.nodeName ] ) {
|
4193
|
+
results.push( ele );
|
4194
|
+
}
|
4195
|
+
ele = ele.nextSibling;
|
4196
|
+
}
|
4197
|
+
return $( results );
|
4198
|
+
},
|
4199
|
+
|
4200
|
+
_addThumbClasses: function( containers )
|
4201
|
+
{
|
4202
|
+
var i, img, len = containers.length;
|
4203
|
+
for ( i = 0; i < len; i++ ) {
|
4204
|
+
img = $( this._findFirstElementByTagName( containers[ i ].firstChild, "nextSibling", "img", "IMG" ) );
|
4205
|
+
if ( img.length ) {
|
4206
|
+
img.addClass( "ui-li-thumb" );
|
4207
|
+
$( this._findFirstElementByTagName( img[ 0 ].parentNode, "parentNode", "li", "LI" ) ).addClass( img.is( ".ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" );
|
4208
|
+
}
|
4209
|
+
}
|
4210
|
+
},
|
4211
|
+
|
4207
4212
|
refresh: function( create ) {
|
4208
4213
|
this.parentPage = this.element.closest( ".ui-page" );
|
4209
4214
|
this._createSubPages();
|
@@ -4214,14 +4219,19 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4214
4219
|
dividertheme = $list.jqmData( "dividertheme" ) || o.dividerTheme,
|
4215
4220
|
listsplittheme = $list.jqmData( "splittheme" ),
|
4216
4221
|
listspliticon = $list.jqmData( "spliticon" ),
|
4217
|
-
li =
|
4222
|
+
li = this._getChildrenByTagName( $list[ 0 ], "li", "LI" ),
|
4218
4223
|
counter = $.support.cssPseudoElement || !$.nodeName( $list[ 0 ], "ol" ) ? 0 : 1,
|
4224
|
+
itemClassDict = {},
|
4219
4225
|
item, itemClass, itemTheme,
|
4220
|
-
a, last, splittheme, countParent, icon;
|
4226
|
+
a, last, splittheme, countParent, icon, imgParents, img;
|
4221
4227
|
|
4222
4228
|
if ( counter ) {
|
4223
4229
|
$list.find( ".ui-li-dec" ).remove();
|
4224
4230
|
}
|
4231
|
+
|
4232
|
+
if ( !o.theme ) {
|
4233
|
+
o.theme = $.mobile.getInheritedTheme( this.element, "c" );
|
4234
|
+
}
|
4225
4235
|
|
4226
4236
|
for ( var pos = 0, numli = li.length; pos < numli; pos++ ) {
|
4227
4237
|
item = li.eq( pos );
|
@@ -4230,7 +4240,7 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4230
4240
|
// If we're creating the element, we update it regardless
|
4231
4241
|
if ( create || !item.hasClass( "ui-li" ) ) {
|
4232
4242
|
itemTheme = item.jqmData("theme") || o.theme;
|
4233
|
-
a =
|
4243
|
+
a = this._getChildrenByTagName( item[ 0 ], "a", "A" );
|
4234
4244
|
|
4235
4245
|
if ( a.length ) {
|
4236
4246
|
icon = item.jqmData("icon");
|
@@ -4269,7 +4279,7 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4269
4279
|
})
|
4270
4280
|
.find( ".ui-btn-inner" )
|
4271
4281
|
.append(
|
4272
|
-
$( "
|
4282
|
+
$( document.createElement( "span" ) ).buttonMarkup({
|
4273
4283
|
shadow: true,
|
4274
4284
|
corners: true,
|
4275
4285
|
theme: splittheme,
|
@@ -4300,11 +4310,59 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4300
4310
|
.prepend( "<span class='ui-li-dec'>" + (counter++) + ". </span>" );
|
4301
4311
|
}
|
4302
4312
|
|
4303
|
-
|
4313
|
+
// Instead of setting item class directly on the list item and its
|
4314
|
+
// btn-inner at this point in time, push the item into a dictionary
|
4315
|
+
// that tells us what class to set on it so we can do this after this
|
4316
|
+
// processing loop is finished.
|
4317
|
+
|
4318
|
+
if ( !itemClassDict[ itemClass ] ) {
|
4319
|
+
itemClassDict[ itemClass ] = [];
|
4320
|
+
}
|
4321
|
+
|
4322
|
+
itemClassDict[ itemClass ].push( item[ 0 ] );
|
4323
|
+
}
|
4324
|
+
|
4325
|
+
// Set the appropriate listview item classes on each list item
|
4326
|
+
// and their btn-inner elements. The main reason we didn't do this
|
4327
|
+
// in the for-loop above is because we can eliminate per-item function overhead
|
4328
|
+
// by calling addClass() and children() once or twice afterwards. This
|
4329
|
+
// can give us a significant boost on platforms like WP7.5.
|
4304
4330
|
|
4305
|
-
|
4331
|
+
for ( itemClass in itemClassDict ) {
|
4332
|
+
$( itemClassDict[ itemClass ] ).addClass( itemClass ).children( ".ui-btn-inner" ).addClass( itemClass );
|
4306
4333
|
}
|
4307
4334
|
|
4335
|
+
$list.find( "h1, h2, h3, h4, h5, h6" ).addClass( "ui-li-heading" )
|
4336
|
+
.end()
|
4337
|
+
|
4338
|
+
.find( "p, dl" ).addClass( "ui-li-desc" )
|
4339
|
+
.end()
|
4340
|
+
|
4341
|
+
.find( ".ui-li-aside" ).each(function() {
|
4342
|
+
var $this = $(this);
|
4343
|
+
$this.prependTo( $this.parent() ); //shift aside to front for css float
|
4344
|
+
})
|
4345
|
+
.end()
|
4346
|
+
|
4347
|
+
.find( ".ui-li-count" ).each( function() {
|
4348
|
+
$( this ).closest( "li" ).addClass( "ui-li-has-count" );
|
4349
|
+
}).addClass( "ui-btn-up-" + ( $list.jqmData( "counttheme" ) || this.options.countTheme) + " ui-btn-corner-all" );
|
4350
|
+
|
4351
|
+
// The idea here is to look at the first image in the list item
|
4352
|
+
// itself, and any .ui-link-inherit element it may contain, so we
|
4353
|
+
// can place the appropriate classes on the image and list item.
|
4354
|
+
// Note that we used to use something like:
|
4355
|
+
//
|
4356
|
+
// li.find(">img:eq(0), .ui-link-inherit>img:eq(0)").each( ... );
|
4357
|
+
//
|
4358
|
+
// But executing a find() like that on Windows Phone 7.5 took a
|
4359
|
+
// really long time. Walking things manually with the code below
|
4360
|
+
// allows the 400 listview item page to load in about 3 seconds as
|
4361
|
+
// opposed to 30 seconds.
|
4362
|
+
|
4363
|
+
this._addThumbClasses( li );
|
4364
|
+
this._addThumbClasses( $list.find( ".ui-link-inherit" ) );
|
4365
|
+
|
4308
4366
|
this._refreshCorners( create );
|
4309
4367
|
},
|
4310
4368
|
|
@@ -4407,10 +4465,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
4407
4465
|
|
4408
4466
|
})( jQuery );
|
4409
4467
|
/*
|
4410
|
-
*
|
4411
|
-
* Copyright (c) jQuery Project
|
4412
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
4413
|
-
* http://jquery.org/license
|
4468
|
+
* "listview" filter extension
|
4414
4469
|
*/
|
4415
4470
|
|
4416
4471
|
(function( $, undefined ) {
|
@@ -4452,12 +4507,11 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() {
|
|
4452
4507
|
|
4453
4508
|
// Change val as lastval for next execution
|
4454
4509
|
$this.jqmData( "lastval" , val );
|
4455
|
-
|
4456
|
-
change = val.replace( new RegExp( "^" + lastval ) , "" );
|
4510
|
+
change = val.substr( 0 , lastval.length - 1 ).replace( lastval , "" );
|
4457
4511
|
|
4458
4512
|
if ( val.length < lastval.length || change.length != ( val.length - lastval.length ) ) {
|
4459
4513
|
|
4460
|
-
// Removed chars or pasted something
|
4514
|
+
// Removed chars or pasted something totally different, check all items
|
4461
4515
|
listItems = list.children();
|
4462
4516
|
} else {
|
4463
4517
|
|
@@ -4487,7 +4541,7 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() {
|
|
4487
4541
|
item.toggleClass( "ui-filter-hidequeue" , true );
|
4488
4542
|
} else {
|
4489
4543
|
|
4490
|
-
// There
|
4544
|
+
// There's a shown item in the bucket
|
4491
4545
|
childItems = true;
|
4492
4546
|
}
|
4493
4547
|
}
|
@@ -4524,10 +4578,7 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() {
|
|
4524
4578
|
});
|
4525
4579
|
|
4526
4580
|
})( jQuery );/*
|
4527
|
-
*
|
4528
|
-
* Copyright (c) jQuery Project
|
4529
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
4530
|
-
* http://jquery.org/license
|
4581
|
+
* "nojs" plugin - class to make elements hidden to A grade browsers
|
4531
4582
|
*/
|
4532
4583
|
|
4533
4584
|
(function( $, undefined ) {
|
@@ -4538,10 +4589,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
4538
4589
|
});
|
4539
4590
|
|
4540
4591
|
})( jQuery );/*
|
4541
|
-
*
|
4542
|
-
* Copyright (c) jQuery Project
|
4543
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
4544
|
-
* http://jquery.org/license
|
4592
|
+
* "checkboxradio" plugin
|
4545
4593
|
*/
|
4546
4594
|
|
4547
4595
|
(function( $, undefined ) {
|
@@ -4556,7 +4604,7 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
4556
4604
|
input = this.element,
|
4557
4605
|
// NOTE: Windows Phone could not find the label through a selector
|
4558
4606
|
// filter works though.
|
4559
|
-
label = input.closest( "form,fieldset,:jqmData(role='page')" ).find( "label
|
4607
|
+
label = input.closest( "form,fieldset,:jqmData(role='page')" ).find( "label[for='" + input[ 0 ].id + "']"),
|
4560
4608
|
inputtype = input.attr( "type" ),
|
4561
4609
|
checkedState = inputtype + "-on",
|
4562
4610
|
uncheckedState = inputtype + "-off",
|
@@ -4613,6 +4661,13 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
4613
4661
|
|
4614
4662
|
input.prop( "checked", inputtype === "radio" && true || !input.prop( "checked" ) );
|
4615
4663
|
|
4664
|
+
// trigger click handler's bound directly to the input as a substitute for
|
4665
|
+
// how label clicks behave normally in the browsers
|
4666
|
+
// TODO: it would be nice to let the browser's handle the clicks and pass them
|
4667
|
+
// through to the associate input. we can swallow that click at the parent
|
4668
|
+
// wrapper element level
|
4669
|
+
input.triggerHandler( 'click' );
|
4670
|
+
|
4616
4671
|
// Input set for common radio buttons will contain all the radio
|
4617
4672
|
// buttons, but will not for checkboxes. clearing the checked status
|
4618
4673
|
// of other radios ensures the active button state is applied properly
|
@@ -4627,11 +4682,10 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
4627
4682
|
input
|
4628
4683
|
.bind({
|
4629
4684
|
vmousedown: function() {
|
4630
|
-
|
4685
|
+
self._cacheVals();
|
4631
4686
|
},
|
4632
4687
|
|
4633
4688
|
vclick: function() {
|
4634
|
-
|
4635
4689
|
var $this = $(this);
|
4636
4690
|
|
4637
4691
|
// Adds checked attribute to checked input when keyboard is used
|
@@ -4731,10 +4785,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
4731
4785
|
|
4732
4786
|
})( jQuery );
|
4733
4787
|
/*
|
4734
|
-
*
|
4735
|
-
* Copyright (c) jQuery Project
|
4736
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
4737
|
-
* http://jquery.org/license
|
4788
|
+
* "button" plugin - links that proxy to native input/buttons
|
4738
4789
|
*/
|
4739
4790
|
|
4740
4791
|
(function( $, undefined ) {
|
@@ -4781,15 +4832,18 @@ $.widget( "mobile.button", $.mobile.widget, {
|
|
4781
4832
|
// Add hidden input if it doesn’t already exist.
|
4782
4833
|
if( $buttonPlaceholder === undefined ) {
|
4783
4834
|
$buttonPlaceholder = $( "<input>", {
|
4784
|
-
|
4785
|
-
|
4786
|
-
|
4787
|
-
|
4788
|
-
.insertBefore( $el );
|
4835
|
+
type: "hidden",
|
4836
|
+
name: $el.attr( "name" ),
|
4837
|
+
value: $el.attr( "value" )
|
4838
|
+
}).insertBefore( $el );
|
4789
4839
|
|
4790
4840
|
// Bind to doc to remove after submit handling
|
4791
|
-
$( document ).submit
|
4792
|
-
|
4841
|
+
$( document ).one("submit", function(){
|
4842
|
+
$buttonPlaceholder.remove();
|
4843
|
+
|
4844
|
+
// reset the local var so that the hidden input
|
4845
|
+
// will be re-added on subsequent clicks
|
4846
|
+
$buttonPlaceholder = undefined;
|
4793
4847
|
});
|
4794
4848
|
}
|
4795
4849
|
});
|
@@ -4811,11 +4865,17 @@ $.widget( "mobile.button", $.mobile.widget, {
|
|
4811
4865
|
},
|
4812
4866
|
|
4813
4867
|
refresh: function() {
|
4814
|
-
|
4868
|
+
var $el = this.element;
|
4869
|
+
|
4870
|
+
if ( $el.prop("disabled") ) {
|
4815
4871
|
this.disable();
|
4816
4872
|
} else {
|
4817
4873
|
this.enable();
|
4818
4874
|
}
|
4875
|
+
|
4876
|
+
// the textWrapper is stored as a data element on the button object
|
4877
|
+
// to prevent referencing by it's implementation details (eg 'class')
|
4878
|
+
this.button.data( 'textWrapper' ).text( $el.text() || $el.val() );
|
4819
4879
|
}
|
4820
4880
|
});
|
4821
4881
|
|
@@ -4825,10 +4885,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
4825
4885
|
});
|
4826
4886
|
|
4827
4887
|
})( jQuery );/*
|
4828
|
-
*
|
4829
|
-
* Copyright (c) jQuery Project
|
4830
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
4831
|
-
* http://jquery.org/license
|
4888
|
+
* "slider" plugin
|
4832
4889
|
*/
|
4833
4890
|
|
4834
4891
|
( function( $, undefined ) {
|
@@ -4896,12 +4953,16 @@ $.widget( "mobile.slider", $.mobile.widget, {
|
|
4896
4953
|
handle: handle,
|
4897
4954
|
dragging: false,
|
4898
4955
|
beforeStart: null,
|
4899
|
-
userModified: false
|
4956
|
+
userModified: false,
|
4957
|
+
mouseMoved: false
|
4900
4958
|
});
|
4901
4959
|
|
4902
4960
|
if ( cType == "select" ) {
|
4903
4961
|
|
4904
4962
|
slider.wrapInner( "<div class='ui-slider-inneroffset'></div>" );
|
4963
|
+
|
4964
|
+
// make the handle move with a smooth transition
|
4965
|
+
handle.addClass( "ui-slider-handle-snapping" );
|
4905
4966
|
|
4906
4967
|
options = control.find( "option" );
|
4907
4968
|
|
@@ -4925,7 +4986,10 @@ $.widget( "mobile.slider", $.mobile.widget, {
|
|
4925
4986
|
// monitor the input for updated values
|
4926
4987
|
control.addClass( cType === "input" ? "ui-slider-input" : "ui-slider-switch" )
|
4927
4988
|
.change( function() {
|
4928
|
-
|
4989
|
+
// if the user dragged the handle, the "change" event was triggered from inside refresh(); don't call refresh() again
|
4990
|
+
if (!self.mouseMoved) {
|
4991
|
+
self.refresh( val(), true );
|
4992
|
+
}
|
4929
4993
|
})
|
4930
4994
|
.keyup( function() { // necessary?
|
4931
4995
|
self.refresh( val(), true, true );
|
@@ -4937,8 +5001,18 @@ $.widget( "mobile.slider", $.mobile.widget, {
|
|
4937
5001
|
// prevent screen drag when slider activated
|
4938
5002
|
$( document ).bind( "vmousemove", function( event ) {
|
4939
5003
|
if ( self.dragging ) {
|
5004
|
+
// self.mouseMoved must be updated before refresh() because it will be used in the control "change" event
|
5005
|
+
self.mouseMoved = true;
|
5006
|
+
|
5007
|
+
if ( cType === "select" ) {
|
5008
|
+
// make the handle move in sync with the mouse
|
5009
|
+
handle.removeClass( "ui-slider-handle-snapping" );
|
5010
|
+
}
|
5011
|
+
|
4940
5012
|
self.refresh( event );
|
4941
|
-
|
5013
|
+
|
5014
|
+
// only after refresh() you can calculate self.userModified
|
5015
|
+
self.userModified = self.beforeStart !== control[0].selectedIndex;
|
4942
5016
|
return false;
|
4943
5017
|
}
|
4944
5018
|
});
|
@@ -4946,10 +5020,12 @@ $.widget( "mobile.slider", $.mobile.widget, {
|
|
4946
5020
|
slider.bind( "vmousedown", function( event ) {
|
4947
5021
|
self.dragging = true;
|
4948
5022
|
self.userModified = false;
|
5023
|
+
self.mouseMoved = false;
|
4949
5024
|
|
4950
5025
|
if ( cType === "select" ) {
|
4951
5026
|
self.beforeStart = control[0].selectedIndex;
|
4952
5027
|
}
|
5028
|
+
|
4953
5029
|
self.refresh( event );
|
4954
5030
|
return false;
|
4955
5031
|
});
|
@@ -4960,14 +5036,31 @@ $.widget( "mobile.slider", $.mobile.widget, {
|
|
4960
5036
|
|
4961
5037
|
self.dragging = false;
|
4962
5038
|
|
4963
|
-
if ( cType === "select"
|
4964
|
-
|
4965
|
-
|
4966
|
-
|
4967
|
-
|
4968
|
-
|
5039
|
+
if ( cType === "select") {
|
5040
|
+
|
5041
|
+
// make the handle move with a smooth transition
|
5042
|
+
handle.addClass( "ui-slider-handle-snapping" );
|
5043
|
+
|
5044
|
+
if ( self.mouseMoved ) {
|
5045
|
+
|
5046
|
+
// this is a drag, change the value only if user dragged enough
|
5047
|
+
if ( self.userModified ) {
|
5048
|
+
self.refresh( self.beforeStart == 0 ? 1 : 0 );
|
5049
|
+
}
|
5050
|
+
else {
|
5051
|
+
self.refresh( self.beforeStart );
|
5052
|
+
}
|
5053
|
+
|
5054
|
+
}
|
5055
|
+
else {
|
5056
|
+
// this is just a click, change the value
|
5057
|
+
self.refresh( self.beforeStart == 0 ? 1 : 0 );
|
4969
5058
|
}
|
5059
|
+
|
4970
5060
|
}
|
5061
|
+
|
5062
|
+
self.mouseMoved = false;
|
5063
|
+
|
4971
5064
|
return false;
|
4972
5065
|
}
|
4973
5066
|
});
|
@@ -5041,8 +5134,7 @@ $.widget( "mobile.slider", $.mobile.widget, {
|
|
5041
5134
|
refresh: function( val, isfromControl, preventInputUpdate ) {
|
5042
5135
|
|
5043
5136
|
if ( this.options.disabled || this.element.attr('disabled')) {
|
5044
|
-
this.
|
5045
|
-
return;
|
5137
|
+
this.disable();
|
5046
5138
|
}
|
5047
5139
|
|
5048
5140
|
var control = this.element, percent,
|
@@ -5149,10 +5241,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
5149
5241
|
|
5150
5242
|
})( jQuery );
|
5151
5243
|
/*
|
5152
|
-
*
|
5153
|
-
* Copyright (c) jQuery Project
|
5154
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
5155
|
-
* http://jquery.org/license
|
5244
|
+
* "textinput" plugin for text inputs, textareas
|
5156
5245
|
*/
|
5157
5246
|
|
5158
5247
|
(function( $, undefined ) {
|
@@ -5167,20 +5256,13 @@ $.widget( "mobile.textinput", $.mobile.widget, {
|
|
5167
5256
|
|
5168
5257
|
var input = this.element,
|
5169
5258
|
o = this.options,
|
5170
|
-
theme = o.theme,
|
5171
|
-
themeclass
|
5172
|
-
|
5173
|
-
if ( !theme ) {
|
5174
|
-
theme = $.mobile.getInheritedTheme( this.element, "c" );
|
5175
|
-
}
|
5176
|
-
|
5177
|
-
themeclass = " ui-body-" + theme;
|
5259
|
+
theme = o.theme || $.mobile.getInheritedTheme( this.element, "c" ),
|
5260
|
+
themeclass = " ui-body-" + theme,
|
5261
|
+
focusedEl, clearbtn;
|
5178
5262
|
|
5179
5263
|
$( "label[for='" + input.attr( "id" ) + "']" ).addClass( "ui-input-text" );
|
5180
5264
|
|
5181
|
-
input.addClass("ui-input-text ui-body-"+ theme );
|
5182
|
-
|
5183
|
-
focusedEl = input;
|
5265
|
+
focusedEl = input.addClass("ui-input-text ui-body-"+ theme );
|
5184
5266
|
|
5185
5267
|
// XXX: Temporary workaround for issue 785 (Apple bug 8910589).
|
5186
5268
|
// Turn off autocorrect and autocomplete on non-iOS 5 devices
|
@@ -5217,17 +5299,14 @@ $.widget( "mobile.textinput", $.mobile.widget, {
|
|
5217
5299
|
});
|
5218
5300
|
|
5219
5301
|
function toggleClear() {
|
5220
|
-
|
5221
|
-
clearbtn.
|
5222
|
-
}
|
5223
|
-
clearbtn.removeClass( "ui-input-clear-hidden" );
|
5224
|
-
}
|
5302
|
+
setTimeout(function() {
|
5303
|
+
clearbtn.toggleClass( "ui-input-clear-hidden", !input.val() );
|
5304
|
+
}, 0);
|
5225
5305
|
}
|
5226
5306
|
|
5227
5307
|
toggleClear();
|
5228
5308
|
|
5229
|
-
input.
|
5230
|
-
.focus( toggleClear );
|
5309
|
+
input.bind('paste cut keyup focus change blur', toggleClear);
|
5231
5310
|
|
5232
5311
|
} else {
|
5233
5312
|
input.addClass( "ui-corner-all ui-shadow-inset" + themeclass );
|
@@ -5249,9 +5328,7 @@ $.widget( "mobile.textinput", $.mobile.widget, {
|
|
5249
5328
|
clientHeight = input[ 0 ].clientHeight;
|
5250
5329
|
|
5251
5330
|
if ( clientHeight < scrollHeight ) {
|
5252
|
-
input.
|
5253
|
-
height: (scrollHeight + extraLineHeight)
|
5254
|
-
});
|
5331
|
+
input.height(scrollHeight + extraLineHeight);
|
5255
5332
|
}
|
5256
5333
|
},
|
5257
5334
|
keyupTimeout;
|
@@ -5261,10 +5338,15 @@ $.widget( "mobile.textinput", $.mobile.widget, {
|
|
5261
5338
|
keyupTimeout = setTimeout( keyup, keyupTimeoutBuffer );
|
5262
5339
|
});
|
5263
5340
|
|
5264
|
-
// Issue 509: the browser is not
|
5265
|
-
|
5266
|
-
|
5267
|
-
|
5341
|
+
// Issue 509: the browser is not providing scrollHeight properly until the styles load
|
5342
|
+
if ( $.trim( input.val() ) ) {
|
5343
|
+
// bind to the window load to make sure the height is calculated based on BOTH
|
5344
|
+
// the DOM and CSS
|
5345
|
+
$( window ).load( keyup );
|
5346
|
+
|
5347
|
+
// binding to pagechange here ensures that for pages loaded via
|
5348
|
+
// ajax the height is recalculated without user input
|
5349
|
+
$( document ).one( "pagechange", keyup );
|
5268
5350
|
}
|
5269
5351
|
}
|
5270
5352
|
},
|
@@ -5287,10 +5369,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
5287
5369
|
|
5288
5370
|
})( jQuery );
|
5289
5371
|
/*
|
5290
|
-
*
|
5291
|
-
* Copyright (c) jQuery Project
|
5292
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
5293
|
-
* http://jquery.org/license
|
5372
|
+
* custom "selectmenu" plugin
|
5294
5373
|
*/
|
5295
5374
|
|
5296
5375
|
(function( $, undefined ) {
|
@@ -5305,7 +5384,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
5305
5384
|
isMultiple = widget.isMultiple = widget.select[ 0 ].multiple,
|
5306
5385
|
buttonId = selectID + "-button",
|
5307
5386
|
menuId = selectID + "-menu",
|
5308
|
-
menuPage = $( "<div data-" + $.mobile.ns + "role='dialog' data-" +$.mobile.ns + "theme='"+ widget.options.
|
5387
|
+
menuPage = $( "<div data-" + $.mobile.ns + "role='dialog' data-" +$.mobile.ns + "theme='"+ widget.options.theme +"' data-" +$.mobile.ns + "overlay-theme='"+ widget.options.overlayTheme +"'>" +
|
5309
5388
|
"<div data-" + $.mobile.ns + "role='header'>" +
|
5310
5389
|
"<div class='ui-title'>" + label.getEncodedText() + "</div>"+
|
5311
5390
|
"</div>"+
|
@@ -5612,7 +5691,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
5612
5691
|
// fall into a black hole
|
5613
5692
|
self.thisPage.unbind( "pagehide.remove" );
|
5614
5693
|
|
5615
|
-
//for
|
5694
|
+
//for WebOS/Opera Mini (set lastscroll using button offset)
|
5616
5695
|
if ( scrollTop == 0 && btnOffset > screenHeight ) {
|
5617
5696
|
self.thisPage.one( "pagehide", function() {
|
5618
5697
|
$( this ).jqmData( "lastScroll", btnOffset );
|
@@ -5783,10 +5862,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
5783
5862
|
});
|
5784
5863
|
})( jQuery );
|
5785
5864
|
/*
|
5786
|
-
*
|
5787
|
-
* Copyright (c) jQuery Project
|
5788
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
5789
|
-
* http://jquery.org/license
|
5865
|
+
* "selectmenu" plugin
|
5790
5866
|
*/
|
5791
5867
|
|
5792
5868
|
(function( $, undefined ) {
|
@@ -5991,30 +6067,36 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
5991
6067
|
});
|
5992
6068
|
})( jQuery );
|
5993
6069
|
/*
|
5994
|
-
*
|
5995
|
-
* Copyright (c) jQuery Project
|
5996
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
5997
|
-
* http://jquery.org/license
|
6070
|
+
* "buttons" plugin - for making button-like links
|
5998
6071
|
*/
|
6072
|
+
|
5999
6073
|
( function( $, undefined ) {
|
6000
6074
|
|
6001
6075
|
$.fn.buttonMarkup = function( options ) {
|
6002
|
-
|
6003
|
-
|
6076
|
+
options = options || {};
|
6077
|
+
|
6078
|
+
for ( var i = 0; i < this.length; i++ ) {
|
6079
|
+
var el = this.eq( i ),
|
6080
|
+
e = el[ 0 ],
|
6004
6081
|
o = $.extend( {}, $.fn.buttonMarkup.defaults, {
|
6005
|
-
icon: el.jqmData( "icon" ),
|
6006
|
-
iconpos: el.jqmData( "iconpos" ),
|
6007
|
-
theme: el.jqmData( "theme" ),
|
6008
|
-
inline: el.jqmData( "inline" ),
|
6009
|
-
|
6010
|
-
|
6011
|
-
|
6082
|
+
icon: options.icon !== undefined ? options.icon : el.jqmData( "icon" ),
|
6083
|
+
iconpos: options.iconpos !== undefined ? options.iconpos : el.jqmData( "iconpos" ),
|
6084
|
+
theme: options.theme !== undefined ? options.theme : el.jqmData( "theme" ),
|
6085
|
+
inline: options.inline !== undefined ? options.inline : el.jqmData( "inline" ),
|
6086
|
+
shadow: options.shadow !== undefined ? options.shadow : el.jqmData( "shadow" ),
|
6087
|
+
corners: options.corners !== undefined ? options.corners : el.jqmData( "corners" ),
|
6088
|
+
iconshadow: options.iconshadow !== undefined ? options.iconshadow : el.jqmData( "iconshadow" )
|
6012
6089
|
}, options ),
|
6013
6090
|
|
6014
6091
|
// Classes Defined
|
6015
6092
|
innerClass = "ui-btn-inner",
|
6093
|
+
textClass = "ui-btn-text",
|
6016
6094
|
buttonClass, iconClass,
|
6017
|
-
|
6095
|
+
|
6096
|
+
// Button inner markup
|
6097
|
+
buttonInner = document.createElement( o.wrapperEls ),
|
6098
|
+
buttonText = document.createElement( o.wrapperEls ),
|
6099
|
+
buttonIcon = o.icon ? document.createElement( "span" ) : null;
|
6018
6100
|
|
6019
6101
|
if ( attachEvents ) {
|
6020
6102
|
attachEvents();
|
@@ -6059,15 +6141,33 @@ $.fn.buttonMarkup = function( options ) {
|
|
6059
6141
|
buttonClass += " ui-shadow";
|
6060
6142
|
}
|
6061
6143
|
|
6062
|
-
|
6063
|
-
|
6144
|
+
e.setAttribute( "data-" + $.mobile.ns + "theme", o.theme );
|
6145
|
+
el.addClass( buttonClass );
|
6064
6146
|
|
6065
|
-
|
6066
|
-
|
6067
|
-
"</D>" ).replace( /D/g, o.wrapperEls );
|
6147
|
+
buttonInner.className = innerClass;
|
6148
|
+
buttonInner.setAttribute("aria-hidden", "true");
|
6068
6149
|
|
6069
|
-
|
6070
|
-
|
6150
|
+
buttonText.className = textClass;
|
6151
|
+
buttonInner.appendChild( buttonText );
|
6152
|
+
|
6153
|
+
if ( buttonIcon ) {
|
6154
|
+
buttonIcon.className = iconClass;
|
6155
|
+
buttonInner.appendChild( buttonIcon );
|
6156
|
+
}
|
6157
|
+
|
6158
|
+
while ( e.firstChild ) {
|
6159
|
+
buttonText.appendChild( e.firstChild );
|
6160
|
+
}
|
6161
|
+
|
6162
|
+
e.appendChild( buttonInner );
|
6163
|
+
|
6164
|
+
// TODO obviously it would be nice to pull this element out instead of
|
6165
|
+
// retrieving it from the DOM again, but this change is much less obtrusive
|
6166
|
+
// and 1.0 draws nigh
|
6167
|
+
$.data( e, 'textWrapper', $( buttonText ) );
|
6168
|
+
}
|
6169
|
+
|
6170
|
+
return this;
|
6071
6171
|
};
|
6072
6172
|
|
6073
6173
|
$.fn.buttonMarkup.defaults = {
|
@@ -6079,14 +6179,23 @@ $.fn.buttonMarkup.defaults = {
|
|
6079
6179
|
};
|
6080
6180
|
|
6081
6181
|
function closestEnabledButton( element ) {
|
6082
|
-
|
6083
|
-
|
6084
|
-
|
6085
|
-
|
6086
|
-
|
6087
|
-
|
6088
|
-
|
6089
|
-
|
6182
|
+
var cname;
|
6183
|
+
|
6184
|
+
while ( element ) {
|
6185
|
+
// Note that we check for typeof className below because the element we
|
6186
|
+
// handed could be in an SVG DOM where className on SVG elements is defined to
|
6187
|
+
// be of a different type (SVGAnimatedString). We only operate on HTML DOM
|
6188
|
+
// elements, so we look for plain "string".
|
6189
|
+
|
6190
|
+
cname = ( typeof element.className === 'string' ) && element.className.split(' ');
|
6191
|
+
|
6192
|
+
if ( cname && $.inArray( "ui-btn", cname ) > -1 && $.inArray( "ui-disabled", cname ) < 0 ) {
|
6193
|
+
break;
|
6194
|
+
}
|
6195
|
+
element = element.parentNode;
|
6196
|
+
}
|
6197
|
+
|
6198
|
+
return element;
|
6090
6199
|
}
|
6091
6200
|
|
6092
6201
|
var attachEvents = function() {
|
@@ -6128,7 +6237,7 @@ var attachEvents = function() {
|
|
6128
6237
|
if ( btn ) {
|
6129
6238
|
$btn = $( btn );
|
6130
6239
|
theme = $btn.attr( "data-" + $.mobile.ns + "theme" );
|
6131
|
-
$btn.removeClass( "ui-btn-hover-" + theme ).addClass( "ui-btn-up-" + theme );
|
6240
|
+
$btn.removeClass( "ui-btn-hover-" + theme + " ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme );
|
6132
6241
|
}
|
6133
6242
|
}
|
6134
6243
|
});
|
@@ -6146,12 +6255,10 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6146
6255
|
});
|
6147
6256
|
|
6148
6257
|
})( jQuery );
|
6149
|
-
/*
|
6150
|
-
*
|
6151
|
-
* Copyright (c) jQuery Project
|
6152
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6153
|
-
* http://jquery.org/license
|
6258
|
+
/*
|
6259
|
+
* "controlgroup" plugin - corner-rounding for groups of buttons, checks, radios, etc
|
6154
6260
|
*/
|
6261
|
+
|
6155
6262
|
(function( $, undefined ) {
|
6156
6263
|
|
6157
6264
|
$.fn.controlgroup = function( options ) {
|
@@ -6164,9 +6271,9 @@ $.fn.controlgroup = function( options ) {
|
|
6164
6271
|
shadow: false,
|
6165
6272
|
excludeInvisible: true
|
6166
6273
|
}, options ),
|
6167
|
-
groupheading = $el.
|
6274
|
+
groupheading = $el.children( "legend" ),
|
6168
6275
|
flCorners = o.direction == "horizontal" ? [ "ui-corner-left", "ui-corner-right" ] : [ "ui-corner-top", "ui-corner-bottom" ],
|
6169
|
-
type = $el.find( "input
|
6276
|
+
type = $el.find( "input" ).first().attr( "type" );
|
6170
6277
|
|
6171
6278
|
// Replace legend with more stylable replacement div
|
6172
6279
|
if ( groupheading.length ) {
|
@@ -6183,7 +6290,7 @@ $.fn.controlgroup = function( options ) {
|
|
6183
6290
|
els.removeClass( "ui-btn-corner-all ui-shadow" )
|
6184
6291
|
.eq( 0 ).addClass( flCorners[ 0 ] )
|
6185
6292
|
.end()
|
6186
|
-
.
|
6293
|
+
.last().addClass( flCorners[ 1 ] ).addClass( "ui-controlgroup-last" );
|
6187
6294
|
}
|
6188
6295
|
|
6189
6296
|
flipClasses( $el.find( ".ui-btn" + ( o.excludeInvisible ? ":visible" : "" ) ) );
|
@@ -6201,10 +6308,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6201
6308
|
});
|
6202
6309
|
|
6203
6310
|
})(jQuery);/*
|
6204
|
-
*
|
6205
|
-
* Copyright (c) jQuery Project
|
6206
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6207
|
-
* http://jquery.org/license
|
6311
|
+
* "links" plugin - simple class additions for links
|
6208
6312
|
*/
|
6209
6313
|
|
6210
6314
|
(function( $, undefined ) {
|
@@ -6220,10 +6324,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6220
6324
|
});
|
6221
6325
|
|
6222
6326
|
})( jQuery );/*
|
6223
|
-
*
|
6224
|
-
* Copyright (c) jQuery Project
|
6225
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6226
|
-
* http://jquery.org/license
|
6327
|
+
* "fixHeaderFooter" plugin - on-demand positioning for headers,footers
|
6227
6328
|
*/
|
6228
6329
|
|
6229
6330
|
(function( $, undefined ) {
|
@@ -6602,10 +6703,7 @@ $( document ).bind( "pagecreate create", function( event ) {
|
|
6602
6703
|
|
6603
6704
|
})( jQuery );
|
6604
6705
|
/*
|
6605
|
-
*
|
6606
|
-
* Copyright (c) jQuery Project
|
6607
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6608
|
-
* http://jquery.org/license
|
6706
|
+
* "fixHeaderFooter" native plugin - Behavior for "fixed" headers,footers, and scrolling inner content
|
6609
6707
|
*/
|
6610
6708
|
|
6611
6709
|
(function( $, undefined ) {
|
@@ -6664,14 +6762,9 @@ $( document ).bind( "pagecreate", function( event ) {
|
|
6664
6762
|
});
|
6665
6763
|
|
6666
6764
|
})( jQuery );
|
6667
|
-
|
6668
|
-
|
6669
|
-
|
6670
|
-
*
|
6671
|
-
* Copyright 2010, jQuery Project
|
6672
|
-
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6673
|
-
* http://jquery.org/license
|
6674
|
-
*/
|
6765
|
+
/*
|
6766
|
+
* "init" - Initialize the framework
|
6767
|
+
*/
|
6675
6768
|
|
6676
6769
|
(function( $, window, undefined ) {
|
6677
6770
|
var $html = $( "html" ),
|