/**
* @class Roo.bootstrap.Popover
* @extends Roo.bootstrap.Component
+ * @parent none builder
+ * @children Roo.bootstrap.Component
* Bootstrap Popover class
* @cfg {String} html contents of the popover (or false to use children..)
* @cfg {String} title of popover (or false to hide)
}
}, this.delay.hide)
},
+
+ /**
+ * update the position of the dialog
+ * normally this is needed if the popover get's bigger - due to a Table reload etc..
+ *
+ *
+ */
+
+ doAlign : function()
+ {
+
+ if (this.alignEl) {
+ this.updatePosition(this.placement, true);
+
+ } else {
+ // this is usually just done by the builder = to show the popoup in the middle of the scren.
+ var es = this.el.getSize();
+ var x = Roo.lib.Dom.getViewWidth()/2;
+ var y = Roo.lib.Dom.getViewHeight()/2;
+ this.el.setXY([ x-(es.width/2), y-(es.height/2)] );
+
+ }
+
+
+
+
+
+ },
+
/**
* Show the popover
* @param {Roo.Element|string|Boolean} - element to align and point to. (set align to [ pos, offset ])
this.render(document.body);
}
- var x = this.alignEl.dom;
- while (x && "auto" ==getComputedStyle(x).zIndex) {
- //Roo.log(getComputedStyle(x).zIndex );
- x = x.parentNode;
- }
- if (x) {
- this.el.dom.style.zIndex = (1*getComputedStyle(x).zIndex) + 1000;
- }
+
if (this.title === false) {
this.el.show();
this.el.dom.style.display = 'block';
-
- if (this.alignEl) {
- this.updatePosition(this.placement, true);
-
- } else {
- // this is usually just done by the builder = to show the popoup in the middle of the scren.
- var es = this.el.getSize();
- var x = Roo.lib.Dom.getViewWidth()/2;
- var y = Roo.lib.Dom.getViewHeight()/2;
- this.el.setXY([ x-(es.width/2), y-(es.height/2)] );
-
- }
-
+ this.doAlign();
//var arrow = this.el.select('.arrow',true).first();
//arrow.set(align[2],
clickHander : false,
+
onMouseDown : function(e)
{
- if (!e.getTarget(".roo-popover")) {
+ if (this.popups.length && !e.getTarget(".roo-popover")) {
+ /// what is nothing is showing..
this.hideAll();
}
},
+
popups : [],
register : function(popup)
Roo.bootstrap.Popover.clickHandler = Roo.get(document).on("mousedown", Roo.bootstrap.Popover.onMouseDown, Roo.bootstrap.Popover);
}
// hide other popups.
- this.hideAll();
- this.popups.push(popup);
+ popup.on('show', Roo.bootstrap.Popover.onShow, popup);
+ popup.on('hide', Roo.bootstrap.Popover.onHide, popup);
+ this.hideAll(); //<< why?
+ //this.popups.push(popup);
},
hideAll : function()
{
this.popups.forEach(function(p) {
p.hide();
});
- }
+ },
+ onShow : function() {
+ Roo.bootstrap.Popover.popups.push(this);
+ },
+ onHide : function() {
+ Roo.bootstrap.Popover.popups.remove(this);
+ }
});
\ No newline at end of file