foundation-rails 5.5.2.1 → 5.5.3.1

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/bower.json +2 -2
  4. data/lib/foundation/rails/version.rb +1 -1
  5. data/vendor/assets/javascripts/foundation.js +1 -1
  6. data/vendor/assets/javascripts/foundation/foundation.abide.js +42 -24
  7. data/vendor/assets/javascripts/foundation/foundation.accordion.js +39 -2
  8. data/vendor/assets/javascripts/foundation/foundation.alert.js +1 -1
  9. data/vendor/assets/javascripts/foundation/foundation.clearing.js +5 -5
  10. data/vendor/assets/javascripts/foundation/foundation.dropdown.js +17 -12
  11. data/vendor/assets/javascripts/foundation/foundation.equalizer.js +1 -1
  12. data/vendor/assets/javascripts/foundation/foundation.interchange.js +3 -2
  13. data/vendor/assets/javascripts/foundation/foundation.joyride.js +53 -50
  14. data/vendor/assets/javascripts/foundation/foundation.js +24 -17
  15. data/vendor/assets/javascripts/foundation/foundation.magellan.js +4 -5
  16. data/vendor/assets/javascripts/foundation/foundation.offcanvas.js +75 -2
  17. data/vendor/assets/javascripts/foundation/foundation.orbit.js +1 -1
  18. data/vendor/assets/javascripts/foundation/foundation.reveal.js +40 -16
  19. data/vendor/assets/javascripts/foundation/foundation.slider.js +21 -6
  20. data/vendor/assets/javascripts/foundation/foundation.tab.js +25 -27
  21. data/vendor/assets/javascripts/foundation/foundation.tooltip.js +24 -15
  22. data/vendor/assets/javascripts/foundation/foundation.topbar.js +11 -11
  23. data/vendor/assets/stylesheets/foundation.scss +0 -2
  24. data/vendor/assets/stylesheets/foundation/_functions.scss +2 -2
  25. data/vendor/assets/stylesheets/foundation/_settings.scss +6 -3
  26. data/vendor/assets/stylesheets/foundation/components/_accordion.scss +6 -2
  27. data/vendor/assets/stylesheets/foundation/components/_breadcrumbs.scss +2 -1
  28. data/vendor/assets/stylesheets/foundation/components/_button-groups.scss +1 -0
  29. data/vendor/assets/stylesheets/foundation/components/_buttons.scss +18 -13
  30. data/vendor/assets/stylesheets/foundation/components/_dropdown.scss +3 -2
  31. data/vendor/assets/stylesheets/foundation/components/_forms.scss +21 -23
  32. data/vendor/assets/stylesheets/foundation/components/_global.scss +73 -9
  33. data/vendor/assets/stylesheets/foundation/components/_grid.scss +15 -15
  34. data/vendor/assets/stylesheets/foundation/components/_inline-lists.scss +2 -1
  35. data/vendor/assets/stylesheets/foundation/components/_joyride.scss +1 -1
  36. data/vendor/assets/stylesheets/foundation/components/_offcanvas.scss +92 -4
  37. data/vendor/assets/stylesheets/foundation/components/_pagination.scss +1 -0
  38. data/vendor/assets/stylesheets/foundation/components/_progress-bars.scss +6 -0
  39. data/vendor/assets/stylesheets/foundation/components/_range-slider.scss +2 -2
  40. data/vendor/assets/stylesheets/foundation/components/_reveal.scss +3 -0
  41. data/vendor/assets/stylesheets/foundation/components/_tabs.scss +1 -1
  42. data/vendor/assets/stylesheets/foundation/components/_tooltips.scss +1 -1
  43. data/vendor/assets/stylesheets/foundation/components/_top-bar.scss +11 -3
  44. data/vendor/assets/stylesheets/foundation/components/_type.scss +73 -12
  45. data/vendor/assets/stylesheets/foundation/components/_visibility.scss +8 -75
  46. metadata +3 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0570d2a2c24102f13a138bdafcdf7b28cee669bb
4
- data.tar.gz: b80f737153e9fa9c2a6653b831087015301ceaec
3
+ metadata.gz: 18f5f13ec3427b37bd7c22d3bbc65094d90d4ba1
4
+ data.tar.gz: b8c0fcfda7ab5a42f4411699622a9f3488c4bdc9
5
5
  SHA512:
6
- metadata.gz: d2b3001cdf065e9397ecbdc4eafde8d9e3ab718137ab2c20cf6ef9b9c02e04856e94505e4fa9a67f6a3fc5ea5ccaf44f9f8cd5a65dcf438cc8967805c2899680
7
- data.tar.gz: eb12df11fa2f9adbcc6f5455dccd8727935eb3fb243f234c5c32b9e61fa8ee52b654dfef6f369d8c90def44cf8b2e5c121bc2e1eff3097c8ff2423d8788e190f
6
+ metadata.gz: a795af141ae083f13451265c38517c26095de939e22ae24031fa1ed1a75f4ad1c7443e9eeb991e7a46ff4a5d7c24921e9ad079741cbf939e4daf4877cbd3a3a7
7
+ data.tar.gz: 75a8415f4875695cc21e830acf5634564e195512cba605288d839a6552218682bf0141a0d0ddfba8ee44f1e17eee3c792a55885b4eb7fef3af74c04ae1dd5061
@@ -1 +1 @@
1
- 2.2.1
1
+ 2.1.2
data/bower.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "foundation-rails",
3
- "version": "5.5.2.1",
3
+ "version": "5.5.3.1",
4
4
  "dependencies": {
5
- "foundation": "5.5.2"
5
+ "foundation": "5.5.3"
6
6
  }
7
7
  }
@@ -1,5 +1,5 @@
1
1
  module Foundation
2
2
  module Rails
3
- VERSION = "5.5.2.1"
3
+ VERSION = "5.5.3.1"
4
4
  end
5
5
  end
@@ -1,4 +1,3 @@
1
- //= require foundation/foundation
2
1
  //= require foundation/foundation.abide
3
2
  //= require foundation/foundation.accordion
4
3
  //= require foundation/foundation.alert
@@ -7,6 +6,7 @@
7
6
  //= require foundation/foundation.equalizer
8
7
  //= require foundation/foundation.interchange
9
8
  //= require foundation/foundation.joyride
9
+ //= require foundation/foundation
10
10
  //= require foundation/foundation.magellan
11
11
  //= require foundation/foundation.offcanvas
12
12
  //= require foundation/foundation.orbit
@@ -4,15 +4,18 @@
4
4
  Foundation.libs.abide = {
5
5
  name : 'abide',
6
6
 
7
- version : '5.5.2',
7
+ version : '5.5.3',
8
8
 
9
9
  settings : {
10
- live_validate : true,
11
- validate_on_blur : true,
12
- // validate_on: 'tab', // tab (when user tabs between fields), change (input changes), manual (call custom events)
13
- focus_on_invalid : true,
14
- error_labels : true, // labels with a for="inputId" will recieve an `error` class
15
- error_class : 'error',
10
+ live_validate : true, // validate the form as you go
11
+ validate_on_blur : true, // validate whenever you focus/blur on an input field
12
+ // validate_on: 'tab', // tab (when user tabs between fields), change (input changes), manual (call custom events)
13
+
14
+ focus_on_invalid : true, // automatically bring the focus to an invalid input field
15
+ error_labels : true, // labels with a for="inputId" will receive an `error` class
16
+ error_class : 'error', // labels with a for="inputId" will receive an `error` class
17
+ // the amount of time Abide will take before it validates the form (in ms).
18
+ // smaller time will result in faster validation
16
19
  timeout : 1000,
17
20
  patterns : {
18
21
  alpha : /^[a-zA-Z]+$/,
@@ -77,7 +80,6 @@
77
80
  }.bind(originalSelf), settings.timeout);
78
81
  }
79
82
 
80
-
81
83
  form
82
84
  .off('.abide')
83
85
  .on('submit.fndtn.abide', function (e) {
@@ -90,27 +92,39 @@
90
92
  }
91
93
  })
92
94
  .on('reset', function (e) {
93
- return self.reset($(this), e);
95
+ return self.reset($(this), e);
94
96
  })
95
97
  .find('input, textarea, select').not(":hidden, [data-abide-ignore]")
96
98
  .off('.abide')
97
99
  .on('blur.fndtn.abide change.fndtn.abide', function (e) {
100
+ var id = this.getAttribute('id'),
101
+ eqTo = form.find('[data-equalto="'+ id +'"]');
98
102
  // old settings fallback
99
103
  // will be deprecated with F6 release
100
104
  if (settings.validate_on_blur && settings.validate_on_blur === true) {
101
105
  validate(this, e);
102
106
  }
107
+ // checks if there is an equalTo equivalent related by id
108
+ if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
109
+ validate(eqTo.get(0),e);
110
+ }
103
111
  // new settings combining validate options into one setting
104
112
  if (settings.validate_on === 'change') {
105
113
  validate(this, e);
106
114
  }
107
115
  })
108
116
  .on('keydown.fndtn.abide', function (e) {
117
+ var id = this.getAttribute('id'),
118
+ eqTo = form.find('[data-equalto="'+ id +'"]');
109
119
  // old settings fallback
110
120
  // will be deprecated with F6 release
111
121
  if (settings.live_validate && settings.live_validate === true && e.which != 9) {
112
122
  validate(this, e);
113
123
  }
124
+ // checks if there is an equalTo equivalent related by id
125
+ if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
126
+ validate(eqTo.get(0),e);
127
+ }
114
128
  // new settings combining validate options into one setting
115
129
  if (settings.validate_on === 'tab' && e.which === 9) {
116
130
  validate(this, e);
@@ -124,7 +138,7 @@
124
138
  $('html, body').animate({
125
139
  scrollTop: $(e.target).offset().top
126
140
  }, 100);
127
- }
141
+ }
128
142
  });
129
143
  },
130
144
 
@@ -203,8 +217,11 @@
203
217
  // TODO: Break this up into smaller methods, getting hard to read.
204
218
  check_validation_and_apply_styles : function (el_patterns) {
205
219
  var i = el_patterns.length,
206
- validations = [],
207
- form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
220
+ validations = [];
221
+ if (i == 0) {
222
+ return validations;
223
+ }
224
+ var form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
208
225
  settings = form.data(this.attr_name(true) + '-init') || {};
209
226
  while (i--) {
210
227
  var el = el_patterns[i][0],
@@ -299,6 +316,7 @@
299
316
  }
300
317
  validations = validations.concat(el_validations);
301
318
  }
319
+
302
320
  return validations;
303
321
  },
304
322
 
@@ -325,20 +343,20 @@
325
343
  disabled = false;
326
344
 
327
345
  // Has to count up to make sure the focus gets applied to the top error
328
- for (var i=0; i < count; i++) {
329
- if( group[i].getAttribute('disabled') ){
330
- disabled=true;
331
- valid=true;
332
- } else {
333
- if (group[i].checked){
334
- valid = true;
335
- } else {
336
- if( disabled ){
337
- valid = false;
338
- }
339
- }
346
+ for (var i=0; i < count; i++) {
347
+ if( group[i].getAttribute('disabled') ){
348
+ disabled=true;
349
+ valid=true;
350
+ } else {
351
+ if (group[i].checked){
352
+ valid = true;
353
+ } else {
354
+ if( disabled ){
355
+ valid = false;
340
356
  }
357
+ }
341
358
  }
359
+ }
342
360
 
343
361
  // Has to count up to make sure the focus gets applied to the top error
344
362
  for (var i = 0; i < count; i++) {
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.accordion = {
5
5
  name : 'accordion',
6
6
 
7
- version : '5.5.2',
7
+ version : '5.5.3',
8
8
 
9
9
  settings : {
10
10
  content_class : 'content',
@@ -74,12 +74,49 @@
74
74
  settings = accordion.data(self.attr_name(true) + '-init') || self.settings;
75
75
 
76
76
  aunts.children('a').attr('aria-expanded','false');
77
- aunts.has('.' + settings.content_class + '.' + settings.active_class).children('a').attr('aria-expanded','true');
77
+ aunts.has('.' + settings.content_class + '.' + settings.active_class).addClass(settings.active_class).children('a').attr('aria-expanded','true');
78
78
 
79
79
  if (settings.multi_expand) {
80
80
  $instance.attr('aria-multiselectable','true');
81
81
  }
82
82
  },
83
+
84
+ toggle : function(options) {
85
+ var options = typeof options !== 'undefined' ? options : {};
86
+ var selector = typeof options.selector !== 'undefined' ? options.selector : '';
87
+ var toggle_state = typeof options.toggle_state !== 'undefined' ? options.toggle_state : '';
88
+ var $accordion = typeof options.$accordion !== 'undefined' ? options.$accordion : this.S(this.scope).closest('[' + this.attr_name() + ']');
89
+
90
+ var $items = $accordion.find('> dd' + selector + ', > li' + selector);
91
+ if ( $items.length < 1 ) {
92
+ if ( window.console ) {
93
+ console.error('Selection not found.', selector);
94
+ }
95
+ return false;
96
+ }
97
+
98
+ var S = this.S;
99
+ var active_class = this.settings.active_class;
100
+ $items.each(function() {
101
+ var $item = S(this);
102
+ var is_active = $item.hasClass(active_class);
103
+ if ( ( is_active && toggle_state === 'close' ) || ( !is_active && toggle_state === 'open' ) || toggle_state === '' ) {
104
+ $item.find('> a').trigger('click.fndtn.accordion');
105
+ }
106
+ });
107
+ },
108
+
109
+ open : function(options) {
110
+ var options = typeof options !== 'undefined' ? options : {};
111
+ options.toggle_state = 'open';
112
+ this.toggle(options);
113
+ },
114
+
115
+ close : function(options) {
116
+ var options = typeof options !== 'undefined' ? options : {};
117
+ options.toggle_state = 'close';
118
+ this.toggle(options);
119
+ },
83
120
 
84
121
  off : function () {},
85
122
 
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.alert = {
5
5
  name : 'alert',
6
6
 
7
- version : '5.5.2',
7
+ version : '5.5.3',
8
8
 
9
9
  settings : {
10
10
  callback : function () {}
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.clearing = {
5
5
  name : 'clearing',
6
6
 
7
- version : '5.5.2',
7
+ version : '5.5.3',
8
8
 
9
9
  settings : {
10
10
  templates : {
@@ -28,7 +28,7 @@
28
28
 
29
29
  touch_label : '',
30
30
 
31
- // event initializers and locks
31
+ // event initializer and locks
32
32
  init : false,
33
33
  locked : false
34
34
  },
@@ -453,9 +453,9 @@
453
453
  var caption = $image.attr('data-caption');
454
454
 
455
455
  if (caption) {
456
- container
457
- .html(caption)
458
- .show();
456
+ var containerPlain = container.get(0);
457
+ containerPlain.innerHTML = caption;
458
+ container.show();
459
459
  } else {
460
460
  container
461
461
  .text('')
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.dropdown = {
5
5
  name : 'dropdown',
6
6
 
7
- version : '5.5.2',
7
+ version : '5.5.3',
8
8
 
9
9
  settings : {
10
10
  active_class : 'open',
@@ -258,7 +258,7 @@
258
258
  // `this` is the dropdown
259
259
  dirs : {
260
260
  // Calculate target offset
261
- _base : function (t) {
261
+ _base : function (t, s) {
262
262
  var o_p = this.offsetParent(),
263
263
  o = o_p.offset(),
264
264
  p = t.offset();
@@ -275,31 +275,36 @@
275
275
  //lets see if the panel will be off the screen
276
276
  //get the actual width of the page and store it
277
277
  var actualBodyWidth;
278
+ var windowWidth = window.innerWidth;
279
+
278
280
  if (document.getElementsByClassName('row')[0]) {
279
281
  actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
280
282
  } else {
281
- actualBodyWidth = window.innerWidth;
283
+ actualBodyWidth = windowWidth;
282
284
  }
283
285
 
284
- var actualMarginWidth = (window.innerWidth - actualBodyWidth) / 2;
286
+ var actualMarginWidth = (windowWidth - actualBodyWidth) / 2;
285
287
  var actualBoundary = actualBodyWidth;
286
288
 
287
- if (!this.hasClass('mega')) {
289
+ if (!this.hasClass('mega') && !s.ignore_repositioning) {
290
+ var outerWidth = this.outerWidth();
291
+ var o_left = t.offset().left;
292
+
288
293
  //miss top
289
294
  if (t.offset().top <= this.outerHeight()) {
290
295
  p.missTop = true;
291
- actualBoundary = window.innerWidth - actualMarginWidth;
296
+ actualBoundary = windowWidth - actualMarginWidth;
292
297
  p.leftRightFlag = true;
293
298
  }
294
299
 
295
300
  //miss right
296
- if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) {
301
+ if (o_left + outerWidth > o_left + actualMarginWidth && o_left - actualMarginWidth > outerWidth) {
297
302
  p.missRight = true;
298
303
  p.missLeft = false;
299
304
  }
300
305
 
301
306
  //miss left
302
- if (t.offset().left - this.outerWidth() <= 0) {
307
+ if (o_left - outerWidth <= 0) {
303
308
  p.missLeft = true;
304
309
  p.missRight = false;
305
310
  }
@@ -310,7 +315,7 @@
310
315
 
311
316
  top : function (t, s) {
312
317
  var self = Foundation.libs.dropdown,
313
- p = self.dirs._base.call(this, t);
318
+ p = self.dirs._base.call(this, t, s);
314
319
 
315
320
  this.addClass('drop-top');
316
321
 
@@ -337,7 +342,7 @@
337
342
 
338
343
  bottom : function (t, s) {
339
344
  var self = Foundation.libs.dropdown,
340
- p = self.dirs._base.call(this, t);
345
+ p = self.dirs._base.call(this, t, s);
341
346
 
342
347
  if (p.missRight == true) {
343
348
  p.left = p.left - this.outerWidth() + t.outerWidth();
@@ -355,7 +360,7 @@
355
360
  },
356
361
 
357
362
  left : function (t, s) {
358
- var p = Foundation.libs.dropdown.dirs._base.call(this, t);
363
+ var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
359
364
 
360
365
  this.addClass('drop-left');
361
366
 
@@ -369,7 +374,7 @@
369
374
  },
370
375
 
371
376
  right : function (t, s) {
372
- var p = Foundation.libs.dropdown.dirs._base.call(this, t);
377
+ var p = Foundation.libs.dropdown.dirs._base.call(this, t, s);
373
378
 
374
379
  this.addClass('drop-right');
375
380
 
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.equalizer = {
5
5
  name : 'equalizer',
6
6
 
7
- version : '5.5.2',
7
+ version : '5.5.3',
8
8
 
9
9
  settings : {
10
10
  use_tallest : true,
@@ -4,7 +4,7 @@
4
4
  Foundation.libs.interchange = {
5
5
  name : 'interchange',
6
6
 
7
- version : '5.5.2',
7
+ version : '5.5.3',
8
8
 
9
9
  cache : {},
10
10
 
@@ -49,7 +49,8 @@
49
49
  // });
50
50
 
51
51
  if (el !== null && /IMG/.test(el[0].nodeName)) {
52
- var orig_path = el[0].src;
52
+ var orig_path = $.each(el, function(){this.src = path;});
53
+ // var orig_path = el[0].src;
53
54
 
54
55
  if (new RegExp(path, 'i').test(orig_path)) {
55
56
  return;
@@ -6,13 +6,13 @@
6
6
  Foundation.libs.joyride = {
7
7
  name : 'joyride',
8
8
 
9
- version : '5.5.2',
9
+ version : '5.5.3',
10
10
 
11
11
  defaults : {
12
12
  expose : false, // turn on or off the expose feature
13
13
  modal : true, // Whether to cover page with modal during the tour
14
14
  keyboard : true, // enable left, right and esc keystrokes
15
- tip_location : 'bottom', // 'top' or 'bottom' in relation to parent
15
+ tip_location : 'bottom', // 'top', 'bottom', 'left' or 'right' in relation to parent
16
16
  nub_position : 'auto', // override on a per tooltip bases
17
17
  scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation
18
18
  scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI.
@@ -323,8 +323,8 @@
323
323
 
324
324
  this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location];
325
325
 
326
- // scroll and hide bg if not modal
327
- if (!/body/i.test(this.settings.$target.selector)) {
326
+ // scroll and hide bg if not modal and not expose
327
+ if (!/body/i.test(this.settings.$target.selector) && !this.settings.expose) {
328
328
  var joyridemodalbg = $('.joyride-modal-bg');
329
329
  if (/pop/i.test(this.settings.tipAnimation)) {
330
330
  joyridemodalbg.hide();
@@ -500,67 +500,67 @@
500
500
  }
501
501
 
502
502
  if (!/body/i.test(this.settings.$target.selector)) {
503
- var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0,
504
- leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0;
505
-
506
- if (this.bottom()) {
507
- if (this.rtl) {
508
- this.settings.$next_tip.css({
509
- top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
510
- left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment});
511
- } else {
512
- this.settings.$next_tip.css({
513
- top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
514
- left : this.settings.$target.offset().left + leftAdjustment});
515
- }
503
+ var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0,
504
+ leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0;
505
+
506
+ if (this.bottom()) {
507
+ if (this.rtl) {
508
+ this.settings.$next_tip.css({
509
+ top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
510
+ left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment});
511
+ } else {
512
+ this.settings.$next_tip.css({
513
+ top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
514
+ left : this.settings.$target.offset().left + leftAdjustment});
515
+ }
516
516
 
517
- this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');
517
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');
518
518
 
519
- } else if (this.top()) {
520
- if (this.rtl) {
521
- this.settings.$next_tip.css({
522
- top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
523
- left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
524
- } else {
525
- this.settings.$next_tip.css({
526
- top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
527
- left : this.settings.$target.offset().left + leftAdjustment});
528
- }
519
+ } else if (this.top()) {
520
+ if (this.rtl) {
521
+ this.settings.$next_tip.css({
522
+ top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
523
+ left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
524
+ } else {
525
+ this.settings.$next_tip.css({
526
+ top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
527
+ left : this.settings.$target.offset().left + leftAdjustment});
528
+ }
529
529
 
530
- this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');
530
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');
531
531
 
532
- } else if (this.right()) {
532
+ } else if (this.right()) {
533
533
 
534
- this.settings.$next_tip.css({
535
- top : this.settings.$target.offset().top + topAdjustment,
536
- left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)});
534
+ this.settings.$next_tip.css({
535
+ top : this.settings.$target.offset().top + topAdjustment,
536
+ left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)});
537
537
 
538
- this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');
538
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');
539
539
 
540
- } else if (this.left()) {
540
+ } else if (this.left()) {
541
541
 
542
- this.settings.$next_tip.css({
543
- top : this.settings.$target.offset().top + topAdjustment,
544
- left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)});
542
+ this.settings.$next_tip.css({
543
+ top : this.settings.$target.offset().top + topAdjustment,
544
+ left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)});
545
545
 
546
- this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');
546
+ this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');
547
547
 
548
- }
548
+ }
549
549
 
550
- if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {
550
+ if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {
551
551
 
552
- $nub.removeClass('bottom')
553
- .removeClass('top')
554
- .removeClass('right')
555
- .removeClass('left');
552
+ $nub.removeClass('bottom')
553
+ .removeClass('top')
554
+ .removeClass('right')
555
+ .removeClass('left');
556
556
 
557
- this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];
557
+ this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];
558
558
 
559
- this.settings.attempts++;
559
+ this.settings.attempts++;
560
560
 
561
- this.pos_default();
561
+ this.pos_default();
562
562
 
563
- }
563
+ }
564
564
 
565
565
  } else if (this.settings.$li.length) {
566
566
 
@@ -827,6 +827,10 @@
827
827
  },
828
828
 
829
829
  corners : function (el) {
830
+ if (el.length === 0) {
831
+ return [false, false, false, false];
832
+ }
833
+
830
834
  var w = $(window),
831
835
  window_half = w.height() / 2,
832
836
  //using this to calculate since scroll may not have finished yet.
@@ -924,7 +928,6 @@
924
928
  $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
925
929
  $('.joyride-tip-guide, .joyride-modal-bg').remove();
926
930
  clearTimeout(this.settings.automate);
927
- this.settings = {};
928
931
  },
929
932
 
930
933
  reflow : function () {}