foundation-rails 5.2.2.0 → 5.2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/bower.json +2 -2
  3. data/lib/foundation/rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/foundation/foundation.abide.js +5 -5
  5. data/vendor/assets/javascripts/foundation/foundation.accordion.js +13 -8
  6. data/vendor/assets/javascripts/foundation/foundation.alert.js +2 -2
  7. data/vendor/assets/javascripts/foundation/foundation.clearing.js +36 -33
  8. data/vendor/assets/javascripts/foundation/foundation.dropdown.js +15 -10
  9. data/vendor/assets/javascripts/foundation/foundation.equalizer.js +12 -6
  10. data/vendor/assets/javascripts/foundation/foundation.interchange.js +3 -3
  11. data/vendor/assets/javascripts/foundation/foundation.joyride.js +9 -15
  12. data/vendor/assets/javascripts/foundation/foundation.js +30 -28
  13. data/vendor/assets/javascripts/foundation/foundation.magellan.js +36 -31
  14. data/vendor/assets/javascripts/foundation/foundation.offcanvas.js +72 -14
  15. data/vendor/assets/javascripts/foundation/foundation.orbit.js +19 -15
  16. data/vendor/assets/javascripts/foundation/foundation.reveal.js +26 -16
  17. data/vendor/assets/javascripts/foundation/foundation.slider.js +2 -3
  18. data/vendor/assets/javascripts/foundation/foundation.tab.js +8 -9
  19. data/vendor/assets/javascripts/foundation/foundation.tooltip.js +30 -4
  20. data/vendor/assets/javascripts/foundation/foundation.topbar.js +22 -19
  21. data/vendor/assets/stylesheets/foundation/_settings.scss +50 -40
  22. data/vendor/assets/stylesheets/foundation/components/_accordion.scss +8 -7
  23. data/vendor/assets/stylesheets/foundation/components/_alert-boxes.scss +2 -2
  24. data/vendor/assets/stylesheets/foundation/components/_block-grid.scss +1 -1
  25. data/vendor/assets/stylesheets/foundation/components/_button-groups.scss +1 -1
  26. data/vendor/assets/stylesheets/foundation/components/_buttons.scss +8 -8
  27. data/vendor/assets/stylesheets/foundation/components/_dropdown-buttons.scss +6 -6
  28. data/vendor/assets/stylesheets/foundation/components/_forms.scss +7 -5
  29. data/vendor/assets/stylesheets/foundation/components/_global.scss +67 -3
  30. data/vendor/assets/stylesheets/foundation/components/_grid.scss +1 -2
  31. data/vendor/assets/stylesheets/foundation/components/_inline-lists.scss +2 -1
  32. data/vendor/assets/stylesheets/foundation/components/_joyride.scss +3 -3
  33. data/vendor/assets/stylesheets/foundation/components/_labels.scss +1 -1
  34. data/vendor/assets/stylesheets/foundation/components/_offcanvas.scss +32 -58
  35. data/vendor/assets/stylesheets/foundation/components/_orbit.scss +39 -31
  36. data/vendor/assets/stylesheets/foundation/components/_pagination.scss +5 -5
  37. data/vendor/assets/stylesheets/foundation/components/_panels.scss +4 -5
  38. data/vendor/assets/stylesheets/foundation/components/_pricing-tables.scss +5 -5
  39. data/vendor/assets/stylesheets/foundation/components/_progress-bars.scss +2 -2
  40. data/vendor/assets/stylesheets/foundation/components/_reveal.scss +2 -2
  41. data/vendor/assets/stylesheets/foundation/components/_side-nav.scss +26 -4
  42. data/vendor/assets/stylesheets/foundation/components/_split-buttons.scss +7 -7
  43. data/vendor/assets/stylesheets/foundation/components/_sub-nav.scss +2 -2
  44. data/vendor/assets/stylesheets/foundation/components/_switch.scss +2 -2
  45. data/vendor/assets/stylesheets/foundation/components/_tables.scss +44 -12
  46. data/vendor/assets/stylesheets/foundation/components/_tabs.scss +9 -5
  47. data/vendor/assets/stylesheets/foundation/components/_tooltips.scss +4 -4
  48. data/vendor/assets/stylesheets/foundation/components/_top-bar.scss +30 -26
  49. data/vendor/assets/stylesheets/foundation/components/_type.scss +39 -21
  50. data/vendor/assets/stylesheets/foundation/components/_visibility.scss +64 -1
  51. data/vendor/assets/stylesheets/normalize.scss +20 -18
  52. metadata +2 -2
@@ -6,7 +6,7 @@
6
6
  Foundation.libs.joyride = {
7
7
  name : 'joyride',
8
8
 
9
- version : '5.2.2',
9
+ version : '5.2.3',
10
10
 
11
11
  defaults : {
12
12
  expose : false, // turn on or off the expose feature
@@ -105,7 +105,7 @@
105
105
  if (self.is_phone()) {
106
106
  self.pos_phone();
107
107
  } else {
108
- self.pos_default(false, true);
108
+ self.pos_default(false);
109
109
  }
110
110
  }
111
111
  }, 100));
@@ -140,7 +140,7 @@
140
140
  if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) {
141
141
  this.settings.$tip_content.each(function (index) {
142
142
  var $this = $(this);
143
- this.settings = $.extend({}, self.defaults, self.data_options($this))
143
+ this.settings = $.extend({}, self.defaults, self.data_options($this));
144
144
 
145
145
  // Make sure that settings parsed from data_options are integers where necessary
146
146
  var i = int_settings_count;
@@ -302,7 +302,7 @@
302
302
  $timer.animate({
303
303
  width: $timer.parent().width()
304
304
  }, this.settings.timer, 'linear');
305
- }.bind(this), this.settings.tip_animation_fadeSpeed);
305
+ }.bind(this), this.settings.tip_animation_fade_speed);
306
306
 
307
307
  } else {
308
308
  this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed);
@@ -394,7 +394,7 @@
394
394
  tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight());
395
395
 
396
396
  if (tipOffset != 0) {
397
- $('html, body').animate({
397
+ $('html, body').stop().animate({
398
398
  scrollTop: tipOffset
399
399
  }, this.settings.scroll_speed, 'swing');
400
400
  }
@@ -410,10 +410,8 @@
410
410
  this.show('init');
411
411
  },
412
412
 
413
- pos_default : function (init, resizing) {
414
- var half_fold = Math.ceil($(window).height() / 2),
415
- tip_position = this.settings.$next_tip.offset(),
416
- $nub = this.settings.$next_tip.find('.joyride-nub'),
413
+ pos_default : function (init) {
414
+ var $nub = this.settings.$next_tip.find('.joyride-nub'),
417
415
  nub_width = Math.ceil($nub.outerWidth() / 2),
418
416
  nub_height = Math.ceil($nub.outerHeight() / 2),
419
417
  toggle = init || false;
@@ -424,10 +422,6 @@
424
422
  this.settings.$next_tip.show();
425
423
  }
426
424
 
427
- if (typeof resizing === 'undefined') {
428
- resizing = false;
429
- }
430
-
431
425
  if (!/body/i.test(this.settings.$target.selector)) {
432
426
  if (this.bottom()) {
433
427
  if (this.rtl) {
@@ -827,7 +821,7 @@
827
821
  $('.joyride-modal-bg').hide();
828
822
  this.settings.$current_tip.hide();
829
823
 
830
- if (typeof abort === 'undefined') {
824
+ if (typeof abort === 'undefined' || abort === false) {
831
825
  this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip);
832
826
  this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip);
833
827
  }
@@ -846,4 +840,4 @@
846
840
 
847
841
  reflow : function () {}
848
842
  };
849
- }(jQuery, this, this.document));
843
+ }(jQuery, window, window.document));
@@ -15,7 +15,7 @@
15
15
 
16
16
  while (i--) {
17
17
  if(head.has('.' + class_array[i]).length === 0) {
18
- head.append('<meta class="' + class_array[i] + '" />');
18
+ head.append('<meta class="' + class_array[i] + '" />');
19
19
  }
20
20
  }
21
21
  };
@@ -149,7 +149,7 @@
149
149
  bindLoad.call(image);
150
150
  }
151
151
  };
152
-
152
+
153
153
  /*
154
154
  https://github.com/paulirish/matchMedia.js
155
155
  */
@@ -213,14 +213,14 @@
213
213
  for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
214
214
  requestAnimationFrame = window[ vendors[lastTime] + "RequestAnimationFrame" ];
215
215
  cancelAnimationFrame = cancelAnimationFrame ||
216
- window[ vendors[lastTime] + "CancelAnimationFrame" ] ||
216
+ window[ vendors[lastTime] + "CancelAnimationFrame" ] ||
217
217
  window[ vendors[lastTime] + "CancelRequestAnimationFrame" ];
218
218
  }
219
219
 
220
220
  function raf() {
221
221
  if (animating) {
222
222
  requestAnimationFrame(raf);
223
-
223
+
224
224
  if (jqueryFxAvailable) {
225
225
  jQuery.fx.tick();
226
226
  }
@@ -231,7 +231,7 @@
231
231
  // use rAF
232
232
  window.requestAnimationFrame = requestAnimationFrame;
233
233
  window.cancelAnimationFrame = cancelAnimationFrame;
234
-
234
+
235
235
  if (jqueryFxAvailable) {
236
236
  jQuery.fx.timer = function (timer) {
237
237
  if (timer() && jQuery.timers.push(timer) && !animating) {
@@ -276,7 +276,7 @@
276
276
  window.Foundation = {
277
277
  name : 'Foundation',
278
278
 
279
- version : '5.2.2',
279
+ version : '5.2.3',
280
280
 
281
281
  media_queries : {
282
282
  small : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
@@ -366,18 +366,18 @@
366
366
  // Don't bother reading the namespace out of the meta tag
367
367
  // if the namespace has been set globally in javascript
368
368
  //
369
- // Example:
369
+ // Example:
370
370
  // Foundation.global.namespace = 'my-namespace';
371
371
  // or make it an empty string:
372
372
  // Foundation.global.namespace = '';
373
373
  //
374
374
  //
375
375
 
376
- // If the namespace has not been set (is undefined), try to read it out of the meta element.
376
+ // If the namespace has not been set (is undefined), try to read it out of the meta element.
377
377
  // Otherwise use the globally defined namespace, even if it's empty ('')
378
378
  var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
379
-
380
- // Finally, if the namsepace is either undefined or false, set it to an empty string.
379
+
380
+ // Finally, if the namsepace is either undefined or false, set it to an empty string.
381
381
  // Otherwise use the namespace value.
382
382
  this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
383
383
  },
@@ -388,23 +388,23 @@
388
388
  utils : {
389
389
 
390
390
  // Description:
391
- // Fast Selector wrapper returns jQuery object. Only use where getElementById
391
+ // Fast Selector wrapper returns jQuery object. Only use where getElementById
392
392
  // is not available.
393
393
  //
394
394
  // Arguments:
395
- // Selector (String): CSS selector describing the element(s) to be
395
+ // Selector (String): CSS selector describing the element(s) to be
396
396
  // returned as a jQuery object.
397
397
  //
398
- // Scope (String): CSS selector describing the area to be searched. Default
398
+ // Scope (String): CSS selector describing the area to be searched. Default
399
399
  // is document.
400
400
  //
401
401
  // Returns:
402
- // Element (jQuery Object): jQuery object containing elements matching the
402
+ // Element (jQuery Object): jQuery object containing elements matching the
403
403
  // selector within the scope.
404
404
  S : S,
405
405
 
406
406
  // Description:
407
- // Executes a function a max of once every n milliseconds
407
+ // Executes a function a max of once every n milliseconds
408
408
  //
409
409
  // Arguments:
410
410
  // Func (Function): Function to be throttled.
@@ -436,8 +436,8 @@
436
436
  // Func (Function): Function to be debounced.
437
437
  //
438
438
  // Delay (Integer): Function execution threshold in milliseconds.
439
- //
440
- // Immediate (Bool): Whether the function should be called at the beginning
439
+ //
440
+ // Immediate (Bool): Whether the function should be called at the beginning
441
441
  // of the delay instead of the end. Default is false.
442
442
  //
443
443
  // Returns:
@@ -465,18 +465,19 @@
465
465
  // El (jQuery Object): Element to be parsed.
466
466
  //
467
467
  // Returns:
468
- // Options (Javascript Object): Contents of the element's data-options
468
+ // Options (Javascript Object): Contents of the element's data-options
469
469
  // attribute.
470
- data_options : function (el) {
470
+ data_options : function (el, data_attr_name) {
471
+ data_attr_name = data_attr_name || 'options';
471
472
  var opts = {}, ii, p, opts_arr,
472
473
  data_options = function (el) {
473
474
  var namespace = Foundation.global.namespace;
474
475
 
475
476
  if (namespace.length > 0) {
476
- return el.data(namespace + '-options');
477
+ return el.data(namespace + '-' + data_attr_name);
477
478
  }
478
479
 
479
- return el.data('options');
480
+ return el.data(data_attr_name);
480
481
  };
481
482
 
482
483
  var cached_options = data_options(el);
@@ -499,6 +500,7 @@
499
500
 
500
501
  while (ii--) {
501
502
  p = opts_arr[ii].split(':');
503
+ p = [p[0], p.slice(1).join(':')];
502
504
 
503
505
  if (/true/i.test(p[1])) p[1] = true;
504
506
  if (/false/i.test(p[1])) p[1] = false;
@@ -522,7 +524,7 @@
522
524
  // Adds JS-recognizable media queries
523
525
  //
524
526
  // Arguments:
525
- // Media (String): Key string for the media query to be stored as in
527
+ // Media (String): Key string for the media query to be stored as in
526
528
  // Foundation.media_queries
527
529
  //
528
530
  // Class (String): Class name for the generated <meta> tag
@@ -539,16 +541,16 @@
539
541
  // Arguments:
540
542
  // Rule (String): CSS rule to be appended to the document.
541
543
  //
542
- // Media (String): Optional media query string for the CSS rule to be
544
+ // Media (String): Optional media query string for the CSS rule to be
543
545
  // nested under.
544
546
  add_custom_rule : function (rule, media) {
545
- if (media === undefined) {
547
+ if (media === undefined && Foundation.stylesheet) {
546
548
  Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
547
549
  } else {
548
550
  var query = Foundation.media_queries[media];
549
551
 
550
552
  if (query !== undefined) {
551
- Foundation.stylesheet.insertRule('@media ' +
553
+ Foundation.stylesheet.insertRule('@media ' +
552
554
  Foundation.media_queries[media] + '{ ' + rule + ' }');
553
555
  }
554
556
  }
@@ -560,7 +562,7 @@
560
562
  // Arguments:
561
563
  // Image (jQuery Object): Image(s) to check if loaded.
562
564
  //
563
- // Callback (Function): Fundation to execute when image is fully loaded.
565
+ // Callback (Function): Function to execute when image is fully loaded.
564
566
  image_loaded : function (images, callback) {
565
567
  var self = this,
566
568
  unloaded = images.length;
@@ -583,7 +585,7 @@
583
585
  // Returns a random, alphanumeric string
584
586
  //
585
587
  // Arguments:
586
- // Length (Integer): Length of string to be generated. Defaults to random
588
+ // Length (Integer): Length of string to be generated. Defaults to random
587
589
  // integer.
588
590
  //
589
591
  // Returns:
@@ -606,4 +608,4 @@
606
608
  });
607
609
  };
608
610
 
609
- }(jQuery, this, this.document));
611
+ }(jQuery, window, window.document));
@@ -4,13 +4,14 @@
4
4
  Foundation.libs['magellan-expedition'] = {
5
5
  name : 'magellan-expedition',
6
6
 
7
- version : '5.2.2',
7
+ version : '5.2.3',
8
8
 
9
9
  settings : {
10
10
  active_class: 'active',
11
11
  threshold: 0, // pixels from the top of the expedition for it to become fixes
12
12
  destination_threshold: 20, // pixels from the top of destination for it to be considered active
13
- throttle_delay: 30 // calculation throttling to increase framerate
13
+ throttle_delay: 30, // calculation throttling to increase framerate
14
+ fixed_top: 0 // top distance in pixels assigend to the fixed element on scroll
14
15
  },
15
16
 
16
17
  init : function (scope, method, options) {
@@ -29,31 +30,35 @@
29
30
  S(self.scope)
30
31
  .off('.magellan')
31
32
  .on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href^="#"]', function (e) {
32
- e.preventDefault();
33
- var expedition = $(this).closest('[' + self.attr_name() + ']'),
34
- settings = expedition.data('magellan-expedition-init');
35
-
36
- var hash = this.hash.split('#').join(''),
37
- target = $("a[name='"+hash+"']");
38
- if (target.length === 0) target = $('#'+hash);
39
-
40
- // Account for expedition height if fixed position
41
- var scroll_top = target.offset().top;
42
- scroll_top = scroll_top - expedition.outerHeight();
43
-
44
- $('html, body').stop().animate({
45
- 'scrollTop': scroll_top
46
- }, 700, 'swing', function () {
47
- if(history.pushState) {
48
- history.pushState(null, null, '#'+hash);
49
- }
50
- else {
51
- location.hash = '#'+hash;
52
- }
53
- });
33
+ e.preventDefault();
34
+ var expedition = $(this).closest('[' + self.attr_name() + ']'),
35
+ settings = expedition.data('magellan-expedition-init'),
36
+ hash = this.hash.split('#').join(''),
37
+ target = $("a[name='"+hash+"']");
38
+
39
+ if (target.length === 0) {
40
+ target = $('#'+hash);
41
+ }
42
+
43
+ // Account for expedition height if fixed position
44
+ var scroll_top = target.offset().top;
45
+ scroll_top = scroll_top - expedition.outerHeight();
46
+
47
+ $('html, body').stop().animate({
48
+ 'scrollTop': scroll_top
49
+ }, 700, 'swing', function () {
50
+ if(history.pushState) {
51
+ history.pushState(null, null, '#'+hash);
52
+ }
53
+ else {
54
+ location.hash = '#'+hash;
55
+ }
56
+ });
54
57
  })
55
- .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay))
56
- $(window).on('resize.fndtn.magellan', self.throttle(this.set_expedition_position.bind(this), settings.throttle_delay));
58
+ .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay));
59
+
60
+ $(window)
61
+ .on('resize.fndtn.magellan', self.throttle(this.set_expedition_position.bind(this), settings.throttle_delay));
57
62
  },
58
63
 
59
64
  check_for_arrivals : function() {
@@ -70,7 +75,7 @@
70
75
  top_offset;
71
76
 
72
77
  expedition.attr('style', '');
73
- top_offset = expedition.offset().top;
78
+ top_offset = expedition.offset().top + self.settings.threshold;
74
79
 
75
80
  expedition.data(self.data_attr('magellan-top-offset'), top_offset);
76
81
  expedition.attr('style', styles);
@@ -95,10 +100,10 @@
95
100
  placeholder.attr(self.add_namespace('data-magellan-expedition-clone'),'');
96
101
  expedition.before(placeholder);
97
102
  }
98
- expedition.css({position:'fixed', top: 0});
103
+ expedition.css({position:'fixed', top: self.settings.fixed_top});
99
104
  } else {
100
105
  expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove();
101
- expedition.attr('style','');
106
+ expedition.attr('style','').removeClass('fixed');
102
107
  }
103
108
  });
104
109
  },
@@ -109,7 +114,7 @@
109
114
 
110
115
  $('[' + this.attr_name() + ']', self.scope).each(function() {
111
116
  var expedition = $(this),
112
- settings = settings = expedition.data(self.attr_name(true) + '-init'),
117
+ settings = expedition.data(self.attr_name(true) + '-init'),
113
118
  offsets = self.offsets(expedition, window_top_offset),
114
119
  arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'),
115
120
  active_item = false;
@@ -170,4 +175,4 @@
170
175
  $('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove();
171
176
  }
172
177
  };
173
- }(jQuery, this, this.document));
178
+ }(jQuery, window, window.document));
@@ -4,47 +4,105 @@
4
4
  Foundation.libs.offcanvas = {
5
5
  name : 'offcanvas',
6
6
 
7
- version : '5.2.2',
7
+ version : '5.2.3',
8
8
 
9
- settings : {},
9
+ settings : {
10
+ open_method: 'move',
11
+ close_on_click: true
12
+ },
10
13
 
11
14
  init : function (scope, method, options) {
12
- this.events();
15
+ this.bindings(method, options);
13
16
  },
14
17
 
15
18
  events : function () {
16
19
  var self = this,
17
- S = self.S;
20
+ S = self.S,
21
+ move_class = '',
22
+ right_postfix = '',
23
+ left_postfix = '';
24
+
25
+ if (this.settings.open_method === 'move') {
26
+ move_class = 'move-';
27
+ right_postfix = 'right';
28
+ left_postfix = 'left';
29
+ } else if (this.settings.open_method === 'overlap') {
30
+ move_class = 'offcanvas-overlap';
31
+ }
18
32
 
19
33
  S(this.scope).off('.offcanvas')
20
34
  .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {
21
- self.click_toggle_class(e, 'move-right');
35
+ self.click_toggle_class(e, move_class + right_postfix);
22
36
  })
23
37
  .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {
24
- S(".off-canvas-wrap").removeClass("move-right");
38
+ var settings = self.get_settings(e);
39
+ if (settings.close_on_click) {
40
+ self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));
41
+ }
25
42
  })
26
43
  .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {
27
- self.click_toggle_class(e, 'move-left');
44
+ self.click_toggle_class(e, move_class + left_postfix);
28
45
  })
29
46
  .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {
30
- S(".off-canvas-wrap").removeClass("move-left");
47
+ var settings = self.get_settings(e);
48
+ if (settings.close_on_click) {
49
+ self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));
50
+ }
31
51
  })
32
52
  .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
33
- self.click_remove_class(e, 'move-left');
34
- self.click_remove_class(e, 'move-right');
35
- })
53
+ self.click_remove_class(e, move_class + left_postfix);
54
+ if (right_postfix) self.click_remove_class(e, move_class + right_postfix);
55
+ });
56
+
57
+ },
58
+
59
+ toggle: function(class_name, $off_canvas) {
60
+ $off_canvas = $off_canvas || this.get_wrapper();
61
+ if ($off_canvas.is('.' + class_name)) {
62
+ this.hide(class_name, $off_canvas);
63
+ } else {
64
+ this.show(class_name, $off_canvas);
65
+ }
66
+ },
67
+
68
+ show: function(class_name, $off_canvas) {
69
+ $off_canvas = $off_canvas || this.get_wrapper();
70
+ $off_canvas.trigger('open');
71
+ $off_canvas.addClass(class_name);
72
+ },
73
+
74
+ hide: function(class_name, $off_canvas) {
75
+ $off_canvas = $off_canvas || this.get_wrapper();
76
+ $off_canvas.trigger('close');
77
+ $off_canvas.removeClass(class_name);
36
78
  },
37
79
 
38
80
  click_toggle_class: function(e, class_name) {
39
81
  e.preventDefault();
40
- this.S(e.target).closest('.off-canvas-wrap').toggleClass(class_name);
82
+ var $off_canvas = this.get_wrapper(e);
83
+ this.toggle(class_name, $off_canvas);
41
84
  },
42
85
 
43
86
  click_remove_class: function(e, class_name) {
44
87
  e.preventDefault();
45
- this.S('.off-canvas-wrap').removeClass(class_name);
88
+ var $off_canvas = this.get_wrapper(e);
89
+ this.hide(class_name, $off_canvas);
90
+ },
91
+
92
+ get_settings: function(e) {
93
+ var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']');
94
+ return offcanvas.data(this.attr_name(true) + '-init') || this.settings;
95
+ },
96
+
97
+ get_wrapper: function(e) {
98
+ var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap');
99
+
100
+ if ($off_canvas.length === 0) {
101
+ $off_canvas = this.S('.off-canvas-wrap');
102
+ }
103
+ return $off_canvas;
46
104
  },
47
105
 
48
106
  reflow : function () {}
49
107
  };
50
- }(jQuery, this, this.document));
108
+ }(jQuery, window, window.document));