Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / docs / source / DomHelper-more.html
diff --git a/docs/source/DomHelper-more.html b/docs/source/DomHelper-more.html
new file mode 100644 (file)
index 0000000..d8c3453
--- /dev/null
@@ -0,0 +1,182 @@
+<html>\r
+<head>\r
+  <title>The source code</title>\r
+    <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+    <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body  onload="prettyPrint();">\r
+    <pre class="prettyprint lang-js">/**\r
+ * @class Ext.DomHelper\r
+ */\r
+Ext.apply(Ext.DomHelper,\r
+function(){\r
+       var pub,\r
+               afterbegin = 'afterbegin',\r
+       afterend = 'afterend',\r
+       beforebegin = 'beforebegin',\r
+       beforeend = 'beforeend';\r
+\r
+       // private\r
+    function doInsert(el, o, returnElement, pos, sibling, append){\r
+        el = Ext.getDom(el);\r
+        var newNode;\r
+        if (pub.useDom) {\r
+            newNode = createDom(o, null);\r
+            if (append) {\r
+                   el.appendChild(newNode);\r
+            } else {\r
+                       (sibling == 'firstChild' ? el : el.parentNode).insertBefore(newNode, el[sibling] || el);\r
+            }\r
+        } else {\r
+            newNode = Ext.DomHelper.insertHtml(pos, el, Ext.DomHelper.createHtml(o));\r
+        }\r
+        return returnElement ? Ext.get(newNode, true) : newNode;\r
+    }\r
+\r
+       // build as dom\r
+    /** @ignore */\r
+    function createDom(o, parentNode){\r
+        var el,\r
+               doc = document,\r
+               useSet,\r
+               attr,\r
+               val,\r
+               cn;\r
+\r
+        if (Ext.isArray(o)) {                       // Allow Arrays of siblings to be inserted\r
+            el = doc.createDocumentFragment(); // in one shot using a DocumentFragment\r
+               Ext.each(o, function(v) {\r
+                createDom(v, el);\r
+            });\r
+        } else if (Ext.isString(o)) {         // Allow a string as a child spec.\r
+            el = doc.createTextNode(o);\r
+        } else {\r
+            el = doc.createElement( o.tag || 'div' );\r
+            useSet = !!el.setAttribute; // In IE some elements don't have setAttribute\r
+            Ext.iterate(o, function(attr, val){\r
+                if(!/tag|children|cn|html|style/.test(attr)){\r
+                       if(attr == 'cls'){\r
+                           el.className = val;\r
+                       }else{\r
+                        if(useSet){\r
+                            el.setAttribute(attr, val);\r
+                        }else{\r
+                            el[attr] = val;\r
+                        }\r
+                       }\r
+                }\r
+            });\r
+            pub.applyStyles(el, o.style);\r
+\r
+            if ((cn = o.children || o.cn)) {\r
+                createDom(cn, el);\r
+            } else if (o.html) {\r
+                el.innerHTML = o.html;\r
+            }\r
+        }\r
+        if(parentNode){\r
+           parentNode.appendChild(el);\r
+        }\r
+        return el;\r
+    }\r
+\r
+       pub = {\r
+               <div id="method-Ext.DomHelper-createTemplate"></div>/**\r
+            * Creates a new Ext.Template from the DOM object spec.\r
+            * @param {Object} o The DOM object spec (and children)\r
+            * @return {Ext.Template} The new template\r
+            */\r
+           createTemplate : function(o){\r
+               var html = Ext.DomHelper.createHtml(o);\r
+               return new Ext.Template(html);\r
+           },\r
+\r
+               <div id="prop-Ext.DomHelper-useDom"></div>/** True to force the use of DOM instead of html fragments @type Boolean */\r
+           useDom : false,\r
+\r
+           <div id="method-Ext.DomHelper-applyStyles"></div>/**\r
+            * Applies a style specification to an element.\r
+            * @param {String/HTMLElement} el The element to apply styles to\r
+            * @param {String/Object/Function} styles A style specification string e.g. 'width:100px', or object in the form {width:'100px'}, or\r
+            * a function which returns such a specification.\r
+            */\r
+           applyStyles : function(el, styles){\r
+                   if(styles){\r
+                               var i = 0,\r
+                               len,\r
+                               style;\r
+\r
+                       el = Ext.fly(el);\r
+                               if(Ext.isFunction(styles)){\r
+                                       styles = styles.call();\r
+                               }\r
+                               if(Ext.isString(styles)){\r
+                                       styles = styles.trim().split(/\s*(?::|;)\s*/);\r
+                                       for(len = styles.length; i < len;){\r
+                                               el.setStyle(styles[i++], styles[i++]);\r
+                                       }\r
+                               }else if (Ext.isObject(styles)){\r
+                                       el.setStyle(styles);\r
+                               }\r
+                       }\r
+           },\r
+\r
+           <div id="method-Ext.DomHelper-insertBefore"></div>/**\r
+            * Creates new DOM element(s) and inserts them before el.\r
+            * @param {Mixed} el The context element\r
+            * @param {Object/String} o The DOM object spec (and children) or raw HTML blob\r
+            * @param {Boolean} returnElement (optional) true to return a Ext.Element\r
+            * @return {HTMLElement/Ext.Element} The new node\r
+         * @hide (repeat)\r
+            */\r
+           insertBefore : function(el, o, returnElement){\r
+               return doInsert(el, o, returnElement, beforebegin);\r
+           },\r
+\r
+           <div id="method-Ext.DomHelper-insertAfter"></div>/**\r
+            * Creates new DOM element(s) and inserts them after el.\r
+            * @param {Mixed} el The context element\r
+            * @param {Object} o The DOM object spec (and children)\r
+            * @param {Boolean} returnElement (optional) true to return a Ext.Element\r
+            * @return {HTMLElement/Ext.Element} The new node\r
+         * @hide (repeat)\r
+            */\r
+           insertAfter : function(el, o, returnElement){\r
+               return doInsert(el, o, returnElement, afterend, 'nextSibling');\r
+           },\r
+\r
+           <div id="method-Ext.DomHelper-insertFirst"></div>/**\r
+            * Creates new DOM element(s) and inserts them as the first child of el.\r
+            * @param {Mixed} el The context element\r
+            * @param {Object/String} o The DOM object spec (and children) or raw HTML blob\r
+            * @param {Boolean} returnElement (optional) true to return a Ext.Element\r
+            * @return {HTMLElement/Ext.Element} The new node\r
+         * @hide (repeat)\r
+            */\r
+           insertFirst : function(el, o, returnElement){\r
+               return doInsert(el, o, returnElement, afterbegin, 'firstChild');\r
+           },\r
+\r
+           <div id="method-Ext.DomHelper-append"></div>/**\r
+            * Creates new DOM element(s) and appends them to el.\r
+            * @param {Mixed} el The context element\r
+            * @param {Object/String} o The DOM object spec (and children) or raw HTML blob\r
+            * @param {Boolean} returnElement (optional) true to return a Ext.Element\r
+            * @return {HTMLElement/Ext.Element} The new node\r
+         * @hide (repeat)\r
+            */\r
+           append: function(el, o, returnElement){\r
+            return doInsert(el, o, returnElement, beforeend, '', true);\r
+        },\r
+\r
+           <div id="method-Ext.DomHelper-createDom"></div>/**\r
+            * Creates new DOM element(s) without inserting them to the document.\r
+            * @param {Object/String} o The DOM object spec (and children) or raw HTML blob\r
+            * @return {HTMLElement} The new uninserted node\r
+            */\r
+        createDom: createDom\r
+       };\r
+       return pub;\r
+}());</pre>    \r
+</body>\r
+</html>
\ No newline at end of file