src/cm/media/js/lib/yui/yui_3.10.3/build/event-outside/event-outside.js
author gibus
Tue, 11 Feb 2014 12:33:25 +0100
changeset 572 93383e54e042
parent 525 89ef5ed3c48b
permissions -rw-r--r--
Font size for piwik optout iframe.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('event-outside', 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
 * Outside events are synthetic DOM events that fire when a corresponding native
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * or synthetic DOM event occurs outside a bound element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * The following outside events are pre-defined by this module:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 *   <li>blur</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
 *   <li>change</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
 *   <li>click</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 *   <li>dblclick</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
 *   <li>focus</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
 *   <li>keydown</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
 *   <li>keypress</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
 *   <li>keyup</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
 *   <li>mousedown</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
 *   <li>mousemove</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
 *   <li>mouseout</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
 *   <li>mouseover</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
 *   <li>mouseup</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
 *   <li>select</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
 *   <li>submit</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
 * </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
 * Define new outside events with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
 * <code>Y.Event.defineOutside(eventType);</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
 * By default, the created synthetic event name will be the name of the event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
 * with "outside" appended (e.g. "click" becomes "clickoutside"). If you want
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
 * a different name for the created Event, pass it as a second argument like so:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
 * <code>Y.Event.defineOutside(eventType, "yonderclick")</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
 * This module was contributed by Brett Stimmerman, promoted from his
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
 * gallery-outside-events module at
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
 * http://yuilibrary.com/gallery/show/outside-events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
 * @module event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
 * @submodule event-outside
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
 * @author brettstimmerman
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
 * @since 3.4.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
// Outside events are pre-defined for each of these native DOM events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
var nativeEvents = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        'blur', 'change', 'click', 'dblclick', 'focus', 'keydown', 'keypress',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        'select', 'submit'
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
 * Defines a new outside event to correspond with the given DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
 * By default, the created synthetic event name will be the name of the event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
 * with "outside" appended (e.g. "click" becomes "clickoutside"). If you want
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
 * a different name for the created Event, pass it as a second argument like so:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
 * <code>Y.Event.defineOutside(eventType, "yonderclick")</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
 * @method defineOutside
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
 * @param {String} event DOM event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
 * @param {String} name (optional) custom outside event name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
 * @for Event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
Y.Event.defineOutside = function (event, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    name = name || (event + 'outside');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    var config = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
        on: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
            sub.handle = Y.one('doc').on(event, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
                if (this.isOutside(node, e.target)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
                    e.currentTarget = node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
                    notifier.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
            }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        detach: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
            sub.handle.detach();
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
        delegate: function (node, sub, notifier, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
            sub.handle = Y.one('doc').delegate(event, function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
                if (this.isOutside(node, e.target)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
                    notifier.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
            }, filter, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
        isOutside: function (node, target) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
            return target !== node && !target.ancestor(function (p) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
                    return p === node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    config.detachDelegate = config.detach;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    Y.Event.define(name, config);
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
// Define outside events for some common native DOM events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
Y.Array.each(nativeEvents, function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
    Y.Event.defineOutside(event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
}, '3.10.3', {"requires": ["event-synthetic"]});