Roo/bootstrap/Navbar.js
[roojs1] / Roo / bootstrap / Navbar.js
index d7136e8..926eb3c 100644 (file)
@@ -9,19 +9,7 @@
  * @class Roo.bootstrap.Navbar
  * @extends Roo.bootstrap.Component
  * Bootstrap Navbar class
- * @cfg {Boolean} bar is a bar?
- * @cfg {String} position (fixed-top|fixed-bottom|static-top) position
- * @cfg {String} brand what is brand
- * @cfg {Boolean} inverse is inverted color
- * @cfg {String} type (nav | pills | tabs)
- * @cfg {Boolean} arrangement stacked | justified
- * @cfg {String} align (left | right) alignment
- * @cfg {String} brand_href href of the brand
- * @cfg {Boolean} main (true|false) main nav bar? default false
- * @cfg {Boolean} loadMask (true|false) loadMask on the bar
- * @cfg {String} tag (header|footer|nav|div) default is nav 
 
- * 
  * @constructor
  * Create a new Navbar
  * @param {Object} config The config object
 
 Roo.bootstrap.Navbar = function(config){
     Roo.bootstrap.Navbar.superclass.constructor.call(this, config);
-    
+    this.addEvents({
+        // raw events
+        /**
+         * @event beforetoggle
+         * Fire before toggle the menu
+         * @param {Roo.EventObject} e
+         */
+        "beforetoggle" : true
+    });
 };
 
 Roo.extend(Roo.bootstrap.Navbar, Roo.bootstrap.Component,  {
     
     
-    bar: false,
-    brand: '',
-    inverse: false,
-    position: '',
-    align : false,
-    type: false,
-    arrangement: '',
-    brand_href: false,
-    main : false,
-    loadMask : false,
-    tag : false,
-    
+   
     // private
     navItems : false,
+    loadMask : false,
+    
     
     getAutoCreate : function(){
         
         
+        throw { message : "nav bar is now a abstract base class - use NavSimplebar / NavHeaderbar / NavSidebar etc..."};
         
-        var cfg = {
-            cls : 'navbar'
-        };
-         
-       
-        cfg.cn = [
-            {
-                cls: 'nav',
-                tag : 'ul'
-            }
-        ];
-        
-         
-        this.type = this.type || 'nav';
-        if (['tabs','pills'].indexOf(this.type)!==-1) {
-            cfg.cn[0].cls += ' nav-' + this.type
-        } else {
-            if (this.type!=='nav') {
-                Roo.log('nav type must be nav/tabs/pills')
-            }
-            cfg.cn[0].cls += ' navbar-nav'
-        }
-        
-        if (['stacked','justified'].indexOf(this.arrangement)!==-1) {
-            cfg.cn[0].cls += ' nav-' + this.arrangement;
-        }
-        
-        
-        if (this.align === 'right') {
-            cfg.cn[0].cls += ' navbar-right';
-        }
-        
-        if (this.inverse) {
-            cfg.cls += ' navbar-inverse';
-            
-        }
-        
-        
-        return cfg;
     },
     
     initEvents :function ()
     {
         //Roo.log(this.el.select('.navbar-toggle',true));
         this.el.select('.navbar-toggle',true).on('click', function() {
-           // Roo.log('click');
-            this.el.select('.navbar-collapse',true).toggleClass('in');                                 
+            if(this.fireEvent('beforetoggle', this) !== false){
+                var ce = this.el.select('.navbar-collapse',true).first();
+                ce.toggleClass('in'); // old...
+                if (ce.hasClass('collapse')) {
+                    // show it...
+                    ce.removeClass('collapse');
+                    ce.addClass('show');
+                    
+                        ce.setHeight(ce.getHeight()); // resize it ...
+                        ce.removeClass('collapsing');
+                        ce.addClass('collapsing');
+                    
+                    // now flag it as moving..
+                    
+                    
+                    (function() { ce.removeClass('collapsing'); }).defer(500);
+                } else {
+                    ce.addClass('collapsing');
+                    ce.removeClass('show');
+                    (function() {
+                        ce.removeClass('collapsing');
+                        ce.addClass('collapse');
+                    }).defer(200);
+                    
+                }
+            }
+            
         }, this);
         
         var mark = {
             tag: "div",
             cls:"x-dlg-mask"
-        }
+        };
         
         this.maskEl = Roo.DomHelper.append(this.el, mark, true);
         
@@ -124,7 +98,7 @@ Roo.extend(Roo.bootstrap.Navbar, Roo.bootstrap.Component,  {
     
     getChildContainer : function()
     {
-        if (this.bar === true) {
+        if (this.el.select('.collapse').getCount()) {
             return this.el.select('.collapse',true).first();
         }
         
@@ -139,7 +113,8 @@ Roo.extend(Roo.bootstrap.Navbar, Roo.bootstrap.Component,  {
     unmask : function()
     {
         this.maskEl.hide();
-    }
+    } 
+