ink_ui_rails 2.1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.md +21 -0
- data/README.md +39 -0
- data/lib/ink_ui_rails.rb +8 -0
- data/lib/ink_ui_rails/version.rb +3 -0
- data/vendor/assets/fonts/font/FontAwesome.otf +0 -0
- data/vendor/assets/fonts/font/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/font/fontawesome-webfont.svg +399 -0
- data/vendor/assets/fonts/font/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/fontawesome-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntu-b-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntu-b-webfont.svg +245 -0
- data/vendor/assets/fonts/font/ubuntu-b-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntu-b-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntu-bi-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntu-bi-webfont.svg +245 -0
- data/vendor/assets/fonts/font/ubuntu-bi-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntu-bi-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntu-c-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntu-c-webfont.svg +245 -0
- data/vendor/assets/fonts/font/ubuntu-c-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntu-c-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntu-l-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntu-l-webfont.svg +245 -0
- data/vendor/assets/fonts/font/ubuntu-l-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntu-l-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntu-li-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntu-li-webfont.svg +245 -0
- data/vendor/assets/fonts/font/ubuntu-li-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntu-li-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntu-m-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntu-m-webfont.svg +245 -0
- data/vendor/assets/fonts/font/ubuntu-m-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntu-m-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntu-mi-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntu-mi-webfont.svg +245 -0
- data/vendor/assets/fonts/font/ubuntu-mi-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntu-mi-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntu-r-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntu-r-webfont.svg +245 -0
- data/vendor/assets/fonts/font/ubuntu-r-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntu-r-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntu-ri-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntu-ri-webfont.svg +245 -0
- data/vendor/assets/fonts/font/ubuntu-ri-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntu-ri-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntumono-b-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntumono-b-webfont.svg +242 -0
- data/vendor/assets/fonts/font/ubuntumono-b-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntumono-b-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntumono-bi-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntumono-bi-webfont.svg +242 -0
- data/vendor/assets/fonts/font/ubuntumono-bi-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntumono-bi-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntumono-r-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntumono-r-webfont.svg +242 -0
- data/vendor/assets/fonts/font/ubuntumono-r-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntumono-r-webfont.woff +0 -0
- data/vendor/assets/fonts/font/ubuntumono-ri-webfont.eot +0 -0
- data/vendor/assets/fonts/font/ubuntumono-ri-webfont.svg +242 -0
- data/vendor/assets/fonts/font/ubuntumono-ri-webfont.ttf +0 -0
- data/vendor/assets/fonts/font/ubuntumono-ri-webfont.woff +0 -0
- data/vendor/assets/images/img/SAPOlogo.png +0 -0
- data/vendor/assets/images/img/favicon.ico +0 -0
- data/vendor/assets/images/img/home_bkg.png +0 -0
- data/vendor/assets/images/img/home_logo_IE.jpg +0 -0
- data/vendor/assets/images/img/icon_Sprite.png +0 -0
- data/vendor/assets/images/img/ink-favicon.ico +0 -0
- data/vendor/assets/images/img/logo_home.png +0 -0
- data/vendor/assets/images/img/shot_ink.png +0 -0
- data/vendor/assets/images/img/shot_intra.png +0 -0
- data/vendor/assets/images/img/shot_livebots.png +0 -0
- data/vendor/assets/images/img/shot_meo.png +0 -0
- data/vendor/assets/images/img/shot_musicbox.png +0 -0
- data/vendor/assets/images/img/shot_pessoa.png +0 -0
- data/vendor/assets/images/img/splash.1024x748.png +0 -0
- data/vendor/assets/images/img/splash.320x460.png +0 -0
- data/vendor/assets/images/img/splash.768x1004.png +0 -0
- data/vendor/assets/images/img/touch-icon.114.png +0 -0
- data/vendor/assets/images/img/touch-icon.16.png +0 -0
- data/vendor/assets/images/img/touch-icon.256.png +0 -0
- data/vendor/assets/images/img/touch-icon.57.png +0 -0
- data/vendor/assets/images/img/touch-icon.72.png +0 -0
- data/vendor/assets/javascripts/autoload.js +85 -0
- data/vendor/assets/javascripts/example.json +1174 -0
- data/vendor/assets/javascripts/holder.js +440 -0
- data/vendor/assets/javascripts/html5shiv-printshiv.js +496 -0
- data/vendor/assets/javascripts/html5shiv.js +298 -0
- data/vendor/assets/javascripts/ink-all.js +18015 -0
- data/vendor/assets/javascripts/ink-ui.js +7737 -0
- data/vendor/assets/javascripts/ink.aux.js +506 -0
- data/vendor/assets/javascripts/ink.close.js +54 -0
- data/vendor/assets/javascripts/ink.datepicker.js +1194 -0
- data/vendor/assets/javascripts/ink.datepicker.pt.js +32 -0
- data/vendor/assets/javascripts/ink.draggable.js +437 -0
- data/vendor/assets/javascripts/ink.droppable.js +193 -0
- data/vendor/assets/javascripts/ink.formvalidator.js +712 -0
- data/vendor/assets/javascripts/ink.gallery.js +757 -0
- data/vendor/assets/javascripts/ink.imagequery.js +259 -0
- data/vendor/assets/javascripts/ink.js +10278 -0
- data/vendor/assets/javascripts/ink.modal.js +628 -0
- data/vendor/assets/javascripts/ink.pagination.js +473 -0
- data/vendor/assets/javascripts/ink.progressbar.js +110 -0
- data/vendor/assets/javascripts/ink.smoothscroller.js +234 -0
- data/vendor/assets/javascripts/ink.sortablelist.js +338 -0
- data/vendor/assets/javascripts/ink.spy.js +123 -0
- data/vendor/assets/javascripts/ink.sticky.js +254 -0
- data/vendor/assets/javascripts/ink.table.js +621 -0
- data/vendor/assets/javascripts/ink.tabs.js +426 -0
- data/vendor/assets/javascripts/ink.toggle.js +218 -0
- data/vendor/assets/javascripts/ink.treeview.js +179 -0
- data/vendor/assets/javascripts/ink_ui.js +1 -0
- data/vendor/assets/javascripts/modernizr.js +815 -0
- data/vendor/assets/javascripts/prettify.js +28 -0
- data/vendor/assets/stylesheets/ink/_ink-ie7.css +1662 -0
- data/vendor/assets/stylesheets/ink/_ink.css +7496 -0
- data/vendor/assets/stylesheets/ink/ink_ui.scss.css +2 -0
- data/vendor/assets/stylesheets/ink_ui.scss.css +1 -0
- metadata +203 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
Ink.requireModules(['Ink.UI.DatePicker_1'],function(DatePicker){
|
2
|
+
DatePicker.prototype.lang({
|
3
|
+
closeText: 'Fechar',
|
4
|
+
cleanText: 'Limpar',
|
5
|
+
prevLinkText: '«',
|
6
|
+
nextLinkText: '»',
|
7
|
+
ofText: ' de ',
|
8
|
+
month: {
|
9
|
+
1:'Janeiro',
|
10
|
+
2:'Fevereiro',
|
11
|
+
3:'Março',
|
12
|
+
4:'Abril',
|
13
|
+
5:'Maio',
|
14
|
+
6:'Junho',
|
15
|
+
7:'Julho',
|
16
|
+
8:'Agosto',
|
17
|
+
9:'Setembro',
|
18
|
+
10:'Outubro',
|
19
|
+
11:'Novembro',
|
20
|
+
12:'Dezembro'
|
21
|
+
},
|
22
|
+
wDay: {
|
23
|
+
0:'Domingo',
|
24
|
+
1:'Segunda',
|
25
|
+
2:'Terça',
|
26
|
+
3:'Quarta',
|
27
|
+
4:'Quinta',
|
28
|
+
5:'Sexta',
|
29
|
+
6:'Sábado'
|
30
|
+
}
|
31
|
+
});
|
32
|
+
})
|
@@ -0,0 +1,437 @@
|
|
1
|
+
/**
|
2
|
+
* @module Ink.UI.Draggable_1
|
3
|
+
* @author inkdev AT sapo.pt
|
4
|
+
* @version 1
|
5
|
+
*/
|
6
|
+
Ink.createModule("Ink.UI.Draggable","1",["Ink.Dom.Element_1", "Ink.Dom.Event_1", "Ink.Dom.Css_1", "Ink.Dom.Browser_1", "Ink.UI.Droppable_1"],function( Element, Event, Css, Browser, Droppable) {
|
7
|
+
|
8
|
+
/**
|
9
|
+
* @class Ink.UI.Draggable
|
10
|
+
* @version 1
|
11
|
+
* @constructor
|
12
|
+
* @param {String|DOMElement} selector Either a CSS Selector string, or the form's DOMElement
|
13
|
+
* @param {Object} [opptions] Optional object for configuring the component
|
14
|
+
* @param {String} [options.constraint] - Movement constraint. None by default. Can be either vertical or horizontal.
|
15
|
+
* @param {Number} [options.top] - top limit for the draggable area
|
16
|
+
* @param {Number} [options.right] - right limit for the draggable area
|
17
|
+
* @param {Number} [options.bottom] - bottom limit for the draggable area
|
18
|
+
* @param {Number} [options.left] - left limit for the draggable area
|
19
|
+
* @param {String|DOMElement} [options.handler] - if specified, only this element will be used for dragging instead of the whole target element
|
20
|
+
* @param {Boolean} [options.revert] - if true, reverts the draggable to the original position when dragging stops
|
21
|
+
* @param {String} [options.cursor] - cursor type used over the draggable object
|
22
|
+
* @param {Number} [options.zindex] - zindex applied to the draggable element while dragged
|
23
|
+
* @param {Number} [options.fps] - if defined, on drag will run every n frames per second only
|
24
|
+
* @param {DomElement} [options.droppableProxy] - if set, a shallow copy of the droppableProxy will be put on document.body with transparent bg
|
25
|
+
* @param {String} [options.mouseAnchor] - defaults to mouse cursor. can be 'left|center|right top|center|bottom'
|
26
|
+
* @param {Function} [options.onStart] - callback called when dragging starts
|
27
|
+
* @param {Function} [options.onEnd] - callback called when dragging stops
|
28
|
+
* @param {Function} [options.onDrag] - callback called while dragging, prior to position updates
|
29
|
+
* @param {Function} [options.onChange] - callback called while dragging, after position updates
|
30
|
+
* @example
|
31
|
+
* Ink.requireModules( ['Ink.UI.Draggable_1'], function( Draggable ){
|
32
|
+
* new Draggable( 'myElementId' );
|
33
|
+
* });
|
34
|
+
*/
|
35
|
+
var Draggable = function(element, options) {
|
36
|
+
this.init(element, options);
|
37
|
+
};
|
38
|
+
|
39
|
+
Draggable.prototype = {
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Init function called by the constructor
|
43
|
+
*
|
44
|
+
* @method _init
|
45
|
+
* @param {String|DOMElement} element ID of the element or DOM Element.
|
46
|
+
* @param {Object} [options] Options object for configuration of the module.
|
47
|
+
* @private
|
48
|
+
*/
|
49
|
+
init: function(element, options) {
|
50
|
+
var o = Ink.extendObj( {
|
51
|
+
constraint: false,
|
52
|
+
top: 0,
|
53
|
+
right: Element.pageWidth(),
|
54
|
+
bottom: Element.pageHeight(),
|
55
|
+
left: 0,
|
56
|
+
handler: false,
|
57
|
+
revert: false,
|
58
|
+
cursor: 'move',
|
59
|
+
zindex: 9999,
|
60
|
+
onStart: false,
|
61
|
+
onEnd: false,
|
62
|
+
onDrag: false,
|
63
|
+
onChange: false,
|
64
|
+
droppableProxy: false,
|
65
|
+
mouseAnchor: undefined,
|
66
|
+
skipChildren: true,
|
67
|
+
debug: false
|
68
|
+
}, options || {});
|
69
|
+
|
70
|
+
this.options = o;
|
71
|
+
this.element = Ink.i(element);
|
72
|
+
|
73
|
+
this.handle = false;
|
74
|
+
this.elmStartPosition = false;
|
75
|
+
this.active = false;
|
76
|
+
this.dragged = false;
|
77
|
+
this.prevCoords = false;
|
78
|
+
this.placeholder = false;
|
79
|
+
|
80
|
+
this.position = false;
|
81
|
+
this.zindex = false;
|
82
|
+
this.firstDrag = true;
|
83
|
+
|
84
|
+
if (o.fps) {
|
85
|
+
this.deltaMs = 1000 / o.fps;
|
86
|
+
this.lastRanAt = 0;
|
87
|
+
}
|
88
|
+
|
89
|
+
this.handlers = {};
|
90
|
+
this.handlers.start = Ink.bindEvent(this._onStart,this);
|
91
|
+
this.handlers.dragFacade = Ink.bindEvent(this._onDragFacade,this);
|
92
|
+
this.handlers.drag = Ink.bindEvent(this._onDrag,this);
|
93
|
+
this.handlers.end = Ink.bindEvent(this._onEnd,this);
|
94
|
+
this.handlers.selectStart = function(event) { Event.stop(event); return false; };
|
95
|
+
|
96
|
+
// set handler
|
97
|
+
this.handle = (this.options.handler) ? Ink.i(this.options.handler) : this.element;
|
98
|
+
this.handle.style.cursor = o.cursor;
|
99
|
+
|
100
|
+
if (o.right !== false) { this.options.right = o.right - Element.elementWidth( element); }
|
101
|
+
if (o.bottom !== false) { this.options.bottom = o.bottom - Element.elementHeight(element); }
|
102
|
+
|
103
|
+
Event.observe(this.handle, 'touchstart', this.handlers.start);
|
104
|
+
Event.observe(this.handle, 'mousedown', this.handlers.start);
|
105
|
+
|
106
|
+
if (Browser.IE) {
|
107
|
+
Event.observe(this.element, 'selectstart', this.handlers.selectStart);
|
108
|
+
}
|
109
|
+
},
|
110
|
+
|
111
|
+
/**
|
112
|
+
* Removes the ability of the element of being dragged
|
113
|
+
*
|
114
|
+
* @method destroy
|
115
|
+
* @public
|
116
|
+
*/
|
117
|
+
destroy: function() {
|
118
|
+
Event.stopObserving(this.handle, 'touchstart', this.handlers.start);
|
119
|
+
Event.stopObserving(this.handle, 'mousedown', this.handlers.start);
|
120
|
+
|
121
|
+
if (Browser.IE) {
|
122
|
+
Event.stopObserving(this.element, 'selectstart', this.handlers.selectStart);
|
123
|
+
}
|
124
|
+
},
|
125
|
+
|
126
|
+
/**
|
127
|
+
* Browser-independant implementation of page scroll
|
128
|
+
*
|
129
|
+
* @method _getPageScroll
|
130
|
+
* @return {Array} Array where the first position is the scrollLeft and the second position is the scrollTop
|
131
|
+
* @private
|
132
|
+
*/
|
133
|
+
_getPageScroll: function() {
|
134
|
+
|
135
|
+
if (typeof self.pageXOffset !== "undefined") {
|
136
|
+
return [ self.pageXOffset, self.pageYOffset ];
|
137
|
+
}
|
138
|
+
if (typeof document.documentElement !== "undefined" && typeof document.documentElement.scrollLeft !== "undefined") {
|
139
|
+
return [ document.documentElement.scrollLeft, document.documentElement.scrollTop ];
|
140
|
+
}
|
141
|
+
return [ document.body.scrollLeft, document.body.scrollTop ];
|
142
|
+
},
|
143
|
+
|
144
|
+
/**
|
145
|
+
* Gets coordinates for a given event (with added page scroll)
|
146
|
+
*
|
147
|
+
* @method _getCoords
|
148
|
+
* @param {Object} e window.event object.
|
149
|
+
* @return {Array} Array where the first position is the x coordinate, the second is the y coordinate
|
150
|
+
* @private
|
151
|
+
*/
|
152
|
+
_getCoords: function(e) {
|
153
|
+
var ps = this._getPageScroll();
|
154
|
+
return {
|
155
|
+
x: (e.touches ? e.touches[0].clientX : e.clientX) + ps[0],
|
156
|
+
y: (e.touches ? e.touches[0].clientY : e.clientY) + ps[1]
|
157
|
+
};
|
158
|
+
},
|
159
|
+
|
160
|
+
/**
|
161
|
+
* Clones src element's relevant properties to dst
|
162
|
+
*
|
163
|
+
* @method _cloneStyle
|
164
|
+
* @param {DOMElement} src Element from where we're getting the styles
|
165
|
+
* @param {DOMElement} dst Element where we're placing the styles.
|
166
|
+
* @private
|
167
|
+
*/
|
168
|
+
_cloneStyle: function(src, dst) {
|
169
|
+
dst.className = src.className;
|
170
|
+
dst.style.borderWidth = '0';
|
171
|
+
dst.style.padding = '0';
|
172
|
+
dst.style.position = 'absolute';
|
173
|
+
dst.style.width = Element.elementWidth(src) + 'px';
|
174
|
+
dst.style.height = Element.elementHeight(src) + 'px';
|
175
|
+
dst.style.left = Element.elementLeft(src) + 'px';
|
176
|
+
dst.style.top = Element.elementTop(src) + 'px';
|
177
|
+
dst.style.cssFloat = Css.getStyle(src, 'float');
|
178
|
+
dst.style.display = Css.getStyle(src, 'display');
|
179
|
+
},
|
180
|
+
|
181
|
+
/**
|
182
|
+
* onStart event handler
|
183
|
+
*
|
184
|
+
* @method _onStart
|
185
|
+
* @param {Object} e window.event object
|
186
|
+
* @return {Boolean|void} In some cases return false. Otherwise is void
|
187
|
+
* @private
|
188
|
+
*/
|
189
|
+
_onStart: function(e) {
|
190
|
+
if (!this.active && Event.isLeftClick(e) || typeof e.button === 'undefined') {
|
191
|
+
|
192
|
+
var tgtEl = e.target || e.srcElement;
|
193
|
+
if (this.options.skipChildren && tgtEl !== this.element) { return; }
|
194
|
+
|
195
|
+
Event.stop(e);
|
196
|
+
|
197
|
+
this.elmStartPosition = [
|
198
|
+
Element.elementLeft(this.element),
|
199
|
+
Element.elementTop( this.element)
|
200
|
+
];
|
201
|
+
|
202
|
+
var pos = [
|
203
|
+
parseInt(Css.getStyle(this.element, 'left'), 10),
|
204
|
+
parseInt(Css.getStyle(this.element, 'top'), 10)
|
205
|
+
];
|
206
|
+
|
207
|
+
var dims = [
|
208
|
+
Element.elementWidth( this.element),
|
209
|
+
Element.elementHeight(this.element)
|
210
|
+
];
|
211
|
+
|
212
|
+
this.originalPosition = [ pos[0] ? pos[0]: null, pos[1] ? pos[1] : null ];
|
213
|
+
this.delta = this._getCoords(e); // mouse coords at beginning of drag
|
214
|
+
|
215
|
+
this.active = true;
|
216
|
+
this.position = Css.getStyle(this.element, 'position');
|
217
|
+
this.zindex = Css.getStyle(this.element, 'zIndex');
|
218
|
+
|
219
|
+
var div = document.createElement('div');
|
220
|
+
div.style.position = this.position;
|
221
|
+
div.style.width = dims[0] + 'px';
|
222
|
+
div.style.height = dims[1] + 'px';
|
223
|
+
div.style.marginTop = Css.getStyle(this.element, 'margin-top');
|
224
|
+
div.style.marginBottom = Css.getStyle(this.element, 'margin-bottom');
|
225
|
+
div.style.marginLeft = Css.getStyle(this.element, 'margin-left');
|
226
|
+
div.style.marginRight = Css.getStyle(this.element, 'margin-right');
|
227
|
+
div.style.borderWidth = '0';
|
228
|
+
div.style.padding = '0';
|
229
|
+
div.style.cssFloat = Css.getStyle(this.element, 'float');
|
230
|
+
div.style.display = Css.getStyle(this.element, 'display');
|
231
|
+
div.style.visibility = 'hidden';
|
232
|
+
|
233
|
+
this.delta2 = [ this.delta.x - this.elmStartPosition[0], this.delta.y - this.elmStartPosition[1] ]; // diff between top-left corner of obj and mouse
|
234
|
+
if (this.options.mouseAnchor) {
|
235
|
+
var parts = this.options.mouseAnchor.split(' ');
|
236
|
+
var ad = [dims[0], dims[1]]; // starts with 'right bottom'
|
237
|
+
if (parts[0] === 'left') { ad[0] = 0; } else if(parts[0] === 'center') { ad[0] = parseInt(ad[0]/2, 10); }
|
238
|
+
if (parts[1] === 'top') { ad[1] = 0; } else if(parts[1] === 'center') { ad[1] = parseInt(ad[1]/2, 10); }
|
239
|
+
this.applyDelta = [this.delta2[0] - ad[0], this.delta2[1] - ad[1]];
|
240
|
+
}
|
241
|
+
|
242
|
+
this.placeholder = div;
|
243
|
+
|
244
|
+
if (this.options.onStart) { this.options.onStart(this.element, e); }
|
245
|
+
|
246
|
+
if (this.options.droppableProxy) { // create new transparent div to optimize DOM traversal during drag
|
247
|
+
this.proxy = document.createElement('div');
|
248
|
+
dims = [
|
249
|
+
window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
|
250
|
+
window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight
|
251
|
+
];
|
252
|
+
var fs = this.proxy.style;
|
253
|
+
fs.width = dims[0] + 'px';
|
254
|
+
fs.height = dims[1] + 'px';
|
255
|
+
fs.position = 'fixed';
|
256
|
+
fs.left = '0';
|
257
|
+
fs.top = '0';
|
258
|
+
fs.zIndex = this.options.zindex + 1;
|
259
|
+
fs.backgroundColor = '#FF0000';
|
260
|
+
Css.setOpacity(this.proxy, 0);
|
261
|
+
|
262
|
+
var firstEl = document.body.firstChild;
|
263
|
+
while (firstEl && firstEl.nodeType !== 1) { firstEl = firstEl.nextSibling; }
|
264
|
+
document.body.insertBefore(this.proxy, firstEl);
|
265
|
+
|
266
|
+
Event.observe(this.proxy, 'mousemove', this.handlers[this.options.fps ? 'dragFacade' : 'drag']);
|
267
|
+
Event.observe(this.proxy, 'touchmove', this.handlers[this.options.fps ? 'dragFacade' : 'drag']);
|
268
|
+
}
|
269
|
+
else {
|
270
|
+
Event.observe(document, 'mousemove', this.handlers[this.options.fps ? 'dragFacade' : 'drag']);
|
271
|
+
}
|
272
|
+
|
273
|
+
this.element.style.position = 'absolute';
|
274
|
+
this.element.style.zIndex = this.options.zindex;
|
275
|
+
this.element.parentNode.insertBefore(this.placeholder, this.element);
|
276
|
+
|
277
|
+
this._onDrag(e);
|
278
|
+
|
279
|
+
Event.observe(document, 'mouseup', this.handlers.end);
|
280
|
+
Event.observe(document, 'touchend', this.handlers.end);
|
281
|
+
|
282
|
+
return false;
|
283
|
+
}
|
284
|
+
},
|
285
|
+
|
286
|
+
/**
|
287
|
+
* Function that gets the timestamp of the current run from time to time. (FPS)
|
288
|
+
*
|
289
|
+
* @method _onDragFacade
|
290
|
+
* @param {Object} window.event object.
|
291
|
+
* @private
|
292
|
+
*/
|
293
|
+
_onDragFacade: function(e) {
|
294
|
+
var now = new Date().getTime();
|
295
|
+
if (!this.lastRanAt || now > this.lastRanAt + this.deltaMs) {
|
296
|
+
this.lastRanAt = now;
|
297
|
+
this._onDrag(e);
|
298
|
+
}
|
299
|
+
},
|
300
|
+
|
301
|
+
/**
|
302
|
+
* Function that handles the dragging movement
|
303
|
+
*
|
304
|
+
* @method _onDrag
|
305
|
+
* @param {Object} window.event object.
|
306
|
+
* @private
|
307
|
+
*/
|
308
|
+
_onDrag: function(e) {
|
309
|
+
if (this.active) {
|
310
|
+
Event.stop(e);
|
311
|
+
this.dragged = true;
|
312
|
+
var mouseCoords = this._getCoords(e),
|
313
|
+
mPosX = mouseCoords.x,
|
314
|
+
mPosY = mouseCoords.y,
|
315
|
+
o = this.options,
|
316
|
+
newX = false,
|
317
|
+
newY = false;
|
318
|
+
|
319
|
+
if (!this.prevCoords) { this.prevCoords = {x: 0, y: 0}; }
|
320
|
+
|
321
|
+
if (mPosX !== this.prevCoords.x || mPosY !== this.prevCoords.y) {
|
322
|
+
if (o.onDrag) { o.onDrag(this.element, e); }
|
323
|
+
this.prevCoords = mouseCoords;
|
324
|
+
|
325
|
+
newX = this.elmStartPosition[0] + mPosX - this.delta.x;
|
326
|
+
newY = this.elmStartPosition[1] + mPosY - this.delta.y;
|
327
|
+
|
328
|
+
if (o.constraint === 'horizontal' || o.constraint === 'both') {
|
329
|
+
if (o.right !== false && newX > o.right) { newX = o.right; }
|
330
|
+
if (o.left !== false && newX < o.left) { newX = o.left; }
|
331
|
+
}
|
332
|
+
if (o.constraint === 'vertical' || o.constraint === 'both') {
|
333
|
+
if (o.bottom !== false && newY > o.bottom) { newY = o.bottom; }
|
334
|
+
if (o.top !== false && newY < o.top) { newY = o.top; }
|
335
|
+
}
|
336
|
+
|
337
|
+
if (this.firstDrag) {
|
338
|
+
if (Droppable) { Droppable.updateAll(); }
|
339
|
+
/*this.element.style.position = 'absolute';
|
340
|
+
this.element.style.zIndex = this.options.zindex;
|
341
|
+
this.element.parentNode.insertBefore(this.placeholder, this.element);*/
|
342
|
+
this.firstDrag = false;
|
343
|
+
}
|
344
|
+
|
345
|
+
if (newX) { this.element.style.left = newX + 'px'; }
|
346
|
+
if (newY) { this.element.style.top = newY + 'px'; }
|
347
|
+
|
348
|
+
if (Droppable) {
|
349
|
+
// apply applyDelta defined on drag init
|
350
|
+
var mouseCoords2 = this.options.mouseAnchor ? {x: mPosX - this.applyDelta[0], y: mPosY - this.applyDelta[1]} : mouseCoords;
|
351
|
+
|
352
|
+
// for debugging purposes
|
353
|
+
// if (this.options.debug) {
|
354
|
+
// if (!this.pt) {
|
355
|
+
// this.pt = Debug.addPoint(document.body, [mouseCoords2.x, mouseCoords2.y], '#0FF', 9);
|
356
|
+
// this.pt.style.zIndex = this.options.zindex + 1;
|
357
|
+
// }
|
358
|
+
// else {
|
359
|
+
// Debug.movePoint(this.pt, [mouseCoords2.x, mouseCoords2.y]);
|
360
|
+
// }
|
361
|
+
// }
|
362
|
+
|
363
|
+
Droppable.action(mouseCoords2, 'drag', e, this.element);
|
364
|
+
}
|
365
|
+
if (o.onChange) { o.onChange(this); }
|
366
|
+
}
|
367
|
+
}
|
368
|
+
},
|
369
|
+
|
370
|
+
/**
|
371
|
+
* Function that handles the end of the dragging process
|
372
|
+
*
|
373
|
+
* @method _onEnd
|
374
|
+
* @param {Object} window.event object.
|
375
|
+
* @private
|
376
|
+
*/
|
377
|
+
_onEnd: function(e) {
|
378
|
+
Event.stopObserving(document, 'mousemove', this.handlers.drag);
|
379
|
+
Event.stopObserving(document, 'touchmove', this.handlers.drag);
|
380
|
+
|
381
|
+
if (this.options.fps) {
|
382
|
+
this._onDrag(e);
|
383
|
+
}
|
384
|
+
|
385
|
+
if (this.active && this.dragged) {
|
386
|
+
|
387
|
+
if (this.options.droppableProxy) { // remove transparent div...
|
388
|
+
document.body.removeChild(this.proxy);
|
389
|
+
}
|
390
|
+
|
391
|
+
if (this.pt) { // remove debugging element...
|
392
|
+
this.pt.parentNode.removeChild(this.pt);
|
393
|
+
this.pt = undefined;
|
394
|
+
}
|
395
|
+
|
396
|
+
/*if (this.options.revert) {
|
397
|
+
this.placeholder.parentNode.removeChild(this.placeholder);
|
398
|
+
}*/
|
399
|
+
|
400
|
+
if(this.placeholder) {
|
401
|
+
this.placeholder.parentNode.removeChild(this.placeholder);
|
402
|
+
}
|
403
|
+
|
404
|
+
if (this.options.revert) {
|
405
|
+
this.element.style.position = this.position;
|
406
|
+
if (this.zindex !== null) {
|
407
|
+
this.element.style.zIndex = this.zindex;
|
408
|
+
}
|
409
|
+
else {
|
410
|
+
this.element.style.zIndex = 'auto';
|
411
|
+
} // restore default zindex of it had none
|
412
|
+
|
413
|
+
this.element.style.left = (this.originalPosition[0]) ? this.originalPosition[0] + 'px' : '';
|
414
|
+
this.element.style.top = (this.originalPosition[1]) ? this.originalPosition[1] + 'px' : '';
|
415
|
+
}
|
416
|
+
|
417
|
+
if (this.options.onEnd) {
|
418
|
+
this.options.onEnd(this.element, e);
|
419
|
+
}
|
420
|
+
|
421
|
+
if (Droppable) {
|
422
|
+
Droppable.action(this._getCoords(e), 'drop', e, this.element);
|
423
|
+
}
|
424
|
+
|
425
|
+
this.position = false;
|
426
|
+
this.zindex = false;
|
427
|
+
this.firstDrag = true;
|
428
|
+
}
|
429
|
+
|
430
|
+
this.active = false;
|
431
|
+
this.dragged = false;
|
432
|
+
}
|
433
|
+
};
|
434
|
+
|
435
|
+
return Draggable;
|
436
|
+
|
437
|
+
});
|