diff --git a/_globalnav.html b/_globalnav.html index 778442e3..97acaa99 100644 --- a/_globalnav.html +++ b/_globalnav.html @@ -89,10 +89,13 @@
diff --git a/css/jQuery.mobile.globalnav.css b/css/jQuery.mobile.globalnav.css index 535b1566..db198844 100644 --- a/css/jQuery.mobile.globalnav.css +++ b/css/jQuery.mobile.globalnav.css @@ -4,7 +4,16 @@ * Dual licensed under the MIT (MIT-LICENSE.txt) or GPL (GPL-LICENSE.txt) licenses. */ .ui-globalnav { overflow: hidden; width: 100%; overflow: hidden; } -.ui-globalnav ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} -.ui-globalnav li { float: left; margin:0; padding:0; } -.ui-globalnav li .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0 -1px; outline: none; border-top-width: 0; border-bottom-width: 0; } -.ui-globalnav li .ui-btn-inner { padding-left: 15px; padding-right: 15px; } \ No newline at end of file +.ui-globalnav-disable { display: none; } +.ui-globalnav ul, .ui-globalnav-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;} +.ui-globalnav-collapsed ul { float: left; width: 75%; } +.ui-globalnav-collapsed .ui-globalnav-toggle { float: left; width: 25%; } +.ui-globalnav li.ui-globalnav-truncate { position: absolute; left: -99999px; top: -99999px; } +.ui-globalnav li .ui-btn, .ui-globalnav .ui-globalnav-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0 -1px; outline: none; border-top-width: 0; border-bottom-width: 0; } +.ui-globalnav .ui-btn-inner { padding-left: 15px; padding-right: 15px; } + + +.ui-globalnav-expanded .ui-btn { margin-left: 7px; margin-top: 7px; } +.ui-globalnav-expanded .ui-block-c .ui-btn { margin-right: 7px; } +.ui-globalnav-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; } +.ui-globalnav-expanded .ui-btn-icon-top .ui-icon { top: 15px; } \ No newline at end of file diff --git a/js/jQuery.mobile.globalnav.js b/js/jQuery.mobile.globalnav.js index 0f9c61a6..e2a3370f 100755 --- a/js/jQuery.mobile.globalnav.js +++ b/js/jQuery.mobile.globalnav.js @@ -10,24 +10,53 @@ $.fn.globalnav = function(settings){ if($(this).find('.ui-globalnav').length){ return; } //remove any other globalnav currently present - $('.ui-globalnav').remove(); + $('[data-role="globalnav"]:has(.ui-globalnav)').remove(); var o = $.extend({ - fixedAs: 'footer' + fixedAs: 'footer', + moreText: 'More...', + thisId: $(this).parents('.ui-page').attr('id') + '-nav' },settings); - //wrap it with footer classes - var $globalnav = $(this); - $globalnav - .wrapInner('
') - .children(0) - .addClass(o.fixedAs == 'footer' ? 'ui-footer' : 'ui-header'); + $(this) + .attr('id', o.thisId) + .wrapInner('
'); + + //wrap it with footer classes + var $globalnav = $(this).find('.ui-globalnav'), + numTabs = $globalnav.find('li').length; + + $globalnav + .find('ul') + .grid({grid: numTabs > 2 ? 'b' : 'a'}) + + if(numTabs > 3 ){ + var moreId = o.thisId + '-more', + $navToggle = $('' + o.moreText + ''), + $truncatedLis = $globalnav.find('li:gt(2)'), + $newPage = $('

' + o.moreText + '

'), + $newPageContent = $globalnav.find('ul').clone(); + + $newPageContent + .find('a') + .buttonMarkup({iconPos: 'top', theme: 'b', icon: 'arrow-r'}) + + $newPage.append( $newPageContent ).appendTo('body'); + + $navToggle + .wrap('
') + .parent() + .appendTo($globalnav); + + $navToggle.buttonMarkup({corners: false, iconPos: 'top', icon: 'arrow-r'}); + + $globalnav.addClass('ui-globalnav-collapsed'); + + $truncatedLis.addClass('ui-globalnav-truncate'); + } - //set up the nav tabs widths (currently evenly divided widths, to be improved later) $globalnav - .find('ul') - .grid({grid: $globalnav.find('li').length > 2 ? 'b' : 'a'}) - .find('a') + .find('ul a') .buttonMarkup({corners: false, iconPos: 'top', icon: 'arrow-u'}) .bind('tap',function(){ //NOTE: we'll need to find a way to highlight an active tab at load as well @@ -35,10 +64,9 @@ $.fn.globalnav = function(settings){ $(this).addClass('ui-btn-active'); }); - $globalnav + $(this) .appendTo('body') .fixHeaderFooter(); - }); }; })(jQuery); \ No newline at end of file