src/cm/media/js/lib/yui/yui_3.10.3/build/dd-delegate/dd-delegate.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
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-delegate', 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 drag multiple nodes under a container element using only one Y.DD.Drag instance as a delegate.
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-delegate
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 drag multiple nodes under a container element using only one Y.DD.Drag instance as a delegate.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
     * @class Delegate
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    var Delegate = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        Delegate.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    CONT = 'container',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    NODES = 'nodes',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
    _tmpNode = Y.Node.create('<div>Temp Node</div>');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    Y.extend(Delegate, Y.Base, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        * The default bubbleTarget for this object. Default: Y.DD.DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        * @property _bubbleTargets
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        _bubbleTargets: Y.DD.DDM,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        * A reference to the temporary dd instance used under the hood.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        * @property dd
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        dd: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        * The state of the Y.DD.DDM._noShim property to it can be reset.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        * @property _shimState
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        _shimState: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        * Array of event handles to be destroyed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        * @property _handles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        _handles: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        * Listens to the nodeChange event and sets the dragNode on the temp dd instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
        * @method _onNodeChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        * @param {Event} e The Event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        _onNodeChange: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
            this.set('dragNode', e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        * Listens for the drag:end event and updates the temp dd instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        * @method _afterDragEnd
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
        * @param {Event} e The Event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
        _afterDragEnd: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
            Y.DD.DDM._noShim = this._shimState;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
            this.set('lastNode', this.dd.get('node'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
            this.get('lastNode').removeClass(Y.DD.DDM.CSS_PREFIX + '-dragging');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
            this.dd._unprep();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
            this.dd.set('node', _tmpNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        * The callback for the Y.DD.Delegate instance used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        * @method _delMouseDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        * @param {Event} e The MouseDown Event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        _delMouseDown: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
            var tar = e.currentTarget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
                dd = this.dd,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
                dNode = tar,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
                config = this.get('dragConfig');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
            if (tar.test(this.get(NODES)) && !tar.test(this.get('invalid'))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
                this._shimState = Y.DD.DDM._noShim;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
                Y.DD.DDM._noShim = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
                this.set('currentNode', tar);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
                dd.set('node', tar);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
                if (config && config.dragNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
                    dNode = config.dragNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
                } else if (dd.proxy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
                    dNode = Y.DD.DDM._proxy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
                dd.set('dragNode', dNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
                dd._prep();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
                dd.fire('drag:mouseDown', { ev: e });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
        * Sets the target shim state
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
        * @method _onMouseEnter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        * @param {Event} e The MouseEnter Event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        _onMouseEnter: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            this._shimState = Y.DD.DDM._noShim;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
            Y.DD.DDM._noShim = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        * Resets the target shim state
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        * @method _onMouseLeave
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
        * @param {Event} e The MouseLeave Event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
        _onMouseLeave: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
            Y.DD.DDM._noShim = this._shimState;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
        initializer: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
            this._handles = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
            //Create a tmp DD instance under the hood.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
            //var conf = Y.clone(this.get('dragConfig') || {}),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
            var conf = this.get('dragConfig') || {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
                cont = this.get(CONT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
            conf.node = _tmpNode.cloneNode(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
            conf.bubbleTargets = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
            if (this.get('handles')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
                conf.handles = this.get('handles');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
            this.dd = new Y.DD.Drag(conf);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
            //On end drag, detach the listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            this.dd.after('drag:end', Y.bind(this._afterDragEnd, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
            this.dd.on('dragNodeChange', Y.bind(this._onNodeChange, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
            this.dd.after('drag:mouseup', function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
                this._unprep();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
            //Attach the delegate to the container
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
            this._handles.push(Y.delegate(Y.DD.Drag.START_EVENT, Y.bind(this._delMouseDown, this), cont, this.get(NODES)));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
            this._handles.push(Y.on('mouseenter', Y.bind(this._onMouseEnter, this), cont));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            this._handles.push(Y.on('mouseleave', Y.bind(this._onMouseLeave, this), cont));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            Y.later(50, this, this.syncTargets);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
            Y.DD.DDM.regDelegate(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
        * Applies the Y.Plugin.Drop to all nodes matching the cont + nodes selector query.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        * @method syncTargets
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        syncTargets: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
            if (!Y.Plugin.Drop || this.get('destroyed')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
            var items, groups, config;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
            if (this.get('target')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
                items = Y.one(this.get(CONT)).all(this.get(NODES));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
                groups = this.dd.get('groups');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
                config = this.get('dragConfig');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
                if (config && config.groups) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
                    groups = config.groups;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
                items.each(function(i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
                    this.createDrop(i, groups);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
                }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
        * Apply the Drop plugin to this node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        * @method createDrop
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        * @param {Node} node The Node to apply the plugin to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        * @param {Array} groups The default groups to assign this target to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        * @return Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        createDrop: function(node, groups) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
            var config = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
                useShim: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
                bubbleTargets: this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
            if (!node.drop) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
                node.plug(Y.Plugin.Drop, config);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
            node.drop.set('groups', groups);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
            return node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        destructor: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
            if (this.dd) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
                this.dd.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
            if (Y.Plugin.Drop) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
                var targets = Y.one(this.get(CONT)).all(this.get(NODES));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
                targets.unplug(Y.Plugin.Drop);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
            Y.Array.each(this._handles, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
                v.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    }, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        NAME: 'delegate',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        ATTRS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            * A selector query to get the container to listen for mousedown events on. All "nodes" should be a child of this container.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            * @attribute container
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
            container: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
                value: 'body'
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
            * A selector query to get the children of the "container" to make draggable elements from.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
            * @attribute nodes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
            * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
            nodes: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
                value: '.dd-draggable'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
            * A selector query to test a node to see if it's an invalid item.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
            * @attribute invalid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            invalid: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
                value: 'input, select, button, a, textarea'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
            * Y.Node instance of the last item dragged.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
            * @attribute lastNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
            * @type Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
            lastNode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
                value: _tmpNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            * Y.Node instance of the dd node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
            * @attribute currentNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
            * @type Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
            currentNode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
                value: _tmpNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            * Y.Node instance of the dd dragNode.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
            * @attribute dragNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
            * @type Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
            dragNode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
                value: _tmpNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            * Is the mouse currently over the container
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
            * @attribute over
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
            * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
            over: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
                value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            * Should the items also be a drop target.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
            * @attribute target
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
            * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            target: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
                value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
            * The default config to be used when creating the DD instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
            * @attribute dragConfig
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
            dragConfig: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
                value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
            * The handles config option added to the temp DD instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
            * @attribute handles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
            * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
            handles: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
                value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    Y.mix(Y.DD.DDM, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
        * Holder for all Y.DD.Delegate instances
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
        * @for DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
        * @property _delegates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
        * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
        _delegates: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
        * Register a Delegate with the DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
        * @for DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
        * @method regDelegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
        regDelegate: function(del) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
            this._delegates.push(del);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
        * Get a delegate instance from a container node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        * @for DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
        * @method getDelegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
        * @return Y.DD.Delegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
        getDelegate: function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
            var del = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
            node = Y.one(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
            Y.Array.each(this._delegates, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
                if (node.test(v.get(CONT))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
                    del = v;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
            }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
            return del;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
    Y.namespace('DD');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
    Y.DD.Delegate = Delegate;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
}, '3.10.3', {"requires": ["dd-drag", "dd-drop-plugin", "event-mouseenter"]});