+
diff --git a/experiments/photos/photos.css b/experiments/photos/photos.css
index 824e5915d5e..08047a4164d 100644
--- a/experiments/photos/photos.css
+++ b/experiments/photos/photos.css
@@ -1 +1,2 @@
-#photoview img { width: 100%; }
\ No newline at end of file
+.photoview .ui-content { padding: 0; }
+.photoview img { width: 100%; }
\ No newline at end of file
diff --git a/experiments/photos/photos.js b/experiments/photos/photos.js
index f7d8dab908a..0cfcf013586 100644
--- a/experiments/photos/photos.js
+++ b/experiments/photos/photos.js
@@ -1,23 +1,21 @@
-$(function(){
- $('.photoview')
- .live('swipeleft',function(){
- $(this).find('a').ajaxClick();
- })
- .live('swiperight',function(){
- $(this).next().find('a:contains(Prev)').ajaxClick();
- });
- $('.photoview a').click(function(){
- event.stopImmediatePropagation();
- })
- .tap(function(event){
- $(this).ajaxClick();
- event.stopImmediatePropagation();
- })
- .taphold(function(event){
- $.fixedToolbars.toggle();
- event.stopImmediatePropagation();
- })
-
- }
-});
+
+$('.photoview')
+ .live('pagebeforehide',function(){
+ $.fixedToolbars.hide(true);
+ })
+ .live('pageshow',function(){
+ $.fixedToolbars.show();
+ })
+ .live('swipeleft',function(){
+ $(this).find('a.next').click();
+ })
+ .live('swiperight',function(){
+ $(this).next().find('a.prev').click();
+ });
+
+$('.photoview img').live('mousedown touchstart',function(event){
+ event.preventDefault();
+})
+
+
diff --git a/experiments/ui-datepicker/jquery.ui.datepicker.css b/experiments/ui-datepicker/jquery.ui.datepicker.css
index fd07f3eb1d3..91b2e9a9f40 100755
--- a/experiments/ui-datepicker/jquery.ui.datepicker.css
+++ b/experiments/ui-datepicker/jquery.ui.datepicker.css
@@ -23,6 +23,6 @@ div.hasDatepicker{ display: block; padding: 0; overflow: visible; margin: 8px 0
.ui-datepicker td { border-width: 1px; padding: 0; text-align: center; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em 0; font-weight: bold; margin: 0; border-width: 0; text-align: center; text-decoration: none; }
-.min-width-480 {
+.min-width-480px {
div.hasDatepicker { width: 63%; display: inline-block; margin: 0; }
}
\ No newline at end of file
diff --git a/js/jquery.mobile.collapsible.js b/js/jquery.mobile.collapsible.js
index 0d7eb20a416..5b486eea230 100644
--- a/js/jquery.mobile.collapsible.js
+++ b/js/jquery.mobile.collapsible.js
@@ -19,7 +19,8 @@ $.fn.collapsible = function(options){
//define
var collapsibleContain = $(this).addClass('ui-collapsible-contain'),
collapsibleHeading = $(this).find(o.heading).eq(0),
- collapsibleContent = collapsibleContain.wrapInner('
').find('.ui-collapsible-content');
+ collapsibleContent = collapsibleContain.wrapInner('
').find('.ui-collapsible-content'),
+ collapsibleParent = $(this).closest('[data-role=collapsible-set]').addClass('ui-collapsible-set');
//replace collapsibleHeading if it's a legend
if(collapsibleHeading.is('legend')){
@@ -36,17 +37,12 @@ $.fn.collapsible = function(options){
.wrapInner('
')
.find('a:eq(0)')
.buttonMarkup({
- shadow: true,
+ shadow: !!!collapsibleParent.length,
corners:false,
iconPos: 'left',
icon: 'plus',
theme: o.theme
})
- .removeClass('ui-btn-corner-all')
- .addClass('ui-corner-all')
- .find('.ui-btn-inner')
- .removeClass('ui-btn-corner-all')
- .addClass('ui-corner-all')
.find('.ui-icon')
.removeAttr('class')
.buttonMarkup({
@@ -56,29 +52,85 @@ $.fn.collapsible = function(options){
icon: 'plus',
theme: o.iconTheme
});
+
+ if( !collapsibleParent.length ){
+ collapsibleHeading
+ .find('a:eq(0)')
+ .addClass('ui-corner-all')
+ .find('.ui-btn-inner')
+ .addClass('ui-corner-all');
+ }
+ else {
+ if( collapsibleContain.data('collapsible-last') ){
+ collapsibleHeading
+ .find('a:eq(0), .ui-btn-inner')
+ .addClass('ui-corner-bottom');
+ }
+ }
+
//events
collapsibleContain
- .bind('collapse', function(){
- collapsibleHeading
- .addClass('ui-collapsible-heading-collapsed')
- .find('.ui-collapsible-heading-status').text(o.expandCueText);
-
- collapsibleHeading.find('.ui-icon').removeClass('ui-icon-minus').addClass('ui-icon-plus');
- collapsibleContent.addClass('ui-collapsible-content-collapsed').attr('aria-hidden',true);
+ .bind('collapse', function(event){
+ if( !event.isDefaultPrevented() ){
+ event.preventDefault();
+ collapsibleHeading
+ .addClass('ui-collapsible-heading-collapsed')
+ .find('.ui-collapsible-heading-status').text(o.expandCueText);
+
+ collapsibleHeading.find('.ui-icon').removeClass('ui-icon-minus').addClass('ui-icon-plus');
+ collapsibleContent.addClass('ui-collapsible-content-collapsed').attr('aria-hidden',true);
+
+ if( collapsibleContain.data('collapsible-last') ){
+ collapsibleHeading
+ .find('a:eq(0), .ui-btn-inner')
+ .addClass('ui-corner-bottom');
+ }
+ }
})
- .bind('expand', function(){
- collapsibleHeading
- .removeClass('ui-collapsible-heading-collapsed')
- .find('.ui-collapsible-heading-status').text(o.collapseCueText);
-
- collapsibleHeading.find('.ui-icon').removeClass('ui-icon-plus').addClass('ui-icon-minus');
- collapsibleContent.removeClass('ui-collapsible-content-collapsed').attr('aria-hidden',false);
-
+ .bind('expand', function(event){
+ if( !event.isDefaultPrevented() ){
+ event.preventDefault();
+ collapsibleHeading
+ .removeClass('ui-collapsible-heading-collapsed')
+ .find('.ui-collapsible-heading-status').text(o.collapseCueText);
+
+ collapsibleHeading.find('.ui-icon').removeClass('ui-icon-plus').addClass('ui-icon-minus');
+ collapsibleContent.removeClass('ui-collapsible-content-collapsed').attr('aria-hidden',false);
+
+ if( collapsibleContain.data('collapsible-last') ){
+ collapsibleHeading
+ .find('a:eq(0), .ui-btn-inner')
+ .removeClass('ui-corner-bottom');
+ }
+
+ }
})
.trigger(o.collapsed ? 'collapse' : 'expand');
+
+ //close others in a set
+ if( collapsibleParent.length && !collapsibleParent.data("collapsiblebound") ){
+ collapsibleParent
+ .data("collapsiblebound", true)
+ .bind("expand", function( event ){
+ $(this).find( ".ui-collapsible-contain" )
+ .not( $(event.target).closest( ".ui-collapsible-contain" ) )
+ .not( "> .ui-collapsible-contain .ui-collapsible-contain" )
+ .trigger( "collapse" );
+ })
+ var set = collapsibleParent.find('[data-role=collapsible]')
+
+ set.first()
+ .find('a:eq(0)')
+ .addClass('ui-corner-top')
+ .find('.ui-btn-inner')
+ .addClass('ui-corner-top');
+
+ set.last().data('collapsible-last', true)
+ }
+
collapsibleHeading.click(function(){
if( collapsibleHeading.is('.ui-collapsible-heading-collapsed') ){
collapsibleContain.trigger('expand');
diff --git a/js/jquery.mobile.event.js b/js/jquery.mobile.event.js
index 8d13c7b014f..1dd9e628d4d 100644
--- a/js/jquery.mobile.event.js
+++ b/js/jquery.mobile.event.js
@@ -140,7 +140,7 @@ $.event.special.swipe = {
if ( start && stop ) {
if ( stop.time - start.time < 1000 &&
Math.abs( start.coords[0] - stop.coords[0]) > 30 &&
- Math.abs( start.coords[1] - stop.coords[1]) < 20 ) {
+ Math.abs( start.coords[1] - stop.coords[1]) < 75 ) {
start.origin
.trigger( "swipe" )
.trigger( start.coords[0] > stop.coords[0] ? "swipeleft" : "swiperight" );
diff --git a/js/jquery.mobile.forms.button.js b/js/jquery.mobile.forms.button.js
index 3d30493a0c3..94e81dfefeb 100644
--- a/js/jquery.mobile.forms.button.js
+++ b/js/jquery.mobile.forms.button.js
@@ -4,23 +4,36 @@
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
* Note: Code is in draft form and is subject to change
*/
-(function($){
-$.fn.customButton = function(){
- return $(this).each(function(){
- var button = $(this).addClass('ui-btn-hidden').attr('tabindex','-1');
+(function ( $ ) {
+$.widget( "mobile.button", $.mobile.widget, {
+ options: {},
+ _create: function(){
+ var $el = this.element;
+ $el
+ .addClass('ui-btn-hidden')
+ .attr('tabindex','-1');
+
//add ARIA role
- $('
'+ (button.text() || button.val()) +'')
- .buttonMarkup({
- theme: button.data('theme'),
- icon: button.data('icon'),
- iconpos: button.data('iconpos'),
- inline: button.data('inline')
- })
+ $( "
", {
+ "href": "#",
+ "role": "button",
+ "aria-label": $el.attr( "type" )
+ } )
+ .text( $el.text() || $el.val() )
+ .insertBefore( $el )
.click(function(){
- button.click();
+ $el.click();
return false;
})
- .insertBefore(button);
- });
-};
-})(jQuery);
\ No newline at end of file
+ .buttonMarkup({
+ theme: $el.data("theme"),
+ icon: $el.data("icon"),
+ iconpos: $el.data("iconpos"),
+ inline: $el.data("inline"),
+ corners: $el.data("corners"),
+ shadow: $el.data("shadow"),
+ iconshadow: $el.data("icon-shadow")
+ });
+ }
+});
+})( jQuery );
\ No newline at end of file
diff --git a/js/jquery.mobile.forms.checkboxradio.js b/js/jquery.mobile.forms.checkboxradio.js
index 31355f68460..1879ee86939 100644
--- a/js/jquery.mobile.forms.checkboxradio.js
+++ b/js/jquery.mobile.forms.checkboxradio.js
@@ -4,82 +4,106 @@
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
* Note: Code is in draft form and is subject to change
*/
-(function(jQuery){
+(function ( $ ) {
+$.widget( "mobile.checkboxradio", $.mobile.widget, {
+ options: {
+ theme: undefined,
+ icon: undefined
+ },
+ _create: function(){
+ var input = this.element,
+ label = jQuery("label[for='" + input.attr( "id" ) + "']"),
+ inputtype = input.attr( "type" ),
+ checkedicon = "ui-icon-" + inputtype + "-on",
+ uncheckedicon = "ui-icon-" + inputtype + "-off";
-jQuery.fn.customCheckboxRadio = function( options ) {
- return this.each(function() {
- var input = jQuery( this ),
- type = input.attr( "type" );
-
- if ( type === "checkbox" || type === "radio" ) {
- var o = jQuery.extend({
- theme: input.data( "theme" ),
- icon: input.data( "icon" ) || !input.parents( "[data-type='horizontal']" ).length,
- checkedicon: "ui-icon-" + type + "-on",
- uncheckedicon: "ui-icon-" + type + "-off"
- }, options );
-
- // get the associated label using the input's id
- var label = jQuery("label[for='" + input.attr( "id" ) + "']")
- .buttonMarkup({
- iconpos: o.icon ? "left" : "",
- theme: o.theme,
- icon: o.icon ? o.uncheckedicon : null,
- shadow: false
- });
+ if ( inputtype != "checkbox" && inputtype != "radio" ) { return; }
- var icon = label.find( ".ui-icon" );
+ label
+ .buttonMarkup({
+ iconpos: this.options.icon,
+ theme: this.options.theme,
+ icon: this.options.icon ? uncheckedicon : ( this.element.parents( "[data-type='horizontal']" ).length ? undefined : uncheckedicon ),
+ shadow: false
+ });
+
+ // wrap the input + label in a div
+ input
+ .add( label )
+ .wrapAll( "" );
+
+ label.bind({
+ mouseover: function() {
+ if( $(this).parent().is('.ui-disabled') ){ return false; }
+ },
- // wrap the input + label in a div
- input
- .add( label )
- .wrapAll( "" );
+ mousedown: function() {
+ if( $(this).parent().is('.ui-disabled') ){ return false; }
+ label.data( "state", input.attr( "checked" ) );
+ },
- // necessary for browsers that don't support the :hover pseudo class on labels
- label.bind({
- mousedown: function() {
- label.data( "state", input.attr( "checked" ) );
- },
+ click: function() {
+ setTimeout(function() {
+ if ( input.attr( "checked" ) === label.data( "state" ) ) {
+ input.trigger( "click" );
+ }
+ }, 1);
+ }
+ });
+
+ input
+ .bind({
+
click: function() {
- setTimeout(function() {
- if ( input.attr( "checked" ) === label.data( "state" ) ) {
- input.trigger( "click" );
- }
- }, 1);
+ jQuery( "input[name='" + input.attr( "name" ) + "']" ).checkboxradio( "refresh" );
+ },
+
+ focus: function() {
+ label.addClass( "ui-focus" );
+ },
+
+ blur: function() {
+ label.removeClass( "ui-focus" );
}
});
- //bind custom event, trigger it, bind click,focus,blur events
- input
- .bind({
- updateState: function() {
- if ( this.checked ) {
- label.addClass( "ui-btn-active" );
- icon.addClass( o.checkedicon );
- icon.removeClass( o.uncheckedicon );
-
- } else {
- label.removeClass( "ui-btn-active" );
- icon.removeClass( o.checkedicon );
- icon.addClass( o.uncheckedicon );
- }
- },
-
- click: function() {
- jQuery( "input[name='" + input.attr( "name" ) + "']" ).trigger( "updateState" );
- },
-
- focus: function() {
- label.addClass( "ui-focus" );
- },
+ this.refresh();
+
+ },
+
+ refresh: function( ){
+ var input = this.element,
+ label = jQuery("label[for='" + input.attr( "id" ) + "']"),
+ inputtype = input.attr( "type" ),
+ icon = label.find( ".ui-icon" ),
+ checkedicon = "ui-icon-" + inputtype + "-on",
+ uncheckedicon = "ui-icon-" + inputtype + "-off";
+
+ if ( input[0].checked ) {
+ label.addClass( "ui-btn-active" );
+ icon.addClass( checkedicon );
+ icon.removeClass( uncheckedicon );
- blur: function() {
- label.removeClass( "ui-focus" );
- }
- })
- .trigger( "updateState" );
+ } else {
+ label.removeClass( "ui-btn-active" );
+ icon.removeClass( checkedicon );
+ icon.addClass( uncheckedicon );
}
- });
-};
-
-})(jQuery);
+
+ if( input.is( ":disabled" ) ){
+ this.disable();
+ }
+ else {
+ this.enable();
+ }
+ },
+
+ disable: function(){
+ this.element.attr("disabled",true).parent().addClass("ui-disabled");
+ },
+
+ enable: function(){
+ this.element.attr("disabled",false).parent().removeClass("ui-disabled");
+ }
+});
+})( jQuery );
diff --git a/js/jquery.mobile.forms.select.js b/js/jquery.mobile.forms.select.js
index 10249d061a4..28eb927d36d 100644
--- a/js/jquery.mobile.forms.select.js
+++ b/js/jquery.mobile.forms.select.js
@@ -28,7 +28,6 @@ $.fn.customSelect = function(options){
button = $( "", {
"href": "#",
"role": "button",
- "title": "select menu",
"id": buttonId,
"aria-haspopup": "true",
"aria-owns": menuId
diff --git a/js/jquery.mobile.forms.textinput.js b/js/jquery.mobile.forms.textinput.js
index 984ad402b42..e7745ca31b2 100644
--- a/js/jquery.mobile.forms.textinput.js
+++ b/js/jquery.mobile.forms.textinput.js
@@ -24,14 +24,14 @@ jQuery.fn.customTextInput = function(options){
if(o.search){
focusedEl = input.wrap('').parent();
var clearbtn = $('clear text')
- .buttonMarkup({icon: 'delete', iconpos: 'notext', corners:true, shadow:true})
.click(function(){
input.val('').focus();
input.trigger('change');
clearbtn.addClass('ui-input-clear-hidden');
return false;
})
- .appendTo(focusedEl);
+ .appendTo(focusedEl)
+ .buttonMarkup({icon: 'delete', iconpos: 'notext', corners:true, shadow:true});
function toggleClear(){
if(input.val() == ''){
diff --git a/js/jquery.mobile.js b/js/jquery.mobile.js
index fc8351279d7..44367e5ecd7 100644
--- a/js/jquery.mobile.js
+++ b/js/jquery.mobile.js
@@ -46,6 +46,8 @@
$pageContainer,
startPageId = 'ui-page-start',
activePageClass = 'ui-page-active',
+ activeBtnClass = 'ui-btn-active',
+ activeClickedLink = null,
pageTransition,
forceBack,
transitions = 'slide slideup slidedown pop flip fade',
@@ -59,7 +61,8 @@
nextPageRole = null,
hashListener = true,
unHashedSelectors = '[data-rel=dialog]',
- baseUrl = location.protocol + '//' + location.host + location.pathname;
+ baseUrl = location.protocol + '//' + location.host + location.pathname,
+ resolutionBreakpoints = [320,480,768,1024];
// TODO: don't expose (temporary during code reorg)
$.mobile.urlStack = urlStack;
@@ -104,47 +107,43 @@
$('#ui-base').attr('href', baseUrl);
}
-
- // send a link through hash tracking
- jQuery.fn.ajaxClick = function() {
- var href = jQuery( this ).attr( "href" );
- pageTransition = jQuery( this ).data( "transition" ) || "slide";
- forceBack = jQuery( this ).data( "back" ) || undefined;
- nextPageRole = jQuery( this ).attr( "data-rel" );
-
- //find new base for url building
- var newBaseURL = getBaseURL();
-
- //if href is absolute but local, or a local ID, no base needed
- if( /^\//.test(href) || (/https?:\/\//.test(href) && !!(href).match(location.hostname)) || /^#/.test(href) ){
- newBaseURL = '';
+ //click routing - direct to HTTP or Ajax, accordingly
+ jQuery( "a" ).live( "click", function(event) {
+ var $this = $(this),
+ //get href, remove same-domain protocol and host
+ href = $this.attr( "href" ).replace( location.protocol + "//" + location.host, ""),
+ //if it still starts with a protocol, it's external, or could be :mailto, etc
+ external = /^(:?\w+:)/.test( href ) || $this.is( "[target],[rel=external]" );
+
+ if( href === '#' ){
+ //for links created purely for interaction - ignore
+ return false;
}
- // set href to relative path using baseURL and
- if( !/https?:\/\//.test(href) ){
- href = newBaseURL + href;
- }
-
- //if it's a non-local-anchor and Ajax is not supported, or if it's an external link, go to page without ajax
- if ( ( /^[^#]/.test(href) && !jQuery.support.ajax ) || ( /https?:\/\//.test(href) && !!!href.match(location.hostname) ) ) {
- location = href
+ activeClickedLink = $this.closest( ".ui-btn" ).addClass( activeBtnClass );
+
+ if( external ){
+ //deliberately redirect, in case click was triggered
+ location.href = href;
}
- else{
- if( $(this).is(unHashedSelectors) ){
- changePage(href, pageTransition, undefined);
- }
- else{
- changePage(href, pageTransition, undefined, true);
+ else {
+ //use ajax
+ var pageTransition = $this.data( "transition" ) || "slide",
+ forceBack = $this.data( "back" ) || undefined,
+ changeHashOnSuccess = !$this.is(unHashedSelectors);
+
+ nextPageRole = $this.attr( "data-rel" );
+
+ //if it's a relative href, prefix href with base url
+ if( href.indexOf('/') && href.indexOf('#') !== 0 ){
+ href = getBaseURL() + href;
}
+ href.replace(/^#/,'');
+
+ changePage(href, pageTransition, forceBack, changeHashOnSuccess);
}
- return this;
- };
-
- // ajaxify all navigable links
- jQuery( "a:not([href='#']):not([target]):not([rel='external']):not([href^='mailto:'])" ).live( "click", function(event) {
- jQuery( this ).ajaxClick();
- return false;
+ event.preventDefault();
});
// turn on/off page loading message.
@@ -190,6 +189,14 @@
return wrapper;
}
+ //remove active classes after page transition or error
+ function removeActiveLinkClass(){
+ if(activeClickedLink && !activeClickedLink.closest( '.ui-page-active' ).length ){
+ activeClickedLink.removeClass( activeBtnClass );
+ }
+ activeClickedLink = null;
+ }
+
//for getting or creating a new page
function changePage( to, transition, back, changeHash){
@@ -199,7 +206,7 @@
from = toIsArray ? to[0] : $.activePage,
to = toIsArray ? to[1] : to,
url = fileUrl = $.type(to) === "string" ? to.replace( /^#/, "" ) : null,
- back = (back !== undefined) ? back : (forceBack || ( urlStack.length > 1 && urlStack[ urlStack.length - 2 ].url === url )),
+ back = (back !== undefined) ? back : ( urlStack.length > 1 && urlStack[ urlStack.length - 2 ].url === url ),
transition = (transition !== undefined) ? transition : ( pageTransition || "slide" );
//unset pageTransition, forceBack
@@ -240,6 +247,7 @@
hashListener = true;
}, 500);
}
+ removeActiveLinkClass();
}
if(transition){
@@ -311,10 +319,8 @@
if( !$.support.dynamicBaseTag ){
var baseUrl = getBaseURL(fileUrl);
to.find('[src],[href]').each(function(){
- var thisHref = $(this).attr('href'),
- thisSrc = $(this).attr('src'),
- thisAttr = thisHref ? 'href' : 'src',
- thisUrl = thisHref || thisSrc;
+ var thisAttr = $(this).is('[href]') ? 'href' : 'src',
+ thisUrl = $(this).attr(thisAttr);
//if full path exists and is same, chop it - helps IE out
thisUrl.replace( location.protocol + '//' + location.host + location.pathname, '' );
@@ -339,7 +345,7 @@
},
error: function() {
pageLoading( true );
-
+ removeActiveLinkClass();
jQuery("
Error Loading Page
")
.css({ "display": "block", "opacity": 0.96, "top": $(window).scrollTop() + 100 })
.appendTo( $pageContainer )
@@ -400,32 +406,48 @@
});
//add breakpoint classes for faux media-q support
- function resolutionBreakpoints(){
+ function detectResolutionBreakpoints(){
var currWidth = $window.width(),
minPrefix = "min-width-",
maxPrefix = "max-width-",
minBreakpoints = [],
- maxBreakpoints = [];
+ maxBreakpoints = [],
+ unit = "px",
+ breakpointClasses;
- $html.removeClass( minPrefix + $.mobile.resolutionBreakpoints.join(" " + minPrefix) + maxPrefix + " " + $.mobile.resolutionBreakpoints.join(" " + maxPrefix) );
+ $html.removeClass( minPrefix + resolutionBreakpoints.join(unit + " " + minPrefix) + unit + " " +
+ maxPrefix + resolutionBreakpoints.join( unit + " " + maxPrefix) + unit );
- $.each($.mobile.resolutionBreakpoints,function( i ){
- if( currWidth >= $.mobile.resolutionBreakpoints[ i ] ){
- minBreakpoints.push( $.mobile.resolutionBreakpoints[ i ] );
+ $.each(resolutionBreakpoints,function( i ){
+ if( currWidth >= resolutionBreakpoints[ i ] ){
+ minBreakpoints.push( minPrefix + resolutionBreakpoints[ i ] + unit );
}
- if( currWidth <= $.mobile.resolutionBreakpoints[ i ] ){
- maxBreakpoints.push( $.mobile.resolutionBreakpoints[ i ] );
+ if( currWidth <= resolutionBreakpoints[ i ] ){
+ maxBreakpoints.push( maxPrefix + resolutionBreakpoints[ i ] + unit );
}
});
- $html.addClass( minPrefix + minBreakpoints.join(" " + minPrefix) + " " + maxPrefix + maxBreakpoints.join(" " + maxPrefix) );
+ if( minBreakpoints.length ){ breakpointClasses = minBreakpoints.join(" "); }
+ if( maxBreakpoints.length ){ breakpointClasses += " " + maxBreakpoints.join(" "); }
+
+ $html.addClass( breakpointClasses );
};
- //common breakpoints, overrideable, changeable
- $.mobile.resolutionBreakpoints = [320,480,768,1024];
- $window.bind( "orientationchange resize", resolutionBreakpoints);
- resolutionBreakpoints();
+ //add breakpoints now and on oc/resize events
+ $window.bind( "orientationchange resize", detectResolutionBreakpoints);
+ detectResolutionBreakpoints();
+ //common breakpoints, overrideable, changeable
+ $.mobile.addResolutionBreakpoints = function( newbps ){
+ if( $.type( newbps ) === "array" ){
+ resolutionBreakpoints = resolutionBreakpoints.concat( newbps );
+ }
+ else {
+ resolutionBreakpoints.push( newbps );
+ }
+ detectResolutionBreakpoints();
+ }
+
//insert mobile meta - these will need to be configurable somehow.
var headPrepends =
$head.prepend(
@@ -456,9 +478,9 @@
//dom-ready
jQuery(function(){
-
+ var $pages = jQuery("[data-role='page']");
//set up active page
- $startPage = $.activePage = jQuery("[data-role='page']").first();
+ $startPage = $.activePage = $pages.first();
//set page container
$pageContainer = $startPage.parent();
@@ -473,7 +495,7 @@
}
//initialize all pages present
- jQuery("[data-role='page']").page();
+ $pages.page();
//trigger a new hashchange, hash or not
$window.trigger( "hashchange", { manuallyTriggered: true } );
diff --git a/js/jquery.mobile.listview.filter.js b/js/jquery.mobile.listview.filter.js
index dfc8bf205f3..377583a3533 100644
--- a/js/jquery.mobile.listview.filter.js
+++ b/js/jquery.mobile.listview.filter.js
@@ -24,7 +24,7 @@ $( "[data-role='listview']" ).live( "listviewcreate", function() {
}).hide();
}
- listview._numberItems();
+ //listview._numberItems();
})
.appendTo( wrapper )
.customTextInput();
diff --git a/js/jquery.mobile.listview.js b/js/jquery.mobile.listview.js
index f88d600f79a..13a84abcf1c 100644
--- a/js/jquery.mobile.listview.js
+++ b/js/jquery.mobile.listview.js
@@ -109,9 +109,9 @@ jQuery.widget( "mobile.listview", jQuery.mobile.widget, {
}
});
- // tapping the whole LI triggers ajaxClick on the first link
- $list.delegate( "li", "tap", function(event) {
- if ( !jQuery( e.target ).closest( "a" ).length ) {
+ // tapping the whole LI triggers click on the first link
+ $list.delegate( "li", "click", function(event) {
+ if ( !jQuery( event.target ).closest( "a" ).length ) {
jQuery( this ).find( "a" ).first().trigger( "click" );
return false;
}
@@ -129,13 +129,15 @@ jQuery.widget( "mobile.listview", jQuery.mobile.widget, {
item.find( "img" ).addClass( "ui-li-thumb" ).each(function() {
jQuery( this ).closest( "li" )
- .addClass( jQuery(this).is( "ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" );
+ .addClass( jQuery(this).is( ".ui-li-icon" ) ? "ui-li-has-icon" : "ui-li-has-thumb" );
});
var aside = item.find( ".ui-li-aside" );
if ( aside.length ) {
- aside.prependTo( aside.parent() ); //shift aside to front for css float
+ aside.each(function(i, el) {
+ $(el).prependTo( $(el).parent() ); //shift aside to front for css float
+ });
}
if ( jQuery.support.cssPseudoElement || !jQuery.nodeName( item[0], "ol" ) ) {
@@ -148,6 +150,7 @@ jQuery.widget( "mobile.listview", jQuery.mobile.widget, {
var o = this.options,
$list = this.element,
+ self = this,
dividertheme = $list.data( "dividertheme" ) || o.dividerTheme,
li = $list.children( "li" ),
counter = jQuery.support.cssPseudoElement || !jQuery.nodeName( $list[0], "ol" ) ? 0 : 1;
@@ -264,7 +267,7 @@ jQuery.widget( "mobile.listview", jQuery.mobile.widget, {
item.addClass( itemClass );
if ( !create ) {
- this._itemApply( $list, item );
+ self._itemApply( $list, item );
}
});
},
diff --git a/js/jquery.mobile.navbar.js b/js/jquery.mobile.navbar.js
index 6c07fc432d7..947394092db 100755
--- a/js/jquery.mobile.navbar.js
+++ b/js/jquery.mobile.navbar.js
@@ -4,40 +4,36 @@
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
* Note: Code is in draft form and is subject to change
*/
-(function($){
-$.fn.navbar = function(settings){
- return $(this).each(function(){
-
- var o = $.extend({
- iconpos: $(this).data('iconpos') || 'top',
- transition: $(this).data('transition') || 'slideup'
- },settings);
-
- //wrap it with footer classes
- var $navbar = $(this).addClass('ui-navbar'),
- numTabs = $navbar.find('li').length,
- moreIcon = $navbar.find('a[data-icon]').length ? 'arrow-r' : null;
-
- if( moreIcon == null ){
- o.iconpos = null;
- $navbar.add( $navbar.children(0) ).addClass('ui-navbar-noicons');
- }
-
- $navbar
- //add ARIA role
- .attr("role","navigation")
- .find('ul')
- .grid({grid: numTabs > 2 ? 'b' : 'a'});
+(function ( $ ) {
+$.widget( "mobile.navbar", $.mobile.widget, {
+ options: {
+ iconpos: 'top'
+ },
+ _create: function(){
+ var $navbar = this.element,
+ $navbtns = $navbar.find("a"),
+ iconpos = $navbtns.filter('icon').length ? this.options.iconpos : undefined;
$navbar
- .find('ul a')
- .buttonMarkup({corners: false, shadow:false, iconpos: o.iconpos})
- .bind('tap',function(){
- //NOTE: we'll need to find a way to highlight an active tab at load as well
- $navbar.find('.ui-btn-active').removeClass('ui-btn-active');
- $(this).addClass('ui-btn-active');
+ .addClass('ui-navbar')
+ .attr("role","navigation")
+ .find("ul")
+ .grid({grid: $navbtns.length > 2 ? "b" : "a"});
+
+ if( !iconpos ){
+ $navbar.addClass("ui-navbar-noicons");
+ }
+
+ $navbtns
+ .buttonMarkup({
+ corners: false,
+ shadow: false,
+ iconpos: iconpos
});
-
- });
-};
-})(jQuery);
\ No newline at end of file
+
+ $navbar.delegate("a", "click",function(event){
+ $navbtns.removeClass("ui-btn-active");
+ });
+ }
+});
+})( jQuery );
\ No newline at end of file
diff --git a/js/jquery.mobile.page.js b/js/jquery.mobile.page.js
index bc3a2f8653d..3b1b53e7fd0 100644
--- a/js/jquery.mobile.page.js
+++ b/js/jquery.mobile.page.js
@@ -127,12 +127,12 @@ jQuery.widget( "mobile.page", jQuery.mobile.widget, {
// enchance form controls
this.element
.find( "[type='radio'], [type='checkbox']" )
- .customCheckboxRadio();
+ .checkboxradio();
this.element
.find( "button, [type='button'], [type='submit'], [type='reset'], [type='image']" )
.not( ".ui-nojs" )
- .customButton();
+ .button();
this.element
.find( "input, textarea" )
diff --git a/js/jquery.mobile.support.js b/js/jquery.mobile.support.js
index a489be1f8c9..73102d7ee51 100644
--- a/js/jquery.mobile.support.js
+++ b/js/jquery.mobile.support.js
@@ -46,13 +46,12 @@ function propExists( prop ){
function baseTagTest(){
var fauxBase = location.protocol + '//' + location.host + location.pathname + "ui-dir/",
base = $("
", {"href": fauxBase}).appendTo("head"),
- link = $( "
" ).prependTo( fakeBody );
- $.support.dynamicBaseTag = !!link[0].href.match(fauxBase);
+ link = $( "
" ).prependTo( fakeBody ),
+ rebase = link[0].href;
base.remove();
+ return rebase.indexOf(fauxBase) === 0;
};
-baseTagTest();
-
$.extend( $.support, {
orientation: "orientation" in window,
touch: "ontouchend" in document,
@@ -61,7 +60,8 @@ $.extend( $.support, {
mediaquery: $.media('only all'),
cssPseudoElement: !!propExists('content'),
boxShadow: !!propExists('boxShadow') && !bb,
- scrollTop: ("pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[0]) && !webos
+ scrollTop: ("pageXOffset" in window || "scrollTop" in document.documentElement || "scrollTop" in fakeBody[0]) && !webos,
+ dynamicBaseTag: baseTagTest()
});
fakeBody.remove();
diff --git a/themes/default/jquery.mobile.button.css b/themes/default/jquery.mobile.button.css
index 8aff729f764..a4c197b937d 100644
--- a/themes/default/jquery.mobile.button.css
+++ b/themes/default/jquery.mobile.button.css
@@ -19,10 +19,10 @@
.ui-bar .ui-btn-icon-left .ui-btn-inner { padding-left: 27px; }
.ui-btn-icon-right .ui-btn-inner { padding-right: 33px; }
.ui-header .ui-btn-icon-right .ui-btn-inner,
-.ui-footer .ui-btn-icon-right .ui-btn-inner
+.ui-footer .ui-btn-icon-right .ui-btn-inner,
.ui-bar .ui-btn-icon-right .ui-btn-inner { padding-right: 27px; }
.ui-btn-icon-top .ui-btn-inner { padding-top: 33px; }
-.ui-header .ui-btn-icon-top .ui-btn-inner
+.ui-header .ui-btn-icon-top .ui-btn-inner,
.ui-footer .ui-btn-icon-top .ui-btn-inner,
.ui-bar .ui-btn-icon-top .ui-btn-inner { padding-top: 27px; }
.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 33px; }
diff --git a/themes/default/jquery.mobile.collapsible.css b/themes/default/jquery.mobile.collapsible.css
index 011d8c7469b..5d89e050ca1 100644
--- a/themes/default/jquery.mobile.collapsible.css
+++ b/themes/default/jquery.mobile.collapsible.css
@@ -9,7 +9,10 @@
.ui-collapsible-heading a .ui-btn-inner { padding-left: 40px; }
.ui-collapsible-heading a span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; }
.ui-collapsible-heading a span.ui-btn .ui-btn-inner { padding: 0; }
-.ui-collapsible-heading a span.ui-btn .ui-icon { left: 2px; }
+.ui-collapsible-heading a span.ui-btn .ui-icon { left: 0; margin-top: -10px; }
.ui-collapsible-heading-status { position:absolute; left:-99999px; }
.ui-collapsible-content { display: block; padding: 10px 0 10px 8px; }
-.ui-collapsible-content-collapsed { display: none; }
\ No newline at end of file
+.ui-collapsible-content-collapsed { display: none; }
+
+.ui-collapsible-set { margin: .5em 0; }
+.ui-collapsible-set .ui-collapsible-contain { margin: -1px 0 0; }
\ No newline at end of file
diff --git a/themes/default/jquery.mobile.controlgroup.css b/themes/default/jquery.mobile.controlgroup.css
index bbe54ae244f..abeffef57a2 100644
--- a/themes/default/jquery.mobile.controlgroup.css
+++ b/themes/default/jquery.mobile.controlgroup.css
@@ -9,13 +9,13 @@
.ui-controlgroup-controls { display: block; width: 95%;}
.ui-controlgroup li { list-style: none; }
.ui-controlgroup-vertical .ui-btn,
-.ui-controlgroup-vertical div.ui-checkbox, .ui-controlgroup-vertical div.ui-radio { margin: 0; border-bottom-width: 0; }
+.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0; }
.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; }
.ui-controlgroup-horizontal { padding: 0; }
.ui-controlgroup-horizontal .ui-btn,
-.ui-controlgroup-horizontal div.ui-checkbox, .ui-controlgroup-horizontal div.ui-radio { margin: 0 -5px 0 0; display: inline-block; }
-.ui-controlgroup-horizontal div.ui-checkbox .ui-btn, .ui-controlgroup-horizontal div.ui-radio .ui-btn,
-.ui-controlgroup-horizontal div.ui-checkbox:last-child, .ui-controlgroup-horizontal div.ui-radio:last-child { margin-right: 0; }
+.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { margin: 0 -5px 0 0; display: inline-block; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn,
+.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; }
.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; }
.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px; }
/* conflicts with listview..
@@ -23,5 +23,5 @@
.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner { padding: 5px 6px 5px 5px; }
*/
-.min-width-480 .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
-.min-width-480 .ui-controlgroup-controls { width: 60%; display: inline-block; }
\ No newline at end of file
+.min-width-480px .ui-controlgroup-label { vertical-align: top; display: inline-block; width: 20%; margin: 0 2% 0 0; }
+.min-width-480px .ui-controlgroup-controls { width: 60%; display: inline-block; }
\ No newline at end of file
diff --git a/themes/default/jquery.mobile.core.css b/themes/default/jquery.mobile.core.css
index c82b9854bc8..fd70f1a031d 100644
--- a/themes/default/jquery.mobile.core.css
+++ b/themes/default/jquery.mobile.core.css
@@ -21,7 +21,7 @@
.ui-page-active { display: block; overflow: visible; }
/* loading screen */
-.ui-loading, .ui-loading body { overflow: hidden !important; }
+.ui-loading body { overflow: hidden !important; }
.ui-loading .ui-loader { display: block; }
.ui-loading .ui-page { overflow: hidden; }
.ui-loader { display: none; position: absolute; opacity: .85; z-index: 10; top: 75px; left: 50%; width: 200px; margin-left: -130px; padding: 20px 30px; }
diff --git a/themes/default/jquery.mobile.forms.checkboxradio.css b/themes/default/jquery.mobile.forms.checkboxradio.css
index ee64768c059..87225b44099 100644
--- a/themes/default/jquery.mobile.forms.checkboxradio.css
+++ b/themes/default/jquery.mobile.forms.checkboxradio.css
@@ -3,7 +3,7 @@
* Copyright (c) jQuery Project
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
*/
-div.ui-checkbox, div.ui-radio { position:relative; margin: .2em 0 .5em; }
+.ui-checkbox, .ui-radio { position:relative; margin: .2em 0 .5em; }
.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; }
.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; }
.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }
diff --git a/themes/default/jquery.mobile.forms.select.css b/themes/default/jquery.mobile.forms.select.css
index 427c5598b39..5120e1ea7bb 100644
--- a/themes/default/jquery.mobile.forms.select.css
+++ b/themes/default/jquery.mobile.forms.select.css
@@ -23,5 +23,5 @@ label.ui-select { font-size: 16px; line-height: 1.4; font-weight: normal; margi
/*used in listbox - to be removed/replaced with page-style hiding*/
.ui-helper-hidden,.ui-mobile .ui-content-hidden { display: none; }
-.min-width-480 label.ui-select { display: inline-block; width: 20%; margin: 0 2% 0 0; }
-.min-width-480 .ui-select { width: 60%; display: inline-block; }
\ No newline at end of file
+.min-width-480px label.ui-select { display: inline-block; width: 20%; margin: 0 2% 0 0; }
+.min-width-480px .ui-select { width: 60%; display: inline-block; }
\ No newline at end of file
diff --git a/themes/default/jquery.mobile.forms.slider.css b/themes/default/jquery.mobile.forms.slider.css
index 9ae108f53fe..457e3a1e817 100644
--- a/themes/default/jquery.mobile.forms.slider.css
+++ b/themes/default/jquery.mobile.forms.slider.css
@@ -9,8 +9,8 @@ select.ui-slider-switch { display: none; }
div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 15px; top: 4px; width: 66%; }
a.ui-slider-handle { position: absolute; z-index: 10; top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; }
a.ui-slider-handle .ui-btn-inner { padding-left: 0; padding-right: 0; }
-.min-width-480 label.ui-slider { display: inline-block; width: 20%; margin: 0 2% 0 0; }
-.min-width-480 div.ui-slider { width: 45%; }
+.min-width-480px label.ui-slider { display: inline-block; width: 20%; margin: 0 2% 0 0; }
+.min-width-480px div.ui-slider { width: 45%; }
div.ui-slider-switch { height: 32px; overflow: hidden; margin-left: 0; }
div.ui-slider-inneroffset { margin-left: 50%; position: absolute; top: 1px; height: 100%; width: 50%; }
diff --git a/themes/default/jquery.mobile.forms.textinput.css b/themes/default/jquery.mobile.forms.textinput.css
index 8fb38b7d4f1..279ab944998 100644
--- a/themes/default/jquery.mobile.forms.textinput.css
+++ b/themes/default/jquery.mobile.forms.textinput.css
@@ -12,7 +12,7 @@ textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear;
.ui-input-search .ui-input-clear-hidden { display: none; }
/* orientation adjustments - incomplete!*/
-.min-width-480 label.ui-input-text { vertical-align: top; }
-.min-width-480 label.ui-input-text, label.ui-select { display: inline-block; width: 20%; margin: 0 2% 0 0; }
-.min-width-480 input.ui-input-text, textarea.ui-input-text, .ui-input-search { width: 60%; display: inline-block; }
-.min-width-480 .ui-input-search { width: 50%; }
\ No newline at end of file
+.min-width-480px label.ui-input-text { vertical-align: top; }
+.min-width-480px label.ui-input-text, label.ui-select { display: inline-block; width: 20%; margin: 0 2% 0 0; }
+.min-width-480px input.ui-input-text, textarea.ui-input-text, .ui-input-search { width: 60%; display: inline-block; }
+.min-width-480px .ui-input-search { width: 50%; }
\ No newline at end of file
diff --git a/themes/default/jquery.mobile.theme.css b/themes/default/jquery.mobile.theme.css
index 1a132e796ab..f5d69ef28df 100755
--- a/themes/default/jquery.mobile.theme.css
+++ b/themes/default/jquery.mobile.theme.css
@@ -55,7 +55,7 @@
.ui-bar-c { border: 1px solid #B3B3B3; background: #e9eaeb; color: #3E3E3E; font-weight: bold; text-shadow: 0 1px 1px #fff; background-image: -moz-linear-gradient(top, #f0f0f0, #e9eaeb); background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #f0f0f0),color-stop(1, #e9eaeb)); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0', EndColorStr='#e9eaeb')"; }
.ui-bar-c, .ui-bar-c input, .ui-bar-c select, .ui-bar-c textarea, .ui-bar-c button { font-family: Helvetica, Arial, sans-serif; }
-.ui-body-c { border: 1px solid #B3B3B3; color: #333333; text-shadow: 0 1px 0 #fff; background: #f0f0f0; background-image: -moz-linear-gradient(top, #fff, #f0f0f0); background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #fff),color-stop(1, #f0f0f0)); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#fff', EndColorStr='#f0f0f0')"; }
+.ui-body-c { border: 1px solid #B3B3B3; color: #333333; text-shadow: 0 1px 0 #fff; background: #f0f0f0; background-image: -moz-linear-gradient(top, #fff, #f0f0f0); background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #fff),color-stop(1, #f0f0f0)); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#f0f0f0')"; }
.ui-body-c, .ui-body-c input, .ui-body-c select, .ui-body-c textarea, .ui-body-c button { font-family: Helvetica, Arial, sans-serif; }
.ui-body-c .ui-link-inherit { color: #333333; }
.ui-body-c .ui-link { color: #2489CE; font-weight: bold; }
@@ -96,7 +96,7 @@
.ui-bar-e .ui-link-inherit { color: #333; }
.ui-bar-e .ui-link { color: #2489CE; font-weight: bold; }
-.ui-body-e { border: 1px solid #F7C942; color: #333333; text-shadow: 0 1px 0 #fff; background: #faeb9e; background-image: -moz-linear-gradient(top, #fff, #faeb9e); background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #fff),color-stop(1, #faeb9e)); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#fff', EndColorStr='#faeb9e')"; }
+.ui-body-e { border: 1px solid #F7C942; color: #333333; text-shadow: 0 1px 0 #fff; background: #faeb9e; background-image: -moz-linear-gradient(top, #fff, #faeb9e); background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #fff),color-stop(1, #faeb9e)); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#faeb9e')"; }
.ui-body-e, .ui-body-e input, .ui-body-e select, .ui-body-e textarea, .ui-body-e button { font-family: Helvetica, Arial, sans-serif; }
.ui-body-e .ui-link-inherit { color: #333333; }
.ui-body-e .ui-link { color: #2489CE; font-weight: bold; }
@@ -139,7 +139,7 @@ a.ui-link-inherit { text-decoration: none !important; }
/* Interaction Cues
----------------------------------*/
-.ui-state-disabled { cursor: default !important; opacity: .3; }
+.ui-disabled { cursor: default !important; opacity: .3; }
/* Icons
----------------------------------*/
diff --git a/themes/default/jquery.mobile.transitions.css b/themes/default/jquery.mobile.transitions.css
index 46423829f2d..0ea9f54a709 100644
--- a/themes/default/jquery.mobile.transitions.css
+++ b/themes/default/jquery.mobile.transitions.css
@@ -4,9 +4,10 @@
* Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses.
*/
.spin {
--webkit-animation-name: spin;
--webkit-animation-duration: 1s;
--webkit-animation-iteration-count: infinite;
+ -webkit-transform: rotate(360deg);
+ -webkit-animation-name: spin;
+ -webkit-animation-duration: 1s;
+ -webkit-animation-iteration-count: infinite;
}
@-webkit-keyframes spin {
from {-webkit-transform: rotate(0deg);}
@@ -22,22 +23,27 @@ Built by David Kaneda and maintained by Jonathan Stark.
}
.slide.in {
+ -webkit-transform: translateX(0);
-webkit-animation-name: slideinfromright;
}
.slide.out {
+ -webkit-transform: translateX(-100%);
-webkit-animation-name: slideouttoleft;
}
.slide.in.reverse {
+ -webkit-transform: translateX(0);
-webkit-animation-name: slideinfromleft;
}
.slide.out.reverse {
+ -webkit-transform: translateX(100%);
-webkit-animation-name: slideouttoright;
}
.slideup.in {
+ -webkit-transform: translateY(0);
-webkit-animation-name: slideinfrombottom;
z-index: 10;
}
@@ -48,6 +54,7 @@ Built by David Kaneda and maintained by Jonathan Stark.
}
.slideup.out.reverse {
+ -webkit-transform: translateY(100%);
z-index: 10;
-webkit-animation-name: slideouttobottom;
}
@@ -57,6 +64,7 @@ Built by David Kaneda and maintained by Jonathan Stark.
-webkit-animation-name: dontmove;
}
.slidedown.in {
+ -webkit-transform: translateY(0);
-webkit-animation-name: slideinfromtop;
z-index: 10;
}
@@ -67,6 +75,7 @@ Built by David Kaneda and maintained by Jonathan Stark.
}
.slidedown.out.reverse {
+ -webkit-transform: translateY(-100%);
z-index: 10;
-webkit-animation-name: slideouttotop;
}
@@ -127,6 +136,7 @@ Built by David Kaneda and maintained by Jonathan Stark.
}
.fade.in {
+ opacity: 1;
z-index: 10;
-webkit-animation-name: fadein;
}
@@ -134,25 +144,39 @@ Built by David Kaneda and maintained by Jonathan Stark.
z-index: 0;
}
+/* The properties in this body rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+body {
+ -webkit-perspective: 1000;
+}
+
.flip {
-webkit-animation-duration: .65s;
}
.flip.in {
+ -webkit-transform: rotateY(0) scale(1);
-webkit-animation-name: flipinfromleft;
}
.flip.out {
+ -webkit-transform: rotateY(-180deg) scale(.8);
-webkit-animation-name: flipouttoleft;
}
/* Shake it all about */
.flip.in.reverse {
+ -webkit-transform: rotateY(0) scale(1);
-webkit-animation-name: flipinfromright;
}
.flip.out.reverse {
+ -webkit-transform: rotateY(180deg) scale(.8);
-webkit-animation-name: flipouttoright;
}
@@ -189,11 +213,15 @@ Built by David Kaneda and maintained by Jonathan Stark.
}
.pop.in {
+ -webkit-transform: scale(1);
+ opacity: 1;
-webkit-animation-name: popin;
z-index: 10;
}
.pop.out.reverse {
+ -webkit-transform: scale(.2);
+ opacity: 0;
-webkit-animation-name: popout;
z-index: 10;
}
diff --git a/themes/valencia/jquery.mobile.theme.css b/themes/valencia/jquery.mobile.theme.css
index b8c5745fb80..6f7e4223e8d 100644
--- a/themes/valencia/jquery.mobile.theme.css
+++ b/themes/valencia/jquery.mobile.theme.css
@@ -700,7 +700,7 @@ a.ui-link-inherit {
/* Interaction Cues
----------------------------------*/
-.ui-state-disabled {
+.ui-disabled {
cursor: default !important;
opacity: .3;
}