src/cm/media/js/lib/yui/yui_3.10.3/build/widget-uievents/widget-uievents.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-uievents', 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
 * Support for Widget UI Events (Custom Events fired by the widget, which wrap the underlying DOM events - e.g. widget:click, widget:mousedown)
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @submodule widget-uievents
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
var BOUNDING_BOX = "boundingBox",
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
    RENDER = "render",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
    L = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    EVENT_PREFIX_DELIMITER = ":",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    //  Map of Node instances serving as a delegation containers for a specific
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    //  event type to Widget instances using that delegation container.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    _uievts = Y.Widget._uievts = Y.Widget._uievts || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
Y.mix(Widget.prototype, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
     * Destructor logic for UI event infrastructure,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
     * invoked during Widget destruction.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
     * @method _destroyUIEvents
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
     * @for Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    _destroyUIEvents: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        var widgetGuid = Y.stamp(this, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        Y.each(_uievts, function (info, key) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
            if (info.instances[widgetGuid]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
                //  Unregister this Widget instance as needing this delegated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
                //  event listener.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
                delete info.instances[widgetGuid];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
                //  There are no more Widget instances using this delegated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
                //  event listener, so detach it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
                if (Y.Object.isEmpty(info.instances)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
                    info.handle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
                    if (_uievts[key]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
                        delete _uievts[key];
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
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        });
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
     * Map of DOM events that should be fired as Custom Events by the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
     * Widget instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
     * @property UI_EVENTS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
     * @for Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    UI_EVENTS: Y.Node.DOM_EVENTS,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
     * Returns the node on which to bind delegate listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
     * @method _getUIEventNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
     * @for Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
    _getUIEventNode: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        return this.get(BOUNDING_BOX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
     * Binds a delegated DOM event listener of the specified type to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
     * Widget's outtermost DOM element to facilitate the firing of a Custom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
     * Event of the same type for the Widget instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
     * @method _createUIEvent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
     * @for Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
     * @param type {String} String representing the name of the event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    _createUIEvent: function (type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
        var uiEvtNode = this._getUIEventNode(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            key = (Y.stamp(uiEvtNode) + type),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
            info = _uievts[key],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
            handle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        //  For each Node instance: Ensure that there is only one delegated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
        //  event listener used to fire Widget UI events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        if (!info) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
            handle = uiEvtNode.delegate(type, function (evt) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
                var widget = Widget.getByNode(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
                // Widget could be null if node instance belongs to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
                // another Y instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
                if (widget) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
                    if (widget._filterUIEvent(evt)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
                        widget.fire(evt.type, { domEvent: evt });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            }, "." + Y.Widget.getClassName());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
            _uievts[key] = info = { instances: {}, handle: handle };
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
        //  Register this Widget as using this Node as a delegation container.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        info.instances[Y.stamp(this)] = 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
     * This method is used to determine if we should fire
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
     * the UI Event or not. The default implementation makes sure
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
     * that for nested delegates (nested unrelated widgets), we don't
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
     * fire the UI event listener more than once at each level.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
     * <p>For example, without the additional filter, if you have nested
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
     * widgets, each widget will have a delegate listener. If you
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
     * click on the inner widget, the inner delegate listener's
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
     * filter will match once, but the outer will match twice
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
     * (based on delegate's design) - once for the inner widget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
     * and once for the outer.</p>
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 _filterUIEvent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
     * @for Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
     * @param {DOMEventFacade} evt
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
     * @return {boolean} true if it's OK to fire the custom UI event, false if not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
    _filterUIEvent: function(evt) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        // Either it's hitting this widget's delegate container (and not some other widget's),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        // or the container it's hitting is handling this widget's ui events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        return (evt.currentTarget.compareTo(evt.container) || evt.container.compareTo(this._getUIEventNode()));
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
     * Determines if the specified event is a UI event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
     * @method _isUIEvent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
     * @for Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
     * @param type {String} String representing the name of the event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
     * @return {String} Event Returns the name of the UI Event, otherwise
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
     * undefined.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
    _getUIEvent: function (type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        if (L.isString(type)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
            var sType = this.parseType(type)[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
                iDelim,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
                returnVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
            if (sType) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
                // TODO: Get delimiter from ET, or have ET support this.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
                iDelim = sType.indexOf(EVENT_PREFIX_DELIMITER);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
                if (iDelim > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
                    sType = sType.substring(iDelim + EVENT_PREFIX_DELIMITER.length);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
                if (this.UI_EVENTS[sType]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
                    returnVal = sType;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
            return returnVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
     * Sets up infrastructure required to fire a UI event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
     * @method _initUIEvent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
     * @for Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
     * @param type {String} String representing the name of the event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
     * @return {String}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
    _initUIEvent: function (type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        var sType = this._getUIEvent(type),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
            queue = this._uiEvtsInitQueue || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        if (sType && !queue[sType]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
            this._uiEvtsInitQueue = queue[sType] = 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
            this.after(RENDER, function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
                this._createUIEvent(sType);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
                delete this._uiEvtsInitQueue[sType];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    //  Override of "on" from Base to facilitate the firing of Widget events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
    //  based on DOM events of the same name/type (e.g. "click", "mouseover").
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    //  Temporary solution until we have the ability to listen to when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
    //  someone adds an event listener (bug 2528230)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
    on: function (type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
        this._initUIEvent(type);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
        return Widget.superclass.on.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    //  Override of "publish" from Base to facilitate the firing of Widget events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
    //  based on DOM events of the same name/type (e.g. "click", "mouseover").
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
    //  Temporary solution until we have the ability to listen to when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
    //  someone publishes an event (bug 2528230)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
    publish: function (type, config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
        var sType = this._getUIEvent(type);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
        if (sType && config && config.defaultFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
            this._initUIEvent(sType);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
        return Widget.superclass.publish.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
}, true); // overwrite existing EventTarget methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
}, '3.10.3', {"requires": ["node-event-delegate", "widget-base"]});