* @cfg {Boolean} allow_close default true
* @cfg {Boolean} fitwindow default false
* @cfg {String} size (sm|lg) default empty
+ * @cfg {Number} max_width set the max width of modal
*
*
* @constructor
closeEl: false,
size: '',
+
+ max_width: 0,
onRender : function(ct, position)
this.footerEl = this.el.select('.modal-footer',true).first();
this.maskEl = Roo.DomHelper.append(document.body, {tag: "div", cls:"x-dlg-mask"}, true);
- this.maskEl.enableDisplayMode("block");
- this.maskEl.hide();
+
//this.el.addClass("x-dlg-modal");
if (this.buttons.length) {
},
- getAutoCreate : function(){
-
-
+ getAutoCreate : function()
+ {
var bdy = {
cls : 'modal-body',
html : this.html || ''
}
var modal = {
- cls: "modal hidden",
+ cls: "modal",
cn : [
{
cls: "modal-dialog " + size,
resize : function()
{
this.maskEl.setSize(Roo.lib.Dom.getViewWidth(true), Roo.lib.Dom.getViewHeight(true));
+
if (this.fitwindow) {
var w = this.width || Roo.lib.Dom.getViewportWidth(true) - 30;
var h = this.height || Roo.lib.Dom.getViewportHeight(true) - 60;
this.setSize(w,h);
}
+
+ if(!this.fitwindow && this.max_width !== 0){
+
+ var w = Math.min(this.max_width, Roo.lib.Dom.getViewportWidth(true) - 30);
+
+ // for fix height
+ if(this.height) {
+ this.setSize(w, this.height || Roo.lib.Dom.getViewportWidth(true) - 30);
+ return;
+ }
+
+ var body_childs = this.bodyEl.dom.childNodes;
+ var full_height = this.headerEl.getHeight() + this.footerEl.getHeight();
+ for(var i = 0; i < body_childs.length; i++) {
+ full_height += body_childs[i].offsetHeight;
+ }
+
+ // this.setSize(w, Math.min(full_height, Roo.lib.Dom.getViewportHeight(true) - 60));
+ }
+
},
setSize : function(w,h)
}
//this.el.setStyle('display', 'block');
- this.el.removeClass('hidden');
+ this.el.removeClass('hideing');
+ this.el.addClass('show');
if(this.animate){ // element has 'fade' - so stuff happens after .3s ?- not sure why the delay?
var _this = this;
}).defer(50, this);
}else{
this.el.addClass('in');
-
}
// not sure how we can show data in here..
this.maskEl.setSize(Roo.lib.Dom.getViewWidth(true), Roo.lib.Dom.getViewHeight(true));
this.maskEl.setStyle('z-index', Roo.bootstrap.Modal.zIndex++);
- this.maskEl.show();
+ this.maskEl.addClass('show');
this.resize();
hide : function()
{
if(this.fireEvent("beforehide", this) !== false){
- this.maskEl.hide();
+ this.maskEl.removeClass('show');
Roo.get(document.body).removeClass("x-body-masked");
this.el.removeClass('in');
this.el.select('.modal-dialog', true).first().setStyle('transform','');
if(this.animate){ // why
+ this.el.addClass('hideing');
(function(){
- this.el.addClass('hidden');
+ if (!this.el.hasClass('hideing')) {
+ return; // it's been shown again...
+ }
+ this.el.removeClass('show');
+ this.el.removeClass('hideing');
}).defer(150,this);
+
}else{
- this.el.addClass('hidden');
+ this.el.removeClass('show');
}
this.fireEvent('hide', this);
}
isVisible : function()
{
- return !this.el.hasClass('hidden');
+ return this.el.hasClass('show') && !this.el.hasClass('hideing');
},