src/cm/media/js/lib/yui/yui3-3.15.0/build/shim-plugin/shim-plugin.js
author ymh <ymh.work@gmail.com>
Fri, 14 Mar 2014 13:16:10 +0100
changeset 611 fa66f4bb1563
parent 602 e16a97fb364a
permissions -rw-r--r--
add some more custom config and put every thing in comment in the custom.yaml template
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('shim-plugin', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
     * Provides shimming support for Node via a Plugin.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
     * This fixes SELECT bleedthrough for IE6 & Mac scrollbars
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
     * @module shim-plugin
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
     * Node plugin which can be used to add shim support.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
     * @class Plugin.Shim
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
     * @param {Object} User configuration object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    function Shim(config) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
        this.init(config);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
     * Default class used to mark the shim element
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
     * @property CLASS_NAME
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
     * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
     * @default "yui-node-shim"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
    // TODO: use ClassNameManager
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
    Shim.CLASS_NAME = 'yui-node-shim';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
     * Default markup template used to generate the shim element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
     * @property TEMPLATE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
     * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    Shim.TEMPLATE = '<iframe class="' + Shim.CLASS_NAME +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
            '" frameborder="0" title="Node Stacking Shim"' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
            'src="javascript:false" tabindex="-1" role="presentation"' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
            'style="position:absolute; z-index:-1;"></iframe>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
    Shim.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
        init: function(config) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
            this._host = config.host;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
            this.initEvents();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
            this.insert();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
            this.sync();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
        initEvents: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
            this._resizeHandle = this._host.on('resize', this.sync, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
        getShim: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
            return this._shim || (
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
                this._shim = Y.Node.create(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
                    Shim.TEMPLATE,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
                    this._host.get('ownerDocument')
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
                )
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
            );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
        insert: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
            var node = this._host;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
            this._shim = node.insertBefore( this.getShim(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
                    node.get('firstChild'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
         * Updates the size of the shim to fill its container
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
         * @method sync
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
        sync: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
            var shim = this._shim,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
                node = this._host;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            if (shim) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
                shim.setAttrs({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
                    width: node.getStyle('width'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
                    height: node.getStyle('height')
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
         * Removes the shim and destroys the plugin
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
         * @method destroy
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
        destroy: function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
            var shim = this._shim;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
            if (shim) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
                shim.remove(true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
            this._resizeHandle.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
    Shim.NAME = 'Shim';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
    Shim.NS = 'shim';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
    Y.namespace('Plugin');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
    Y.Plugin.Shim = Shim;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
}, '@VERSION@', {"requires": ["node-style", "node-pluginhost"]});