mtl 1.1.7 → 1.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/mtl.js +1 -1
- data/app/assets/stylesheets/mtl/all.scss +4 -0
- data/lib/mtl/version.rb +2 -2
- data/package.json +1 -1
- data/vendor/assets/javascripts/materialize/cards.js +13 -3
- data/vendor/assets/javascripts/materialize/carousel.js +78 -28
- data/vendor/assets/javascripts/materialize/chips.js +27 -27
- data/vendor/assets/javascripts/materialize/collapsible.js +34 -11
- data/vendor/assets/javascripts/materialize/date_picker/picker.date.js +137 -136
- data/vendor/assets/javascripts/materialize/date_picker/picker.js +0 -1
- data/vendor/assets/javascripts/materialize/date_picker/picker.time.js +686 -0
- data/vendor/assets/javascripts/materialize/dropdown.js +19 -12
- data/vendor/assets/javascripts/materialize/forms.js +98 -72
- data/vendor/assets/javascripts/materialize/global.js +14 -1
- data/vendor/assets/javascripts/materialize/jquery.easing.1.4.js +166 -0
- data/vendor/assets/javascripts/materialize/materialbox.js +48 -44
- data/vendor/assets/javascripts/materialize/modal.js +2 -1
- data/vendor/assets/javascripts/materialize/scrollspy.js +10 -5
- data/vendor/assets/javascripts/materialize/sideNav.js +44 -14
- data/vendor/assets/javascripts/materialize/slider.js +3 -3
- data/vendor/assets/javascripts/materialize/tabs.js +17 -7
- data/vendor/assets/javascripts/materialize/tapTarget.js +187 -0
- data/vendor/assets/javascripts/materialize/transitions.js +2 -2
- data/vendor/assets/javascripts/materialize/waves.js +1 -1
- data/vendor/assets/javascripts/pdfobject.js +1 -1
- data/vendor/assets/stylesheets/materialize/_buttons.scss +11 -12
- data/vendor/assets/stylesheets/materialize/_cards.scss +3 -0
- data/vendor/assets/stylesheets/materialize/_carousel.scss +7 -1
- data/vendor/assets/stylesheets/materialize/_chips.scss +6 -1
- data/vendor/assets/stylesheets/materialize/_collapsible.scss +1 -0
- data/vendor/assets/stylesheets/materialize/_color.scss +1 -1
- data/vendor/assets/stylesheets/materialize/_dropdown.scss +3 -0
- data/vendor/assets/stylesheets/materialize/_global.scss +18 -23
- data/vendor/assets/stylesheets/materialize/_grid.scss +44 -35
- data/vendor/assets/stylesheets/materialize/_modal.scss +2 -2
- data/vendor/assets/stylesheets/materialize/_preloader.scss +3 -3
- data/vendor/assets/stylesheets/materialize/_pulse.scss +34 -0
- data/vendor/assets/stylesheets/materialize/_sideNav.scss +17 -11
- data/vendor/assets/stylesheets/materialize/_tapTarget.scss +103 -0
- data/vendor/assets/stylesheets/materialize/_variables.scss +15 -6
- data/vendor/assets/stylesheets/materialize/date_picker/_default.date.scss +48 -27
- data/vendor/assets/stylesheets/materialize/date_picker/_default.scss +10 -0
- data/vendor/assets/stylesheets/materialize/date_picker/_default.time.scss +155 -13
- data/vendor/assets/stylesheets/materialize/forms/_input-fields.scss +18 -12
- data/vendor/assets/stylesheets/materialize/forms/_range.scss +3 -2
- data/vendor/assets/stylesheets/materialize/forms/_switches.scss +30 -17
- metadata +7 -7
- data/vendor/assets/javascripts/materialize/init.js +0 -211
- data/vendor/assets/javascripts/materialize/jquery.easing.1.3.js +0 -205
- data/vendor/assets/javascripts/materialize/jquery.timeago.min.js +0 -1
- data/vendor/assets/javascripts/materialize/prism.js +0 -8
- data/vendor/assets/stylesheets/materialize/_prefixer.scss +0 -384
@@ -20,10 +20,12 @@
|
|
20
20
|
var originalHeight = 0;
|
21
21
|
var ancestorsChanged;
|
22
22
|
var ancestor;
|
23
|
+
var originInlineStyles = origin.attr('style');
|
23
24
|
origin.wrap(placeholder);
|
24
25
|
|
25
26
|
|
26
|
-
|
27
|
+
// Start click handler
|
28
|
+
origin.on('click', function() {
|
27
29
|
var placeholder = origin.parent('.material-placeholder');
|
28
30
|
var windowWidth = window.innerWidth;
|
29
31
|
var windowHeight = window.innerHeight;
|
@@ -177,25 +179,29 @@
|
|
177
179
|
); // End Velocity
|
178
180
|
}
|
179
181
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
returnToOriginal();
|
187
|
-
}
|
188
|
-
});
|
189
|
-
|
190
|
-
// Return on ESC
|
191
|
-
$(document).keyup(function(e) {
|
182
|
+
// Handle Exit triggers
|
183
|
+
$(window).on('scroll.materialbox', function() {
|
184
|
+
if (overlayActive) {
|
185
|
+
returnToOriginal();
|
186
|
+
}
|
187
|
+
});
|
192
188
|
|
193
|
-
|
189
|
+
$(window).on('resize.materialbox', function() {
|
194
190
|
if (overlayActive) {
|
195
191
|
returnToOriginal();
|
196
192
|
}
|
197
|
-
}
|
198
|
-
|
193
|
+
});
|
194
|
+
|
195
|
+
$(document).on('keyup.materialbox', function(e) {
|
196
|
+
// ESC key
|
197
|
+
if (e.keyCode === 27 &&
|
198
|
+
doneAnimating === true &&
|
199
|
+
overlayActive) {
|
200
|
+
returnToOriginal();
|
201
|
+
}
|
202
|
+
});
|
203
|
+
|
204
|
+
}); // End click handler
|
199
205
|
|
200
206
|
|
201
207
|
// This function returns the modaled image to the original spot
|
@@ -213,6 +219,10 @@
|
|
213
219
|
$('#materialbox-overlay').velocity("stop", true);
|
214
220
|
$('.materialbox-caption').velocity("stop", true);
|
215
221
|
|
222
|
+
// disable exit handlers
|
223
|
+
$(window).off('scroll.materialbox');
|
224
|
+
$(document).off('keyup.materialbox');
|
225
|
+
$(window).off('resize.materialbox');
|
216
226
|
|
217
227
|
$('#materialbox-overlay').velocity({opacity: 0}, {
|
218
228
|
duration: outDuration, // Delay prevents animation overlapping
|
@@ -234,7 +244,28 @@
|
|
234
244
|
},
|
235
245
|
{
|
236
246
|
duration: outDuration,
|
237
|
-
queue: false, easing: 'easeOutQuad'
|
247
|
+
queue: false, easing: 'easeOutQuad',
|
248
|
+
complete: function() {
|
249
|
+
placeholder.css({
|
250
|
+
height: '',
|
251
|
+
width: '',
|
252
|
+
position: '',
|
253
|
+
top: '',
|
254
|
+
left: ''
|
255
|
+
});
|
256
|
+
|
257
|
+
origin.removeAttr('style');
|
258
|
+
origin.attr('style', originInlineStyles);
|
259
|
+
|
260
|
+
// Remove class
|
261
|
+
origin.removeClass('active');
|
262
|
+
doneAnimating = true;
|
263
|
+
|
264
|
+
// Remove overflow overrides on ancestors
|
265
|
+
if (ancestorsChanged) {
|
266
|
+
ancestorsChanged.css('overflow', '');
|
267
|
+
}
|
268
|
+
}
|
238
269
|
}
|
239
270
|
);
|
240
271
|
|
@@ -243,34 +274,7 @@
|
|
243
274
|
duration: outDuration, // Delay prevents animation overlapping
|
244
275
|
queue: false, easing: 'easeOutQuad',
|
245
276
|
complete: function(){
|
246
|
-
placeholder.css({
|
247
|
-
height: '',
|
248
|
-
width: '',
|
249
|
-
position: '',
|
250
|
-
top: '',
|
251
|
-
left: ''
|
252
|
-
});
|
253
|
-
|
254
|
-
origin.css({
|
255
|
-
height: '',
|
256
|
-
top: '',
|
257
|
-
left: '',
|
258
|
-
width: '',
|
259
|
-
'max-width': '',
|
260
|
-
position: '',
|
261
|
-
'z-index': '',
|
262
|
-
'will-change': ''
|
263
|
-
});
|
264
|
-
|
265
|
-
// Remove class
|
266
|
-
origin.removeClass('active');
|
267
|
-
doneAnimating = true;
|
268
277
|
$(this).remove();
|
269
|
-
|
270
|
-
// Remove overflow overrides on ancestors
|
271
|
-
if (ancestorsChanged) {
|
272
|
-
ancestorsChanged.css('overflow', '');
|
273
|
-
}
|
274
278
|
}
|
275
279
|
});
|
276
280
|
|
@@ -83,7 +83,7 @@
|
|
83
83
|
|
84
84
|
var overlayID = _generateID();
|
85
85
|
var $overlay = $('<div class="modal-overlay"></div>');
|
86
|
-
lStack = (++_stack);
|
86
|
+
var lStack = (++_stack);
|
87
87
|
|
88
88
|
// Store a reference of the overlay
|
89
89
|
$overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2);
|
@@ -164,6 +164,7 @@
|
|
164
164
|
}); // done return
|
165
165
|
},
|
166
166
|
open : function() {
|
167
|
+
methods.init.apply( this, arguments );
|
167
168
|
$(this).trigger('openModal');
|
168
169
|
},
|
169
170
|
close : function() {
|
@@ -115,12 +115,17 @@
|
|
115
115
|
offsetRight : number -> offset from right. Default: 0
|
116
116
|
offsetBottom : number -> offset from bottom. Default: 0
|
117
117
|
offsetLeft : number -> offset from left. Default: 0
|
118
|
+
activeClass : string -> Class name to be added to the active link. Default: active
|
118
119
|
* @returns {jQuery}
|
119
120
|
*/
|
120
121
|
$.scrollSpy = function(selector, options) {
|
121
122
|
var defaults = {
|
122
123
|
throttle: 100,
|
123
|
-
scrollOffset: 200 // offset - 200 allows elements near bottom of page to scroll
|
124
|
+
scrollOffset: 200, // offset - 200 allows elements near bottom of page to scroll
|
125
|
+
activeClass: 'active',
|
126
|
+
getActiveElement: function(id) {
|
127
|
+
return 'a[href="#' + id + '"]';
|
128
|
+
}
|
124
129
|
};
|
125
130
|
options = $.extend(defaults, options);
|
126
131
|
|
@@ -167,7 +172,7 @@
|
|
167
172
|
var $this = $(this);
|
168
173
|
|
169
174
|
if (visible[0]) {
|
170
|
-
$(
|
175
|
+
$(options.getActiveElement(visible[0].attr('id'))).removeClass(options.activeClass);
|
171
176
|
if ($this.data('scrollSpy:id') < visible[0].data('scrollSpy:id')) {
|
172
177
|
visible.unshift($(this));
|
173
178
|
}
|
@@ -180,7 +185,7 @@
|
|
180
185
|
}
|
181
186
|
|
182
187
|
|
183
|
-
$(
|
188
|
+
$(options.getActiveElement(visible[0].attr('id'))).addClass(options.activeClass);
|
184
189
|
});
|
185
190
|
selector.on('scrollSpy:exit', function() {
|
186
191
|
visible = $.grep(visible, function(value) {
|
@@ -188,13 +193,13 @@
|
|
188
193
|
});
|
189
194
|
|
190
195
|
if (visible[0]) {
|
191
|
-
$(
|
196
|
+
$(options.getActiveElement(visible[0].attr('id'))).removeClass(options.activeClass);
|
192
197
|
var $this = $(this);
|
193
198
|
visible = $.grep(visible, function(value) {
|
194
199
|
return value.attr('id') != $this.attr('id');
|
195
200
|
});
|
196
201
|
if (visible[0]) { // Check if empty
|
197
|
-
$(
|
202
|
+
$(options.getActiveElement(visible[0].attr('id'))).addClass(options.activeClass);
|
198
203
|
}
|
199
204
|
}
|
200
205
|
});
|
@@ -6,7 +6,9 @@
|
|
6
6
|
menuWidth: 300,
|
7
7
|
edge: 'left',
|
8
8
|
closeOnClick: false,
|
9
|
-
draggable: true
|
9
|
+
draggable: true,
|
10
|
+
onOpen: null,
|
11
|
+
onClose: null
|
10
12
|
};
|
11
13
|
options = $.extend(defaults, options);
|
12
14
|
|
@@ -80,7 +82,9 @@
|
|
80
82
|
// if closeOnClick, then add close event for all a tags in side sideNav
|
81
83
|
if (options.closeOnClick === true) {
|
82
84
|
menu.on("click.itemclick", "a:not(.collapsible-header)", function(){
|
83
|
-
|
85
|
+
if (!(window.innerWidth > 992 && menu.hasClass('fixed'))){
|
86
|
+
removeMenu();
|
87
|
+
}
|
84
88
|
});
|
85
89
|
}
|
86
90
|
|
@@ -133,7 +137,12 @@
|
|
133
137
|
}
|
134
138
|
});
|
135
139
|
}
|
136
|
-
|
140
|
+
|
141
|
+
// Callback
|
142
|
+
if (typeof(options.onClose) === 'function') {
|
143
|
+
options.onClose.call(this, menu);
|
144
|
+
}
|
145
|
+
}
|
137
146
|
|
138
147
|
|
139
148
|
|
@@ -150,7 +159,7 @@
|
|
150
159
|
|
151
160
|
$dragTarget.hammer({
|
152
161
|
prevent_default: false
|
153
|
-
}).
|
162
|
+
}).on('pan', function(e) {
|
154
163
|
|
155
164
|
if (e.gesture.pointerType == "touch") {
|
156
165
|
|
@@ -159,6 +168,11 @@
|
|
159
168
|
var y = e.gesture.center.y;
|
160
169
|
var velocityX = e.gesture.velocityX;
|
161
170
|
|
171
|
+
// Vertical scroll bugfix
|
172
|
+
if (x === 0 && y === 0) {
|
173
|
+
return;
|
174
|
+
}
|
175
|
+
|
162
176
|
// Disable Scrolling
|
163
177
|
var $body = $('body');
|
164
178
|
var $overlay = $('#sidenav-overlay');
|
@@ -172,6 +186,12 @@
|
|
172
186
|
$overlay.css('opacity', 0).click( function(){
|
173
187
|
removeMenu();
|
174
188
|
});
|
189
|
+
|
190
|
+
// Run 'onOpen' when sidenav is opened via touch/swipe if applicable
|
191
|
+
if (typeof(options.onOpen) === 'function') {
|
192
|
+
options.onOpen.call(this, menu);
|
193
|
+
}
|
194
|
+
|
175
195
|
$('body').append($overlay);
|
176
196
|
}
|
177
197
|
|
@@ -218,10 +238,10 @@
|
|
218
238
|
}
|
219
239
|
}
|
220
240
|
|
221
|
-
}).
|
241
|
+
}).on('panend', function(e) {
|
222
242
|
|
223
243
|
if (e.gesture.pointerType == "touch") {
|
224
|
-
var $overlay = $('
|
244
|
+
var $overlay = $('#sidenav-overlay');
|
225
245
|
var velocityX = e.gesture.velocityX;
|
226
246
|
var x = e.gesture.center.x;
|
227
247
|
var leftPos = x - options.menuWidth;
|
@@ -256,6 +276,11 @@
|
|
256
276
|
menu.velocity({'translateX': [-1 * options.menuWidth - 10, leftPos]}, {duration: 200, queue: false, easing: 'easeOutQuad'});
|
257
277
|
$overlay.velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad',
|
258
278
|
complete: function () {
|
279
|
+
// Run 'onClose' when sidenav is closed via touch/swipe if applicable
|
280
|
+
if (typeof(options.onClose) === 'function') {
|
281
|
+
options.onClose.call(this, menu);
|
282
|
+
}
|
283
|
+
|
259
284
|
$(this).remove();
|
260
285
|
}});
|
261
286
|
$dragTarget.css({width: '10px', right: '', left: 0});
|
@@ -330,14 +355,19 @@
|
|
330
355
|
$(this).remove();
|
331
356
|
} });
|
332
357
|
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
358
|
+
});
|
359
|
+
$('body').append($overlay);
|
360
|
+
$overlay.velocity({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad',
|
361
|
+
complete: function () {
|
362
|
+
menuOut = true;
|
363
|
+
panning = false;
|
364
|
+
}
|
365
|
+
});
|
366
|
+
|
367
|
+
// Callback
|
368
|
+
if (typeof(options.onOpen) === 'function') {
|
369
|
+
options.onOpen.call(this, menu);
|
370
|
+
}
|
341
371
|
}
|
342
372
|
|
343
373
|
return false;
|
@@ -96,7 +96,7 @@
|
|
96
96
|
$slides.find('img').each(function () {
|
97
97
|
var placeholderBase64 = 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
|
98
98
|
if ($(this).attr('src') !== placeholderBase64) {
|
99
|
-
$(this).css('background-image', 'url(' + $(this).attr('src') + ')' );
|
99
|
+
$(this).css('background-image', 'url("' + $(this).attr('src') + '")' );
|
100
100
|
$(this).attr('src', placeholderBase64);
|
101
101
|
}
|
102
102
|
});
|
@@ -171,7 +171,7 @@
|
|
171
171
|
|
172
172
|
$this.hammer({
|
173
173
|
prevent_default: false
|
174
|
-
}).
|
174
|
+
}).on('pan', function(e) {
|
175
175
|
if (e.gesture.pointerType === "touch") {
|
176
176
|
|
177
177
|
// reset interval
|
@@ -219,7 +219,7 @@
|
|
219
219
|
|
220
220
|
}
|
221
221
|
|
222
|
-
}).
|
222
|
+
}).on('panend', function(e) {
|
223
223
|
if (e.gesture.pointerType === "touch") {
|
224
224
|
|
225
225
|
$curr_slide = $slider.find('.active');
|
@@ -8,8 +8,11 @@
|
|
8
8
|
responsiveThreshold: Infinity, // breakpoint for swipeable
|
9
9
|
};
|
10
10
|
options = $.extend(defaults, options);
|
11
|
+
var namespace = Materialize.objectSelectorString($(this));
|
11
12
|
|
12
|
-
return this.each(function() {
|
13
|
+
return this.each(function(i) {
|
14
|
+
|
15
|
+
var uniqueNamespace = namespace+i;
|
13
16
|
|
14
17
|
// For each set of tabs, we want to keep track of
|
15
18
|
// which tab is active and its associated content
|
@@ -31,13 +34,13 @@
|
|
31
34
|
// Finds right attribute for indicator based on active tab.
|
32
35
|
// el: jQuery Object
|
33
36
|
var calcRightPos = function(el) {
|
34
|
-
return $tabs_width - el.position().left - el.outerWidth() - $this.scrollLeft();
|
37
|
+
return Math.ceil($tabs_width - el.position().left - el.outerWidth() - $this.scrollLeft());
|
35
38
|
};
|
36
39
|
|
37
40
|
// Finds left attribute for indicator based on active tab.
|
38
41
|
// el: jQuery Object
|
39
42
|
var calcLeftPos = function(el) {
|
40
|
-
return el.position().left + $this.scrollLeft();
|
43
|
+
return Math.floor(el.position().left + $this.scrollLeft());
|
41
44
|
};
|
42
45
|
|
43
46
|
// Animates Indicator to active tab.
|
@@ -85,7 +88,7 @@
|
|
85
88
|
|
86
89
|
// append indicator then set indicator width to tab width
|
87
90
|
if (!$this.find('.indicator').length) {
|
88
|
-
$this.append('<
|
91
|
+
$this.append('<li class="indicator"></li>');
|
89
92
|
}
|
90
93
|
$indicator = $this.find('.indicator');
|
91
94
|
|
@@ -100,7 +103,7 @@
|
|
100
103
|
$indicator.css({"left": calcLeftPos($active) });
|
101
104
|
}, 0);
|
102
105
|
}
|
103
|
-
$(window).resize(function () {
|
106
|
+
$(window).off('resize.tabs-'+uniqueNamespace).on('resize.tabs-'+uniqueNamespace, function () {
|
104
107
|
$tabs_width = $this.width();
|
105
108
|
$tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length;
|
106
109
|
if (index < 0) {
|
@@ -131,6 +134,9 @@
|
|
131
134
|
index = $tabs_wrapper.index(item);
|
132
135
|
$active = $links.eq(index);
|
133
136
|
animateIndicator(prev_index);
|
137
|
+
if (typeof(options.onShow) === "function") {
|
138
|
+
options.onShow.call($this[0], $content);
|
139
|
+
}
|
134
140
|
}
|
135
141
|
},
|
136
142
|
});
|
@@ -143,7 +149,7 @@
|
|
143
149
|
|
144
150
|
|
145
151
|
// Bind the click event handler
|
146
|
-
$this.on('click', 'a', function(e) {
|
152
|
+
$this.off('click.tabs').on('click.tabs', 'a', function(e) {
|
147
153
|
if ($(this).parent().hasClass('disabled')) {
|
148
154
|
e.preventDefault();
|
149
155
|
return;
|
@@ -181,7 +187,11 @@
|
|
181
187
|
// Swap content
|
182
188
|
if (options.swipeable) {
|
183
189
|
if ($tabs_content.length) {
|
184
|
-
$tabs_content.carousel('set', index)
|
190
|
+
$tabs_content.carousel('set', index, function() {
|
191
|
+
if (typeof(options.onShow) === "function") {
|
192
|
+
options.onShow.call($this[0], $content);
|
193
|
+
}
|
194
|
+
});
|
185
195
|
}
|
186
196
|
} else {
|
187
197
|
if ($content !== undefined) {
|
@@ -0,0 +1,187 @@
|
|
1
|
+
(function ($) {
|
2
|
+
|
3
|
+
var methods = {
|
4
|
+
init: function (options) {
|
5
|
+
return this.each(function() {
|
6
|
+
var origin = $('#'+$(this).attr('data-activates'));
|
7
|
+
var screen = $('body');
|
8
|
+
|
9
|
+
// Creating tap target
|
10
|
+
var tapTargetEl = $(this);
|
11
|
+
var tapTargetWrapper = tapTargetEl.parent('.tap-target-wrapper');
|
12
|
+
var tapTargetWave = tapTargetWrapper.find('.tap-target-wave');
|
13
|
+
var tapTargetOriginEl = tapTargetWrapper.find('.tap-target-origin');
|
14
|
+
var tapTargetContentEl = tapTargetEl.find('.tap-target-content');
|
15
|
+
|
16
|
+
// Creating wrapper
|
17
|
+
if (!tapTargetWrapper.length) {
|
18
|
+
tapTargetWrapper = tapTargetEl.wrap($('<div class="tap-target-wrapper"></div>')).parent();
|
19
|
+
}
|
20
|
+
|
21
|
+
// Creating content
|
22
|
+
if (!tapTargetContentEl.length) {
|
23
|
+
tapTargetContentEl = $('<div class="tap-target-content"></div>');
|
24
|
+
tapTargetEl.append(tapTargetContentEl);
|
25
|
+
}
|
26
|
+
|
27
|
+
// Creating foreground wave
|
28
|
+
if (!tapTargetWave.length) {
|
29
|
+
tapTargetWave = $('<div class="tap-target-wave"></div>');
|
30
|
+
|
31
|
+
// Creating origin
|
32
|
+
if (!tapTargetOriginEl.length) {
|
33
|
+
tapTargetOriginEl = origin.clone(true, true);
|
34
|
+
tapTargetOriginEl.addClass('tap-target-origin');
|
35
|
+
tapTargetOriginEl.removeAttr('id');
|
36
|
+
tapTargetOriginEl.removeAttr('style');
|
37
|
+
tapTargetWave.append(tapTargetOriginEl);
|
38
|
+
}
|
39
|
+
|
40
|
+
tapTargetWrapper.append(tapTargetWave);
|
41
|
+
}
|
42
|
+
|
43
|
+
// Open
|
44
|
+
var openTapTarget = function() {
|
45
|
+
if (tapTargetWrapper.is('.open')) {
|
46
|
+
return;
|
47
|
+
}
|
48
|
+
|
49
|
+
// Adding open class
|
50
|
+
tapTargetWrapper.addClass('open');
|
51
|
+
|
52
|
+
setTimeout(function() {
|
53
|
+
tapTargetOriginEl.off('click.tapTarget').on('click.tapTarget', function(e) {
|
54
|
+
closeTapTarget();
|
55
|
+
tapTargetOriginEl.off('click.tapTarget');
|
56
|
+
});
|
57
|
+
|
58
|
+
$(document).off('click.tapTarget').on('click.tapTarget', function(e) {
|
59
|
+
closeTapTarget();
|
60
|
+
$(document).off('click.tapTarget');
|
61
|
+
});
|
62
|
+
|
63
|
+
var throttledCalc = Materialize.throttle(function() {
|
64
|
+
calculateTapTarget();
|
65
|
+
}, 200);
|
66
|
+
$(window).off('resize.tapTarget').on('resize.tapTarget', throttledCalc);
|
67
|
+
}, 0);
|
68
|
+
};
|
69
|
+
|
70
|
+
// Close
|
71
|
+
var closeTapTarget = function(){
|
72
|
+
if (!tapTargetWrapper.is('.open')) {
|
73
|
+
return;
|
74
|
+
}
|
75
|
+
|
76
|
+
tapTargetWrapper.removeClass('open');
|
77
|
+
tapTargetOriginEl.off('click.tapTarget')
|
78
|
+
$(document).off('click.tapTarget');
|
79
|
+
$(window).off('resize.tapTarget');
|
80
|
+
};
|
81
|
+
|
82
|
+
// Pre calculate
|
83
|
+
var calculateTapTarget = function() {
|
84
|
+
// Element or parent is fixed position?
|
85
|
+
var isFixed = origin.css('position') === 'fixed';
|
86
|
+
if (!isFixed) {
|
87
|
+
var parents = origin.parents();
|
88
|
+
for(var i = 0; i < parents.length; i++) {
|
89
|
+
isFixed = $(parents[i]).css('position') == 'fixed';
|
90
|
+
if (isFixed) {
|
91
|
+
break;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
// Calculating origin
|
97
|
+
var originWidth = origin.outerWidth();
|
98
|
+
var originHeight = origin.outerHeight();
|
99
|
+
var originTop = isFixed ? origin.offset().top - $(document).scrollTop() : origin.offset().top;
|
100
|
+
var originLeft = isFixed ? origin.offset().left - $(document).scrollLeft() : origin.offset().left;
|
101
|
+
|
102
|
+
// Calculating screen
|
103
|
+
var windowWidth = $(window).width();
|
104
|
+
var windowHeight = $(window).height();
|
105
|
+
var centerX = windowWidth / 2;
|
106
|
+
var centerY = windowHeight / 2;
|
107
|
+
var isLeft = originLeft <= centerX;
|
108
|
+
var isRight = originLeft > centerX;
|
109
|
+
var isTop = originTop <= centerY;
|
110
|
+
var isBottom = originTop > centerY;
|
111
|
+
var isCenterX = originLeft >= windowWidth*0.25 && originLeft <= windowWidth*0.75;
|
112
|
+
var isCenterY = originTop >= windowHeight*0.25 && originTop <= windowHeight*0.75;
|
113
|
+
|
114
|
+
// Calculating tap target
|
115
|
+
var tapTargetWidth = tapTargetEl.outerWidth();
|
116
|
+
var tapTargetHeight = tapTargetEl.outerHeight();
|
117
|
+
var tapTargetTop = originTop + originHeight/2 - tapTargetHeight/2;
|
118
|
+
var tapTargetLeft = originLeft + originWidth/2 - tapTargetWidth/2;
|
119
|
+
var tapTargetPosition = isFixed ? 'fixed' : 'absolute';
|
120
|
+
|
121
|
+
// Calculating content
|
122
|
+
var tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth/2 + originWidth;
|
123
|
+
var tapTargetTextHeight = tapTargetHeight/2;
|
124
|
+
var tapTargetTextTop = isTop ? tapTargetHeight/2 : 0;
|
125
|
+
var tapTargetTextBottom = 0;
|
126
|
+
var tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth/2 - originWidth : 0;
|
127
|
+
var tapTargetTextRight = 0;
|
128
|
+
var tapTargetTextPadding = originWidth;
|
129
|
+
var tapTargetTextAlign = isBottom ? 'bottom' : 'top';
|
130
|
+
|
131
|
+
// Calculating wave
|
132
|
+
var tapTargetWaveWidth = originWidth > originHeight ? originWidth*2 : originWidth*2;
|
133
|
+
var tapTargetWaveHeight = tapTargetWaveWidth;
|
134
|
+
var tapTargetWaveTop = tapTargetHeight/2 - tapTargetWaveHeight/2;
|
135
|
+
var tapTargetWaveLeft = tapTargetWidth/2 - tapTargetWaveWidth/2;
|
136
|
+
|
137
|
+
// Setting tap target
|
138
|
+
var tapTargetWrapperCssObj = {};
|
139
|
+
tapTargetWrapperCssObj.top = isTop ? tapTargetTop : '';
|
140
|
+
tapTargetWrapperCssObj.right = isRight ? windowWidth - tapTargetLeft - tapTargetWidth : '';
|
141
|
+
tapTargetWrapperCssObj.bottom = isBottom ? windowHeight - tapTargetTop - tapTargetHeight : '';
|
142
|
+
tapTargetWrapperCssObj.left = isLeft ? tapTargetLeft : '';
|
143
|
+
tapTargetWrapperCssObj.position = tapTargetPosition;
|
144
|
+
tapTargetWrapper.css(tapTargetWrapperCssObj);
|
145
|
+
|
146
|
+
// Setting content
|
147
|
+
tapTargetContentEl.css({
|
148
|
+
width: tapTargetTextWidth,
|
149
|
+
height: tapTargetTextHeight,
|
150
|
+
top: tapTargetTextTop,
|
151
|
+
right: tapTargetTextRight,
|
152
|
+
bottom: tapTargetTextBottom,
|
153
|
+
left: tapTargetTextLeft,
|
154
|
+
padding: tapTargetTextPadding,
|
155
|
+
verticalAlign: tapTargetTextAlign
|
156
|
+
});
|
157
|
+
|
158
|
+
// Setting wave
|
159
|
+
tapTargetWave.css({
|
160
|
+
top: tapTargetWaveTop,
|
161
|
+
left: tapTargetWaveLeft,
|
162
|
+
width: tapTargetWaveWidth,
|
163
|
+
height: tapTargetWaveHeight
|
164
|
+
});
|
165
|
+
}
|
166
|
+
|
167
|
+
if (options == 'open') {
|
168
|
+
calculateTapTarget();
|
169
|
+
openTapTarget();
|
170
|
+
}
|
171
|
+
|
172
|
+
if (options == 'close')
|
173
|
+
closeTapTarget();
|
174
|
+
});
|
175
|
+
},
|
176
|
+
open: function() {},
|
177
|
+
close: function() {}
|
178
|
+
};
|
179
|
+
|
180
|
+
$.fn.tapTarget = function(methodOrOptions) {
|
181
|
+
if (methods[methodOrOptions] || typeof methodOrOptions === 'object')
|
182
|
+
return methods.init.apply( this, arguments );
|
183
|
+
|
184
|
+
$.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tap-target' );
|
185
|
+
};
|
186
|
+
|
187
|
+
}( jQuery ));
|
@@ -86,7 +86,7 @@
|
|
86
86
|
$('.dismissable').each(function() {
|
87
87
|
$(this).hammer({
|
88
88
|
prevent_default: false
|
89
|
-
}).
|
89
|
+
}).on('pan', function(e) {
|
90
90
|
if (e.gesture.pointerType === "touch") {
|
91
91
|
var $this = $(this);
|
92
92
|
var direction = e.gesture.direction;
|
@@ -106,7 +106,7 @@
|
|
106
106
|
swipeRight = true;
|
107
107
|
}
|
108
108
|
}
|
109
|
-
}).
|
109
|
+
}).on('panend', function(e) {
|
110
110
|
// Reset if collection is moved back into original position
|
111
111
|
if (Math.abs(e.gesture.deltaX) < ($(this).innerWidth() / 2)) {
|
112
112
|
swipeRight = false;
|
@@ -262,7 +262,7 @@
|
|
262
262
|
if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) {
|
263
263
|
element = target;
|
264
264
|
break;
|
265
|
-
} else if (target.
|
265
|
+
} else if (target.className.indexOf('waves-effect') !== -1) {
|
266
266
|
element = target;
|
267
267
|
break;
|
268
268
|
}
|