materialize-sass 0.98.0 → 0.98.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +16 -2
- data/app/assets/javascripts/materialize-sprockets.js +2 -1
- data/app/assets/javascripts/materialize.js +4 -4
- data/app/assets/javascripts/materialize/carousel.js +4 -2
- data/app/assets/javascripts/materialize/chips.js +22 -25
- data/app/assets/javascripts/materialize/collapsible.js +22 -8
- data/app/assets/javascripts/materialize/dropdown.js +1 -1
- data/app/assets/javascripts/materialize/extras/nouislider.js +1 -1
- data/app/assets/javascripts/materialize/forms.js +58 -64
- data/app/assets/javascripts/materialize/global.js +14 -1
- data/app/assets/javascripts/materialize/init.js +8 -6
- data/app/assets/javascripts/materialize/materialbox.js +22 -20
- data/app/assets/javascripts/materialize/sideNav.js +1 -1
- data/app/assets/javascripts/materialize/tabs.js +2 -2
- data/app/assets/javascripts/materialize/tapTarget.js +181 -0
- data/app/assets/stylesheets/materialize.scss +2 -0
- data/app/assets/stylesheets/materialize/components/_buttons.scss +5 -2
- data/app/assets/stylesheets/materialize/components/_chips.scss +5 -0
- data/app/assets/stylesheets/materialize/components/_dropdown.scss +3 -0
- data/app/assets/stylesheets/materialize/components/_grid.scss +40 -9
- data/app/assets/stylesheets/materialize/components/_pulse.scss +31 -0
- data/app/assets/stylesheets/materialize/components/_sideNav.scss +12 -11
- data/app/assets/stylesheets/materialize/components/_tapTarget.scss +105 -0
- data/app/assets/stylesheets/materialize/components/_variables.scss +3 -1
- data/app/assets/stylesheets/materialize/components/forms/_input-fields.scss +1 -1
- data/app/assets/stylesheets/materialize/extras/nouislider.css +1 -1
- data/lib/materialize-sass/version.rb +1 -1
- metadata +5 -2
@@ -51,7 +51,20 @@
|
|
51
51
|
}(window));
|
52
52
|
|
53
53
|
|
54
|
-
|
54
|
+
/**
|
55
|
+
* Generate approximated selector string for a jQuery object
|
56
|
+
* @param {jQuery} obj jQuery object to be parsed
|
57
|
+
* @returns {string}
|
58
|
+
*/
|
59
|
+
Materialize.objectSelectorString = function(obj) {
|
60
|
+
var tagStr = obj.prop('tagName') || '';
|
61
|
+
var idStr = obj.attr('id') || '';
|
62
|
+
var classStr = obj.attr('class') || '';
|
63
|
+
return (tagStr + idStr + classStr).replace(/\s/g,'');
|
64
|
+
};
|
65
|
+
|
66
|
+
|
67
|
+
// Unique Random ID
|
55
68
|
Materialize.guid = (function() {
|
56
69
|
function s4() {
|
57
70
|
return Math.floor((1 + Math.random()) * 0x10000)
|
@@ -179,7 +179,7 @@
|
|
179
179
|
$('.datepicker').pickadate({selectYears: 20});
|
180
180
|
$('select').not('.disabled').material_select();
|
181
181
|
$('input.autocomplete').autocomplete({
|
182
|
-
data: {"Apple": null, "Microsoft": null, "Google": 'http://placehold.it/250x250'}
|
182
|
+
data: {"Apple": null, "Microsoft": null, "Google": 'http://placehold.it/250x250'},
|
183
183
|
});
|
184
184
|
|
185
185
|
// Chips
|
@@ -199,11 +199,13 @@
|
|
199
199
|
secondaryPlaceholder: '+Tag',
|
200
200
|
});
|
201
201
|
$('.chips-autocomplete').material_chip({
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
202
|
+
autocompleteOptions: {
|
203
|
+
data: {
|
204
|
+
'Apple': null,
|
205
|
+
'Microsoft': null,
|
206
|
+
'Google': null
|
207
|
+
}
|
208
|
+
},
|
207
209
|
});
|
208
210
|
|
209
211
|
|
@@ -235,7 +235,28 @@
|
|
235
235
|
},
|
236
236
|
{
|
237
237
|
duration: outDuration,
|
238
|
-
queue: false, easing: 'easeOutQuad'
|
238
|
+
queue: false, easing: 'easeOutQuad',
|
239
|
+
complete: function() {
|
240
|
+
placeholder.css({
|
241
|
+
height: '',
|
242
|
+
width: '',
|
243
|
+
position: '',
|
244
|
+
top: '',
|
245
|
+
left: ''
|
246
|
+
});
|
247
|
+
|
248
|
+
origin.removeAttr('style');
|
249
|
+
origin.attr('style', originInlineStyles);
|
250
|
+
|
251
|
+
// Remove class
|
252
|
+
origin.removeClass('active');
|
253
|
+
doneAnimating = true;
|
254
|
+
|
255
|
+
// Remove overflow overrides on ancestors
|
256
|
+
if (ancestorsChanged) {
|
257
|
+
ancestorsChanged.css('overflow', '');
|
258
|
+
}
|
259
|
+
}
|
239
260
|
}
|
240
261
|
);
|
241
262
|
|
@@ -244,26 +265,7 @@
|
|
244
265
|
duration: outDuration, // Delay prevents animation overlapping
|
245
266
|
queue: false, easing: 'easeOutQuad',
|
246
267
|
complete: function(){
|
247
|
-
placeholder.css({
|
248
|
-
height: '',
|
249
|
-
width: '',
|
250
|
-
position: '',
|
251
|
-
top: '',
|
252
|
-
left: ''
|
253
|
-
});
|
254
|
-
|
255
|
-
origin.removeAttr('style');
|
256
|
-
origin.attr('style', originInlineStyles);
|
257
|
-
|
258
|
-
// Remove class
|
259
|
-
origin.removeClass('active');
|
260
|
-
doneAnimating = true;
|
261
268
|
$(this).remove();
|
262
|
-
|
263
|
-
// Remove overflow overrides on ancestors
|
264
|
-
if (ancestorsChanged) {
|
265
|
-
ancestorsChanged.css('overflow', '');
|
266
|
-
}
|
267
269
|
}
|
268
270
|
});
|
269
271
|
|
@@ -221,7 +221,7 @@
|
|
221
221
|
}).bind('panend', function(e) {
|
222
222
|
|
223
223
|
if (e.gesture.pointerType == "touch") {
|
224
|
-
var $overlay = $('
|
224
|
+
var $overlay = $('#sidenav-overlay');
|
225
225
|
var velocityX = e.gesture.velocityX;
|
226
226
|
var x = e.gesture.center.x;
|
227
227
|
var leftPos = x - options.menuWidth;
|
@@ -100,7 +100,7 @@
|
|
100
100
|
$indicator.css({"left": calcLeftPos($active) });
|
101
101
|
}, 0);
|
102
102
|
}
|
103
|
-
$(window).resize(function () {
|
103
|
+
$(window).off('resize.tabs').on('resize.tabs', function () {
|
104
104
|
$tabs_width = $this.width();
|
105
105
|
$tab_width = Math.max($tabs_width, $this[0].scrollWidth) / $links.length;
|
106
106
|
if (index < 0) {
|
@@ -143,7 +143,7 @@
|
|
143
143
|
|
144
144
|
|
145
145
|
// Bind the click event handler
|
146
|
-
$this.on('click', 'a', function(e) {
|
146
|
+
$this.off('click.tabs').on('click.tabs', 'a', function(e) {
|
147
147
|
if ($(this).parent().hasClass('disabled')) {
|
148
148
|
e.preventDefault();
|
149
149
|
return;
|
@@ -0,0 +1,181 @@
|
|
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
|
+
}, 0);
|
63
|
+
};
|
64
|
+
|
65
|
+
// Close
|
66
|
+
var closeTapTarget = function(){
|
67
|
+
if (!tapTargetWrapper.is('.open')) {
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
|
71
|
+
tapTargetWrapper.removeClass('open');
|
72
|
+
tapTargetOriginEl.off('click.tapTarget')
|
73
|
+
$(document).off('click.tapTarget');
|
74
|
+
};
|
75
|
+
|
76
|
+
// Pre calculate
|
77
|
+
var calculateTapTarget = function() {
|
78
|
+
// Element or parent is fixed position?
|
79
|
+
var isFixed = origin.css('position') === 'fixed';
|
80
|
+
if (!isFixed) {
|
81
|
+
var parents = origin.parents();
|
82
|
+
for(var i = 0; i < parents.length; i++) {
|
83
|
+
isFixed = $(parents[i]).css('position') == 'fixed';
|
84
|
+
if (isFixed) {
|
85
|
+
break;
|
86
|
+
}
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
// Calculating origin
|
91
|
+
var originWidth = origin.outerWidth();
|
92
|
+
var originHeight = origin.outerHeight();
|
93
|
+
var originTop = isFixed ? origin.offset().top - $(document).scrollTop() : origin.offset().top;
|
94
|
+
var originLeft = isFixed ? origin.offset().left - $(document).scrollLeft() : origin.offset().left;
|
95
|
+
|
96
|
+
// Calculating screen
|
97
|
+
var windowWidth = $(window).width();
|
98
|
+
var windowHeight = $(window).height();
|
99
|
+
var centerX = windowWidth / 2;
|
100
|
+
var centerY = windowHeight / 2;
|
101
|
+
var isLeft = originLeft <= centerX;
|
102
|
+
var isRight = originLeft > centerX;
|
103
|
+
var isTop = originTop <= centerY;
|
104
|
+
var isBottom = originTop > centerY;
|
105
|
+
var isCenterX = originLeft >= windowWidth*0.25 && originLeft <= windowWidth*0.75;
|
106
|
+
var isCenterY = originTop >= windowHeight*0.25 && originTop <= windowHeight*0.75;
|
107
|
+
|
108
|
+
// Calculating tap target
|
109
|
+
var tapTargetWidth = tapTargetEl.outerWidth();
|
110
|
+
var tapTargetHeight = tapTargetEl.outerHeight();
|
111
|
+
var tapTargetTop = originTop + originHeight/2 - tapTargetHeight/2;
|
112
|
+
var tapTargetLeft = originLeft + originWidth/2 - tapTargetWidth/2;
|
113
|
+
var tapTargetPosition = isFixed ? 'fixed' : 'absolute';
|
114
|
+
|
115
|
+
// Calculating content
|
116
|
+
var tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth/2 + originWidth;
|
117
|
+
var tapTargetTextHeight = tapTargetHeight/2;
|
118
|
+
var tapTargetTextTop = isTop ? tapTargetHeight/2 : 0;
|
119
|
+
var tapTargetTextBottom = 0;
|
120
|
+
var tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth/2 - originWidth : 0;
|
121
|
+
var tapTargetTextRight = 0;
|
122
|
+
var tapTargetTextPadding = originWidth;
|
123
|
+
var tapTargetTextAlign = isBottom ? 'bottom' : 'top';
|
124
|
+
|
125
|
+
// Calculating wave
|
126
|
+
var tapTargetWaveWidth = originWidth > originHeight ? originWidth*2 : originWidth*2;
|
127
|
+
var tapTargetWaveHeight = tapTargetWaveWidth;
|
128
|
+
var tapTargetWaveTop = tapTargetHeight/2 - tapTargetWaveHeight/2;
|
129
|
+
var tapTargetWaveLeft = tapTargetWidth/2 - tapTargetWaveWidth/2;
|
130
|
+
|
131
|
+
// Setting tap target
|
132
|
+
var tapTargetWrapperCssObj = {};
|
133
|
+
tapTargetWrapperCssObj.top = isTop ? tapTargetTop : '';
|
134
|
+
tapTargetWrapperCssObj.right = isRight ? windowWidth - tapTargetLeft - tapTargetWidth : '';
|
135
|
+
tapTargetWrapperCssObj.bottom = isBottom ? windowHeight - tapTargetTop - tapTargetHeight : '';
|
136
|
+
tapTargetWrapperCssObj.left = isLeft ? tapTargetLeft : '';
|
137
|
+
tapTargetWrapperCssObj.position = tapTargetPosition;
|
138
|
+
tapTargetWrapper.css(tapTargetWrapperCssObj);
|
139
|
+
|
140
|
+
// Setting content
|
141
|
+
tapTargetContentEl.css({
|
142
|
+
width: tapTargetTextWidth,
|
143
|
+
height: tapTargetTextHeight,
|
144
|
+
top: tapTargetTextTop,
|
145
|
+
right: tapTargetTextRight,
|
146
|
+
bottom: tapTargetTextBottom,
|
147
|
+
left: tapTargetTextLeft,
|
148
|
+
padding: tapTargetTextPadding,
|
149
|
+
verticalAlign: tapTargetTextAlign
|
150
|
+
});
|
151
|
+
|
152
|
+
// Setting wave
|
153
|
+
tapTargetWave.css({
|
154
|
+
top: tapTargetWaveTop,
|
155
|
+
left: tapTargetWaveLeft,
|
156
|
+
width: tapTargetWaveWidth,
|
157
|
+
height: tapTargetWaveHeight
|
158
|
+
});
|
159
|
+
}
|
160
|
+
|
161
|
+
if (options == 'open') {
|
162
|
+
calculateTapTarget();
|
163
|
+
openTapTarget();
|
164
|
+
}
|
165
|
+
|
166
|
+
if (options == 'close')
|
167
|
+
closeTapTarget();
|
168
|
+
});
|
169
|
+
},
|
170
|
+
open: function() {},
|
171
|
+
close: function() {}
|
172
|
+
};
|
173
|
+
|
174
|
+
$.fn.tapTarget = function(methodOrOptions) {
|
175
|
+
if (methods[methodOrOptions] || typeof methodOrOptions === 'object')
|
176
|
+
return methods.init.apply( this, arguments );
|
177
|
+
|
178
|
+
$.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tap-target' );
|
179
|
+
};
|
180
|
+
|
181
|
+
}( jQuery ));
|
@@ -37,6 +37,8 @@
|
|
37
37
|
@import "materialize/components/preloader";
|
38
38
|
@import "materialize/components/slider";
|
39
39
|
@import "materialize/components/carousel";
|
40
|
+
@import "materialize/components/tapTarget";
|
41
|
+
@import "materialize/components/pulse";
|
40
42
|
@import "materialize/components/date_picker/default";
|
41
43
|
@import "materialize/components/date_picker/default.date";
|
42
44
|
@import "materialize/components/date_picker/default.time";
|
@@ -89,6 +89,10 @@
|
|
89
89
|
}
|
90
90
|
|
91
91
|
&.btn-large {
|
92
|
+
&.halfway-fab {
|
93
|
+
bottom: -$button-floating-large-size / 2;
|
94
|
+
}
|
95
|
+
|
92
96
|
width: $button-floating-large-size;
|
93
97
|
height: $button-floating-large-size;
|
94
98
|
i {
|
@@ -104,8 +108,7 @@
|
|
104
108
|
|
105
109
|
position: absolute;
|
106
110
|
right: 24px;
|
107
|
-
bottom:
|
108
|
-
transform: translateY(50%);
|
111
|
+
bottom: -$button-floating-size / 2;
|
109
112
|
}
|
110
113
|
|
111
114
|
display: inline-block;
|
@@ -59,9 +59,10 @@
|
|
59
59
|
|
60
60
|
$i: 1;
|
61
61
|
@while $i <= $num-cols {
|
62
|
-
$
|
63
|
-
&.
|
64
|
-
|
62
|
+
&.s#{$i},
|
63
|
+
&.m#{$i},
|
64
|
+
&.l#{$i},
|
65
|
+
&.xl#{$i} {
|
65
66
|
margin-left: auto;
|
66
67
|
left: auto;
|
67
68
|
right: auto;
|
@@ -69,6 +70,15 @@
|
|
69
70
|
$i: $i + 1;
|
70
71
|
}
|
71
72
|
|
73
|
+
$i: 1;
|
74
|
+
@while $i <= $num-cols {
|
75
|
+
$perc: unquote((100 / ($num-cols / $i)) + "%");
|
76
|
+
&.s#{$i} {
|
77
|
+
width: $perc;
|
78
|
+
}
|
79
|
+
$i: $i + 1;
|
80
|
+
}
|
81
|
+
|
72
82
|
$i: 1;
|
73
83
|
@while $i <= $num-cols {
|
74
84
|
$perc: unquote((100 / ($num-cols / $i)) + "%");
|
@@ -91,9 +101,6 @@
|
|
91
101
|
$perc: unquote((100 / ($num-cols / $i)) + "%");
|
92
102
|
&.m#{$i} {
|
93
103
|
width: $perc;
|
94
|
-
margin-left: auto;
|
95
|
-
left: auto;
|
96
|
-
right: auto;
|
97
104
|
}
|
98
105
|
$i: $i + 1
|
99
106
|
}
|
@@ -121,9 +128,6 @@
|
|
121
128
|
$perc: unquote((100 / ($num-cols / $i)) + "%");
|
122
129
|
&.l#{$i} {
|
123
130
|
width: $perc;
|
124
|
-
margin-left: auto;
|
125
|
-
left: auto;
|
126
|
-
right: auto;
|
127
131
|
}
|
128
132
|
$i: $i + 1;
|
129
133
|
}
|
@@ -143,5 +147,32 @@
|
|
143
147
|
$i: $i + 1;
|
144
148
|
}
|
145
149
|
}
|
150
|
+
|
151
|
+
@media #{$extra-large-and-up} {
|
152
|
+
|
153
|
+
$i: 1;
|
154
|
+
@while $i <= $num-cols {
|
155
|
+
$perc: unquote((100 / ($num-cols / $i)) + "%");
|
156
|
+
&.xl#{$i} {
|
157
|
+
width: $perc;
|
158
|
+
}
|
159
|
+
$i: $i + 1;
|
160
|
+
}
|
161
|
+
|
162
|
+
$i: 1;
|
163
|
+
@while $i <= $num-cols {
|
164
|
+
$perc: unquote((100 / ($num-cols / $i)) + "%");
|
165
|
+
&.offset-xl#{$i} {
|
166
|
+
margin-left: $perc;
|
167
|
+
}
|
168
|
+
&.pull-xl#{$i} {
|
169
|
+
right: $perc;
|
170
|
+
}
|
171
|
+
&.push-xl#{$i} {
|
172
|
+
left: $perc;
|
173
|
+
}
|
174
|
+
$i: $i + 1;
|
175
|
+
}
|
176
|
+
}
|
146
177
|
}
|
147
178
|
}
|