* @cfg {String} href empty or href
* @cfg {Boolean} disabled default false;
* @cfg {Boolean} isClose default false;
- * @cfg {String} glyphicon depricated - use fs
+ * @cfg {String} glyphicon depricated - use fa
+ * @cfg {String} fa fontawesome icon - eg. 'comment' - without the fa/fas etc..
* @cfg {String} badge text for badge
* @cfg {String} theme (default|glow)
* @cfg {Boolean} inverse dark themed version
this.hide();
} else {
Roo.log('show');
- this.show(this.triggerEl, false, false);
+ this.show(this.triggerEl, '?', false);
}
if(this.stopEvent || e.getTarget().nodeName.toLowerCase() === 'i'){
if(this.isContainer){
return {
tag: 'li',
- cls: 'dropdown-menu-item dropdown-item'
+ cls: 'dropdown-menu-item '
};
}
var ctag = {
var anc = {
tag : 'a',
+ cls : 'dropdown-item',
href : '#',
cn : [ ]
};
var cfg= {
tag: 'li',
- cls: 'dropdown-menu-item dropdown-item',
+ cls: 'dropdown-menu-item',
cn: [ anc ]
};
if (this.parent().type == 'treeview') {
* @cfg {Roo.Template} tmpl - a template with variables. to use it, add a handler in show:method adn
* @cfg {Boolean} specificTitle default false
* @cfg {Array} buttons Array of buttons or standard button set..
- * @cfg {String} buttonPosition (left|right|center) default right
+ * @cfg {String} buttonPosition (left|right|center) default right (DEPRICATED) - use mr-auto on buttons to put them on the left
* @cfg {Boolean} animate default true
* @cfg {Boolean} allow_close default true
* @cfg {Boolean} fitwindow default false
var btn = Roo.factory(b);
- btn.render(this.el.select('.modal-footer div').first());
+ btn.render(this.getButtonContainer());
},this);
}
if(this.size.length){
size = 'modal-' + this.size;
}
+
+ var footer = Roo.bootstrap.version == 3 ?
+ {
+ cls : 'modal-footer',
+ cn : [
+ {
+ tag: 'div',
+ cls: 'btn-' + this.buttonPosition
+ }
+ ]
+
+ } :
+ { // BS4 uses mr-auto on left buttons....
+ cls : 'modal-footer'
+ };
+
+
+
+
var modal = {
cls: "modal",
cn : [
cn : header
},
bdy,
- {
- cls : 'modal-footer',
- cn : [
- {
- tag: 'div',
- cls: 'btn-' + this.buttonPosition
- }
- ]
-
- }
-
-
+ footer
]
}
},
getButtonContainer : function() {
- return this.el.select('.modal-footer div',true).first();
+
+ return Roo.bootstrap.version == 4 ?
+ this.el.select('.modal-footer',true).first()
+ : this.el.select('.modal-footer div',true).first();
},
initEvents : function()
var btn = Roo.factory(b);
- btn.render(this.el.select('.modal-footer div').first());
+ btn.render(this.getButtonContainer());
return btn;
ce.addClass('collapsing');
ce.setHeight(0); // resize it ...
- (function() {
+ ce.on('transitionend', function() {
Roo.log('done transition');
ce.removeClass('collapsing');
ce.addClass('show');
ce.removeClass('collapse');
ce.dom.style.height = '';
- }).defer(500);
+ }, this, { single: true} );
ce.setHeight(h);
} else {
- ce.addClass('collapsing');
+ ce.setHeight(ce.getHeight());
ce.removeClass('show');
- (function() {
+ ce.addClass('collapsing');
+
+ ce.on('transitionend', function() {
+ ce.dom.style.height = '';
ce.removeClass('collapsing');
ce.addClass('collapse');
-
- }).defer(200);
-
+ }, this, { single: true} );
+ ce.setHeight(0);
}
}
}
cfg.cls += ' bg-' + this.weight;
-
+ if (this.inverse) {
+ cfg.cls += ' navbar-inverse';
+
+ }
+
+ // i'm not actually sure these are really used - normally we add a navGroup to a navbar
+
+ if (Roo.bootstrap.version == 4) {
+ return cfg;
+ }
cfg.cn = [
{
cfg.cn[0].cls += ' navbar-right';
}
- if (this.inverse) {
- cfg.cls += ' navbar-inverse';
-
- }
+
return cfg;
tag : 'ul',
cls: 'nav'
};
-
- if (['tabs','pills'].indexOf(this.type)!==-1) {
- cfg.cls += ' nav-' + this.type
- } else {
- if (this.type!=='nav') {
- Roo.log('nav type must be nav/tabs/pills')
- }
- cfg.cls += ' navbar-nav'
- }
+ if (Roo.bootstrap.version == 4) {
+ if (this.type == 'pills') {
+ cfg.cls = ' nav-pills';
+ }
+ } else {
+ if (['tabs','pills'].indexOf(this.type)!==-1) {
+ cfg.cls += ' nav-' + this.type
+ } else {
+ if (this.type !== 'nav') {
+ Roo.log('nav type must be nav/tabs/pills')
+ }
+ cfg.cls += ' navbar-nav'
+ }
+ }
if (this.parent() && this.parent().sidebar) {
cfg = {
if (this.form === true) {
cfg = {
tag: 'form',
- cls: 'navbar-form'
+ cls: 'navbar-form form-inline'
};
if (this.align === 'right') {
*/
addItem : function(cfg)
{
- var cn = new Roo.bootstrap.NavItem(cfg);
+ if (this.form && Roo.bootstrap.version == 4) {
+ cfg.tag = 'div';
+ }
+ var cn = new Roo.bootstrap.NavItem(cfg);
this.register(cn);
cn.parentId = this.id;
cn.onRender(this.el, null);
preventDefault : false,
tabId : false,
tagtype : 'a',
+ tag: 'li',
disabled : false,
animateRef : false,
was_active : false,
getAutoCreate : function(){
var cfg = {
- tag: 'li',
+ tag: this.tag,
cls: 'nav-item'
};
return cfg;
},
+ onRender : function(ct, position)
+ {
+ // Roo.log("Call onRender: " + this.xtype);
+ if (Roo.bootstrap.version == 4 && ct.dom.type != 'ul') {
+ this.tag = 'div';
+ }
+
+ return Roo.bootstrap.NavItem.superclass.onRender.call(this, ct, position);
+ },
+
+
initEvents: function()
{
if (typeof (this.menu) != 'undefined') {
}
if (align ==='left' && this.fieldLabel.length) {
- cfg.cls += ' roo-form-group-label-left row';
+ cfg.cls += ' roo-form-group-label-left' + (Roo.bootstrap.version == 4 ? ' row' : '');
cfg.cn = [
indicator,
cfg.cls += ' navbar-form';
}
- if (this.parentType === 'NavGroup') {
- cfg.cls += ' navbar-form';
- cfg.tag = 'li';
+ if (this.parentType === 'NavGroup' && !(Roo.bootstrap.version == 4 && this.parent().form)) {
+ // on BS4 we do this only if not form
+ cfg.cls += ' navbar-form';
+ cfg.tag = 'li';
}
return cfg;
if (align ==='left' && this.fieldLabel.length) {
- cfg.cls += ' roo-form-group-label-left row';
+ cfg.cls += ' roo-form-group-label-left' + (Roo.bootstrap.version == 4 ? ' row' : '');
cfg.cn = [
indicator,
var box = {
tag: 'div',
+ style : 'display: contents',
cn: [
{
tag: 'input',
}
if (align ==='left' && this.fieldLabel.length) {
- cfg.cls += ' roo-form-group-label-left row';
+ cfg.cls += ' roo-form-group-label-left' + (Roo.bootstrap.version == 4 ? ' row' : '');
cfg.cn = [
indicator,
size : 'sm',
xtype: 'Button',
xns: Roo.bootstrap,
- glyphicon : id,
+ //glyphicon : id,
+ fa: id,
cmd : id || cmd,
enableToggle:toggle !== false,
html : html || '',
xtype: 'Button',
size : 'sm',
xns: Roo.bootstrap,
- glyphicon : 'font',
+ fa : 'font',
//html : 'submit'
menu : {
xtype: 'Menu',
this.progressDialog = new Roo.bootstrap.Modal({
cls : 'roo-document-manager-progress-dialog',
allow_close : false,
+ animate : false,
title : '',
buttons : [
{
}
this.stripWrap = Roo.get(this.createStrip(this.el.dom), true);
this.stripEl = Roo.get(this.createStripList(this.stripWrap.dom), true);
+ this.stripEl.setVisibilityMode(Roo.Element.DISPLAY);
this.stripBody = Roo.get(this.stripWrap.dom.firstChild.firstChild, true);
if(Roo.isIE){
Roo.fly(this.stripWrap.dom.firstChild).setStyle("overflow-x", "hidden");
* Adds an existing {@link Roo.TabPanelItem}.
* @param {Roo.TabPanelItem} item The TabPanelItem to add
*/
- addTabItem : function(item){
+ addTabItem : function(item)
+ {
this.items[item.id] = item;
this.items.push(item);
+ this.autoSizeTabs();
// if(this.resizeTabs){
// item.setWidth(this.currentTabWidth || this.preferredTabWidth);
// this.autoSizeTabs();
* @param {String/Number} id The id or index of the TabPanelItem to activate.
* @return {Roo.TabPanelItem} The TabPanelItem.
*/
- activate : function(id){
+ activate : function(id)
+ {
var tab = this.items[id];
if(!tab){
return null;
/**
* Manual call to resize the tabs (if {@link #resizeTabs} is false this does nothing)
*/
- autoSizeTabs : function(){
+ autoSizeTabs : function()
+ {
var count = this.items.length;
var vcount = count - this.hiddenCount;
+
+ if (vcount < 2) {
+ this.stripEl.hide();
+ } else {
+ this.stripEl.show();
+ }
+
if(!this.resizeTabs || count < 1 || vcount < 1 || this.updating) {
return;
}
+
+
var w = Math.max(this.el.getWidth() - this.cpad, 10);
var availWidth = Math.floor(w / vcount);
var b = this.stripBody;
createStrip : function(container)
{
var strip = document.createElement("nav");
- strip.className = "navbar navbar-default"; //"x-tabs-wrap";
+ strip.className = Roo.bootstrap.version == 4 ?
+ "navbar-light bg-light" :
+ "navbar navbar-default"; //"x-tabs-wrap";
container.appendChild(strip);
return strip;
},
createStripElements : function(stripEl, text, closable, tpl)
{
var td = document.createElement("li"); // was td..
-
+ td.className = 'nav-item';
//stripEl.insertBefore(td, stripEl.childNodes[stripEl.childNodes.length-1]);
var template = tpl || this.tabTpl || false;
if(!template){
-
- template = new Roo.Template(
- '<a href="#">' +
- '<span unselectable="on"' +
- (this.disableTooltips ? '' : ' title="{text}"') +
- ' >{text}</span></a>'
+ template = new Roo.Template(
+ Roo.bootstrap.version == 4 ?
+ (
+ '<a class="nav-link" href="#" unselectable="on"' +
+ (this.disableTooltips ? '' : ' title="{text}"') +
+ ' >{text}</a>'
+ ) : (
+ '<a class="nav-link" href="#">' +
+ '<span unselectable="on"' +
+ (this.disableTooltips ? '' : ' title="{text}"') +
+ ' >{text}</span></a>'
+ )
);
}
/** @private */
this.el = Roo.get(els.el);
this.inner = Roo.get(els.inner, true);
- this.textEl = Roo.get(this.el.dom.firstChild, true);
- this.pnode = Roo.get(els.el.parentNode, true);
+ this.textEl = Roo.bootstrap.version == 4 ?
+ this.el : Roo.get(this.el.dom.firstChild, true);
+
+ this.linode = Roo.get(els.el.parentNode, true);
+ this.status_node = Roo.bootstrap.version == 4 ? this.el : this.linode;
+
+
// this.el.on("mousedown", this.onTabMouseDown, this);
this.el.on("click", this.onTabClick, this);
/** @private */
* Shows this TabPanelItem -- this <b>does not</b> deactivate the currently active TabPanelItem.
*/
show : function(){
- this.pnode.addClass("active");
+ this.status_node.addClass("active");
this.showAction();
if(Roo.isOpera){
this.tabPanel.stripWrap.repaint();
* Hides this TabPanelItem -- if you don't activate another TabPanelItem this could look odd.
*/
hide : function(){
- this.pnode.removeClass("active");
+ this.status_node.removeClass("active");
this.hideAction();
this.fireEvent("deactivate", this.tabPanel, this);
},
},
setWidth : function(width){
- var iwidth = width - this.pnode.getPadding("lr");
+ var iwidth = width - this.linode.getPadding("lr");
this.inner.setWidth(iwidth);
this.textEl.setWidth(iwidth-this.inner.getPadding("lr"));
- this.pnode.setWidth(width);
+ this.linode.setWidth(width);
},
*/
/**
*/
setHidden : function(hidden){
this.hidden = hidden;
- this.pnode.setStyle("display", hidden ? "none" : "");
+ this.linode.setStyle("display", hidden ? "none" : "");
},
/**
* #2804 [new] Tabs in Roojs
* increase the width by 2-4 pixels to prevent the ellipssis showing in chrome
*/
- //this.setWidth(this.textEl.dom.scrollWidth+this.pnode.getPadding("lr")+this.inner.getPadding("lr") + 2);
+ //this.setWidth(this.textEl.dom.scrollWidth+this.linode.getPadding("lr")+this.inner.getPadding("lr") + 2);
//this.el.endMeasure();
//},
disable : function(){
if(this.tabPanel.active != this){
this.disabled = true;
- this.pnode.addClass("disabled");
+ this.status_node.addClass("disabled");
}
},
*/
enable : function(){
this.disabled = false;
- this.pnode.removeClass("disabled");
+ this.status_node.removeClass("disabled");
},
/**