src/cm/media/js/lib/yui/yui_3.10.3/build/widget-stack/widget-stack-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
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('widget-stack', 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 stackable (z-index) support for Widgets through an extension.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * @module widget-stack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
    var L = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
        UA = Y.UA,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
        Node = Y.Node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
        Widget = Y.Widget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        ZINDEX = "zIndex",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
        SHIM = "shim",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
        VISIBLE = "visible",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
        BOUNDING_BOX = "boundingBox",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        RENDER_UI = "renderUI",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
        BIND_UI = "bindUI",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
        SYNC_UI = "syncUI",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        OFFSET_WIDTH = "offsetWidth",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
        OFFSET_HEIGHT = "offsetHeight",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        PARENT_NODE = "parentNode",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        FIRST_CHILD = "firstChild",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        OWNER_DOCUMENT = "ownerDocument",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        WIDTH = "width",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        HEIGHT = "height",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        PX = "px",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        // HANDLE KEYS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        SHIM_DEFERRED = "shimdeferred",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        SHIM_RESIZE = "shimresize",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        // Events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        VisibleChange = "visibleChange",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        WidthChange = "widthChange",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        HeightChange = "heightChange",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        ShimChange = "shimChange",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        ZIndexChange = "zIndexChange",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        ContentUpdate = "contentUpdate",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        // CSS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        STACKED = "stacked";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
     * Widget extension, which can be used to add stackable (z-index) support to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
     * base Widget class along with a shimming solution, through the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
     * <a href="Base.html#method_build">Base.build</a> method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
     * @class WidgetStack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
     * @param {Object} User configuration object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    function Stack(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        this._stackNode = this.get(BOUNDING_BOX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        this._stackHandles = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        // WIDGET METHOD OVERLAP
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        Y.after(this._renderUIStack, this, RENDER_UI);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        Y.after(this._syncUIStack, this, SYNC_UI);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
        Y.after(this._bindUIStack, this, BIND_UI);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    // Static Properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
     * Static property used to define the default attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
     * configuration introduced by WidgetStack.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     * @property ATTRS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    Stack.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
         * @attribute shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
         * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
         * @default false, for all browsers other than IE6, for which a shim is enabled by default.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
         * @description Boolean flag to indicate whether or not a shim should be added to the Widgets
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
         * boundingBox, to protect it from select box bleedthrough.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        shim: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
            value: (UA.ie == 6)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
         * @attribute zIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
         * @type number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
         * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
         * @description The z-index to apply to the Widgets boundingBox. Non-numerical values for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
         * zIndex will be converted to 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        zIndex: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
            value : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
            setter: '_setZIndex'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
     * The HTML parsing rules for the WidgetStack class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
     * @property HTML_PARSER
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
    Stack.HTML_PARSER = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        zIndex: function (srcNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            return this._parseZIndex(srcNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
     * Default class used to mark the shim element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
     * @property SHIM_CLASS_NAME
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
     * @default "yui3-widget-shim"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
    Stack.SHIM_CLASS_NAME = Widget.getClassName(SHIM);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
     * Default class used to mark the boundingBox of a stacked widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
     * @property STACKED_CLASS_NAME
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
     * @default "yui3-widget-stacked"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    Stack.STACKED_CLASS_NAME = Widget.getClassName(STACKED);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
     * Default markup template used to generate the shim element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
     * @property SHIM_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
    Stack.SHIM_TEMPLATE = '<iframe class="' + Stack.SHIM_CLASS_NAME + '" frameborder="0" title="Widget Stacking Shim" src="javascript:false" tabindex="-1" role="presentation"></iframe>';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
    Stack.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
         * Synchronizes the UI to match the Widgets stack state. This method in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
         * invoked after syncUI is invoked for the Widget class using YUI's aop infrastructure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
         * @method _syncUIStack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        _syncUIStack: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
            this._uiSetShim(this.get(SHIM));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
            this._uiSetZIndex(this.get(ZINDEX));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
         * Binds event listeners responsible for updating the UI state in response to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
         * Widget stack related state changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
         * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
         * This method is invoked after bindUI is invoked for the Widget class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
         * using YUI's aop infrastructure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
         * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
         * @method _bindUIStack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
        _bindUIStack: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
            this.after(ShimChange, this._afterShimChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
            this.after(ZIndexChange, this._afterZIndexChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
         * Creates/Initializes the DOM to support stackability.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
         * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
         * This method in invoked after renderUI is invoked for the Widget class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
         * using YUI's aop infrastructure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
         * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
         * @method _renderUIStack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
        _renderUIStack: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
            this._stackNode.addClass(Stack.STACKED_CLASS_NAME);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        Parses a `zIndex` attribute value from this widget's `srcNode`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        @method _parseZIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        @param {Node} srcNode The node to parse a `zIndex` value from.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        @return {Mixed} The parsed `zIndex` value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        _parseZIndex: function (srcNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
            var zIndex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
            // Prefers how WebKit handles `z-index` which better matches the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
            // spec:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
            //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
            // * http://www.w3.org/TR/CSS2/visuren.html#z-index
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
            // * https://bugs.webkit.org/show_bug.cgi?id=15562
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
            //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
            // When a node isn't rendered in the document, and/or when a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
            // node is not positioned, then it doesn't have a context to derive
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
            // a valid `z-index` value from.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
            if (!srcNode.inDoc() || srcNode.getStyle('position') === 'static') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
                zIndex = 'auto';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
                // Uses `getComputedStyle()` because it has greater accuracy in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
                // more browsers than `getStyle()` does for `z-index`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
                zIndex = srcNode.getComputedStyle('zIndex');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
            // This extension adds a stacking context to widgets, therefore a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
            // `srcNode` witout a stacking context (i.e. "auto") will return
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            // `null` from this DOM parser. This way the widget's default or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            // user provided value for `zIndex` will be used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            return zIndex === 'auto' ? null : zIndex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
         * Default setter for zIndex attribute changes. Normalizes zIndex values to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
         * numbers, converting non-numerical values to 0.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
         * @method _setZIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
         * @param {String | Number} zIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
         * @return {Number} Normalized zIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
        _setZIndex: function(zIndex) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
            if (L.isString(zIndex)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
                zIndex = parseInt(zIndex, 10);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            if (!L.isNumber(zIndex)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
                zIndex = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            return zIndex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
         * Default attribute change listener for the shim attribute, responsible
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
         * for updating the UI, in response to attribute changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
         * @method _afterShimChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
         * @param {EventFacade} e The event facade for the attribute change
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        _afterShimChange : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
            this._uiSetShim(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
         * Default attribute change listener for the zIndex attribute, responsible
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
         * for updating the UI, in response to attribute changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
         * @method _afterZIndexChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
         * @param {EventFacade} e The event facade for the attribute change
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        _afterZIndexChange : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
            this._uiSetZIndex(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
         * Updates the UI to reflect the zIndex value passed in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
         * @method _uiSetZIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
         * @param {number} zIndex The zindex to be reflected in the UI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        _uiSetZIndex: function (zIndex) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            this._stackNode.setStyle(ZINDEX, zIndex);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
         * Updates the UI to enable/disable the shim. If the widget is not currently visible,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
         * creation of the shim is deferred until it is made visible, for performance reasons.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
         * @method _uiSetShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
         * @param {boolean} enable If true, creates/renders the shim, if false, removes it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
        _uiSetShim: function (enable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
            if (enable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
                // Lazy creation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
                if (this.get(VISIBLE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
                    this._renderShim();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
                    this._renderShimDeferred();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
                // Eagerly attach resize handlers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
                //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                // Required because of Event stack behavior, commit ref: cd8dddc
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
                // Should be revisted after Ticket #2531067 is resolved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
                if (UA.ie == 6) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
                    this._addShimResizeHandlers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
                this._destroyShim();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
         * Sets up change handlers for the visible attribute, to defer shim creation/rendering
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
         * until the Widget is made visible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
         * @method _renderShimDeferred
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
        _renderShimDeferred : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
            this._stackHandles[SHIM_DEFERRED] = this._stackHandles[SHIM_DEFERRED] || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
            var handles = this._stackHandles[SHIM_DEFERRED],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
                createBeforeVisible = function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
                    if (e.newVal) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
                        this._renderShim();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
            handles.push(this.on(VisibleChange, createBeforeVisible));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
            // Depending how how Ticket #2531067 is resolved, a reversal of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
            // commit ref: cd8dddc could lead to a more elagent solution, with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
            // the addition of this line here:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
            //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
            // handles.push(this.after(VisibleChange, this.sizeShim));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
         * Sets up event listeners to resize the shim when the size of the Widget changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
         * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
         * NOTE: This method is only used for IE6 currently, since IE6 doesn't support a way to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
         * resize the shim purely through CSS, when the Widget does not have an explicit width/height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
         * set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
         * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
         * @method _addShimResizeHandlers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        _addShimResizeHandlers : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
            this._stackHandles[SHIM_RESIZE] = this._stackHandles[SHIM_RESIZE] || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
            var sizeShim = this.sizeShim,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
                handles = this._stackHandles[SHIM_RESIZE];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
            handles.push(this.after(VisibleChange, sizeShim));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
            handles.push(this.after(WidthChange, sizeShim));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
            handles.push(this.after(HeightChange, sizeShim));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
            handles.push(this.after(ContentUpdate, sizeShim));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
         * Detaches any handles stored for the provided key
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
         * @method _detachStackHandles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
         * @param String handleKey The key defining the group of handles which should be detached
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
        _detachStackHandles : function(handleKey) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
            var handles = this._stackHandles[handleKey],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
                handle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
            if (handles && handles.length > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
                while((handle = handles.pop())) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
                    handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
         * Creates the shim element and adds it to the DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
         * @method _renderShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
        _renderShim : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
            var shimEl = this._shimNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
                stackEl = this._stackNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
            if (!shimEl) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
                shimEl = this._shimNode = this._getShimTemplate();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
                stackEl.insertBefore(shimEl, stackEl.get(FIRST_CHILD));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
                this._detachStackHandles(SHIM_DEFERRED);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
                this.sizeShim();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
         * Removes the shim from the DOM, and detaches any related event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
         * listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
         * @method _destroyShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
        _destroyShim : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
            if (this._shimNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
                this._shimNode.get(PARENT_NODE).removeChild(this._shimNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
                this._shimNode = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
                this._detachStackHandles(SHIM_DEFERRED);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
                this._detachStackHandles(SHIM_RESIZE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
         * For IE6, synchronizes the size and position of iframe shim to that of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
         * Widget bounding box which it is protecting. For all other browsers,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
         * this method does not do anything.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
         * @method sizeShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
        sizeShim: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
            var shim = this._shimNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
                node = this._stackNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
            if (shim && UA.ie === 6 && this.get(VISIBLE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
                shim.setStyle(WIDTH, node.get(OFFSET_WIDTH) + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                shim.setStyle(HEIGHT, node.get(OFFSET_HEIGHT) + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
         * Creates a cloned shim node, using the SHIM_TEMPLATE html template, for use on a new instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
         * @method _getShimTemplate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
         * @return {Node} node A new shim Node instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
        _getShimTemplate : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            return Node.create(Stack.SHIM_TEMPLATE, this._stackNode.get(OWNER_DOCUMENT));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
    Y.WidgetStack = Stack;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
}, '3.10.3', {"requires": ["base-build", "widget"], "skinnable": true});