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