material_components_web-sass 0.12.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -135,10 +135,10 @@ $mdc-dialog-dark-theme-bg-color: #303030 !default;
135
135
  padding: 8px;
136
136
 
137
137
  &__button {
138
- margin-right: 8px;
138
+ @include mdc-rtl-reflexive-box(margin, right, 8px);
139
139
 
140
140
  &:last-child {
141
- margin-right: 0;
141
+ @include mdc-rtl-reflexive-box(margin, right, 0);
142
142
  }
143
143
  }
144
144
  }
@@ -135,3 +135,8 @@
135
135
  }
136
136
  }
137
137
  }
138
+
139
+ .mdc-drawer-scroll-lock {
140
+ height: 100vh;
141
+ overflow: hidden;
142
+ }
@@ -44,7 +44,7 @@
44
44
  }
45
45
 
46
46
  width: calc(#{$percent} - #{$gutter});
47
- width: calc(#{$percent} - var(--mdc-layout-grid-gutter, #{$gutter}));
47
+ width: calc(#{$percent} - var(--mdc-layout-grid-gutter-#{$size}, #{$gutter}));
48
48
 
49
49
  @supports (display: grid) {
50
50
  width: auto;
@@ -52,53 +52,45 @@
52
52
  }
53
53
  }
54
54
 
55
- @mixin mdc-layout-grid-cell-spans_($span, $gutter) {
56
- @each $size in map-keys($mdc-layout-grid-columns) {
57
- @include mdc-layout-grid-media-query_($size) {
58
- @include mdc-layout-grid-cell-span_($size, $span, $gutter);
59
- }
60
- }
61
- }
62
-
63
55
  // Public mixins, meant for developer usage.
64
- @mixin mdc-layout-grid($margin, $gutter, $max-width: null) {
65
- display: flex;
66
- flex-flow: row wrap;
67
- align-items: stretch;
68
- margin: 0 auto;
56
+ @mixin mdc-layout-grid($size, $margin, $max-width: null) {
69
57
  box-sizing: border-box;
70
- padding: $margin - $gutter / 2;
71
- padding: calc(var(--mdc-layout-grid-margin, #{$margin}) - var(--mdc-layout-grid-gutter, #{$gutter}) / 2);
58
+ margin: 0 auto;
72
59
 
73
60
  @if $max-width {
74
61
  max-width: $max-width;
75
62
  }
76
63
 
64
+ padding: $margin;
65
+ padding: var(--mdc-layout-grid-margin-#{$size}, #{$margin});
66
+ }
67
+
68
+ @mixin mdc-layout-grid-inner($size, $margin, $gutter) {
69
+ display: flex;
70
+ flex-flow: row wrap;
71
+ align-items: stretch;
72
+ margin: -$gutter / 2;
73
+ margin: calc(var(--mdc-layout-grid-gutter-#{$size}, #{$gutter}) / 2 * -1);
74
+
77
75
  @supports (display: grid) {
78
76
  display: grid;
79
77
  grid-gap: $gutter;
80
- grid-gap: var(--mdc-layout-grid-gutter, $gutter);
81
- padding: $margin;
82
- padding: var(--mdc-layout-grid-margin, #{$margin});
83
-
84
- @each $size in map-keys($mdc-layout-grid-columns) {
85
- @include mdc-layout-grid-media-query_($size) {
86
- grid-template-columns: repeat(map-get($mdc-layout-grid-columns, $size), minmax(0, 1fr));
87
- }
88
- }
78
+ grid-gap: var(--mdc-layout-grid-gutter-#{$size}, $gutter);
79
+ margin: 0;
80
+ grid-template-columns: repeat(map-get($mdc-layout-grid-columns, $size), minmax(0, 1fr));
89
81
  }
90
82
  }
91
83
 
92
- @mixin mdc-layout-grid-cell($gutter, $span: 4) {
93
- margin: $gutter / 2;
94
- margin: calc(var(--mdc-layout-grid-gutter, #{$gutter}) / 2);
84
+ @mixin mdc-layout-grid-cell($size, $default-span, $gutter) {
95
85
  box-sizing: border-box;
86
+ margin: $gutter / 2;
87
+ margin: calc(var(--mdc-layout-grid-gutter-#{$size}, #{$gutter}) / 2);
96
88
 
97
89
  @supports (display: grid) {
98
90
  margin: 0;
99
91
  }
100
92
 
101
- @include mdc-layout-grid-cell-spans_($span, $gutter);
93
+ @include mdc-layout-grid-cell-span_($size, $default-span, $gutter);
102
94
  }
103
95
 
104
96
  @mixin mdc-layout-grid-cell-order($order) {
@@ -24,6 +24,18 @@ $mdc-layout-grid-columns: (
24
24
  phone: 4
25
25
  ) !default;
26
26
 
27
+ $mdc-layout-grid-default-margin: (
28
+ desktop: 24px,
29
+ tablet: 16px,
30
+ phone: 16px
31
+ ) !default;
32
+
33
+ $mdc-layout-grid-default-gutter: (
34
+ desktop: 24px,
35
+ tablet: 16px,
36
+ phone: 16px
37
+ ) !default;
38
+
27
39
  $mdc-layout-grid-default-column-span: 4 !default;
28
- $mdc-layout-grid-default-margin: 16px !default;
29
- $mdc-layout-grid-default-gutter: 16px !default;
40
+
41
+ $mdc-layout-grid-max-width: null;
@@ -15,22 +15,48 @@
15
15
  @import "./variables";
16
16
  @import "./mixins";
17
17
 
18
+ :root {
19
+ @each $size in map-keys($mdc-layout-grid-columns) {
20
+ --mdc-layout-grid-margin-#{$size}: map-get($mdc-layout-grid-default-margin, $size);
21
+ --mdc-layout-grid-gutter-#{$size}: map-get($mdc-layout-grid-default-gutter, $size);
22
+ }
23
+ }
24
+
18
25
  // postcss-bem-linter: define layout-grid
19
26
  .mdc-layout-grid {
20
- @include mdc-layout-grid($mdc-layout-grid-default-margin, $mdc-layout-grid-default-gutter);
27
+ @each $size in map-keys($mdc-layout-grid-columns) {
28
+ @include mdc-layout-grid-media-query_($size) {
29
+ $margin: map-get($mdc-layout-grid-default-margin, $size);
30
+
31
+ @include mdc-layout-grid($size, $margin, $mdc-layout-grid-max-width);
32
+ }
33
+ }
21
34
  }
22
35
 
23
- .mdc-layout-grid__cell {
24
- @include mdc-layout-grid-cell($mdc-layout-grid-default-gutter);
36
+ .mdc-layout-grid__inner {
37
+ @each $size in map-keys($mdc-layout-grid-columns) {
38
+ @include mdc-layout-grid-media-query_($size) {
39
+ $margin: map-get($mdc-layout-grid-default-margin, $size);
40
+ $gutter: map-get($mdc-layout-grid-default-gutter, $size);
25
41
 
42
+ @include mdc-layout-grid-inner($size, $margin, $gutter);
43
+ }
44
+ }
45
+ }
46
+
47
+ .mdc-layout-grid__cell {
26
48
  @each $size in map-keys($mdc-layout-grid-columns) {
27
49
  @include mdc-layout-grid-media-query_($size) {
50
+ $gutter: map-get($mdc-layout-grid-default-gutter, $size);
51
+
52
+ @include mdc-layout-grid-cell($size, $mdc-layout-grid-default-column-span, $gutter);
53
+
28
54
  @for $span from 1 through map-get($mdc-layout-grid-columns, desktop) {
29
55
  // Span classes.
30
56
  // stylelint-disable max-nesting-depth
31
57
  @at-root .mdc-layout-grid__cell--span-#{$span},
32
58
  .mdc-layout-grid__cell--span-#{$span}-#{$size}.mdc-layout-grid__cell--span-#{$span}-#{$size} {
33
- @include mdc-layout-grid-cell-span_($size, $span, $mdc-layout-grid-default-gutter);
59
+ @include mdc-layout-grid-cell-span_($size, $span, $gutter);
34
60
  }
35
61
  // stylelint-enable max-nesting-depth
36
62
  }
@@ -140,9 +140,7 @@ $mdc-list-side-padding: 16px;
140
140
  .mdc-list--two-line.mdc-list--dense & {
141
141
  height: 60px;
142
142
  }
143
- // stylelint-enable plugin/selector-bem-pattern
144
143
  }
145
-
146
144
  // postcss-bem-linter: end //
147
145
 
148
146
  // Override anchor tag styles for the use-case of a list being used for navigation
@@ -221,11 +219,9 @@ a.mdc-list-item {
221
219
  }
222
220
 
223
221
  // Reset padding on mdc-list since it's already accounted for by the list group.
224
- // stylelint-disable plugin/selector-bem-pattern
225
222
  .mdc-list {
226
223
  padding: 0;
227
224
  }
228
- // stylelint-enable plugin/selector-bem-pattern
229
225
  }
230
226
 
231
227
  // postcss-bem-linter: end
@@ -26,6 +26,7 @@ $mdc-simple-menu-item-fade-duration: .3s;
26
26
  .mdc-simple-menu {
27
27
  display: none;
28
28
  position: absolute;
29
+ min-width: 170px;
29
30
  max-width: calc(100vw - 32px);
30
31
  max-height: calc(100vh - 32px);
31
32
  margin: 0;
@@ -133,8 +134,9 @@ $mdc-simple-menu-item-fade-duration: .3s;
133
134
  outline: none;
134
135
  color: inherit;
135
136
  text-decoration: none;
137
+ user-select: none;
136
138
 
137
- @include mdc-typography(body2);
139
+ @include mdc-typography(subheading2);
138
140
 
139
141
  @include mdc-theme-dark(".mdc-simple-menu", true) {
140
142
  color: white;
@@ -189,6 +191,22 @@ $mdc-simple-menu-item-fade-duration: .3s;
189
191
  opacity: .18;
190
192
  }
191
193
 
194
+ .mdc-list-item[aria-disabled="true"] {
195
+ cursor: default;
196
+
197
+ @include mdc-theme-prop(color, text-disabled-on-light);
198
+
199
+ @include mdc-theme-dark(".mdc-select") {
200
+ @include mdc-theme-prop(color, text-disabled-on-dark);
201
+ }
202
+ }
203
+
204
+ .mdc-list-item[aria-disabled="true"] {
205
+ &:focus::before,
206
+ &:active::before {
207
+ opacity: 0;
208
+ }
209
+ }
192
210
  /* stylelint-enable plugin/selector-bem-pattern */
193
211
  }
194
212
 
@@ -0,0 +1,18 @@
1
+ //
2
+ // Copyright 2017 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
+ $mdc-slider-default-assumed-bg-color: white !default;
18
+ $mdc-slider-dark-theme-assumed-bg-color: #333 !default;
@@ -0,0 +1,226 @@
1
+ //
2
+ // Copyright 2017 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 "@material/theme/mixins";
18
+ @import "@material/rtl/mixins";
19
+ @import "./variables";
20
+
21
+ $mdc-slider-main-grey: #bdbdbd;
22
+ $mdc-slider-dark-theme-grey: #5c5c5c;
23
+
24
+ // postcss-bem-linter: define slider
25
+
26
+ @keyframes mdc-slider-emphasize {
27
+ 0% {
28
+ animation-timing-function: ease-out;
29
+ }
30
+
31
+ 50% {
32
+ animation-timing-function: ease-in;
33
+ transform: scale(.85);
34
+ }
35
+
36
+ 100% {
37
+ transform: scale(.571);
38
+ }
39
+ }
40
+
41
+ .mdc-slider {
42
+ position: relative;
43
+ width: 100%;
44
+ height: 48px;
45
+ cursor: pointer;
46
+ touch-action: pan-x;
47
+ -webkit-tap-highlight-color: rgba(black, 0);
48
+
49
+ &:focus {
50
+ outline: none;
51
+ }
52
+
53
+ &__track-container {
54
+ position: absolute;
55
+ top: 50%;
56
+ width: 100%;
57
+ height: 2px;
58
+ background-color: $mdc-slider-main-grey;
59
+ overflow: hidden;
60
+
61
+ @include mdc-theme-dark(".mdc-slider") {
62
+ background-color: $mdc-slider-dark-theme-grey;
63
+ }
64
+ }
65
+
66
+ &__track {
67
+ @include mdc-theme-prop(background-color, primary);
68
+
69
+ position: absolute;
70
+ width: 100%;
71
+ height: 100%;
72
+ transform-origin: left top;
73
+ will-change: transform;
74
+
75
+ @include mdc-rtl(".mdc-slider") {
76
+ transform-origin: right top;
77
+ }
78
+ }
79
+
80
+ &__thumb-container {
81
+ position: absolute;
82
+ top: 15px;
83
+ left: 0;
84
+ width: 21px;
85
+ // Ensure that touching anywhere within the Y-coordinate space of thumb
86
+ // is considered "clicking on the thumb".
87
+ height: 100%;
88
+ will-change: transform;
89
+ }
90
+
91
+ &__thumb {
92
+ @include mdc-theme-prop(fill, primary);
93
+ @include mdc-theme-prop(stroke, primary);
94
+
95
+ position: absolute;
96
+ top: 0;
97
+ left: 0;
98
+ transform: scale(.571);
99
+ transition: transform 100ms ease-out, fill 100ms ease-out, stroke 100ms ease-out;
100
+ stroke-width: 3.5;
101
+ }
102
+
103
+ &__focus-ring {
104
+ @include mdc-theme-prop(background-color, primary);
105
+
106
+ width: 21px;
107
+ height: 21px;
108
+ transition: transform 266.67ms ease-out, opacity 266.67ms ease-out, background-color 266.67ms ease-out;
109
+ border-radius: 50%;
110
+ opacity: 0;
111
+ }
112
+ }
113
+
114
+ .mdc-slider--active {
115
+ .mdc-slider__thumb {
116
+ transform: scale3d(1, 1, 1);
117
+ }
118
+ }
119
+
120
+ .mdc-slider--focus {
121
+ .mdc-slider__thumb {
122
+ animation: mdc-slider-emphasize 266.67ms linear;
123
+ }
124
+
125
+ .mdc-slider__focus-ring {
126
+ transform: scale3d(1.55, 1.55, 1.55);
127
+ opacity: .25;
128
+ }
129
+ }
130
+
131
+ .mdc-slider--disabled {
132
+ cursor: auto;
133
+
134
+ .mdc-slider__track {
135
+ background-color: $mdc-slider-main-grey;
136
+
137
+ @include mdc-theme-dark(".mdc-slider", true) {
138
+ background-color: $mdc-slider-dark-theme-grey;
139
+ }
140
+ }
141
+
142
+ // We use !important here to override all styles without having to use excessive
143
+ // :not() selectors or intricate compound selectors.
144
+ .mdc-slider__thumb {
145
+ fill: $mdc-slider-main-grey !important;
146
+ stroke: $mdc-slider-default-assumed-bg-color !important;
147
+ stroke: var(--mdc-slider-bg-color-behind-component, $mdc-slider-default-assumed-bg-color) !important;
148
+
149
+ @include mdc-theme-dark(".mdc-slider", true) {
150
+ fill: $mdc-slider-dark-theme-grey !important;
151
+ stroke: $mdc-slider-dark-theme-assumed-bg-color !important;
152
+ stroke: var(--mdc-slider-bg-color-behind-component, $mdc-slider-dark-theme-assumed-bg-color) !important;
153
+ }
154
+ }
155
+ }
156
+
157
+ .mdc-slider--off {
158
+ .mdc-slider__track {
159
+ opacity: 0;
160
+ }
161
+
162
+ // stylelint-disable-next-line plugin/selector-bem-pattern
163
+ .mdc-slider__thumb {
164
+ fill: $mdc-slider-default-assumed-bg-color;
165
+ fill: var(--mdc-slider-bg-color-behind-component, $mdc-slider-default-assumed-bg-color);
166
+ stroke: $mdc-slider-main-grey;
167
+
168
+ @include mdc-theme-dark(".mdc-slider", true) {
169
+ fill: $mdc-slider-dark-theme-assumed-bg-color;
170
+ fill: var(--mdc-slider-bg-color-behind-component, $mdc-slider-dark-theme-assumed-bg-color);
171
+ stroke: $mdc-slider-dark-theme-grey;
172
+ }
173
+ }
174
+
175
+ // stylelint-disable plugin/selector-bem-pattern
176
+ &.mdc-slider--focus {
177
+ .mdc-slider__thumb {
178
+ fill: #dedede;
179
+
180
+ @include mdc-theme-dark(".mdc-slider", true) {
181
+ fill: #82848c;
182
+ stroke: #82848c;
183
+ }
184
+ }
185
+ }
186
+
187
+ &.mdc-slider--active.mdc-slider--focus {
188
+ .mdc-slider__thumb {
189
+ stroke: #8c8c8c;
190
+
191
+ @include mdc-theme-dark(".mdc-slider", true) {
192
+ stroke: $mdc-slider-dark-theme-grey;
193
+ }
194
+ }
195
+ }
196
+
197
+ .mdc-slider__focus-ring {
198
+ background-color: $mdc-slider-main-grey;
199
+ }
200
+ // stylelint-enable plugin/selector-bem-pattern
201
+ }
202
+
203
+ .mdc-slider--in-transit {
204
+ .mdc-slider__thumb {
205
+ transition-delay: 140ms;
206
+ }
207
+ }
208
+
209
+ // NOTE(traviskaufman): There are multiple cases where we want the slider to
210
+ // transition seamlessly even though we're jumping to a spot. The selectors
211
+ // below highlight these cases. The selectors are supplemented by a comment
212
+ // denoting their semantic meaning within the slider.
213
+
214
+ // When a user clicks somewhere on the track that is not directly the slider
215
+ // thumb container, we transition to the place where the user clicked.
216
+ .mdc-slider--in-transit,
217
+ // When a user is using the arrow keys to modify the value of the slider rather
218
+ // than dragging with a pointer, we transition from one value to another.
219
+ .mdc-slider:focus:not(.mdc-slider--active) {
220
+ .mdc-slider__thumb-container,
221
+ .mdc-slider__track {
222
+ transition: transform 80ms ease;
223
+ }
224
+ }
225
+
226
+ // postcss-bem-linter: end