* - LGPL
*
* navbar
- *
+ * navbar-fixed-top
+ * navbar-expand-md fixed-top
*/
/**
* @cfg {String} brand_href href of the brand
* @cfg {Boolean} srButton generate the (screen reader / mobile) sr-only button default true
* @cfg {Boolean} autohide a top nav bar header that hides on scroll.
+ * @cfg {Boolean} desktopCenter should the header be centered on desktop using a container class
* @cfg {Roo.bootstrap.Row} mobilerow - a row to display on mobile only..
*
* @constructor
Roo.bootstrap.NavHeaderbar = function(config){
Roo.bootstrap.NavHeaderbar.superclass.constructor.call(this, config);
-
- if (this.mobilerow !== false) {
- this.mobilerow = Roo.factory(this.mobilerow);
- }
-
+
};
Roo.extend(Roo.bootstrap.NavHeaderbar, Roo.bootstrap.NavSimplebar, {
brand_href: false,
srButton : true,
autohide : false,
- mobilerow : false,
+ desktopCenter : false,
+
getAutoCreate : function(){
var cfg = {
tag: this.nav || 'nav',
- cls: 'navbar',
+ cls: 'navbar navbar-expand-md',
role: 'navigation',
cn: []
};
+ var cn = cfg.cn;
+ if (this.desktopCenter) {
+ cn.push({cls : 'container', cn : []});
+ cn = cn[0].cn;
+ }
+
if(this.srButton){
- cfg.cn.push({
- tag: 'div',
- cls: 'navbar-header',
+ var btn = {
+ tag: 'button',
+ type: 'button',
+ cls: 'navbar-toggle navbar-toggler',
+ 'data-toggle': 'collapse',
cn: [
{
- tag: 'button',
- type: 'button',
- cls: 'navbar-toggle',
- 'data-toggle': 'collapse',
- cn: [
- {
- tag: 'span',
- cls: 'sr-only',
- html: 'Toggle navigation'
- },
- {
- tag: 'span',
- cls: 'icon-bar'
- },
- {
- tag: 'span',
- cls: 'icon-bar'
- },
- {
- tag: 'span',
- cls: 'icon-bar'
- }
- ]
+ tag: 'span',
+ cls: 'sr-only',
+ html: 'Toggle navigation'
+ },
+ {
+ tag: 'span',
+ cls: 'icon-bar navbar-toggler-icon'
+ },
+ {
+ tag: 'span',
+ cls: 'icon-bar'
+ },
+ {
+ tag: 'span',
+ cls: 'icon-bar'
}
]
+ };
+
+ cn.push( Roo.bootstrap.version == 4 ? btn : {
+ tag: 'div',
+ cls: 'navbar-header',
+ cn: [
+ btn
+ ]
});
}
- cfg.cn.push({
+ cn.push({
tag: 'div',
- cls: 'collapse navbar-collapse',
+ cls: Roo.bootstrap.version == 4 ? 'nav flex-row roo-navbar-collapse' : 'collapse navbar-collapse roo-navbar-collapse',
cn : []
});
- cfg.cls += this.inverse ? ' navbar-inverse' : ' navbar-default';
+ cfg.cls += this.inverse ? ' navbar-inverse navbar-dark bg-dark' : ' navbar-default';
+
+ if (['light','white'].indexOf(this.weight) > -1) {
+ cfg.cls += ['light','white'].indexOf(this.weight) > -1 ? ' navbar-light' : ' navbar-dark';
+ }
+ cfg.cls += ' bg-' + this.weight;
+
if (['fixed-top','fixed-bottom','static-top'].indexOf(this.position)>-1) {
- cfg.cls += ' navbar-' + this.position;
+ cfg.cls += ' navbar-' + this.position + ' ' + this.position ;
// tag can override this..
}
if (this.brand !== '') {
- cfg.cn[0].cn.push({
+ var cp = Roo.bootstrap.version == 4 ? cn : cn[0].cn;
+ cp.unshift({ // changed from push ?? BS4 needs it at the start? - does this break or exsiting?
tag: 'a',
href: this.brand_href ? this.brand_href : '#',
cls: 'navbar-brand',
},
+ getHeaderChildContainer : function()
+ {
+ if (this.srButton && this.el.select('.navbar-header').getCount()) {
+ return this.el.select('.navbar-header',true).first();
+ }
+
+ return this.getChildContainer();
+ },
+
+
initEvents : function()
{
Roo.bootstrap.NavHeaderbar.superclass.initEvents.call(this);
},this);
}
}
-
-
-
});