src/cm/media/js/lib/yui/yui_3.10.3/build/dd-drop/dd-drop.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
                this.addTarget(t);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
                return t;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
            }
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
        * Use the Drop shim. Default: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
        * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
        * @attribute useShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        useShim: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
            value: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
            setter: function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
                Y.DD.DDM._noShim = !v;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
                return v;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
    Y.extend(Drop, Y.Base, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        * The default bubbleTarget for this object. Default: Y.DD.DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        * @property _bubbleTargets
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        _bubbleTargets: Y.DD.DDM,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        * 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
   196
        * @method addToGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        * @param {String} g The group to add this Drop Instance to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
        addToGroup: function(g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
            this._groups[g] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        * 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
   207
        * @method removeFromGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
        * @param {String} g The group to remove this Drop Instance from.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        removeFromGroup: function(g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
            delete this._groups[g];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
        * 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
   218
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        * @method _createEvents
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        _createEvents: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            var ev = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
                EV_DROP_OVER,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
                EV_DROP_ENTER,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
                EV_DROP_EXIT,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
                'drop:hit'
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
            Y.Array.each(ev, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
                this.publish(v, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
                    type: v,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
                    emitFacade: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
                    preventable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
                    bubbles: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
                    queuable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
                    prefix: 'drop'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
            }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
        * Flag for determining if the target is valid in this operation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
        * @property _valid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
        _valid: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
        * The groups this target belongs to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        * @property _groups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
        * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        _groups: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
        * Node reference to the targets shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
        * @property shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        * @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        shim: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        * A region object associated with this target, used for checking regions while dragging.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        * @property region
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
        * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        region: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        * This flag is tripped when a drag element is over this target.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
        * @property overTarget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
        overTarget: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
        * Check if this target is in one of the supplied groups.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        * @method inGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        * @param {Array} groups The groups to check against
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        * @return Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        inGroup: function(groups) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
            this._valid = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
            var ret = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            Y.Array.each(groups, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
                if (this._groups[v]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
                    ret = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
                    this._valid = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
            }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            return ret;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        * Private lifecycle method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
        * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
        initializer: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
            Y.later(100, this, this._createEvents);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
            var node = this.get(NODE), id;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
            if (!node.get('id')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                id = Y.stamp(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
                node.set('id', id);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
            node.addClass(DDM.CSS_PREFIX + '-drop');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
            //Shouldn't have to do this..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
            this.set('groups', this.get('groups'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
        * Lifecycle destructor, unreg the drag from the DDM and remove listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
        * @method destructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
        destructor: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
            DDM._unregTarget(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
            if (this.shim && (this.shim !== this.get(NODE))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
                this.shim.detachAll();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
                this.shim.remove();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
                this.shim = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
            this.detachAll();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        * 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
   324
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
        * @method _deactivateShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
        _deactivateShim: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
            if (!this.shim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-valid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-active-invalid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
            if (this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
                this.shim.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
                    top: '-999px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
                    left: '-999px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
                    zIndex: '1'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
            this.overTarget = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
        * Activates the shim and adds some interaction CSS classes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
        * @method _activateShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
        _activateShim: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
            if (!DDM.activeDrag) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
                return false; //Nothing is dragging, no reason to activate.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
            if (this.get(NODE) === DDM.activeDrag.get(NODE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
            if (this.get('lock')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
            var node = this.get(NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
            //TODO Visibility Check..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
            //if (this.inGroup(DDM.activeDrag.get('groups')) && this.get(NODE).isVisible()) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
            if (this.inGroup(DDM.activeDrag.get('groups'))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
                node.removeClass(DDM.CSS_PREFIX + '-drop-active-invalid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
                node.addClass(DDM.CSS_PREFIX + '-drop-active-valid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
                DDM._addValid(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
                this.overTarget = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
                if (!this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
                    this.shim = this.get(NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
                this.sizeShim();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
                DDM._removeValid(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
                node.removeClass(DDM.CSS_PREFIX + '-drop-active-valid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
                node.addClass(DDM.CSS_PREFIX + '-drop-active-invalid');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
            }
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
        * Positions and sizes the shim with the raw data from the node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
        * this can be used to programatically adjust the Targets shim for Animation..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
        * @method sizeShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        sizeShim: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
            if (!DDM.activeDrag) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
                return false; //Nothing is dragging, no reason to activate.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
            if (this.get(NODE) === DDM.activeDrag.get(NODE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
            //if (this.get('lock') || !this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
            if (this.get('lock')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
            if (!this.shim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
                Y.later(100, this, this.sizeShim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
            var node = this.get(NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
                nh = node.get(OFFSET_HEIGHT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
                nw = node.get(OFFSET_WIDTH),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
                xy = node.getXY(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
                p = this.get('padding'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
                dd, dH, dW;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
            //Apply padding
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
            nw = nw + p.left + p.right;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            nh = nh + p.top + p.bottom;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            xy[0] = xy[0] - p.left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
            xy[1] = xy[1] - p.top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
            if (DDM.activeDrag.get('dragMode') === DDM.INTERSECT) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
                //Intersect Mode, make the shim bigger
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
                dd = DDM.activeDrag;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
                dH = dd.get(NODE).get(OFFSET_HEIGHT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                dW = dd.get(NODE).get(OFFSET_WIDTH);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                nh = (nh + dH);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                nw = (nw + dW);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                xy[0] = xy[0] - (dW - dd.deltaXY[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                xy[1] = xy[1] - (dH - dd.deltaXY[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
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
            if (this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                //Set the style on the shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                this.shim.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
                    height: nh + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
                    width: nw + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
                    top: xy[1] + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
                    left: xy[0] + 'px'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
                });
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
            //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
   436
            this.region = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
                '0': xy[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
                '1': xy[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
                area: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
                top: xy[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
                right: xy[0] + nw,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
                bottom: xy[1] + nh,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
                left: xy[0]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
            };
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
        * Creates the Target shim and adds it to the DDM's playground..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
        * @method _createShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
        _createShim: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
            //No playground, defer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
            if (!DDM._pg) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
                Y.later(10, this, this._createShim);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
            //Shim already here, cancel
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
            if (this.shim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
            var s = this.get('node');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
            if (this.get('useShim')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
                s = Y.Node.create('<div id="' + this.get(NODE).get('id') + '_shim"></div>');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
                s.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
                    height: this.get(NODE).get(OFFSET_HEIGHT) + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
                    width: this.get(NODE).get(OFFSET_WIDTH) + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
                    backgroundColor: 'yellow',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
                    opacity: '.5',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
                    zIndex: '1',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
                    overflow: 'hidden',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
                    top: '-900px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
                    left: '-900px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
                    position:  'absolute'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
                DDM._pg.appendChild(s);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
                s.on('mouseover', Y.bind(this._handleOverEvent, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
                s.on('mouseout', Y.bind(this._handleOutEvent, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
            }
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
            this.shim = s;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
        * 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
   488
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
        * @method _handleOverTarget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
        _handleTargetOver: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
            if (DDM.isOverTarget(this)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
                this.get(NODE).addClass(DDM.CSS_PREFIX + '-drop-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
                DDM.activeDrop = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
                DDM.otherDrops[this] = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
                if (this.overTarget) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                    DDM.activeDrag.fire('drag:over', { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
                    this.fire(EV_DROP_OVER, { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
                    //Prevent an enter before a start..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
                    if (DDM.activeDrag.get('dragging')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
                        this.overTarget = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
                        this.fire(EV_DROP_ENTER, { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
                        DDM.activeDrag.fire('drag:enter', { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                        DDM.activeDrag.get(NODE).addClass(DDM.CSS_PREFIX + '-drag-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
                        //TODO - Is this needed??
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
                        //DDM._handleTargetOver();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
                this._handleOut();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
            }
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
        * Handles the mouseover DOM event on the Target Shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
        * @method _handleOverEvent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
        _handleOverEvent: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
            this.shim.setStyle('zIndex', '999');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
            DDM._addActiveShim(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
        * Handles the mouseout DOM event on the Target Shim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
        * @method _handleOutEvent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
        _handleOutEvent: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
            this.shim.setStyle('zIndex', '1');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
            DDM._removeActiveShim(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
        * Handles out of target calls/checks
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
        * @method _handleOut
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
        _handleOut: function(force) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
            if (!DDM.isOverTarget(this) || force) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
                if (this.overTarget) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
                    this.overTarget = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
                    if (!force) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
                        DDM._removeActiveShim(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
                    if (DDM.activeDrag) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                        this.get(NODE).removeClass(DDM.CSS_PREFIX + '-drop-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                        DDM.activeDrag.get(NODE).removeClass(DDM.CSS_PREFIX + '-drag-over');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
                        this.fire(EV_DROP_EXIT, { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
                        DDM.activeDrag.fire('drag:exit', { drop: this, drag: DDM.activeDrag });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                        delete DDM.otherDrops[this];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
                    }
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
    Y.DD.Drop = Drop;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
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
}, '3.10.3', {"requires": ["dd-drag", "dd-ddm-drop"]});