src/cm/media/js/lib/yui/yui_3.10.3/build/dd-drop/dd-drop-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('dd-drop', 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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
     * Provides the ability to create a Drop Target.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
     * @module dd
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
     * @submodule dd-drop
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
     * Provides the ability to create a Drop Target.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
     * @class Drop
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
     * @extends Base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
     * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
     * @namespace DD
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    var NODE = 'node',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
        DDM = Y.DD.DDM,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        OFFSET_HEIGHT = 'offsetHeight',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
        OFFSET_WIDTH = 'offsetWidth',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
        * Fires when a drag element is over this target.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        * @event drop:over
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        * <dt>drop</dt><dd>The drop object at the time of the event.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        * <dt>drag</dt><dd>The drag object at the time of the event.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        EV_DROP_OVER = 'drop:over',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        * Fires when a drag element enters this target.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        * @event drop:enter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        * <dt>drop</dt><dd>The drop object at the time of the event.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        * <dt>drag</dt><dd>The drag object at the time of the event.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        EV_DROP_ENTER = 'drop:enter',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        * Fires when a drag element exits this target.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        * @event drop:exit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        * @param {EventFacade} event An Event Facade object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        EV_DROP_EXIT = 'drop:exit',
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
        * Fires when a draggable node is dropped on this Drop Target. (Fired from dd-ddm-drop)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        * @event drop:hit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
        * <dt>drop</dt><dd>The best guess on what was dropped on.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        * <dt>drag</dt><dd>The drag object at the time of the event.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        * <dt>others</dt><dd>An array of all the other drop targets that was dropped on.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    Drop = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
        this._lazyAddAttrs = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        Drop.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
        //DD init speed up.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        Y.on('domready', Y.bind(function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
            Y.later(100, this, this._createShim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        }, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        DDM._regTarget(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        /* TODO
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
        if (Dom.getStyle(this.el, 'position') == 'fixed') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
            Event.on(window, 'scroll', function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
                this.activateShim();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
            }, this, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
        */
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
    Drop.NAME = 'drop';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    Drop.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        * Y.Node instanace to use as the element to make a Drop Target
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
        * @attribute node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        * @type Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        node: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
            setter: function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
                var n = Y.one(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
                if (!n) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
                    Y.error('DD.Drop: Invalid Node Given: ' + node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
                return n;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
            }
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
        * Array of groups to add this drop into.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        * @attribute groups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        groups: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            value: ['default'],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
            getter: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
                if (!this._groups) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
                    this._groups = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
                    return [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
                return Y.Object.keys(this._groups);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
            setter: function(g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
                this._groups = Y.Array.hash(g);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
                return g;
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
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        * CSS style padding to make the Drop Target bigger than the node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
        * @attribute padding
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
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
        padding: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
            value: '0',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
            setter: function(p) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
                return DDM.cssSizestoObject(p);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
        * Set to lock this drop element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
        * @attribute lock
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        lock: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
            value: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
            setter: function(lock) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
                if (lock) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
                    this.get(NODE).addClass(DDM.CSS_PREFIX + '-drop-locked');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
                    this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-locked');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
                return lock;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        * Controls the default bubble parent for this Drop instance. Default: Y.DD.DDM. Set to false to disable bubbling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
        * Use bubbleTargets in config.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
        * @attribute bubbles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        bubbles: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
            setter: function(t) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
                Y.log('bubbles is deprecated use bubbleTargets: HOST', 'warn', 'dd');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
                this.addTarget(t);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
                return t;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
        * Use the Drop shim. Default: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
        * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
        * @attribute useShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        useShim: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
            value: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
            setter: function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
                Y.DD.DDM._noShim = !v;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
                return v;
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
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
    Y.extend(Drop, Y.Base, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        * The default bubbleTarget for this object. Default: Y.DD.DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        * @property _bubbleTargets
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        _bubbleTargets: Y.DD.DDM,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        * Add this Drop instance to a group, this should be used for on-the-fly group additions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        * @method addToGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        * @param {String} g The group to add this Drop Instance to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
        addToGroup: function(g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
            this._groups[g] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
            return this;
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
        * Remove this Drop instance from a group, this should be used for on-the-fly group removals.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
        * @method removeFromGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
        * @param {String} g The group to remove this Drop Instance from.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
        removeFromGroup: function(g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
            delete this._groups[g];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
            return this;
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
        * This method creates all the events for this Event Target and publishes them so we get Event Bubbling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        * @method _createEvents
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        _createEvents: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            var ev = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
                EV_DROP_OVER,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
                EV_DROP_ENTER,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
                EV_DROP_EXIT,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
                'drop:hit'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
            Y.Array.each(ev, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
                this.publish(v, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
                    type: v,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
                    emitFacade: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
                    preventable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
                    bubbles: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
                    queuable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
                    prefix: 'drop'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            }, this);
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
        * Flag for determining if the target is valid in this operation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
        * @property _valid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        _valid: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        * The groups this target belongs to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
        * @property _groups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
        * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        _groups: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
        * Node reference to the targets shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        * @property shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
        * @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        shim: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        * A region object associated with this target, used for checking regions while dragging.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
        * @property region
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
        * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        region: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
        * This flag is tripped when a drag element is over this target.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
        * @property overTarget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
        overTarget: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        * Check if this target is in one of the supplied groups.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        * @method inGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        * @param {Array} groups The groups to check against
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
        * @return Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
        inGroup: function(groups) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
            this._valid = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            var ret = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
            Y.Array.each(groups, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
                if (this._groups[v]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
                    ret = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
                    this._valid = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            return ret;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
        * Private lifecycle method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
        * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        initializer: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
            Y.later(100, this, this._createEvents);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
            var node = this.get(NODE), id;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
            if (!node.get('id')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
                id = Y.stamp(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
                node.set('id', id);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
            node.addClass(DDM.CSS_PREFIX + '-drop');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
            //Shouldn't have to do this..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
            this.set('groups', this.get('groups'));
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
        * Lifecycle destructor, unreg the drag from the DDM and remove listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
        * @method destructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
        destructor: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
            DDM._unregTarget(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
            if (this.shim && (this.shim !== this.get(NODE))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
                this.shim.detachAll();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
                this.shim.remove();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
                this.shim = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
            this.detachAll();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
        * Removes classes from the target, resets some flags and sets the shims deactive position [-999, -999]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        * @method _deactivateShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        _deactivateShim: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
            if (!this.shim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-valid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-invalid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
            if (this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
                this.shim.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
                    top: '-999px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
                    left: '-999px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
                    zIndex: '1'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
            this.overTarget = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        * Activates the shim and adds some interaction CSS classes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
        * @method _activateShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
        _activateShim: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
            if (!DDM.activeDrag) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
                return false; //Nothing is dragging, no reason to activate.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
            if (this.get(NODE) === DDM.activeDrag.get(NODE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
            if (this.get('lock')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
            var node = this.get(NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
            //TODO Visibility Check..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
            //if (this.inGroup(DDM.activeDrag.get('groups')) && this.get(NODE).isVisible()) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
            if (this.inGroup(DDM.activeDrag.get('groups'))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
                node.removeClass(DDM.CSS_PREFIX + '-drop-active-invalid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
                node.addClass(DDM.CSS_PREFIX + '-drop-active-valid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
                DDM._addValid(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
                this.overTarget = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
                if (!this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
                    this.shim = this.get(NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
                this.sizeShim();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
                DDM._removeValid(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
                node.removeClass(DDM.CSS_PREFIX + '-drop-active-valid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
                node.addClass(DDM.CSS_PREFIX + '-drop-active-invalid');
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
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
        * Positions and sizes the shim with the raw data from the node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
        * this can be used to programatically adjust the Targets shim for Animation..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
        * @method sizeShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
        sizeShim: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
            if (!DDM.activeDrag) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
                return false; //Nothing is dragging, no reason to activate.
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 (this.get(NODE) === DDM.activeDrag.get(NODE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
            //if (this.get('lock') || !this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
            if (this.get('lock')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
            if (!this.shim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
                Y.later(100, this, this.sizeShim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
            var node = this.get(NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
                nh = node.get(OFFSET_HEIGHT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
                nw = node.get(OFFSET_WIDTH),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
                xy = node.getXY(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
                p = this.get('padding'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
                dd, dH, dW;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
            //Apply padding
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            nw = nw + p.left + p.right;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            nh = nh + p.top + p.bottom;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
            xy[0] = xy[0] - p.left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
            xy[1] = xy[1] - p.top;
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
            if (DDM.activeDrag.get('dragMode') === DDM.INTERSECT) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
                //Intersect Mode, make the shim bigger
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
                dd = DDM.activeDrag;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                dH = dd.get(NODE).get(OFFSET_HEIGHT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                dW = dd.get(NODE).get(OFFSET_WIDTH);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                nh = (nh + dH);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                nw = (nw + dW);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                xy[0] = xy[0] - (dW - dd.deltaXY[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
                xy[1] = xy[1] - (dH - dd.deltaXY[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
            if (this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                //Set the style on the shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
                this.shim.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
                    height: nh + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
                    width: nw + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
                    top: xy[1] + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
                    left: xy[0] + 'px'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
            //Create the region to be used by intersect when a drag node is over us.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
            this.region = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
                '0': xy[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
                '1': xy[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
                area: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
                top: xy[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
                right: xy[0] + nw,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
                bottom: xy[1] + nh,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
                left: xy[0]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
        * Creates the Target shim and adds it to the DDM's playground..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
        * @method _createShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
        _createShim: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
            //No playground, defer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
            if (!DDM._pg) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
                Y.later(10, this, this._createShim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
            //Shim already here, cancel
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
            if (this.shim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
            var s = this.get('node');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
            if (this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
                s = Y.Node.create('<div id="' + this.get(NODE).get('id') + '_shim"></div>');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
                s.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
                    height: this.get(NODE).get(OFFSET_HEIGHT) + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
                    width: this.get(NODE).get(OFFSET_WIDTH) + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
                    backgroundColor: 'yellow',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
                    opacity: '.5',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
                    zIndex: '1',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
                    overflow: 'hidden',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
                    top: '-900px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
                    left: '-900px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
                    position:  'absolute'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
                DDM._pg.appendChild(s);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
                s.on('mouseover', Y.bind(this._handleOverEvent, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
                s.on('mouseout', Y.bind(this._handleOutEvent, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
            this.shim = s;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
        * This handles the over target call made from this object or from the DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
        * @method _handleOverTarget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
        _handleTargetOver: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
            if (DDM.isOverTarget(this)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
                this.get(NODE).addClass(DDM.CSS_PREFIX + '-drop-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
                DDM.activeDrop = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
                DDM.otherDrops[this] = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                if (this.overTarget) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
                    DDM.activeDrag.fire('drag:over', { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                    this.fire(EV_DROP_OVER, { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
                    //Prevent an enter before a start..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
                    if (DDM.activeDrag.get('dragging')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
                        this.overTarget = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
                        this.fire(EV_DROP_ENTER, { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                        DDM.activeDrag.fire('drag:enter', { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
                        DDM.activeDrag.get(NODE).addClass(DDM.CSS_PREFIX + '-drag-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
                        //TODO - Is this needed??
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
                        //DDM._handleTargetOver();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
                this._handleOut();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
        * Handles the mouseover DOM event on the Target Shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
        * @method _handleOverEvent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
        _handleOverEvent: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
            this.shim.setStyle('zIndex', '999');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
            DDM._addActiveShim(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
        * Handles the mouseout DOM event on the Target Shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
        * @method _handleOutEvent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
        _handleOutEvent: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
            this.shim.setStyle('zIndex', '1');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
            DDM._removeActiveShim(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
        * Handles out of target calls/checks
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
        * @method _handleOut
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
        _handleOut: function(force) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
            if (!DDM.isOverTarget(this) || force) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
                if (this.overTarget) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
                    this.overTarget = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
                    if (!force) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
                        DDM._removeActiveShim(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                    if (DDM.activeDrag) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                        this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
                        DDM.activeDrag.get(NODE).removeClass(DDM.CSS_PREFIX + '-drag-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
                        this.fire(EV_DROP_EXIT, { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                        DDM.activeDrag.fire('drag:exit', { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
                        delete DDM.otherDrops[this];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
    Y.DD.Drop = Drop;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
}, '3.10.3', {"requires": ["dd-drag", "dd-ddm-drop"]});