src/cm/media/js/lib/yui/yui_3.10.3/build/dd-drag/dd-drag-debug.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-drag', 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 a Node.
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-drag
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 a Node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
     * @class Drag
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 DDM = Y.DD.DDM,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
        NODE = 'node',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        DRAGGING = 'dragging',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
        DRAG_NODE = 'dragNode',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
        OFFSET_HEIGHT = 'offsetHeight',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
        OFFSET_WIDTH = 'offsetWidth',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
        * Handles the mouseup DOM event, does nothing internally just fires.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        * @event drag:mouseup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        * Handles the mousedown DOM event, checks to see if you have a valid handle then starts the drag timers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        * @event drag:mouseDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        * @preventable _defMouseDownFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        * <dl><dt>ev</dt><dd>The original mousedown event.</dd></dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        EV_MOUSE_DOWN = 'drag:mouseDown',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        * Fires after the mousedown event has been cleared.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        * @event drag:afterMouseDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        * <dl><dt>ev</dt><dd>The original mousedown event.</dd></dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        EV_AFTER_MOUSE_DOWN = 'drag:afterMouseDown',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        * Fires after a handle is removed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        * @event drag:removeHandle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        * <dl><dt>handle</dt><dd>The handle that was removed.</dd></dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        EV_REMOVE_HANDLE = 'drag:removeHandle',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        * Fires after a handle is added.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
        * @event drag:addHandle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        * <dl><dt>handle</dt><dd>The handle that was added.</dd></dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
        EV_ADD_HANDLE = 'drag:addHandle',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
        * Fires after an invalid selector is removed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
        * @event drag:removeInvalid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        * <dl><dt>handle</dt><dd>The handle that was removed.</dd></dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        EV_REMOVE_INVALID = 'drag:removeInvalid',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        * Fires after an invalid selector is added.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        * @event drag:addInvalid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        * <dl><dt>handle</dt><dd>The handle that was added.</dd></dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
        EV_ADD_INVALID = 'drag:addInvalid',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
        * Fires at the start of a drag operation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
        * @event drag:start
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
        * <dt>pageX</dt><dd>The original node position X.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
        * <dt>pageY</dt><dd>The original node position Y.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
        * <dt>startTime</dt><dd>The startTime of the event. getTime on the current Date object.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        EV_START = 'drag:start',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        * Fires at the end of a drag operation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
        * @event drag:end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
        * <dt>pageX</dt><dd>The current node position X.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
        * <dt>pageY</dt><dd>The current node position Y.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
        * <dt>startTime</dt><dd>The startTime of the event, from the start event.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        * <dt>endTime</dt><dd>The endTime of the event. getTime on the current Date object.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        EV_END = 'drag:end',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        * Fires every mousemove during a drag operation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        * @event drag:drag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        * <dt>pageX</dt><dd>The current node position X.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
        * <dt>pageY</dt><dd>The current node position Y.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
        * <dt>scroll</dt><dd>Should a scroll action occur.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
        * <dt>info</dt><dd>Object hash containing calculated XY arrays: start, xy, delta, offset</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
        EV_DRAG = 'drag:drag',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        * Fires when this node is aligned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
        * @event drag:align
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
        * @preventable _defAlignFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
        * <dt>pageX</dt><dd>The current node position X.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
        * <dt>pageY</dt><dd>The current node position Y.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
        EV_ALIGN = 'drag:align',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
        * Fires when this node is over a Drop Target. (Fired from dd-drop)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        * @event drag:over
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
        * <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
   151
        * <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
   152
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
        * Fires when this node enters a Drop Target. (Fired from dd-drop)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
        * @event drag:enter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
        * <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
   162
        * <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
   163
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        * Fires when this node exits a Drop Target. (Fired from dd-drop)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        * @event drag:exit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
        * <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
   173
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        * Fires when this node is dropped on a valid Drop Target. (Fired from dd-ddm-drop)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        * @event drag:drophit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        * <dt>drop</dt><dd>The best guess on what was dropped on.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        * <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
   184
        * <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
   185
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        * Fires when this node is dropped on an invalid Drop Target. (Fired from dd-ddm-drop)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        * @event drag:dropmiss
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        * @param {EventFacade} event An Event Facade object with the following specific property added:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        * <dt>pageX</dt><dd>The current node position X.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        * <dt>pageY</dt><dd>The current node position Y.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        * @bubbles DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        * @type {CustomEvent}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
    Drag = function(o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
        this._lazyAddAttrs = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
        Drag.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
        var valid = DDM._regDrag(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        if (!valid) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
            Y.error('Failed to register node, already in use: ' + o.node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    Drag.NAME = 'drag';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
    * This property defaults to "mousedown", but when drag-gestures is loaded, it is changed to "gesturemovestart"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
    * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
    * @property START_EVENT
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    Drag.START_EVENT = 'mousedown';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
    Drag.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
        * Y.Node instance to use as the element to initiate a drag operation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
        * @attribute node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
        * @type Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
        node: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
            setter: function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
                if (this._canDrag(node)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
                    return node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
                var n = Y.one(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
                if (!n) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
                    Y.error('DD.Drag: Invalid Node Given: ' + node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
                return n;
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
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
        * Y.Node instance to use as the draggable element, defaults to node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
        * @attribute dragNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        * @type Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
        dragNode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            setter: function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
                if (this._canDrag(node)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
                    return node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
                var n = Y.one(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
                if (!n) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
                    Y.error('DD.Drag: Invalid dragNode Given: ' + node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
                return n;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
        * Offset the drag element by the difference in cursor position: default true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
        * @attribute offsetNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        offsetNode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
            value: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
        * Center the dragNode to the mouse position on drag:start: default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
        * @attribute startCentered
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        startCentered: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
        * The number of pixels to move to start a drag operation, default is 3.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
        * @attribute clickPixelThresh
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
        * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        clickPixelThresh: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
            value: DDM.get('clickPixelThresh')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
        * The number of milliseconds a mousedown has to pass to start a drag operation, default is 1000.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
        * @attribute clickTimeThresh
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
        * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
        clickTimeThresh: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
            value: DDM.get('clickTimeThresh')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
        * Set to lock this drag element so that it can't be dragged: default false.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
        * @attribute lock
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
        lock: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            value: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
            setter: function(lock) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
                if (lock) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
                    this.get(NODE).addClass(DDM.CSS_PREFIX + '-locked');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
                    this.get(NODE).removeClass(DDM.CSS_PREFIX + '-locked');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                return lock;
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
        * A payload holder to store arbitrary data about this drag object, can be used to store any value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
        * @attribute data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
        * @type Mixed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
        data: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
        * If this is false, the drag element will not move with the cursor: default true. Can be used to "resize" the element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
        * @attribute move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
        move: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
            value: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
        * Use the protective shim on all drag operations: default true. Only works with dd-ddm, not dd-ddm-base.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
        * @attribute useShim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
        useShim: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
            value: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        * Config option is set by Drag to inform you of which handle fired the drag event (in the case that there are several handles): default false.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
        * @attribute activeHandle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
        * @type Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        activeHandle: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        * By default a drag operation will only begin if the mousedown occurred with the primary mouse button.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
        * Setting this to false will allow for all mousedown events to trigger a drag.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
        * @attribute primaryButtonOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
        primaryButtonOnly: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
            value: true
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
        * This attribute is not meant to be used by the implementor, it is meant to be used as an Event tracker so you can listen for it to change.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        * @attribute dragging
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
        dragging: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        parent: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
        * This attribute only works if the dd-drop module has been loaded. It will make this node a drop target as well as draggable.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
        * @attribute target
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
        target: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
            value: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
            setter: function(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
                this._handleTarget(config);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
                return config;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
        * This attribute only works if the dd-drop module is active. It will set the dragMode (point, intersect, strict) of this Drag instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
        * @attribute dragMode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
        dragMode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
            value: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
            setter: function(mode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
                return DDM._setDragMode(mode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
        * Array of groups to add this drag into.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
        * @attribute groups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
        * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
        groups: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
            value: ['default'],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
            getter: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
                if (!this._groups) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
                    this._groups = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
                    return [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
                return Y.Object.keys(this._groups);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
            setter: function(g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
                this._groups = Y.Array.hash(g);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
                return g;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
        * Array of valid handles to add. Adding something here will set all handles, even if previously added with addHandle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
        * @attribute handles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
        * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
        handles: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
            value: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
            setter: function(g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
                if (g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
                    this._handles = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
                    Y.Array.each(g, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
                        var key = v;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
                        if (v instanceof Y.Node || v instanceof Y.NodeList) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
                            key = v._yuid;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
                        this._handles[key] = v;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
                    }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                    this._handles = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                return g;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
        * Controls the default bubble parent for this Drag instance. Default: Y.DD.DDM. Set to false to disable bubbling. Use bubbleTargets in config
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
        * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
        * @attribute bubbles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
        * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
        bubbles: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
            setter: function(t) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
                Y.log('bubbles is deprecated use bubbleTargets: HOST', 'warn', 'dd');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
                this.addTarget(t);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
                return t;
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
        * Should the mousedown event be halted. Default: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
        * @attribute haltDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
        * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
        haltDown: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
            value: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
    Y.extend(Drag, Y.Base, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
        * Checks the object for the methods needed to drag the object around.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        * Normally this would be a node instance, but in the case of Graphics, it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
        * may be an SVG node or something similar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
        * @method _canDrag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
        * @param {Object} n The object to check
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
        * @return {Boolean} True or false if the Object contains the methods needed to Drag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
        _canDrag: function(n) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            if (n && n.setXY && n.getXY && n.test && n.contains) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
                return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
        * The default bubbleTarget for this object. Default: Y.DD.DDM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
        * @property _bubbleTargets
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
        _bubbleTargets: Y.DD.DDM,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
        * Add this Drag 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
   468
        * @method addToGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
        * @param {String} g The group to add this Drag Instance to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        addToGroup: function(g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
            this._groups[g] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
            DDM._activateTargets();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
        * Remove this Drag 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
   480
        * @method removeFromGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
        * @param {String} g The group to remove this Drag Instance from.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
        removeFromGroup: function(g) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
            delete this._groups[g];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
            DDM._activateTargets();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
        * This will be a reference to the Drop instance associated with this drag if the target: true config attribute is set..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
        * @property target
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
        * @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
        target: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
        * Attribute handler for the target config attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
        * @method _handleTarget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
        * @param {Boolean/Object} config The Config
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
        _handleTarget: function(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
            if (Y.DD.Drop) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
                if (config === false) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                    if (this.target) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
                        DDM._unregTarget(this.target);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
                        this.target = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
                    if (!Y.Lang.isObject(config)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
                        config = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
                    config.bubbleTargets = config.bubbleTargets || this.getTargets();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
                    config.node = this.get(NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
                    config.groups = config.groups || this.get('groups');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                    this.target = new Y.DD.Drop(config);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
        * Storage Array for the groups this drag belongs to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
        * @property _groups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
        * @type {Array}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
        _groups: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
        * 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
   529
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
        * @method _createEvents
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
        _createEvents: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
            this.publish(EV_MOUSE_DOWN, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
                defaultFn: this._defMouseDownFn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
                queuable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
                emitFacade: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
                bubbles: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
                prefix: 'drag'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
            this.publish(EV_ALIGN, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
                defaultFn: this._defAlignFn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
                queuable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                emitFacade: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                bubbles: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
                prefix: 'drag'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
            this.publish(EV_DRAG, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
                defaultFn: this._defDragFn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
                queuable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
                emitFacade: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
                bubbles: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
                prefix: 'drag'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
            this.publish(EV_END, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
                defaultFn: this._defEndFn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
                preventedFn: this._prevEndFn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
                queuable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
                emitFacade: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
                bubbles: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
                prefix: 'drag'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
            var ev = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
                EV_AFTER_MOUSE_DOWN,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
                EV_REMOVE_HANDLE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
                EV_ADD_HANDLE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
                EV_REMOVE_INVALID,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
                EV_ADD_INVALID,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
                EV_START,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
                'drag:drophit',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
                'drag:dropmiss',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
                'drag:over',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
                'drag:enter',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
                'drag:exit'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
            Y.Array.each(ev, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
                this.publish(v, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
                    type: v,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
                    emitFacade: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
                    bubbles: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
                    preventable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
                    queuable: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
                    prefix: 'drag'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
            }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
        * A private reference to the mousedown DOM event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
        * @property _ev_md
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
        * @type {EventFacade}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
        _ev_md: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
        * The getTime of the mousedown event. Not used, just here in case someone wants/needs to use it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
        * @property _startTime
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
        * @type Date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
        _startTime: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
        * The getTime of the mouseup event. Not used, just here in case someone wants/needs to use it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
        * @property _endTime
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
        * @type Date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
        _endTime: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
        * A private hash of the valid drag handles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
        * @property _handles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
        * @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
        _handles: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
        * A private hash of the invalid selector strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
        * @property _invalids
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
        * @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
        _invalids: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
        * A private hash of the default invalid selector strings: {'textarea': true, 'input': true, 'a': true, 'button': true, 'select': true}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
        * @property _invalidsDefault
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
        * @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
        _invalidsDefault: {'textarea': true, 'input': true, 'a': true, 'button': true, 'select': true },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
        * Private flag to see if the drag threshhold was met
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
        * @property _dragThreshMet
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
        * @type {Boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
        _dragThreshMet: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
        * Flag to determine if the drag operation came from a timeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
        * @property _fromTimeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
        * @type {Boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
        _fromTimeout: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
        * Holder for the setTimeout call
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
        * @property _clickTimeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
        * @type {Boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
        _clickTimeout: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
        * The offset of the mouse position to the element's position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
        * @property deltaXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
        * @type {Array}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
        deltaXY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
        * The initial mouse position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
        * @property startXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
        * @type {Array}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
        startXY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
        * The initial element position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
        * @property nodeXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
        * @type {Array}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
        nodeXY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
        * The position of the element as it's moving (for offset calculations)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
        * @property lastXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
        * @type {Array}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
        lastXY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
        * The xy that the node will be set to. Changing this will alter the position as it's dragged.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
        * @property actXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
        * @type {Array}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
        actXY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
        * The real xy position of the node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
        * @property realXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
        * @type {Array}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
        realXY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
        * The XY coords of the mousemove
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
        * @property mouseXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
        * @type {Array}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
        mouseXY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
        * A region object associated with this drag, used for checking regions while dragging.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
        * @property region
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
        * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
        region: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
        * Handler for the mouseup DOM event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
        * @method _handleMouseUp
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
        * @param {EventFacade} ev The Event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
        _handleMouseUp: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
            this.fire('drag:mouseup');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
            this._fixIEMouseUp();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
            if (DDM.activeDrag) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
                DDM._end();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
        * The function we use as the ondragstart handler when we start a drag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
        * in Internet Explorer. This keeps IE from blowing up on images as drag handles.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
        * @method _fixDragStart
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
        * @param {Event} e The Event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
        _fixDragStart: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
            if (this.validClick(e)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
                e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
        * The function we use as the onselectstart handler when we start a drag in Internet Explorer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
        * @method _ieSelectFix
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
        _ieSelectFix: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
        * We will hold a copy of the current "onselectstart" method on this property, and reset it after we are done using it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
        * @property _ieSelectBack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
        _ieSelectBack: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
        * This method copies the onselectstart listner on the document to the _ieSelectFix property
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
        * @method _fixIEMouseDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
        _fixIEMouseDown: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
            if (Y.UA.ie) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
                this._ieSelectBack = Y.config.doc.body.onselectstart;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
                Y.config.doc.body.onselectstart = this._ieSelectFix;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
        * This method copies the _ieSelectFix property back to the onselectstart listner on the document.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
        * @method _fixIEMouseUp
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
        _fixIEMouseUp: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
            if (Y.UA.ie) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
                Y.config.doc.body.onselectstart = this._ieSelectBack;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
        * Handler for the mousedown DOM event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
        * @method _handleMouseDownEvent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
        * @param {EventFacade} ev  The Event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
        _handleMouseDownEvent: function(ev) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
            this.fire(EV_MOUSE_DOWN, { ev: ev });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
        * Handler for the mousedown DOM event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
        * @method _defMouseDownFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
        * @param {EventFacade} e  The Event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
        _defMouseDownFn: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
            var ev = e.ev;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
            this._dragThreshMet = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
            this._ev_md = ev;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
            if (this.get('primaryButtonOnly') && ev.button > 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
            if (this.validClick(ev)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
                this._fixIEMouseDown(ev);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
                if (Drag.START_EVENT.indexOf('gesture') !== 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
                    //Only do these if it's not a gesture
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
                    if (this.get('haltDown')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
                        Y.log('Halting MouseDown', 'info', 'drag');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
                        ev.halt();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
                        Y.log('Preventing Default on MouseDown', 'info', 'drag');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
                        ev.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
                this._setStartPosition([ev.pageX, ev.pageY]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
                DDM.activeDrag = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
                this._clickTimeout = Y.later(this.get('clickTimeThresh'), this, this._timeoutCheck);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
            this.fire(EV_AFTER_MOUSE_DOWN, { ev: ev });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
        * Method first checks to see if we have handles, if so it validates the click
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
        * against the handle. Then if it finds a valid handle, it checks it against
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
        * the invalid handles list. Returns true if a good handle was used, false otherwise.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
        * @method validClick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
        * @param {EventFacade} ev  The Event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
        * @return {Boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
        validClick: function(ev) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
            var r = false, n = false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
            tar = ev.target,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
            hTest = null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
            els = null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
            nlist = null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
            set = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
            if (this._handles) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
                Y.Object.each(this._handles, function(i, n) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
                    if (i instanceof Y.Node || i instanceof Y.NodeList) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
                        if (!r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
                            nlist = i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
                            if (nlist instanceof Y.Node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
                                nlist = new Y.NodeList(i._node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
                            nlist.each(function(nl) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
                                if (nl.contains(tar)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
                                    r = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
                            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
                    } else if (Y.Lang.isString(n)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
                        //Am I this or am I inside this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
                        if (tar.test(n + ', ' + n + ' *') && !hTest) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
                            hTest = n;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
                            r = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
                n = this.get(NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
                if (n.contains(tar) || n.compareTo(tar)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
                    r = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
            if (r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
                if (this._invalids) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
                    Y.Object.each(this._invalids, function(i, n) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
                        if (Y.Lang.isString(n)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
                            //Am I this or am I inside this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
                            if (tar.test(n + ', ' + n + ' *')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
                                r = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
                    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
            if (r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
                if (hTest) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
                    els = ev.currentTarget.all(hTest);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
                    set = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
                    els.each(function(n) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
                        if ((n.contains(tar) || n.compareTo(tar)) && !set) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
                            set = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
                            this.set('activeHandle', n);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
                    }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
                    this.set('activeHandle', this.get(NODE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
            return r;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
        * Sets the current position of the Element and calculates the offset
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
        * @method _setStartPosition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
        * @param {Array} xy The XY coords to set the position to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
        _setStartPosition: function(xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
            this.startXY = xy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
            this.nodeXY = this.lastXY = this.realXY = this.get(NODE).getXY();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
            if (this.get('offsetNode')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
                this.deltaXY = [(this.startXY[0] - this.nodeXY[0]), (this.startXY[1] - this.nodeXY[1])];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
                this.deltaXY = [0, 0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
        * The method passed to setTimeout to determine if the clickTimeThreshold was met.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
        * @method _timeoutCheck
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
        _timeoutCheck: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
            if (!this.get('lock') && !this._dragThreshMet && this._ev_md) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
                this._fromTimeout = this._dragThreshMet = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
                this.start();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
                this._alignNode([this._ev_md.pageX, this._ev_md.pageY], true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
        * Remove a Selector added by addHandle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
        * @method removeHandle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
        * @param {String} str The selector for the handle to be removed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
        removeHandle: function(str) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
            var key = str;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
            if (str instanceof Y.Node || str instanceof Y.NodeList) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
                key = str._yuid;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
            if (this._handles[key]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
                delete this._handles[key];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
                this.fire(EV_REMOVE_HANDLE, { handle: str });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
        * Add a handle to a drag element. Drag only initiates when a mousedown happens on this element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
        * @method addHandle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
        * @param {String} str The selector to test for a valid handle. Must be a child of the element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
        addHandle: function(str) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
            if (!this._handles) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
                this._handles = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
            var key = str;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
            if (str instanceof Y.Node || str instanceof Y.NodeList) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
                key = str._yuid;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
            this._handles[key] = str;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
            this.fire(EV_ADD_HANDLE, { handle: str });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
        * Remove an invalid handle added by addInvalid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
        * @method removeInvalid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
        * @param {String} str The invalid handle to remove from the internal list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
        removeInvalid: function(str) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
            if (this._invalids[str]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
                this._invalids[str] = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
                delete this._invalids[str];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
                this.fire(EV_REMOVE_INVALID, { handle: str });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
        * Add a selector string to test the handle against. If the test passes the drag operation will not continue.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
        * @method addInvalid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
        * @param {String} str The selector to test against to determine if this is an invalid drag handle.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
        addInvalid: function(str) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
            if (Y.Lang.isString(str)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
                this._invalids[str] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
                this.fire(EV_ADD_INVALID, { handle: str });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
        * Internal init handler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
        * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
        initializer: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
            this.get(NODE).dd = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
            if (!this.get(NODE).get('id')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
                var id = Y.stamp(this.get(NODE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
                this.get(NODE).set('id', id);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
            this.actXY = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
            this._invalids = Y.clone(this._invalidsDefault, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
            this._createEvents();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
            if (!this.get(DRAG_NODE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
                this.set(DRAG_NODE, this.get(NODE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
            //Fix for #2528096
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
            //Don't prep the DD instance until all plugins are loaded.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
            this.on('initializedChange', Y.bind(this._prep, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
            //Shouldn't have to do this..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
            this.set('groups', this.get('groups'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
        * Attach event listners and add classname
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
        * @method _prep
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
        _prep: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
            this._dragThreshMet = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
            var node = this.get(NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
            node.addClass(DDM.CSS_PREFIX + '-draggable');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
            node.on(Drag.START_EVENT, Y.bind(this._handleMouseDownEvent, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
            node.on('mouseup', Y.bind(this._handleMouseUp, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
            node.on('dragstart', Y.bind(this._fixDragStart, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
        * Detach event listeners and remove classname
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
        * @method _unprep
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
        _unprep: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
            var node = this.get(NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
            node.removeClass(DDM.CSS_PREFIX + '-draggable');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
            node.detachAll('mouseup');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
            node.detachAll('dragstart');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
            node.detachAll(Drag.START_EVENT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
            this.mouseXY = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
            this.deltaXY = [0,0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
            this.startXY = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
            this.nodeXY = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
            this.lastXY = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
            this.actXY = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
            this.realXY = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
        * Starts the drag operation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
        * @method start
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
        start: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
            if (!this.get('lock') && !this.get(DRAGGING)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
                var node = this.get(NODE), ow, oh, xy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
                this._startTime = (new Date()).getTime();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
                DDM._start();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
                node.addClass(DDM.CSS_PREFIX + '-dragging');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
                this.fire(EV_START, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
                    pageX: this.nodeXY[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
                    pageY: this.nodeXY[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
                    startTime: this._startTime
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
                node = this.get(DRAG_NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
                xy = this.nodeXY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
                ow = node.get(OFFSET_WIDTH);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
                oh = node.get(OFFSET_HEIGHT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
                if (this.get('startCentered')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
                    this._setStartPosition([xy[0] + (ow / 2), xy[1] + (oh / 2)]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
                this.region = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
                    '0': xy[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
                    '1': xy[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
                    area: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
                    top: xy[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
                    right: xy[0] + ow,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
                    bottom: xy[1] + oh,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
                    left: xy[0]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
                this.set(DRAGGING, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
        * Ends the drag operation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
        * @method end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
        end: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
            this._endTime = (new Date()).getTime();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
            if (this._clickTimeout) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
                this._clickTimeout.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
            this._dragThreshMet = this._fromTimeout = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
            if (!this.get('lock') && this.get(DRAGGING)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
                this.fire(EV_END, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
                    pageX: this.lastXY[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
                    pageY: this.lastXY[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
                    startTime: this._startTime,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
                    endTime: this._endTime
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
            this.get(NODE).removeClass(DDM.CSS_PREFIX + '-dragging');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
            this.set(DRAGGING, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
            this.deltaXY = [0, 0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
        * Handler for fixing the selection in IE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
        * @method _defEndFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
        _defEndFn: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
            this._fixIEMouseUp();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
            this._ev_md = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
        * Handler for preventing the drag:end event. It will reset the node back to it's start position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
        * @method _prevEndFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
        _prevEndFn: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
            this._fixIEMouseUp();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
            //Bug #1852577
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
            this.get(DRAG_NODE).setXY(this.nodeXY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
            this._ev_md = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
            this.region = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
        * Calculates the offsets and set's the XY that the element will move to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
        * @method _align
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
        * @param {Array} xy The xy coords to align with.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
        _align: function(xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
            this.fire(EV_ALIGN, {pageX: xy[0], pageY: xy[1] });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
        * Calculates the offsets and set's the XY that the element will move to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
        * @method _defAlignFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
        * @param {EventFacade} e The drag:align event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
        _defAlignFn: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
            this.actXY = [e.pageX - this.deltaXY[0], e.pageY - this.deltaXY[1]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
        * This method performs the alignment before the element move.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
        * @method _alignNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
        * @param {Array} eXY The XY to move the element to, usually comes from the mousemove DOM event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
        _alignNode: function(eXY, scroll) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
            this._align(eXY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
            if (!scroll) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
                this._moveNode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
        * This method performs the actual element move.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
        * @method _moveNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
        _moveNode: function(scroll) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
            //if (!this.get(DRAGGING)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
            //    return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
            //}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
            var diffXY = [], diffXY2 = [], startXY = this.nodeXY, xy = this.actXY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
            diffXY[0] = (xy[0] - this.lastXY[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
            diffXY[1] = (xy[1] - this.lastXY[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
            diffXY2[0] = (xy[0] - this.nodeXY[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
            diffXY2[1] = (xy[1] - this.nodeXY[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
            this.region = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
                '0': xy[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
                '1': xy[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
                area: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
                top: xy[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
                right: xy[0] + this.get(DRAG_NODE).get(OFFSET_WIDTH),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
                bottom: xy[1] + this.get(DRAG_NODE).get(OFFSET_HEIGHT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
                left: xy[0]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
            this.fire(EV_DRAG, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
                pageX: xy[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
                pageY: xy[1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
                scroll: scroll,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
                info: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
                    start: startXY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
                    xy: xy,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
                    delta: diffXY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
                    offset: diffXY2
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
            this.lastXY = xy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
        * Default function for drag:drag. Fired from _moveNode.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
        * @method _defDragFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
        * @param {EventFacade} ev The drag:drag event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
        _defDragFn: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
            if (this.get('move')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
                if (e.scroll && e.scroll.node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
                    var domNode = e.scroll.node.getDOMNode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
                    //If it's the window
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
                    if (domNode === Y.config.win) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
                        domNode.scrollTo(e.scroll.left, e.scroll.top);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
                        e.scroll.node.set('scrollTop', e.scroll.top);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
                        e.scroll.node.set('scrollLeft', e.scroll.left);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
                this.get(DRAG_NODE).setXY([e.pageX, e.pageY]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
                this.realXY = [e.pageX, e.pageY];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
        * Fired from DragDropMgr (DDM) on mousemove.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
        * @method _move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
        * @param {EventFacade} ev The mousemove DOM event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
        _move: function(ev) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
            if (this.get('lock')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
            this.mouseXY = [ev.pageX, ev.pageY];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
            if (!this._dragThreshMet) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
                var diffX = Math.abs(this.startXY[0] - ev.pageX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
                diffY = Math.abs(this.startXY[1] - ev.pageY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
                if (diffX > this.get('clickPixelThresh') || diffY > this.get('clickPixelThresh')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
                    this._dragThreshMet = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
                    this.start();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
                    //This only happens on gestures to stop the page from scrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
                    if (ev && ev.preventDefault) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
                        ev.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
                    this._alignNode([ev.pageX, ev.pageY]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
                if (this._clickTimeout) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
                    this._clickTimeout.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
                this._alignNode([ev.pageX, ev.pageY]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
        * Method will forcefully stop a drag operation. For example calling this from inside an ESC keypress handler will stop this drag.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
        * @method stopDrag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
        * @return {Self}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
        * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
        stopDrag: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
            if (this.get(DRAGGING)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
                DDM._end();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
        * Lifecycle destructor, unreg the drag from the DDM and remove listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
        * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
        * @method destructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
        destructor: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
            this._unprep();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
            if (this.target) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
                this.target.destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
            DDM._unregDrag(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
    Y.namespace('DD');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
    Y.DD.Drag = Drag;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
}, '3.10.3', {"requires": ["dd-ddm-base"]});