rails-uikit 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/rails/uikit/engine.rb +6 -0
- data/lib/rails/uikit/version.rb +5 -0
- data/lib/rails/uikit.rb +8 -0
- data/public/fonts/FontAwesome.otf +0 -0
- data/public/fonts/fontawesome-webfont.eot +0 -0
- data/public/fonts/fontawesome-webfont.ttf +0 -0
- data/public/fonts/fontawesome-webfont.woff +0 -0
- data/vendor/assets/javascripts/addons/autocomplete.js +306 -0
- data/vendor/assets/javascripts/addons/autocomplete.min.js +3 -0
- data/vendor/assets/javascripts/addons/datepicker.js +365 -0
- data/vendor/assets/javascripts/addons/datepicker.min.js +3 -0
- data/vendor/assets/javascripts/addons/form-password.js +62 -0
- data/vendor/assets/javascripts/addons/form-password.min.js +3 -0
- data/vendor/assets/javascripts/addons/form-select.js +62 -0
- data/vendor/assets/javascripts/addons/form-select.min.js +3 -0
- data/vendor/assets/javascripts/addons/htmleditor.js +594 -0
- data/vendor/assets/javascripts/addons/htmleditor.min.js +3 -0
- data/vendor/assets/javascripts/addons/nestable.js +574 -0
- data/vendor/assets/javascripts/addons/nestable.min.js +3 -0
- data/vendor/assets/javascripts/addons/notify.js +177 -0
- data/vendor/assets/javascripts/addons/notify.min.js +3 -0
- data/vendor/assets/javascripts/addons/pagination.js +146 -0
- data/vendor/assets/javascripts/addons/pagination.min.js +3 -0
- data/vendor/assets/javascripts/addons/search.js +90 -0
- data/vendor/assets/javascripts/addons/search.min.js +3 -0
- data/vendor/assets/javascripts/addons/sortable.js +494 -0
- data/vendor/assets/javascripts/addons/sortable.min.js +3 -0
- data/vendor/assets/javascripts/addons/sticky.js +130 -0
- data/vendor/assets/javascripts/addons/sticky.min.js +3 -0
- data/vendor/assets/javascripts/addons/timepicker.js +163 -0
- data/vendor/assets/javascripts/addons/timepicker.min.js +3 -0
- data/vendor/assets/javascripts/addons/upload.js +239 -0
- data/vendor/assets/javascripts/addons/upload.min.js +3 -0
- data/vendor/assets/javascripts/uikit.js +2573 -0
- data/vendor/assets/javascripts/uikit.min.js +4 -0
- data/vendor/assets/stylesheets/addons/uikit.addons.css +1124 -0
- data/vendor/assets/stylesheets/addons/uikit.addons.min.css +3 -0
- data/vendor/assets/stylesheets/addons/uikit.almost-flat.addons.css +1205 -0
- data/vendor/assets/stylesheets/addons/uikit.almost-flat.addons.min.css +3 -0
- data/vendor/assets/stylesheets/addons/uikit.gradient.addons.css +1226 -0
- data/vendor/assets/stylesheets/addons/uikit.gradient.addons.min.css +3 -0
- data/vendor/assets/stylesheets/uikit.almost-flat.css +7022 -0
- data/vendor/assets/stylesheets/uikit.almost-flat.min.css +3 -0
- data/vendor/assets/stylesheets/uikit.css +6732 -0
- data/vendor/assets/stylesheets/uikit.gradient.css +7090 -0
- data/vendor/assets/stylesheets/uikit.gradient.min.css +3 -0
- data/vendor/assets/stylesheets/uikit.min.css +3 -0
- metadata +125 -0
@@ -0,0 +1,494 @@
|
|
1
|
+
/*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Based on nativesortable - Copyright (c) Brian Grinstead - https://github.com/bgrins/nativesortable
|
5
|
+
*/
|
6
|
+
(function(addon) {
|
7
|
+
|
8
|
+
var component;
|
9
|
+
|
10
|
+
if (jQuery && jQuery.UIkit) {
|
11
|
+
component = addon(jQuery, jQuery.UIkit);
|
12
|
+
}
|
13
|
+
|
14
|
+
if (typeof define == "function" && define.amd) {
|
15
|
+
define("uikit-sortable", ["uikit"], function(){
|
16
|
+
return component || addon(jQuery, jQuery.UIkit);
|
17
|
+
});
|
18
|
+
}
|
19
|
+
|
20
|
+
})(function($, UI){
|
21
|
+
|
22
|
+
"use strict";
|
23
|
+
|
24
|
+
var supportsTouch = ('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch),
|
25
|
+
supportsDragAndDrop = !supportsTouch && (function() {
|
26
|
+
var div = document.createElement('div');
|
27
|
+
return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
|
28
|
+
})(),
|
29
|
+
|
30
|
+
draggingPlaceholder, moving, clickedlink;
|
31
|
+
|
32
|
+
// disable native dragndrop support for now
|
33
|
+
supportsDragAndDrop = false;
|
34
|
+
|
35
|
+
UI.component('sortable', {
|
36
|
+
|
37
|
+
defaults: {
|
38
|
+
|
39
|
+
warp : false,
|
40
|
+
animation : 150,
|
41
|
+
|
42
|
+
childClass : 'uk-sortable-item',
|
43
|
+
placeholderClass : 'uk-sortable-placeholder',
|
44
|
+
overClass : 'uk-sortable-over',
|
45
|
+
draggingClass : 'uk-sortable-dragged',
|
46
|
+
dragMovingClass : 'uk-sortable-moving',
|
47
|
+
dragCustomClass : '',
|
48
|
+
|
49
|
+
handleClass : false,
|
50
|
+
|
51
|
+
stop : function() {},
|
52
|
+
start : function() {},
|
53
|
+
change : function() {}
|
54
|
+
},
|
55
|
+
|
56
|
+
init: function() {
|
57
|
+
|
58
|
+
var $this = this,
|
59
|
+
element = this.element[0],
|
60
|
+
currentlyDraggingElement = null,
|
61
|
+
currentlyDraggingTarget = null,
|
62
|
+
children;
|
63
|
+
|
64
|
+
if (supportsDragAndDrop) {
|
65
|
+
this.element.children().attr("draggable", "true");
|
66
|
+
|
67
|
+
} else {
|
68
|
+
|
69
|
+
// prevent leaving page after link clicking
|
70
|
+
this.element.on('mousedown touchstart', 'a[href]', function(e) {
|
71
|
+
clickedlink = $(this);
|
72
|
+
}).on('click', 'a[href]', function(e) {
|
73
|
+
clickedlink = $(this);
|
74
|
+
e.stopImmediatePropagation();
|
75
|
+
return false;
|
76
|
+
});
|
77
|
+
}
|
78
|
+
|
79
|
+
var handleDragStart = delegate(function(e) {
|
80
|
+
|
81
|
+
moving = false;
|
82
|
+
|
83
|
+
var target = $(e.target), children = $this.element.children();
|
84
|
+
|
85
|
+
if (!supportsTouch && e.button==2) {
|
86
|
+
return;
|
87
|
+
}
|
88
|
+
|
89
|
+
if ($this.options.handleClass) {
|
90
|
+
|
91
|
+
var handle = target.hasClass($this.options.handleClass) ? target : target.closest('.'+$this.options.handleClass, element);
|
92
|
+
|
93
|
+
if (!handle.length) {
|
94
|
+
e.preventDefault();
|
95
|
+
return;
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
if (e.dataTransfer) {
|
100
|
+
e.dataTransfer.effectAllowed = 'move';
|
101
|
+
e.dataTransfer.dropEffect = 'move';
|
102
|
+
e.dataTransfer.setData('Text', "*"); // Need to set to something or else drag doesn't start
|
103
|
+
}
|
104
|
+
|
105
|
+
currentlyDraggingElement = this;
|
106
|
+
|
107
|
+
// init drag placeholder
|
108
|
+
if (draggingPlaceholder) draggingPlaceholder.remove();
|
109
|
+
|
110
|
+
var $current = $(currentlyDraggingElement), offset = $current.offset();
|
111
|
+
|
112
|
+
draggingPlaceholder = $('<div class="'+([$this.options.draggingClass, $this.options.dragCustomClass].join(' '))+'"></div>').css({
|
113
|
+
display : 'none',
|
114
|
+
top : offset.top,
|
115
|
+
left : offset.left,
|
116
|
+
width : $current.width(),
|
117
|
+
height : $current.height(),
|
118
|
+
padding : $current.css('padding')
|
119
|
+
}).data('mouse-offset', {
|
120
|
+
'left': offset.left - parseInt(e.pageX, 10),
|
121
|
+
'top' : offset.top - parseInt(e.pageY, 10)
|
122
|
+
}).append($current.html()).appendTo('body');
|
123
|
+
|
124
|
+
draggingPlaceholder.$current = $current;
|
125
|
+
draggingPlaceholder.$sortable = $this;
|
126
|
+
|
127
|
+
addFakeDragHandlers();
|
128
|
+
|
129
|
+
$this.options.start(this, currentlyDraggingElement);
|
130
|
+
$this.trigger('sortable-start', [$this, currentlyDraggingElement]);
|
131
|
+
|
132
|
+
if (!supportsDragAndDrop) {
|
133
|
+
e.preventDefault();
|
134
|
+
}
|
135
|
+
});
|
136
|
+
|
137
|
+
var handleDragOver = delegate(function(e) {
|
138
|
+
|
139
|
+
if (!currentlyDraggingElement) {
|
140
|
+
return true;
|
141
|
+
}
|
142
|
+
|
143
|
+
if (e.preventDefault) {
|
144
|
+
e.preventDefault();
|
145
|
+
}
|
146
|
+
|
147
|
+
return false;
|
148
|
+
});
|
149
|
+
|
150
|
+
var handleDragEnter = delegate($.UIkit.Utils.debounce(function(e) {
|
151
|
+
|
152
|
+
if (!currentlyDraggingElement || currentlyDraggingElement === this) {
|
153
|
+
return true;
|
154
|
+
}
|
155
|
+
|
156
|
+
// Prevent dragenter on a child from allowing a dragleave on the container
|
157
|
+
var previousCounter = $this.dragenterData(this);
|
158
|
+
|
159
|
+
$this.dragenterData(this, previousCounter + 1);
|
160
|
+
|
161
|
+
if (previousCounter === 0) {
|
162
|
+
|
163
|
+
$(this).addClass($this.options.overClass);
|
164
|
+
|
165
|
+
if (!$this.options.warp) {
|
166
|
+
$this.moveElementNextTo(currentlyDraggingElement, this);
|
167
|
+
}
|
168
|
+
}
|
169
|
+
|
170
|
+
return false;
|
171
|
+
}), 40);
|
172
|
+
|
173
|
+
var handleDragLeave = delegate(function(e) {
|
174
|
+
|
175
|
+
// Prevent dragenter on a child from allowing a dragleave on the container
|
176
|
+
var previousCounter = $this.dragenterData(this);
|
177
|
+
$this.dragenterData(this, previousCounter - 1);
|
178
|
+
|
179
|
+
// This is a fix for child elements firing dragenter before the parent fires dragleave
|
180
|
+
if (!$this.dragenterData(this)) {
|
181
|
+
$(this).removeClass($this.options.overClass);
|
182
|
+
$this.dragenterData(this, false);
|
183
|
+
}
|
184
|
+
});
|
185
|
+
|
186
|
+
var handleDrop = delegate(function(e) {
|
187
|
+
|
188
|
+
if (e.type === 'drop') {
|
189
|
+
|
190
|
+
if (e.stopPropagation) {
|
191
|
+
e.stopPropagation();
|
192
|
+
}
|
193
|
+
|
194
|
+
if (e.preventDefault) {
|
195
|
+
e.preventDefault();
|
196
|
+
}
|
197
|
+
}
|
198
|
+
|
199
|
+
if (this === currentlyDraggingElement) {
|
200
|
+
return;
|
201
|
+
}
|
202
|
+
|
203
|
+
if ($this.options.warp) {
|
204
|
+
var thisSibling = currentlyDraggingElement.nextSibling;
|
205
|
+
this.parentNode.insertBefore(currentlyDraggingElement, this);
|
206
|
+
this.parentNode.insertBefore(this, thisSibling);
|
207
|
+
}
|
208
|
+
|
209
|
+
$this.options.change(this, currentlyDraggingElement);
|
210
|
+
$this.trigger('sortable-change', [$this, currentlyDraggingElement]);
|
211
|
+
});
|
212
|
+
|
213
|
+
var handleDragEnd = function(e) {
|
214
|
+
|
215
|
+
currentlyDraggingElement = null;
|
216
|
+
currentlyDraggingTarget = null;
|
217
|
+
|
218
|
+
$this.element.children().each(function() {
|
219
|
+
if (this.nodeType === 1) {
|
220
|
+
$(this).removeClass($this.options.overClass).removeClass($this.options.placeholderClass).removeClass($this.options.childClass);
|
221
|
+
$this.dragenterData(this, false);
|
222
|
+
}
|
223
|
+
});
|
224
|
+
|
225
|
+
$('html').removeClass($this.options.dragMovingClass);
|
226
|
+
|
227
|
+
removeFakeDragHandlers();
|
228
|
+
|
229
|
+
$this.options.stop(this);
|
230
|
+
$this.trigger('sortable-stop', [$this]);
|
231
|
+
|
232
|
+
draggingPlaceholder.remove();
|
233
|
+
draggingPlaceholder = null;
|
234
|
+
};
|
235
|
+
|
236
|
+
var handleTouchMove = delegate(function(e) {
|
237
|
+
|
238
|
+
if (!currentlyDraggingElement ||
|
239
|
+
currentlyDraggingElement === this ||
|
240
|
+
currentlyDraggingTarget === this) {
|
241
|
+
return true;
|
242
|
+
}
|
243
|
+
|
244
|
+
children.removeClass($this.options.overClass);
|
245
|
+
currentlyDraggingTarget = this;
|
246
|
+
|
247
|
+
if (!$this.options.warp) {
|
248
|
+
$this.moveElementNextTo(currentlyDraggingElement, this);
|
249
|
+
} else {
|
250
|
+
$(this).addClass($this.options.overClass);
|
251
|
+
}
|
252
|
+
|
253
|
+
return prevent(e);
|
254
|
+
});
|
255
|
+
|
256
|
+
function delegate(fn) {
|
257
|
+
return function(e) {
|
258
|
+
|
259
|
+
var touch = (supportsTouch && e.touches && e.touches[0]) || { },
|
260
|
+
target = touch.target || e.target;
|
261
|
+
|
262
|
+
// Fix event.target for a touch event
|
263
|
+
if (supportsTouch && document.elementFromPoint) {
|
264
|
+
target = document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - document.body.scrollTop);
|
265
|
+
}
|
266
|
+
|
267
|
+
if ($(target).hasClass($this.options.childClass)) {
|
268
|
+
fn.apply(target, [e]);
|
269
|
+
} else if (target !== element) {
|
270
|
+
|
271
|
+
// If a child is initiating the event or ending it, then use the container as context for the callback.
|
272
|
+
var context = moveUpToChildNode(element, target);
|
273
|
+
|
274
|
+
if (context) {
|
275
|
+
fn.apply(context, [e]);
|
276
|
+
}
|
277
|
+
}
|
278
|
+
};
|
279
|
+
}
|
280
|
+
|
281
|
+
// Opera and mobile devices do not support drag and drop. http://caniuse.com/dragndrop
|
282
|
+
// Bind/unbind standard mouse/touch events as a polyfill.
|
283
|
+
function addFakeDragHandlers() {
|
284
|
+
if (!supportsDragAndDrop) {
|
285
|
+
if (supportsTouch) {
|
286
|
+
element.addEventListener("touchmove", handleTouchMove, false);
|
287
|
+
} else {
|
288
|
+
element.addEventListener('mouseover', handleDragEnter, false);
|
289
|
+
element.addEventListener('mouseout', handleDragLeave, false);
|
290
|
+
}
|
291
|
+
|
292
|
+
element.addEventListener(supportsTouch ? 'touchend' : 'mouseup', handleDrop, false);
|
293
|
+
document.addEventListener(supportsTouch ? 'touchend' : 'mouseup', handleDragEnd, false);
|
294
|
+
document.addEventListener("selectstart", prevent, false);
|
295
|
+
|
296
|
+
}
|
297
|
+
}
|
298
|
+
|
299
|
+
function removeFakeDragHandlers() {
|
300
|
+
if (!supportsDragAndDrop) {
|
301
|
+
if (supportsTouch) {
|
302
|
+
element.removeEventListener("touchmove", handleTouchMove, false);
|
303
|
+
} else {
|
304
|
+
element.removeEventListener('mouseover', handleDragEnter, false);
|
305
|
+
element.removeEventListener('mouseout', handleDragLeave, false);
|
306
|
+
}
|
307
|
+
|
308
|
+
element.removeEventListener(supportsTouch ? 'touchend' : 'mouseup', handleDrop, false);
|
309
|
+
document.removeEventListener(supportsTouch ? 'touchend' : 'mouseup', handleDragEnd, false);
|
310
|
+
document.removeEventListener("selectstart", prevent, false);
|
311
|
+
}
|
312
|
+
}
|
313
|
+
|
314
|
+
if (supportsDragAndDrop) {
|
315
|
+
element.addEventListener('dragstart', handleDragStart, false);
|
316
|
+
element.addEventListener('dragenter', handleDragEnter, false);
|
317
|
+
element.addEventListener('dragleave', handleDragLeave, false);
|
318
|
+
element.addEventListener('drop', handleDrop, false);
|
319
|
+
element.addEventListener('dragover', handleDragOver, false);
|
320
|
+
element.addEventListener('dragend', handleDragEnd, false);
|
321
|
+
} else {
|
322
|
+
|
323
|
+
element.addEventListener(supportsTouch ? 'touchstart':'mousedown', handleDragStart, false);
|
324
|
+
}
|
325
|
+
},
|
326
|
+
|
327
|
+
dragenterData: function(element, val) {
|
328
|
+
|
329
|
+
element = $(element);
|
330
|
+
|
331
|
+
if (arguments.length == 1) {
|
332
|
+
return parseInt(element.attr('data-child-dragenter'), 10) || 0;
|
333
|
+
} else if (!val) {
|
334
|
+
element.removeAttr('data-child-dragenter');
|
335
|
+
} else {
|
336
|
+
element.attr('data-child-dragenter', Math.max(0, val));
|
337
|
+
}
|
338
|
+
},
|
339
|
+
|
340
|
+
moveElementNextTo: function(element, elementToMoveNextTo) {
|
341
|
+
|
342
|
+
var $this = this,
|
343
|
+
list = $(element).parent().css('min-height', ''),
|
344
|
+
next = isBelow(element, elementToMoveNextTo) ? elementToMoveNextTo : elementToMoveNextTo.nextSibling,
|
345
|
+
children = list.children(),
|
346
|
+
count = children.length;
|
347
|
+
|
348
|
+
if($this.options.warp || !$this.options.animation) {
|
349
|
+
elementToMoveNextTo.parentNode.insertBefore(element, next);
|
350
|
+
$(document).trigger("uk-check-display");
|
351
|
+
return;
|
352
|
+
}
|
353
|
+
|
354
|
+
list.css('min-height', list.height());
|
355
|
+
|
356
|
+
children.stop().each(function(){
|
357
|
+
var ele = $(this),
|
358
|
+
offset = ele.position();
|
359
|
+
|
360
|
+
offset.width = ele.width();
|
361
|
+
|
362
|
+
ele.data('offset-before', offset);
|
363
|
+
});
|
364
|
+
|
365
|
+
elementToMoveNextTo.parentNode.insertBefore(element, next);
|
366
|
+
|
367
|
+
children = list.children().each(function() {
|
368
|
+
var ele = $(this);
|
369
|
+
ele.data('offset-after', ele.position());
|
370
|
+
}).each(function() {
|
371
|
+
var ele = $(this),
|
372
|
+
before = ele.data('offset-before');
|
373
|
+
ele.css({'position':'absolute', 'top':before.top, 'left':before.left, 'min-width':before.width });
|
374
|
+
});
|
375
|
+
|
376
|
+
children.each(function(){
|
377
|
+
|
378
|
+
var ele = $(this),
|
379
|
+
before = ele.data('offset-before'),
|
380
|
+
offset = ele.data('offset-after');
|
381
|
+
|
382
|
+
ele.css('pointer-events', 'none').width();
|
383
|
+
|
384
|
+
setTimeout(function(){
|
385
|
+
ele.animate({'top':offset.top, 'left':offset.left}, $this.options.animation, function() {
|
386
|
+
ele.css({'position':'','top':'', 'left':'', 'min-width': '', 'pointer-events':''}).removeClass($this.options.overClass).attr('data-child-dragenter', '');
|
387
|
+
count--
|
388
|
+
if (!count) {
|
389
|
+
list.css('min-height', '');
|
390
|
+
$(document).trigger("uk-check-display");
|
391
|
+
}
|
392
|
+
});
|
393
|
+
}, 0);
|
394
|
+
});
|
395
|
+
|
396
|
+
|
397
|
+
}
|
398
|
+
});
|
399
|
+
|
400
|
+
// helpers
|
401
|
+
|
402
|
+
function isBelow(el1, el2) {
|
403
|
+
|
404
|
+
var parent = el1.parentNode;
|
405
|
+
|
406
|
+
if (el2.parentNode != parent) {
|
407
|
+
return false;
|
408
|
+
}
|
409
|
+
|
410
|
+
var cur = el1.previousSibling;
|
411
|
+
|
412
|
+
while (cur && cur.nodeType !== 9) {
|
413
|
+
if (cur === el2) {
|
414
|
+
return true;
|
415
|
+
}
|
416
|
+
cur = cur.previousSibling;
|
417
|
+
}
|
418
|
+
|
419
|
+
return false;
|
420
|
+
}
|
421
|
+
|
422
|
+
function moveUpToChildNode(parent, child) {
|
423
|
+
var cur = child;
|
424
|
+
if (cur == parent) { return null; }
|
425
|
+
|
426
|
+
while (cur) {
|
427
|
+
if (cur.parentNode === parent) {
|
428
|
+
return cur;
|
429
|
+
}
|
430
|
+
|
431
|
+
cur = cur.parentNode;
|
432
|
+
if ( !cur || !cur.ownerDocument || cur.nodeType === 11 ) {
|
433
|
+
break;
|
434
|
+
}
|
435
|
+
}
|
436
|
+
return null;
|
437
|
+
}
|
438
|
+
|
439
|
+
function prevent(e) {
|
440
|
+
if (e.stopPropagation) {
|
441
|
+
e.stopPropagation();
|
442
|
+
}
|
443
|
+
if (e.preventDefault) {
|
444
|
+
e.preventDefault();
|
445
|
+
}
|
446
|
+
e.returnValue = false;
|
447
|
+
}
|
448
|
+
|
449
|
+
// auto init
|
450
|
+
$(document).on("uk-domready", function(e) {
|
451
|
+
|
452
|
+
$("[data-uk-sortable]").each(function(){
|
453
|
+
|
454
|
+
var ele = $(this);
|
455
|
+
|
456
|
+
if(!ele.data("sortable")) {
|
457
|
+
var plugin = UI.sortable(ele, UI.Utils.options(ele.attr("data-uk-sortable")));
|
458
|
+
}
|
459
|
+
});
|
460
|
+
});
|
461
|
+
|
462
|
+
$(document).on('mousemove touchmove', function(e) {
|
463
|
+
|
464
|
+
if (draggingPlaceholder) {
|
465
|
+
|
466
|
+
if (!moving) {
|
467
|
+
moving = true;
|
468
|
+
draggingPlaceholder.show();
|
469
|
+
|
470
|
+
draggingPlaceholder.$current.addClass(draggingPlaceholder.$sortable.options.placeholderClass);
|
471
|
+
draggingPlaceholder.$sortable.element.children().addClass(draggingPlaceholder.$sortable.options.childClass);
|
472
|
+
|
473
|
+
$('html').addClass(draggingPlaceholder.$sortable.options.dragMovingClass);
|
474
|
+
}
|
475
|
+
|
476
|
+
var offset = draggingPlaceholder.data('mouse-offset'),
|
477
|
+
left = parseInt(e.originalEvent.pageX, 10) + offset.left,
|
478
|
+
top = parseInt(e.originalEvent.pageY, 10) + offset.top;
|
479
|
+
|
480
|
+
draggingPlaceholder.css({'left': left, 'top': top });
|
481
|
+
}
|
482
|
+
});
|
483
|
+
|
484
|
+
$(document).on('mouseup touchend', function() {
|
485
|
+
|
486
|
+
if(!moving && clickedlink) {
|
487
|
+
location.href = clickedlink.attr('href');
|
488
|
+
}
|
489
|
+
|
490
|
+
clickedlink = false;
|
491
|
+
});
|
492
|
+
|
493
|
+
return UI.sortable;
|
494
|
+
});
|
@@ -0,0 +1,3 @@
|
|
1
|
+
/*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
|
3
|
+
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-sortable",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){"use strict";function c(a,b){var c=a.parentNode;if(b.parentNode!=c)return!1;for(var d=a.previousSibling;d&&9!==d.nodeType;){if(d===b)return!0;d=d.previousSibling}return!1}function d(a,b){var c=b;if(c==a)return null;for(;c;){if(c.parentNode===a)return c;if(c=c.parentNode,!c||!c.ownerDocument||11===c.nodeType)break}return null}function e(a){a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a.returnValue=!1}var f,g,h,i="ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,j=!i&&function(){var a=document.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a}();return j=!1,b.component("sortable",{defaults:{warp:!1,animation:150,childClass:"uk-sortable-item",placeholderClass:"uk-sortable-placeholder",overClass:"uk-sortable-over",draggingClass:"uk-sortable-dragged",dragMovingClass:"uk-sortable-moving",dragCustomClass:"",handleClass:!1,stop:function(){},start:function(){},change:function(){}},init:function(){function b(b){return function(c){var e=i&&c.touches&&c.touches[0]||{},f=e.target||c.target;if(i&&document.elementFromPoint&&(f=document.elementFromPoint(c.pageX-document.body.scrollLeft,c.pageY-document.body.scrollTop)),a(f).hasClass(m.options.childClass))b.apply(f,[c]);else if(f!==n){var g=d(n,f);g&&b.apply(g,[c])}}}function c(){j||(i?n.addEventListener("touchmove",w,!1):(n.addEventListener("mouseover",s,!1),n.addEventListener("mouseout",t,!1)),n.addEventListener(i?"touchend":"mouseup",u,!1),document.addEventListener(i?"touchend":"mouseup",v,!1),document.addEventListener("selectstart",e,!1))}function k(){j||(i?n.removeEventListener("touchmove",w,!1):(n.removeEventListener("mouseover",s,!1),n.removeEventListener("mouseout",t,!1)),n.removeEventListener(i?"touchend":"mouseup",u,!1),document.removeEventListener(i?"touchend":"mouseup",v,!1),document.removeEventListener("selectstart",e,!1))}var l,m=this,n=this.element[0],o=null,p=null;j?this.element.children().attr("draggable","true"):this.element.on("mousedown touchstart","a[href]",function(){h=a(this)}).on("click","a[href]",function(b){return h=a(this),b.stopImmediatePropagation(),!1});var q=b(function(b){g=!1;{var d=a(b.target);m.element.children()}if(i||2!=b.button){if(m.options.handleClass){var e=d.hasClass(m.options.handleClass)?d:d.closest("."+m.options.handleClass,n);if(!e.length)return void b.preventDefault()}b.dataTransfer&&(b.dataTransfer.effectAllowed="move",b.dataTransfer.dropEffect="move",b.dataTransfer.setData("Text","*")),o=this,f&&f.remove();var h=a(o),k=h.offset();f=a('<div class="'+[m.options.draggingClass,m.options.dragCustomClass].join(" ")+'"></div>').css({display:"none",top:k.top,left:k.left,width:h.width(),height:h.height(),padding:h.css("padding")}).data("mouse-offset",{left:k.left-parseInt(b.pageX,10),top:k.top-parseInt(b.pageY,10)}).append(h.html()).appendTo("body"),f.$current=h,f.$sortable=m,c(),m.options.start(this,o),m.trigger("sortable-start",[m,o]),j||b.preventDefault()}}),r=b(function(a){return o?(a.preventDefault&&a.preventDefault(),!1):!0}),s=b(a.UIkit.Utils.debounce(function(){if(!o||o===this)return!0;var b=m.dragenterData(this);return m.dragenterData(this,b+1),0===b&&(a(this).addClass(m.options.overClass),m.options.warp||m.moveElementNextTo(o,this)),!1}),40),t=b(function(){var b=m.dragenterData(this);m.dragenterData(this,b-1),m.dragenterData(this)||(a(this).removeClass(m.options.overClass),m.dragenterData(this,!1))}),u=b(function(a){if("drop"===a.type&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault()),this!==o){if(m.options.warp){var b=o.nextSibling;this.parentNode.insertBefore(o,this),this.parentNode.insertBefore(this,b)}m.options.change(this,o),m.trigger("sortable-change",[m,o])}}),v=function(){o=null,p=null,m.element.children().each(function(){1===this.nodeType&&(a(this).removeClass(m.options.overClass).removeClass(m.options.placeholderClass).removeClass(m.options.childClass),m.dragenterData(this,!1))}),a("html").removeClass(m.options.dragMovingClass),k(),m.options.stop(this),m.trigger("sortable-stop",[m]),f.remove(),f=null},w=b(function(b){return o&&o!==this&&p!==this?(l.removeClass(m.options.overClass),p=this,m.options.warp?a(this).addClass(m.options.overClass):m.moveElementNextTo(o,this),e(b)):!0});j?(n.addEventListener("dragstart",q,!1),n.addEventListener("dragenter",s,!1),n.addEventListener("dragleave",t,!1),n.addEventListener("drop",u,!1),n.addEventListener("dragover",r,!1),n.addEventListener("dragend",v,!1)):n.addEventListener(i?"touchstart":"mousedown",q,!1)},dragenterData:function(b,c){return b=a(b),1==arguments.length?parseInt(b.attr("data-child-dragenter"),10)||0:void(c?b.attr("data-child-dragenter",Math.max(0,c)):b.removeAttr("data-child-dragenter"))},moveElementNextTo:function(b,d){var e=this,f=a(b).parent().css("min-height",""),g=c(b,d)?d:d.nextSibling,h=f.children(),i=h.length;return e.options.warp||!e.options.animation?(d.parentNode.insertBefore(b,g),void a(document).trigger("uk-check-display")):(f.css("min-height",f.height()),h.stop().each(function(){var b=a(this),c=b.position();c.width=b.width(),b.data("offset-before",c)}),d.parentNode.insertBefore(b,g),h=f.children().each(function(){var b=a(this);b.data("offset-after",b.position())}).each(function(){var b=a(this),c=b.data("offset-before");b.css({position:"absolute",top:c.top,left:c.left,"min-width":c.width})}),void h.each(function(){var b=a(this),c=(b.data("offset-before"),b.data("offset-after"));b.css("pointer-events","none").width(),setTimeout(function(){b.animate({top:c.top,left:c.left},e.options.animation,function(){b.css({position:"",top:"",left:"","min-width":"","pointer-events":""}).removeClass(e.options.overClass).attr("data-child-dragenter",""),i--,i||(f.css("min-height",""),a(document).trigger("uk-check-display"))})},0)}))}}),a(document).on("uk-domready",function(){a("[data-uk-sortable]").each(function(){var c=a(this);if(!c.data("sortable")){b.sortable(c,b.Utils.options(c.attr("data-uk-sortable")))}})}),a(document).on("mousemove touchmove",function(b){if(f){g||(g=!0,f.show(),f.$current.addClass(f.$sortable.options.placeholderClass),f.$sortable.element.children().addClass(f.$sortable.options.childClass),a("html").addClass(f.$sortable.options.dragMovingClass));var c=f.data("mouse-offset"),d=parseInt(b.originalEvent.pageX,10)+c.left,e=parseInt(b.originalEvent.pageY,10)+c.top;f.css({left:d,top:e})}}),a(document).on("mouseup touchend",function(){!g&&h&&(location.href=h.attr("href")),h=!1}),b.sortable});
|
@@ -0,0 +1,130 @@
|
|
1
|
+
/*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
|
3
|
+
(function(addon) {
|
4
|
+
|
5
|
+
var component;
|
6
|
+
|
7
|
+
if (jQuery && jQuery.UIkit) {
|
8
|
+
component = addon(jQuery, jQuery.UIkit);
|
9
|
+
}
|
10
|
+
|
11
|
+
if (typeof define == "function" && define.amd) {
|
12
|
+
define("uikit-sticky", ["uikit"], function(){
|
13
|
+
return component || addon(jQuery, jQuery.UIkit);
|
14
|
+
});
|
15
|
+
}
|
16
|
+
|
17
|
+
})(function($, UI){
|
18
|
+
|
19
|
+
var $win = UI.$win,
|
20
|
+
$doc = UI.$doc,
|
21
|
+
sticked = [];
|
22
|
+
|
23
|
+
UI.component('sticky', {
|
24
|
+
|
25
|
+
defaults: {
|
26
|
+
top : 0,
|
27
|
+
bottom : 0,
|
28
|
+
clsactive : 'uk-active',
|
29
|
+
clswrapper : 'uk-sticky',
|
30
|
+
getWidthFrom : ''
|
31
|
+
},
|
32
|
+
|
33
|
+
init: function() {
|
34
|
+
|
35
|
+
var stickyId = this.element.attr('id') || ("s"+Math.ceil(Math.random()*10000)),
|
36
|
+
wrapper = $('<div></div>').attr('id', 'sticky-'+stickyId).addClass(this.options.clswrapper);
|
37
|
+
|
38
|
+
wrapper = this.element.wrap(wrapper).parent().css('height', this.element.outerHeight());
|
39
|
+
|
40
|
+
if (this.element.css("float") != "none") {
|
41
|
+
wrapper.css({"float":this.element.css("float")});
|
42
|
+
this.element.css({"float":"none"});
|
43
|
+
}
|
44
|
+
|
45
|
+
sticked.push({
|
46
|
+
top: this.options.top,
|
47
|
+
bottom: this.options.bottom,
|
48
|
+
element: this.element,
|
49
|
+
currentTop: null,
|
50
|
+
wrapper: wrapper,
|
51
|
+
clsactive: this.options.clsactive,
|
52
|
+
getWidthFrom: this.options.getWidthFrom || wrapper
|
53
|
+
});
|
54
|
+
},
|
55
|
+
|
56
|
+
update: function() {
|
57
|
+
scroller();
|
58
|
+
}
|
59
|
+
});
|
60
|
+
|
61
|
+
function scroller() {
|
62
|
+
|
63
|
+
if (!sticked.length) return;
|
64
|
+
|
65
|
+
var scrollTop = $win.scrollTop(),
|
66
|
+
documentHeight = $doc.height(),
|
67
|
+
dwh = documentHeight - $win.height(),
|
68
|
+
extra = (scrollTop > dwh) ? dwh - scrollTop : 0;
|
69
|
+
|
70
|
+
for (var i = 0; i < sticked.length; i++) {
|
71
|
+
|
72
|
+
if (!sticked[i].element.is(":visible")) {
|
73
|
+
continue;
|
74
|
+
}
|
75
|
+
|
76
|
+
var sticky = sticked[i],
|
77
|
+
elementTop = sticky.wrapper.offset().top,
|
78
|
+
etse = elementTop - sticky.top - extra;
|
79
|
+
|
80
|
+
if (scrollTop <= etse) {
|
81
|
+
|
82
|
+
if (sticky.currentTop !== null) {
|
83
|
+
sticky.element.css({"position":"", "top":"", "width":"", "left":""});
|
84
|
+
sticky.wrapper.removeClass(sticky.clsactive);
|
85
|
+
sticky.currentTop = null;
|
86
|
+
}
|
87
|
+
|
88
|
+
} else {
|
89
|
+
|
90
|
+
var newTop = documentHeight - sticky.element.outerHeight() - sticky.top - sticky.bottom - scrollTop - extra;
|
91
|
+
|
92
|
+
newTop = newTop < 0 ? newTop + sticky.top : sticky.top;
|
93
|
+
|
94
|
+
if (sticky.currentTop != newTop) {
|
95
|
+
sticky.element.css({
|
96
|
+
"position" : "fixed",
|
97
|
+
"top" : newTop,
|
98
|
+
"width" : (typeof sticky.getWidthFrom !== 'undefined') ? $(sticky.getWidthFrom).width() : sticky.element.width(),
|
99
|
+
"left" : sticky.wrapper.offset().left
|
100
|
+
});
|
101
|
+
|
102
|
+
sticky.wrapper.addClass(sticky.clsactive);
|
103
|
+
sticky.currentTop = newTop;
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
}
|
109
|
+
|
110
|
+
// should be more efficient than using $win.scroll(scroller):
|
111
|
+
$doc.on('uk-scroll', scroller);
|
112
|
+
|
113
|
+
$doc.on("uk-domready", function(e) {
|
114
|
+
setTimeout(function(){
|
115
|
+
|
116
|
+
scroller();
|
117
|
+
|
118
|
+
$("[data-uk-sticky]").each(function(){
|
119
|
+
|
120
|
+
var $ele = $(this);
|
121
|
+
|
122
|
+
if(!$ele.data("sticky")) {
|
123
|
+
UI.sticky($ele, UI.Utils.options($ele.attr('data-uk-sticky')));
|
124
|
+
}
|
125
|
+
});
|
126
|
+
}, 0);
|
127
|
+
});
|
128
|
+
|
129
|
+
return $.fn.uksticky;
|
130
|
+
});
|
@@ -0,0 +1,3 @@
|
|
1
|
+
/*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
2
|
+
|
3
|
+
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-sticky",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){function c(){if(f.length)for(var b=d.scrollTop(),c=e.height(),g=c-d.height(),h=b>g?g-b:0,i=0;i<f.length;i++)if(f[i].element.is(":visible")){var j=f[i],k=j.wrapper.offset().top,l=k-j.top-h;if(l>=b)null!==j.currentTop&&(j.element.css({position:"",top:"",width:"",left:""}),j.wrapper.removeClass(j.clsactive),j.currentTop=null);else{var m=c-j.element.outerHeight()-j.top-j.bottom-b-h;m=0>m?m+j.top:j.top,j.currentTop!=m&&(j.element.css({position:"fixed",top:m,width:"undefined"!=typeof j.getWidthFrom?a(j.getWidthFrom).width():j.element.width(),left:j.wrapper.offset().left}),j.wrapper.addClass(j.clsactive),j.currentTop=m)}}}var d=b.$win,e=b.$doc,f=[];return b.component("sticky",{defaults:{top:0,bottom:0,clsactive:"uk-active",clswrapper:"uk-sticky",getWidthFrom:""},init:function(){var b=this.element.attr("id")||"s"+Math.ceil(1e4*Math.random()),c=a("<div></div>").attr("id","sticky-"+b).addClass(this.options.clswrapper);c=this.element.wrap(c).parent().css("height",this.element.outerHeight()),"none"!=this.element.css("float")&&(c.css({"float":this.element.css("float")}),this.element.css({"float":"none"})),f.push({top:this.options.top,bottom:this.options.bottom,element:this.element,currentTop:null,wrapper:c,clsactive:this.options.clsactive,getWidthFrom:this.options.getWidthFrom||c})},update:function(){c()}}),e.on("uk-scroll",c),e.on("uk-domready",function(){setTimeout(function(){c(),a("[data-uk-sticky]").each(function(){var c=a(this);c.data("sticky")||b.sticky(c,b.Utils.options(c.attr("data-uk-sticky")))})},0)}),a.fn.uksticky});
|