Upgrade to ExtJS 3.2.1 - Released 04/27/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.2.1
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                 if(deep !== true || !vis){
38                     return vis;
39                 }
40                 while(p && !/^body/i.test(p.tagName)){
41                     if(!Ext.fly(p, '_isVisible').isVisible()){
42                         return false;
43                     }
44                     p = p.parentNode;
45                 }
46                 return true;
47             },
48
49             <div id="method-Ext.Element-isDisplayed"></div>/**
50              * Returns true if display is not "none"
51              * @return {Boolean}
52              */
53             isDisplayed : function() {
54                 return !this.isStyle(DISPLAY, NONE);
55             },
56
57                 <div id="method-Ext.Element-enableDisplayMode"></div>/**
58              * Convenience method for setVisibilityMode(Element.DISPLAY)
59              * @param {String} display (optional) What to set display to when visible
60              * @return {Ext.Element} this
61              */
62             enableDisplayMode : function(display){
63                 this.setVisibilityMode(Ext.Element.DISPLAY);
64                 if(!Ext.isEmpty(display)){
65                 data(this.dom, 'originalDisplay', display);
66             }
67                 return this;
68             },
69
70                 <div id="method-Ext.Element-mask"></div>/**
71              * Puts a mask over this element to disable user interaction. Requires core.css.
72              * This method can only be applied to elements which accept child nodes.
73              * @param {String} msg (optional) A message to display in the mask
74              * @param {String} msgCls (optional) A css class to apply to the msg element
75              * @return {Element} The mask element
76              */
77             mask : function(msg, msgCls){
78                     var me = this,
79                         dom = me.dom,
80                         dh = Ext.DomHelper,
81                         EXTELMASKMSG = "ext-el-mask-msg",
82                 el,
83                 mask;
84
85                 if(!/^body/i.test(dom.tagName) && me.getStyle('position') == 'static'){
86                     me.addClass(XMASKEDRELATIVE);
87                 }
88                 if((el = data(dom, 'maskMsg'))){
89                     el.remove();
90                 }
91                 if((el = data(dom, 'mask'))){
92                     el.remove();
93                 }
94
95             mask = dh.append(dom, {cls : "ext-el-mask"}, true);
96                 data(dom, 'mask', mask);
97
98                 me.addClass(XMASKED);
99                 mask.setDisplayed(true);
100                 if(typeof msg == 'string'){
101                 var mm = dh.append(dom, {cls : EXTELMASKMSG, cn:{tag:'div'}}, true);
102                 data(dom, 'maskMsg', mm);
103                     mm.dom.className = msgCls ? EXTELMASKMSG + " " + msgCls : EXTELMASKMSG;
104                     mm.dom.firstChild.innerHTML = msg;
105                     mm.setDisplayed(true);
106                     mm.center(me);
107                 }
108                 if(Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && me.getStyle('height') == 'auto'){ // ie will not expand full height automatically
109                     mask.setSize(undefined, me.getHeight());
110                 }
111                 return mask;
112             },
113
114             <div id="method-Ext.Element-unmask"></div>/**
115              * Removes a previously applied mask.
116              */
117             unmask : function(){
118                     var me = this,
119                 dom = me.dom,
120                         mask = data(dom, 'mask'),
121                         maskMsg = data(dom, 'maskMsg');
122                 if(mask){
123                     if(maskMsg){
124                         maskMsg.remove();
125                     data(dom, 'maskMsg', undefined);
126                     }
127                     mask.remove();
128                 data(dom, 'mask', undefined);
129                 }
130                 me.removeClass([XMASKED, XMASKEDRELATIVE]);
131             },
132
133             <div id="method-Ext.Element-isMasked"></div>/**
134              * Returns true if this element is masked
135              * @return {Boolean}
136              */
137             isMasked : function(){
138             var m = data(this.dom, 'mask');
139                 return m && m.isVisible();
140             },
141
142             <div id="method-Ext.Element-createShim"></div>/**
143              * Creates an iframe shim for this element to keep selects and other windowed objects from
144              * showing through.
145              * @return {Ext.Element} The new shim element
146              */
147             createShim : function(){
148                 var el = document.createElement('iframe'),
149                         shim;
150                 el.frameBorder = '0';
151                 el.className = 'ext-shim';
152                 el.src = Ext.SSL_SECURE_URL;
153                 shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom));
154                 shim.autoBoxAdjust = false;
155                 return shim;
156             }
157     };
158 }());</pre>    
159 </body>
160 </html>