src/cm/media/js/lib/yui/yui3-3.15.0/build/event-outside/event-outside-debug.js
author ymh <ymh.work@gmail.com>
Thu, 10 Apr 2014 17:30:29 +0200
changeset 630 36ef50b63372
parent 602 e16a97fb364a
permissions -rw-r--r--
update karma config after test lib moves
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('event-outside', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
 * Outside events are synthetic DOM events that fire when a corresponding native
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
 * or synthetic DOM event occurs outside a bound element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
 * The following outside events are pre-defined by this module:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
 * <ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
 *   <li>blur</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
 *   <li>change</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
 *   <li>click</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
 *   <li>dblclick</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
 *   <li>focus</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
 *   <li>keydown</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
 *   <li>keypress</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
 *   <li>keyup</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
 *   <li>mousedown</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
 *   <li>mousemove</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
 *   <li>mouseout</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
 *   <li>mouseover</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
 *   <li>mouseup</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
 *   <li>select</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
 *   <li>submit</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
 * </ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
 * Define new outside events with
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
 * <code>Y.Event.defineOutside(eventType);</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
 * By default, the created synthetic event name will be the name of the event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
 * with "outside" appended (e.g. "click" becomes "clickoutside"). If you want
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
 * a different name for the created Event, pass it as a second argument like so:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
 * <code>Y.Event.defineOutside(eventType, "yonderclick")</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
 * This module was contributed by Brett Stimmerman, promoted from his
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
 * gallery-outside-events module at
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
 * http://yuilibrary.com/gallery/show/outside-events
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
 * @module event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
 * @submodule event-outside
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
 * @author brettstimmerman
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
 * @since 3.4.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
// Outside events are pre-defined for each of these native DOM events
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
var nativeEvents = [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
        'blur', 'change', 'click', 'dblclick', 'focus', 'keydown', 'keypress',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
        'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
        'select', 'submit'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
    ];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
 * Defines a new outside event to correspond with the given DOM event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
 * By default, the created synthetic event name will be the name of the event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
 * with "outside" appended (e.g. "click" becomes "clickoutside"). If you want
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
 * a different name for the created Event, pass it as a second argument like so:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
 * <code>Y.Event.defineOutside(eventType, "yonderclick")</code>.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
 * @method defineOutside
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
 * @param {String} event DOM event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
 * @param {String} name (optional) custom outside event name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
 * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
 * @for Event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
Y.Event.defineOutside = function (event, name) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
    name = name || (event + 'outside');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
    var config = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
        on: function (node, sub, notifier) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
            sub.handle = Y.one('doc').on(event, function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
                if (this.isOutside(node, e.target)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
                    e.currentTarget = node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
                    notifier.fire(e);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
            }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
        detach: function (node, sub, notifier) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
            sub.handle.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
        delegate: function (node, sub, notifier, filter) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
            sub.handle = Y.one('doc').delegate(event, function (e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
                if (this.isOutside(node, e.target)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
                    notifier.fire(e);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
            }, filter, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
        isOutside: function (node, target) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
            return target !== node && !target.ancestor(function (p) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
                    return p === node;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
                });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
    config.detachDelegate = config.detach;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
    Y.Event.define(name, config);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
// Define outside events for some common native DOM events
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
Y.Array.each(nativeEvents, function (event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
    Y.Event.defineOutside(event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
}, '@VERSION@', {"requires": ["event-synthetic"]});