material_design_lite-sass 1.0.6.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -2
  3. data/CHANGELOG.md +9 -0
  4. data/README.md +41 -32
  5. data/lib/material_design_lite/sass/version.rb +1 -1
  6. data/vendor/assets/javascripts/material.js +377 -301
  7. data/vendor/assets/javascripts/material/button.js +0 -24
  8. data/vendor/assets/javascripts/material/checkbox.js +0 -26
  9. data/vendor/assets/javascripts/material/data-table.js +18 -10
  10. data/vendor/assets/javascripts/material/icon-toggle.js +0 -26
  11. data/vendor/assets/javascripts/material/layout.js +104 -6
  12. data/vendor/assets/javascripts/material/mdlComponentHandler.js +15 -36
  13. data/vendor/assets/javascripts/material/menu.js +16 -36
  14. data/vendor/assets/javascripts/material/progress.js +0 -22
  15. data/vendor/assets/javascripts/material/radio.js +0 -28
  16. data/vendor/assets/javascripts/material/ripple.js +6 -35
  17. data/vendor/assets/javascripts/material/slider.js +0 -23
  18. data/vendor/assets/javascripts/material/snackbar.js +189 -0
  19. data/vendor/assets/javascripts/material/switch.js +0 -26
  20. data/vendor/assets/javascripts/material/tabs.js +2 -2
  21. data/vendor/assets/javascripts/material/textfield.js +32 -25
  22. data/vendor/assets/javascripts/material/tooltip.js +39 -49
  23. data/vendor/assets/stylesheets/_material.scss +3 -0
  24. data/vendor/assets/stylesheets/material/_badge.scss +6 -0
  25. data/vendor/assets/stylesheets/material/_button.scss +3 -3
  26. data/vendor/assets/stylesheets/material/_checkbox.scss +5 -0
  27. data/vendor/assets/stylesheets/material/_data-table.scss +17 -9
  28. data/vendor/assets/stylesheets/material/_dialog.scss +57 -0
  29. data/vendor/assets/stylesheets/material/_grid.scss +60 -0
  30. data/vendor/assets/stylesheets/material/_layout.scss +77 -3
  31. data/vendor/assets/stylesheets/material/_list.scss +103 -0
  32. data/vendor/assets/stylesheets/material/_mega_footer.scss +1 -1
  33. data/vendor/assets/stylesheets/material/_menu.scss +5 -1
  34. data/vendor/assets/stylesheets/material/_mixins.scss +33 -0
  35. data/vendor/assets/stylesheets/material/_progress.scss +5 -0
  36. data/vendor/assets/stylesheets/material/_radio.scss +5 -0
  37. data/vendor/assets/stylesheets/material/_shadow.scss +4 -0
  38. data/vendor/assets/stylesheets/material/_snackbar.scss +81 -0
  39. data/vendor/assets/stylesheets/material/_switch.scss +5 -1
  40. data/vendor/assets/stylesheets/material/_tabs.scss +0 -1
  41. data/vendor/assets/stylesheets/material/_textfield.scss +13 -3
  42. data/vendor/assets/stylesheets/material/_typography.scss +4 -0
  43. data/vendor/assets/stylesheets/material/_variables.scss +102 -81
  44. metadata +7 -3
@@ -53,7 +53,11 @@
53
53
  * @private
54
54
  */
55
55
  MaterialTooltip.prototype.CssClasses_ = {
56
- IS_ACTIVE: 'is-active'
56
+ IS_ACTIVE: 'is-active',
57
+ BOTTOM: 'mdl-tooltip--bottom',
58
+ LEFT: 'mdl-tooltip--left',
59
+ RIGHT: 'mdl-tooltip--right',
60
+ TOP: 'mdl-tooltip--top'
57
61
  };
58
62
 
59
63
  /**
@@ -63,36 +67,51 @@
63
67
  * @private
64
68
  */
65
69
  MaterialTooltip.prototype.handleMouseEnter_ = function(event) {
66
- event.stopPropagation();
67
70
  var props = event.target.getBoundingClientRect();
68
71
  var left = props.left + (props.width / 2);
72
+ var top = props.top + (props.height / 2);
69
73
  var marginLeft = -1 * (this.element_.offsetWidth / 2);
74
+ var marginTop = -1 * (this.element_.offsetHeight / 2);
75
+
76
+ if (this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT)) {
77
+ left = (props.width / 2);
78
+ if (top + marginTop < 0) {
79
+ this.element_.style.top = 0;
80
+ this.element_.style.marginTop = 0;
81
+ } else {
82
+ this.element_.style.top = top + 'px';
83
+ this.element_.style.marginTop = marginTop + 'px';
84
+ }
85
+ } else {
86
+ if (left + marginLeft < 0) {
87
+ this.element_.style.left = 0;
88
+ this.element_.style.marginLeft = 0;
89
+ } else {
90
+ this.element_.style.left = left + 'px';
91
+ this.element_.style.marginLeft = marginLeft + 'px';
92
+ }
93
+ }
70
94
 
71
- if (left + marginLeft < 0) {
72
- this.element_.style.left = 0;
73
- this.element_.style.marginLeft = 0;
95
+ if (this.element_.classList.contains(this.CssClasses_.TOP)) {
96
+ this.element_.style.top = props.top - this.element_.offsetHeight - 10 + 'px';
97
+ } else if (this.element_.classList.contains(this.CssClasses_.RIGHT)) {
98
+ this.element_.style.left = props.left + props.width + 10 + 'px';
99
+ } else if (this.element_.classList.contains(this.CssClasses_.LEFT)) {
100
+ this.element_.style.left = props.left - this.element_.offsetWidth - 10 + 'px';
74
101
  } else {
75
- this.element_.style.left = left + 'px';
76
- this.element_.style.marginLeft = marginLeft + 'px';
102
+ this.element_.style.top = props.top + props.height + 10 + 'px';
77
103
  }
78
104
 
79
- this.element_.style.top = props.top + props.height + 10 + 'px';
80
105
  this.element_.classList.add(this.CssClasses_.IS_ACTIVE);
81
- window.addEventListener('scroll', this.boundMouseLeaveHandler, false);
82
- window.addEventListener('touchmove', this.boundMouseLeaveHandler, false);
83
106
  };
84
107
 
85
108
  /**
86
109
  * Handle mouseleave for tooltip.
87
110
  *
88
- * @param {Event} event The event that fired.
89
111
  * @private
90
112
  */
91
- MaterialTooltip.prototype.handleMouseLeave_ = function(event) {
92
- event.stopPropagation();
113
+ MaterialTooltip.prototype.handleMouseLeave_ = function() {
93
114
  this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);
94
- window.removeEventListener('scroll', this.boundMouseLeaveHandler);
95
- window.removeEventListener('touchmove', this.boundMouseLeaveHandler, false);
96
115
  };
97
116
 
98
117
  /**
@@ -108,50 +127,21 @@
108
127
  }
109
128
 
110
129
  if (this.forElement_) {
111
- // Tabindex needs to be set for `blur` events to be emitted
130
+ // It's left here because it prevents accidental text selection on Android
112
131
  if (!this.forElement_.hasAttribute('tabindex')) {
113
132
  this.forElement_.setAttribute('tabindex', '0');
114
133
  }
115
134
 
116
135
  this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);
117
136
  this.boundMouseLeaveHandler = this.handleMouseLeave_.bind(this);
118
- this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler,
119
- false);
120
- this.forElement_.addEventListener('click', this.boundMouseEnterHandler,
121
- false);
122
- this.forElement_.addEventListener('blur', this.boundMouseLeaveHandler);
123
- this.forElement_.addEventListener('touchstart', this.boundMouseEnterHandler,
124
- false);
125
- this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveHandler);
137
+ this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);
138
+ this.forElement_.addEventListener('touchend', this.boundMouseEnterHandler, false);
139
+ this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveHandler, false);
140
+ window.addEventListener('touchstart', this.boundMouseLeaveHandler);
126
141
  }
127
142
  }
128
143
  };
129
144
 
130
- /**
131
- * Downgrade the component
132
- *
133
- * @private
134
- */
135
- MaterialTooltip.prototype.mdlDowngrade_ = function() {
136
- if (this.forElement_) {
137
- this.forElement_.removeEventListener('mouseenter', this.boundMouseEnterHandler, false);
138
- this.forElement_.removeEventListener('click', this.boundMouseEnterHandler, false);
139
- this.forElement_.removeEventListener('touchstart', this.boundMouseEnterHandler, false);
140
- this.forElement_.removeEventListener('mouseleave', this.boundMouseLeaveHandler);
141
- }
142
- };
143
-
144
- /**
145
- * Public alias for the downgrade method.
146
- *
147
- * @public
148
- */
149
- MaterialTooltip.prototype.mdlDowngrade =
150
- MaterialTooltip.prototype.mdlDowngrade_;
151
-
152
- MaterialTooltip.prototype['mdlDowngrade'] =
153
- MaterialTooltip.prototype.mdlDowngrade;
154
-
155
145
  // The component registers itself. It can assume componentHandler is available
156
146
  // in the global scope.
157
147
  componentHandler.register({
@@ -33,14 +33,17 @@
33
33
  @import "material/card";
34
34
  @import "material/checkbox";
35
35
  @import "material/data-table";
36
+ @import "material/dialog";
36
37
  @import "material/mega_footer";
37
38
  @import "material/mini_footer";
38
39
  @import "material/icon-toggle";
40
+ @import "material/list";
39
41
  @import "material/menu";
40
42
  @import "material/progress";
41
43
  @import "material/layout";
42
44
  @import "material/radio";
43
45
  @import "material/slider";
46
+ @import "material/snackbar";
44
47
  @import "material/spinner";
45
48
  @import "material/switch";
46
49
  @import "material/tabs";
@@ -63,4 +63,10 @@
63
63
  box-shadow: 0 0 1px gray;
64
64
  }
65
65
  }
66
+ &.mdl-badge--overlap {
67
+ margin-right: ($badge-size - $badge-overlap);
68
+ &:after {
69
+ right: -($badge-size - $badge-overlap);
70
+ }
71
+ }
66
72
  }
@@ -25,12 +25,13 @@
25
25
  color: $button-secondary-color;
26
26
  position: relative;
27
27
  height: $button-height;
28
+ margin: 0;
28
29
  min-width: $button-min-width;
29
30
  padding: 0 $button-padding;
30
31
  display: inline-block;
31
32
  @include typo-button();
32
33
  overflow: hidden;
33
- will-change: box-shadow, transform;
34
+ will-change: box-shadow;
34
35
  transition: box-shadow 0.2s $animation-curve-fast-out-linear-in,
35
36
  background-color 0.2s $animation-curve-default,
36
37
  color 0.2s $animation-curve-default;
@@ -277,7 +278,6 @@ input.mdl-button[type="submit"] {
277
278
  &.mdl-button--disabled.mdl-button--disabled {
278
279
  background-color: $button-primary-color-disabled;
279
280
  color: $button-secondary-color-disabled;
280
- @include shadow-2dp();
281
281
  }
282
282
  }
283
283
 
@@ -287,7 +287,7 @@ input.mdl-button[type="submit"] {
287
287
  &.mdl-button--disabled.mdl-button--disabled {
288
288
  background-color: $button-primary-color-disabled;
289
289
  color: $button-secondary-color-disabled;
290
- @include shadow-2dp();
290
+ box-shadow: none;
291
291
  }
292
292
  }
293
293
  &--colored {
@@ -80,6 +80,7 @@
80
80
  border: 2px solid $checkbox-color;
81
81
  }
82
82
 
83
+ fieldset[disabled] .mdl-checkbox &,
83
84
  .mdl-checkbox.is-disabled & {
84
85
  border: 2px solid $checkbox-disabled-color;
85
86
  cursor: auto;
@@ -127,6 +128,7 @@
127
128
  background: $checkbox-color asset-url("tick.svg");
128
129
  }
129
130
 
131
+ fieldset[disabled] .mdl-checkbox.is-checked &,
130
132
  .mdl-checkbox.is-checked.is-disabled & {
131
133
  background: $checkbox-disabled-color asset-url("tick.svg");
132
134
  }
@@ -139,6 +141,7 @@
139
141
  line-height: $checkbox-label-height;
140
142
  margin: 0;
141
143
 
144
+ fieldset[disabled] .mdl-checkbox &,
142
145
  .mdl-checkbox.is-disabled & {
143
146
  color: $checkbox-disabled-color;
144
147
  cursor: auto;
@@ -165,10 +168,12 @@
165
168
  background: $checkbox-color;
166
169
  }
167
170
 
171
+ fieldset[disabled] .mdl-checkbox &,
168
172
  .mdl-checkbox.is-disabled & {
169
173
  cursor: auto;
170
174
  }
171
175
 
176
+ fieldset[disabled] .mdl-checkbox & .mdl-ripple,
172
177
  .mdl-checkbox.is-disabled & .mdl-ripple {
173
178
  background: transparent;
174
179
  }
@@ -51,7 +51,7 @@
51
51
  }
52
52
 
53
53
  td, th {
54
- padding: 0 $data-table-column-padding 0 $data-table-column-padding;
54
+ padding: 0 $data-table-column-padding 12px $data-table-column-padding;
55
55
  text-align: right;
56
56
 
57
57
  &:first-of-type {
@@ -65,7 +65,7 @@
65
65
 
66
66
  td {
67
67
  position: relative;
68
- vertical-align: top;
68
+ vertical-align: middle;
69
69
  height: $data-table-row-height;
70
70
  border-top: $data-table-dividers;
71
71
  border-bottom: $data-table-dividers;
@@ -73,9 +73,7 @@
73
73
  box-sizing: border-box;
74
74
 
75
75
  .mdl-data-table__select {
76
- vertical-align: top;
77
- position: absolute;
78
- left: 24px;
76
+ vertical-align: middle;
79
77
  }
80
78
  }
81
79
 
@@ -90,10 +88,20 @@
90
88
  padding-bottom: 8px;
91
89
  box-sizing: border-box;
92
90
 
93
- .mdl-data-table__select {
94
- position: absolute;
95
- bottom: 8px;
96
- left: 24px;
91
+ .mdl-data-table__header--sorted-ascending, .mdl-data-table__header--sorted-descending {
92
+ color: $data-table-header-sorted-color;
93
+ &:before {
94
+ font-size: $data-table-header-sort-icon-size;
95
+ @include typo-icon;
96
+ }
97
+ }
98
+
99
+ .mdl-data-table__header--sorted-ascending:before {
100
+ content: "\e5d8";
101
+ }
102
+
103
+ .mdl-data-table__header--sorted-descending:before {
104
+ content: "\e5db";
97
105
  }
98
106
  }
99
107
  }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Copyright 2015 Google Inc. All Rights Reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ @import "variables";
18
+ @import "mixins";
19
+
20
+ .mdl-dialog {
21
+ border: none;
22
+ @include shadow-24dp;
23
+ @include dialog-width;
24
+
25
+ &__title {
26
+ padding: 24px 24px 0;
27
+ margin: 0;
28
+ font-size: 2.5rem;
29
+ }
30
+ &__actions {
31
+ padding: 8px 8px 8px 24px;
32
+ display: flex;
33
+ flex-direction: row-reverse;
34
+ flex-wrap: wrap;
35
+ > * {
36
+ margin-right: 8px;
37
+ height: 36px;
38
+ &:first-child {
39
+ margin-right: 0;
40
+ }
41
+ }
42
+ &--full-width {
43
+ padding: 0 0 8px 0;
44
+ > * {
45
+ height: 48px;
46
+ flex: 0 0 100%;
47
+ padding-right: 16px;
48
+ margin-right: 0;
49
+ text-align: right;
50
+ }
51
+ }
52
+ }
53
+ &__content {
54
+ padding: 20px 24px 24px 24px;
55
+ color: $dialog-content-color;
56
+ }
57
+ }
@@ -58,6 +58,13 @@
58
58
  margin: 0;
59
59
  }
60
60
 
61
+ // Define order override classes.
62
+ @for $i from 1 through $grid-max-columns {
63
+ .mdl-cell--order-#{$i} {
64
+ order: $i;
65
+ }
66
+ }
67
+
61
68
 
62
69
  // Mixins for width calculation.
63
70
  @mixin partial-size($size, $columns, $gutter) {
@@ -72,6 +79,14 @@
72
79
  @include partial-size(1, 1, $gutter);
73
80
  }
74
81
 
82
+ @mixin offset-size($size, $columns, $gutter) {
83
+ margin-left: calc(#{(($size / $columns) * 100)+"%"} + #{$gutter / 2});
84
+
85
+ .mdl-grid.mdl-grid--no-spacing > & {
86
+ margin-left: #{(($size / $columns) * 100)+"%"};
87
+ }
88
+ }
89
+
75
90
 
76
91
 
77
92
  ////////// Phone //////////
@@ -91,6 +106,13 @@
91
106
  display: none !important;
92
107
  }
93
108
 
109
+ // Define order override classes.
110
+ @for $i from 1 through $grid-max-columns {
111
+ .mdl-cell--order-#{$i}-phone.mdl-cell--order-#{$i}-phone {
112
+ order: $i;
113
+ }
114
+ }
115
+
94
116
  // Define partial sizes for columnNumber < totalColumns.
95
117
  @for $i from 1 through ($grid-phone-columns - 1) {
96
118
  .mdl-cell--#{$i}-col,
@@ -106,6 +128,14 @@
106
128
  @include full-size($grid-phone-gutter);
107
129
  }
108
130
  }
131
+
132
+ // Define valid phone offsets.
133
+ @for $i from 1 through ($grid-phone-columns - 1) {
134
+ .mdl-cell--#{$i}-offset,
135
+ .mdl-cell--#{$i}-offset-phone.mdl-cell--#{$i}-offset-phone {
136
+ @include offset-size($i, $grid-phone-columns, $grid-phone-gutter);
137
+ }
138
+ }
109
139
  }
110
140
 
111
141
 
@@ -126,6 +156,13 @@
126
156
  display: none !important;
127
157
  }
128
158
 
159
+ // Define order override classes.
160
+ @for $i from 1 through $grid-max-columns {
161
+ .mdl-cell--order-#{$i}-tablet.mdl-cell--order-#{$i}-tablet {
162
+ order: $i;
163
+ }
164
+ }
165
+
129
166
  // Define partial sizes for columnNumber < totalColumns.
130
167
  @for $i from 1 through ($grid-tablet-columns - 1) {
131
168
  .mdl-cell--#{$i}-col,
@@ -141,6 +178,14 @@
141
178
  @include full-size($grid-tablet-gutter);
142
179
  }
143
180
  }
181
+
182
+ // Define valid tablet offsets.
183
+ @for $i from 1 through ($grid-tablet-columns - 1) {
184
+ .mdl-cell--#{$i}-offset,
185
+ .mdl-cell--#{$i}-offset-tablet.mdl-cell--#{$i}-offset-tablet {
186
+ @include offset-size($i, $grid-tablet-columns, $grid-tablet-gutter);
187
+ }
188
+ }
144
189
  }
145
190
 
146
191
 
@@ -161,6 +206,13 @@
161
206
  display: none !important;
162
207
  }
163
208
 
209
+ // Define order override classes.
210
+ @for $i from 1 through $grid-max-columns {
211
+ .mdl-cell--order-#{$i}-desktop.mdl-cell--order-#{$i}-desktop {
212
+ order: $i;
213
+ }
214
+ }
215
+
164
216
  // Define partial sizes for all numbers of columns.
165
217
  @for $i from 1 through $grid-desktop-columns {
166
218
  .mdl-cell--#{$i}-col,
@@ -168,4 +220,12 @@
168
220
  @include partial-size($i, $grid-desktop-columns, $grid-desktop-gutter);
169
221
  }
170
222
  }
223
+
224
+ // Define valid desktop offsets.
225
+ @for $i from 1 through ($grid-desktop-columns - 1) {
226
+ .mdl-cell--#{$i}-offset,
227
+ .mdl-cell--#{$i}-offset-desktop.mdl-cell--#{$i}-offset-desktop {
228
+ @include offset-size($i, $grid-desktop-columns, $grid-desktop-gutter);
229
+ }
230
+ }
171
231
  }