materialize-sass 0.96.1 → 0.96.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/fonts/material-design-icons/Material-Design-Icons.eot +0 -0
  3. data/app/assets/fonts/material-design-icons/Material-Design-Icons.svg +760 -742
  4. data/app/assets/fonts/material-design-icons/Material-Design-Icons.ttf +0 -0
  5. data/app/assets/fonts/material-design-icons/Material-Design-Icons.woff +0 -0
  6. data/app/assets/fonts/material-design-icons/Material-Design-Icons.woff2 +0 -0
  7. data/app/assets/javascripts/materialize.js +4 -6022
  8. data/app/assets/javascripts/materialize/cards.js +1 -1
  9. data/app/assets/javascripts/materialize/character_counter.js +1 -1
  10. data/app/assets/javascripts/materialize/collapsible.js +6 -6
  11. data/app/assets/javascripts/materialize/dropdown.js +10 -10
  12. data/app/assets/javascripts/materialize/forms.js +29 -19
  13. data/app/assets/javascripts/materialize/global.js +7 -2
  14. data/app/assets/javascripts/materialize/init.js +3 -4
  15. data/app/assets/javascripts/materialize/leanModal.js +56 -31
  16. data/app/assets/javascripts/materialize/materialbox.js +10 -10
  17. data/app/assets/javascripts/materialize/scrollFire.js +3 -28
  18. data/app/assets/javascripts/materialize/sideNav.js +31 -54
  19. data/app/assets/javascripts/materialize/slider.js +246 -200
  20. data/app/assets/javascripts/materialize/tabs.js +9 -2
  21. data/app/assets/javascripts/materialize/toasts.js +7 -3
  22. data/app/assets/javascripts/materialize/tooltip.js +7 -7
  23. data/app/assets/javascripts/materialize/transitions.js +2 -2
  24. data/app/assets/stylesheets/materialize/components/_buttons.scss +6 -0
  25. data/app/assets/stylesheets/materialize/components/_collapsible.scss +4 -7
  26. data/app/assets/stylesheets/materialize/components/_color.scss +1 -1
  27. data/app/assets/stylesheets/materialize/components/_dropdown.scss +7 -5
  28. data/app/assets/stylesheets/materialize/components/_form.scss +43 -6
  29. data/app/assets/stylesheets/materialize/components/_global.scss +32 -25
  30. data/app/assets/stylesheets/materialize/components/_icons-material-design.scss +3231 -757
  31. data/app/assets/stylesheets/materialize/components/_modal.scss +7 -5
  32. data/app/assets/stylesheets/materialize/components/_navbar.scss +6 -5
  33. data/app/assets/stylesheets/materialize/components/_slider.scss +1 -1
  34. data/app/assets/stylesheets/materialize/components/_tabs.scss +5 -0
  35. data/app/assets/stylesheets/materialize/components/_tooltip.scss +1 -1
  36. data/app/assets/stylesheets/materialize/components/_typography.scss +1 -3
  37. data/app/assets/stylesheets/materialize/components/_variables.scss +2 -1
  38. data/app/assets/stylesheets/materialize/components/date_picker/_default.scss +5 -5
  39. data/lib/materialize-sass/engine.rb +1 -1
  40. data/lib/materialize-sass/version.rb +1 -1
  41. metadata +3 -3
@@ -4,11 +4,11 @@
4
4
 
5
5
  return this.each(function() {
6
6
 
7
- if ($(this).hasClass('intialized')) {
7
+ if ($(this).hasClass('initialized')) {
8
8
  return;
9
9
  }
10
10
 
11
- $(this).addClass('intialized');
11
+ $(this).addClass('initialized');
12
12
 
13
13
  var overlayActive = false;
14
14
  var doneAnimating = true;
@@ -19,15 +19,15 @@
19
19
  var originalWidth = 0;
20
20
  var originalHeight = 0;
21
21
  origin.wrap(placeholder);
22
-
23
-
22
+
23
+
24
24
  origin.on('click', function(){
25
25
  var placeholder = origin.parent('.material-placeholder');
26
26
  var windowWidth = window.innerWidth;
27
27
  var windowHeight = window.innerHeight;
28
28
  var originalWidth = origin.width();
29
29
  var originalHeight = origin.height();
30
-
30
+
31
31
 
32
32
  // If already modal, return to original
33
33
  if (doneAnimating === false) {
@@ -38,7 +38,7 @@
38
38
  returnToOriginal();
39
39
  return false;
40
40
  }
41
-
41
+
42
42
 
43
43
  // Set states
44
44
  doneAnimating = false;
@@ -54,8 +54,8 @@
54
54
  top: 0,
55
55
  left: 0
56
56
  });
57
-
58
-
57
+
58
+
59
59
 
60
60
  // Set css on origin
61
61
  origin.css({position: 'absolute', 'z-index': 1000})
@@ -83,7 +83,7 @@
83
83
  $photo_caption.text(origin.data('caption'));
84
84
  $('body').append($photo_caption);
85
85
  $photo_caption.css({ "display": "inline" });
86
- $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'})
86
+ $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'});
87
87
  }
88
88
 
89
89
 
@@ -178,7 +178,7 @@
178
178
  var windowHeight = window.innerHeight;
179
179
  var originalWidth = origin.data('width');
180
180
  var originalHeight = origin.data('height');
181
-
181
+
182
182
  origin.velocity("stop", true);
183
183
  $('#materialbox-overlay').velocity("stop", true);
184
184
  $('.materialbox-caption').velocity("stop", true);
@@ -29,41 +29,16 @@
29
29
  var elementOffset = currentElement.getBoundingClientRect().top + document.body.scrollTop;
30
30
 
31
31
  if (windowScroll > (elementOffset + offset)) {
32
- if (value.done != true) {
32
+ if (value.done !== true) {
33
33
  var callbackFunc = new Function(callback);
34
34
  callbackFunc();
35
35
  value.done = true;
36
36
  }
37
37
  }
38
38
  }
39
- };
39
+ }
40
40
  }
41
41
  }, 100);
42
-
43
-
44
- // $(window).scroll(function () {
45
- // var windowScroll = $(window).scrollTop() + $(window).height();
46
-
47
- // $.each( options, function( i, value ){
48
- // var selector = value.selector,
49
- // offset = value.offset,
50
- // callback = value.callback;
51
-
52
- // if ($(selector).length != 0) {
53
- // var elementOffset = $(selector).offset().top;
54
-
55
- // if (windowScroll > (elementOffset + offset)) {
56
- // if (value.done != true) {
57
- // var callbackFunc = new Function(callback);
58
- // callbackFunc();
59
- // value.done = true;
60
- // }
61
- // }
62
- // }
63
-
64
- // });
65
- // });
66
-
67
- }
42
+ };
68
43
 
69
44
  })(jQuery);
@@ -1,45 +1,4 @@
1
1
  (function ($) {
2
- // left: 37, up: 38, right: 39, down: 40,
3
- // spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36
4
- // var keys = [32, 33, 34, 35, 36, 37, 38, 39, 40];
5
-
6
- // function preventDefault(e) {
7
- // e = e || window.event;
8
- // if (e.preventDefault)
9
- // e.preventDefault();
10
- // e.returnValue = false;
11
- // }
12
-
13
- // function keydown(e) {
14
- // for (var i = keys.length; i--;) {
15
- // if (e.keyCode === keys[i]) {
16
- // preventDefault(e);
17
- // return;
18
- // }
19
- // }
20
- // }
21
-
22
- // function wheel(e) {
23
- // preventDefault(e);
24
- // }
25
-
26
- // function disable_scroll() {
27
- // if (window.addEventListener) {
28
- // window.addEventListener('DOMMouseScroll', wheel, false);
29
- // }
30
- // window.onmousewheel = document.onmousewheel = wheel;
31
- // document.onkeydown = keydown;
32
- // $('body').css({'overflow-y' : 'hidden'});
33
- // }
34
-
35
- // function enable_scroll() {
36
- // if (window.removeEventListener) {
37
- // window.removeEventListener('DOMMouseScroll', wheel, false);
38
- // }
39
- // window.onmousewheel = document.onmousewheel = document.onkeydown = null;
40
- // $('body').css({'overflow-y' : ''});
41
-
42
- // }
43
2
 
44
3
  var methods = {
45
4
  init : function(options) {
@@ -47,7 +6,7 @@
47
6
  menuWidth: 240,
48
7
  edge: 'left',
49
8
  closeOnClick: false
50
- }
9
+ };
51
10
  options = $.extend(defaults, options);
52
11
 
53
12
  $(this).each(function(){
@@ -75,7 +34,7 @@
75
34
 
76
35
  // If fixed sidenav, bring menu out
77
36
  if (menu_id.hasClass('fixed')) {
78
- if ($(window).width() > 992) {
37
+ if (window.innerWidth > 992) {
79
38
  menu_id.css('left', 0);
80
39
  }
81
40
  }
@@ -85,7 +44,7 @@
85
44
  $(window).resize( function() {
86
45
  if (window.innerWidth > 992) {
87
46
  // Close menu if window is resized bigger than 992 and user has fixed sidenav
88
- if ($('#sidenav-overlay').css('opacity') != 0 && menuOut) {
47
+ if ($('#sidenav-overlay').css('opacity') !== 0 && menuOut) {
89
48
  removeMenu(true);
90
49
  }
91
50
  else {
@@ -104,7 +63,7 @@
104
63
  }
105
64
 
106
65
  // if closeOnClick, then add close event for all a tags in side sideNav
107
- if (options.closeOnClick == true) {
66
+ if (options.closeOnClick === true) {
108
67
  menu_id.on("click.itemclick", "a:not(.collapsible-header)", function(){
109
68
  removeMenu();
110
69
  });
@@ -113,6 +72,10 @@
113
72
  function removeMenu(restoreNav) {
114
73
  panning = false;
115
74
  menuOut = false;
75
+
76
+ // Reenable scrolling
77
+ $('body').css('overflow', '');
78
+
116
79
  $('#sidenav-overlay').velocity({opacity: 0}, {duration: 200, queue: false, easing: 'easeOutQuad',
117
80
  complete: function() {
118
81
  $(this).remove();
@@ -126,7 +89,7 @@
126
89
  queue: false,
127
90
  easing: 'easeOutCubic',
128
91
  complete: function() {
129
- if (restoreNav == true) {
92
+ if (restoreNav === true) {
130
93
  // Restore Fixed sidenav
131
94
  menu_id.removeAttr('style');
132
95
  menu_id.css('width', options.menuWidth);
@@ -144,7 +107,7 @@
144
107
  queue: false,
145
108
  easing: 'easeOutCubic',
146
109
  complete: function() {
147
- if (restoreNav == true) {
110
+ if (restoreNav === true) {
148
111
  // Restore Fixed sidenav
149
112
  menu_id.removeAttr('style');
150
113
  menu_id.css('width', options.menuWidth);
@@ -162,7 +125,7 @@
162
125
 
163
126
  $('.drag-target').on('click', function(){
164
127
  removeMenu();
165
- })
128
+ });
166
129
 
167
130
  $('.drag-target').hammer({
168
131
  prevent_default: false
@@ -175,6 +138,9 @@
175
138
  var y = e.gesture.center.y;
176
139
  var velocityX = e.gesture.velocityX;
177
140
 
141
+ // Disable Scrolling
142
+ $('body').css('overflow', 'hidden');
143
+
178
144
  // If overlay does not exist, create one and if it is clicked, close menu
179
145
  if ($('#sidenav-overlay').length === 0) {
180
146
  var overlay = $('<div id="sidenav-overlay"></div>');
@@ -200,11 +166,11 @@
200
166
  }
201
167
  else {
202
168
  // Left Direction
203
- if (x < ($(window).width() - options.menuWidth / 2)) {
169
+ if (x < (window.innerWidth - options.menuWidth / 2)) {
204
170
  menuOut = true;
205
171
  }
206
172
  // Right Direction
207
- else if (x >= ($(window).width() - options.menuWidth / 2)) {
173
+ else if (x >= (window.innerWidth - options.menuWidth / 2)) {
208
174
  menuOut = false;
209
175
  }
210
176
  var rightPos = -1 *(x - options.menuWidth / 2);
@@ -219,17 +185,19 @@
219
185
 
220
186
 
221
187
  // Percentage overlay
188
+ var overlayPerc;
222
189
  if (options.edge === 'left') {
223
- var overlayPerc = x / options.menuWidth;
190
+ overlayPerc = x / options.menuWidth;
224
191
  $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 50, queue: false, easing: 'easeOutQuad'});
225
192
  }
226
193
  else {
227
- var overlayPerc = Math.abs((x - $(window).width()) / options.menuWidth);
194
+ overlayPerc = Math.abs((x - window.innerWidth) / options.menuWidth);
228
195
  $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 50, queue: false, easing: 'easeOutQuad'});
229
196
  }
230
197
  }
231
198
 
232
199
  }).bind('panend', function(e) {
200
+
233
201
  if (e.gesture.pointerType == "touch") {
234
202
  var velocityX = e.gesture.velocityX;
235
203
  panning = false;
@@ -241,6 +209,9 @@
241
209
  $('.drag-target').css({width: '50%', right: 0, left: ''});
242
210
  }
243
211
  else if (!menuOut || velocityX > 0.3) {
212
+ // Enable Scrolling
213
+ $('body').css('overflow', '');
214
+ // Slide menu closed
244
215
  menu_id.velocity({left: -1 * (options.menuWidth + 10)}, {duration: 200, queue: false, easing: 'easeOutQuad'});
245
216
  $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad',
246
217
  complete: function () {
@@ -256,6 +227,9 @@
256
227
  $('.drag-target').css({width: '50%', right: '', left: 0});
257
228
  }
258
229
  else if (!menuOut || velocityX < -0.3) {
230
+ // Enable Scrolling
231
+ $('body').css('overflow', '');
232
+ // Slide menu closed
259
233
  menu_id.velocity({right: -1 * (options.menuWidth + 10)}, {duration: 200, queue: false, easing: 'easeOutQuad'});
260
234
  $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad',
261
235
  complete: function () {
@@ -269,13 +243,16 @@
269
243
  });
270
244
 
271
245
  $this.click(function() {
272
- if (menuOut == true) {
246
+ if (menuOut === true) {
273
247
  menuOut = false;
274
248
  panning = false;
275
249
  removeMenu();
276
250
  }
277
251
  else {
278
252
 
253
+ // Disable Scrolling
254
+ $('body').css('overflow', 'hidden');
255
+
279
256
  if (options.edge === 'left') {
280
257
  $('.drag-target').css({width: '50%', right: 0, left: ''});
281
258
  menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'});
@@ -331,5 +308,5 @@
331
308
  } else {
332
309
  $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' );
333
310
  }
334
- }; // PLugin end
311
+ }; // Plugin end
335
312
  }( jQuery ));
@@ -1,246 +1,274 @@
1
1
  (function ($) {
2
2
 
3
- $.fn.slider = function (options) {
4
- var defaults = {
5
- indicators: true,
6
- height: 400,
7
- transition: 500,
8
- interval: 6000
9
- }
10
- options = $.extend(defaults, options);
11
-
12
- return this.each(function() {
13
-
14
- // For each slider, we want to keep track of
15
- // which slide is active and its associated content
16
- var $this = $(this);
17
- var $slider = $this.find('ul.slides').first();
18
- var $slides = $slider.find('li');
19
- var $active_index = $slider.find('.active').index();
20
- var $active;
21
- if ($active_index != -1) { $active = $slides.eq($active_index); }
22
-
23
- // Transitions the caption depending on alignment
24
- function captionTransition(caption, duration) {
25
- if (caption.hasClass("center-align")) {
26
- caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false});
27
- }
28
- else if (caption.hasClass("right-align")) {
29
- caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false});
30
- }
31
- else if (caption.hasClass("left-align")) {
32
- caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false});
3
+ var methods = {
4
+
5
+ init : function(options) {
6
+ var defaults = {
7
+ indicators: true,
8
+ height: 400,
9
+ transition: 500,
10
+ interval: 6000
11
+ };
12
+ options = $.extend(defaults, options);
13
+ console.log(options);
14
+
15
+ return this.each(function() {
16
+
17
+ // For each slider, we want to keep track of
18
+ // which slide is active and its associated content
19
+ var $this = $(this);
20
+ var $slider = $this.find('ul.slides').first();
21
+ var $slides = $slider.find('li');
22
+ var $active_index = $slider.find('.active').index();
23
+ var $active;
24
+ if ($active_index != -1) { $active = $slides.eq($active_index); }
25
+
26
+ // Transitions the caption depending on alignment
27
+ function captionTransition(caption, duration) {
28
+ if (caption.hasClass("center-align")) {
29
+ caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false});
30
+ }
31
+ else if (caption.hasClass("right-align")) {
32
+ caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false});
33
+ }
34
+ else if (caption.hasClass("left-align")) {
35
+ caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false});
36
+ }
33
37
  }
34
- }
35
38
 
36
- // This function will transition the slide to any index of the next slide
37
- function moveToSlide(index) {
38
- if (index >= $slides.length) index = 0;
39
- else if (index < 0) index = $slides.length -1;
39
+ // This function will transition the slide to any index of the next slide
40
+ function moveToSlide(index) {
41
+ if (index >= $slides.length) index = 0;
42
+ else if (index < 0) index = $slides.length -1;
40
43
 
41
- $active_index = $slider.find('.active').index();
44
+ $active_index = $slider.find('.active').index();
42
45
 
43
- // Only do if index changes
44
- if ($active_index != index) {
45
- $active = $slides.eq($active_index);
46
- $caption = $active.find('.caption');
46
+ // Only do if index changes
47
+ if ($active_index != index) {
48
+ $active = $slides.eq($active_index);
49
+ $caption = $active.find('.caption');
47
50
 
48
- $active.removeClass('active');
49
- $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad',
50
- complete: function() {
51
- $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false});
52
- } });
53
- captionTransition($caption, options.transition);
51
+ $active.removeClass('active');
52
+ $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad',
53
+ complete: function() {
54
+ $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false});
55
+ } });
56
+ captionTransition($caption, options.transition);
54
57
 
55
58
 
56
- // Update indicators
57
- if (options.indicators) {
58
- $indicators.eq($active_index).removeClass('active');
59
- }
59
+ // Update indicators
60
+ if (options.indicators) {
61
+ $indicators.eq($active_index).removeClass('active');
62
+ }
60
63
 
61
- $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
62
- $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'});
63
- $slides.eq(index).addClass('active');
64
+ $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
65
+ $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'});
66
+ $slides.eq(index).addClass('active');
64
67
 
65
68
 
66
- // Update indicators
67
- if (options.indicators) {
68
- $indicators.eq(index).addClass('active');
69
+ // Update indicators
70
+ if (options.indicators) {
71
+ $indicators.eq(index).addClass('active');
72
+ }
69
73
  }
70
74
  }
71
- }
72
75
 
73
- // Set height of slider
74
- if (options.height != 400) {
75
- $this.height(options.height + 40);
76
+ console.log(options.height);
77
+ // Set height of slider
78
+ if (options.indicators) {
79
+ // Add height if indicators are present
80
+ $this.height(options.height + 40);
81
+ }
82
+ else {
83
+ $this.height(options.height);
84
+ }
76
85
  $slider.height(options.height);
77
- }
78
-
79
- // Set initial positions of captions
80
- $slides.find('.caption').each(function () {
81
- captionTransition($(this), 0);
82
- });
83
86
 
84
- // Set initial dimensions of images
85
- // $slides.find('img').each(function () {
86
- // $(this).load(function () {
87
- // if ($(this).width() < $(this).parent().width()) {
88
- // $(this).css({width: '100%', height: 'auto'});
89
- // }
90
- // });
91
- // });
92
-
93
- // Move img src into background-image
94
- $slides.find('img').each(function () {
95
- $(this).css('background-image', 'url(' + $(this).attr('src') + ')' );
96
- $(this).attr('src', 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==');
97
- });
98
-
99
- // dynamically add indicators
100
- if (options.indicators) {
101
- var $indicators = $('<ul class="indicators"></ul>');
102
- $slides.each(function( index ) {
103
- var $indicator = $('<li class="indicator-item"></li>');
104
-
105
- // Handle clicks on indicators
106
- $indicator.click(function () {
107
- var $parent = $slider.parent();
108
- var curr_index = $parent.find($(this)).index();
109
- moveToSlide(curr_index);
110
87
 
111
- // reset interval
112
- clearInterval($interval);
113
- $interval = setInterval(
114
- function(){
115
- $active_index = $slider.find('.active').index();
116
- if ($slides.length == $active_index + 1) $active_index = 0; // loop to start
117
- else $active_index += 1;
88
+ // Set initial positions of captions
89
+ $slides.find('.caption').each(function () {
90
+ captionTransition($(this), 0);
91
+ });
118
92
 
119
- moveToSlide($active_index);
93
+ // Set initial dimensions of images
94
+ // $slides.find('img').each(function () {
95
+ // $(this).load(function () {
96
+ // if ($(this).width() < $(this).parent().width()) {
97
+ // $(this).css({width: '100%', height: 'auto'});
98
+ // }
99
+ // });
100
+ // });
101
+
102
+ // Move img src into background-image
103
+ $slides.find('img').each(function () {
104
+ $(this).css('background-image', 'url(' + $(this).attr('src') + ')' );
105
+ $(this).attr('src', 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==');
106
+ });
120
107
 
121
- }, options.transition + options.interval
122
- );
108
+ // dynamically add indicators
109
+ if (options.indicators) {
110
+ var $indicators = $('<ul class="indicators"></ul>');
111
+ $slides.each(function( index ) {
112
+ var $indicator = $('<li class="indicator-item"></li>');
113
+
114
+ // Handle clicks on indicators
115
+ $indicator.click(function () {
116
+ var $parent = $slider.parent();
117
+ var curr_index = $parent.find($(this)).index();
118
+ moveToSlide(curr_index);
119
+
120
+ // reset interval
121
+ clearInterval($interval);
122
+ $interval = setInterval(
123
+ function(){
124
+ $active_index = $slider.find('.active').index();
125
+ if ($slides.length == $active_index + 1) $active_index = 0; // loop to start
126
+ else $active_index += 1;
127
+
128
+ moveToSlide($active_index);
129
+
130
+ }, options.transition + options.interval
131
+ );
132
+ });
133
+ $indicators.append($indicator);
123
134
  });
124
- $indicators.append($indicator);
125
- });
126
- $this.append($indicators);
127
- $indicators = $this.find('ul.indicators').find('li.indicator-item');
128
- }
135
+ $this.append($indicators);
136
+ $indicators = $this.find('ul.indicators').find('li.indicator-item');
137
+ }
129
138
 
130
- if ($active) {
131
- $active.show();
132
- }
133
- else {
134
- $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
139
+ if ($active) {
140
+ $active.show();
141
+ }
142
+ else {
143
+ $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
135
144
 
136
- $active_index = 0;
137
- $active = $slides.eq($active_index);
145
+ $active_index = 0;
146
+ $active = $slides.eq($active_index);
138
147
 
139
- // Update indicators
140
- if (options.indicators) {
141
- $indicators.eq($active_index).addClass('active');
148
+ // Update indicators
149
+ if (options.indicators) {
150
+ $indicators.eq($active_index).addClass('active');
151
+ }
142
152
  }
143
- }
144
153
 
145
- // Adjust height to current slide
146
- $active.find('img').each(function() {
147
- $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
148
- });
154
+ // Adjust height to current slide
155
+ $active.find('img').each(function() {
156
+ $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'});
157
+ });
149
158
 
150
- // auto scroll
151
- $interval = setInterval(
152
- function(){
153
- $active_index = $slider.find('.active').index();
154
- moveToSlide($active_index + 1);
159
+ // auto scroll
160
+ $interval = setInterval(
161
+ function(){
162
+ $active_index = $slider.find('.active').index();
163
+ moveToSlide($active_index + 1);
155
164
 
156
- }, options.transition + options.interval
157
- );
165
+ }, options.transition + options.interval
166
+ );
158
167
 
159
168
 
160
- // HammerJS, Swipe navigation
169
+ // HammerJS, Swipe navigation
161
170
 
162
- // Touch Event
163
- var panning = false;
164
- var swipeLeft = false;
165
- var swipeRight = false;
171
+ // Touch Event
172
+ var panning = false;
173
+ var swipeLeft = false;
174
+ var swipeRight = false;
166
175
 
167
- $this.hammer({
168
- prevent_default: false
169
- }).bind('pan', function(e) {
170
- if (e.gesture.pointerType === "touch") {
176
+ $this.hammer({
177
+ prevent_default: false
178
+ }).bind('pan', function(e) {
179
+ if (e.gesture.pointerType === "touch") {
171
180
 
172
- // reset interval
173
- clearInterval($interval);
181
+ // reset interval
182
+ clearInterval($interval);
174
183
 
175
- var direction = e.gesture.direction;
176
- var x = e.gesture.deltaX;
177
- var velocityX = e.gesture.velocityX;
184
+ var direction = e.gesture.direction;
185
+ var x = e.gesture.deltaX;
186
+ var velocityX = e.gesture.velocityX;
178
187
 
179
- $curr_slide = $slider.find('.active');
180
- $curr_slide.velocity({ translateX: x
181
- }, {duration: 50, queue: false, easing: 'easeOutQuad'});
188
+ $curr_slide = $slider.find('.active');
189
+ $curr_slide.velocity({ translateX: x
190
+ }, {duration: 50, queue: false, easing: 'easeOutQuad'});
182
191
 
183
- // Swipe Left
184
- if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) {
185
- swipeRight = true;
186
- }
187
- // Swipe Right
188
- else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) {
189
- swipeLeft = true;
190
- }
192
+ // Swipe Left
193
+ if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) {
194
+ swipeRight = true;
195
+ }
196
+ // Swipe Right
197
+ else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) {
198
+ swipeLeft = true;
199
+ }
191
200
 
192
- // Make Slide Behind active slide visible
193
- var next_slide;
194
- if (swipeLeft) {
195
- next_slide = $curr_slide.next();
196
- if (next_slide.length === 0) {
197
- next_slide = $slides.first();
201
+ // Make Slide Behind active slide visible
202
+ var next_slide;
203
+ if (swipeLeft) {
204
+ next_slide = $curr_slide.next();
205
+ if (next_slide.length === 0) {
206
+ next_slide = $slides.first();
207
+ }
208
+ next_slide.velocity({ opacity: 1
209
+ }, {duration: 300, queue: false, easing: 'easeOutQuad'});
198
210
  }
199
- next_slide.velocity({ opacity: 1
200
- }, {duration: 300, queue: false, easing: 'easeOutQuad'});
201
- }
202
- if (swipeRight) {
203
- next_slide = $curr_slide.prev();
204
- if (next_slide.length === 0) {
205
- next_slide = $slides.last();
211
+ if (swipeRight) {
212
+ next_slide = $curr_slide.prev();
213
+ if (next_slide.length === 0) {
214
+ next_slide = $slides.last();
215
+ }
216
+ next_slide.velocity({ opacity: 1
217
+ }, {duration: 300, queue: false, easing: 'easeOutQuad'});
206
218
  }
207
- next_slide.velocity({ opacity: 1
208
- }, {duration: 300, queue: false, easing: 'easeOutQuad'});
219
+
220
+
209
221
  }
210
222
 
223
+ }).bind('panend', function(e) {
224
+ if (e.gesture.pointerType === "touch") {
211
225
 
212
- }
226
+ $curr_slide = $slider.find('.active');
227
+ panning = false;
228
+ curr_index = $slider.find('.active').index();
213
229
 
214
- }).bind('panend', function(e) {
215
- if (e.gesture.pointerType === "touch") {
230
+ if (!swipeRight && !swipeLeft) {
231
+ // Return to original spot
232
+ $curr_slide.velocity({ translateX: 0
233
+ }, {duration: 300, queue: false, easing: 'easeOutQuad'});
234
+ }
235
+ else if (swipeLeft) {
236
+ moveToSlide(curr_index + 1);
237
+ $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad',
238
+ complete: function() {
239
+ $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false});
240
+ } });
241
+ }
242
+ else if (swipeRight) {
243
+ moveToSlide(curr_index - 1);
244
+ $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad',
245
+ complete: function() {
246
+ $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false});
247
+ } });
248
+ }
249
+ swipeLeft = false;
250
+ swipeRight = false;
216
251
 
217
- $curr_slide = $slider.find('.active');
218
- panning = false;
219
- curr_index = $slider.find('.active').index();
252
+ // Restart interval
253
+ clearInterval($interval);
254
+ $interval = setInterval(
255
+ function(){
256
+ $active_index = $slider.find('.active').index();
257
+ if ($slides.length == $active_index + 1) $active_index = 0; // loop to start
258
+ else $active_index += 1;
220
259
 
221
- if (!swipeRight && !swipeLeft) {
222
- // Return to original spot
223
- $curr_slide.velocity({ translateX: 0
224
- }, {duration: 300, queue: false, easing: 'easeOutQuad'});
225
- }
226
- else if (swipeLeft) {
227
- moveToSlide(curr_index + 1);
228
- $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad',
229
- complete: function() {
230
- $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false});
231
- } });
232
- }
233
- else if (swipeRight) {
234
- moveToSlide(curr_index - 1);
235
- $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad',
236
- complete: function() {
237
- $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false});
238
- } });
260
+ moveToSlide($active_index);
261
+
262
+ }, options.transition + options.interval
263
+ );
239
264
  }
240
- swipeLeft = false;
241
- swipeRight = false;
265
+ });
242
266
 
243
- // Restart interval
267
+ $this.on('sliderPause', function() {
268
+ clearInterval($interval);
269
+ });
270
+
271
+ $this.on('sliderStart', function() {
244
272
  clearInterval($interval);
245
273
  $interval = setInterval(
246
274
  function(){
@@ -252,12 +280,30 @@
252
280
 
253
281
  }, options.transition + options.interval
254
282
  );
255
- }
256
- });
283
+ });
257
284
 
258
- });
285
+ });
259
286
 
260
287
 
261
288
 
289
+ },
290
+ pause : function() {
291
+ $(this).trigger('sliderPause');
292
+ },
293
+ start : function() {
294
+ $(this).trigger('sliderStart');
295
+ }
262
296
  };
263
- }( jQuery ));
297
+
298
+
299
+ $.fn.slider = function(methodOrOptions) {
300
+ if ( methods[methodOrOptions] ) {
301
+ return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
302
+ } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
303
+ // Default to "init"
304
+ return methods.init.apply( this, arguments );
305
+ } else {
306
+ $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' );
307
+ }
308
+ }; // Plugin end
309
+ }( jQuery ));