materialize-sass 0.99.0 → 0.100.0
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.
- checksums.yaml +4 -4
- data/Rakefile +2 -2
- data/app/assets/javascripts/materialize.js +6015 -5060
- data/app/assets/javascripts/materialize/animation.js +4 -5
- data/app/assets/javascripts/materialize/buttons.js +24 -38
- data/app/assets/javascripts/materialize/cards.js +13 -21
- data/app/assets/javascripts/materialize/carousel.js +122 -110
- data/app/assets/javascripts/materialize/character_counter.js +14 -22
- data/app/assets/javascripts/materialize/chips.js +41 -44
- data/app/assets/javascripts/materialize/collapsible.js +41 -46
- data/app/assets/javascripts/materialize/date_picker/picker.date.js +965 -1167
- data/app/assets/javascripts/materialize/date_picker/picker.js +546 -634
- data/app/assets/javascripts/materialize/date_picker/picker.time.js +166 -212
- data/app/assets/javascripts/materialize/dropdown.js +53 -68
- data/app/assets/javascripts/materialize/extras/nouislider.js +3 -1
- data/app/assets/javascripts/materialize/extras/nouislider.min.js +1 -1
- data/app/assets/javascripts/materialize/forms.js +156 -154
- data/app/assets/javascripts/materialize/global.js +34 -43
- data/app/assets/javascripts/materialize/hammer.min.js +424 -1
- data/app/assets/javascripts/materialize/initial.js +3 -3
- data/app/assets/javascripts/materialize/jquery.easing.1.4.js +120 -142
- data/app/assets/javascripts/materialize/jquery.hammer.js +9 -9
- data/app/assets/javascripts/materialize/materialbox.js +81 -107
- data/app/assets/javascripts/materialize/modal.js +373 -162
- data/app/assets/javascripts/materialize/parallax.js +11 -15
- data/app/assets/javascripts/materialize/pushpin.js +2 -5
- data/app/assets/javascripts/materialize/scrollFire.js +9 -11
- data/app/assets/javascripts/materialize/scrollspy.js +84 -92
- data/app/assets/javascripts/materialize/sideNav.js +128 -139
- data/app/assets/javascripts/materialize/slider.js +83 -112
- data/app/assets/javascripts/materialize/tabs.js +196 -196
- data/app/assets/javascripts/materialize/tapTarget.js +170 -173
- data/app/assets/javascripts/materialize/toasts.js +330 -112
- data/app/assets/javascripts/materialize/tooltip.js +134 -145
- data/app/assets/javascripts/materialize/transitions.js +43 -49
- data/app/assets/javascripts/materialize/velocity.min.js +623 -2
- data/app/assets/javascripts/materialize/waves.js +42 -47
- data/app/assets/stylesheets/materialize/components/_buttons.scss +1 -1
- data/app/assets/stylesheets/materialize/components/_carousel.scss +4 -5
- data/app/assets/stylesheets/materialize/components/_chips.scss +1 -0
- data/app/assets/stylesheets/materialize/components/_collapsible.scss +4 -7
- data/app/assets/stylesheets/materialize/components/_color.scss +1 -1
- data/app/assets/stylesheets/materialize/components/_global.scss +8 -14
- data/app/assets/stylesheets/materialize/components/_navbar.scss +0 -1
- data/app/assets/stylesheets/materialize/components/_tabs.scss +1 -7
- data/app/assets/stylesheets/materialize/components/_toast.scss +6 -12
- data/app/assets/stylesheets/materialize/components/_variables.scss +55 -43
- data/app/assets/stylesheets/materialize/components/date_picker/_default.scss +1 -0
- data/app/assets/stylesheets/materialize/components/forms/_checkboxes.scss +2 -12
- data/app/assets/stylesheets/materialize/components/forms/_file-input.scss +6 -0
- data/app/assets/stylesheets/materialize/components/forms/_input-fields.scss +67 -37
- data/app/assets/stylesheets/materialize/components/forms/_radio-buttons.scss +1 -3
- data/app/assets/stylesheets/materialize/components/forms/_select.scss +72 -11
- data/app/assets/stylesheets/materialize/components/forms/_switches.scss +2 -4
- data/app/assets/stylesheets/materialize/extras/nouislider.css +8 -1
- data/lib/materialize-sass/version.rb +1 -1
- metadata +2 -5
- data/app/assets/javascripts/materialize/init.js +0 -214
- data/app/assets/javascripts/materialize/jquery.timeago.min.js +0 -1
- data/app/assets/javascripts/materialize/prism.js +0 -8
@@ -1,8 +1,7 @@
|
|
1
1
|
// Custom Easing
|
2
|
-
jQuery.extend(
|
3
|
-
{
|
2
|
+
jQuery.extend(jQuery.easing, {
|
4
3
|
easeInOutMaterial: function (x, t, b, c, d) {
|
5
|
-
if ((t/=d/2) < 1) return c/2*t*t + b;
|
6
|
-
return c/4*((t-=2)*t*t + 2) + b;
|
4
|
+
if ((t /= d / 2) < 1) return c / 2 * t * t + b;
|
5
|
+
return c / 4 * ((t -= 2) * t * t + 2) + b;
|
7
6
|
}
|
8
|
-
});
|
7
|
+
});
|
@@ -1,21 +1,21 @@
|
|
1
1
|
(function ($) {
|
2
|
-
$(document).on('ready turbolinks:load', function() {
|
2
|
+
$(document).on('ready turbolinks:load', function () {
|
3
3
|
|
4
4
|
// jQuery reverse
|
5
5
|
$.fn.reverse = [].reverse;
|
6
6
|
|
7
7
|
// Hover behaviour: make sure this doesn't work on .click-to-toggle FABs!
|
8
|
-
$(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) {
|
8
|
+
$(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function (e) {
|
9
9
|
var $this = $(this);
|
10
10
|
openFABMenu($this);
|
11
11
|
});
|
12
|
-
$(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function(e) {
|
12
|
+
$(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn:not(.click-to-toggle):not(.toolbar)', function (e) {
|
13
13
|
var $this = $(this);
|
14
14
|
closeFABMenu($this);
|
15
15
|
});
|
16
16
|
|
17
17
|
// Toggle-on-click behaviour.
|
18
|
-
$(document).on('click.fabClickToggle', '.fixed-action-btn.click-to-toggle > a', function(e) {
|
18
|
+
$(document).on('click.fabClickToggle', '.fixed-action-btn.click-to-toggle > a', function (e) {
|
19
19
|
var $this = $(this);
|
20
20
|
var $menu = $this.parent();
|
21
21
|
if ($menu.hasClass('active')) {
|
@@ -26,30 +26,28 @@
|
|
26
26
|
});
|
27
27
|
|
28
28
|
// Toolbar transition behaviour.
|
29
|
-
$(document).on('click.fabToolbar', '.fixed-action-btn.toolbar > a', function(e) {
|
29
|
+
$(document).on('click.fabToolbar', '.fixed-action-btn.toolbar > a', function (e) {
|
30
30
|
var $this = $(this);
|
31
31
|
var $menu = $this.parent();
|
32
32
|
FABtoToolbar($menu);
|
33
33
|
});
|
34
|
-
|
35
34
|
});
|
36
35
|
|
37
36
|
$.fn.extend({
|
38
|
-
openFAB: function() {
|
37
|
+
openFAB: function () {
|
39
38
|
openFABMenu($(this));
|
40
39
|
},
|
41
|
-
closeFAB: function() {
|
40
|
+
closeFAB: function () {
|
42
41
|
closeFABMenu($(this));
|
43
42
|
},
|
44
|
-
openToolbar: function() {
|
43
|
+
openToolbar: function () {
|
45
44
|
FABtoToolbar($(this));
|
46
45
|
},
|
47
|
-
closeToolbar: function() {
|
46
|
+
closeToolbar: function () {
|
48
47
|
toolbarToFAB($(this));
|
49
48
|
}
|
50
49
|
});
|
51
50
|
|
52
|
-
|
53
51
|
var openFABMenu = function (btn) {
|
54
52
|
var $this = btn;
|
55
53
|
if ($this.hasClass('active') === false) {
|
@@ -65,15 +63,11 @@
|
|
65
63
|
}
|
66
64
|
|
67
65
|
$this.addClass('active');
|
68
|
-
$this.find('ul .btn-floating').velocity(
|
69
|
-
{ scaleY: ".4", scaleX: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'},
|
70
|
-
{ duration: 0 });
|
66
|
+
$this.find('ul .btn-floating').velocity({ scaleY: ".4", scaleX: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px' }, { duration: 0 });
|
71
67
|
|
72
68
|
var time = 0;
|
73
|
-
$this.find('ul .btn-floating').reverse().each(
|
74
|
-
$(this).velocity(
|
75
|
-
{ opacity: "1", scaleX: "1", scaleY: "1", translateY: "0", translateX: '0'},
|
76
|
-
{ duration: 80, delay: time });
|
69
|
+
$this.find('ul .btn-floating').reverse().each(function () {
|
70
|
+
$(this).velocity({ opacity: "1", scaleX: "1", scaleY: "1", translateY: "0", translateX: '0' }, { duration: 80, delay: time });
|
77
71
|
time += 40;
|
78
72
|
});
|
79
73
|
}
|
@@ -94,18 +88,14 @@
|
|
94
88
|
$this.removeClass('active');
|
95
89
|
var time = 0;
|
96
90
|
$this.find('ul .btn-floating').velocity("stop", true);
|
97
|
-
$this.find('ul .btn-floating').velocity(
|
98
|
-
{ opacity: "0", scaleX: ".4", scaleY: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px'},
|
99
|
-
{ duration: 80 }
|
100
|
-
);
|
91
|
+
$this.find('ul .btn-floating').velocity({ opacity: "0", scaleX: ".4", scaleY: ".4", translateY: offsetY + 'px', translateX: offsetX + 'px' }, { duration: 80 });
|
101
92
|
};
|
102
93
|
|
103
|
-
|
104
94
|
/**
|
105
95
|
* Transform FAB into toolbar
|
106
96
|
* @param {Object} object jQuery object
|
107
97
|
*/
|
108
|
-
var FABtoToolbar = function(btn) {
|
98
|
+
var FABtoToolbar = function (btn) {
|
109
99
|
if (btn.attr('data-open') === "true") {
|
110
100
|
return;
|
111
101
|
}
|
@@ -120,7 +110,7 @@
|
|
120
110
|
var fabColor = anchor.css('background-color');
|
121
111
|
anchor.append(backdrop);
|
122
112
|
|
123
|
-
offsetX = btnRect.left -
|
113
|
+
offsetX = btnRect.left - windowWidth / 2 + btnRect.width / 2;
|
124
114
|
offsetY = windowHeight - btnRect.bottom;
|
125
115
|
scaleFactor = windowWidth / backdrop.width();
|
126
116
|
btn.attr('data-origin-bottom', btnRect.bottom);
|
@@ -146,8 +136,7 @@
|
|
146
136
|
'background-color': fabColor
|
147
137
|
});
|
148
138
|
|
149
|
-
|
150
|
-
setTimeout(function() {
|
139
|
+
setTimeout(function () {
|
151
140
|
btn.css({
|
152
141
|
transform: '',
|
153
142
|
transition: 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s'
|
@@ -158,7 +147,7 @@
|
|
158
147
|
transition: 'transform .2s'
|
159
148
|
});
|
160
149
|
|
161
|
-
setTimeout(function() {
|
150
|
+
setTimeout(function () {
|
162
151
|
btn.css({
|
163
152
|
overflow: 'hidden',
|
164
153
|
'background-color': fabColor
|
@@ -172,13 +161,13 @@
|
|
172
161
|
});
|
173
162
|
|
174
163
|
// Scroll to close.
|
175
|
-
$(window).on('scroll.fabToolbarClose', function() {
|
164
|
+
$(window).on('scroll.fabToolbarClose', function () {
|
176
165
|
toolbarToFAB(btn);
|
177
166
|
$(window).off('scroll.fabToolbarClose');
|
178
167
|
$(document).off('click.fabToolbarClose');
|
179
168
|
});
|
180
169
|
|
181
|
-
$(document).on('click.fabToolbarClose', function(e) {
|
170
|
+
$(document).on('click.fabToolbarClose', function (e) {
|
182
171
|
if (!$(e.target).closest(menu).length) {
|
183
172
|
toolbarToFAB(btn);
|
184
173
|
$(window).off('scroll.fabToolbarClose');
|
@@ -193,7 +182,7 @@
|
|
193
182
|
* Transform toolbar back into FAB
|
194
183
|
* @param {Object} object jQuery object
|
195
184
|
*/
|
196
|
-
var toolbarToFAB = function(btn) {
|
185
|
+
var toolbarToFAB = function (btn) {
|
197
186
|
if (btn.attr('data-open') !== "true") {
|
198
187
|
return;
|
199
188
|
}
|
@@ -209,11 +198,10 @@
|
|
209
198
|
var backdrop = btn.find('.fab-backdrop');
|
210
199
|
var fabColor = anchor.css('background-color');
|
211
200
|
|
212
|
-
offsetX = btnLeft -
|
201
|
+
offsetX = btnLeft - windowWidth / 2 + btnWidth / 2;
|
213
202
|
offsetY = windowHeight - btnBottom;
|
214
203
|
scaleFactor = windowWidth / backdrop.width();
|
215
204
|
|
216
|
-
|
217
205
|
// Hide backdrop
|
218
206
|
btn.removeClass('active');
|
219
207
|
btn.attr('data-open', false);
|
@@ -232,7 +220,7 @@
|
|
232
220
|
opacity: ''
|
233
221
|
});
|
234
222
|
|
235
|
-
setTimeout(function() {
|
223
|
+
setTimeout(function () {
|
236
224
|
backdrop.remove();
|
237
225
|
|
238
226
|
// Set initial state.
|
@@ -250,7 +238,7 @@
|
|
250
238
|
transform: 'translate3d(0,' + offsetY + 'px,0)'
|
251
239
|
});
|
252
240
|
|
253
|
-
setTimeout(function() {
|
241
|
+
setTimeout(function () {
|
254
242
|
btn.css({
|
255
243
|
transform: 'translate3d(0,0,0)',
|
256
244
|
transition: 'transform .2s'
|
@@ -262,6 +250,4 @@
|
|
262
250
|
}, 20);
|
263
251
|
}, 200);
|
264
252
|
};
|
265
|
-
|
266
|
-
|
267
|
-
}( jQuery ));
|
253
|
+
})(jQuery);
|
@@ -1,36 +1,28 @@
|
|
1
1
|
(function ($) {
|
2
|
-
$(document).on('ready turbolinks:load', function() {
|
2
|
+
$(document).on('ready turbolinks:load', function () {
|
3
3
|
|
4
4
|
$(document).on('click.card', '.card', function (e) {
|
5
5
|
if ($(this).find('> .card-reveal').length) {
|
6
6
|
var $card = $(e.target).closest('.card');
|
7
7
|
if ($card.data('initialOverflow') === undefined) {
|
8
|
-
$card.data(
|
9
|
-
'initialOverflow',
|
10
|
-
$card.css('overflow') === undefined ? '' : $card.css('overflow')
|
11
|
-
);
|
8
|
+
$card.data('initialOverflow', $card.css('overflow') === undefined ? '' : $card.css('overflow'));
|
12
9
|
}
|
13
10
|
if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) {
|
14
11
|
// Make Reveal animate down and display none
|
15
|
-
$(this).find('.card-reveal').velocity(
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
$card.css('overflow', $card.data('initialOverflow'));
|
23
|
-
}
|
12
|
+
$(this).find('.card-reveal').velocity({ translateY: 0 }, {
|
13
|
+
duration: 225,
|
14
|
+
queue: false,
|
15
|
+
easing: 'easeInOutQuad',
|
16
|
+
complete: function () {
|
17
|
+
$(this).css({ display: 'none' });
|
18
|
+
$card.css('overflow', $card.data('initialOverflow'));
|
24
19
|
}
|
25
|
-
);
|
26
|
-
}
|
27
|
-
else if ($(e.target).is($('.card .activator')) ||
|
28
|
-
$(e.target).is($('.card .activator i')) ) {
|
20
|
+
});
|
21
|
+
} else if ($(e.target).is($('.card .activator')) || $(e.target).is($('.card .activator i'))) {
|
29
22
|
$card.css('overflow', 'hidden');
|
30
|
-
$(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'});
|
23
|
+
$(this).find('.card-reveal').css({ display: 'block' }).velocity("stop", false).velocity({ translateY: '-100%' }, { duration: 300, queue: false, easing: 'easeInOutQuad' });
|
31
24
|
}
|
32
25
|
}
|
33
26
|
});
|
34
|
-
|
35
27
|
});
|
36
|
-
}(
|
28
|
+
})(jQuery);
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
var methods = {
|
4
4
|
|
5
|
-
init
|
5
|
+
init: function (options) {
|
6
6
|
var defaults = {
|
7
7
|
duration: 200, // ms
|
8
8
|
dist: -100, // zoom scale TODO: make this more intuitive as an option
|
@@ -16,36 +16,47 @@
|
|
16
16
|
options = $.extend(defaults, options);
|
17
17
|
var namespace = Materialize.objectSelectorString($(this));
|
18
18
|
|
19
|
-
return this.each(function(i) {
|
19
|
+
return this.each(function (i) {
|
20
20
|
|
21
|
-
var
|
22
|
-
var images, item_width, item_height, offset, center, pressed, dim, count,
|
23
|
-
reference, referenceY, amplitude, target, velocity, scrolling,
|
24
|
-
xform, frame, timestamp, ticker, dragged, vertical_dragged;
|
21
|
+
var images, item_width, item_height, offset, center, pressed, dim, count, reference, referenceY, amplitude, target, velocity, scrolling, xform, frame, timestamp, ticker, dragged, vertical_dragged;
|
25
22
|
var $indicators = $('<ul class="indicators"></ul>');
|
26
23
|
var scrollingTimeout = null;
|
27
24
|
var oneTimeCallback = null;
|
28
25
|
|
29
|
-
|
30
26
|
// Initialize
|
31
27
|
var view = $(this);
|
32
|
-
var
|
33
|
-
|
28
|
+
var hasMultipleSlides = view.find('.carousel-item').length > 1;
|
29
|
+
var showIndicators = (view.attr('data-indicators') || options.indicators) && hasMultipleSlides;
|
30
|
+
var noWrap = view.attr('data-no-wrap') || options.noWrap || !hasMultipleSlides;
|
31
|
+
var uniqueNamespace = view.attr('data-namespace') || namespace + i;
|
32
|
+
view.attr('data-namespace', uniqueNamespace);
|
34
33
|
|
35
34
|
// Options
|
36
|
-
var setCarouselHeight = function() {
|
37
|
-
var
|
35
|
+
var setCarouselHeight = function (imageOnly) {
|
36
|
+
var firstSlide = view.find('.carousel-item.active').length ? view.find('.carousel-item.active').first() : view.find('.carousel-item').first();
|
37
|
+
var firstImage = firstSlide.find('img').first();
|
38
38
|
if (firstImage.length) {
|
39
|
-
if (firstImage.
|
40
|
-
|
39
|
+
if (firstImage[0].complete) {
|
40
|
+
// If image won't trigger the load event
|
41
|
+
var imageHeight = firstImage.height();
|
42
|
+
if (imageHeight > 0) {
|
43
|
+
view.css('height', firstImage.height());
|
44
|
+
} else {
|
45
|
+
// If image still has no height, use the natural dimensions to calculate
|
46
|
+
var naturalWidth = firstImage[0].naturalWidth;
|
47
|
+
var naturalHeight = firstImage[0].naturalHeight;
|
48
|
+
var adjustedHeight = view.width() / naturalWidth * naturalHeight;
|
49
|
+
view.css('height', adjustedHeight);
|
50
|
+
}
|
41
51
|
} else {
|
42
|
-
|
52
|
+
// Get height when image is loaded normally
|
53
|
+
firstImage.on('load', function () {
|
43
54
|
view.css('height', $(this).height());
|
44
55
|
});
|
45
56
|
}
|
46
|
-
} else {
|
47
|
-
var
|
48
|
-
view.css('height',
|
57
|
+
} else if (!imageOnly) {
|
58
|
+
var slideHeight = firstSlide.height();
|
59
|
+
view.css('height', slideHeight);
|
49
60
|
}
|
50
61
|
};
|
51
62
|
|
@@ -59,18 +70,16 @@
|
|
59
70
|
}
|
60
71
|
}
|
61
72
|
|
62
|
-
|
63
73
|
// Don't double initialize.
|
64
74
|
if (view.hasClass('initialized')) {
|
65
75
|
// Recalculate variables
|
66
76
|
$(window).trigger('resize');
|
67
77
|
|
68
78
|
// Redraw carousel.
|
69
|
-
|
79
|
+
view.trigger('carouselNext', [0.000001]);
|
70
80
|
return true;
|
71
81
|
}
|
72
82
|
|
73
|
-
|
74
83
|
view.addClass('initialized');
|
75
84
|
pressed = false;
|
76
85
|
offset = target = 0;
|
@@ -105,23 +114,22 @@
|
|
105
114
|
}
|
106
115
|
count = images.length;
|
107
116
|
|
108
|
-
|
109
117
|
function setupEvents() {
|
110
118
|
if (typeof window.ontouchstart !== 'undefined') {
|
111
|
-
view
|
112
|
-
view
|
113
|
-
view
|
114
|
-
}
|
115
|
-
view
|
116
|
-
view
|
117
|
-
view
|
118
|
-
view
|
119
|
-
view
|
119
|
+
view.on('touchstart.carousel', tap);
|
120
|
+
view.on('touchmove.carousel', drag);
|
121
|
+
view.on('touchend.carousel', release);
|
122
|
+
}
|
123
|
+
view.on('mousedown.carousel', tap);
|
124
|
+
view.on('mousemove.carousel', drag);
|
125
|
+
view.on('mouseup.carousel', release);
|
126
|
+
view.on('mouseleave.carousel', release);
|
127
|
+
view.on('click.carousel', click);
|
120
128
|
}
|
121
129
|
|
122
130
|
function xpos(e) {
|
123
131
|
// touch event
|
124
|
-
if (e.targetTouches &&
|
132
|
+
if (e.targetTouches && e.targetTouches.length >= 1) {
|
125
133
|
return e.targetTouches[0].clientX;
|
126
134
|
}
|
127
135
|
|
@@ -131,7 +139,7 @@
|
|
131
139
|
|
132
140
|
function ypos(e) {
|
133
141
|
// touch event
|
134
|
-
if (e.targetTouches &&
|
142
|
+
if (e.targetTouches && e.targetTouches.length >= 1) {
|
135
143
|
return e.targetTouches[0].clientY;
|
136
144
|
}
|
137
145
|
|
@@ -140,7 +148,7 @@
|
|
140
148
|
}
|
141
149
|
|
142
150
|
function wrap(x) {
|
143
|
-
return
|
151
|
+
return x >= count ? x % count : x < 0 ? wrap(count + x % count) : x;
|
144
152
|
}
|
145
153
|
|
146
154
|
function scroll(x) {
|
@@ -152,7 +160,7 @@
|
|
152
160
|
if (scrollingTimeout != null) {
|
153
161
|
window.clearTimeout(scrollingTimeout);
|
154
162
|
}
|
155
|
-
scrollingTimeout = window.setTimeout(function() {
|
163
|
+
scrollingTimeout = window.setTimeout(function () {
|
156
164
|
scrolling = false;
|
157
165
|
view.removeClass('scrolling');
|
158
166
|
}, options.duration);
|
@@ -161,10 +169,10 @@
|
|
161
169
|
var i, half, delta, dir, tween, el, alignment, xTranslation;
|
162
170
|
var lastCenter = center;
|
163
171
|
|
164
|
-
offset =
|
172
|
+
offset = typeof x === 'number' ? x : offset;
|
165
173
|
center = Math.floor((offset + dim / 2) / dim);
|
166
174
|
delta = offset - center * dim;
|
167
|
-
dir =
|
175
|
+
dir = delta < 0 ? 1 : -1;
|
168
176
|
tween = -dir * delta * 2 / dim;
|
169
177
|
half = count >> 1;
|
170
178
|
|
@@ -177,7 +185,7 @@
|
|
177
185
|
|
178
186
|
// Set indicator active
|
179
187
|
if (showIndicators) {
|
180
|
-
var diff =
|
188
|
+
var diff = center % count;
|
181
189
|
var activeIndicator = $indicators.find('.indicator-item.active');
|
182
190
|
if (activeIndicator.index() !== diff) {
|
183
191
|
activeIndicator.removeClass('active');
|
@@ -187,7 +195,7 @@
|
|
187
195
|
|
188
196
|
// center
|
189
197
|
// Don't show wrapped items.
|
190
|
-
if (!
|
198
|
+
if (!noWrap || center >= 0 && center < count) {
|
191
199
|
el = images[wrap(center)];
|
192
200
|
|
193
201
|
// Add active class to center item.
|
@@ -195,13 +203,13 @@
|
|
195
203
|
view.find('.carousel-item').removeClass('active');
|
196
204
|
$(el).addClass('active');
|
197
205
|
}
|
198
|
-
el.style[xform] = alignment +
|
199
|
-
' translateX(' + (-delta / 2) + 'px)' +
|
200
|
-
' translateX(' + (dir * options.shift * tween * i) + 'px)' +
|
201
|
-
' translateZ(' + (options.dist * tween) + 'px)';
|
206
|
+
el.style[xform] = alignment + ' translateX(' + -delta / 2 + 'px)' + ' translateX(' + dir * options.shift * tween * i + 'px)' + ' translateZ(' + options.dist * tween + 'px)';
|
202
207
|
el.style.zIndex = 0;
|
203
|
-
if (options.fullWidth) {
|
204
|
-
|
208
|
+
if (options.fullWidth) {
|
209
|
+
tweenedOpacity = 1;
|
210
|
+
} else {
|
211
|
+
tweenedOpacity = 1 - 0.2 * tween;
|
212
|
+
}
|
205
213
|
el.style.opacity = tweenedOpacity;
|
206
214
|
el.style.display = 'block';
|
207
215
|
}
|
@@ -210,37 +218,32 @@
|
|
210
218
|
// right side
|
211
219
|
if (options.fullWidth) {
|
212
220
|
zTranslation = options.dist;
|
213
|
-
tweenedOpacity =
|
221
|
+
tweenedOpacity = i === half && delta < 0 ? 1 - tween : 1;
|
214
222
|
} else {
|
215
223
|
zTranslation = options.dist * (i * 2 + tween * dir);
|
216
224
|
tweenedOpacity = 1 - 0.2 * (i * 2 + tween * dir);
|
217
225
|
}
|
218
226
|
// Don't show wrapped items.
|
219
|
-
if (!
|
227
|
+
if (!noWrap || center + i < count) {
|
220
228
|
el = images[wrap(center + i)];
|
221
|
-
el.style[xform] = alignment +
|
222
|
-
' translateX(' + (options.shift + (dim * i - delta) / 2) + 'px)' +
|
223
|
-
' translateZ(' + zTranslation + 'px)';
|
229
|
+
el.style[xform] = alignment + ' translateX(' + (options.shift + (dim * i - delta) / 2) + 'px)' + ' translateZ(' + zTranslation + 'px)';
|
224
230
|
el.style.zIndex = -i;
|
225
231
|
el.style.opacity = tweenedOpacity;
|
226
232
|
el.style.display = 'block';
|
227
233
|
}
|
228
234
|
|
229
|
-
|
230
235
|
// left side
|
231
236
|
if (options.fullWidth) {
|
232
237
|
zTranslation = options.dist;
|
233
|
-
tweenedOpacity =
|
238
|
+
tweenedOpacity = i === half && delta > 0 ? 1 - tween : 1;
|
234
239
|
} else {
|
235
240
|
zTranslation = options.dist * (i * 2 - tween * dir);
|
236
241
|
tweenedOpacity = 1 - 0.2 * (i * 2 - tween * dir);
|
237
242
|
}
|
238
243
|
// Don't show wrapped items.
|
239
|
-
if (!
|
244
|
+
if (!noWrap || center - i >= 0) {
|
240
245
|
el = images[wrap(center - i)];
|
241
|
-
el.style[xform] = alignment +
|
242
|
-
' translateX(' + (-options.shift + (-dim * i - delta) / 2) + 'px)' +
|
243
|
-
' translateZ(' + zTranslation + 'px)';
|
246
|
+
el.style[xform] = alignment + ' translateX(' + (-options.shift + (-dim * i - delta) / 2) + 'px)' + ' translateZ(' + zTranslation + 'px)';
|
244
247
|
el.style.zIndex = -i;
|
245
248
|
el.style.opacity = tweenedOpacity;
|
246
249
|
el.style.display = 'block';
|
@@ -249,28 +252,27 @@
|
|
249
252
|
|
250
253
|
// center
|
251
254
|
// Don't show wrapped items.
|
252
|
-
if (!
|
255
|
+
if (!noWrap || center >= 0 && center < count) {
|
253
256
|
el = images[wrap(center)];
|
254
|
-
el.style[xform] = alignment +
|
255
|
-
' translateX(' + (-delta / 2) + 'px)' +
|
256
|
-
' translateX(' + (dir * options.shift * tween) + 'px)' +
|
257
|
-
' translateZ(' + (options.dist * tween) + 'px)';
|
257
|
+
el.style[xform] = alignment + ' translateX(' + -delta / 2 + 'px)' + ' translateX(' + dir * options.shift * tween + 'px)' + ' translateZ(' + options.dist * tween + 'px)';
|
258
258
|
el.style.zIndex = 0;
|
259
|
-
if (options.fullWidth) {
|
260
|
-
|
259
|
+
if (options.fullWidth) {
|
260
|
+
tweenedOpacity = 1;
|
261
|
+
} else {
|
262
|
+
tweenedOpacity = 1 - 0.2 * tween;
|
263
|
+
}
|
261
264
|
el.style.opacity = tweenedOpacity;
|
262
265
|
el.style.display = 'block';
|
263
266
|
}
|
264
267
|
|
265
268
|
// onCycleTo callback
|
266
|
-
if (lastCenter !== center &&
|
267
|
-
typeof(options.onCycleTo) === "function") {
|
269
|
+
if (lastCenter !== center && typeof options.onCycleTo === "function") {
|
268
270
|
var $curr_item = view.find('.carousel-item').eq(wrap(center));
|
269
271
|
options.onCycleTo.call(this, $curr_item, dragged);
|
270
272
|
}
|
271
273
|
|
272
274
|
// One time callback
|
273
|
-
if (typeof
|
275
|
+
if (typeof oneTimeCallback === "function") {
|
274
276
|
oneTimeCallback.call(this, $curr_item, dragged);
|
275
277
|
oneTimeCallback = null;
|
276
278
|
}
|
@@ -296,10 +298,10 @@
|
|
296
298
|
elapsed = Date.now() - timestamp;
|
297
299
|
delta = amplitude * Math.exp(-elapsed / options.duration);
|
298
300
|
if (delta > 2 || delta < -2) {
|
299
|
-
|
300
|
-
|
301
|
+
scroll(target - delta);
|
302
|
+
requestAnimationFrame(autoScroll);
|
301
303
|
} else {
|
302
|
-
|
304
|
+
scroll(target);
|
303
305
|
}
|
304
306
|
}
|
305
307
|
}
|
@@ -310,7 +312,6 @@
|
|
310
312
|
e.preventDefault();
|
311
313
|
e.stopPropagation();
|
312
314
|
return false;
|
313
|
-
|
314
315
|
} else if (!options.fullWidth) {
|
315
316
|
var clickedIndex = $(e.target).closest('.carousel-item').index();
|
316
317
|
var diff = wrap(center) - clickedIndex;
|
@@ -325,29 +326,32 @@
|
|
325
326
|
}
|
326
327
|
|
327
328
|
function cycleTo(n) {
|
328
|
-
var diff =
|
329
|
+
var diff = center % count - n;
|
329
330
|
|
330
331
|
// Account for wraparound.
|
331
|
-
if (!
|
332
|
+
if (!noWrap) {
|
332
333
|
if (diff < 0) {
|
333
|
-
if (Math.abs(diff + count) < Math.abs(diff)) {
|
334
|
-
|
334
|
+
if (Math.abs(diff + count) < Math.abs(diff)) {
|
335
|
+
diff += count;
|
336
|
+
}
|
335
337
|
} else if (diff > 0) {
|
336
|
-
if (Math.abs(diff - count) < diff) {
|
338
|
+
if (Math.abs(diff - count) < diff) {
|
339
|
+
diff -= count;
|
340
|
+
}
|
337
341
|
}
|
338
342
|
}
|
339
343
|
|
340
344
|
// Call prev or next accordingly.
|
341
345
|
if (diff < 0) {
|
342
346
|
view.trigger('carouselNext', [Math.abs(diff)]);
|
343
|
-
|
344
347
|
} else if (diff > 0) {
|
345
348
|
view.trigger('carouselPrev', [diff]);
|
346
349
|
}
|
347
350
|
}
|
348
351
|
|
349
352
|
function tap(e) {
|
350
|
-
|
353
|
+
// Fixes firefox draggable image bug
|
354
|
+
if (e.type === 'mousedown' && $(e.target).is('img')) {
|
351
355
|
e.preventDefault();
|
352
356
|
}
|
353
357
|
pressed = true;
|
@@ -377,13 +381,11 @@
|
|
377
381
|
reference = x;
|
378
382
|
scroll(offset + delta);
|
379
383
|
}
|
380
|
-
|
381
384
|
} else if (dragged) {
|
382
385
|
// If dragging don't allow vertical scroll.
|
383
386
|
e.preventDefault();
|
384
387
|
e.stopPropagation();
|
385
388
|
return false;
|
386
|
-
|
387
389
|
} else {
|
388
390
|
// Vertical scrolling.
|
389
391
|
vertical_dragged = true;
|
@@ -414,7 +416,7 @@
|
|
414
416
|
target = Math.round(target / dim) * dim;
|
415
417
|
|
416
418
|
// No wrap of items.
|
417
|
-
if (
|
419
|
+
if (noWrap) {
|
418
420
|
if (target >= dim * (count - 1)) {
|
419
421
|
target = dim * (count - 1);
|
420
422
|
} else if (target < 0) {
|
@@ -442,31 +444,32 @@
|
|
442
444
|
return true;
|
443
445
|
});
|
444
446
|
|
445
|
-
|
446
|
-
$(window).off('resize.carousel-'+uniqueNamespace).on('resize.carousel-'+uniqueNamespace, function() {
|
447
|
+
var throttledResize = Materialize.throttle(function () {
|
447
448
|
if (options.fullWidth) {
|
448
449
|
item_width = view.find('.carousel-item').first().innerWidth();
|
449
|
-
|
450
|
+
var imageHeight = view.find('.carousel-item.active').height();
|
450
451
|
dim = item_width * 2 + options.padding;
|
451
452
|
offset = center * 2 * item_width;
|
452
453
|
target = offset;
|
454
|
+
setCarouselHeight(true);
|
453
455
|
} else {
|
454
456
|
scroll();
|
455
457
|
}
|
456
|
-
});
|
458
|
+
}, 200);
|
459
|
+
$(window).off('resize.carousel-' + uniqueNamespace).on('resize.carousel-' + uniqueNamespace, throttledResize);
|
457
460
|
|
458
461
|
setupEvents();
|
459
462
|
scroll(offset);
|
460
463
|
|
461
|
-
$(this).on('carouselNext', function(e, n, callback) {
|
464
|
+
$(this).on('carouselNext', function (e, n, callback) {
|
462
465
|
if (n === undefined) {
|
463
466
|
n = 1;
|
464
467
|
}
|
465
|
-
if (typeof
|
468
|
+
if (typeof callback === "function") {
|
466
469
|
oneTimeCallback = callback;
|
467
470
|
}
|
468
471
|
|
469
|
-
target =
|
472
|
+
target = dim * Math.round(offset / dim) + dim * n;
|
470
473
|
if (offset !== target) {
|
471
474
|
amplitude = target - offset;
|
472
475
|
timestamp = Date.now();
|
@@ -474,15 +477,15 @@
|
|
474
477
|
}
|
475
478
|
});
|
476
479
|
|
477
|
-
$(this).on('carouselPrev', function(e, n, callback) {
|
480
|
+
$(this).on('carouselPrev', function (e, n, callback) {
|
478
481
|
if (n === undefined) {
|
479
482
|
n = 1;
|
480
483
|
}
|
481
|
-
if (typeof
|
484
|
+
if (typeof callback === "function") {
|
482
485
|
oneTimeCallback = callback;
|
483
486
|
}
|
484
487
|
|
485
|
-
target =
|
488
|
+
target = dim * Math.round(offset / dim) - dim * n;
|
486
489
|
if (offset !== target) {
|
487
490
|
amplitude = target - offset;
|
488
491
|
timestamp = Date.now();
|
@@ -490,42 +493,51 @@
|
|
490
493
|
}
|
491
494
|
});
|
492
495
|
|
493
|
-
$(this).on('carouselSet', function(e, n, callback) {
|
496
|
+
$(this).on('carouselSet', function (e, n, callback) {
|
494
497
|
if (n === undefined) {
|
495
498
|
n = 0;
|
496
499
|
}
|
497
|
-
if (typeof
|
500
|
+
if (typeof callback === "function") {
|
498
501
|
oneTimeCallback = callback;
|
499
502
|
}
|
500
503
|
|
501
504
|
cycleTo(n);
|
502
505
|
});
|
503
|
-
|
504
506
|
});
|
505
|
-
|
506
|
-
|
507
|
-
|
508
507
|
},
|
509
|
-
next
|
508
|
+
next: function (n, callback) {
|
510
509
|
$(this).trigger('carouselNext', [n, callback]);
|
511
510
|
},
|
512
|
-
prev
|
511
|
+
prev: function (n, callback) {
|
513
512
|
$(this).trigger('carouselPrev', [n, callback]);
|
514
513
|
},
|
515
|
-
set
|
514
|
+
set: function (n, callback) {
|
516
515
|
$(this).trigger('carouselSet', [n, callback]);
|
516
|
+
},
|
517
|
+
destroy: function () {
|
518
|
+
var uniqueNamespace = $(this).attr('data-namespace');
|
519
|
+
$(this).removeAttr('data-namespace');
|
520
|
+
$(this).removeClass('initialized');
|
521
|
+
$(this).find('.indicators').remove();
|
522
|
+
|
523
|
+
// Remove event handlers
|
524
|
+
$(this).off('carouselNext carouselPrev carouselSet');
|
525
|
+
$(window).off('resize.carousel-' + uniqueNamespace);
|
526
|
+
if (typeof window.ontouchstart !== 'undefined') {
|
527
|
+
$(this).off('touchstart.carousel touchmove.carousel touchend.carousel');
|
528
|
+
}
|
529
|
+
$(this).off('mousedown.carousel mousemove.carousel mouseup.carousel mouseleave.carousel click.carousel');
|
517
530
|
}
|
518
531
|
};
|
519
532
|
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
}( jQuery ));
|
533
|
+
$.fn.carousel = function (methodOrOptions) {
|
534
|
+
if (methods[methodOrOptions]) {
|
535
|
+
return methods[methodOrOptions].apply(this, Array.prototype.slice.call(arguments, 1));
|
536
|
+
} else if (typeof methodOrOptions === 'object' || !methodOrOptions) {
|
537
|
+
// Default to "init"
|
538
|
+
return methods.init.apply(this, arguments);
|
539
|
+
} else {
|
540
|
+
$.error('Method ' + methodOrOptions + ' does not exist on jQuery.carousel');
|
541
|
+
}
|
542
|
+
}; // Plugin end
|
543
|
+
})(jQuery);
|