material_design_lite-sass 1.2.1 → 1.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6c89888e2764c5014f8ebe0cdb956460ea500b82
4
- data.tar.gz: f39863171142c2b09d7ec542a5f2767322529ad0
3
+ metadata.gz: a60d881418b9db93f9afa2f12c9f31453940324b
4
+ data.tar.gz: 93d8347c3cd62ca65735e8a4e9d77eed1bb11a65
5
5
  SHA512:
6
- metadata.gz: fdf782b04b30de9b3929eeb6cc1d34609722e924508f685ad9b35be3a986470677976e3c121d17c625d1b64eacfb04db421d2475c61da1b5c0e636c9f4803835
7
- data.tar.gz: a3085817e22c1b3dfed360ffe3a3519bb400b01e877958b856628d389515fc2a01ba5475e96395763bea51ca9f8f70f6069d58ab8d7485e88c02d6eec3e411a2
6
+ metadata.gz: '0866bf3ca16dfc8c3d81d32da13c6eab84b36d9ce69eaf59113279efc3d09828e3bf389a9af433fb23868cd36b8fbe67eee5b030ef591e2a0c7887ebfa9dceaf'
7
+ data.tar.gz: f2b145ce02704a5076ea05086d6970f360d8383574be29bd042e14236828893d80a775b56887953fed2522393e282fbed4606429c6674412a95bc93917a6f0a8
data/.travis.yml CHANGED
@@ -1,10 +1,9 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
- - 2.0.0
5
- - 2.1.9
6
- - 2.2.5
7
- - 2.3.1
4
+ - 2.2.6
5
+ - 2.3.3
6
+ - 2.4.0-rc1
8
7
 
9
8
  before_install: gem install bundler
10
9
 
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## 1.3.0 (2016-12-22)
2
+
3
+ - Update assets to match upstream version
4
+
5
+ Library version:
6
+
7
+ - Material Design Lite v1.3.0
8
+ - Material Icons v3.0.0
9
+
1
10
  ## 1.2.1 (2016-09-09)
2
11
 
3
12
  - Update assets to match upstream version
@@ -166,4 +175,4 @@ Library version: Material Design Lite v1.0.2
166
175
 
167
176
  - Initial release
168
177
 
169
- Library version: Material Design Lite v1.0.1
178
+ Library version: Material Design Lite v1.0.1
data/README.md CHANGED
@@ -3,13 +3,7 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/material_design_lite-sass.svg)](http://badge.fury.io/rb/material_design_lite-sass)
4
4
  [![Build Status](https://travis-ci.org/rubysamurai/material_design_lite-sass.svg?branch=master)](https://travis-ci.org/rubysamurai/material_design_lite-sass)
5
5
 
6
- [Material Design Lite](http://www.getmdl.io/) (MDL) is a library of CSS and JavaScript components, that lets you add Material Design look to your websites. Material Design Lite is maintained by [Google](https://github.com/google/material-design-lite).
7
-
8
- `material_design_lite-sass` is a Sass-powered version of Material Design Lite for your applications. It allows to include all of Material Design Lite components at once or load them individually.
9
-
10
- `material_design_lite-sass` includes [Material Icons](https://www.google.com/design/icons/), official icon set from Google, designed under the material design guidelines.
11
-
12
- [Roboto](https://www.google.com/fonts/specimen/Roboto) font, the recommended font for Google’s visual language, Material Design, is also included.
6
+ `material_design_lite-sass` is a Sass-powered version of [Material Design Lite](http://www.getmdl.io/) for your Ruby applications. In addition to all of Material Design Lite components it includes [Material Icons](https://material.io/icons/), official icon set from Google, and [Roboto](https://fonts.google.com/specimen/Roboto) font, the recommended font for material design.
13
7
 
14
8
  ## Installation
15
9
 
@@ -29,13 +23,14 @@ Open `/app/assets/stylesheets/application.scss` file and add this line:
29
23
  @import 'material';
30
24
  ```
31
25
 
32
- > **Note:** Default Rails installation comes with `.css` file extension for stylesheet assests files, make sure you change it to `.scss` and remove all the `*= require_tree .` and `*= require_self` statements from file. Alternatively, to keep original `application.css` file, you can create `custom.scss` file in the same folder and import `material` there.
26
+ > **Note:** Default Rails installation comes with `.css` file extension for stylesheet assets files, make sure you change it to `.scss` and remove all the `*= require_tree .` and `*= require_self` statements from file. Alternatively, to keep original `application.css` file, you can create `custom.scss` file in the same folder and import `material` there.
33
27
 
34
28
  Open `app/assets/javascripts/application.js` file and add this line:
35
29
 
36
30
  ```
37
31
  //= require material
38
32
  ```
33
+
39
34
  Restart Rails web server if it was running and now your Rails application is powered by Sass version of Material Design Lite.
40
35
 
41
36
  #### Turbolinks
@@ -62,7 +57,7 @@ Put this code, for instance, in `app/assets/javascripts/application.js` file or
62
57
 
63
58
  ## Usage
64
59
 
65
- By default, using `@import 'material';` and `//= require material`, all of Material Design Lite components are imported. You can also import components individually.
60
+ By default, using `@import 'material';` and `//= require material`, all of Material Design Lite components are imported.
66
61
 
67
62
  To import specific JavaScript components, first you need to include support components:
68
63
 
@@ -71,7 +66,7 @@ To import specific JavaScript components, first you need to include support comp
71
66
  //= require material/rAF
72
67
  ```
73
68
 
74
- Then include desired Material Design Lite JavaScript component:
69
+ Then include any Material Design Lite JavaScript component:
75
70
 
76
71
  ```
77
72
  //= require material/button
@@ -149,11 +144,11 @@ For browsers that do not support ligatures, fall back to specifying the icons us
149
144
  <i class="material-icons">&#xE88E;</i>
150
145
  ```
151
146
 
152
- Complete list of Material Icon names and codepoints can be found [here](https://www.google.com/design/icons/)
147
+ Complete list of Material Icon names and codepoints can be found [here](https://material.io/icons/)
153
148
 
154
149
  ### Variables
155
150
 
156
- Sass version provides many variables to make customization process convenient. The full set of Material Design Lite variables can be found [here](https://github.com/rubysamurai/material_design_lite-sass/blob/master/vendor/assets/stylesheets/material/_variables.scss).
151
+ Sass version provides many variables to make customization process convenient. The full set of Material Design Lite variables can be found [here](vendor/assets/stylesheets/material/_variables.scss).
157
152
 
158
153
  To override the variable it must be redefined before the `@import` directive, like this:
159
154
 
@@ -162,28 +157,22 @@ $layout-header-bg-color: rgb(128,128,128) !default;
162
157
  @import 'material';
163
158
  ```
164
159
 
165
- >**Note on Sass color variables:** All Material Design Lite color variables are defined with RGB values, overriding these variables with hexadecimal color values may result in unexpected behaviour.
160
+ >**Note on Sass color variables:** All Material Design Lite color variables are defined with RGB values, overriding these variables with hexadecimal color values may result in unexpected behavior.
166
161
 
167
162
  ## Versioning
168
163
 
169
164
  Material Design Lite for Sass follows the upstream version of Google's Material Design Lite. But last version number may be ahead, in case there is a need to release project specific changes.
170
165
 
171
- Please always refer to the [CHANGELOG](https://github.com/rubysamurai/material_design_lite-sass/blob/master/CHANGELOG.md) when upgrading.
172
-
173
- ## Contributing
174
-
175
- Anyone is welcome to contribute to Material Design Lite for Sass. Please [raise an issue](https://github.com/rubysamurai/material_design_lite-sass/issues), fork the project, make changes to your forked repository and submit a pull request.
176
-
177
166
  ## Credits
178
167
 
179
168
  Material Design Lite for Sass is inspired from [bootstrap-sass](https://github.com/twbs/bootstrap-sass) by Bootstrap team.
180
169
 
181
170
  ## License
182
171
 
183
- Material Design Lite © Google, 2015. Licensed under the [Apache-2](http://www.apache.org/licenses/LICENSE-2.0.html) license.
172
+ Material Design Lite © Google. Licensed under the [Apache-2](http://www.apache.org/licenses/LICENSE-2.0.html) license.
184
173
 
185
- Material Icons © Google, 2016. Licensed under the [Apache-2](http://www.apache.org/licenses/LICENSE-2.0.html) license.
174
+ Material Icons © Google. Licensed under the [Apache-2](http://www.apache.org/licenses/LICENSE-2.0.html) license.
186
175
 
187
- Roboto © Google, 2015. Licensed under the [Apache-2](http://www.apache.org/licenses/LICENSE-2.0.html) license.
176
+ Roboto © Google. Licensed under the [Apache-2](http://www.apache.org/licenses/LICENSE-2.0.html) license.
188
177
 
189
- `material_design_lite-sass` © Dmitriy Tarasov, 2015. Released under the [MIT](https://github.com/rubysamurai/material_design_lite-sass/blob/master/LICENSE.txt) license.
178
+ `material_design_lite-sass` © Dmitriy Tarasov. Released under the [MIT](LICENSE.txt) license.
@@ -1,5 +1,5 @@
1
1
  module MaterialDesignLite
2
2
  module Sass
3
- VERSION = '1.2.1'
3
+ VERSION = '1.3.0'
4
4
  end
5
5
  end
@@ -21,9 +21,10 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.required_ruby_version = '>= 2.0.0'
23
23
 
24
- spec.add_runtime_dependency 'sass', '~> 3.3'
25
24
  spec.add_runtime_dependency 'autoprefixer-rails', '~> 6.0'
25
+ spec.add_runtime_dependency 'sass', '~> 3.3'
26
26
 
27
- spec.add_development_dependency 'rails', '~> 4.2'
28
- spec.add_development_dependency 'rspec', '~> 3.3'
27
+ spec.add_development_dependency 'railties', '~> 5.0'
28
+ spec.add_development_dependency 'rspec', '~> 3.5'
29
+ spec.add_development_dependency 'sprockets-rails', '~> 3.0'
29
30
  end
@@ -144,6 +144,27 @@ componentHandler = (function() {
144
144
  return upgradedList.indexOf(jsClass) !== -1;
145
145
  }
146
146
 
147
+ /**
148
+ * Create an event object.
149
+ *
150
+ * @param {string} eventType The type name of the event.
151
+ * @param {boolean} bubbles Whether the event should bubble up the DOM.
152
+ * @param {boolean} cancelable Whether the event can be canceled.
153
+ * @returns {!Event}
154
+ */
155
+ function createEvent_(eventType, bubbles, cancelable) {
156
+ if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {
157
+ return new CustomEvent(eventType, {
158
+ bubbles: bubbles,
159
+ cancelable: cancelable
160
+ });
161
+ } else {
162
+ var ev = document.createEvent('Events');
163
+ ev.initEvent(eventType, bubbles, cancelable);
164
+ return ev;
165
+ }
166
+ }
167
+
147
168
  /**
148
169
  * Searches existing DOM for elements of our component type and upgrades them
149
170
  * if they have not already been upgraded.
@@ -188,6 +209,13 @@ componentHandler = (function() {
188
209
  if (!(typeof element === 'object' && element instanceof Element)) {
189
210
  throw new Error('Invalid argument provided to upgrade MDL element.');
190
211
  }
212
+ // Allow upgrade to be canceled by canceling emitted event.
213
+ var upgradingEv = createEvent_('mdl-componentupgrading', true, true);
214
+ element.dispatchEvent(upgradingEv);
215
+ if (upgradingEv.defaultPrevented) {
216
+ return;
217
+ }
218
+
191
219
  var upgradedList = getUpgradedListOfElement_(element);
192
220
  var classesToUpgrade = [];
193
221
  // If jsClass is not provided scan the registered components to find the
@@ -230,16 +258,8 @@ componentHandler = (function() {
230
258
  'Unable to find a registered component for the given class.');
231
259
  }
232
260
 
233
- var ev;
234
- if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {
235
- ev = new CustomEvent('mdl-componentupgraded', {
236
- bubbles: true, cancelable: false
237
- });
238
- } else {
239
- ev = document.createEvent('Events');
240
- ev.initEvent('mdl-componentupgraded', true, true);
241
- }
242
- element.dispatchEvent(ev);
261
+ var upgradedEv = createEvent_('mdl-componentupgraded', true, false);
262
+ element.dispatchEvent(upgradedEv);
243
263
  }
244
264
  }
245
265
 
@@ -361,15 +381,7 @@ componentHandler = (function() {
361
381
  upgrades.splice(componentPlace, 1);
362
382
  component.element_.setAttribute('data-upgraded', upgrades.join(','));
363
383
 
364
- var ev;
365
- if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {
366
- ev = new CustomEvent('mdl-componentdowngraded', {
367
- bubbles: true, cancelable: false
368
- });
369
- } else {
370
- ev = document.createEvent('Events');
371
- ev.initEvent('mdl-componentdowngraded', true, true);
372
- }
384
+ var ev = createEvent_('mdl-componentdowngraded', true, false);
373
385
  component.element_.dispatchEvent(ev);
374
386
  }
375
387
  }
@@ -502,9 +514,9 @@ window.addEventListener('load', function() {
502
514
  // MIT license
503
515
  if (!Date.now) {
504
516
  /**
505
- * Date.now polyfill.
506
- * @return {number} the current Date
507
- */
517
+ * Date.now polyfill.
518
+ * @return {number} the current Date
519
+ */
508
520
  Date.now = function () {
509
521
  return new Date().getTime();
510
522
  };
@@ -524,9 +536,9 @@ for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
524
536
  if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
525
537
  var lastTime = 0;
526
538
  /**
527
- * requestAnimationFrame polyfill.
528
- * @param {!Function} callback the callback function.
529
- */
539
+ * requestAnimationFrame polyfill.
540
+ * @param {!Function} callback the callback function.
541
+ */
530
542
  window.requestAnimationFrame = function (callback) {
531
543
  var now = Date.now();
532
544
  var nextTime = Math.max(lastTime + 16, now);
@@ -1688,7 +1700,9 @@ MaterialRadio.prototype.onChange_ = function (event) {
1688
1700
  var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);
1689
1701
  // Different name == different group, so no point updating those.
1690
1702
  if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {
1691
- radios[i]['MaterialRadio'].updateClasses_();
1703
+ if (typeof radios[i]['MaterialRadio'] !== 'undefined') {
1704
+ radios[i]['MaterialRadio'].updateClasses_();
1705
+ }
1692
1706
  }
1693
1707
  }
1694
1708
  };
@@ -2717,13 +2731,15 @@ function MaterialTab(tab, ctx) {
2717
2731
  tab.appendChild(rippleContainer);
2718
2732
  }
2719
2733
  tab.addEventListener('click', function (e) {
2720
- e.preventDefault();
2721
- var href = tab.href.split('#')[1];
2722
- var panel = ctx.element_.querySelector('#' + href);
2723
- ctx.resetTabState_();
2724
- ctx.resetPanelState_();
2725
- tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
2726
- panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
2734
+ if (tab.getAttribute('href').charAt(0) === '#') {
2735
+ e.preventDefault();
2736
+ var href = tab.href.split('#')[1];
2737
+ var panel = ctx.element_.querySelector('#' + href);
2738
+ ctx.resetTabState_();
2739
+ ctx.resetPanelState_();
2740
+ tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
2741
+ panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
2742
+ }
2727
2743
  });
2728
2744
  }
2729
2745
  }
@@ -3212,6 +3228,7 @@ MaterialLayout.prototype.CssClasses_ = {
3212
3228
  TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',
3213
3229
  TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',
3214
3230
  TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',
3231
+ TAB_MANUAL_SWITCH: 'mdl-layout__tab-manual-switch',
3215
3232
  PANEL: 'mdl-layout__tab-panel',
3216
3233
  HAS_DRAWER: 'has-drawer',
3217
3234
  HAS_TABS: 'has-tabs',
@@ -3575,12 +3592,14 @@ function MaterialLayoutTab(tab, tabs, panels, layout) {
3575
3592
  rippleContainer.appendChild(ripple);
3576
3593
  tab.appendChild(rippleContainer);
3577
3594
  }
3578
- tab.addEventListener('click', function (e) {
3579
- if (tab.getAttribute('href').charAt(0) === '#') {
3580
- e.preventDefault();
3581
- selectTab();
3582
- }
3583
- });
3595
+ if (!layout.tabBar_.classList.contains(layout.CssClasses_.TAB_MANUAL_SWITCH)) {
3596
+ tab.addEventListener('click', function (e) {
3597
+ if (tab.getAttribute('href').charAt(0) === '#') {
3598
+ e.preventDefault();
3599
+ selectTab();
3600
+ }
3601
+ });
3602
+ }
3584
3603
  tab.show = selectTab;
3585
3604
  }
3586
3605
  window['MaterialLayoutTab'] = MaterialLayoutTab;
@@ -3841,8 +3860,8 @@ MaterialRipple.prototype.downHandler_ = function (event) {
3841
3860
  x = Math.round(bound.width / 2);
3842
3861
  y = Math.round(bound.height / 2);
3843
3862
  } else {
3844
- var clientX = event.clientX ? event.clientX : event.touches[0].clientX;
3845
- var clientY = event.clientY ? event.clientY : event.touches[0].clientY;
3863
+ var clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;
3864
+ var clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;
3846
3865
  x = Math.round(clientX - bound.left);
3847
3866
  y = Math.round(clientY - bound.top);
3848
3867
  }
@@ -110,6 +110,7 @@
110
110
  TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',
111
111
  TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',
112
112
  TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',
113
+ TAB_MANUAL_SWITCH: 'mdl-layout__tab-manual-switch',
113
114
  PANEL: 'mdl-layout__tab-panel',
114
115
 
115
116
  HAS_DRAWER: 'has-drawer',
@@ -549,12 +550,15 @@
549
550
  tab.appendChild(rippleContainer);
550
551
  }
551
552
 
552
- tab.addEventListener('click', function(e) {
553
- if (tab.getAttribute('href').charAt(0) === '#') {
554
- e.preventDefault();
555
- selectTab();
556
- }
557
- });
553
+ if (!layout.tabBar_.classList.contains(
554
+ layout.CssClasses_.TAB_MANUAL_SWITCH)) {
555
+ tab.addEventListener('click', function(e) {
556
+ if (tab.getAttribute('href').charAt(0) === '#') {
557
+ e.preventDefault();
558
+ selectTab();
559
+ }
560
+ });
561
+ }
558
562
 
559
563
  tab.show = selectTab;
560
564
  }
@@ -141,6 +141,27 @@ componentHandler = (function() {
141
141
  return upgradedList.indexOf(jsClass) !== -1;
142
142
  }
143
143
 
144
+ /**
145
+ * Create an event object.
146
+ *
147
+ * @param {string} eventType The type name of the event.
148
+ * @param {boolean} bubbles Whether the event should bubble up the DOM.
149
+ * @param {boolean} cancelable Whether the event can be canceled.
150
+ * @returns {!Event}
151
+ */
152
+ function createEvent_(eventType, bubbles, cancelable) {
153
+ if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {
154
+ return new CustomEvent(eventType, {
155
+ bubbles: bubbles,
156
+ cancelable: cancelable
157
+ });
158
+ } else {
159
+ var ev = document.createEvent('Events');
160
+ ev.initEvent(eventType, bubbles, cancelable);
161
+ return ev;
162
+ }
163
+ }
164
+
144
165
  /**
145
166
  * Searches existing DOM for elements of our component type and upgrades them
146
167
  * if they have not already been upgraded.
@@ -185,6 +206,13 @@ componentHandler = (function() {
185
206
  if (!(typeof element === 'object' && element instanceof Element)) {
186
207
  throw new Error('Invalid argument provided to upgrade MDL element.');
187
208
  }
209
+ // Allow upgrade to be canceled by canceling emitted event.
210
+ var upgradingEv = createEvent_('mdl-componentupgrading', true, true);
211
+ element.dispatchEvent(upgradingEv);
212
+ if (upgradingEv.defaultPrevented) {
213
+ return;
214
+ }
215
+
188
216
  var upgradedList = getUpgradedListOfElement_(element);
189
217
  var classesToUpgrade = [];
190
218
  // If jsClass is not provided scan the registered components to find the
@@ -227,16 +255,8 @@ componentHandler = (function() {
227
255
  'Unable to find a registered component for the given class.');
228
256
  }
229
257
 
230
- var ev;
231
- if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {
232
- ev = new CustomEvent('mdl-componentupgraded', {
233
- bubbles: true, cancelable: false
234
- });
235
- } else {
236
- ev = document.createEvent('Events');
237
- ev.initEvent('mdl-componentupgraded', true, true);
238
- }
239
- element.dispatchEvent(ev);
258
+ var upgradedEv = createEvent_('mdl-componentupgraded', true, false);
259
+ element.dispatchEvent(upgradedEv);
240
260
  }
241
261
  }
242
262
 
@@ -358,15 +378,7 @@ componentHandler = (function() {
358
378
  upgrades.splice(componentPlace, 1);
359
379
  component.element_.setAttribute('data-upgraded', upgrades.join(','));
360
380
 
361
- var ev;
362
- if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {
363
- ev = new CustomEvent('mdl-componentdowngraded', {
364
- bubbles: true, cancelable: false
365
- });
366
- } else {
367
- ev = document.createEvent('Events');
368
- ev.initEvent('mdl-componentdowngraded', true, true);
369
- }
381
+ var ev = createEvent_('mdl-componentdowngraded', true, false);
370
382
  component.element_.dispatchEvent(ev);
371
383
  }
372
384
  }
@@ -9,42 +9,42 @@
9
9
  // MIT license
10
10
 
11
11
  (function() {
12
- 'use strict';
12
+ 'use strict';
13
13
 
14
- if (!Date.now) {
15
- /**
16
- * Date.now polyfill.
17
- * @return {number} the current Date
18
- */
19
- Date.now = function() { return new Date().getTime(); };
20
- Date['now'] = Date.now;
21
- }
14
+ if (!Date.now) {
15
+ /**
16
+ * Date.now polyfill.
17
+ * @return {number} the current Date
18
+ */
19
+ Date.now = function() { return new Date().getTime(); };
20
+ Date['now'] = Date.now;
21
+ }
22
22
 
23
- var vendors = ['webkit', 'moz'];
24
- for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
25
- var vp = vendors[i];
26
- window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
27
- window.cancelAnimationFrame = (window[vp + 'CancelAnimationFrame'] ||
28
- window[vp + 'CancelRequestAnimationFrame']);
29
- window['requestAnimationFrame'] = window.requestAnimationFrame;
30
- window['cancelAnimationFrame'] = window.cancelAnimationFrame;
31
- }
23
+ var vendors = ['webkit', 'moz'];
24
+ for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
25
+ var vp = vendors[i];
26
+ window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
27
+ window.cancelAnimationFrame = (window[vp + 'CancelAnimationFrame'] ||
28
+ window[vp + 'CancelRequestAnimationFrame']);
29
+ window['requestAnimationFrame'] = window.requestAnimationFrame;
30
+ window['cancelAnimationFrame'] = window.cancelAnimationFrame;
31
+ }
32
32
 
33
- if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
34
- var lastTime = 0;
35
- /**
36
- * requestAnimationFrame polyfill.
37
- * @param {!Function} callback the callback function.
38
- */
39
- window.requestAnimationFrame = function(callback) {
40
- var now = Date.now();
41
- var nextTime = Math.max(lastTime + 16, now);
42
- return setTimeout(function() { callback(lastTime = nextTime); },
43
- nextTime - now);
44
- };
45
- window.cancelAnimationFrame = clearTimeout;
46
- window['requestAnimationFrame'] = window.requestAnimationFrame;
47
- window['cancelAnimationFrame'] = window.cancelAnimationFrame;
48
- }
33
+ if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
34
+ var lastTime = 0;
35
+ /**
36
+ * requestAnimationFrame polyfill.
37
+ * @param {!Function} callback the callback function.
38
+ */
39
+ window.requestAnimationFrame = function(callback) {
40
+ var now = Date.now();
41
+ var nextTime = Math.max(lastTime + 16, now);
42
+ return setTimeout(function() { callback(lastTime = nextTime); },
43
+ nextTime - now);
44
+ };
45
+ window.cancelAnimationFrame = clearTimeout;
46
+ window['requestAnimationFrame'] = window.requestAnimationFrame;
47
+ window['cancelAnimationFrame'] = window.cancelAnimationFrame;
48
+ }
49
49
 
50
50
  })();
@@ -82,7 +82,9 @@
82
82
  var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);
83
83
  // Different name == different group, so no point updating those.
84
84
  if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {
85
- radios[i]['MaterialRadio'].updateClasses_();
85
+ if (typeof radios[i]['MaterialRadio'] !== 'undefined') {
86
+ radios[i]['MaterialRadio'].updateClasses_();
87
+ }
86
88
  }
87
89
  }
88
90
  };
@@ -102,8 +102,8 @@
102
102
  x = Math.round(bound.width / 2);
103
103
  y = Math.round(bound.height / 2);
104
104
  } else {
105
- var clientX = event.clientX ? event.clientX : event.touches[0].clientX;
106
- var clientY = event.clientY ? event.clientY : event.touches[0].clientY;
105
+ var clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;
106
+ var clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;
107
107
  x = Math.round(clientX - bound.left);
108
108
  y = Math.round(clientY - bound.top);
109
109
  }
@@ -140,13 +140,15 @@
140
140
  }
141
141
 
142
142
  tab.addEventListener('click', function(e) {
143
- e.preventDefault();
144
- var href = tab.href.split('#')[1];
145
- var panel = ctx.element_.querySelector('#' + href);
146
- ctx.resetTabState_();
147
- ctx.resetPanelState_();
148
- tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
149
- panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
143
+ if (tab.getAttribute('href').charAt(0) === '#') {
144
+ e.preventDefault();
145
+ var href = tab.href.split('#')[1];
146
+ var panel = ctx.element_.querySelector('#' + href);
147
+ ctx.resetTabState_();
148
+ ctx.resetPanelState_();
149
+ tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
150
+ panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);
151
+ }
150
152
  });
151
153
 
152
154
  }
@@ -84,6 +84,10 @@
84
84
  overflow: hidden;
85
85
  padding: $card-vertical-padding $card-horizontal-padding;
86
86
  width: 90%;
87
+
88
+ &.mdl-card--border {
89
+ border-bottom: 1px solid $card-border-color;
90
+ }
87
91
  }
88
92
 
89
93
  .mdl-card__actions {
@@ -25,7 +25,10 @@
25
25
 
26
26
  display: inline-block;
27
27
 
28
+ vertical-align: middle;
29
+
28
30
  box-sizing: border-box;
31
+ height: $radio-label-height;
29
32
  margin: 0;
30
33
  padding-left: 0;
31
34
 
@@ -98,13 +101,13 @@
98
101
 
99
102
  @include material-animation-default(0.28s);
100
103
  transition-property: transform;
101
- transform: scale3d(0, 0, 0);
104
+ transform: scale(0, 0);
102
105
 
103
106
  border-radius: 50%;
104
107
  background: $radio-color;
105
108
 
106
109
  .mdl-radio.is-checked & {
107
- transform: scale3d(1, 1, 1);
110
+ transform: scale(1, 1);
108
111
  }
109
112
 
110
113
  fieldset[disabled] .mdl-radio &,
@@ -192,6 +192,14 @@
192
192
  overflow: hidden;
193
193
  border-color: inherit;
194
194
 
195
+ &.mdl-spinner__left {
196
+ float: left;
197
+ }
198
+
199
+ &.mdl-spinner__right {
200
+ float: right;
201
+ }
202
+
195
203
  & .mdl-spinner__circle {
196
204
  width: 200%;
197
205
  }
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: material_design_lite-sass
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitriy Tarasov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-08 00:00:00.000000000 Z
11
+ date: 2016-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: autoprefixer-rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: sass
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -25,47 +39,47 @@ dependencies:
25
39
  - !ruby/object:Gem::Version
26
40
  version: '3.3'
27
41
  - !ruby/object:Gem::Dependency
28
- name: autoprefixer-rails
42
+ name: railties
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '6.0'
34
- type: :runtime
47
+ version: '5.0'
48
+ type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '6.0'
54
+ version: '5.0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: rails
56
+ name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '4.2'
61
+ version: '3.5'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '4.2'
68
+ version: '3.5'
55
69
  - !ruby/object:Gem::Dependency
56
- name: rspec
70
+ name: sprockets-rails
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '3.3'
75
+ version: '3.0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '3.3'
82
+ version: '3.0'
69
83
  description: Google's Material Design Lite with Material Icons and Roboto for Sass
70
84
  powered applications
71
85
  email:
@@ -189,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
203
  version: '0'
190
204
  requirements: []
191
205
  rubyforge_project:
192
- rubygems_version: 2.5.1
206
+ rubygems_version: 2.5.2
193
207
  signing_key:
194
208
  specification_version: 4
195
209
  summary: Google's Material Design Lite with Material Icons and Roboto for Sass powered