Partial Fix #5654 - roojspacker - get it working as a doc tool...
[roojs1] / Roo / bootstrap / NavSidebarItem.js
index c34fc85..893b962 100644 (file)
  * @extends Roo.bootstrap.NavItem
  * Bootstrap Navbar.NavSidebarItem class
  * {String} badgeWeight (default|primary|success|info|warning|danger)the extra classes for the badge
+ * {Boolean} open is the menu open
+ * {Boolean} buttonView use button as the tigger el rather that a (default false)
+ * {String} buttonWeight (default|primary|success|info|warning|danger)the extra classes for the button
+ * {String} buttonSize (sm|md|lg)the extra classes for the button
+ * {Boolean} showArrow show arrow next to the text (default true)
  * @constructor
  * Create a new Navbar Button
  * @param {Object} config The config object
@@ -44,6 +49,16 @@ Roo.extend(Roo.bootstrap.NavSidebarItem, Roo.bootstrap.NavItem,  {
     
     badgeWeight : 'default',
     
+    open: false,
+    
+    buttonView : false,
+    
+    buttonWeight : 'default',
+    
+    buttonSize : 'md',
+    
+    showArrow : true,
+    
     getAutoCreate : function(){
         
         
@@ -54,16 +69,22 @@ Roo.extend(Roo.bootstrap.NavSidebarItem, Roo.bootstrap.NavItem,  {
                 html : '',
                 cn : []
         };
+        
+        if(this.buttonView){
+            a = {
+                tag: 'button',
+                href : this.href || '#',
+                cls: 'btn btn-' + this.buttonWeight + ' btn-' + this.buttonSize + 'roo-button-dropdown-toggle',
+                html : this.html,
+                cn : []
+            };
+        }
+        
         var cfg = {
             tag: 'li',
             cls: '',
             cn: [ a ]
         };
-        var span = {
-            tag: 'span',
-            html : this.html || ''
-        };
-        
         
         if (this.active) {
             cfg.cls += ' active';
@@ -72,33 +93,56 @@ Roo.extend(Roo.bootstrap.NavSidebarItem, Roo.bootstrap.NavItem,  {
         if (this.disabled) {
             cfg.cls += ' disabled';
         }
-        
+        if (this.open) {
+            cfg.cls += ' open x-open';
+        }
         // left icon..
         if (this.glyphicon || this.icon) {
             var c = this.glyphicon  ? ('glyphicon glyphicon-'+this.glyphicon)  : this.icon;
             a.cn.push({ tag : 'i', cls : c }) ;
         }
-        // html..
-        a.cn.push(span);
-        // then badge..
-        if (this.badge !== '') {
+        
+        if(!this.buttonView){
+            var span = {
+                tag: 'span',
+                html : this.html || ''
+            };
+
+            a.cn.push(span);
             
+        }
+        
+        if (this.badge !== '') {
             a.cn.push({ tag: 'span',  cls : 'badge pull-right badge-' + this.badgeWeight, html: this.badge }); 
         }
-        // fi
+        
         if (this.menu) {
-            a.cn.push({ tag : 'i', cls : 'glyphicon glyphicon-chevron-down pull-right'});
-            a.cls += 'dropdown-toggle treeview' ;
             
+            if(this.showArrow){
+                a.cn.push({ tag : 'i', cls : 'glyphicon glyphicon-chevron-down pull-right'});
+            }
+            
+            a.cls += ' dropdown-toggle treeview' ;
+        }
+        
+        return cfg;
+    },
+    
+    initEvents : function()
+    { 
+        if (typeof (this.menu) != 'undefined') {
+            this.menu.parentType = this.xtype;
+            this.menu.triggerEl = this.el;
+            this.menu = this.addxtype(Roo.apply({}, this.menu));
         }
         
+        this.el.on('click', this.onClick, this);
         
+        if(this.badge !== ''){
+            this.badgeEl = this.el.select('.badge', true).first().setVisibilityMode(Roo.Element.DISPLAY);
+        }
         
-        return cfg;
-         
-          
     },
-  
     
     onClick : function(e)
     {
@@ -111,7 +155,7 @@ Roo.extend(Roo.bootstrap.NavSidebarItem, Roo.bootstrap.NavItem,  {
             e.preventDefault();
         }
         
-        this.fireEvent('click', this);
+        this.fireEvent('click', this, e);
     },
     
     disable : function()
@@ -172,21 +216,10 @@ Roo.extend(Roo.bootstrap.NavSidebarItem, Roo.bootstrap.NavItem,  {
         }
         
         this.badgeEl.dom.innerHTML = str;
-    },
+    }
     
    
-      
-    initEvents : function()
-    { 
-        this.el.on('click', this.onClick, this);
-       
-    
-        if(this.badge !== ''){
-            this.badgeEl = this.el.select('.badge', true).first().setVisibilityMode(Roo.Element.DISPLAY);
-        }
-        
-    }
+     
  
 });