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