Element.fx-more.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:5k
源码类别:

中间件编程

开发平台:

JavaScript

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