summaryrefslogtreecommitdiff
path: root/lib/dijit/layout/utils.js.uncompressed.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dijit/layout/utils.js.uncompressed.js')
-rw-r--r--lib/dijit/layout/utils.js.uncompressed.js145
1 files changed, 0 insertions, 145 deletions
diff --git a/lib/dijit/layout/utils.js.uncompressed.js b/lib/dijit/layout/utils.js.uncompressed.js
deleted file mode 100644
index 9c1786b0c..000000000
--- a/lib/dijit/layout/utils.js.uncompressed.js
+++ /dev/null
@@ -1,145 +0,0 @@
-define("dijit/layout/utils", [
- "dojo/_base/array", // array.filter array.forEach
- "dojo/dom-class", // domClass.add domClass.remove
- "dojo/dom-geometry", // domGeometry.marginBox
- "dojo/dom-style", // domStyle.getComputedStyle
- "dojo/_base/lang", // lang.mixin
- "../main" // for exporting symbols to dijit, remove in 2.0
-], function(array, domClass, domGeometry, domStyle, lang, dijit){
-
- // module:
- // dijit/layout/utils
-
- var layout = lang.getObject("layout", true, dijit);
- /*=====
- layout = {
- // summary:
- // marginBox2contentBox() and layoutChildren()
- };
- =====*/
-
- layout.marginBox2contentBox = function(/*DomNode*/ node, /*Object*/ mb){
- // summary:
- // Given the margin-box size of a node, return its content box size.
- // Functions like domGeometry.contentBox() but is more reliable since it doesn't have
- // to wait for the browser to compute sizes.
- var cs = domStyle.getComputedStyle(node);
- var me = domGeometry.getMarginExtents(node, cs);
- var pb = domGeometry.getPadBorderExtents(node, cs);
- return {
- l: domStyle.toPixelValue(node, cs.paddingLeft),
- t: domStyle.toPixelValue(node, cs.paddingTop),
- w: mb.w - (me.w + pb.w),
- h: mb.h - (me.h + pb.h)
- };
- };
-
- function capitalize(word){
- return word.substring(0,1).toUpperCase() + word.substring(1);
- }
-
- function size(widget, dim){
- // size the child
- var newSize = widget.resize ? widget.resize(dim) : domGeometry.setMarginBox(widget.domNode, dim);
-
- // record child's size
- if(newSize){
- // if the child returned it's new size then use that
- lang.mixin(widget, newSize);
- }else{
- // otherwise, call getMarginBox(), but favor our own numbers when we have them.
- // the browser lies sometimes
- lang.mixin(widget, domGeometry.getMarginBox(widget.domNode));
- lang.mixin(widget, dim);
- }
- }
-
- layout.layoutChildren = function(/*DomNode*/ container, /*Object*/ dim, /*Widget[]*/ children,
- /*String?*/ changedRegionId, /*Number?*/ changedRegionSize){
- // summary:
- // Layout a bunch of child dom nodes within a parent dom node
- // container:
- // parent node
- // dim:
- // {l, t, w, h} object specifying dimensions of container into which to place children
- // children:
- // An array of Widgets or at least objects containing:
- //
- // - domNode: pointer to DOM node to position
- // - region or layoutAlign: position to place DOM node
- // - resize(): (optional) method to set size of node
- // - id: (optional) Id of widgets, referenced from resize object, below.
- // changedRegionId:
- // If specified, the slider for the region with the specified id has been dragged, and thus
- // the region's height or width should be adjusted according to changedRegionSize
- // changedRegionSize:
- // See changedRegionId.
-
- // copy dim because we are going to modify it
- dim = lang.mixin({}, dim);
-
- domClass.add(container, "dijitLayoutContainer");
-
- // Move "client" elements to the end of the array for layout. a11y dictates that the author
- // needs to be able to put them in the document in tab-order, but this algorithm requires that
- // client be last. TODO: move these lines to LayoutContainer? Unneeded other places I think.
- children = array.filter(children, function(item){ return item.region != "center" && item.layoutAlign != "client"; })
- .concat(array.filter(children, function(item){ return item.region == "center" || item.layoutAlign == "client"; }));
-
- // set positions/sizes
- array.forEach(children, function(child){
- var elm = child.domNode,
- pos = (child.region || child.layoutAlign);
- if(!pos){
- throw new Error("No region setting for " + child.id)
- }
-
- // set elem to upper left corner of unused space; may move it later
- var elmStyle = elm.style;
- elmStyle.left = dim.l+"px";
- elmStyle.top = dim.t+"px";
- elmStyle.position = "absolute";
-
- domClass.add(elm, "dijitAlign" + capitalize(pos));
-
- // Size adjustments to make to this child widget
- var sizeSetting = {};
-
- // Check for optional size adjustment due to splitter drag (height adjustment for top/bottom align
- // panes and width adjustment for left/right align panes.
- if(changedRegionId && changedRegionId == child.id){
- sizeSetting[child.region == "top" || child.region == "bottom" ? "h" : "w"] = changedRegionSize;
- }
-
- // set size && adjust record of remaining space.
- // note that setting the width of a <div> may affect its height.
- if(pos == "top" || pos == "bottom"){
- sizeSetting.w = dim.w;
- size(child, sizeSetting);
- dim.h -= child.h;
- if(pos == "top"){
- dim.t += child.h;
- }else{
- elmStyle.top = dim.t + dim.h + "px";
- }
- }else if(pos == "left" || pos == "right"){
- sizeSetting.h = dim.h;
- size(child, sizeSetting);
- dim.w -= child.w;
- if(pos == "left"){
- dim.l += child.w;
- }else{
- elmStyle.left = dim.l + dim.w + "px";
- }
- }else if(pos == "client" || pos == "center"){
- size(child, dim);
- }
- });
- };
-
-
- return {
- marginBox2contentBox: layout.marginBox2contentBox,
- layoutChildren: layout.layoutChildren
- };
-});