Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
6a4c889f31
commit
94363c1d0e
151
js/ui/mxgraph/src/js/util/mxDivResizer.js
Normal file
151
js/ui/mxgraph/src/js/util/mxDivResizer.js
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2006-2015, JGraph Ltd
|
||||||
|
* Copyright (c) 2006-2015, Gaudenz Alder
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Class: mxDivResizer
|
||||||
|
*
|
||||||
|
* Maintains the size of a div element in Internet Explorer. This is a
|
||||||
|
* workaround for the right and bottom style being ignored in IE.
|
||||||
|
*
|
||||||
|
* If you need a div to cover the scrollwidth and -height of a document,
|
||||||
|
* then you can use this class as follows:
|
||||||
|
*
|
||||||
|
* (code)
|
||||||
|
* var resizer = new mxDivResizer(background);
|
||||||
|
* resizer.getDocumentHeight = function()
|
||||||
|
* {
|
||||||
|
* return document.body.scrollHeight;
|
||||||
|
* }
|
||||||
|
* resizer.getDocumentWidth = function()
|
||||||
|
* {
|
||||||
|
* return document.body.scrollWidth;
|
||||||
|
* }
|
||||||
|
* resizer.resize();
|
||||||
|
* (end)
|
||||||
|
*
|
||||||
|
* Constructor: mxDivResizer
|
||||||
|
*
|
||||||
|
* Constructs an object that maintains the size of a div
|
||||||
|
* element when the window is being resized. This is only
|
||||||
|
* required for Internet Explorer as it ignores the respective
|
||||||
|
* stylesheet information for DIV elements.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
* div - Reference to the DOM node whose size should be maintained.
|
||||||
|
* container - Optional Container that contains the div. Default is the
|
||||||
|
* window.
|
||||||
|
*/
|
||||||
|
function mxDivResizer(div, container)
|
||||||
|
{
|
||||||
|
if (div.nodeName.toLowerCase() == 'div')
|
||||||
|
{
|
||||||
|
if (container == null)
|
||||||
|
{
|
||||||
|
container = window;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.div = div;
|
||||||
|
var style = mxUtils.getCurrentStyle(div);
|
||||||
|
|
||||||
|
if (style != null)
|
||||||
|
{
|
||||||
|
this.resizeWidth = style.width == 'auto';
|
||||||
|
this.resizeHeight = style.height == 'auto';
|
||||||
|
}
|
||||||
|
|
||||||
|
mxEvent.addListener(container, 'resize',
|
||||||
|
mxUtils.bind(this, function(evt)
|
||||||
|
{
|
||||||
|
if (!this.handlingResize)
|
||||||
|
{
|
||||||
|
this.handlingResize = true;
|
||||||
|
this.resize();
|
||||||
|
this.handlingResize = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
this.resize();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function: resizeWidth
|
||||||
|
*
|
||||||
|
* Boolean specifying if the width should be updated.
|
||||||
|
*/
|
||||||
|
mxDivResizer.prototype.resizeWidth = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function: resizeHeight
|
||||||
|
*
|
||||||
|
* Boolean specifying if the height should be updated.
|
||||||
|
*/
|
||||||
|
mxDivResizer.prototype.resizeHeight = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function: handlingResize
|
||||||
|
*
|
||||||
|
* Boolean specifying if the width should be updated.
|
||||||
|
*/
|
||||||
|
mxDivResizer.prototype.handlingResize = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function: resize
|
||||||
|
*
|
||||||
|
* Updates the style of the DIV after the window has been resized.
|
||||||
|
*/
|
||||||
|
mxDivResizer.prototype.resize = function()
|
||||||
|
{
|
||||||
|
var w = this.getDocumentWidth();
|
||||||
|
var h = this.getDocumentHeight();
|
||||||
|
|
||||||
|
var l = parseInt(this.div.style.left);
|
||||||
|
var r = parseInt(this.div.style.right);
|
||||||
|
var t = parseInt(this.div.style.top);
|
||||||
|
var b = parseInt(this.div.style.bottom);
|
||||||
|
|
||||||
|
if (this.resizeWidth &&
|
||||||
|
!isNaN(l) &&
|
||||||
|
!isNaN(r) &&
|
||||||
|
l >= 0 &&
|
||||||
|
r >= 0 &&
|
||||||
|
w - r - l > 0)
|
||||||
|
{
|
||||||
|
this.div.style.width = (w - r - l)+'px';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.resizeHeight &&
|
||||||
|
!isNaN(t) &&
|
||||||
|
!isNaN(b) &&
|
||||||
|
t >= 0 &&
|
||||||
|
b >= 0 &&
|
||||||
|
h - t - b > 0)
|
||||||
|
{
|
||||||
|
this.div.style.height = (h - t - b)+'px';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function: getDocumentWidth
|
||||||
|
*
|
||||||
|
* Hook for subclassers to return the width of the document (without
|
||||||
|
* scrollbars).
|
||||||
|
*/
|
||||||
|
mxDivResizer.prototype.getDocumentWidth = function()
|
||||||
|
{
|
||||||
|
return document.body.clientWidth;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function: getDocumentHeight
|
||||||
|
*
|
||||||
|
* Hook for subclassers to return the height of the document (without
|
||||||
|
* scrollbars).
|
||||||
|
*/
|
||||||
|
mxDivResizer.prototype.getDocumentHeight = function()
|
||||||
|
{
|
||||||
|
return document.body.clientHeight;
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user