mobile_template 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/mobile_template/version.rb +1 -1
- data/mobile_template.gemspec +1 -1
- data/templates/assets/Gemfile +1 -1
- data/templates/assets/source/javascripts/vendor/cordova.js +2106 -1975
- data/templates/assets/source/javascripts/vendor/jquery.js +614 -477
- data/templates/assets/source/javascripts/vendor/jquery.mobile.js +519 -378
- data/templates/assets/source/stylesheets/vendor/jquery.mobile.css.scss +683 -502
- data/templates/cordova_android/VERSION +1 -1
- data/templates/cordova_android/bin/create +5 -1
- data/templates/cordova_android/bin/templates/project/cordova/create +5 -0
- data/templates/cordova_android/bin/templates/project/cordova/debug +1 -1
- data/templates/cordova_android/bin/templates/project/cordova/templates/project/AndroidManifest.xml +18 -25
- data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/index.html +6 -6
- data/templates/cordova_android/framework/assets/js/cordova.android.js +2106 -1975
- data/templates/cordova_android/framework/assets/www/index.html +1 -1
- data/templates/cordova_android/framework/build.xml +2 -42
- data/templates/cordova_android/framework/project.properties +1 -1
- data/templates/cordova_android/framework/res/drawable/splash.png +0 -0
- data/templates/cordova_android/framework/res/drawable-hdpi/icon.png +0 -0
- data/templates/cordova_android/framework/res/drawable-ldpi/icon.png +0 -0
- data/templates/cordova_android/framework/res/drawable-mdpi/icon.png +0 -0
- data/templates/cordova_android/framework/res/xml/plugins.xml +2 -1
- data/templates/cordova_android/framework/src/com/phonegap/api/PluginManager.java +1 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/AudioPlayer.java +24 -16
- data/templates/cordova_android/framework/src/org/apache/cordova/CameraLauncher.java +35 -10
- data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessor.java +2 -1
- data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessorSdk5.java +67 -65
- data/templates/cordova_android/framework/src/org/apache/cordova/ContactManager.java +51 -63
- data/templates/cordova_android/framework/src/org/apache/cordova/CordovaChromeClient.java +3 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/CordovaWebViewClient.java +6 -2
- data/templates/cordova_android/framework/src/org/apache/cordova/Device.java +108 -108
- data/templates/cordova_android/framework/src/org/apache/cordova/DroidGap.java +110 -77
- data/templates/cordova_android/framework/src/org/apache/cordova/FileTransfer.java +90 -44
- data/templates/cordova_android/framework/src/org/apache/cordova/FileUtils.java +20 -20
- data/templates/cordova_android/framework/src/org/apache/cordova/LinearLayoutSoftKeyboardDetect.java +2 -2
- data/templates/cordova_android/framework/src/org/apache/cordova/NetworkManager.java +7 -8
- data/templates/cordova_android/framework/src/org/apache/cordova/Notification.java +2 -2
- data/templates/cordova_android/framework/src/org/apache/cordova/SplashScreen.java +23 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/Storage.java +3 -3
- data/templates/cordova_android/framework/src/org/apache/cordova/api/CordovaInterface.java +2 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginEntry.java +119 -0
- data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginManager.java +260 -258
- data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginResult.java +2 -2
- data/templates/cordova_android/releasenotes.md +42 -0
- data/templates/cordova_android/test/.classpath +8 -0
- data/templates/cordova_android/test/.project +33 -0
- data/templates/cordova_android/test/AndroidManifest.xml +87 -0
- data/templates/cordova_android/test/README.md +23 -0
- data/templates/cordova_android/test/ant.properties +17 -0
- data/templates/cordova_android/test/assets/www/backbuttonmultipage/index.html +23 -0
- data/templates/cordova_android/test/assets/www/backbuttonmultipage/sample2.html +23 -0
- data/templates/cordova_android/test/assets/www/backbuttonmultipage/sample3.html +26 -0
- data/templates/cordova_android/test/assets/www/background/index.html +99 -0
- data/templates/cordova_android/test/assets/www/background/index2.html +98 -0
- data/templates/cordova_android/test/assets/www/cordova-1.6.0.js +4985 -0
- data/templates/cordova_android/test/assets/www/cordova.js +2 -0
- data/templates/cordova_android/test/assets/www/htmlnotfound/error.html +1 -0
- data/templates/cordova_android/test/assets/www/iframe/index.html +33 -0
- data/templates/cordova_android/test/assets/www/iframe/index2.html +24 -0
- data/templates/cordova_android/test/assets/www/index.html +47 -0
- data/templates/cordova_android/test/assets/www/jqmtabbackbutton/index.html +49 -0
- data/templates/cordova_android/test/assets/www/jqmtabbackbutton/tab1.html +29 -0
- data/templates/cordova_android/test/assets/www/jqmtabbackbutton/tab2.html +30 -0
- data/templates/cordova_android/test/assets/www/jqmtabbackbutton/tab3.html +30 -0
- data/templates/cordova_android/test/assets/www/lifecycle/index.html +108 -0
- data/templates/cordova_android/test/assets/www/lifecycle/index2.html +104 -0
- data/templates/cordova_android/test/assets/www/main.js +150 -0
- data/templates/cordova_android/test/assets/www/master.css +117 -0
- data/templates/cordova_android/test/assets/www/menus/index.html +29 -0
- data/templates/cordova_android/test/assets/www/splashscreen/index.html +22 -0
- data/templates/cordova_android/test/assets/www/userwebview/index.html +49 -0
- data/templates/cordova_android/test/assets/www/whitelist/index.html +29 -0
- data/templates/cordova_android/test/assets/www/whitelist/index2.html +23 -0
- data/templates/cordova_android/test/assets/www/xhr/index.html +48 -0
- data/templates/cordova_android/test/build.xml +85 -0
- data/templates/cordova_android/test/libs/cordova-1.6.0.jar +0 -0
- data/templates/cordova_android/test/project.properties +11 -0
- data/templates/cordova_android/{framework → test}/res/drawable/icon.png +0 -0
- data/templates/cordova_android/test/res/drawable/sandy.jpg +0 -0
- data/templates/cordova_android/test/res/drawable-hdpi/ic_launcher.png +0 -0
- data/templates/cordova_android/test/res/drawable-ldpi/ic_launcher.png +0 -0
- data/templates/cordova_android/test/res/drawable-mdpi/ic_launcher.png +0 -0
- data/templates/cordova_android/test/res/layout/main.xml +13 -0
- data/templates/cordova_android/test/res/values/strings.xml +4 -0
- data/templates/cordova_android/{bin/templates/project/cordova/templates/project → test}/res/xml/cordova.xml +0 -0
- data/templates/cordova_android/{bin/templates/project/cordova/templates/project → test}/res/xml/plugins.xml +1 -1
- data/templates/cordova_android/test/src/org/apache/cordova/test/ActivityPlugin.java +81 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/FixWebView.java +43 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/backbuttonmultipage.java +30 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/background.java +34 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/errorurl.java +32 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/htmlnotfound.java +31 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/iframe.java +30 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/jqmtabbackbutton.java +30 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/lifecycle.java +30 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/loading.java +31 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/menus.java +80 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/splashscreen.java +35 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/tests.java +32 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/timeout.java +34 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/userwebview.java +72 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/whitelist.java +51 -0
- data/templates/cordova_android/test/src/org/apache/cordova/test/xhr.java +30 -0
- metadata +83 -30
- data/templates/cordova_android/framework/assets/js/accelerometer.js +0 -137
- data/templates/cordova_android/framework/assets/js/app.js +0 -89
- data/templates/cordova_android/framework/assets/js/battery.js +0 -134
- data/templates/cordova_android/framework/assets/js/camera.js +0 -168
- data/templates/cordova_android/framework/assets/js/capture.js +0 -203
- data/templates/cordova_android/framework/assets/js/compass.js +0 -168
- data/templates/cordova_android/framework/assets/js/contact.js +0 -310
- data/templates/cordova_android/framework/assets/js/cordova.js.base +0 -924
- data/templates/cordova_android/framework/assets/js/crypto.js +0 -54
- data/templates/cordova_android/framework/assets/js/device.js +0 -83
- data/templates/cordova_android/framework/assets/js/file.js +0 -1082
- data/templates/cordova_android/framework/assets/js/filetransfer.js +0 -125
- data/templates/cordova_android/framework/assets/js/geolocation.js +0 -209
- data/templates/cordova_android/framework/assets/js/header.txt +0 -19
- data/templates/cordova_android/framework/assets/js/media.js +0 -233
- data/templates/cordova_android/framework/assets/js/network.js +0 -100
- data/templates/cordova_android/framework/assets/js/notification.js +0 -133
- data/templates/cordova_android/framework/assets/js/position.js +0 -100
- data/templates/cordova_android/framework/assets/js/storage.js +0 -439
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* jQuery Mobile Framework 1.1.0
|
2
|
+
* jQuery Mobile Framework 1.1.0 db342b1f315c282692791aa870455901fdb46a55
|
3
3
|
* http://jquerymobile.com
|
4
4
|
*
|
5
5
|
* Copyright 2011 (c) jQuery Project
|
@@ -84,7 +84,7 @@ function createVirtualEvent( event, eventType ) {
|
|
84
84
|
|
85
85
|
// addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280
|
86
86
|
// https://github.com/jquery/jquery-mobile/issues/3280
|
87
|
-
if ( t.search(
|
87
|
+
if ( t.search( /^(mouse|click)/ ) > -1 ) {
|
88
88
|
props = mouseEventProps;
|
89
89
|
}
|
90
90
|
|
@@ -1223,6 +1223,10 @@ $.widget( "mobile.widget", {
|
|
1223
1223
|
}
|
1224
1224
|
|
1225
1225
|
$widgetElements[ this.widgetName ]();
|
1226
|
+
},
|
1227
|
+
|
1228
|
+
raise: function( msg ) {
|
1229
|
+
throw "Widget [" + this.widgetName + "]: " + msg;
|
1226
1230
|
}
|
1227
1231
|
});
|
1228
1232
|
|
@@ -1236,7 +1240,7 @@ $.widget( "mobile.widget", {
|
|
1236
1240
|
$.mobile = $.extend( {}, {
|
1237
1241
|
|
1238
1242
|
// Version of the jQuery Mobile Framework
|
1239
|
-
version: "1.1.0
|
1243
|
+
version: "1.1.0",
|
1240
1244
|
|
1241
1245
|
// Namespace used framework-wide for data-attrs. Default is no namespace
|
1242
1246
|
ns: "",
|
@@ -1271,7 +1275,7 @@ $.widget( "mobile.widget", {
|
|
1271
1275
|
maxTransitionWidth: false,
|
1272
1276
|
|
1273
1277
|
// Minimum scroll distance that will be remembered when returning to a page
|
1274
|
-
minScrollBack:
|
1278
|
+
minScrollBack: 250,
|
1275
1279
|
|
1276
1280
|
// DEPRECATED: the following property is no longer in use, but defined until 2.0 to prevent conflicts
|
1277
1281
|
touchOverflowEnabled: false,
|
@@ -1307,6 +1311,10 @@ $.widget( "mobile.widget", {
|
|
1307
1311
|
// turn of binding to the native orientationchange due to android orientation behavior
|
1308
1312
|
orientationChangeEnabled: true,
|
1309
1313
|
|
1314
|
+
buttonMarkup: {
|
1315
|
+
hoverDelay: 200
|
1316
|
+
},
|
1317
|
+
|
1310
1318
|
// TODO might be useful upstream in jquery itself ?
|
1311
1319
|
keyCode: {
|
1312
1320
|
ALT: 18,
|
@@ -1385,7 +1393,7 @@ $.widget( "mobile.widget", {
|
|
1385
1393
|
|
1386
1394
|
var e = el[ 0 ],
|
1387
1395
|
ltr = "",
|
1388
|
-
re = /ui-(bar|body)-([a-z])\b/,
|
1396
|
+
re = /ui-(bar|body|overlay)-([a-z])\b/,
|
1389
1397
|
c, m;
|
1390
1398
|
|
1391
1399
|
while ( e ) {
|
@@ -1464,7 +1472,10 @@ $.widget( "mobile.widget", {
|
|
1464
1472
|
$.fn.jqmData = function( prop, value ) {
|
1465
1473
|
var result;
|
1466
1474
|
if ( typeof prop != "undefined" ) {
|
1467
|
-
|
1475
|
+
if ( prop ) {
|
1476
|
+
prop = $.mobile.nsNormalize( prop );
|
1477
|
+
}
|
1478
|
+
result = this.data.apply( this, arguments.length < 2 ? [ prop ] : [ prop, value ] );
|
1468
1479
|
}
|
1469
1480
|
return result;
|
1470
1481
|
};
|
@@ -1932,17 +1943,37 @@ $.event.special.swipe = {
|
|
1932
1943
|
// It seems that some device/browser vendors use window.orientation values 0 and 180 to
|
1933
1944
|
// denote the "default" orientation. For iOS devices, and most other smart-phones tested,
|
1934
1945
|
// the default orientation is always "portrait", but in some Android and RIM based tablets,
|
1935
|
-
// the default orientation is "landscape". The following code
|
1936
|
-
//
|
1937
|
-
//
|
1938
|
-
//
|
1946
|
+
// the default orientation is "landscape". The following code attempts to use the window
|
1947
|
+
// dimensions to figure out what the current orientation is, and then makes adjustments
|
1948
|
+
// to the to the portrait_map if necessary, so that we can properly decode the
|
1949
|
+
// window.orientation value whenever get_orientation() is called.
|
1950
|
+
//
|
1951
|
+
// Note that we used to use a media query to figure out what the orientation the browser
|
1952
|
+
// thinks it is in:
|
1953
|
+
//
|
1954
|
+
// initial_orientation_is_landscape = $.mobile.media("all and (orientation: landscape)");
|
1955
|
+
//
|
1956
|
+
// but there was an iPhone/iPod Touch bug beginning with iOS 4.2, up through iOS 5.1,
|
1957
|
+
// where the browser *ALWAYS* applied the landscape media query. This bug does not
|
1958
|
+
// happen on iPad.
|
1959
|
+
|
1939
1960
|
if ( $.support.orientation ) {
|
1940
1961
|
|
1941
|
-
//
|
1942
|
-
// Note that we've initialized the portrait map
|
1943
|
-
//
|
1944
|
-
//
|
1945
|
-
|
1962
|
+
// Check the window width and height to figure out what the current orientation
|
1963
|
+
// of the device is at this moment. Note that we've initialized the portrait map
|
1964
|
+
// values to 0 and 180, *AND* we purposely check for landscape so that if we guess
|
1965
|
+
// wrong, , we default to the assumption that portrait is the default orientation.
|
1966
|
+
// We use a threshold check below because on some platforms like iOS, the iPhone
|
1967
|
+
// form-factor can report a larger width than height if the user turns on the
|
1968
|
+
// developer console. The actual threshold value is somewhat arbitrary, we just
|
1969
|
+
// need to make sure it is large enough to exclude the developer console case.
|
1970
|
+
|
1971
|
+
var ww = window.innerWidth || $( window ).width(),
|
1972
|
+
wh = window.innerHeight || $( window ).height(),
|
1973
|
+
landscape_threshold = 50;
|
1974
|
+
|
1975
|
+
initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold;
|
1976
|
+
|
1946
1977
|
|
1947
1978
|
// Now check to see if the current window.orientation is 0 or 180.
|
1948
1979
|
initial_orientation_is_default = portrait_map[ window.orientation ];
|
@@ -2099,15 +2130,35 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
2099
2130
|
},
|
2100
2131
|
|
2101
2132
|
_create: function() {
|
2102
|
-
|
2133
|
+
|
2134
|
+
var self = this;
|
2135
|
+
|
2103
2136
|
// if false is returned by the callbacks do not create the page
|
2104
|
-
if(
|
2137
|
+
if( self._trigger( "beforecreate" ) === false ){
|
2105
2138
|
return false;
|
2106
2139
|
}
|
2107
2140
|
|
2108
|
-
|
2141
|
+
self.element
|
2109
2142
|
.attr( "tabindex", "0" )
|
2110
|
-
.addClass( "ui-page ui-body-" +
|
2143
|
+
.addClass( "ui-page ui-body-" + self.options.theme )
|
2144
|
+
.bind( "pagebeforehide", function(){
|
2145
|
+
self.removeContainerBackground();
|
2146
|
+
} )
|
2147
|
+
.bind( "pagebeforeshow", function(){
|
2148
|
+
self.setContainerBackground();
|
2149
|
+
} );
|
2150
|
+
|
2151
|
+
},
|
2152
|
+
|
2153
|
+
removeContainerBackground: function(){
|
2154
|
+
$.mobile.pageContainer.removeClass( "ui-overlay-" + $.mobile.getInheritedTheme( this.element.parent() ) );
|
2155
|
+
},
|
2156
|
+
|
2157
|
+
// set the page container background to the page theme
|
2158
|
+
setContainerBackground: function( theme ){
|
2159
|
+
if( this.options.theme ){
|
2160
|
+
$.mobile.pageContainer.addClass( "ui-overlay-" + ( theme || this.options.theme ) );
|
2161
|
+
}
|
2111
2162
|
},
|
2112
2163
|
|
2113
2164
|
keepNativeSelector: function() {
|
@@ -2126,82 +2177,140 @@ $.widget( "mobile.page", $.mobile.widget, {
|
|
2126
2177
|
|
2127
2178
|
(function( $, window, undefined ) {
|
2128
2179
|
|
2129
|
-
|
2180
|
+
var createHandler = function( sequential ){
|
2130
2181
|
|
2131
|
-
//
|
2132
|
-
if(
|
2133
|
-
|
2182
|
+
// Default to sequential
|
2183
|
+
if( sequential === undefined ){
|
2184
|
+
sequential = true;
|
2134
2185
|
}
|
2135
2186
|
|
2136
|
-
|
2137
|
-
|
2138
|
-
|
2139
|
-
|
2140
|
-
|
2141
|
-
|
2142
|
-
|
2143
|
-
|
2144
|
-
|
2145
|
-
|
2146
|
-
|
2187
|
+
return function( name, reverse, $to, $from ) {
|
2188
|
+
|
2189
|
+
var deferred = new $.Deferred(),
|
2190
|
+
reverseClass = reverse ? " reverse" : "",
|
2191
|
+
active = $.mobile.urlHistory.getActive(),
|
2192
|
+
toScroll = active.lastScroll || $.mobile.defaultHomeScroll,
|
2193
|
+
screenHeight = $.mobile.getScreenHeight(),
|
2194
|
+
maxTransitionOverride = $.mobile.maxTransitionWidth !== false && $( window ).width() > $.mobile.maxTransitionWidth,
|
2195
|
+
none = !$.support.cssTransitions || maxTransitionOverride || !name || name === "none",
|
2196
|
+
toggleViewportClass = function(){
|
2197
|
+
$.mobile.pageContainer.toggleClass( "ui-mobile-viewport-transitioning viewport-" + name );
|
2198
|
+
},
|
2199
|
+
scrollPage = function(){
|
2200
|
+
// By using scrollTo instead of silentScroll, we can keep things better in order
|
2201
|
+
// Just to be precautios, disable scrollstart listening like silentScroll would
|
2202
|
+
$.event.special.scrollstart.enabled = false;
|
2203
|
+
|
2204
|
+
window.scrollTo( 0, toScroll );
|
2205
|
+
|
2206
|
+
// reenable scrollstart listening like silentScroll would
|
2207
|
+
setTimeout(function() {
|
2208
|
+
$.event.special.scrollstart.enabled = true;
|
2209
|
+
}, 150 );
|
2210
|
+
},
|
2211
|
+
cleanFrom = function(){
|
2147
2212
|
$from
|
2148
2213
|
.removeClass( $.mobile.activePageClass + " out in reverse " + name )
|
2149
2214
|
.height( "" );
|
2150
|
-
}
|
2151
|
-
|
2152
|
-
|
2153
|
-
|
2154
|
-
|
2155
|
-
|
2156
|
-
|
2215
|
+
},
|
2216
|
+
startOut = function(){
|
2217
|
+
// if it's not sequential, call the doneOut transition to start the TO page animating in simultaneously
|
2218
|
+
if( !sequential ){
|
2219
|
+
doneOut();
|
2220
|
+
}
|
2221
|
+
else {
|
2222
|
+
$from.animationComplete( doneOut );
|
2223
|
+
}
|
2224
|
+
|
2225
|
+
// Set the from page's height and start it transitioning out
|
2226
|
+
// Note: setting an explicit height helps eliminate tiling in the transitions
|
2227
|
+
$from
|
2228
|
+
.height( screenHeight + $(window ).scrollTop() )
|
2229
|
+
.addClass( name + " out" + reverseClass );
|
2230
|
+
},
|
2157
2231
|
|
2158
|
-
|
2159
|
-
$.mobile.focusPage( $to );
|
2232
|
+
doneOut = function() {
|
2160
2233
|
|
2161
|
-
|
2162
|
-
|
2234
|
+
if ( $from && sequential ) {
|
2235
|
+
cleanFrom();
|
2236
|
+
}
|
2163
2237
|
|
2164
|
-
|
2238
|
+
startIn();
|
2239
|
+
},
|
2165
2240
|
|
2166
|
-
|
2241
|
+
startIn = function(){
|
2167
2242
|
|
2168
|
-
|
2169
|
-
doneIn();
|
2170
|
-
}
|
2243
|
+
$to.addClass( $.mobile.activePageClass );
|
2171
2244
|
|
2172
|
-
|
2173
|
-
|
2174
|
-
doneIn = function() {
|
2175
|
-
$to
|
2176
|
-
.removeClass( "out in reverse " + name )
|
2177
|
-
.height( "" )
|
2178
|
-
.parent().removeClass( viewportClass );
|
2245
|
+
// Send focus to page as it is now display: block
|
2246
|
+
$.mobile.focusPage( $to );
|
2179
2247
|
|
2180
|
-
|
2181
|
-
|
2248
|
+
// Set to page height
|
2249
|
+
$to.height( screenHeight + toScroll );
|
2250
|
+
|
2251
|
+
scrollPage();
|
2252
|
+
|
2253
|
+
if( !none ){
|
2254
|
+
$to.animationComplete( doneIn );
|
2255
|
+
}
|
2256
|
+
|
2257
|
+
$to.addClass( name + " in" + reverseClass );
|
2258
|
+
|
2259
|
+
if( none ){
|
2260
|
+
doneIn();
|
2261
|
+
}
|
2262
|
+
|
2263
|
+
},
|
2182
2264
|
|
2183
|
-
|
2184
|
-
|
2265
|
+
doneIn = function() {
|
2266
|
+
|
2267
|
+
if ( !sequential ) {
|
2268
|
+
|
2269
|
+
if( $from ){
|
2270
|
+
cleanFrom();
|
2271
|
+
}
|
2272
|
+
}
|
2273
|
+
|
2274
|
+
$to
|
2275
|
+
.removeClass( "out in reverse " + name )
|
2276
|
+
.height( "" );
|
2277
|
+
|
2278
|
+
toggleViewportClass();
|
2279
|
+
|
2280
|
+
// In some browsers (iOS5), 3D transitions block the ability to scroll to the desired location during transition
|
2281
|
+
// This ensures we jump to that spot after the fact, if we aren't there already.
|
2282
|
+
if( $( window ).scrollTop() !== toScroll ){
|
2283
|
+
scrollPage();
|
2284
|
+
}
|
2285
|
+
|
2286
|
+
deferred.resolve( name, reverse, $to, $from, true );
|
2287
|
+
};
|
2288
|
+
|
2289
|
+
toggleViewportClass();
|
2185
2290
|
|
2186
|
-
|
2187
|
-
|
2188
|
-
|
2189
|
-
|
2190
|
-
|
2191
|
-
|
2192
|
-
else {
|
2193
|
-
doneOut();
|
2194
|
-
}
|
2291
|
+
if ( $from && !none ) {
|
2292
|
+
startOut();
|
2293
|
+
}
|
2294
|
+
else {
|
2295
|
+
doneOut();
|
2296
|
+
}
|
2195
2297
|
|
2196
|
-
|
2298
|
+
return deferred.promise();
|
2299
|
+
};
|
2197
2300
|
}
|
2198
2301
|
|
2302
|
+
// generate the handlers from the above
|
2303
|
+
var sequentialHandler = createHandler(),
|
2304
|
+
simultaneousHandler = createHandler( false );
|
2305
|
+
|
2199
2306
|
// Make our transition handler the public default.
|
2200
|
-
$.mobile.defaultTransitionHandler =
|
2307
|
+
$.mobile.defaultTransitionHandler = sequentialHandler;
|
2201
2308
|
|
2202
2309
|
//transition handler dictionary for 3rd party transitions
|
2203
2310
|
$.mobile.transitionHandlers = {
|
2204
|
-
"default": $.mobile.defaultTransitionHandler
|
2311
|
+
"default": $.mobile.defaultTransitionHandler,
|
2312
|
+
"sequential": sequentialHandler,
|
2313
|
+
"simultaneous": simultaneousHandler
|
2205
2314
|
};
|
2206
2315
|
|
2207
2316
|
$.mobile.transitionFallbacks = {};
|
@@ -2683,7 +2792,12 @@ $.mobile.transitionFallbacks = {};
|
|
2683
2792
|
|
2684
2793
|
//clear page loader
|
2685
2794
|
$.mobile.hidePageLoadingMsg();
|
2686
|
-
|
2795
|
+
|
2796
|
+
// If transition is defined, check if css 3D transforms are supported, and if not, if a fallback is specified
|
2797
|
+
if( transition && !$.support.cssTransform3d && $.mobile.transitionFallbacks[ transition ] ){
|
2798
|
+
transition = $.mobile.transitionFallbacks[ transition ];
|
2799
|
+
}
|
2800
|
+
|
2687
2801
|
//find the transition handler for the specified transition. If there
|
2688
2802
|
//isn't one in our transitionHandlers dictionary, use the default one.
|
2689
2803
|
//call the handler immediately to kick-off the transition.
|
@@ -2706,21 +2820,20 @@ $.mobile.transitionFallbacks = {};
|
|
2706
2820
|
|
2707
2821
|
//simply set the active page's minimum height to screen height, depending on orientation
|
2708
2822
|
function getScreenHeight(){
|
2709
|
-
|
2710
|
-
|
2711
|
-
|
2712
|
-
screenHeight = port ? screen.availHeight : screen.availWidth,
|
2713
|
-
winHeight = Math.max( winMin, $( window ).height() ),
|
2714
|
-
pageMin = Math.min( screenHeight, winHeight );
|
2715
|
-
|
2716
|
-
return pageMin;
|
2823
|
+
// Native innerHeight returns more accurate value for this across platforms,
|
2824
|
+
// jQuery version is here as a normalized fallback for platforms like Symbian
|
2825
|
+
return window.innerHeight || $( window ).height();
|
2717
2826
|
}
|
2718
2827
|
|
2719
2828
|
$.mobile.getScreenHeight = getScreenHeight;
|
2720
2829
|
|
2721
2830
|
//simply set the active page's minimum height to screen height, depending on orientation
|
2722
2831
|
function resetActivePageHeight(){
|
2723
|
-
$( "." + $.mobile.activePageClass )
|
2832
|
+
var aPage = $( "." + $.mobile.activePageClass ),
|
2833
|
+
aPagePadT = parseFloat( aPage.css( "padding-top" ) ),
|
2834
|
+
aPagePadB = parseFloat( aPage.css( "padding-bottom" ) );
|
2835
|
+
|
2836
|
+
aPage.css( "min-height", getScreenHeight() - aPagePadT - aPagePadB );
|
2724
2837
|
}
|
2725
2838
|
|
2726
2839
|
//shared page enhancements
|
@@ -3815,6 +3928,10 @@ $.mobile.transitionFallbacks.pop = "fade";
|
|
3815
3928
|
|
3816
3929
|
(function( $, window, undefined ) {
|
3817
3930
|
|
3931
|
+
// Use the simultaneous transition handler for slide transitions
|
3932
|
+
$.mobile.transitionHandlers.slide = $.mobile.transitionHandlers.simultaneous;
|
3933
|
+
|
3934
|
+
// Set the slide transition's fallback to "fade"
|
3818
3935
|
$.mobile.transitionFallbacks.slide = "fade";
|
3819
3936
|
|
3820
3937
|
})( jQuery, this );
|
@@ -3943,14 +4060,15 @@ $.widget( "mobile.dialog", $.mobile.widget, {
|
|
3943
4060
|
// Set aria role
|
3944
4061
|
$el
|
3945
4062
|
.wrapInner( dialogWrap )
|
3946
|
-
.
|
3947
|
-
.
|
3948
|
-
|
3949
|
-
|
3950
|
-
.
|
3951
|
-
|
3952
|
-
|
3953
|
-
.
|
4063
|
+
.children()
|
4064
|
+
.find( ":jqmData(role='header')" )
|
4065
|
+
.prepend( headerCloseButton )
|
4066
|
+
.end()
|
4067
|
+
.children( ':first-child')
|
4068
|
+
.addClass( "ui-corner-top" )
|
4069
|
+
.end()
|
4070
|
+
.children( ":last-child" )
|
4071
|
+
.addClass( "ui-corner-bottom" );
|
3954
4072
|
|
3955
4073
|
// this must be an anonymous function so that select menu dialogs can replace
|
3956
4074
|
// the close method. This is a change from previously just defining data-rel=back
|
@@ -3981,18 +4099,13 @@ $.widget( "mobile.dialog", $.mobile.widget, {
|
|
3981
4099
|
})
|
3982
4100
|
.bind( "pagehide", function( e, ui ) {
|
3983
4101
|
$( this ).find( "." + $.mobile.activeBtnClass ).removeClass( $.mobile.activeBtnClass );
|
3984
|
-
|
3985
|
-
// if there's an overlay theme, we're going to remove it from the page container.
|
3986
|
-
// First though, check that the incoming page isn't a dialog with the same theme. If so, don't remove.
|
3987
|
-
if( self.options.overlayTheme ){
|
3988
|
-
if( !ui.nextPage || !ui.nextPage.is( ".ui-dialog.ui-overlay-" + self.options.overlayTheme ) ){
|
3989
|
-
$.mobile.pageContainer.removeClass( "ui-overlay-" + self.options.overlayTheme );
|
3990
|
-
}
|
3991
|
-
}
|
3992
4102
|
})
|
4103
|
+
// Override the theme set by the page plugin on pageshow
|
3993
4104
|
.bind( "pagebeforeshow", function(){
|
3994
4105
|
if( self.options.overlayTheme ){
|
3995
|
-
|
4106
|
+
self.element
|
4107
|
+
.page( "removeContainerBackground" )
|
4108
|
+
.page( "setContainerBackground", self.options.overlayTheme );
|
3996
4109
|
}
|
3997
4110
|
});
|
3998
4111
|
},
|
@@ -4092,7 +4205,7 @@ $.fn.buttonMarkup = function( options ) {
|
|
4092
4205
|
o = $.extend( {}, $.fn.buttonMarkup.defaults, {
|
4093
4206
|
icon: options.icon !== undefined ? options.icon : el.jqmData( "icon" ),
|
4094
4207
|
iconpos: options.iconpos !== undefined ? options.iconpos : el.jqmData( "iconpos" ),
|
4095
|
-
theme: options.theme !== undefined ? options.theme : el.jqmData( "theme" ),
|
4208
|
+
theme: options.theme !== undefined ? options.theme : el.jqmData( "theme" ) || $.mobile.getInheritedTheme( el, "c" ),
|
4096
4209
|
inline: options.inline !== undefined ? options.inline : el.jqmData( "inline" ),
|
4097
4210
|
shadow: options.shadow !== undefined ? options.shadow : el.jqmData( "shadow" ),
|
4098
4211
|
corners: options.corners !== undefined ? options.corners : el.jqmData( "corners" ),
|
@@ -4116,7 +4229,7 @@ $.fn.buttonMarkup = function( options ) {
|
|
4116
4229
|
});
|
4117
4230
|
|
4118
4231
|
// Check if this element is already enhanced
|
4119
|
-
buttonElements = $.data(((e.tagName === "INPUT" || e.tagName === "BUTTON") ? e.parentNode : e), "buttonElements")
|
4232
|
+
buttonElements = $.data(((e.tagName === "INPUT" || e.tagName === "BUTTON") ? e.parentNode : e), "buttonElements");
|
4120
4233
|
|
4121
4234
|
if (buttonElements) {
|
4122
4235
|
e = buttonElements.outer;
|
@@ -4136,24 +4249,28 @@ $.fn.buttonMarkup = function( options ) {
|
|
4136
4249
|
if ( attachEvents && !buttonElements) {
|
4137
4250
|
attachEvents();
|
4138
4251
|
}
|
4139
|
-
|
4140
|
-
// if not, try to find closest theme container
|
4252
|
+
|
4253
|
+
// if not, try to find closest theme container
|
4141
4254
|
if ( !o.theme ) {
|
4142
|
-
o.theme = $.mobile.getInheritedTheme( el, "c" );
|
4143
|
-
}
|
4255
|
+
o.theme = $.mobile.getInheritedTheme( el, "c" );
|
4256
|
+
}
|
4144
4257
|
|
4145
4258
|
buttonClass = "ui-btn ui-btn-up-" + o.theme;
|
4259
|
+
buttonClass += o.inline ? " ui-btn-inline" : "";
|
4260
|
+
buttonClass += o.shadow ? " ui-shadow" : "";
|
4261
|
+
buttonClass += o.corners ? " ui-btn-corner-all" : "";
|
4146
4262
|
|
4147
|
-
if ( o.
|
4148
|
-
|
4263
|
+
if ( o.mini !== undefined ) {
|
4264
|
+
// Used to control styling in headers/footers, where buttons default to `mini` style.
|
4265
|
+
buttonClass += o.mini ? " ui-mini" : " ui-fullsize";
|
4149
4266
|
}
|
4150
|
-
|
4151
|
-
if ( o.
|
4152
|
-
|
4153
|
-
|
4154
|
-
buttonClass += " ui-fullsize"; // Used to control styling in headers/footers, where buttons default to `mini` style.
|
4267
|
+
|
4268
|
+
if ( o.inline !== undefined ) {
|
4269
|
+
// Used to control styling in headers/footers, where buttons default to `mini` style.
|
4270
|
+
buttonClass += o.inline === false ? " ui-btn-block" : " ui-btn-inline";
|
4155
4271
|
}
|
4156
|
-
|
4272
|
+
|
4273
|
+
|
4157
4274
|
if ( o.icon ) {
|
4158
4275
|
o.icon = "ui-icon-" + o.icon;
|
4159
4276
|
o.iconpos = o.iconpos || "left";
|
@@ -4172,37 +4289,39 @@ $.fn.buttonMarkup = function( options ) {
|
|
4172
4289
|
el.attr( "title", el.getEncodedText() );
|
4173
4290
|
}
|
4174
4291
|
}
|
4292
|
+
|
4293
|
+
innerClass += o.corners ? " ui-btn-corner-all" : "";
|
4175
4294
|
|
4176
|
-
if ( o.
|
4177
|
-
|
4178
|
-
innerClass += " ui-btn-corner-all";
|
4295
|
+
if ( o.iconpos && o.iconpos === "notext" && !el.attr( "title" ) ) {
|
4296
|
+
el.attr( "title", el.getEncodedText() );
|
4179
4297
|
}
|
4180
4298
|
|
4181
|
-
if (
|
4182
|
-
|
4299
|
+
if ( buttonElements ) {
|
4300
|
+
el.removeClass( buttonElements.bcls || "" );
|
4183
4301
|
}
|
4184
|
-
|
4185
|
-
if (buttonElements)
|
4186
|
-
el.removeClass((buttonElements.bcls || ""));
|
4187
4302
|
el.removeClass( "ui-link" ).addClass( buttonClass );
|
4188
4303
|
|
4189
4304
|
buttonInner.className = innerClass;
|
4190
4305
|
|
4191
4306
|
buttonText.className = textClass;
|
4192
|
-
if (!buttonElements)
|
4307
|
+
if ( !buttonElements ) {
|
4193
4308
|
buttonInner.appendChild( buttonText );
|
4309
|
+
}
|
4194
4310
|
if ( buttonIcon ) {
|
4195
4311
|
buttonIcon.className = iconClass;
|
4196
|
-
if (!(buttonElements && buttonElements.icon))
|
4312
|
+
if ( !(buttonElements && buttonElements.icon) ) {
|
4313
|
+
buttonIcon.appendChild( document.createTextNode("\u00a0") );
|
4197
4314
|
buttonInner.appendChild( buttonIcon );
|
4315
|
+
}
|
4198
4316
|
}
|
4199
4317
|
|
4200
4318
|
while ( e.firstChild && !buttonElements) {
|
4201
4319
|
buttonText.appendChild( e.firstChild );
|
4202
4320
|
}
|
4203
4321
|
|
4204
|
-
if (!buttonElements)
|
4322
|
+
if ( !buttonElements ) {
|
4205
4323
|
e.appendChild( buttonInner );
|
4324
|
+
}
|
4206
4325
|
|
4207
4326
|
// Assign a structure containing the elements of this button to the elements of this button. This
|
4208
4327
|
// will allow us to recognize this as an already-enhanced button in future calls to buttonMarkup().
|
@@ -4217,8 +4336,9 @@ $.fn.buttonMarkup = function( options ) {
|
|
4217
4336
|
$.data(e, 'buttonElements', buttonElements);
|
4218
4337
|
$.data(buttonInner, 'buttonElements', buttonElements);
|
4219
4338
|
$.data(buttonText, 'buttonElements', buttonElements);
|
4220
|
-
if (buttonIcon)
|
4339
|
+
if (buttonIcon) {
|
4221
4340
|
$.data(buttonIcon, 'buttonElements', buttonElements);
|
4341
|
+
}
|
4222
4342
|
}
|
4223
4343
|
|
4224
4344
|
return this;
|
@@ -4228,7 +4348,6 @@ $.fn.buttonMarkup.defaults = {
|
|
4228
4348
|
corners: true,
|
4229
4349
|
shadow: true,
|
4230
4350
|
iconshadow: true,
|
4231
|
-
inline: false,
|
4232
4351
|
wrapperEls: "span"
|
4233
4352
|
};
|
4234
4353
|
|
@@ -4252,65 +4371,51 @@ function closestEnabledButton( element ) {
|
|
4252
4371
|
}
|
4253
4372
|
|
4254
4373
|
var attachEvents = function() {
|
4255
|
-
var hoverDelay =
|
4256
|
-
hov, foc;
|
4257
|
-
$( document ).bind( {
|
4258
|
-
"vmousedown": function( event ) {
|
4259
|
-
var btn = closestEnabledButton( event.target ),
|
4260
|
-
$btn, theme;
|
4374
|
+
var hoverDelay = $.mobile.buttonMarkup.hoverDelay, hov, foc;
|
4261
4375
|
|
4262
|
-
|
4263
|
-
|
4376
|
+
$( document ).bind( {
|
4377
|
+
"vmousedown vmousecancel vmouseup vmouseover vmouseout focus blur scrollstart": function( event ) {
|
4378
|
+
var theme,
|
4379
|
+
$btn = $( closestEnabledButton( event.target ) ),
|
4380
|
+
evt = event.type;
|
4381
|
+
|
4382
|
+
if ( $btn.length ) {
|
4264
4383
|
theme = $btn.attr( "data-" + $.mobile.ns + "theme" );
|
4265
|
-
|
4266
|
-
if(
|
4267
|
-
|
4384
|
+
|
4385
|
+
if ( evt === "vmousedown" ) {
|
4386
|
+
if ( $.support.touch ) {
|
4387
|
+
hov = setTimeout(function() {
|
4388
|
+
$btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme );
|
4389
|
+
}, hoverDelay );
|
4390
|
+
} else {
|
4268
4391
|
$btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-down-" + theme );
|
4269
|
-
}
|
4270
|
-
} else {
|
4271
|
-
$btn.removeClass( "ui-btn-
|
4272
|
-
}
|
4273
|
-
|
4274
|
-
|
4275
|
-
|
4276
|
-
|
4277
|
-
|
4278
|
-
|
4279
|
-
if ( btn ) {
|
4280
|
-
$btn = $( btn );
|
4281
|
-
theme = $btn.attr( "data-" + $.mobile.ns + "theme" );
|
4282
|
-
$btn.removeClass( "ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme );
|
4283
|
-
}
|
4284
|
-
},
|
4285
|
-
"vmouseover focus": function( event ) {
|
4286
|
-
var btn = closestEnabledButton( event.target ),
|
4287
|
-
$btn, theme;
|
4288
|
-
|
4289
|
-
if ( btn ) {
|
4290
|
-
$btn = $( btn );
|
4291
|
-
theme = $btn.attr( "data-" + $.mobile.ns + "theme" );
|
4292
|
-
|
4293
|
-
if( $.support.touch ) {
|
4294
|
-
foc = setTimeout(function() {
|
4392
|
+
}
|
4393
|
+
} else if ( evt === "vmousecancel" || evt === "vmouseup" ) {
|
4394
|
+
$btn.removeClass( "ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme );
|
4395
|
+
} else if ( evt === "vmouseover" || evt === "focus" ) {
|
4396
|
+
if ( $.support.touch ) {
|
4397
|
+
foc = setTimeout(function() {
|
4398
|
+
$btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme );
|
4399
|
+
}, hoverDelay );
|
4400
|
+
} else {
|
4295
4401
|
$btn.removeClass( "ui-btn-up-" + theme ).addClass( "ui-btn-hover-" + theme );
|
4296
|
-
}
|
4297
|
-
} else {
|
4298
|
-
$btn.removeClass( "ui-btn-
|
4402
|
+
}
|
4403
|
+
} else if ( evt === "vmouseout" || evt === "blur" || evt === "scrollstart" ) {
|
4404
|
+
$btn.removeClass( "ui-btn-hover-" + theme + " ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme );
|
4405
|
+
if ( hov ) {
|
4406
|
+
clearTimeout( hov );
|
4407
|
+
}
|
4408
|
+
if ( foc ) {
|
4409
|
+
clearTimeout( foc );
|
4410
|
+
}
|
4299
4411
|
}
|
4300
4412
|
}
|
4301
4413
|
},
|
4302
|
-
"
|
4303
|
-
|
4304
|
-
|
4305
|
-
|
4306
|
-
|
4307
|
-
$btn = $( btn );
|
4308
|
-
theme = $btn.attr( "data-" + $.mobile.ns + "theme" );
|
4309
|
-
$btn.removeClass( "ui-btn-hover-" + theme + " ui-btn-down-" + theme ).addClass( "ui-btn-up-" + theme );
|
4310
|
-
|
4311
|
-
hov && clearTimeout( hov );
|
4312
|
-
foc && clearTimeout( foc );
|
4313
|
-
}
|
4414
|
+
"focusin focus": function( event ){
|
4415
|
+
$( closestEnabledButton( event.target ) ).addClass( $.mobile.focusClass );
|
4416
|
+
},
|
4417
|
+
"focusout blur": function( event ){
|
4418
|
+
$( closestEnabledButton( event.target ) ).removeClass( $.mobile.focusClass );
|
4314
4419
|
}
|
4315
4420
|
});
|
4316
4421
|
|
@@ -4371,20 +4476,22 @@ $( document ).delegate( ":jqmData(role='page'), :jqmData(role='dialog')", "pagec
|
|
4371
4476
|
// Add ARIA role
|
4372
4477
|
.attr( "role", role === "header" ? "banner" : "contentinfo" );
|
4373
4478
|
|
4374
|
-
|
4375
|
-
|
4376
|
-
|
4377
|
-
|
4479
|
+
if( role === "header") {
|
4480
|
+
// Right,left buttons
|
4481
|
+
$headeranchors = $this.children( "a" );
|
4482
|
+
leftbtn = $headeranchors.hasClass( "ui-btn-left" );
|
4483
|
+
rightbtn = $headeranchors.hasClass( "ui-btn-right" );
|
4378
4484
|
|
4379
|
-
|
4485
|
+
leftbtn = leftbtn || $headeranchors.eq( 0 ).not( ".ui-btn-right" ).addClass( "ui-btn-left" ).length;
|
4380
4486
|
|
4381
|
-
|
4487
|
+
rightbtn = rightbtn || $headeranchors.eq( 1 ).addClass( "ui-btn-right" ).length;
|
4488
|
+
}
|
4382
4489
|
|
4383
4490
|
// Auto-add back btn on pages beyond first view
|
4384
4491
|
if ( o.addBackBtn &&
|
4385
4492
|
role === "header" &&
|
4386
4493
|
$( ".ui-page" ).length > 1 &&
|
4387
|
-
$
|
4494
|
+
$page.jqmData( "url" ) !== $.mobile.path.stripHash( location.hash ) &&
|
4388
4495
|
!leftbtn ) {
|
4389
4496
|
|
4390
4497
|
backBtn = $( "<a href='#' class='ui-btn-left' data-"+ $.mobile.ns +"rel='back' data-"+ $.mobile.ns +"icon='arrow-l'>"+ o.backBtnText +"</a>" )
|
@@ -4398,7 +4505,6 @@ $( document ).delegate( ":jqmData(role='page'), :jqmData(role='dialog')", "pagec
|
|
4398
4505
|
.addClass( "ui-title" )
|
4399
4506
|
// Regardless of h element number in src, it becomes h1 for the enhanced page
|
4400
4507
|
.attr({
|
4401
|
-
"tabindex": "0",
|
4402
4508
|
"role": "heading",
|
4403
4509
|
"aria-level": "1"
|
4404
4510
|
});
|
@@ -4449,18 +4555,18 @@ $.widget( "mobile.collapsible", $.mobile.widget, {
|
|
4449
4555
|
if ( collapsibleSet.length ) {
|
4450
4556
|
// Inherit the theme from collapsible-set
|
4451
4557
|
if ( !o.theme ) {
|
4452
|
-
o.theme = collapsibleSet.jqmData(
|
4558
|
+
o.theme = collapsibleSet.jqmData("theme") || $.mobile.getInheritedTheme( collapsibleSet, "c" );
|
4453
4559
|
}
|
4454
4560
|
// Inherit the content-theme from collapsible-set
|
4455
4561
|
if ( !o.contentTheme ) {
|
4456
4562
|
o.contentTheme = collapsibleSet.jqmData( "content-theme" );
|
4457
4563
|
}
|
4458
|
-
|
4459
|
-
|
4460
|
-
|
4461
|
-
|
4462
|
-
|
4463
|
-
|
4564
|
+
|
4565
|
+
// Gets the preference icon position in the set
|
4566
|
+
if ( !o.iconPos ) {
|
4567
|
+
o.iconPos = collapsibleSet.jqmData( "iconpos" );
|
4568
|
+
}
|
4569
|
+
|
4464
4570
|
if( !o.mini ) {
|
4465
4571
|
o.mini = collapsibleSet.jqmData( "mini" );
|
4466
4572
|
}
|
@@ -4484,7 +4590,7 @@ $.widget( "mobile.collapsible", $.mobile.widget, {
|
|
4484
4590
|
mini: o.mini,
|
4485
4591
|
theme: o.theme
|
4486
4592
|
})
|
4487
|
-
.add( ".ui-btn-inner" )
|
4593
|
+
.add( ".ui-btn-inner", $el )
|
4488
4594
|
.addClass( "ui-corner-top ui-corner-bottom" );
|
4489
4595
|
|
4490
4596
|
//events
|
@@ -4553,13 +4659,17 @@ $.widget( "mobile.collapsibleset", $.mobile.widget, {
|
|
4553
4659
|
|
4554
4660
|
// Inherit the theme from collapsible-set
|
4555
4661
|
if ( !o.theme ) {
|
4556
|
-
o.theme =
|
4662
|
+
o.theme = $.mobile.getInheritedTheme( $el, "c" );
|
4557
4663
|
}
|
4558
4664
|
// Inherit the content-theme from collapsible-set
|
4559
4665
|
if ( !o.contentTheme ) {
|
4560
4666
|
o.contentTheme = $el.jqmData( "content-theme" );
|
4561
4667
|
}
|
4562
4668
|
|
4669
|
+
if ( !o.corners ) {
|
4670
|
+
o.corners = $el.jqmData( "corners" ) === undefined ? true : false;
|
4671
|
+
}
|
4672
|
+
|
4563
4673
|
// Initialize the collapsible set if it's not already initialized
|
4564
4674
|
if ( !$el.jqmData( "collapsiblebound" ) ) {
|
4565
4675
|
$el
|
@@ -4592,6 +4702,7 @@ $.widget( "mobile.collapsibleset", $.mobile.widget, {
|
|
4592
4702
|
|
4593
4703
|
refresh: function() {
|
4594
4704
|
var $el = this.element,
|
4705
|
+
o = this.options,
|
4595
4706
|
collapsiblesInSet = $el.children( ":jqmData(role='collapsible')" );
|
4596
4707
|
|
4597
4708
|
$.mobile.collapsible.prototype.enhance( collapsiblesInSet.not( ".ui-collapsible" ) );
|
@@ -4607,7 +4718,7 @@ $.widget( "mobile.collapsibleset", $.mobile.widget, {
|
|
4607
4718
|
collapsiblesInSet.first()
|
4608
4719
|
.find( "a" )
|
4609
4720
|
.first()
|
4610
|
-
.addClass( "ui-corner-top" )
|
4721
|
+
.addClass( o.corners ? "ui-corner-top" : "" )
|
4611
4722
|
.find( ".ui-btn-inner" )
|
4612
4723
|
.addClass( "ui-corner-top" );
|
4613
4724
|
|
@@ -4615,7 +4726,7 @@ $.widget( "mobile.collapsibleset", $.mobile.widget, {
|
|
4615
4726
|
.jqmData( "collapsible-last", true )
|
4616
4727
|
.find( "a" )
|
4617
4728
|
.first()
|
4618
|
-
.addClass( "ui-corner-bottom" )
|
4729
|
+
.addClass( o.corners ? "ui-corner-bottom" : "" )
|
4619
4730
|
.find( ".ui-btn-inner" )
|
4620
4731
|
.addClass( "ui-corner-bottom" );
|
4621
4732
|
}
|
@@ -4657,6 +4768,7 @@ $.widget( "mobile.navbar", $.mobile.widget, {
|
|
4657
4768
|
$navbtns.buttonMarkup({
|
4658
4769
|
corners: false,
|
4659
4770
|
shadow: false,
|
4771
|
+
inline: true,
|
4660
4772
|
iconpos: iconpos
|
4661
4773
|
});
|
4662
4774
|
|
@@ -4689,6 +4801,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
4689
4801
|
var listCountPerPage = {};
|
4690
4802
|
|
4691
4803
|
$.widget( "mobile.listview", $.mobile.widget, {
|
4804
|
+
|
4692
4805
|
options: {
|
4693
4806
|
theme: null,
|
4694
4807
|
countTheme: "c",
|
@@ -4696,16 +4809,21 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4696
4809
|
dividerTheme: "b",
|
4697
4810
|
splitIcon: "arrow-r",
|
4698
4811
|
splitTheme: "b",
|
4812
|
+
mini: false,
|
4699
4813
|
inset: false,
|
4700
4814
|
initSelector: ":jqmData(role='listview')"
|
4701
4815
|
},
|
4702
4816
|
|
4703
4817
|
_create: function() {
|
4704
|
-
var t = this
|
4705
|
-
|
4818
|
+
var t = this,
|
4819
|
+
listviewClasses = "";
|
4820
|
+
|
4821
|
+
listviewClasses += t.options.inset ? " ui-listview-inset ui-corner-all ui-shadow " : "";
|
4822
|
+
listviewClasses += t.element.jqmData( "mini" ) || t.options.mini === true ? " ui-mini" : "";
|
4823
|
+
|
4706
4824
|
// create listview markup
|
4707
4825
|
t.element.addClass(function( i, orig ) {
|
4708
|
-
return orig + " ui-listview " +
|
4826
|
+
return orig + " ui-listview " + listviewClasses;
|
4709
4827
|
});
|
4710
4828
|
|
4711
4829
|
t.refresh( true );
|
@@ -4835,12 +4953,12 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4835
4953
|
counter = $.support.cssPseudoElement || !$.nodeName( $list[ 0 ], "ol" ) ? 0 : 1,
|
4836
4954
|
itemClassDict = {},
|
4837
4955
|
item, itemClass, itemTheme,
|
4838
|
-
a, last, splittheme, countParent, icon, imgParents, img;
|
4956
|
+
a, last, splittheme, countParent, icon, imgParents, img, linkIcon;
|
4839
4957
|
|
4840
4958
|
if ( counter ) {
|
4841
4959
|
$list.find( ".ui-li-dec" ).remove();
|
4842
4960
|
}
|
4843
|
-
|
4961
|
+
|
4844
4962
|
if ( !o.theme ) {
|
4845
4963
|
o.theme = $.mobile.getInheritedTheme( this.element, "c" );
|
4846
4964
|
}
|
@@ -4877,6 +4995,7 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4877
4995
|
|
4878
4996
|
last = a.last();
|
4879
4997
|
splittheme = listsplittheme || last.jqmData( "theme" ) || o.splitTheme;
|
4998
|
+
linkIcon = last.jqmData("icon");
|
4880
4999
|
|
4881
5000
|
last.appendTo(item)
|
4882
5001
|
.attr( "title", last.getEncodedText() )
|
@@ -4896,13 +5015,14 @@ $.widget( "mobile.listview", $.mobile.widget, {
|
|
4896
5015
|
corners: true,
|
4897
5016
|
theme: splittheme,
|
4898
5017
|
iconpos: "notext",
|
4899
|
-
icon
|
5018
|
+
// link icon overrides list item icon overrides ul element overrides options
|
5019
|
+
icon: linkIcon || icon || listspliticon || o.splitIcon
|
4900
5020
|
})
|
4901
5021
|
);
|
4902
5022
|
}
|
4903
5023
|
} else if ( item.jqmData( "role" ) === "list-divider" ) {
|
4904
5024
|
|
4905
|
-
itemClass += " ui-li-divider ui-
|
5025
|
+
itemClass += " ui-li-divider ui-bar-" + dividertheme;
|
4906
5026
|
item.attr( "role", "heading" );
|
4907
5027
|
|
4908
5028
|
//reset counter when a divider heading is encountered
|
@@ -5091,14 +5211,19 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5091
5211
|
_create: function() {
|
5092
5212
|
var self = this,
|
5093
5213
|
input = this.element,
|
5214
|
+
inheritAttr = function( input, dataAttr ) {
|
5215
|
+
return input.jqmData( dataAttr ) || input.closest( "form,fieldset" ).jqmData( dataAttr )
|
5216
|
+
},
|
5094
5217
|
// NOTE: Windows Phone could not find the label through a selector
|
5095
5218
|
// filter works though.
|
5096
|
-
|
5097
|
-
|
5098
|
-
|
5219
|
+
parentLabel = $( input ).closest( "label" ),
|
5220
|
+
label = parentLabel.length ? parentLabel : $( input ).closest( "form,fieldset,:jqmData(role='page'),:jqmData(role='dialog')" ).find( "label" ).filter( "[for='" + input[0].id + "']" ),
|
5221
|
+
inputtype = input[0].type,
|
5222
|
+
mini = inheritAttr( input, "mini" ),
|
5099
5223
|
checkedState = inputtype + "-on",
|
5100
5224
|
uncheckedState = inputtype + "-off",
|
5101
5225
|
icon = input.parents( ":jqmData(type='horizontal')" ).length ? undefined : uncheckedState,
|
5226
|
+
iconpos = inheritAttr( input, "iconpos" ),
|
5102
5227
|
activeBtn = icon ? "" : " " + $.mobile.activeBtnClass,
|
5103
5228
|
checkedClass = "ui-" + checkedState + activeBtn,
|
5104
5229
|
uncheckedClass = "ui-" + uncheckedState,
|
@@ -5119,24 +5244,24 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5119
5244
|
uncheckedicon: uncheckedicon
|
5120
5245
|
});
|
5121
5246
|
|
5122
|
-
// If there's no selected theme
|
5247
|
+
// If there's no selected theme check the data attr
|
5123
5248
|
if( !this.options.theme ) {
|
5124
|
-
this.options.theme = this.element
|
5249
|
+
this.options.theme = $.mobile.getInheritedTheme( this.element, "c" );
|
5125
5250
|
}
|
5126
5251
|
|
5127
5252
|
label.buttonMarkup({
|
5128
5253
|
theme: this.options.theme,
|
5129
5254
|
icon: icon,
|
5130
5255
|
shadow: false,
|
5131
|
-
mini: mini
|
5256
|
+
mini: mini,
|
5257
|
+
iconpos: iconpos
|
5132
5258
|
});
|
5133
5259
|
|
5134
5260
|
// Wrap the input + label in a div
|
5135
|
-
var wrapper = document.createElement('div');
|
5136
|
-
wrapper.className = 'ui-' + inputtype;
|
5137
|
-
|
5138
|
-
|
5139
|
-
wrapper.appendChild(label[0]);
|
5261
|
+
var wrapper = document.createElement('div');
|
5262
|
+
wrapper.className = 'ui-' + inputtype;
|
5263
|
+
|
5264
|
+
input.add( label ).wrapAll( wrapper );
|
5140
5265
|
|
5141
5266
|
label.bind({
|
5142
5267
|
vmouseover: function( event ) {
|
@@ -5152,8 +5277,8 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5152
5277
|
}
|
5153
5278
|
|
5154
5279
|
self._cacheVals();
|
5155
|
-
|
5156
|
-
|
5280
|
+
|
5281
|
+
input.prop( "checked", inputtype === "radio" && true || !input.prop( "checked" ) );
|
5157
5282
|
|
5158
5283
|
// trigger click handler's bound directly to the input as a substitute for
|
5159
5284
|
// how label clicks behave normally in the browsers
|
@@ -5165,12 +5290,11 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5165
5290
|
// Input set for common radio buttons will contain all the radio
|
5166
5291
|
// buttons, but will not for checkboxes. clearing the checked status
|
5167
5292
|
// of other radios ensures the active button state is applied properly
|
5168
|
-
self._getInputSet().not( input ).
|
5293
|
+
self._getInputSet().not( input ).prop( "checked", false );
|
5169
5294
|
|
5170
5295
|
self._updateAll();
|
5171
5296
|
return false;
|
5172
5297
|
}
|
5173
|
-
|
5174
5298
|
});
|
5175
5299
|
|
5176
5300
|
input
|
@@ -5185,11 +5309,11 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5185
5309
|
// Adds checked attribute to checked input when keyboard is used
|
5186
5310
|
if ( $this.is( ":checked" ) ) {
|
5187
5311
|
|
5188
|
-
$this.
|
5189
|
-
self._getInputSet().not($this).
|
5312
|
+
$this.prop( "checked", true);
|
5313
|
+
self._getInputSet().not($this).prop( "checked", false );
|
5190
5314
|
} else {
|
5191
5315
|
|
5192
|
-
$this.
|
5316
|
+
$this.prop( "checked", false );
|
5193
5317
|
}
|
5194
5318
|
|
5195
5319
|
self._updateAll();
|
@@ -5209,20 +5333,18 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5209
5333
|
|
5210
5334
|
_cacheVals: function() {
|
5211
5335
|
this._getInputSet().each(function() {
|
5212
|
-
|
5213
|
-
|
5214
|
-
$this.jqmData( "cacheVal", $this.is( ":checked" ) );
|
5336
|
+
$(this).jqmData( "cacheVal", this.checked );
|
5215
5337
|
});
|
5216
5338
|
},
|
5217
5339
|
|
5218
5340
|
//returns either a set of radios with the same name attribute, or a single checkbox
|
5219
5341
|
_getInputSet: function(){
|
5220
|
-
if(this.inputtype
|
5342
|
+
if(this.inputtype === "checkbox") {
|
5221
5343
|
return this.element;
|
5222
5344
|
}
|
5223
5345
|
|
5224
5346
|
return this.element.closest( "form,fieldset,:jqmData(role='page')" )
|
5225
|
-
.find( "input[name='"+ this.element.
|
5347
|
+
.find( "input[name='"+ this.element[0].name +"'][type='"+ this.inputtype +"']" );
|
5226
5348
|
},
|
5227
5349
|
|
5228
5350
|
_updateAll: function() {
|
@@ -5231,9 +5353,7 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5231
5353
|
this._getInputSet().each(function() {
|
5232
5354
|
var $this = $(this);
|
5233
5355
|
|
5234
|
-
|
5235
|
-
// selector. see #3597
|
5236
|
-
if ( this.getAttribute( "checked" ) || self.inputtype === "checkbox" ) {
|
5356
|
+
if ( this.checked || self.inputtype === "checkbox" ) {
|
5237
5357
|
$this.trigger( "change" );
|
5238
5358
|
}
|
5239
5359
|
})
|
@@ -5241,14 +5361,11 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5241
5361
|
},
|
5242
5362
|
|
5243
5363
|
refresh: function() {
|
5244
|
-
var input = this.element,
|
5364
|
+
var input = this.element[0],
|
5245
5365
|
label = this.label,
|
5246
5366
|
icon = label.find( ".ui-icon" );
|
5247
5367
|
|
5248
|
-
|
5249
|
-
// for checked='checked'
|
5250
|
-
|
5251
|
-
if ( input[ 0 ].getAttribute( "checked" ) ) {
|
5368
|
+
if ( input.checked ) {
|
5252
5369
|
label.addClass( this.checkedClass ).removeClass( this.uncheckedClass );
|
5253
5370
|
icon.addClass( this.checkedicon ).removeClass( this.uncheckedicon );
|
5254
5371
|
} else {
|
@@ -5256,7 +5373,7 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5256
5373
|
icon.removeClass( this.checkedicon ).addClass( this.uncheckedicon );
|
5257
5374
|
}
|
5258
5375
|
|
5259
|
-
if ( input.
|
5376
|
+
if ( input.disabled ) {
|
5260
5377
|
this.disable();
|
5261
5378
|
} else {
|
5262
5379
|
this.enable();
|
@@ -5264,7 +5381,7 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
|
|
5264
5381
|
},
|
5265
5382
|
|
5266
5383
|
disable: function() {
|
5267
|
-
this.element.
|
5384
|
+
this.element.prop( "disabled", true ).parent().addClass( "ui-disabled" );
|
5268
5385
|
},
|
5269
5386
|
|
5270
5387
|
enable: function() {
|
@@ -5286,7 +5403,7 @@ $.widget( "mobile.button", $.mobile.widget, {
|
|
5286
5403
|
theme: null,
|
5287
5404
|
icon: null,
|
5288
5405
|
iconpos: null,
|
5289
|
-
inline:
|
5406
|
+
inline: false,
|
5290
5407
|
corners: true,
|
5291
5408
|
shadow: true,
|
5292
5409
|
iconshadow: true,
|
@@ -5307,8 +5424,13 @@ $.widget( "mobile.button", $.mobile.widget, {
|
|
5307
5424
|
!$el.hasClass( "ui-btn" ) && $el.buttonMarkup();
|
5308
5425
|
return;
|
5309
5426
|
}
|
5310
|
-
|
5311
|
-
|
5427
|
+
|
5428
|
+
// get the inherited theme
|
5429
|
+
// TODO centralize for all widgets
|
5430
|
+
if ( !this.options.theme ) {
|
5431
|
+
this.options.theme = $.mobile.getInheritedTheme( this.element, "c" );
|
5432
|
+
}
|
5433
|
+
|
5312
5434
|
// TODO: Post 1.1--once we have time to test thoroughly--any classes manually applied to the original element should be carried over to the enhanced element, with an `-enhanced` suffix. See https://github.com/jquery/jquery-mobile/issues/3577
|
5313
5435
|
/* if( $el[0].className.length ) {
|
5314
5436
|
classes = $el[0].className;
|
@@ -5316,7 +5438,7 @@ $.widget( "mobile.button", $.mobile.widget, {
|
|
5316
5438
|
if( !!~$el[0].className.indexOf( "ui-btn-left" ) ) {
|
5317
5439
|
classes = "ui-btn-left";
|
5318
5440
|
}
|
5319
|
-
|
5441
|
+
|
5320
5442
|
if( !!~$el[0].className.indexOf( "ui-btn-right" ) ) {
|
5321
5443
|
classes = "ui-btn-right";
|
5322
5444
|
}
|
@@ -5399,8 +5521,8 @@ $.widget( "mobile.button", $.mobile.widget, {
|
|
5399
5521
|
this.enable();
|
5400
5522
|
}
|
5401
5523
|
|
5402
|
-
|
5403
|
-
$(this.button.data( 'buttonElements' ).text).text( $el.text() || $el.val() );
|
5524
|
+
// Grab the button's text element from its implementation-independent data item
|
5525
|
+
$( this.button.data( 'buttonElements' ).text ).text( $el.text() || $el.val() );
|
5404
5526
|
}
|
5405
5527
|
});
|
5406
5528
|
|
@@ -5480,28 +5602,31 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
5480
5602
|
var meta = $( "meta[name=viewport]" ),
|
5481
5603
|
initialContent = meta.attr( "content" ),
|
5482
5604
|
disabledZoom = initialContent + ",maximum-scale=1, user-scalable=no",
|
5483
|
-
enabledZoom = initialContent + ",maximum-scale=10, user-scalable=yes"
|
5605
|
+
enabledZoom = initialContent + ",maximum-scale=10, user-scalable=yes",
|
5606
|
+
disabledInitially = /(user-scalable[\s]*=[\s]*no)|(maximum-scale[\s]*=[\s]*1)[$,\s]/.test( initialContent );
|
5484
5607
|
|
5485
5608
|
$.mobile.zoom = $.extend( {}, {
|
5486
|
-
enabled:
|
5609
|
+
enabled: !disabledInitially,
|
5487
5610
|
locked: false,
|
5488
5611
|
disable: function( lock ) {
|
5489
|
-
if( !$.mobile.zoom.locked ){
|
5612
|
+
if( !disabledInitially && !$.mobile.zoom.locked ){
|
5490
5613
|
meta.attr( "content", disabledZoom );
|
5491
5614
|
$.mobile.zoom.enabled = false;
|
5492
5615
|
$.mobile.zoom.locked = lock || false;
|
5493
5616
|
}
|
5494
5617
|
},
|
5495
5618
|
enable: function( unlock ) {
|
5496
|
-
if( !$.mobile.zoom.locked || unlock ){
|
5619
|
+
if( !disabledInitially && ( !$.mobile.zoom.locked || unlock === true ) ){
|
5497
5620
|
meta.attr( "content", enabledZoom );
|
5498
5621
|
$.mobile.zoom.enabled = true;
|
5499
5622
|
$.mobile.zoom.locked = false;
|
5500
5623
|
}
|
5501
5624
|
},
|
5502
5625
|
restore: function() {
|
5503
|
-
|
5504
|
-
|
5626
|
+
if( !disabledInitially ){
|
5627
|
+
meta.attr( "content", initialContent );
|
5628
|
+
$.mobile.zoom.enabled = true;
|
5629
|
+
}
|
5505
5630
|
}
|
5506
5631
|
});
|
5507
5632
|
|
@@ -5514,7 +5639,8 @@ $.widget( "mobile.textinput", $.mobile.widget, {
|
|
5514
5639
|
theme: null,
|
5515
5640
|
// This option defaults to true on iOS devices.
|
5516
5641
|
preventFocusZoom: /iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1,
|
5517
|
-
initSelector: "input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type])"
|
5642
|
+
initSelector: "input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type])",
|
5643
|
+
clearSearchButtonText: "clear text"
|
5518
5644
|
},
|
5519
5645
|
|
5520
5646
|
_create: function() {
|
@@ -5550,10 +5676,12 @@ $.widget( "mobile.textinput", $.mobile.widget, {
|
|
5550
5676
|
if ( input.is( "[type='search'],:jqmData(type='search')" ) ) {
|
5551
5677
|
|
5552
5678
|
focusedEl = input.wrap( "<div class='ui-input-search ui-shadow-inset ui-btn-corner-all ui-btn-shadow ui-icon-searchfield" + themeclass + miniclass + "'></div>" ).parent();
|
5553
|
-
clearbtn = $( "<a href='#' class='ui-input-clear' title='
|
5554
|
-
.
|
5555
|
-
input
|
5556
|
-
|
5679
|
+
clearbtn = $( "<a href='#' class='ui-input-clear' title='" + o.clearSearchButtonText + "'>" + o.clearSearchButtonText + "</a>" )
|
5680
|
+
.bind('click', function( event ) {
|
5681
|
+
input
|
5682
|
+
.val( "" )
|
5683
|
+
.focus()
|
5684
|
+
.trigger( "change" );
|
5557
5685
|
clearbtn.addClass( "ui-input-clear-hidden" );
|
5558
5686
|
event.preventDefault();
|
5559
5687
|
})
|
@@ -5745,7 +5873,7 @@ $( document ).delegate( ":jqmData(role='listview')", "listviewcreate", function(
|
|
5745
5873
|
.appendTo( wrapper )
|
5746
5874
|
.textinput();
|
5747
5875
|
|
5748
|
-
if (
|
5876
|
+
if ( listview.options.inset ) {
|
5749
5877
|
wrapper.addClass( "ui-listview-filter-inset" );
|
5750
5878
|
}
|
5751
5879
|
|
@@ -6173,11 +6301,10 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
|
|
6173
6301
|
disabled: false,
|
6174
6302
|
icon: "arrow-d",
|
6175
6303
|
iconpos: "right",
|
6176
|
-
inline:
|
6304
|
+
inline: false,
|
6177
6305
|
corners: true,
|
6178
6306
|
shadow: true,
|
6179
6307
|
iconshadow: true,
|
6180
|
-
menuPageTheme: "b",
|
6181
6308
|
overlayTheme: "a",
|
6182
6309
|
hidePlaceholderMenuItems: true,
|
6183
6310
|
closeText: "Close",
|
@@ -6442,16 +6569,17 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6442
6569
|
"class": "ui-title"
|
6443
6570
|
}).appendTo( header ),
|
6444
6571
|
|
6572
|
+
menuPageContent,
|
6573
|
+
menuPageClose,
|
6574
|
+
headerClose;
|
6575
|
+
|
6576
|
+
if( widget.isMultiple ) {
|
6445
6577
|
headerClose = $( "<a>", {
|
6446
6578
|
"text": widget.options.closeText,
|
6447
6579
|
"href": "#",
|
6448
6580
|
"class": "ui-btn-left"
|
6449
|
-
}).attr( "data-" + $.mobile.ns + "iconpos", "notext" ).attr( "data-" + $.mobile.ns + "icon", "delete" ).appendTo( header ).buttonMarkup()
|
6450
|
-
|
6451
|
-
menuPageContent,
|
6452
|
-
|
6453
|
-
menuPageClose;
|
6454
|
-
|
6581
|
+
}).attr( "data-" + $.mobile.ns + "iconpos", "notext" ).attr( "data-" + $.mobile.ns + "icon", "delete" ).appendTo( header ).buttonMarkup();
|
6582
|
+
}
|
6455
6583
|
|
6456
6584
|
$.extend( widget, {
|
6457
6585
|
select: widget.select,
|
@@ -6502,7 +6630,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6502
6630
|
$( e.target )
|
6503
6631
|
.attr( "tabindex", "0" )
|
6504
6632
|
.trigger( "vmouseover" );
|
6505
|
-
|
6633
|
+
|
6506
6634
|
})
|
6507
6635
|
.bind( "focusout", function( e ){
|
6508
6636
|
$( e.target )
|
@@ -6547,7 +6675,11 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6547
6675
|
switch ( event.keyCode ) {
|
6548
6676
|
// up or left arrow keys
|
6549
6677
|
case 38:
|
6550
|
-
prev = li.prev();
|
6678
|
+
prev = li.prev().not( ".ui-selectmenu-placeholder" );
|
6679
|
+
|
6680
|
+
if( prev.is( ".ui-li-divider" ) ) {
|
6681
|
+
prev = prev.prev();
|
6682
|
+
}
|
6551
6683
|
|
6552
6684
|
// if there's a previous option, focus it
|
6553
6685
|
if ( prev.length ) {
|
@@ -6555,7 +6687,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6555
6687
|
.blur()
|
6556
6688
|
.attr( "tabindex", "-1" );
|
6557
6689
|
|
6558
|
-
prev.find( "a" ).first().focus();
|
6690
|
+
prev.addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus();
|
6559
6691
|
}
|
6560
6692
|
|
6561
6693
|
return false;
|
@@ -6565,13 +6697,17 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6565
6697
|
case 40:
|
6566
6698
|
next = li.next();
|
6567
6699
|
|
6700
|
+
if( next.is( ".ui-li-divider" ) ) {
|
6701
|
+
next = next.next();
|
6702
|
+
}
|
6703
|
+
|
6568
6704
|
// if there's a next option, focus it
|
6569
6705
|
if ( next.length ) {
|
6570
6706
|
target
|
6571
6707
|
.blur()
|
6572
6708
|
.attr( "tabindex", "-1" );
|
6573
6709
|
|
6574
|
-
next.find( "a" ).first().focus();
|
6710
|
+
next.addClass( "ui-btn-down-" + widget.options.theme ).find( "a" ).first().focus();
|
6575
6711
|
}
|
6576
6712
|
|
6577
6713
|
return false;
|
@@ -6614,12 +6750,14 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6614
6750
|
});
|
6615
6751
|
|
6616
6752
|
// Close button on small overlays
|
6617
|
-
self.
|
6618
|
-
|
6619
|
-
self.
|
6620
|
-
|
6621
|
-
|
6622
|
-
|
6753
|
+
if( self.isMultiple ){
|
6754
|
+
self.headerClose.click( function() {
|
6755
|
+
if ( self.menuType == "overlay" ) {
|
6756
|
+
self.close();
|
6757
|
+
return false;
|
6758
|
+
}
|
6759
|
+
});
|
6760
|
+
}
|
6623
6761
|
|
6624
6762
|
// track this dependency so that when the parent page
|
6625
6763
|
// is removed on pagehide it will also remove the menupage
|
@@ -6667,7 +6805,11 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6667
6805
|
if ( self.isMultiple ) {
|
6668
6806
|
item.find( ".ui-icon" ).removeClass( "ui-icon-checkbox-off" ).addClass( "ui-icon-checkbox-on" );
|
6669
6807
|
} else {
|
6670
|
-
item.
|
6808
|
+
if( item.is( ".ui-selectmenu-placeholder" ) ) {
|
6809
|
+
item.next().addClass( $.mobile.activeBtnClass );
|
6810
|
+
} else {
|
6811
|
+
item.addClass( $.mobile.activeBtnClass );
|
6812
|
+
}
|
6671
6813
|
}
|
6672
6814
|
}
|
6673
6815
|
});
|
@@ -6726,11 +6868,11 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6726
6868
|
}
|
6727
6869
|
|
6728
6870
|
if ( menuHeight > screenHeight - 80 || !$.support.scrollTop ) {
|
6729
|
-
|
6730
|
-
self.menuPage.appendTo( $.mobile.pageContainer ).page();
|
6871
|
+
|
6872
|
+
self.menuPage.appendTo( $.mobile.pageContainer ).page();
|
6731
6873
|
self.menuPageContent = menuPage.find( ".ui-content" );
|
6732
6874
|
self.menuPageClose = menuPage.find( ".ui-header a" );
|
6733
|
-
|
6875
|
+
|
6734
6876
|
// prevent the parent page from being removed from the DOM,
|
6735
6877
|
// otherwise the results of selecting a list item in the dialog
|
6736
6878
|
// fall into a black hole
|
@@ -6744,15 +6886,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6744
6886
|
}
|
6745
6887
|
|
6746
6888
|
self.menuPage.one( "pageshow", function() {
|
6747
|
-
|
6748
|
-
// any previous scroll position the page may have had. We need to
|
6749
|
-
// wait for the "silentscroll" event before setting focus to avoid
|
6750
|
-
// the browser"s "feature" which offsets rendering to make sure
|
6751
|
-
// whatever has focus is in view.
|
6752
|
-
$( window ).one( "silentscroll", function() {
|
6753
|
-
focusMenuItem();
|
6754
|
-
});
|
6755
|
-
|
6889
|
+
focusMenuItem();
|
6756
6890
|
self.isOpen = true;
|
6757
6891
|
});
|
6758
6892
|
|
@@ -6817,6 +6951,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6817
6951
|
var self = this,
|
6818
6952
|
o = this.options,
|
6819
6953
|
placeholder = this.placeholder,
|
6954
|
+
needPlaceholder = true,
|
6820
6955
|
optgroups = [],
|
6821
6956
|
lis = [],
|
6822
6957
|
dataIcon = self.isMultiple ? "checkbox-off" : "false";
|
@@ -6824,30 +6959,30 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6824
6959
|
self.list.empty().filter( ".ui-listview" ).listview( "destroy" );
|
6825
6960
|
|
6826
6961
|
var $options = self.select.find("option"),
|
6827
|
-
numOptions = $options.length,
|
6828
|
-
select = this.select[ 0 ],
|
6829
|
-
dataPrefix = 'data-' + $.mobile.ns,
|
6830
|
-
dataIndexAttr = dataPrefix + 'option-index',
|
6962
|
+
numOptions = $options.length,
|
6963
|
+
select = this.select[ 0 ],
|
6964
|
+
dataPrefix = 'data-' + $.mobile.ns,
|
6965
|
+
dataIndexAttr = dataPrefix + 'option-index',
|
6831
6966
|
dataIconAttr = dataPrefix + 'icon',
|
6832
6967
|
dataRoleAttr = dataPrefix + 'role',
|
6833
6968
|
fragment = document.createDocumentFragment(),
|
6834
6969
|
optGroup;
|
6835
|
-
|
6836
|
-
for (var i = 0; i < numOptions;i++){
|
6970
|
+
|
6971
|
+
for (var i = 0; i < numOptions;i++){
|
6837
6972
|
var option = $options[i],
|
6838
6973
|
$option = $(option),
|
6839
6974
|
parent = option.parentNode,
|
6840
|
-
text = $option.text(),
|
6841
|
-
anchor = document.createElement('a')
|
6842
|
-
classes = [];
|
6843
|
-
|
6844
|
-
anchor.setAttribute('href','#');
|
6845
|
-
anchor.appendChild(document.createTextNode(text));
|
6846
|
-
|
6847
|
-
// Are we inside an optgroup?
|
6975
|
+
text = $option.text(),
|
6976
|
+
anchor = document.createElement('a'),
|
6977
|
+
classes = [];
|
6978
|
+
|
6979
|
+
anchor.setAttribute('href','#');
|
6980
|
+
anchor.appendChild(document.createTextNode(text));
|
6981
|
+
|
6982
|
+
// Are we inside an optgroup?
|
6848
6983
|
if (parent !== select && parent.nodeName.toLowerCase() === "optgroup"){
|
6849
6984
|
var optLabel = parent.getAttribute('label');
|
6850
|
-
if ( optLabel != optGroup) {
|
6985
|
+
if ( optLabel != optGroup) {
|
6851
6986
|
var divider = document.createElement('li');
|
6852
6987
|
divider.setAttribute(dataRoleAttr,'list-divider');
|
6853
6988
|
divider.setAttribute('role','option');
|
@@ -6856,36 +6991,34 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6856
6991
|
fragment.appendChild(divider);
|
6857
6992
|
optGroup = optLabel;
|
6858
6993
|
}
|
6859
|
-
}
|
6860
|
-
|
6861
|
-
if (
|
6994
|
+
}
|
6995
|
+
|
6996
|
+
if (needPlaceholder && (!option.getAttribute( "value" ) || text.length == 0 || $option.jqmData( "placeholder" ))) {
|
6997
|
+
needPlaceholder = false;
|
6862
6998
|
if ( o.hidePlaceholderMenuItems ) {
|
6863
6999
|
classes.push( "ui-selectmenu-placeholder" );
|
6864
|
-
}
|
6865
|
-
|
7000
|
+
}
|
7001
|
+
if (!placeholder) {
|
7002
|
+
placeholder = self.placeholder = text;
|
7003
|
+
}
|
6866
7004
|
}
|
6867
|
-
|
6868
|
-
var item = document.createElement('li');
|
7005
|
+
|
7006
|
+
var item = document.createElement('li');
|
6869
7007
|
if ( option.disabled ) {
|
6870
7008
|
classes.push( "ui-disabled" );
|
6871
7009
|
item.setAttribute('aria-disabled',true);
|
6872
7010
|
}
|
6873
7011
|
item.setAttribute(dataIndexAttr,i);
|
6874
|
-
item.setAttribute(dataIconAttr,dataIcon);
|
7012
|
+
item.setAttribute(dataIconAttr,dataIcon);
|
6875
7013
|
item.className = classes.join(" ");
|
6876
7014
|
item.setAttribute('role','option');
|
6877
7015
|
anchor.setAttribute('tabindex','-1');
|
6878
|
-
item.appendChild(anchor);
|
7016
|
+
item.appendChild(anchor);
|
6879
7017
|
fragment.appendChild(item);
|
6880
|
-
}
|
7018
|
+
}
|
6881
7019
|
|
6882
7020
|
self.list[0].appendChild(fragment);
|
6883
7021
|
|
6884
|
-
// Hide header close link for single selects
|
6885
|
-
if ( !this.isMultiple ) {
|
6886
|
-
this.headerClose.hide();
|
6887
|
-
}
|
6888
|
-
|
6889
7022
|
// Hide header if it's not a multiselect and there's no placeholder
|
6890
7023
|
if ( !this.isMultiple && !placeholder.length ) {
|
6891
7024
|
this.header.hide();
|
@@ -6912,8 +7045,9 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6912
7045
|
});
|
6913
7046
|
};
|
6914
7047
|
|
6915
|
-
|
6916
|
-
|
7048
|
+
// issue #3894 - core doesn't triggered events on disabled delegates
|
7049
|
+
$( document ).bind( "selectmenubeforecreate", function( event ){
|
7050
|
+
var selectmenuWidget = $( event.target ).data( "selectmenu" );
|
6917
7051
|
|
6918
7052
|
if( !selectmenuWidget.options.nativeMenu ){
|
6919
7053
|
extendSelect( selectmenuWidget );
|
@@ -6951,11 +7085,9 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6951
7085
|
wkversion = !!wkmatch && wkmatch[ 1 ],
|
6952
7086
|
ffmatch = ua.match( /Fennec\/([0-9]+)/ ),
|
6953
7087
|
ffversion = !!ffmatch && ffmatch[ 1 ],
|
6954
|
-
operammobilematch = ua.match( /Opera
|
6955
|
-
bbmatch = w.blackberry && w.navigator.appVersion.match( /Version\/([0-9]+)/ ),
|
6956
|
-
bbversion = !!bbmatch && parseInt( bbmatch[ 1 ], 10 ),
|
7088
|
+
operammobilematch = ua.match( /Opera Mobi\/([0-9]+)/ ),
|
6957
7089
|
omversion = !!operammobilematch && operammobilematch[ 1 ];
|
6958
|
-
|
7090
|
+
|
6959
7091
|
if(
|
6960
7092
|
// iOS 4.3 and older : Platform is iPhone/Pad/Touch and Webkit version is less than 534 (ios5)
|
6961
7093
|
( ( platform.indexOf( "iPhone" ) > -1 || platform.indexOf( "iPad" ) > -1 || platform.indexOf( "iPod" ) > -1 ) && wkversion && wkversion < 534 )
|
@@ -6963,7 +7095,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6963
7095
|
// Opera Mini
|
6964
7096
|
( w.operamini && ({}).toString.call( w.operamini ) === "[object OperaMini]" )
|
6965
7097
|
||
|
6966
|
-
( operammobilematch &&
|
7098
|
+
( operammobilematch && omversion < 7458 )
|
6967
7099
|
||
|
6968
7100
|
//Android lte 2.1: Platform is Android and Webkit version is less than 533 (Android 2.2)
|
6969
7101
|
( ua.indexOf( "Android" ) > -1 && wkversion && wkversion < 533 )
|
@@ -6974,9 +7106,6 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6974
7106
|
// WebOS less than 3
|
6975
7107
|
( "palmGetResource" in window && wkversion && wkversion < 534 )
|
6976
7108
|
||
|
6977
|
-
// BlackBerry six and below.
|
6978
|
-
( w.blackberry && bbversion < 7 )
|
6979
|
-
||
|
6980
7109
|
// MeeGo
|
6981
7110
|
( ua.indexOf( "MeeGo" ) > -1 && ua.indexOf( "NokiaBrowser/8.5.0" ) > -1 )
|
6982
7111
|
){
|
@@ -6993,7 +7122,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
6993
7122
|
var self = this,
|
6994
7123
|
o = self.options,
|
6995
7124
|
$el = self.element,
|
6996
|
-
tbtype = $el.is( "
|
7125
|
+
tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer",
|
6997
7126
|
$page = $el.closest(".ui-page");
|
6998
7127
|
|
6999
7128
|
// Feature detecting support for
|
@@ -7005,7 +7134,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7005
7134
|
$el.addClass( "ui-"+ tbtype +"-fixed" );
|
7006
7135
|
|
7007
7136
|
// "fullscreen" overlay positioning
|
7008
|
-
if(
|
7137
|
+
if( o.fullscreen ){
|
7009
7138
|
$el.addClass( "ui-"+ tbtype +"-fullscreen" );
|
7010
7139
|
$page.addClass( "ui-page-" + tbtype + "-fullscreen" );
|
7011
7140
|
}
|
@@ -7045,8 +7174,8 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7045
7174
|
if( o.disablePageZoom ){
|
7046
7175
|
$.mobile.zoom.disable( true );
|
7047
7176
|
}
|
7048
|
-
if( o.visibleOnPageShow ){
|
7049
|
-
self.
|
7177
|
+
if( !o.visibleOnPageShow ){
|
7178
|
+
self.hide( true );
|
7050
7179
|
}
|
7051
7180
|
} )
|
7052
7181
|
.bind( "webkitAnimationStart animationstart updatelayout", function(){
|
@@ -7076,20 +7205,21 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7076
7205
|
nextFooter = thisFooter.length && ui.nextPage && $( ".ui-footer-fixed:jqmData(id='" + thisFooter.jqmData( "id" ) + "')", ui.nextPage ),
|
7077
7206
|
nextHeader = thisHeader.length && ui.nextPage && $( ".ui-header-fixed:jqmData(id='" + thisHeader.jqmData( "id" ) + "')", ui.nextPage );
|
7078
7207
|
|
7208
|
+
nextFooter = nextFooter || $();
|
7209
|
+
|
7079
7210
|
if( nextFooter.length || nextHeader.length ){
|
7080
7211
|
|
7081
7212
|
nextFooter.add( nextHeader ).appendTo( $.mobile.pageContainer );
|
7082
7213
|
|
7083
7214
|
ui.nextPage.one( "pageshow", function(){
|
7084
7215
|
nextFooter.add( nextHeader ).appendTo( this );
|
7085
|
-
}
|
7216
|
+
});
|
7086
7217
|
}
|
7087
7218
|
}
|
7088
|
-
|
7089
7219
|
});
|
7090
7220
|
},
|
7091
7221
|
|
7092
|
-
_visible:
|
7222
|
+
_visible: true,
|
7093
7223
|
|
7094
7224
|
// This will set the content element's top or bottom padding equal to the toolbar's height
|
7095
7225
|
updatePagePadding: function() {
|
@@ -7101,22 +7231,30 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7101
7231
|
|
7102
7232
|
$el.closest( ".ui-page" ).css( "padding-" + ( header ? "top" : "bottom" ), $el.outerHeight() );
|
7103
7233
|
},
|
7104
|
-
|
7105
|
-
|
7106
|
-
var
|
7234
|
+
|
7235
|
+
_useTransition: function( notransition ){
|
7236
|
+
var $win = $( window ),
|
7107
7237
|
$el = this.element,
|
7108
|
-
$win = $( window ),
|
7109
7238
|
scroll = $win.scrollTop(),
|
7110
7239
|
elHeight = $el.height(),
|
7111
7240
|
pHeight = $el.closest( ".ui-page" ).height(),
|
7112
|
-
viewportHeight =
|
7113
|
-
tbtype = $el.is( "
|
7114
|
-
|
7115
|
-
|
7116
|
-
|
7241
|
+
viewportHeight = $.mobile.getScreenHeight(),
|
7242
|
+
tbtype = $el.is( ":jqmData(role='header')" ) ? "header" : "footer";
|
7243
|
+
|
7244
|
+
return !notransition &&
|
7245
|
+
( this.options.transition && this.options.transition !== "none" &&
|
7246
|
+
(
|
7117
7247
|
( tbtype === "header" && !this.options.fullscreen && scroll > elHeight ) ||
|
7118
7248
|
( tbtype === "footer" && !this.options.fullscreen && scroll + viewportHeight < pHeight - elHeight )
|
7119
|
-
|
7249
|
+
) || this.options.fullscreen
|
7250
|
+
);
|
7251
|
+
},
|
7252
|
+
|
7253
|
+
show: function( notransition ){
|
7254
|
+
var hideClass = "ui-fixed-hidden",
|
7255
|
+
$el = this.element;
|
7256
|
+
|
7257
|
+
if( this._useTransition( notransition ) ){
|
7120
7258
|
$el
|
7121
7259
|
.removeClass( "out " + hideClass )
|
7122
7260
|
.addClass( "in" );
|
@@ -7130,20 +7268,10 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7130
7268
|
hide: function( notransition ){
|
7131
7269
|
var hideClass = "ui-fixed-hidden",
|
7132
7270
|
$el = this.element,
|
7133
|
-
$win = $( window ),
|
7134
|
-
scroll = $win.scrollTop(),
|
7135
|
-
elHeight = $el.height(),
|
7136
|
-
pHeight = $el.closest( ".ui-page" ).height(),
|
7137
|
-
viewportHeight = Math.min( screen.height, $win.height() ),
|
7138
|
-
tbtype = $el.is( ".ui-header" ) ? "header" : "footer",
|
7139
7271
|
// if it's a slide transition, our new transitions need the reverse class as well to slide outward
|
7140
7272
|
outclass = "out" + ( this.options.transition === "slide" ? " reverse" : "" );
|
7141
7273
|
|
7142
|
-
if(
|
7143
|
-
(
|
7144
|
-
( tbtype === "header" && !this.options.fullscreen && scroll > elHeight ) ||
|
7145
|
-
( tbtype === "footer" && !this.options.fullscreen && scroll + viewportHeight < pHeight - elHeight )
|
7146
|
-
) || this.options.fullscreen ) ){
|
7274
|
+
if( this._useTransition( notransition ) ){
|
7147
7275
|
$el
|
7148
7276
|
.addClass( outclass )
|
7149
7277
|
.removeClass( "in" )
|
@@ -7188,9 +7316,17 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7188
7316
|
});
|
7189
7317
|
|
7190
7318
|
//auto self-init widgets
|
7191
|
-
$( document )
|
7192
|
-
|
7193
|
-
|
7319
|
+
$( document )
|
7320
|
+
.bind( "pagecreate create", function( e ){
|
7321
|
+
|
7322
|
+
// DEPRECATED in 1.1: support for data-fullscreen=true|false on the page element.
|
7323
|
+
// This line ensures it still works, but we recommend moving the attribute to the toolbars themselves.
|
7324
|
+
if( $( e.target ).jqmData( "fullscreen" ) ){
|
7325
|
+
$( $.mobile.fixedtoolbar.prototype.options.initSelector, e.target ).not( ":jqmData(fullscreen)" ).jqmData( "fullscreen", true );
|
7326
|
+
}
|
7327
|
+
|
7328
|
+
$.mobile.fixedtoolbar.prototype.enhanceWithin( e.target );
|
7329
|
+
});
|
7194
7330
|
|
7195
7331
|
})( jQuery );
|
7196
7332
|
|
@@ -7252,8 +7388,8 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7252
7388
|
|
7253
7389
|
// Add mobile, initial load "rendering" classes to docEl
|
7254
7390
|
$html.addClass( "ui-mobile ui-mobile-rendering" );
|
7255
|
-
|
7256
|
-
// This is a fallback. If anything goes wrong (JS errors, etc), or events don't fire,
|
7391
|
+
|
7392
|
+
// This is a fallback. If anything goes wrong (JS errors, etc), or events don't fire,
|
7257
7393
|
// this ensures the rendering class is removed after 5 seconds, so content is visible and accessible
|
7258
7394
|
setTimeout( hideRenderingClass, 5000 );
|
7259
7395
|
|
@@ -7261,20 +7397,26 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7261
7397
|
// will not appear if $.mobile.loadingMessage is false
|
7262
7398
|
var loaderClass = "ui-loader",
|
7263
7399
|
$loader = $( "<div class='" + loaderClass + "'><span class='ui-icon ui-icon-loading'></span><h1></h1></div>" );
|
7264
|
-
|
7400
|
+
|
7265
7401
|
// For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top
|
7266
7402
|
function fakeFixLoader(){
|
7403
|
+
var activeBtn = $( "." + $.mobile.activeBtnClass ).first();
|
7404
|
+
|
7267
7405
|
$loader
|
7268
7406
|
.css({
|
7269
7407
|
top: $.support.scrollTop && $window.scrollTop() + $window.height() / 2 ||
|
7270
7408
|
activeBtn.length && activeBtn.offset().top || 100
|
7271
|
-
});
|
7409
|
+
});
|
7272
7410
|
}
|
7273
|
-
|
7411
|
+
|
7274
7412
|
// check position of loader to see if it appears to be "fixed" to center
|
7275
7413
|
// if not, use abs positioning
|
7276
7414
|
function checkLoaderPosition(){
|
7277
|
-
|
7415
|
+
var offset = $loader.offset(),
|
7416
|
+
scrollTop = $window.scrollTop(),
|
7417
|
+
screenHeight = $.mobile.getScreenHeight();
|
7418
|
+
|
7419
|
+
if( offset.top < scrollTop || (offset.top - scrollTop) > screenHeight ) {
|
7278
7420
|
$loader.addClass( "ui-loader-fakefix" );
|
7279
7421
|
fakeFixLoader();
|
7280
7422
|
$window
|
@@ -7282,24 +7424,22 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7282
7424
|
.bind( "scroll", fakeFixLoader );
|
7283
7425
|
}
|
7284
7426
|
}
|
7285
|
-
|
7427
|
+
|
7286
7428
|
//remove initial build class (only present on first pageshow)
|
7287
7429
|
function hideRenderingClass(){
|
7288
7430
|
$html.removeClass( "ui-mobile-rendering" );
|
7289
7431
|
}
|
7290
|
-
|
7291
7432
|
|
7292
7433
|
$.extend($.mobile, {
|
7293
7434
|
// turn on/off page loading message.
|
7294
7435
|
showPageLoadingMsg: function( theme, msgText, textonly ) {
|
7295
7436
|
$html.addClass( "ui-loading" );
|
7296
|
-
|
7437
|
+
|
7297
7438
|
if ( $.mobile.loadingMessage ) {
|
7298
|
-
|
7299
|
-
|
7300
|
-
|
7301
|
-
|
7302
|
-
|
7439
|
+
// text visibility from argument takes priority
|
7440
|
+
var textVisible = textonly || $.mobile.loadingMessageTextVisible;
|
7441
|
+
|
7442
|
+
theme = theme || $.mobile.loadingMessageTheme,
|
7303
7443
|
|
7304
7444
|
$loader
|
7305
7445
|
.attr( "class", loaderClass + " ui-corner-all ui-body-" + ( theme || "a" ) + " ui-loader-" + ( textVisible ? "verbose" : "default" ) + ( textonly ? " ui-loader-textonly" : "" ) )
|
@@ -7307,7 +7447,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7307
7447
|
.text( msgText || $.mobile.loadingMessage )
|
7308
7448
|
.end()
|
7309
7449
|
.appendTo( $.mobile.pageContainer );
|
7310
|
-
|
7450
|
+
|
7311
7451
|
checkLoaderPosition();
|
7312
7452
|
$window.bind( "scroll", checkLoaderPosition );
|
7313
7453
|
}
|
@@ -7315,24 +7455,25 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7315
7455
|
|
7316
7456
|
hidePageLoadingMsg: function() {
|
7317
7457
|
$html.removeClass( "ui-loading" );
|
7318
|
-
|
7458
|
+
|
7319
7459
|
if( $.mobile.loadingMessage ){
|
7320
7460
|
$loader.removeClass( "ui-loader-fakefix" );
|
7321
7461
|
}
|
7322
|
-
|
7462
|
+
|
7323
7463
|
$( window ).unbind( "scroll", fakeFixLoader );
|
7464
|
+
$( window ).unbind( "scroll", checkLoaderPosition );
|
7324
7465
|
},
|
7325
7466
|
|
7326
7467
|
// find and enhance the pages in the dom and transition to the first page.
|
7327
7468
|
initializePage: function() {
|
7328
7469
|
// find present pages
|
7329
7470
|
var $pages = $( ":jqmData(role='page'), :jqmData(role='dialog')" );
|
7330
|
-
|
7471
|
+
|
7331
7472
|
// if no pages are found, create one with body's inner html
|
7332
7473
|
if ( !$pages.length ) {
|
7333
7474
|
$pages = $( "body" ).wrapInner( "<div data-" + $.mobile.ns + "role='page'></div>" ).children( 0 );
|
7334
7475
|
}
|
7335
|
-
|
7476
|
+
|
7336
7477
|
// add dialogs, set data-url attrs
|
7337
7478
|
$pages.each(function() {
|
7338
7479
|
var $this = $(this);
|
@@ -7355,7 +7496,7 @@ $( document ).bind( "pagecreate create", function( e ){
|
|
7355
7496
|
|
7356
7497
|
// cue page loading message
|
7357
7498
|
$.mobile.showPageLoadingMsg();
|
7358
|
-
|
7499
|
+
|
7359
7500
|
//remove initial build class (only present on first pageshow)
|
7360
7501
|
hideRenderingClass();
|
7361
7502
|
|