material_design_lite-sass 1.0.4.2 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/lib/material_design_lite/sass/engine.rb +2 -1
  4. data/lib/material_design_lite/sass/version.rb +1 -1
  5. data/vendor/assets/images/buffer.svg +9 -0
  6. data/vendor/assets/images/tick-mask.svg +30 -0
  7. data/vendor/assets/images/tick.svg +15 -0
  8. data/vendor/assets/javascripts/material.js +363 -139
  9. data/vendor/assets/javascripts/material/button.js +5 -3
  10. data/vendor/assets/javascripts/material/checkbox.js +14 -6
  11. data/vendor/assets/javascripts/material/data-table.js +23 -19
  12. data/vendor/assets/javascripts/material/icon-toggle.js +16 -6
  13. data/vendor/assets/javascripts/material/layout.js +32 -11
  14. data/vendor/assets/javascripts/material/mdlComponentHandler.js +160 -51
  15. data/vendor/assets/javascripts/material/menu.js +13 -9
  16. data/vendor/assets/javascripts/material/progress.js +10 -5
  17. data/vendor/assets/javascripts/material/rAF.js +19 -7
  18. data/vendor/assets/javascripts/material/radio.js +15 -7
  19. data/vendor/assets/javascripts/material/ripple.js +28 -3
  20. data/vendor/assets/javascripts/material/slider.js +10 -6
  21. data/vendor/assets/javascripts/material/spinner.js +8 -4
  22. data/vendor/assets/javascripts/material/switch.js +14 -5
  23. data/vendor/assets/javascripts/material/tabs.js +11 -3
  24. data/vendor/assets/javascripts/material/textfield.js +19 -6
  25. data/vendor/assets/javascripts/material/tooltip.js +4 -3
  26. data/vendor/assets/stylesheets/_material.scss +0 -0
  27. data/vendor/assets/stylesheets/material/_checkbox.scss +3 -3
  28. data/vendor/assets/stylesheets/material/_layout.scss +2 -2
  29. data/vendor/assets/stylesheets/material/_progress.scss +1 -1
  30. data/vendor/assets/stylesheets/material/_variables.scss +5 -0
  31. metadata +5 -2
@@ -23,6 +23,7 @@
23
23
  * Implements MDL component design pattern defined at:
24
24
  * https://github.com/jasonmayes/mdl-component-design-pattern
25
25
  *
26
+ * @constructor
26
27
  * @param {HTMLElement} element The element that will be upgraded.
27
28
  */
28
29
  var MaterialMenu = function MaterialMenu(element) {
@@ -31,12 +32,12 @@
31
32
  // Initialize instance.
32
33
  this.init();
33
34
  };
34
- window.MaterialMenu = MaterialMenu;
35
+ window['MaterialMenu'] = MaterialMenu;
35
36
 
36
37
  /**
37
38
  * Store constants in one place so they can be updated easily.
38
39
  *
39
- * @enum {String | Number}
40
+ * @enum {string | number}
40
41
  * @private
41
42
  */
42
43
  MaterialMenu.prototype.Constant_ = {
@@ -52,7 +53,7 @@
52
53
  /**
53
54
  * Keycodes, for code readability.
54
55
  *
55
- * @enum {Number}
56
+ * @enum {number}
56
57
  * @private
57
58
  */
58
59
  MaterialMenu.prototype.Keycodes_ = {
@@ -68,7 +69,7 @@
68
69
  * JavaScript. This allows us to simply change it in one place should we
69
70
  * decide to modify at a later date.
70
71
  *
71
- * @enum {String}
72
+ * @enum {string}
72
73
  * @private
73
74
  */
74
75
  MaterialMenu.prototype.CssClasses_ = {
@@ -301,7 +302,7 @@
301
302
  window.setTimeout(function(evt) {
302
303
  this.hide();
303
304
  this.closing_ = false;
304
- }.bind(this), this.Constant_.CLOSE_TIMEOUT);
305
+ }.bind(this), /** @type {number} */ (this.Constant_.CLOSE_TIMEOUT));
305
306
  }
306
307
  };
307
308
 
@@ -310,14 +311,14 @@
310
311
  * it), and applies it. This allows us to animate from or to the correct point,
311
312
  * that is, the point it's aligned to in the "for" element.
312
313
  *
313
- * @param {Number} height Height of the clip rectangle
314
- * @param {Number} width Width of the clip rectangle
314
+ * @param {number} height Height of the clip rectangle
315
+ * @param {number} width Width of the clip rectangle
315
316
  * @private
316
317
  */
317
318
  MaterialMenu.prototype.applyClip_ = function(height, width) {
318
319
  if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {
319
320
  // Do not clip.
320
- this.element_.style.clip = null;
321
+ this.element_.style.clip = '';
321
322
  } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {
322
323
  // Clip to the top right corner of the menu.
323
324
  this.element_.style.clip =
@@ -332,7 +333,7 @@
332
333
  height + 'px ' + width + 'px)';
333
334
  } else {
334
335
  // Default: do not clip (same as clipping to the top left corner).
335
- this.element_.style.clip = null;
336
+ this.element_.style.clip = '';
336
337
  }
337
338
  };
338
339
 
@@ -416,6 +417,7 @@
416
417
  document.addEventListener('click', callback);
417
418
  }
418
419
  };
420
+ MaterialMenu.prototype['show'] = MaterialMenu.prototype.show;
419
421
 
420
422
  /**
421
423
  * Hides the menu.
@@ -445,6 +447,7 @@
445
447
  this.addAnimationEndListener_();
446
448
  }
447
449
  };
450
+ MaterialMenu.prototype['hide'] = MaterialMenu.prototype.hide;
448
451
 
449
452
  /**
450
453
  * Displays or hides the menu, depending on current state.
@@ -458,6 +461,7 @@
458
461
  this.show(evt);
459
462
  }
460
463
  };
464
+ MaterialMenu.prototype['toggle'] = MaterialMenu.prototype.toggle;
461
465
 
462
466
  /**
463
467
  * Downgrade the component.
@@ -23,6 +23,7 @@
23
23
  * Implements MDL component design pattern defined at:
24
24
  * https://github.com/jasonmayes/mdl-component-design-pattern
25
25
  *
26
+ * @constructor
26
27
  * @param {HTMLElement} element The element that will be upgraded.
27
28
  */
28
29
  var MaterialProgress = function MaterialProgress(element) {
@@ -31,12 +32,12 @@
31
32
  // Initialize instance.
32
33
  this.init();
33
34
  };
34
- window.MaterialProgress = MaterialProgress;
35
+ window['MaterialProgress'] = MaterialProgress;
35
36
 
36
37
  /**
37
38
  * Store constants in one place so they can be updated easily.
38
39
  *
39
- * @enum {String | Number}
40
+ * @enum {string | number}
40
41
  * @private
41
42
  */
42
43
  MaterialProgress.prototype.Constant_ = {
@@ -47,7 +48,7 @@
47
48
  * JavaScript. This allows us to simply change it in one place should we
48
49
  * decide to modify at a later date.
49
50
  *
50
- * @enum {String}
51
+ * @enum {string}
51
52
  * @private
52
53
  */
53
54
  MaterialProgress.prototype.CssClasses_ = {
@@ -57,7 +58,7 @@
57
58
  /**
58
59
  * Set the current progress of the progressbar.
59
60
  *
60
- * @param {Number} p Percentage of the progress (0-100)
61
+ * @param {number} p Percentage of the progress (0-100)
61
62
  * @public
62
63
  */
63
64
  MaterialProgress.prototype.setProgress = function(p) {
@@ -67,17 +68,21 @@
67
68
 
68
69
  this.progressbar_.style.width = p + '%';
69
70
  };
71
+ MaterialProgress.prototype['setProgress'] =
72
+ MaterialProgress.prototype.setProgress;
70
73
 
71
74
  /**
72
75
  * Set the current progress of the buffer.
73
76
  *
74
- * @param {Number} p Percentage of the buffer (0-100)
77
+ * @param {number} p Percentage of the buffer (0-100)
75
78
  * @public
76
79
  */
77
80
  MaterialProgress.prototype.setBuffer = function(p) {
78
81
  this.bufferbar_.style.width = p + '%';
79
82
  this.auxbar_.style.width = (100 - p) + '%';
80
83
  };
84
+ MaterialProgress.prototype['setBuffer'] =
85
+ MaterialProgress.prototype.setBuffer;
81
86
 
82
87
  /**
83
88
  * Initialize element.
@@ -12,7 +12,12 @@
12
12
  'use strict';
13
13
 
14
14
  if (!Date.now) {
15
+ /**
16
+ * Date.now polyfill.
17
+ * @return {number} the current Date
18
+ */
15
19
  Date.now = function() { return new Date().getTime(); };
20
+ Date['now'] = Date.now;
16
21
  }
17
22
 
18
23
  var vendors = ['webkit', 'moz'];
@@ -20,19 +25,26 @@ for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
20
25
  var vp = vendors[i];
21
26
  window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
22
27
  window.cancelAnimationFrame = (window[vp + 'CancelAnimationFrame'] ||
23
- window[vp + 'CancelRequestAnimationFrame']);
28
+ window[vp + 'CancelRequestAnimationFrame']);
29
+ window['requestAnimationFrame'] = window.requestAnimationFrame;
30
+ window['cancelAnimationFrame'] = window.cancelAnimationFrame;
24
31
  }
25
32
 
26
33
  if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
27
34
  var lastTime = 0;
35
+ /**
36
+ * requestAnimationFrame polyfill.
37
+ * @param {!Function} callback the callback function.
38
+ */
28
39
  window.requestAnimationFrame = function(callback) {
29
- var now = Date.now();
30
- var nextTime = Math.max(lastTime + 16, now);
31
- return setTimeout(function() { callback(lastTime = nextTime); },
32
- nextTime - now);
33
- };
40
+ var now = Date.now();
41
+ var nextTime = Math.max(lastTime + 16, now);
42
+ return setTimeout(function() { callback(lastTime = nextTime); },
43
+ nextTime - now);
44
+ };
34
45
  window.cancelAnimationFrame = clearTimeout;
46
+ window['requestAnimationFrame'] = window.requestAnimationFrame;
47
+ window['cancelAnimationFrame'] = window.cancelAnimationFrame;
35
48
  }
36
49
 
37
50
  })();
38
-
@@ -23,6 +23,7 @@
23
23
  * Implements MDL component design pattern defined at:
24
24
  * https://github.com/jasonmayes/mdl-component-design-pattern
25
25
  *
26
+ * @constructor
26
27
  * @param {HTMLElement} element The element that will be upgraded.
27
28
  */
28
29
  var MaterialRadio = function MaterialRadio(element) {
@@ -31,12 +32,12 @@
31
32
  // Initialize instance.
32
33
  this.init();
33
34
  };
34
- window.MaterialRadio = MaterialRadio;
35
+ window['MaterialRadio'] = MaterialRadio;
35
36
 
36
37
  /**
37
38
  * Store constants in one place so they can be updated easily.
38
39
  *
39
- * @enum {String | Number}
40
+ * @enum {string | number}
40
41
  * @private
41
42
  */
42
43
  MaterialRadio.prototype.Constant_ = {
@@ -48,7 +49,7 @@
48
49
  * JavaScript. This allows us to simply change it in one place should we
49
50
  * decide to modify at a later date.
50
51
  *
51
- * @enum {String}
52
+ * @enum {string}
52
53
  * @private
53
54
  */
54
55
  MaterialRadio.prototype.CssClasses_ = {
@@ -81,7 +82,7 @@
81
82
  var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);
82
83
  // Different name == different group, so no point updating those.
83
84
  if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {
84
- radios[i].MaterialRadio.updateClasses_();
85
+ radios[i]['MaterialRadio'].updateClasses_();
85
86
  }
86
87
  }
87
88
  };
@@ -129,16 +130,15 @@
129
130
  /**
130
131
  * Add blur.
131
132
  *
132
- * @param {Event} event The event that fired.
133
133
  * @private
134
134
  */
135
- MaterialRadio.prototype.blur_ = function(event) {
135
+ MaterialRadio.prototype.blur_ = function() {
136
136
 
137
137
  // TODO: figure out why there's a focus event being fired after our blur,
138
138
  // so that we can avoid this hack.
139
139
  window.setTimeout(function() {
140
140
  this.btnElement_.blur();
141
- }.bind(this), this.Constant_.TINY_TIMEOUT);
141
+ }.bind(this), /** @type {number} */ (this.Constant_.TINY_TIMEOUT));
142
142
  };
143
143
 
144
144
  // Public methods.
@@ -155,6 +155,8 @@
155
155
  this.element_.classList.remove(this.CssClasses_.IS_DISABLED);
156
156
  }
157
157
  };
158
+ MaterialRadio.prototype['checkDisabled'] =
159
+ MaterialRadio.prototype.checkDisabled;
158
160
 
159
161
  /**
160
162
  * Check the components toggled state.
@@ -168,6 +170,8 @@
168
170
  this.element_.classList.remove(this.CssClasses_.IS_CHECKED);
169
171
  }
170
172
  };
173
+ MaterialRadio.prototype['checkToggleState'] =
174
+ MaterialRadio.prototype.checkToggleState;
171
175
 
172
176
  /**
173
177
  * Disable radio.
@@ -178,6 +182,7 @@
178
182
  this.btnElement_.disabled = true;
179
183
  this.updateClasses_();
180
184
  };
185
+ MaterialRadio.prototype['disable'] = MaterialRadio.prototype.disable;
181
186
 
182
187
  /**
183
188
  * Enable radio.
@@ -188,6 +193,7 @@
188
193
  this.btnElement_.disabled = false;
189
194
  this.updateClasses_();
190
195
  };
196
+ MaterialRadio.prototype['enable'] = MaterialRadio.prototype.enable;
191
197
 
192
198
  /**
193
199
  * Check radio.
@@ -198,6 +204,7 @@
198
204
  this.btnElement_.checked = true;
199
205
  this.updateClasses_();
200
206
  };
207
+ MaterialRadio.prototype['check'] = MaterialRadio.prototype.check;
201
208
 
202
209
  /**
203
210
  * Uncheck radio.
@@ -208,6 +215,7 @@
208
215
  this.btnElement_.checked = false;
209
216
  this.updateClasses_();
210
217
  };
218
+ MaterialRadio.prototype['uncheck'] = MaterialRadio.prototype.uncheck;
211
219
 
212
220
  /**
213
221
  * Initialize element.
@@ -23,6 +23,7 @@
23
23
  * Implements MDL component design pattern defined at:
24
24
  * https://github.com/jasonmayes/mdl-component-design-pattern
25
25
  *
26
+ * @constructor
26
27
  * @param {HTMLElement} element The element that will be upgraded.
27
28
  */
28
29
  var MaterialRipple = function MaterialRipple(element) {
@@ -31,12 +32,12 @@
31
32
  // Initialize instance.
32
33
  this.init();
33
34
  };
34
- window.MaterialRipple = MaterialRipple;
35
+ window['MaterialRipple'] = MaterialRipple;
35
36
 
36
37
  /**
37
38
  * Store constants in one place so they can be updated easily.
38
39
  *
39
- * @enum {String | Number}
40
+ * @enum {string | number}
40
41
  * @private
41
42
  */
42
43
  MaterialRipple.prototype.Constant_ = {
@@ -52,7 +53,7 @@
52
53
  * JavaScript. This allows us to simply change it in one place should we
53
54
  * decide to modify at a later date.
54
55
  *
55
- * @enum {String}
56
+ * @enum {string}
56
57
  * @private
57
58
  */
58
59
  MaterialRipple.prototype.CssClasses_ = {
@@ -164,23 +165,44 @@
164
165
  this.element_.addEventListener('touchend', this.boundUpHandler);
165
166
  this.element_.addEventListener('blur', this.boundUpHandler);
166
167
 
168
+ /**
169
+ * Getter for frameCount_.
170
+ * @return {number} the frame count.
171
+ */
167
172
  this.getFrameCount = function() {
168
173
  return this.frameCount_;
169
174
  };
170
175
 
176
+ /**
177
+ * Setter for frameCount_.
178
+ * @param {number} fC the frame count.
179
+ */
171
180
  this.setFrameCount = function(fC) {
172
181
  this.frameCount_ = fC;
173
182
  };
174
183
 
184
+ /**
185
+ * Getter for rippleElement_.
186
+ * @return {Element} the ripple element.
187
+ */
175
188
  this.getRippleElement = function() {
176
189
  return this.rippleElement_;
177
190
  };
178
191
 
192
+ /**
193
+ * Sets the ripple X and Y coordinates.
194
+ * @param {number} newX the new X coordinate
195
+ * @param {number} newY the new Y coordinate
196
+ */
179
197
  this.setRippleXY = function(newX, newY) {
180
198
  this.x_ = newX;
181
199
  this.y_ = newY;
182
200
  };
183
201
 
202
+ /**
203
+ * Sets the ripple styles.
204
+ * @param {boolean} start whether or not this is the start frame.
205
+ */
184
206
  this.setRippleStyles = function(start) {
185
207
  if (this.rippleElement_ !== null) {
186
208
  var transformString;
@@ -214,6 +236,9 @@
214
236
  }
215
237
  };
216
238
 
239
+ /**
240
+ * Handles an animation frame.
241
+ */
217
242
  this.animFrameHandler = function() {
218
243
  if (this.frameCount_-- > 0) {
219
244
  window.requestAnimationFrame(this.animFrameHandler.bind(this));
@@ -23,6 +23,7 @@
23
23
  * Implements MDL component design pattern defined at:
24
24
  * https://github.com/jasonmayes/mdl-component-design-pattern
25
25
  *
26
+ * @constructor
26
27
  * @param {HTMLElement} element The element that will be upgraded.
27
28
  */
28
29
  var MaterialSlider = function MaterialSlider(element) {
@@ -32,12 +33,12 @@
32
33
  // Initialize instance.
33
34
  this.init();
34
35
  };
35
- window.MaterialSlider = MaterialSlider;
36
+ window['MaterialSlider'] = MaterialSlider;
36
37
 
37
38
  /**
38
39
  * Store constants in one place so they can be updated easily.
39
40
  *
40
- * @enum {String | Number}
41
+ * @enum {string | number}
41
42
  * @private
42
43
  */
43
44
  MaterialSlider.prototype.Constant_ = {
@@ -49,7 +50,7 @@
49
50
  * JavaScript. This allows us to simply change it in one place should we
50
51
  * decide to modify at a later date.
51
52
  *
52
- * @enum {String}
53
+ * @enum {string}
53
54
  * @private
54
55
  */
55
56
  MaterialSlider.prototype.CssClasses_ = {
@@ -100,6 +101,7 @@
100
101
  *
101
102
  * @param {Event} event The event that fired.
102
103
  * @private
104
+ * @suppress {missingProperties}
103
105
  */
104
106
  MaterialSlider.prototype.onContainerMouseDown_ = function(event) {
105
107
  // If this click is not on the parent element (but rather some child)
@@ -123,10 +125,9 @@
123
125
  /**
124
126
  * Handle updating of values.
125
127
  *
126
- * @param {Event} event The event that fired.
127
128
  * @private
128
129
  */
129
- MaterialSlider.prototype.updateValueStyles_ = function(event) {
130
+ MaterialSlider.prototype.updateValueStyles_ = function() {
130
131
  // Calculate and apply percentages to div structure behind slider.
131
132
  var fraction = (this.element_.value - this.element_.min) /
132
133
  (this.element_.max - this.element_.min);
@@ -155,6 +156,7 @@
155
156
  MaterialSlider.prototype.disable = function() {
156
157
  this.element_.disabled = true;
157
158
  };
159
+ MaterialSlider.prototype['disable'] = MaterialSlider.prototype.disable;
158
160
 
159
161
  /**
160
162
  * Enable slider.
@@ -165,11 +167,12 @@
165
167
 
166
168
  this.element_.disabled = false;
167
169
  };
170
+ MaterialSlider.prototype['enable'] = MaterialSlider.prototype.enable;
168
171
 
169
172
  /**
170
173
  * Update slider value.
171
174
  *
172
- * @param {Number} value The value to which to set the control (optional).
175
+ * @param {number} value The value to which to set the control (optional).
173
176
  * @public
174
177
  */
175
178
  MaterialSlider.prototype.change = function(value) {
@@ -179,6 +182,7 @@
179
182
  }
180
183
  this.updateValueStyles_();
181
184
  };
185
+ MaterialSlider.prototype['change'] = MaterialSlider.prototype.change;
182
186
 
183
187
  /**
184
188
  * Initialize element.