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.
- checksums.yaml +4 -4
- data/.travis.yml +5 -2
- data/CHANGELOG.md +9 -0
- data/README.md +41 -32
- data/lib/material_design_lite/sass/version.rb +1 -1
- data/vendor/assets/javascripts/material.js +377 -301
- data/vendor/assets/javascripts/material/button.js +0 -24
- data/vendor/assets/javascripts/material/checkbox.js +0 -26
- data/vendor/assets/javascripts/material/data-table.js +18 -10
- data/vendor/assets/javascripts/material/icon-toggle.js +0 -26
- data/vendor/assets/javascripts/material/layout.js +104 -6
- data/vendor/assets/javascripts/material/mdlComponentHandler.js +15 -36
- data/vendor/assets/javascripts/material/menu.js +16 -36
- data/vendor/assets/javascripts/material/progress.js +0 -22
- data/vendor/assets/javascripts/material/radio.js +0 -28
- data/vendor/assets/javascripts/material/ripple.js +6 -35
- data/vendor/assets/javascripts/material/slider.js +0 -23
- data/vendor/assets/javascripts/material/snackbar.js +189 -0
- data/vendor/assets/javascripts/material/switch.js +0 -26
- data/vendor/assets/javascripts/material/tabs.js +2 -2
- data/vendor/assets/javascripts/material/textfield.js +32 -25
- data/vendor/assets/javascripts/material/tooltip.js +39 -49
- data/vendor/assets/stylesheets/_material.scss +3 -0
- data/vendor/assets/stylesheets/material/_badge.scss +6 -0
- data/vendor/assets/stylesheets/material/_button.scss +3 -3
- data/vendor/assets/stylesheets/material/_checkbox.scss +5 -0
- data/vendor/assets/stylesheets/material/_data-table.scss +17 -9
- data/vendor/assets/stylesheets/material/_dialog.scss +57 -0
- data/vendor/assets/stylesheets/material/_grid.scss +60 -0
- data/vendor/assets/stylesheets/material/_layout.scss +77 -3
- data/vendor/assets/stylesheets/material/_list.scss +103 -0
- data/vendor/assets/stylesheets/material/_mega_footer.scss +1 -1
- data/vendor/assets/stylesheets/material/_menu.scss +5 -1
- data/vendor/assets/stylesheets/material/_mixins.scss +33 -0
- data/vendor/assets/stylesheets/material/_progress.scss +5 -0
- data/vendor/assets/stylesheets/material/_radio.scss +5 -0
- data/vendor/assets/stylesheets/material/_shadow.scss +4 -0
- data/vendor/assets/stylesheets/material/_snackbar.scss +81 -0
- data/vendor/assets/stylesheets/material/_switch.scss +5 -1
- data/vendor/assets/stylesheets/material/_tabs.scss +0 -1
- data/vendor/assets/stylesheets/material/_textfield.scss +13 -3
- data/vendor/assets/stylesheets/material/_typography.scss +4 -0
- data/vendor/assets/stylesheets/material/_variables.scss +102 -81
- 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 (
|
72
|
-
this.element_.style.
|
73
|
-
|
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.
|
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(
|
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
|
-
//
|
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
|
-
|
120
|
-
this.forElement_.addEventListener('
|
121
|
-
|
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";
|
@@ -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
|
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
|
-
|
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
|
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:
|
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:
|
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-
|
94
|
-
|
95
|
-
|
96
|
-
|
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
|
}
|