uikit-sass-rails 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +1 -1
  4. data/lib/uikit/sass/rails/version.rb +1 -1
  5. data/uikit-sass-rails.gemspec +2 -2
  6. data/vendor/assets/javascripts/uikit.js +1 -0
  7. data/vendor/assets/javascripts/uikit/addons/autocomplete.js +5 -6
  8. data/vendor/assets/javascripts/uikit/addons/cover.js +90 -0
  9. data/vendor/assets/javascripts/uikit/addons/datepicker.js +19 -5
  10. data/vendor/assets/javascripts/uikit/addons/form-password.js +2 -2
  11. data/vendor/assets/javascripts/uikit/addons/form-select.js +3 -3
  12. data/vendor/assets/javascripts/uikit/addons/htmleditor.js +35 -14
  13. data/vendor/assets/javascripts/uikit/addons/nestable.js +9 -8
  14. data/vendor/assets/javascripts/uikit/addons/notify.js +5 -2
  15. data/vendor/assets/javascripts/uikit/addons/pagination.js +3 -3
  16. data/vendor/assets/javascripts/uikit/addons/search.js +2 -2
  17. data/vendor/assets/javascripts/uikit/addons/sortable.js +48 -28
  18. data/vendor/assets/javascripts/uikit/addons/sticky.js +148 -37
  19. data/vendor/assets/javascripts/uikit/addons/timepicker.js +11 -9
  20. data/vendor/assets/javascripts/uikit/addons/upload.js +20 -6
  21. data/vendor/assets/javascripts/uikit/uikit.js +309 -288
  22. data/vendor/assets/stylesheets/uikit/addons/uikit.addons.scss +175 -62
  23. data/vendor/assets/stylesheets/uikit/addons/uikit.almost-flat.addons.scss +175 -62
  24. data/vendor/assets/stylesheets/uikit/addons/uikit.gradient.addons.scss +175 -62
  25. data/vendor/assets/stylesheets/uikit/uikit.almost-flat.scss +389 -132
  26. data/vendor/assets/stylesheets/uikit/uikit.gradient.scss +389 -132
  27. data/vendor/assets/stylesheets/uikit/uikit.scss +389 -132
  28. metadata +6 -5
@@ -1,4 +1,4 @@
1
- /*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
1
+ /*! UIkit 2.9.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
2
2
 
3
3
  (function(addon) {
4
4
 
@@ -47,6 +47,7 @@
47
47
  e.preventDefault();
48
48
 
49
49
  $this.element.removeClass($this.options.dragoverClass);
50
+ $this.element.trigger('uk.dropped', [e.dataTransfer.files]);
50
51
 
51
52
  xhrupload(e.dataTransfer.files, $this.options);
52
53
  }
@@ -126,12 +127,22 @@
126
127
  if (settings.single){
127
128
 
128
129
  var count = files.length,
129
- uploaded = 0;
130
+ uploaded = 0,
131
+ allow = true;
132
+
133
+ settings.beforeAll(files);
130
134
 
131
135
  settings.complete = function(response, xhr){
132
- uploaded = uploaded+1;
136
+
137
+ uploaded = uploaded + 1;
138
+
133
139
  complete(response, xhr);
134
- if (uploaded<count){
140
+
141
+ if (settings.filelimit && uploaded >= settings.filelimit){
142
+ allow = false;
143
+ }
144
+
145
+ if (allow && uploaded<count){
135
146
  upload([files[uploaded]], settings);
136
147
  } else {
137
148
  settings.allcomplete(response, xhr);
@@ -193,7 +204,7 @@
193
204
  settings.complete(response, xhr);
194
205
  }
195
206
  };
196
-
207
+ settings.beforeSend(xhr);
197
208
  xhr.send(formData);
198
209
  }
199
210
  }
@@ -206,9 +217,12 @@
206
217
  'params': {},
207
218
  'allow' : '*.*',
208
219
  'type' : 'text',
220
+ 'filelimit': false,
209
221
 
210
222
  // events
211
223
  'before' : function(o){},
224
+ 'beforeSend' : function(xhr){},
225
+ 'beforeAll' : function(){},
212
226
  'loadstart' : function(){},
213
227
  'load' : function(){},
214
228
  'loadend' : function(){},
@@ -236,4 +250,4 @@
236
250
  UI.Utils.xhrupload = xhrupload;
237
251
 
238
252
  return xhrupload;
239
- });
253
+ });
@@ -1,4 +1,4 @@
1
- /*! UIkit 2.8.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
1
+ /*! UIkit 2.9.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
2
2
 
3
3
  (function(core) {
4
4
 
@@ -12,7 +12,7 @@
12
12
  var resources = res.split(','), load = [], i, base = (config.config && config.config.uikit && config.config.uikit.base ? config.config.uikit.base : "").replace(/\/+$/g, "");
13
13
 
14
14
  if (!base) {
15
- throw new Error( "Please define base path to uikit in the requirejs config." );
15
+ throw new Error( "Please define base path to UIkit in the requirejs config." );
16
16
  }
17
17
 
18
18
  for (i = 0; i < resources.length; i += 1) {
@@ -48,7 +48,7 @@
48
48
  return UI;
49
49
  }
50
50
 
51
- UI.version = '2.8.0';
51
+ UI.version = '2.9.0';
52
52
  UI.$doc = $doc;
53
53
  UI.$win = $win;
54
54
 
@@ -118,7 +118,7 @@
118
118
  (global.navigator['pointerEnabled'] && global.navigator['maxTouchPoints'] > 0) || //IE >=11
119
119
  false
120
120
  );
121
- UI.support.mutationobserver = (global.MutationObserver || global.WebKitMutationObserver || global.MozMutationObserver || null);
121
+ UI.support.mutationobserver = (global.MutationObserver || global.WebKitMutationObserver || null);
122
122
 
123
123
  UI.Utils = {};
124
124
 
@@ -182,6 +182,10 @@
182
182
  }
183
183
  };
184
184
 
185
+ UI.Utils.checkDisplay = function(context) {
186
+ $('[data-uk-margin], [data-uk-grid-match], [data-uk-grid-margin], [data-uk-check-display]', context || document).trigger('uk-check-display');
187
+ };
188
+
185
189
  UI.Utils.options = function(string) {
186
190
 
187
191
  if ($.isPlainObject(string)) return string;
@@ -267,19 +271,56 @@
267
271
 
268
272
  $.UIkit.langdirection = $html.attr("dir") == "rtl" ? "right" : "left";
269
273
 
270
- $(function(){
271
274
 
272
- $doc.trigger("uk-domready");
275
+ // DOM mutation save ready helper function
276
+
277
+ UI.domObservers = [];
278
+
279
+ UI.domObserve = function(selector, fn) {
280
+
281
+ if(!UI.support.mutationobserver) return;
282
+
283
+ $(selector).each(function() {
284
+
285
+ var element = this;
286
+
287
+ try {
288
+
289
+ var observer = new UI.support.mutationobserver(UI.Utils.debounce(function(mutations) {
290
+ fn.apply(element, []);
291
+ $(element).trigger('uk.dom.changed');
292
+ }, 50));
293
+
294
+ // pass in the target node, as well as the observer options
295
+ observer.observe(element, { childList: true, subtree: true });
296
+
297
+ } catch(e) {}
298
+ });
299
+ };
300
+
301
+ UI.ready = function(fn) {
302
+ $(function() { fn(document); });
303
+ UI.domObservers.push(fn);
304
+ };
305
+
306
+ $doc.on('uk.domready', function(){
307
+ UI.domObservers.forEach(function(fn){
308
+ fn(document);
309
+ });
310
+ $doc.trigger('uk.dom.changed');
311
+ });
312
+
313
+ $(function(){
273
314
 
274
315
  // custom scroll observer
275
316
  setInterval((function(){
276
317
 
277
- var memory = {x: window.scrollX, y:window.scrollY};
318
+ var memory = {x: window.pageXOffset, y:window.pageYOffset};
278
319
 
279
320
  var fn = function(){
280
321
 
281
- if (memory.x != window.scrollX || memory.y != window.scrollY) {
282
- memory = {x: window.scrollX, y:window.scrollY};
322
+ if (memory.x != window.pageXOffset || memory.y != window.pageYOffset) {
323
+ memory = {x: window.pageXOffset, y:window.pageYOffset};
283
324
  $doc.trigger('uk-scroll', [memory]);
284
325
  }
285
326
  };
@@ -294,24 +335,36 @@
294
335
 
295
336
  })(), 15);
296
337
 
297
-
298
338
  // Check for dom modifications
299
- if(!UI.support.mutationobserver) return;
300
-
301
- try{
339
+ UI.domObserve('[data-uk-observe]', function() {
302
340
 
303
- var observer = new UI.support.mutationobserver(UI.Utils.debounce(function(mutations) {
304
- $doc.trigger("uk-domready");
305
- }, 150));
341
+ var ele = this;
306
342
 
307
- // pass in the target node, as well as the observer options
308
- observer.observe(document.body, { childList: true, subtree: true });
343
+ UI.domObservers.forEach(function(fn){
344
+ fn(ele);
345
+ });
346
+ });
309
347
 
310
- } catch(e) {}
311
348
 
312
- // remove css hover rules for touch devices
313
349
  if (UI.support.touch) {
314
- UI.Utils.removeCssRules(/\.uk-(?!navbar).*:hover/);
350
+
351
+ // remove css hover rules for touch devices
352
+ // UI.Utils.removeCssRules(/\.uk-(?!navbar).*:hover/);
353
+
354
+ // viewport unit fix for uk-height-viewport - should be fixed in iOS 8
355
+ if (navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) {
356
+
357
+ UI.$win.on('load orientationchange resize', UI.Utils.debounce((function(){
358
+
359
+ var fn = function() {
360
+ $('.uk-height-viewport').css('height', window.innerHeight);
361
+ return fn;
362
+ };
363
+
364
+ return fn();
365
+
366
+ })(), 100));
367
+ }
315
368
  }
316
369
  });
317
370
 
@@ -340,149 +393,6 @@
340
393
  return UI;
341
394
  });
342
395
 
343
- /**
344
- * Promises/A+ spec. polyfill
345
- * promiscuous - https://github.com/RubenVerborgh/promiscuous
346
- * @license MIT
347
- * Ruben Verborgh
348
- */
349
-
350
- (function(global){
351
-
352
- global.Promise = global.Promise || (function (func, obj) {
353
-
354
- // Type checking utility function
355
- function is(type, item) { return (typeof item)[0] == type; }
356
-
357
- // Creates a promise, calling callback(resolve, reject), ignoring other parameters.
358
- function Promise(callback, handler) {
359
- // The `handler` variable points to the function that will
360
- // 1) handle a .then(resolved, rejected) call
361
- // 2) handle a resolve or reject call (if the first argument === `is`)
362
- // Before 2), `handler` holds a queue of callbacks.
363
- // After 2), `handler` is a finalized .then handler.
364
- handler = function pendingHandler(resolved, rejected, value, queue, then, i) {
365
- queue = pendingHandler.q;
366
-
367
- // Case 1) handle a .then(resolved, rejected) call
368
- if (resolved != is) {
369
- return Promise(function (resolve, reject) {
370
- queue.push({ p: this, r: resolve, j: reject, 1: resolved, 0: rejected });
371
- });
372
- }
373
-
374
- // Case 2) handle a resolve or reject call
375
- // (`resolved` === `is` acts as a sentinel)
376
- // The actual function signature is
377
- // .re[ject|solve](<is>, success, value)
378
-
379
- // Check if the value is a promise and try to obtain its `then` method
380
- if (value && (is(func, value) | is(obj, value))) {
381
- try { then = value.then; }
382
- catch (reason) { rejected = 0; value = reason; }
383
- }
384
- // If the value is a promise, take over its state
385
- if (is(func, then)) {
386
- var valueHandler = function (resolved) {
387
- return function (value) { return then && (then = 0, pendingHandler(is, resolved, value)); };
388
- };
389
- try { then.call(value, valueHandler(1), rejected = valueHandler(0)); }
390
- catch (reason) { rejected(reason); }
391
- }
392
- // The value is not a promise; handle resolve/reject
393
- else {
394
- // Replace this handler with a finalized resolved/rejected handler
395
- handler = function (Resolved, Rejected) {
396
- // If the Resolved or Rejected parameter is not a function,
397
- // return the original promise (now stored in the `callback` variable)
398
- if (!is(func, (Resolved = rejected ? Resolved : Rejected))) return callback;
399
- // Otherwise, return a finalized promise, transforming the value with the function
400
- return Promise(function (resolve, reject) { finalize(this, resolve, reject, value, Resolved); });
401
- };
402
- // Resolve/reject pending callbacks
403
- i = 0;
404
- while (i < queue.length) {
405
- then = queue[i++];
406
- // If no callback, just resolve/reject the promise
407
- if (!is(func, resolved = then[rejected])) {
408
- (rejected ? then.r : then.j)(value);
409
- // Otherwise, resolve/reject the promise with the result of the callback
410
- } else {
411
- finalize(then.p, then.r, then.j, value, resolved);
412
- }
413
- }
414
- }
415
- };
416
-
417
- // The queue of pending callbacks; garbage-collected when handler is resolved/rejected
418
- handler.q = [];
419
-
420
- // Create and return the promise (reusing the callback variable)
421
- callback.call(callback = {
422
- then: function (resolved, rejected) { return handler(resolved, rejected); },
423
- catch: function (rejected) { return handler(0, rejected); }
424
- },
425
- function (value) { handler(is, 1, value); },
426
- function (reason) { handler(is, 0, reason); }
427
- );
428
-
429
- return callback;
430
- }
431
-
432
- // Finalizes the promise by resolving/rejecting it with the transformed value
433
- function finalize(promise, resolve, reject, value, transform) {
434
- setTimeout(function () {
435
- try {
436
- // Transform the value through and check whether it's a promise
437
- value = transform(value);
438
- transform = value && (is(obj, value) | is(func, value)) && value.then;
439
- // Return the result if it's not a promise
440
- if (!is(func, transform))
441
- resolve(value);
442
- // If it's a promise, make sure it's not circular
443
- else if (value == promise)
444
- reject(TypeError());
445
- // Take over the promise's state
446
- else
447
- transform.call(value, resolve, reject);
448
- }
449
- catch (error) { reject(error); }
450
- }, 0);
451
- }
452
-
453
- // Creates a resolved promise
454
- Promise.resolve = ResolvedPromise;
455
- function ResolvedPromise(value) { return Promise(function (resolve) { resolve(value); }); }
456
-
457
- // Creates a rejected promise
458
- Promise.reject = function (reason) { return Promise(function (resolve, reject) { reject(reason); }); };
459
-
460
- // Transforms an array of promises into a promise for an array
461
- Promise.all = function (promises) {
462
- return Promise(function (resolve, reject, count, values) {
463
- // Array of collected values
464
- values = [];
465
- // Resolve immediately if there are no promises
466
- count = promises.length || resolve(values);
467
- // Transform all elements (`map` is shorter than `forEach`)
468
- promises.map(function (promise, index) {
469
- ResolvedPromise(promise).then(
470
- // Store the value and resolve if it was the last
471
- function (value) {
472
- values[index] = value;
473
- count = count -1;
474
- if(!count) resolve(values);
475
- },
476
- // Reject if one element fails
477
- reject);
478
- });
479
- });
480
- };
481
-
482
- return Promise;
483
- })('f', 'o');
484
- })(this);
485
-
486
396
  (function($, UI) {
487
397
 
488
398
  "use strict";
@@ -610,7 +520,7 @@
610
520
 
611
521
  "use strict";
612
522
 
613
- var win = $(window), event = 'resize orientationchange', stacks = [];
523
+ var stacks = [];
614
524
 
615
525
  UI.component('stackMargin', {
616
526
 
@@ -626,24 +536,29 @@
626
536
 
627
537
  if (!this.columns.length) return;
628
538
 
629
- win.on(event, (function() {
539
+ UI.$win.on('resize orientationchange', (function() {
540
+
630
541
  var fn = function() {
631
542
  $this.process();
632
543
  };
633
544
 
634
545
  $(function() {
635
546
  fn();
636
- win.on("load", fn);
547
+ UI.$win.on("load", fn);
637
548
  });
638
549
 
639
- return UI.Utils.debounce(fn, 150);
550
+ return UI.Utils.debounce(fn, 50);
640
551
  })());
641
552
 
642
- $(document).on("uk-domready", function(e) {
553
+ UI.$doc.on("uk.dom.changed", function(e) {
643
554
  $this.columns = $this.element.children();
644
555
  $this.process();
645
556
  });
646
557
 
558
+ this.on("uk-check-display", function(e) {
559
+ if(this.element.is(":visible")) this.process();
560
+ }.bind(this));
561
+
647
562
  stacks.push(this);
648
563
  },
649
564
 
@@ -686,8 +601,9 @@
686
601
  });
687
602
 
688
603
  // init code
689
- $(document).on("uk-domready", function(e) {
690
- $("[data-uk-margin]").each(function() {
604
+ UI.ready(function(context) {
605
+
606
+ $("[data-uk-margin]", context).each(function() {
691
607
  var ele = $(this), obj;
692
608
 
693
609
  if (!ele.data("stackMargin")) {
@@ -696,13 +612,6 @@
696
612
  });
697
613
  });
698
614
 
699
-
700
- $(document).on("uk-check-display", function(e) {
701
- stacks.forEach(function(item) {
702
- if(item.element.is(":visible")) item.process();
703
- });
704
- });
705
-
706
615
  })(jQuery, jQuery.UIkit);
707
616
 
708
617
  // Based on Zeptos touch.js
@@ -912,7 +821,7 @@
912
821
  });
913
822
 
914
823
  // init code
915
- $(document).on("click.alert.uikit", "[data-uk-alert]", function(e) {
824
+ UI.$doc.on("click.alert.uikit", "[data-uk-alert]", function(e) {
916
825
 
917
826
  var ele = $(this);
918
827
 
@@ -954,7 +863,7 @@
954
863
  },
955
864
 
956
865
  getSelected: function() {
957
- this.find(".uk-active");
866
+ return this.find(".uk-active");
958
867
  }
959
868
  });
960
869
 
@@ -978,7 +887,7 @@
978
887
  },
979
888
 
980
889
  getSelected: function() {
981
- this.find(".uk-active");
890
+ return this.find(".uk-active");
982
891
  }
983
892
  });
984
893
 
@@ -1008,7 +917,7 @@
1008
917
 
1009
918
 
1010
919
  // init code
1011
- $(document).on("click.buttonradio.uikit", "[data-uk-button-radio]", function(e) {
920
+ UI.$doc.on("click.buttonradio.uikit", "[data-uk-button-radio]", function(e) {
1012
921
  var ele = $(this);
1013
922
 
1014
923
  if (!ele.data("buttonRadio")) {
@@ -1020,7 +929,7 @@
1020
929
  }
1021
930
  });
1022
931
 
1023
- $(document).on("click.buttoncheckbox.uikit", "[data-uk-button-checkbox]", function(e) {
932
+ UI.$doc.on("click.buttoncheckbox.uikit", "[data-uk-button-checkbox]", function(e) {
1024
933
  var ele = $(this);
1025
934
 
1026
935
  if (!ele.data("buttonCheckbox")) {
@@ -1033,7 +942,7 @@
1033
942
  }
1034
943
  });
1035
944
 
1036
- $(document).on("click.button.uikit", "[data-uk-button]", function(e) {
945
+ UI.$doc.on("click.button.uikit", "[data-uk-button]", function(e) {
1037
946
  var ele = $(this);
1038
947
 
1039
948
  if (!ele.data("button")) {
@@ -1057,7 +966,7 @@
1057
966
  'mode' : 'hover',
1058
967
  'remaintime' : 800,
1059
968
  'justify' : false,
1060
- 'boundary' : $(window),
969
+ 'boundary' : UI.$win,
1061
970
  'delay' : 0
1062
971
  },
1063
972
 
@@ -1076,7 +985,7 @@
1076
985
  this.flipped = this.dropdown.hasClass('uk-dropdown-flip');
1077
986
 
1078
987
  if(!this.boundary.length) {
1079
- this.boundary = $(window);
988
+ this.boundary = UI.$win;
1080
989
  }
1081
990
 
1082
991
  if (this.options.mode == "click" || UI.support.touch) {
@@ -1166,6 +1075,8 @@
1166
1075
  this.checkDimensions();
1167
1076
  this.element.addClass("uk-open");
1168
1077
  this.trigger('uk.dropdown.show', [this]);
1078
+
1079
+ UI.Utils.checkDisplay(this.dropdown);
1169
1080
  active = this.element;
1170
1081
 
1171
1082
  this.registerOuterClick();
@@ -1175,10 +1086,10 @@
1175
1086
 
1176
1087
  var $this = this;
1177
1088
 
1178
- $(document).off("click.outer.dropdown");
1089
+ UI.$doc.off("click.outer.dropdown");
1179
1090
 
1180
1091
  setTimeout(function() {
1181
- $(document).on("click.outer.dropdown", function(e) {
1092
+ UI.$doc.on("click.outer.dropdown", function(e) {
1182
1093
 
1183
1094
  if (hoverIdle) {
1184
1095
  clearTimeout(hoverIdle);
@@ -1188,7 +1099,7 @@
1188
1099
 
1189
1100
  if (active && active[0] == $this.element[0] && ($target.is("a:not(.js-uk-prevent)") || $target.is(".uk-dropdown-close") || !$this.dropdown.find(e.target).length)) {
1190
1101
  active.removeClass("uk-open");
1191
- $(document).off("click.outer.dropdown");
1102
+ UI.$doc.off("click.outer.dropdown");
1192
1103
  }
1193
1104
  });
1194
1105
  }, 10);
@@ -1279,7 +1190,7 @@
1279
1190
  var triggerevent = UI.support.touch ? "click" : "mouseenter";
1280
1191
 
1281
1192
  // init code
1282
- $(document).on(triggerevent+".dropdown.uikit", "[data-uk-dropdown]", function(e) {
1193
+ UI.$doc.on(triggerevent+".dropdown.uikit", "[data-uk-dropdown]", function(e) {
1283
1194
  var ele = $(this);
1284
1195
 
1285
1196
  if (!ele.data("dropdown")) {
@@ -1302,7 +1213,7 @@
1302
1213
 
1303
1214
  "use strict";
1304
1215
 
1305
- var win = $(window), event = 'resize orientationchange', grids = [];
1216
+ var grids = [];
1306
1217
 
1307
1218
  UI.component('gridMatchHeight', {
1308
1219
 
@@ -1320,25 +1231,30 @@
1320
1231
 
1321
1232
  if (!this.columns.length) return;
1322
1233
 
1323
- win.on(event, (function() {
1234
+ UI.$win.on('resize orientationchange', (function() {
1235
+
1324
1236
  var fn = function() {
1325
1237
  $this.match();
1326
1238
  };
1327
1239
 
1328
1240
  $(function() {
1329
1241
  fn();
1330
- win.on("load", fn);
1242
+ UI.$win.on("load", fn);
1331
1243
  });
1332
1244
 
1333
- return UI.Utils.debounce(fn, 150);
1245
+ return UI.Utils.debounce(fn, 50);
1334
1246
  })());
1335
1247
 
1336
- $(document).on("uk-domready", function(e) {
1248
+ UI.$doc.on("uk.dom.changed", function(e) {
1337
1249
  $this.columns = $this.element.children();
1338
1250
  $this.elements = $this.options.target ? $this.find($this.options.target) : $this.columns;
1339
1251
  $this.match();
1340
1252
  });
1341
1253
 
1254
+ this.on("uk-check-display", function(e) {
1255
+ if(this.element.is(":visible")) this.match();
1256
+ }.bind(this));
1257
+
1342
1258
  grids.push(this);
1343
1259
  },
1344
1260
 
@@ -1431,8 +1347,9 @@
1431
1347
 
1432
1348
 
1433
1349
  // init code
1434
- $(document).on("uk-domready", function(e) {
1435
- $("[data-uk-grid-match],[data-uk-grid-margin]").each(function() {
1350
+ UI.ready(function(context) {
1351
+
1352
+ $("[data-uk-grid-match],[data-uk-grid-margin]", context).each(function() {
1436
1353
  var grid = $(this), obj;
1437
1354
 
1438
1355
  if (grid.is("[data-uk-grid-match]") && !grid.data("gridMatchHeight")) {
@@ -1445,15 +1362,9 @@
1445
1362
  });
1446
1363
  });
1447
1364
 
1448
- $(document).on("uk-check-display", function(e) {
1449
- grids.forEach(function(item) {
1450
- if(item.element.is(":visible")) item.match();
1451
- });
1452
- });
1453
-
1454
1365
  })(jQuery, jQuery.UIkit);
1455
1366
 
1456
- (function($, UI, $win) {
1367
+ (function($, UI) {
1457
1368
 
1458
1369
  "use strict";
1459
1370
 
@@ -1490,9 +1401,7 @@
1490
1401
  if (target[0] == $this.element[0] && $this.options.bgclose) {
1491
1402
  $this.hide();
1492
1403
  }
1493
-
1494
1404
  });
1495
-
1496
1405
  },
1497
1406
 
1498
1407
  toggle: function() {
@@ -1514,7 +1423,7 @@
1514
1423
 
1515
1424
  this.element.addClass("uk-open").trigger("uk.modal.show");
1516
1425
 
1517
- $(document).trigger("uk-check-display");
1426
+ UI.Utils.checkDisplay(this.dialog);
1518
1427
 
1519
1428
  return this;
1520
1429
  },
@@ -1662,7 +1571,7 @@
1662
1571
  };
1663
1572
 
1664
1573
  // init code
1665
- $(document).on("click.modal.uikit", "[data-uk-modal]", function(e) {
1574
+ UI.$doc.on("click.modal.uikit", "[data-uk-modal]", function(e) {
1666
1575
 
1667
1576
  var ele = $(this);
1668
1577
 
@@ -1678,7 +1587,7 @@
1678
1587
  });
1679
1588
 
1680
1589
  // close modal on esc button
1681
- $(document).on('keydown.modal.uikit', function (e) {
1590
+ UI.$doc.on('keydown.modal.uikit', function (e) {
1682
1591
 
1683
1592
  if (active && e.keyCode === 27 && active.options.keyboard) { // ESC
1684
1593
  e.preventDefault();
@@ -1686,7 +1595,7 @@
1686
1595
  }
1687
1596
  });
1688
1597
 
1689
- $win.on("resize orientationchange", UI.Utils.debounce(function(){
1598
+ UI.$win.on("resize orientationchange", UI.Utils.debounce(function(){
1690
1599
  if(active) active.resize();
1691
1600
  }, 150));
1692
1601
 
@@ -1718,15 +1627,15 @@
1718
1627
  return modal;
1719
1628
  }
1720
1629
 
1721
- })(jQuery, jQuery.UIkit, jQuery(window));
1630
+ })(jQuery, jQuery.UIkit);
1722
1631
 
1723
1632
  (function($, UI) {
1724
1633
 
1725
1634
  "use strict";
1726
1635
 
1727
1636
  var scrollpos = {x: window.scrollX, y: window.scrollY},
1728
- $win = $(window),
1729
- $doc = $(document),
1637
+ $win = UI.$win,
1638
+ $doc = UI.$doc,
1730
1639
  $html = $('html'),
1731
1640
  Offcanvas = {
1732
1641
 
@@ -1743,7 +1652,7 @@
1743
1652
  flip = bar.hasClass("uk-offcanvas-bar-flip") ? -1:1,
1744
1653
  dir = flip * (rtl ? -1 : 1);
1745
1654
 
1746
- scrollpos = {x: window.scrollX, y: window.scrollY};
1655
+ scrollpos = {x: window.pageXOffset, y: window.pageYOffset};
1747
1656
 
1748
1657
  element.addClass("uk-active");
1749
1658
 
@@ -1775,6 +1684,8 @@
1775
1684
  Offcanvas.hide();
1776
1685
  }
1777
1686
  });
1687
+
1688
+ $doc.trigger('uk.offcanvas.show', [element, bar]);
1778
1689
  },
1779
1690
 
1780
1691
  hide: function(force) {
@@ -1782,17 +1693,22 @@
1782
1693
  var $body = $('body'),
1783
1694
  panel = $(".uk-offcanvas.uk-active"),
1784
1695
  rtl = ($.UIkit.langdirection == "right"),
1785
- bar = panel.find(".uk-offcanvas-bar:first");
1696
+ bar = panel.find(".uk-offcanvas-bar:first"),
1697
+ finalize = function() {
1698
+ $body.removeClass("uk-offcanvas-page").css({"width": "", "height": "", "margin-left": "", "margin-right": ""});
1699
+ panel.removeClass("uk-active");
1700
+ bar.removeClass("uk-offcanvas-bar-show");
1701
+ $html.css('margin-top', '');
1702
+ window.scrollTo(scrollpos.x, scrollpos.y);
1703
+ $doc.trigger('uk.offcanvas.hide', [panel, bar]);
1704
+ };
1786
1705
 
1787
1706
  if (!panel.length) return;
1788
1707
 
1789
1708
  if ($.UIkit.support.transition && !force) {
1790
1709
 
1791
1710
  $body.one($.UIkit.support.transition.end, function() {
1792
- $body.removeClass("uk-offcanvas-page").css({"width": "", "height": ""});
1793
- panel.removeClass("uk-active");
1794
- $html.css('margin-top', '');
1795
- window.scrollTo(scrollpos.x, scrollpos.y);
1711
+ finalize();
1796
1712
  }).css((rtl ? "margin-right" : "margin-left"), "");
1797
1713
 
1798
1714
  setTimeout(function(){
@@ -1800,11 +1716,7 @@
1800
1716
  }, 0);
1801
1717
 
1802
1718
  } else {
1803
- $body.removeClass("uk-offcanvas-page").css({"width": "", "height": ""});
1804
- panel.removeClass("uk-active");
1805
- bar.removeClass("uk-offcanvas-bar-show");
1806
- $html.css('margin-top', '');
1807
- window.scrollTo(scrollpos.x, scrollpos.y);
1719
+ finalize();
1808
1720
  }
1809
1721
 
1810
1722
  panel.off(".ukoffcanvas");
@@ -1934,8 +1846,9 @@
1934
1846
  }
1935
1847
 
1936
1848
  // init code
1937
- $(document).on("uk-domready", function(e) {
1938
- $("[data-uk-nav]").each(function() {
1849
+ UI.ready(function(context) {
1850
+
1851
+ $("[data-uk-nav]", context).each(function() {
1939
1852
  var nav = $(this);
1940
1853
 
1941
1854
  if (!nav.data("nav")) {
@@ -1951,7 +1864,7 @@
1951
1864
  "use strict";
1952
1865
 
1953
1866
  var $tooltip, // tooltip container
1954
- tooltipdelay;
1867
+ tooltipdelay, checkdelay;
1955
1868
 
1956
1869
  UI.component('tooltip', {
1957
1870
 
@@ -1960,6 +1873,7 @@
1960
1873
  "pos": "top",
1961
1874
  "animation": false,
1962
1875
  "delay": 0, // in miliseconds
1876
+ "cls": "",
1963
1877
  "src": function() { return this.attr("title"); }
1964
1878
  },
1965
1879
 
@@ -1989,13 +1903,13 @@
1989
1903
  show: function() {
1990
1904
 
1991
1905
  if (tooltipdelay) clearTimeout(tooltipdelay);
1906
+ if (checkdelay) clearTimeout(checkdelay);
1992
1907
  if (!this.tip.length) return;
1993
1908
 
1994
1909
  $tooltip.stop().css({"top": -2000, "visibility": "hidden"}).show();
1995
1910
  $tooltip.html('<div class="uk-tooltip-inner">' + this.tip + '</div>');
1996
1911
 
1997
1912
  var $this = this,
1998
- bodyoffset = $('body').offset(),
1999
1913
  pos = $.extend({}, this.element.offset(), {width: this.element[0].offsetWidth, height: this.element[0].offsetHeight}),
2000
1914
  width = $tooltip[0].offsetWidth,
2001
1915
  height = $tooltip[0].offsetHeight,
@@ -2003,16 +1917,24 @@
2003
1917
  position = typeof(this.options.pos) === "function" ? this.options.pos.call(this.element) : this.options.pos,
2004
1918
  tmppos = position.split("-"),
2005
1919
  tcss = {
2006
- "display": "none",
2007
- "visibility": "visible",
2008
- "top": (pos.top + pos.height + height),
2009
- "left": pos.left
1920
+ "display" : "none",
1921
+ "visibility" : "visible",
1922
+ "top" : (pos.top + pos.height + height),
1923
+ "left" : pos.left
2010
1924
  };
2011
1925
 
1926
+
2012
1927
  // prevent strange position
2013
1928
  // when tooltip is in offcanvas etc.
2014
- pos.left -= bodyoffset.left;
2015
- pos.top -= bodyoffset.top;
1929
+ if ($('html').css('position')=='fixed' || $('body').css('position')=='fixed'){
1930
+ var bodyoffset = $('body').offset(),
1931
+ htmloffset = $('html').offset(),
1932
+ docoffset = {'top': (htmloffset.top + bodyoffset.top), 'left': (htmloffset.left + bodyoffset.left)};
1933
+
1934
+ pos.left -= docoffset.left;
1935
+ pos.top -= docoffset.top;
1936
+ }
1937
+
2016
1938
 
2017
1939
  if ((tmppos[0] == "left" || tmppos[0] == "right") && $.UIkit.langdirection == 'right') {
2018
1940
  tmppos[0] = tmppos[0] == "left" ? "right" : "left";
@@ -2076,7 +1998,7 @@
2076
1998
 
2077
1999
  tooltipdelay = setTimeout(function(){
2078
2000
 
2079
- $tooltip.css(tcss).attr("class", "uk-tooltip uk-tooltip-" + position);
2001
+ $tooltip.css(tcss).attr("class", ["uk-tooltip", "uk-tooltip-"+position, $this.options.cls].join(' '));
2080
2002
 
2081
2003
  if ($this.options.animation) {
2082
2004
  $tooltip.css({opacity: 0, display: 'block'}).animate({opacity: 1}, parseInt($this.options.animation, 10) || 400);
@@ -2085,6 +2007,12 @@
2085
2007
  }
2086
2008
 
2087
2009
  tooltipdelay = false;
2010
+
2011
+ // close tooltip if element was removed or hidden
2012
+ checkdelay = setInterval(function(){
2013
+ if(!$this.element.is(':visible')) $this.hide();
2014
+ }, 150);
2015
+
2088
2016
  }, parseInt(this.options.delay, 10) || 0);
2089
2017
  },
2090
2018
 
@@ -2092,6 +2020,7 @@
2092
2020
  if(this.element.is("input") && this.element[0]===document.activeElement) return;
2093
2021
 
2094
2022
  if(tooltipdelay) clearTimeout(tooltipdelay);
2023
+ if (checkdelay) clearTimeout(checkdelay);
2095
2024
 
2096
2025
  $tooltip.stop();
2097
2026
 
@@ -2124,7 +2053,7 @@
2124
2053
 
2125
2054
 
2126
2055
  // init code
2127
- $(document).on("mouseenter.tooltip.uikit focus.tooltip.uikit", "[data-uk-tooltip]", function(e) {
2056
+ UI.$doc.on("mouseenter.tooltip.uikit focus.tooltip.uikit", "[data-uk-tooltip]", function(e) {
2128
2057
  var ele = $(this);
2129
2058
 
2130
2059
  if (!ele.data("tooltip")) {
@@ -2160,6 +2089,28 @@
2160
2089
 
2161
2090
  this.connect = $(this.options.connect).find(".uk-active").removeClass(".uk-active").end();
2162
2091
 
2092
+ // delegate switch commands within container content
2093
+ if (this.connect.length) {
2094
+
2095
+ this.connect.on("click", '[data-uk-switcher-item]', function(e) {
2096
+
2097
+ e.preventDefault();
2098
+
2099
+ var item = $(this).data('ukSwitcherItem');
2100
+
2101
+ if ($this.index == item) return;
2102
+
2103
+ switch(item) {
2104
+ case 'next':
2105
+ case 'previous':
2106
+ $this.show($this.index + (item=='next' ? 1:-1));
2107
+ break;
2108
+ default:
2109
+ $this.show(item);
2110
+ }
2111
+ });
2112
+ }
2113
+
2163
2114
  var toggles = this.find(this.options.toggle),
2164
2115
  active = toggles.filter(".uk-active");
2165
2116
 
@@ -2177,7 +2128,7 @@
2177
2128
 
2178
2129
  tab = isNaN(tab) ? $(tab) : this.find(this.options.toggle).eq(tab);
2179
2130
 
2180
- var active = tab;
2131
+ var $this = this, active = tab;
2181
2132
 
2182
2133
  if (active.hasClass("uk-disabled")) return;
2183
2134
 
@@ -2186,20 +2137,27 @@
2186
2137
 
2187
2138
  if (this.options.connect && this.connect.length) {
2188
2139
 
2189
- var index = this.find(this.options.toggle).index(active);
2140
+ this.index = this.find(this.options.toggle).index(active);
2141
+
2142
+ if (this.index == -1 ) {
2143
+ this.index = 0;
2144
+ }
2190
2145
 
2191
- this.connect.children().removeClass("uk-active").eq(index).addClass("uk-active");
2146
+ this.connect.each(function() {
2147
+ $(this).children().removeClass("uk-active").eq($this.index).addClass("uk-active");
2148
+ UI.Utils.checkDisplay(this);
2149
+ });
2192
2150
  }
2193
2151
 
2194
2152
  this.trigger("uk.switcher.show", [active]);
2195
- $(document).trigger("uk-check-display");
2196
2153
  }
2197
2154
  });
2198
2155
 
2199
2156
 
2200
2157
  // init code
2201
- $(document).on("uk-domready", function(e) {
2202
- $("[data-uk-switcher]").each(function() {
2158
+ UI.ready(function(context) {
2159
+
2160
+ $("[data-uk-switcher]", context).each(function() {
2203
2161
  var switcher = $(this);
2204
2162
 
2205
2163
  if (!switcher.data("switcher")) {
@@ -2218,8 +2176,9 @@
2218
2176
  UI.component('tab', {
2219
2177
 
2220
2178
  defaults: {
2221
- connect: false,
2222
- active: 0
2179
+ 'target' : '>li:not(.uk-tab-responsive, .uk-disabled)',
2180
+ 'connect' : false,
2181
+ 'active' : 0
2223
2182
  },
2224
2183
 
2225
2184
  init: function() {
@@ -2229,60 +2188,105 @@
2229
2188
  this.on("click", this.options.target, function(e) {
2230
2189
  e.preventDefault();
2231
2190
  $this.find($this.options.target).not(this).removeClass("uk-active").blur();
2232
- $this.trigger("change", [$(this).addClass("uk-active")]);
2191
+ $this.trigger("uk.tab.change", [$(this).addClass("uk-active")]);
2233
2192
  });
2234
2193
 
2235
-
2236
2194
  if (this.options.connect) {
2237
2195
  this.connect = $(this.options.connect);
2238
2196
  }
2239
2197
 
2240
- if (location.hash && location.hash.match(/^#[a-z0-9_-]+$/)) {
2241
- var active = this.element.children().filter(window.location.hash);
2198
+ // init responsive tab
2199
+ this.responsivetab = $('<li class="uk-tab-responsive uk-active"><a></a></li>').append('<div class="uk-dropdown uk-dropdown-small"><ul class="uk-nav uk-nav-dropdown"></ul><div>');
2242
2200
 
2243
- if (active.length) {
2244
- this.element.children().removeClass('uk-active').filter(active).addClass("uk-active");
2245
- }
2246
- }
2201
+ this.responsivetab.dropdown = this.responsivetab.find('.uk-dropdown');
2202
+ this.responsivetab.lst = this.responsivetab.dropdown.find('ul');
2203
+ this.responsivetab.caption = this.responsivetab.find('a:first');
2247
2204
 
2248
- var mobiletab = $('<li class="uk-tab-responsive uk-active"><a href="javascript:void(0);"></a></li>'),
2249
- caption = mobiletab.find("a:first"),
2250
- dropdown = $('<div class="uk-dropdown uk-dropdown-small"><ul class="uk-nav uk-nav-dropdown"></ul><div>'),
2251
- ul = dropdown.find("ul");
2205
+ if (this.element.hasClass("uk-tab-bottom")) this.responsivetab.dropdown.addClass("uk-dropdown-up");
2252
2206
 
2253
- caption.html(this.find("li.uk-active:first").find("a").text());
2207
+ // handle click
2208
+ this.responsivetab.lst.on('click', 'a', function(e) {
2254
2209
 
2255
- if (this.element.hasClass("uk-tab-bottom")) dropdown.addClass("uk-dropdown-up");
2256
- if (this.element.hasClass("uk-tab-flip")) dropdown.addClass("uk-dropdown-flip");
2210
+ e.preventDefault();
2211
+ e.stopPropagation();
2257
2212
 
2258
- this.find("a").each(function(i) {
2213
+ var link = $(this);
2259
2214
 
2260
- var tab = $(this).parent(),
2261
- item = $('<li><a href="javascript:void(0);">' + tab.text() + '</a></li>').on("click", function(e) {
2262
- $this.element.data("switcher").show(i);
2263
- });
2215
+ $this.element.children(':not(.uk-tab-responsive)').eq(link.data('index')).trigger('click');
2216
+ });
2264
2217
 
2265
- if (!$(this).parents(".uk-disabled:first").length) ul.append(item);
2218
+ this.on('uk.switcher.show uk.tab.change', function(e, tab) {
2219
+ $this.responsivetab.caption.html(tab.text());
2266
2220
  });
2267
2221
 
2268
- this.element.uk("switcher", {"toggle": ">li:not(.uk-tab-responsive)", "connect": this.options.connect, "active": this.options.active});
2222
+ this.element.append(this.responsivetab);
2269
2223
 
2270
- mobiletab.append(dropdown).uk("dropdown", {"mode": "click"});
2224
+ // init UIkit components
2225
+ if (this.options.connect) {
2226
+ UI.switcher(this.element, {"toggle": ">li:not(.uk-tab-responsive)", "connect": this.options.connect, "active": this.options.active});
2227
+ }
2228
+
2229
+ UI.dropdown(this.responsivetab, {"mode": "click"});
2230
+
2231
+ // init
2232
+ $this.trigger("uk.tab.change", [this.element.find(this.options.target).filter('.uk-active')]);
2233
+
2234
+ this.check();
2235
+
2236
+ UI.$win.on('resize orientationchange', UI.Utils.debounce(function(){
2237
+ $this.check();
2238
+ }, 100));
2239
+ },
2240
+
2241
+ check: function() {
2242
+
2243
+ var children = this.element.children(':not(.uk-tab-responsive)').removeClass('uk-hidden');
2244
+
2245
+ if (children.length < 2) return;
2271
2246
 
2272
- this.element.append(mobiletab).data({
2273
- "dropdown": mobiletab.data("dropdown"),
2274
- "mobilecaption": caption
2275
- }).on("uk.switcher.show", function(e, tab) {
2276
- mobiletab.addClass("uk-active");
2277
- caption.html(tab.find("a").text());
2247
+ var top = (children.eq(0).offset().top + Math.ceil(children.eq(0).height()/2)),
2248
+ added = 0,
2249
+ doresponsive = false,
2250
+ item, link;
2251
+
2252
+ this.responsivetab.lst.empty();
2253
+
2254
+ children.each(function(){
2255
+
2256
+ item = $(this);
2257
+
2258
+ if (item.offset().top > top || (added && this.responsivetab.offset().top > top)) {
2259
+ doresponsive = true;
2260
+ }
2278
2261
  });
2279
2262
 
2263
+ if (doresponsive) {
2264
+
2265
+ for (var i = 0; i < children.length; i++) {
2266
+
2267
+ item = children.eq(i);
2268
+ link = item.find('a');
2269
+
2270
+ if (item.css('float') != 'none' && !item.attr('uk-dropdown')) {
2271
+
2272
+ item.addClass('uk-hidden');
2273
+
2274
+ if (!item.hasClass('uk-disabled')) {
2275
+ this.responsivetab.lst.append('<li><a href="'+link.attr('href')+'" data-index="'+i+'">'+link.html()+'</a></li>');
2276
+ }
2277
+ }
2278
+ }
2279
+ }
2280
+
2281
+ this.responsivetab[this.responsivetab.lst.children().length ? 'removeClass':'addClass']('uk-hidden');
2280
2282
  }
2281
2283
  });
2282
2284
 
2283
- $(document).on("uk-domready", function(e) {
2285
+ // init code
2286
+ UI.ready(function(context) {
2287
+
2288
+ $("[data-uk-tab]", context).each(function() {
2284
2289
 
2285
- $("[data-uk-tab]").each(function() {
2286
2290
  var tab = $(this);
2287
2291
 
2288
2292
  if (!tab.data("tab")) {
@@ -2297,8 +2301,8 @@
2297
2301
 
2298
2302
  "use strict";
2299
2303
 
2300
- var $win = $(window),
2301
- $doc = $(document),
2304
+ var $win = UI.$win,
2305
+ $doc = UI.$doc,
2302
2306
  scrollspies = [],
2303
2307
  checkScrollSpy = function() {
2304
2308
  for(var i=0; i < scrollspies.length; i++) {
@@ -2444,8 +2448,9 @@
2444
2448
  $win.on("resize orientationchange", UI.Utils.debounce(fnCheck, 50));
2445
2449
 
2446
2450
  // init code
2447
- $doc.on("uk-domready", function(e) {
2448
- $("[data-uk-scrollspy]").each(function() {
2451
+ UI.ready(function(context) {
2452
+
2453
+ $("[data-uk-scrollspy]", context).each(function() {
2449
2454
 
2450
2455
  var element = $(this);
2451
2456
 
@@ -2454,7 +2459,7 @@
2454
2459
  }
2455
2460
  });
2456
2461
 
2457
- $("[data-uk-scrollspy-nav]").each(function() {
2462
+ $("[data-uk-scrollspy-nav]", context).each(function() {
2458
2463
 
2459
2464
  var element = $(this);
2460
2465
 
@@ -2488,8 +2493,8 @@
2488
2493
  // get / set parameters
2489
2494
  var ele = ($(this.hash).length ? $(this.hash) : $("body")),
2490
2495
  target = ele.offset().top - $this.options.offset,
2491
- docheight = $(document).height(),
2492
- winheight = $(window).height(),
2496
+ docheight = UI.$doc.height(),
2497
+ winheight = UI.$win.height(),
2493
2498
  eleheight = ele.outerHeight();
2494
2499
 
2495
2500
  if ((target + winheight) > docheight) {
@@ -2511,7 +2516,7 @@
2511
2516
  }
2512
2517
 
2513
2518
  // init code
2514
- $(document).on("click.smooth-scroll.uikit", "[data-uk-smooth-scroll]", function(e) {
2519
+ UI.$doc.on("click.smooth-scroll.uikit", "[data-uk-smooth-scroll]", function(e) {
2515
2520
  var ele = $(this);
2516
2521
 
2517
2522
  if (!ele.data("smoothScroll")) {
@@ -2527,6 +2532,7 @@
2527
2532
 
2528
2533
  (function(global, $, UI){
2529
2534
 
2535
+ var togglers = [];
2530
2536
 
2531
2537
  UI.component('toggle', {
2532
2538
 
@@ -2539,12 +2545,14 @@
2539
2545
 
2540
2546
  var $this = this;
2541
2547
 
2542
- this.totoggle = this.options.target ? $(this.options.target):[];
2548
+ this.getTogglers();
2543
2549
 
2544
2550
  this.on("click", function(e) {
2545
2551
  if ($this.element.is('a[href="#"]')) e.preventDefault();
2546
2552
  $this.toggle();
2547
2553
  });
2554
+
2555
+ togglers.push(this);
2548
2556
  },
2549
2557
 
2550
2558
  toggle: function() {
@@ -2553,21 +2561,34 @@
2553
2561
 
2554
2562
  this.totoggle.toggleClass(this.options.cls);
2555
2563
 
2556
- if(this.options.cls == 'uk-hidden') {
2557
- $(document).trigger("uk-check-display");
2564
+ if (this.options.cls == 'uk-hidden') {
2565
+ UI.Utils.checkDisplay(this.totoggle);
2558
2566
  }
2567
+ },
2568
+
2569
+ getTogglers: function() {
2570
+ this.totoggle = this.options.target ? $(this.options.target):[];
2559
2571
  }
2560
2572
  });
2561
2573
 
2562
- $(document).on("uk-domready", function(e) {
2574
+ // init code
2575
+ UI.ready(function(context) {
2563
2576
 
2564
- $("[data-uk-toggle]").each(function() {
2577
+ $("[data-uk-toggle]", context).each(function() {
2565
2578
  var ele = $(this);
2566
2579
 
2567
2580
  if (!ele.data("toggle")) {
2568
2581
  var obj = UI.toggle(ele, UI.Utils.options(ele.attr("data-uk-toggle")));
2569
2582
  }
2570
2583
  });
2584
+
2585
+ setTimeout(function(){
2586
+
2587
+ togglers.forEach(function(toggler){
2588
+ toggler.getTogglers();
2589
+ });
2590
+
2591
+ }, 0);
2571
2592
  });
2572
2593
 
2573
2594
  })(this, jQuery, jQuery.UIkit);