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.
Files changed (48) hide show
  1. data/lib/rails/uikit/engine.rb +6 -0
  2. data/lib/rails/uikit/version.rb +5 -0
  3. data/lib/rails/uikit.rb +8 -0
  4. data/public/fonts/FontAwesome.otf +0 -0
  5. data/public/fonts/fontawesome-webfont.eot +0 -0
  6. data/public/fonts/fontawesome-webfont.ttf +0 -0
  7. data/public/fonts/fontawesome-webfont.woff +0 -0
  8. data/vendor/assets/javascripts/addons/autocomplete.js +306 -0
  9. data/vendor/assets/javascripts/addons/autocomplete.min.js +3 -0
  10. data/vendor/assets/javascripts/addons/datepicker.js +365 -0
  11. data/vendor/assets/javascripts/addons/datepicker.min.js +3 -0
  12. data/vendor/assets/javascripts/addons/form-password.js +62 -0
  13. data/vendor/assets/javascripts/addons/form-password.min.js +3 -0
  14. data/vendor/assets/javascripts/addons/form-select.js +62 -0
  15. data/vendor/assets/javascripts/addons/form-select.min.js +3 -0
  16. data/vendor/assets/javascripts/addons/htmleditor.js +594 -0
  17. data/vendor/assets/javascripts/addons/htmleditor.min.js +3 -0
  18. data/vendor/assets/javascripts/addons/nestable.js +574 -0
  19. data/vendor/assets/javascripts/addons/nestable.min.js +3 -0
  20. data/vendor/assets/javascripts/addons/notify.js +177 -0
  21. data/vendor/assets/javascripts/addons/notify.min.js +3 -0
  22. data/vendor/assets/javascripts/addons/pagination.js +146 -0
  23. data/vendor/assets/javascripts/addons/pagination.min.js +3 -0
  24. data/vendor/assets/javascripts/addons/search.js +90 -0
  25. data/vendor/assets/javascripts/addons/search.min.js +3 -0
  26. data/vendor/assets/javascripts/addons/sortable.js +494 -0
  27. data/vendor/assets/javascripts/addons/sortable.min.js +3 -0
  28. data/vendor/assets/javascripts/addons/sticky.js +130 -0
  29. data/vendor/assets/javascripts/addons/sticky.min.js +3 -0
  30. data/vendor/assets/javascripts/addons/timepicker.js +163 -0
  31. data/vendor/assets/javascripts/addons/timepicker.min.js +3 -0
  32. data/vendor/assets/javascripts/addons/upload.js +239 -0
  33. data/vendor/assets/javascripts/addons/upload.min.js +3 -0
  34. data/vendor/assets/javascripts/uikit.js +2573 -0
  35. data/vendor/assets/javascripts/uikit.min.js +4 -0
  36. data/vendor/assets/stylesheets/addons/uikit.addons.css +1124 -0
  37. data/vendor/assets/stylesheets/addons/uikit.addons.min.css +3 -0
  38. data/vendor/assets/stylesheets/addons/uikit.almost-flat.addons.css +1205 -0
  39. data/vendor/assets/stylesheets/addons/uikit.almost-flat.addons.min.css +3 -0
  40. data/vendor/assets/stylesheets/addons/uikit.gradient.addons.css +1226 -0
  41. data/vendor/assets/stylesheets/addons/uikit.gradient.addons.min.css +3 -0
  42. data/vendor/assets/stylesheets/uikit.almost-flat.css +7022 -0
  43. data/vendor/assets/stylesheets/uikit.almost-flat.min.css +3 -0
  44. data/vendor/assets/stylesheets/uikit.css +6732 -0
  45. data/vendor/assets/stylesheets/uikit.gradient.css +7090 -0
  46. data/vendor/assets/stylesheets/uikit.gradient.min.css +3 -0
  47. data/vendor/assets/stylesheets/uikit.min.css +3 -0
  48. 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});