socketioMEANseed/www/bower_components/angular-material/layouts/angular-material.layouts.scss
www/bower_components/angular-material/layouts/angular-material.layouts.scssRaw
1/*!
2 * Angular Material Design
3 * https://github.com/angular/material
4 * @license MIT
5 * v1.1.3
6 */
7$font-family: Roboto, 'Helvetica Neue', sans-serif !default;
8$font-size: 10px !default;
9$display-4-font-size-base: rem(11.20) !default;
10$display-3-font-size-base: rem(5.600) !default;
11$display-2-font-size-base: rem(4.500) !default;
12$display-1-font-size-base: rem(3.400) !default;
13$headline-font-size-base: rem(2.400) !default;
14$title-font-size-base: rem(2.000) !default;
15$subhead-font-size-base: rem(1.600) !default;
16$body-font-size-base: rem(1.400) !default;
17$caption-font-size-base: rem(1.200) !default;
18$baseline-grid: 8px !default;
19$layout-gutter-width: ($baseline-grid * 2) !default;
20$layout-breakpoint-xs: 600px !default;
21$layout-breakpoint-sm: 960px !default;
22$layout-breakpoint-md: 1280px !default;
23$layout-breakpoint-lg: 1920px !default;
24$button-left-right-padding: rem(0.600) !default;
25$icon-size: rem(2.400) !default;
26$app-bar-height: 64px !default;
27$toast-height: $baseline-grid * 3 !default;
28$toast-margin: $baseline-grid * 1 !default;
29$shadow-key-umbra-opacity: 0.2 !default;
30$shadow-key-penumbra-opacity: 0.14 !default;
31$shadow-ambient-shadow-opacity: 0.12 !default;
32$whiteframe-shadow-1dp: 0px 1px 3px 0px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 1px 1px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 2px 1px -1px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
33$whiteframe-shadow-2dp: 0px 1px 5px 0px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 2px 2px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 3px 1px -2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
34$whiteframe-shadow-3dp: 0px 1px 8px 0px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 3px 4px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 3px 3px -2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
35$whiteframe-shadow-4dp: 0px 2px 4px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 4px 5px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 1px 10px 0px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
36$whiteframe-shadow-5dp: 0px 3px 5px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 5px 8px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 1px 14px 0px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
37$whiteframe-shadow-6dp: 0px 3px 5px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 6px 10px 0px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 1px 18px 0px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
38$whiteframe-shadow-7dp: 0px 4px 5px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 7px 10px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 2px 16px 1px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
39$whiteframe-shadow-8dp: 0px 5px 5px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 8px 10px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 3px 14px 2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
40$whiteframe-shadow-9dp: 0px 5px 6px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 9px 12px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 3px 16px 2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
41$whiteframe-shadow-10dp: 0px 6px 6px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 10px 14px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 4px 18px 3px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
42$whiteframe-shadow-11dp: 0px 6px 7px -4px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 11px 15px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 4px 20px 3px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
43$whiteframe-shadow-12dp: 0px 7px 8px -4px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 12px 17px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 5px 22px 4px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
44$whiteframe-shadow-13dp: 0px 7px 8px -4px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 13px 19px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 5px 24px 4px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
45$whiteframe-shadow-14dp: 0px 7px 9px -4px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 14px 21px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 5px 26px 4px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
46$whiteframe-shadow-15dp: 0px 8px 9px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 15px 22px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 6px 28px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
47$whiteframe-shadow-16dp: 0px 8px 10px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 16px 24px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 6px 30px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
48$whiteframe-shadow-17dp: 0px 8px 11px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 17px 26px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 6px 32px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
49$whiteframe-shadow-18dp: 0px 9px 11px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 18px 28px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 7px 34px 6px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
50$whiteframe-shadow-19dp: 0px 9px 12px -6px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 19px 29px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 7px 36px 6px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
51$whiteframe-shadow-20dp: 0px 10px 13px -6px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 20px 31px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 8px 38px 7px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
52$whiteframe-shadow-21dp: 0px 10px 13px -6px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 21px 33px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 8px 40px 7px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
53$whiteframe-shadow-22dp: 0px 10px 14px -6px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 22px 35px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 8px 42px 7px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
54$whiteframe-shadow-23dp: 0px 11px 14px -7px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 23px 36px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 9px 44px 8px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
55$whiteframe-shadow-24dp: 0px 11px 15px -7px rgba(0, 0, 0, $shadow-key-umbra-opacity), 0px 24px 38px 3px rgba(0, 0, 0, $shadow-key-penumbra-opacity), 0px 9px 46px 8px rgba(0, 0, 0, $shadow-ambient-shadow-opacity) !default;
56$z-index-toast: 105 !default;
57$z-index-tooltip: 100 !default;
58$z-index-menu: 100 !default;
59$z-index-calendar-pane: 100 !default;
60$z-index-select: 90 !default;
61$z-index-dialog: 80 !default;
62$z-index-bottom-sheet: 70 !default;
63$z-index-scroll-mask: 50 !default;
64$z-index-scroll-mask-bar: 65 !default;
65$z-index-sidenav: 60 !default;
66$z-index-backdrop: 50 !default;
67$z-index-fab: 20 !default;
68$z-index-progress-circular: 2 !default; // Used to fix animation bug in Chrome
69$swift-ease-out-duration: 0.4s !default;
70$swift-ease-out-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default;
71$swift-ease-out: all $swift-ease-out-duration $swift-ease-out-timing-function !default;
72$swift-ease-in-duration: 0.3s !default;
73$swift-ease-in-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2) !default;
74$swift-ease-in: all $swift-ease-in-duration $swift-ease-in-timing-function !default;
75$swift-ease-in-out-duration: 0.5s !default;
76$swift-ease-in-out-timing-function: cubic-bezier(0.35, 0, 0.25, 1) !default;
77$swift-ease-in-out: all $swift-ease-in-out-duration $swift-ease-in-out-timing-function !default;
78$swift-linear-duration: 0.08s !default;
79$swift-linear-timing-function: linear !default;
80$swift-linear: all $swift-linear-duration $swift-linear-timing-function !default;
81$material-enter-duration: 0.3s;
82$material-enter-timing-function: cubic-bezier(0.0, 0.0, 0.2, 1);
83$material-enter: all $material-enter-duration $material-enter-timing-function;
84$material-leave-duration: 0.3s;
85$material-leave-timing-function: cubic-bezier(0.4, 0.0, 1, 1);
86$material-leave: all $material-leave-duration $material-leave-timing-function;
87$button-fab-width: rem(5.600) !default;
88$button-fab-height: rem(5.600) !default;
89$button-fab-padding: rem(1.60) !default;
90$checkbox-width: 20px !default;
91$checkbox-height: $checkbox-width !default;
92$checkbox-border-radius: 2px !default;
93$checkbox-border-width: 2px !default;
94// Typography
95// ------------------------------
96
97//-- Must be defined before $font-size.
98@function rem($multiplier) {
99 @return $multiplier * $font-size;
100}
101
102
103
104// Layout
105// ------------------------------
106
107
108
109// Button
110
111// Icon
112
113// App bar variables
114
115
116// Whiteframes
117
118
119// NOTE(shyndman): gulp-sass seems to be failing if I split the shadow defs across
120// multiple lines. Ugly. Sorry.
121
122// Z-indexes
123//--------------------------------------------
124
125
126// Easing Curves
127//--------------------------------------------
128
129
130
131
132
133
134
135// Fab Buttons (shared between buttons.scss and fab*.scss)
136// -------------------------------------------
137
138
139// Shared Checkbox variables
140
141@mixin margin-selectors($before:1em, $after:1em, $start:0px, $end:0px) {
142 -webkit-margin-before: $before;
143 -webkit-margin-after: $after;
144 -webkit-margin-start: $start;
145 -webkit-margin-end: $end;
146}
147
148@mixin not-selectable($value:none) {
149 -webkit-touch-callout: $value;
150 -webkit-user-select: $value;
151 -khtml-user-select: $value;
152 -moz-user-select: $value;
153 -ms-user-select: $value;
154 user-select: $value;
155}
156
157@mixin input-placeholder-color($color) {
158 $pseudos: '::-webkit-input-placeholder', ':-moz-placeholder', '::-moz-placeholder',
159 ':-ms-input-placeholder', '::-webkit-input-placeholder';
160
161 // It is important to export every pseudo within its own block, because otherwise the placeholder
162 // won't be set on the most browsers.
163 @each $pseudo in $pseudos {
164 &#{$pseudo} {
165 color: unquote($color);
166 }
167 }
168}
169
170@mixin pie-clearfix {
171 &:after {
172 content: '';
173 display: table;
174 clear: both;
175 }
176}
177
178@mixin md-shadow-bottom-z-1() {
179 box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
180}
181
182@mixin md-shadow-bottom-z-2() {
183 box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.4);
184}
185
186// Mixin for a "flat" input that can be used for components that contain an input
187// (datepicker, autocomplete).
188@mixin md-flat-input() {
189 font-size: 14px;
190
191 box-sizing: border-box;
192 border: none;
193 box-shadow: none;
194 outline: none;
195 background: transparent;
196
197 // The "clear X" that IE adds to input[type="search"]
198 &::-ms-clear {
199 display: none;
200 }
201}
202
203// Typography mixins
204
205@mixin md-title() {
206 font-size: $title-font-size-base;
207 font-weight: 500;
208 letter-spacing: 0.005em;
209}
210
211@mixin md-body-1() {
212 font-size: $body-font-size-base;
213 font-weight: 400;
214 letter-spacing: 0.010em;
215 line-height: rem(2);
216}
217
218@mixin md-body-2() {
219 font-size: $body-font-size-base;
220 font-weight: 500;
221 letter-spacing: 0.010em;
222 line-height: rem(2.4);
223}
224
225@mixin md-subhead() {
226 font-size: $subhead-font-size-base;
227 font-weight: 400;
228 letter-spacing: 0.010em;
229 line-height: rem(2.4);
230}
231
232@function map-to-string($map) {
233 $map-str: '{';
234 $keys: map-keys($map);
235 $len: length($keys);
236 @for $i from 1 through $len {
237 $key: nth($keys, $i);
238 $value: map-get($map, $key);
239 $map-str: $map-str + '_' + $key + '_: _' + map-get($map, $key) + '_';
240 @if $i != $len {
241 $map-str: $map-str + ',';
242 }
243 }
244 @return $map-str + '}';
245}
246
247// This is a mixin, which fixes IE11's vertical alignment issue, when using `min-height`.
248// See https://connect.microsoft.com/IE/feedback/details/816293/
249@mixin ie11-min-height-flexbug($min-height) {
250 &::before {
251 content: '';
252 min-height: $min-height;
253 visibility: hidden;
254 display: inline-block;
255 }
256}
257
258// mixin definition ; sets LTR and RTL within the same style call
259// @see https://css-tricks.com/almanac/properties/d/direction/
260
261@mixin rtl($prop, $ltr-value, $rtl-value) {
262 #{$prop}: $ltr-value;
263 [dir=rtl] & {
264 #{$prop}: $rtl-value;
265 }
266}
267
268@mixin rtl-prop($ltr-prop, $rtl-prop, $value, $reset-value) {
269 #{$ltr-prop}: $value;
270 [dir=rtl] & {
271 #{$ltr-prop}: $reset-value;
272 #{$rtl-prop}: $value;
273 }
274}
275
276// To reverse padding (top left bottom right) -> (top right bottom left)
277@function rtl-value($list) {
278 @if length($list) == 4 {
279 @return nth($list, 1) nth($list, 4) nth($list, 3) nth($list, 2)
280 }
281 @if length($list) == 5 {
282 @return nth($list, 1) nth($list, 4) nth($list, 3) nth($list, 2) nth($list, 5)
283 }
284 @return $list;
285}
286
287// Position a FAB button.
288@mixin fab-position($spot, $top: auto, $right: auto, $bottom: auto, $left: auto) {
289 &.md-fab-#{$spot} {
290 top: $top;
291 right: $right;
292 bottom: $bottom;
293 left: $left;
294 position: absolute;
295 }
296}
297
298@mixin fab-all-positions() {
299 @include fab-position(bottom-right, auto, ($button-fab-width - $button-fab-padding)/2, ($button-fab-height - $button-fab-padding)/2, auto);
300 @include fab-position(bottom-left, auto, auto, ($button-fab-height - $button-fab-padding)/2, ($button-fab-width - $button-fab-padding)/2);
301 @include fab-position(top-right, ($button-fab-height - $button-fab-padding)/2, ($button-fab-width - $button-fab-padding)/2, auto, auto);
302 @include fab-position(top-left, ($button-fab-height - $button-fab-padding)/2, auto, auto, ($button-fab-width - $button-fab-padding)/2);
303}
304
305// This mixin allows a user to use the md-checkbox css outside of the
306// md-checkbox directive.
307// See src/components/select/select.scss for an example.
308@mixin checkbox-container(
309 $checkedSelector: '.md-checked',
310 $width: $checkbox-width,
311 $height: $checkbox-height,
312 $border-width: $checkbox-border-width,
313 $border-radius: $checkbox-border-radius) {
314 .md-container {
315 position: absolute;
316 top: 50%;
317 transform: translateY(-50%);
318
319 box-sizing: border-box;
320 display: inline-block;
321
322 width: $width;
323 height: $height;
324 @include rtl(left, 0, auto);
325 @include rtl(right, auto, 0);
326
327 &:before {
328 box-sizing: border-box;
329 background-color: transparent;
330 border-radius: 50%;
331 content: '';
332 position: absolute;
333 display: block;
334 height: auto;
335 left: 0;
336 top: 0;
337 right: 0;
338 bottom: 0;
339 transition: all 0.5s;
340 width: auto;
341 }
342
343 &:after {
344 box-sizing: border-box;
345 content: '';
346 position: absolute;
347 top: -10px;
348 right: -10px;
349 bottom: -10px;
350 left: -10px;
351 }
352
353 .md-ripple-container {
354 position: absolute;
355 display: block;
356 width: auto;
357 height: auto;
358 left: -15px;
359 top: -15px;
360 right: -15px;
361 bottom: -15px;
362 }
363 }
364
365 // unchecked
366 .md-icon {
367 box-sizing: border-box;
368 transition: 240ms;
369 position: absolute;
370 top: 0;
371 left: 0;
372 width: $width;
373 height: $height;
374 border-width: $border-width;
375 border-style: solid;
376 border-radius: $border-radius;
377 }
378
379 &#{$checkedSelector} .md-icon {
380 border-color: transparent;
381
382 &:after {
383 box-sizing: border-box;
384 transform: rotate(45deg);
385 position: absolute;
386 left: $width / 3 - $border-width;
387 top: $width / 9 - $border-width;
388 display: table;
389 width: $width / 3;
390 height: $width * 2 / 3;
391 border-width: $border-width;
392 border-style: solid;
393 border-top: 0;
394 border-left: 0;
395 content: '';
396 }
397 }
398
399 // disabled
400 &[disabled] {
401 cursor: default;
402 }
403
404 &.md-indeterminate .md-icon {
405 &:after {
406 box-sizing: border-box;
407 position: absolute;
408 top: 50%;
409 left: 50%;
410 transform: translate(-50%, -50%);
411 display: table;
412 width: $width * 0.6;
413 height: $border-width;
414 border-width: $border-width;
415 border-style: solid;
416 border-top: 0;
417 border-left: 0;
418 content: '';
419 }
420 }
421}
422
423// Mixin to create a primary checkbox.
424// Used by the checkbox and select component.
425@mixin checkbox-primary($checkedSelector: '.md-checked') {
426 .md-ripple {
427 color: '{{primary-600}}';
428 }
429
430 &#{$checkedSelector} .md-ripple {
431 color: '{{background-600}}';
432 }
433
434 .md-ink-ripple {
435 color: '{{foreground-2}}';
436 }
437
438 &#{$checkedSelector} .md-ink-ripple {
439 color: '{{primary-color-0.87}}';
440 }
441
442 &:not(.md-checked) .md-icon {
443 border-color: '{{foreground-2}}';
444 }
445
446 &#{$checkedSelector} .md-icon {
447 background-color: '{{primary-color-0.87}}';
448 }
449
450 &#{$checkedSelector}.md-focused .md-container:before {
451 background-color: '{{primary-color-0.26}}';
452 }
453
454 &#{$checkedSelector} .md-icon:after {
455 border-color: '{{primary-contrast-0.87}}';
456 }
457
458 & .md-indeterminate[disabled] {
459 .md-container {
460 color: '{{foreground-3}}';
461 }
462 }
463}
464
465@mixin dense($prop, $normal, $dense) {
466 #{$prop}: $normal;
467 .md-dense > &:not(.md-dense-disabled),
468 .md-dense :not(.md-dense-disabled) &:not(.md-dense-disabled) {
469 #{$prop}: $dense;
470 }
471}
472
473@mixin dense-rtl($prop, $ltr-normal, $rtl-normal, $ltr-dense, $rtl-dense) {
474 @include rtl($prop, $ltr-normal, $rtl-normal);
475 .md-dense > &:not(.md-dense-disabled),
476 .md-dense :not(.md-dense-disabled) &:not(.md-dense-disabled) {
477 @include rtl($prop, $ltr-dense, $rtl-dense);
478 }
479}
480
481/*
482*
483* Responsive attributes
484*
485* References:
486* 1) https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties#flex
487* 2) https://css-tricks.com/almanac/properties/f/flex/
488* 3) https://css-tricks.com/snippets/css/a-guide-to-flexbox/
489* 4) https://github.com/philipwalton/flexbugs#3-min-height-on-a-flex-container-wont-apply-to-its-flex-items
490* 5) http://godban.com.ua/projects/flexgrid
491*
492*
493*/
494
495@mixin flex-order-for-name($sizes:null) {
496 @if $sizes == null {
497 $sizes : '';
498
499 .flex-order {
500 order : 0;
501 }
502 }
503
504 @for $i from -20 through 20 {
505 $order : '';
506 $suffix : '';
507
508 @each $s in $sizes {
509 @if $s != '' { $suffix : '#{$s}-#{$i}'; }
510 @else { $suffix : '#{$i}'; }
511
512 $order : '.flex-order-#{$suffix}';
513 }
514
515 #{$order} {
516 order: #{$i};
517 }
518 }
519}
520
521@mixin offset-for-name($sizes:null) {
522 @if $sizes == null { $sizes : ''; }
523
524 @for $i from 0 through 19 {
525 $offsets : '';
526 $suffix : '';
527
528 @each $s in $sizes {
529 @if $s != '' { $suffix : '#{$s}-#{$i * 5}'; }
530 @else { $suffix : '#{$i * 5}'; }
531
532 $offsets : '.offset-#{$suffix}, .flex-offset-#{$suffix}';
533 }
534
535 #{$offsets} {
536 @if $i != 0 { @include rtl-prop(margin-left, margin-right, #{$i * 5 + '%'}, auto); }
537 @else { @include rtl-prop(margin-left, margin-right, 0, auto); }
538 }
539 }
540
541 @each $i in 33 {
542 $offsets : '';
543 $suffix : '';
544
545 @each $s in $sizes {
546 @if $s != '' { $suffix : '#{$s}-#{$i}'; }
547 @else { $suffix : '#{$i}'; }
548
549 $offsets : '.offset-#{$suffix}, .flex-offset-#{$suffix} ';
550 }
551
552 #{$offsets} {
553 margin-left: calc(100% / 3);
554 }
555 }
556
557 @each $i in 66 {
558 $offsets : '';
559 $suffix : '';
560
561 @each $s in $sizes {
562 @if $s != '' { $suffix : '#{$s}-#{$i}'; }
563 @else { $suffix : '#{$i}'; }
564
565 $offsets : '.offset-#{$suffix}, .flex-offset-#{$suffix} ';
566 }
567
568 #{$offsets} {
569 @include rtl-prop(margin-left, margin-right, calc(200% / 3), auto);
570 }
571 }
572}
573
574@mixin layout-for-name($name: null) {
575 @if $name == null { $name : ''; }
576 @if $name != '' { $name : '-#{$name}'; }
577
578 .layout#{$name}, .layout#{$name}-column, .layout#{$name}-row {
579 box-sizing: border-box;
580 display: -webkit-box;
581 display: -webkit-flex;
582 display: -moz-box;
583 display: -ms-flexbox;
584 display: flex;
585 }
586 .layout#{$name}-column { flex-direction: column; }
587 .layout#{$name}-row { flex-direction: row; }
588}
589
590@mixin flex-properties-for-name($name: null) {
591 $flexName: 'flex';
592 @if $name != null {
593 $flexName: 'flex-#{$name}';
594 $name : '-#{$name}';
595 } @else {
596 $name : '';
597 }
598
599 .#{$flexName} { flex: 1; box-sizing: border-box; } // === flex: 1 1 0%;
600
601 .#{$flexName}-grow { flex: 1 1 100%; box-sizing: border-box; }
602 .#{$flexName}-initial { flex: 0 1 auto; box-sizing: border-box; }
603 .#{$flexName}-auto { flex: 1 1 auto; box-sizing: border-box; }
604 .#{$flexName}-none { flex: 0 0 auto; box-sizing: border-box; }
605 .#{$flexName}-noshrink { flex: 1 0 auto; box-sizing: border-box; }
606 .#{$flexName}-nogrow { flex: 0 1 auto; box-sizing: border-box; }
607
608 // (1-20) * 5 = 0-100%
609 @for $i from 0 through 20 {
610 $value : #{$i * 5 + '%'};
611
612 .#{$flexName}-#{$i * 5} {
613 flex: 1 1 100%;
614 max-width: #{$value};
615 max-height: 100%;
616 box-sizing: border-box;
617 }
618
619 .layout-row > .#{$flexName}-#{$i * 5} {
620 flex: 1 1 100%;
621 max-width: #{$value};
622 max-height: 100%;
623 box-sizing: border-box;
624
625 // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
626 @if $i == 0 { min-width: 0; }
627 }
628
629 .layout-column > .#{$flexName}-#{$i * 5} {
630 flex: 1 1 100%;
631 max-width: 100%;
632 max-height: #{$value};
633 box-sizing: border-box;
634 }
635
636 .layout-row {
637 > .#{$flexName}-33 , > .#{$flexName}-33 { flex: 1 1 33.33%; max-width: 33.33%; max-height: 100%; box-sizing: border-box; }
638 > .#{$flexName}-66 , > .#{$flexName}-66 { flex: 1 1 66.66%; max-width: 66.66%; max-height: 100%; box-sizing: border-box; }
639 }
640
641 .layout-column {
642 > .#{$flexName}-33 , > .#{$flexName}-33 { flex: 1 1 33.33%; max-width: 100%; max-height: 33.33%; box-sizing: border-box; }
643 > .#{$flexName}-66 , > .#{$flexName}-66 { flex: 1 1 66.66%; max-width: 100%; max-height: 66.66%; box-sizing: border-box; }
644 }
645
646 .layout#{$name}-row > .#{$flexName}-#{$i * 5} {
647 flex: 1 1 100%;
648 max-width: #{$value};
649 max-height: 100%;
650 box-sizing: border-box;
651
652 // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
653 @if $i == 0 { min-width: 0; }
654 }
655
656 .layout#{$name}-column > .#{$flexName}-#{$i * 5} {
657 flex: 1 1 100%;
658 max-width: 100%;
659 max-height: #{$value};
660 box-sizing: border-box;
661
662 // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
663 @if $i == 0 { min-height: 0; }
664 }
665
666 }
667
668 .layout#{$name}-row {
669 > .#{$flexName}-33 , > .#{$flexName}-33 { flex: 1 1 100%; max-width: 33.33%; max-height: 100%; box-sizing: border-box; }
670 > .#{$flexName}-66 , > .#{$flexName}-66 { flex: 1 1 100%; max-width: 66.66%; max-height: 100%; box-sizing: border-box; }
671
672 // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
673 > .flex { min-width: 0; }
674
675 }
676
677 .layout#{$name}-column {
678 > .#{$flexName}-33 , > .#{$flexName}-33 { flex: 1 1 100%; max-width: 100%; max-height: 33.33%; box-sizing: border-box; }
679 > .#{$flexName}-66 , > .#{$flexName}-66 { flex: 1 1 100%; max-width: 100%; max-height: 66.66%; box-sizing: border-box; }
680
681 // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
682 > .flex { min-height: 0; }
683 }
684
685}
686
687@mixin layout-align-for-name($suffix: null) {
688
689 // Alignment attributes for layout containers' children
690 // Arrange on the Main Axis
691 // center, start, end, space-between, space-around
692 // flex-start is the default for justify-content
693 // ------------------------------
694
695 $name: 'layout-align';
696 @if $suffix != null {
697 $name: 'layout-align-#{$suffix}';
698 }
699
700 .#{$name},
701 .#{$name}-start-stretch // defaults
702 {
703 justify-content : flex-start;
704 align-content : stretch;
705 align-items: stretch;
706 }
707
708 // Main Axis Center
709 .#{$name}-start,
710 .#{$name}-start-start,
711 .#{$name}-start-center,
712 .#{$name}-start-end,
713 .#{$name}-start-stretch
714 {
715 justify-content: flex-start;
716 }
717
718 // Main Axis Center
719 .#{$name}-center, //stretch
720 .#{$name}-center-start,
721 .#{$name}-center-center,
722 .#{$name}-center-end,
723 .#{$name}-center-stretch
724 {
725 justify-content: center;
726 }
727
728 // Main Axis End
729 .#{$name}-end, //stretch
730 .#{$name}-end-start,
731 .#{$name}-end-center,
732 .#{$name}-end-end,
733 .#{$name}-end-stretch
734 {
735 justify-content: flex-end;
736 }
737
738 // Main Axis Space Around
739 .#{$name}-space-around, //stretch
740 .#{$name}-space-around-center,
741 .#{$name}-space-around-start,
742 .#{$name}-space-around-end,
743 .#{$name}-space-around-stretch
744 {
745 justify-content: space-around;
746 }
747
748 // Main Axis Space Between
749 .#{$name}-space-between, //stretch
750 .#{$name}-space-between-center,
751 .#{$name}-space-between-start,
752 .#{$name}-space-between-end,
753 .#{$name}-space-between-stretch
754 {
755 justify-content: space-between;
756 }
757
758
759 // Arrange on the Cross Axis
760 // center, start, end
761 // stretch is the default for align-items
762 // ------------------------------
763
764 // Cross Axis Start
765 .#{$name}-start-start,
766 .#{$name}-center-start,
767 .#{$name}-end-start,
768 .#{$name}-space-between-start,
769 .#{$name}-space-around-start
770 {
771 align-items: flex-start;
772 align-content: flex-start;
773 }
774
775 // Cross Axis Center
776 .#{$name}-start-center,
777 .#{$name}-center-center,
778 .#{$name}-end-center,
779 .#{$name}-space-between-center,
780 .#{$name}-space-around-center
781 {
782 align-items: center;
783 align-content: center;
784 max-width: 100%;
785 }
786
787 // Cross Axis Center IE overflow fix
788 .#{$name}-start-center > *,
789 .#{$name}-center-center > *,
790 .#{$name}-end-center > *,
791 .#{$name}-space-between-center > *,
792 .#{$name}-space-around-center > *
793 {
794 max-width: 100%;
795 box-sizing: border-box;
796 }
797
798 // Cross Axis End
799 .#{$name}-start-end,
800 .#{$name}-center-end,
801 .#{$name}-end-end,
802 .#{$name}-space-between-end,
803 .#{$name}-space-around-end
804 {
805 align-items: flex-end;
806 align-content: flex-end;
807 }
808
809 // Cross Axis Start
810 .#{$name}-start-stretch,
811 .#{$name}-center-stretch,
812 .#{$name}-end-stretch,
813 .#{$name}-space-between-stretch,
814 .#{$name}-space-around-stretch
815 {
816 align-items: stretch;
817 align-content: stretch;
818 }
819}
820
821@mixin layout-padding-margin() {
822
823 // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
824 .layout-padding-sm > *,
825 .layout-padding > .flex-sm
826 {
827 padding: $layout-gutter-width / 4;
828 }
829
830 .layout-padding,
831 .layout-padding-gt-sm,
832 .layout-padding-md,
833
834 // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
835 .layout-padding > *,
836 .layout-padding-gt-sm > *,
837 .layout-padding-md > *,
838
839 .layout-padding > .flex,
840 .layout-padding > .flex-gt-sm,
841 .layout-padding > .flex-md
842 {
843 padding: $layout-gutter-width / 2;
844 }
845
846 // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
847 .layout-padding-gt-md > *,
848 .layout-padding-lg > *,
849 .layout-padding-gt-lg > *,
850
851 .layout-padding > .flex-gt-md,
852 .layout-padding > .flex-lg,
853 .layout-padding > .flex-lg,
854 .layout-padding > .flex-gt-lg
855 {
856 padding: $layout-gutter-width / 1;
857 }
858
859 // Margin enhancements
860
861 .layout-margin-sm > *,
862 .layout-margin > .flex-sm
863 {
864 margin: $layout-gutter-width / 4;
865 }
866
867 .layout-margin,
868 .layout-margin-gt-sm,
869 .layout-margin-md,
870
871 // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
872 .layout-margin > *,
873 .layout-margin-gt-sm > *,
874 .layout-margin-md > *,
875
876 .layout-margin > .flex,
877 .layout-margin > .flex-gt-sm,
878 .layout-margin > .flex-md
879 {
880 margin: $layout-gutter-width / 2;
881 }
882
883 // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
884 .layout-margin-gt-md > *,
885 .layout-margin-lg > *,
886 .layout-margin-gt-lg > *,
887
888 .layout-margin > .flex-gt-md,
889 .layout-margin > .flex-lg,
890 .layout-margin > .flex-gt-lg
891 {
892 margin: $layout-gutter-width / 1;
893 }
894
895 .layout-wrap {
896 flex-wrap: wrap;
897 }
898
899 .layout-nowrap {
900 flex-wrap: nowrap;
901 }
902
903 .layout-fill {
904 margin: 0;
905 width: 100%;
906 min-height: 100%;
907 height: 100%;
908 }
909}
910
911@mixin layouts_for_breakpoint($name:null) {
912 @include flex-order-for-name($name);
913 @include offset-for-name($name);
914 @include layout-align-for-name($name);
915
916 @include flex-properties-for-name($name);
917 @include layout-for-name($name);
918}
919
920/*
921* Since Layout API uses ng-cloak to hide the dom elements while layouts are adjusted
922*
923*/
924[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
925 display: none !important;
926}
927
928/*
929*
930* Responsive attributes
931*
932* References:
933* 1) https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties#flex
934* 2) https://css-tricks.com/almanac/properties/f/flex/
935* 3) https://css-tricks.com/snippets/css/a-guide-to-flexbox/
936* 4) https://github.com/philipwalton/flexbugs#3-min-height-on-a-flex-container-wont-apply-to-its-flex-items
937* 5) http://godban.com.ua/projects/flexgrid
938*
939*
940*/
941
942@-moz-document url-prefix() {
943 .layout-fill {
944 margin: 0;
945 width: 100%;
946 min-height: 100%;
947 height: 100%;
948 }
949}
950
951
952/*
953 * Apply Mixins to create Layout/Flexbox styles
954 *
955 */
956
957
958@include layouts_for_breakpoint();
959@include layout-padding-margin();
960
961
962
963/**
964 * `hide-gt-sm show-gt-lg` should hide from 600px to 1200px
965 * `show-md hide-gt-sm` should show from 0px to 960px and hide at >960px
966 * `hide-gt-md show-gt-sm` should show everywhere (show overrides hide)`
967 *
968 * hide means hide everywhere
969 * Sizes:
970 * $layout-breakpoint-xs: 600px !default;
971 * $layout-breakpoint-sm: 960px !default;
972 * $layout-breakpoint-md: 1280px !default;
973 * $layout-breakpoint-lg: 1920px !default;
974 */
975
976
977@media (max-width: $layout-breakpoint-xs - 1) {
978 // Xtra-SMALL SCREEN
979 .hide-xs, .hide {
980 &:not(.show-xs):not(.show) {
981 display: none;
982 }
983 }
984 @include layouts_for_breakpoint(xs);
985}
986
987@media (min-width: $layout-breakpoint-xs) {
988 // BIGGER THAN Xtra-SMALL SCREEN
989 @include layouts_for_breakpoint(gt-xs);
990
991}
992
993@media (min-width: $layout-breakpoint-xs) and (max-width: $layout-breakpoint-sm - 1) {
994 .hide, .hide-gt-xs {
995 &:not(.show-gt-xs):not(.show-sm):not(.show) {
996 display: none;
997 }
998 }
999 .hide-sm:not(.show-gt-xs):not(.show-sm):not(.show) {
1000 display: none;
1001 }
1002
1003 @include layouts_for_breakpoint(sm);
1004}
1005
1006@media (min-width: $layout-breakpoint-sm) {
1007 // BIGGER THAN SMALL SCREEN
1008 @include layouts_for_breakpoint(gt-sm);
1009
1010}
1011
1012@media (min-width: $layout-breakpoint-sm) and (max-width: $layout-breakpoint-md - 1) {
1013 // MEDIUM SCREEN
1014 .hide, .hide-gt-xs, .hide-gt-sm {
1015 &:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show) {
1016 display: none;
1017 }
1018 }
1019 .hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show) {
1020 display: none;
1021 }
1022 @include layouts_for_breakpoint(md);
1023}
1024
1025@media (min-width: $layout-breakpoint-md) {
1026 // BIGGER THAN MEDIUM SCREEN
1027 @include layouts_for_breakpoint(gt-md);
1028}
1029
1030@media (min-width: $layout-breakpoint-md) and (max-width: $layout-breakpoint-lg - 1) {
1031 // LARGE SCREEN
1032 .hide,.hide-gt-xs, .hide-gt-sm, .hide-gt-md {
1033 &:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show) {
1034 display: none;
1035 }
1036 }
1037 .hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show) {
1038 display: none;
1039 }
1040
1041 @include layouts_for_breakpoint(lg);
1042}
1043
1044@media (min-width: $layout-breakpoint-lg) {
1045 @include layouts_for_breakpoint(gt-lg);
1046 @include layouts_for_breakpoint(xl);
1047
1048 // BIGGER THAN LARGE SCREEN
1049 .hide, .hide-gt-xs, .hide-gt-sm, .hide-gt-md, .hide-gt-lg {
1050 &:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show) {
1051 display: none;
1052 }
1053 }
1054 .hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show) {
1055 display: none;
1056 }
1057
1058}
1059
1060// General printing Rules
1061@media print {
1062
1063 .hide-print:not(.show-print):not(.show) {
1064 display: none !important;
1065 }
1066}