Upgrade to ExtJS 3.3.0 - Released 10/06/2010
[extjs.git] / docs / source / Element.fx-more.html
1 <html>
2 <head>
3   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
4   <title>The source code</title>
5     <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
6     <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
7 </head>
8 <body  onload="prettyPrint();">
9     <pre class="prettyprint lang-js">/*!
10  * Ext JS Library 3.3.0
11  * Copyright(c) 2006-2010 Ext JS, Inc.
12  * licensing@extjs.com
13  * http://www.extjs.com/license
14  */
15 /**
16  * @class Ext.Element
17  */
18 Ext.Element.addMethods(
19     function() {
20         var VISIBILITY      = "visibility",
21             DISPLAY         = "display",
22             HIDDEN          = "hidden",
23             NONE            = "none",
24             XMASKED         = "x-masked",
25             XMASKEDRELATIVE = "x-masked-relative",
26             data            = Ext.Element.data;
27
28         return {
29             <div id="method-Ext.Element-isVisible"></div>/**
30              * Checks whether the element is currently visible using both visibility and display properties.
31              * @param {Boolean} deep (optional) True to walk the dom and see if parent elements are hidden (defaults to false)
32              * @return {Boolean} True if the element is currently visible, else false
33              */
34             isVisible : function(deep) {
35                 var vis = !this.isStyle(VISIBILITY, HIDDEN) && !this.isStyle(DISPLAY, NONE),
36                     p   = this.dom.parentNode;
37                 
38                 if (deep !== true || !vis) {
39                     return vis;
40                 }
41                 
42                 while (p && !(/^body/i.test(p.tagName))) {
43                     if (!Ext.fly(p, '_isVisible').isVisible()) {
44                         return false;
45                     }
46                     p = p.parentNode;
47                 }
48                 return true;
49             },
50
51             <div id="method-Ext.Element-isDisplayed"></div>/**
52              * Returns true if display is not "none"
53              * @return {Boolean}
54              */
55             isDisplayed : function() {
56                 return !this.isStyle(DISPLAY, NONE);
57             },
58
59             <div id="method-Ext.Element-enableDisplayMode"></div>/**
60              * Convenience method for setVisibilityMode(Element.DISPLAY)
61              * @param {String} display (optional) What to set display to when visible
62              * @return {Ext.Element} this
63              */
64             enableDisplayMode : function(display) {
65                 this.setVisibilityMode(Ext.Element.DISPLAY);
66                 
67                 if (!Ext.isEmpty(display)) {
68                     data(this.dom, 'originalDisplay', display);
69                 }
70                 
71                 return this;
72             },
73
74             <div id="method-Ext.Element-mask"></div>/**
75              * Puts a mask over this element to disable user interaction. Requires core.css.
76              * This method can only be applied to elements which accept child nodes.
77              * @param {String} msg (optional) A message to display in the mask
78              * @param {String} msgCls (optional) A css class to apply to the msg element
79              * @return {Element} The mask element
80              */
81             mask : function(msg, msgCls) {
82                 var me  = this,
83                     dom = me.dom,
84                     dh  = Ext.DomHelper,
85                     EXTELMASKMSG = "ext-el-mask-msg",
86                     el,
87                     mask;
88
89                 if (!(/^body/i.test(dom.tagName) && me.getStyle('position') == 'static')) {
90                     me.addClass(XMASKEDRELATIVE);
91                 }
92                 if (el = data(dom, 'maskMsg')) {
93                     el.remove();
94                 }
95                 if (el = data(dom, 'mask')) {
96                     el.remove();
97                 }
98
99                 mask = dh.append(dom, {cls : "ext-el-mask"}, true);
100                 data(dom, 'mask', mask);
101
102                 me.addClass(XMASKED);
103                 mask.setDisplayed(true);
104                 
105                 if (typeof msg == 'string') {
106                     var mm = dh.append(dom, {cls : EXTELMASKMSG, cn:{tag:'div'}}, true);
107                     data(dom, 'maskMsg', mm);
108                     mm.dom.className = msgCls ? EXTELMASKMSG + " " + msgCls : EXTELMASKMSG;
109                     mm.dom.firstChild.innerHTML = msg;
110                     mm.setDisplayed(true);
111                     mm.center(me);
112                 }
113                 
114                 // ie will not expand full height automatically
115                 if (Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && me.getStyle('height') == 'auto') {
116                     mask.setSize(undefined, me.getHeight());
117                 }
118                 
119                 return mask;
120             },
121
122             <div id="method-Ext.Element-unmask"></div>/**
123              * Removes a previously applied mask.
124              */
125             unmask : function() {
126                 var me      = this,
127                     dom     = me.dom,
128                     mask    = data(dom, 'mask'),
129                     maskMsg = data(dom, 'maskMsg');
130
131                 if (mask) {
132                     if (maskMsg) {
133                         maskMsg.remove();
134                         data(dom, 'maskMsg', undefined);
135                     }
136                     
137                     mask.remove();
138                     data(dom, 'mask', undefined);
139                     me.removeClass([XMASKED, XMASKEDRELATIVE]);
140                 }
141             },
142
143             <div id="method-Ext.Element-isMasked"></div>/**
144              * Returns true if this element is masked
145              * @return {Boolean}
146              */
147             isMasked : function() {
148                 var m = data(this.dom, 'mask');
149                 return m && m.isVisible();
150             },
151
152             <div id="method-Ext.Element-createShim"></div>/**
153              * Creates an iframe shim for this element to keep selects and other windowed objects from
154              * showing through.
155              * @return {Ext.Element} The new shim element
156              */
157             createShim : function() {
158                 var el = document.createElement('iframe'),
159                     shim;
160                 
161                 el.frameBorder = '0';
162                 el.className = 'ext-shim';
163                 el.src = Ext.SSL_SECURE_URL;
164                 shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom));
165                 shim.autoBoxAdjust = false;
166                 return shim;
167             }
168         };
169     }()
170 );</pre>    
171 </body>
172 </html>