foundation-rails 5.5.2.1 → 5.5.3.1

Sign up to get free protection for your applications and to get access to all the features.
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 () {}