src/cm/media/js/lib/yui/yui_3.10.3/build/widget-autohide/widget-autohide.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-autohide', 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
 * A widget-level extension that provides ability to hide widget when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * certain events occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @module widget-autohide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * @author eferraiuolo, tilomitra
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 * @since 3.4.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
var WIDGET_AUTOHIDE    = 'widgetAutohide',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    AUTOHIDE            = 'autohide',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    CLICK_OUTSIDE     = 'clickoutside',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    FOCUS_OUTSIDE     = 'focusoutside',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    DOCUMENT            = 'document',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    KEY                 = 'key',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
    PRESS_ESCAPE         = 'esc',
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
    RENDERED            = "rendered",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
    BOUNDING_BOX        = "boundingBox",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    VISIBLE             = "visible",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    CHANGE              = 'Change',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
    getCN               = Y.ClassNameManager.getClassName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
 * The WidgetAutohide class provides the hideOn attribute which can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
 * be used to hide the widget when certain events occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
 * @class WidgetAutohide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
 * @param {Object} config User configuration object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
function WidgetAutohide(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    Y.after(this._bindUIAutohide, this, BIND_UI);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    Y.after(this._syncUIAutohide, this, SYNC_UI);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    if (this.get(RENDERED)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        this._bindUIAutohide();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        this._syncUIAutohide();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
}
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
* Static property used to define the default attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
* configuration introduced by WidgetAutohide.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
* @property ATTRS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
* @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
* @type 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
WidgetAutohide.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
     * @attribute hideOn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
     * @type array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
     * @description An array of objects corresponding to the nodes, events, and keycodes to hide the widget on.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
     * The implementer can supply an array of objects, with each object having the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
     * <p>eventName: (string, required): The eventName to listen to.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
     * <p>node: (Y.Node, optional): The Y.Node that will fire the event (defaults to the boundingBox of the widget)</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
     * <p>keyCode: (string, optional): If listening for key events, specify the keyCode</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
     * <p>By default, this attribute consists of one object which will cause the widget to hide if the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
     * escape key is pressed.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
    hideOn: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        validator: Y.Lang.isArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
        valueFn  : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
            return [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
                    node: Y.one(DOCUMENT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
                    eventName: KEY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
                    keyCode: PRESS_ESCAPE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
            ];
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
WidgetAutohide.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
    // *** Instance Members *** //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
        _uiHandlesAutohide : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
        // *** Lifecycle Methods *** //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        destructor : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
            this._detachUIHandlesAutohide();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        },
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
         * Binds event listeners to the widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
         * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
         * This method in invoked after bindUI is invoked for the Widget class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
         * using YUI's aop infrastructure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
         * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
         * @method _bindUIAutohide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        _bindUIAutohide : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            this.after(VISIBLE+CHANGE, this._afterHostVisibleChangeAutohide);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
            this.after("hideOnChange", this._afterHideOnChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        },
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
         * Syncs up the widget based on its current state. In particular, removes event listeners if
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
         * widget is not visible, and attaches them otherwise.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
         * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
         * This method in invoked after syncUI is invoked for the Widget class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
         * using YUI's aop infrastructure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
         * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
         * @method _syncUIAutohide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        _syncUIAutohide : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
            this._uiSetHostVisibleAutohide(this.get(VISIBLE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
        // *** Private Methods *** //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
         * Removes event listeners if widget is not visible, and attaches them otherwise.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
         * @method _uiSetHostVisibleAutohide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        _uiSetHostVisibleAutohide : function (visible) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            if (visible) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
                //this._attachUIHandlesAutohide();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
                Y.later(1, this, '_attachUIHandlesAutohide');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
                this._detachUIHandlesAutohide();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
        },
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
         * Iterates through all objects in the hideOn attribute and creates event listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
         * @method _attachUIHandlesAutohide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
        _attachUIHandlesAutohide : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
            if (this._uiHandlesAutohide) { return; }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
            var bb = this.get(BOUNDING_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
                hide = Y.bind(this.hide,this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
                uiHandles = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
                self = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
                hideOn = this.get('hideOn'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
                i = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
                o = {node: undefined, ev: undefined, keyCode: undefined};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
                //push all events on which the widget should be hidden
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
                for (; i < hideOn.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
                    o.node = hideOn[i].node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
                    o.ev = hideOn[i].eventName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
                    o.keyCode = hideOn[i].keyCode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
                    //no keycode or node defined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
                    if (!o.node && !o.keyCode && o.ev) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
                        uiHandles.push(bb.on(o.ev, hide));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
                    //node defined, no keycode (not a keypress)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
                    else if (o.node && !o.keyCode && o.ev) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
                        uiHandles.push(o.node.on(o.ev, hide));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
                    //node defined, keycode defined, event defined (its a key press)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
                    else if (o.node && o.keyCode && o.ev) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
                        uiHandles.push(o.node.on(o.ev, hide, o.keyCode));
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
                    else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
            this._uiHandlesAutohide = uiHandles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
         * Detaches all event listeners created by this extension
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
         * @method _detachUIHandlesAutohide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        _detachUIHandlesAutohide : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
            Y.each(this._uiHandlesAutohide, function(h){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
                h.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
            this._uiHandlesAutohide = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
         * Default function called when the visibility of the widget changes. Determines
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
         * whether to attach or detach event listeners based on the visibility of the widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
         * @method _afterHostVisibleChangeAutohide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        _afterHostVisibleChangeAutohide : function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            this._uiSetHostVisibleAutohide(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
        },
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
         * Default function called when hideOn Attribute is changed. Remove existing listeners and create new listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
         * @method _afterHideOnChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
        _afterHideOnChange : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
            this._detachUIHandlesAutohide();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
            if (this.get(VISIBLE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
                this._attachUIHandlesAutohide();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
Y.WidgetAutohide = WidgetAutohide;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
}, '3.10.3', {"requires": ["base-build", "event-key", "event-outside", "widget"]});