You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

7423 lines
176 KiB

7 years ago
  1. // Typography
  2. // ------------------------------
  3. $font-family: Roboto, 'Helvetica Neue', sans-serif !default;
  4. $font-size: 10px !default;
  5. //-- Must be defined before $font-size.
  6. @function rem($multiplier) {
  7. @return $multiplier * $font-size;
  8. }
  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. // Layout
  19. // ------------------------------
  20. $baseline-grid: 8px !default;
  21. $layout-gutter-width: ($baseline-grid * 2) !default;
  22. $layout-breakpoint-xs: 600px !default;
  23. $layout-breakpoint-sm: 960px !default;
  24. $layout-breakpoint-md: 1280px !default;
  25. $layout-breakpoint-lg: 1920px !default;
  26. // Button
  27. $button-left-right-padding: rem(0.600) !default;
  28. // Icon
  29. $icon-size: rem(2.400) !default;
  30. // App bar variables
  31. $app-bar-height: 64px !default;
  32. $toast-height: $baseline-grid * 3 !default;
  33. $toast-margin: $baseline-grid * 1 !default;
  34. // Whiteframes
  35. $shadow-key-umbra-opacity: 0.2 !default;
  36. $shadow-key-penumbra-opacity: 0.14 !default;
  37. $shadow-ambient-shadow-opacity: 0.12 !default;
  38. // NOTE(shyndman): gulp-sass seems to be failing if I split the shadow defs across
  39. // multiple lines. Ugly. Sorry.
  40. $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;
  41. $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;
  42. $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;
  43. $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;
  44. $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;
  45. $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;
  46. $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;
  47. $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;
  48. $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;
  49. $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;
  50. $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;
  51. $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;
  52. $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;
  53. $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;
  54. $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;
  55. $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;
  56. $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;
  57. $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;
  58. $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;
  59. $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;
  60. $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;
  61. $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;
  62. $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;
  63. $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;
  64. // Z-indexes
  65. //--------------------------------------------
  66. $z-index-toast: 105 !default;
  67. $z-index-tooltip: 100 !default;
  68. $z-index-menu: 100 !default;
  69. $z-index-calendar-pane: 100 !default;
  70. $z-index-select: 90 !default;
  71. $z-index-dialog: 80 !default;
  72. $z-index-bottom-sheet: 70 !default;
  73. $z-index-scroll-mask: 50 !default;
  74. $z-index-scroll-mask-bar: 65 !default;
  75. $z-index-sidenav: 60 !default;
  76. $z-index-backdrop: 50 !default;
  77. $z-index-fab: 20 !default;
  78. $z-index-progress-circular: 2 !default; // Used to fix animation bug in Chrome
  79. // Easing Curves
  80. //--------------------------------------------
  81. $swift-ease-out-duration: 0.4s !default;
  82. $swift-ease-out-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default;
  83. $swift-ease-out: all $swift-ease-out-duration $swift-ease-out-timing-function !default;
  84. $swift-ease-in-duration: 0.3s !default;
  85. $swift-ease-in-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2) !default;
  86. $swift-ease-in: all $swift-ease-in-duration $swift-ease-in-timing-function !default;
  87. $swift-ease-in-out-duration: 0.5s !default;
  88. $swift-ease-in-out-timing-function: cubic-bezier(0.35, 0, 0.25, 1) !default;
  89. $swift-ease-in-out: all $swift-ease-in-out-duration $swift-ease-in-out-timing-function !default;
  90. $swift-linear-duration: 0.08s !default;
  91. $swift-linear-timing-function: linear !default;
  92. $swift-linear: all $swift-linear-duration $swift-linear-timing-function !default;
  93. $material-enter-duration: 0.3s;
  94. $material-enter-timing-function: cubic-bezier(0.0, 0.0, 0.2, 1);
  95. $material-enter: all $material-enter-duration $material-enter-timing-function;
  96. $material-leave-duration: 0.3s;
  97. $material-leave-timing-function: cubic-bezier(0.4, 0.0, 1, 1);
  98. $material-leave: all $material-leave-duration $material-leave-timing-function;
  99. // Fab Buttons (shared between buttons.scss and fab*.scss)
  100. // -------------------------------------------
  101. $button-fab-width: rem(5.600) !default;
  102. $button-fab-height: rem(5.600) !default;
  103. $button-fab-padding: rem(1.60) !default;
  104. // Shared Checkbox variables
  105. $checkbox-width: 20px !default;
  106. $checkbox-height: $checkbox-width !default;
  107. $checkbox-border-radius: 2px !default;
  108. $checkbox-border-width: 2px !default;
  109. @mixin margin-selectors($before:1em, $after:1em, $start:0px, $end:0px) {
  110. -webkit-margin-before: $before;
  111. -webkit-margin-after: $after;
  112. -webkit-margin-start: $start;
  113. -webkit-margin-end: $end;
  114. }
  115. @mixin not-selectable($value:none) {
  116. -webkit-touch-callout: $value;
  117. -webkit-user-select: $value;
  118. -khtml-user-select: $value;
  119. -moz-user-select: $value;
  120. -ms-user-select: $value;
  121. user-select: $value;
  122. }
  123. @mixin input-placeholder-color($color) {
  124. $pseudos: '::-webkit-input-placeholder', ':-moz-placeholder', '::-moz-placeholder',
  125. ':-ms-input-placeholder', '::-webkit-input-placeholder';
  126. // It is important to export every pseudo within its own block, because otherwise the placeholder
  127. // won't be set on the most browsers.
  128. @each $pseudo in $pseudos {
  129. &#{$pseudo} {
  130. color: unquote($color);
  131. }
  132. }
  133. }
  134. @mixin pie-clearfix {
  135. &:after {
  136. content: '';
  137. display: table;
  138. clear: both;
  139. }
  140. }
  141. @mixin md-shadow-bottom-z-1() {
  142. box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
  143. }
  144. @mixin md-shadow-bottom-z-2() {
  145. box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.4);
  146. }
  147. // Mixin for a "flat" input that can be used for components that contain an input
  148. // (datepicker, autocomplete).
  149. @mixin md-flat-input() {
  150. font-size: 14px;
  151. box-sizing: border-box;
  152. border: none;
  153. box-shadow: none;
  154. outline: none;
  155. background: transparent;
  156. // The "clear X" that IE adds to input[type="search"]
  157. &::-ms-clear {
  158. display: none;
  159. }
  160. }
  161. // Typography mixins
  162. @mixin md-title() {
  163. font-size: $title-font-size-base;
  164. font-weight: 500;
  165. letter-spacing: 0.005em;
  166. }
  167. @mixin md-body-1() {
  168. font-size: $body-font-size-base;
  169. font-weight: 400;
  170. letter-spacing: 0.010em;
  171. line-height: rem(2);
  172. }
  173. @mixin md-body-2() {
  174. font-size: $body-font-size-base;
  175. font-weight: 500;
  176. letter-spacing: 0.010em;
  177. line-height: rem(2.4);
  178. }
  179. @mixin md-subhead() {
  180. font-size: $subhead-font-size-base;
  181. font-weight: 400;
  182. letter-spacing: 0.010em;
  183. line-height: rem(2.4);
  184. }
  185. @function map-to-string($map) {
  186. $map-str: '{';
  187. $keys: map-keys($map);
  188. $len: length($keys);
  189. @for $i from 1 through $len {
  190. $key: nth($keys, $i);
  191. $value: map-get($map, $key);
  192. $map-str: $map-str + '_' + $key + '_: _' + map-get($map, $key) + '_';
  193. @if $i != $len {
  194. $map-str: $map-str + ',';
  195. }
  196. }
  197. @return $map-str + '}';
  198. }
  199. // This is a mixin, which fixes IE11's vertical alignment issue, when using `min-height`.
  200. // See https://connect.microsoft.com/IE/feedback/details/816293/
  201. @mixin ie11-min-height-flexbug($min-height) {
  202. &::before {
  203. content: '';
  204. min-height: $min-height;
  205. visibility: hidden;
  206. display: inline-block;
  207. }
  208. }
  209. // mixin definition ; sets LTR and RTL within the same style call
  210. // @see https://css-tricks.com/almanac/properties/d/direction/
  211. @mixin rtl($prop, $ltr-value, $rtl-value) {
  212. #{$prop}: $ltr-value;
  213. [dir=rtl] & {
  214. #{$prop}: $rtl-value;
  215. }
  216. }
  217. @mixin rtl-prop($ltr-prop, $rtl-prop, $value, $reset-value) {
  218. #{$ltr-prop}: $value;
  219. [dir=rtl] & {
  220. #{$ltr-prop}: $reset-value;
  221. #{$rtl-prop}: $value;
  222. }
  223. }
  224. // To reverse padding (top left bottom right) -> (top right bottom left)
  225. @function rtl-value($list) {
  226. @if length($list) == 4 {
  227. @return nth($list, 1) nth($list, 4) nth($list, 3) nth($list, 2)
  228. }
  229. @if length($list) == 5 {
  230. @return nth($list, 1) nth($list, 4) nth($list, 3) nth($list, 2) nth($list, 5)
  231. }
  232. @return $list;
  233. }
  234. // Position a FAB button.
  235. @mixin fab-position($spot, $top: auto, $right: auto, $bottom: auto, $left: auto) {
  236. &.md-fab-#{$spot} {
  237. top: $top;
  238. right: $right;
  239. bottom: $bottom;
  240. left: $left;
  241. position: absolute;
  242. }
  243. }
  244. @mixin fab-all-positions() {
  245. @include fab-position(bottom-right, auto, ($button-fab-width - $button-fab-padding)/2, ($button-fab-height - $button-fab-padding)/2, auto);
  246. @include fab-position(bottom-left, auto, auto, ($button-fab-height - $button-fab-padding)/2, ($button-fab-width - $button-fab-padding)/2);
  247. @include fab-position(top-right, ($button-fab-height - $button-fab-padding)/2, ($button-fab-width - $button-fab-padding)/2, auto, auto);
  248. @include fab-position(top-left, ($button-fab-height - $button-fab-padding)/2, auto, auto, ($button-fab-width - $button-fab-padding)/2);
  249. }
  250. // This mixin allows a user to use the md-checkbox css outside of the
  251. // md-checkbox directive.
  252. // See src/components/select/select.scss for an example.
  253. @mixin checkbox-container(
  254. $checkedSelector: '.md-checked',
  255. $width: $checkbox-width,
  256. $height: $checkbox-height,
  257. $border-width: $checkbox-border-width,
  258. $border-radius: $checkbox-border-radius) {
  259. .md-container {
  260. position: absolute;
  261. top: 50%;
  262. transform: translateY(-50%);
  263. box-sizing: border-box;
  264. display: inline-block;
  265. width: $width;
  266. height: $height;
  267. @include rtl(left, 0, auto);
  268. @include rtl(right, auto, 0);
  269. &:before {
  270. box-sizing: border-box;
  271. background-color: transparent;
  272. border-radius: 50%;
  273. content: '';
  274. position: absolute;
  275. display: block;
  276. height: auto;
  277. left: 0;
  278. top: 0;
  279. right: 0;
  280. bottom: 0;
  281. transition: all 0.5s;
  282. width: auto;
  283. }
  284. &:after {
  285. box-sizing: border-box;
  286. content: '';
  287. position: absolute;
  288. top: -10px;
  289. right: -10px;
  290. bottom: -10px;
  291. left: -10px;
  292. }
  293. .md-ripple-container {
  294. position: absolute;
  295. display: block;
  296. width: auto;
  297. height: auto;
  298. left: -15px;
  299. top: -15px;
  300. right: -15px;
  301. bottom: -15px;
  302. }
  303. }
  304. // unchecked
  305. .md-icon {
  306. box-sizing: border-box;
  307. transition: 240ms;
  308. position: absolute;
  309. top: 0;
  310. left: 0;
  311. width: $width;
  312. height: $height;
  313. border-width: $border-width;
  314. border-style: solid;
  315. border-radius: $border-radius;
  316. }
  317. &#{$checkedSelector} .md-icon {
  318. border-color: transparent;
  319. &:after {
  320. box-sizing: border-box;
  321. transform: rotate(45deg);
  322. position: absolute;
  323. left: $width / 3 - $border-width;
  324. top: $width / 9 - $border-width;
  325. display: table;
  326. width: $width / 3;
  327. height: $width * 2 / 3;
  328. border-width: $border-width;
  329. border-style: solid;
  330. border-top: 0;
  331. border-left: 0;
  332. content: '';
  333. }
  334. }
  335. // disabled
  336. &[disabled] {
  337. cursor: default;
  338. }
  339. &.md-indeterminate .md-icon {
  340. &:after {
  341. box-sizing: border-box;
  342. position: absolute;
  343. top: 50%;
  344. left: 50%;
  345. transform: translate(-50%, -50%);
  346. display: table;
  347. width: $width * 0.6;
  348. height: $border-width;
  349. border-width: $border-width;
  350. border-style: solid;
  351. border-top: 0;
  352. border-left: 0;
  353. content: '';
  354. }
  355. }
  356. }
  357. // Mixin to create a primary checkbox.
  358. // Used by the checkbox and select component.
  359. @mixin checkbox-primary($checkedSelector: '.md-checked') {
  360. .md-ripple {
  361. color: '{{primary-600}}';
  362. }
  363. &#{$checkedSelector} .md-ripple {
  364. color: '{{background-600}}';
  365. }
  366. .md-ink-ripple {
  367. color: '{{foreground-2}}';
  368. }
  369. &#{$checkedSelector} .md-ink-ripple {
  370. color: '{{primary-color-0.87}}';
  371. }
  372. &:not(.md-checked) .md-icon {
  373. border-color: '{{foreground-2}}';
  374. }
  375. &#{$checkedSelector} .md-icon {
  376. background-color: '{{primary-color-0.87}}';
  377. }
  378. &#{$checkedSelector}.md-focused .md-container:before {
  379. background-color: '{{primary-color-0.26}}';
  380. }
  381. &#{$checkedSelector} .md-icon:after {
  382. border-color: '{{primary-contrast-0.87}}';
  383. }
  384. & .md-indeterminate[disabled] {
  385. .md-container {
  386. color: '{{foreground-3}}';
  387. }
  388. }
  389. }
  390. @mixin dense($prop, $normal, $dense) {
  391. #{$prop}: $normal;
  392. .md-dense > &:not(.md-dense-disabled),
  393. .md-dense :not(.md-dense-disabled) &:not(.md-dense-disabled) {
  394. #{$prop}: $dense;
  395. }
  396. }
  397. @mixin dense-rtl($prop, $ltr-normal, $rtl-normal, $ltr-dense, $rtl-dense) {
  398. @include rtl($prop, $ltr-normal, $rtl-normal);
  399. .md-dense > &:not(.md-dense-disabled),
  400. .md-dense :not(.md-dense-disabled) &:not(.md-dense-disabled) {
  401. @include rtl($prop, $ltr-dense, $rtl-dense);
  402. }
  403. }
  404. html, body {
  405. height: 100%;
  406. position: relative;
  407. }
  408. body {
  409. margin: 0;
  410. padding: 0;
  411. }
  412. [tabindex='-1']:focus {
  413. outline: none;
  414. }
  415. .inset {
  416. padding: 10px;
  417. }
  418. a.md-no-style,
  419. button.md-no-style {
  420. font-weight: normal;
  421. background-color: inherit;
  422. text-align: left;
  423. border: none;
  424. padding: 0;
  425. margin: 0;
  426. }
  427. select,
  428. button,
  429. textarea,
  430. input {
  431. vertical-align: baseline;
  432. }
  433. // Fix Android 4.0 button bugs
  434. input[type="reset"],
  435. input[type="submit"],
  436. html input[type="button"],
  437. button {
  438. cursor: pointer;
  439. -webkit-appearance: button;
  440. &[disabled] {
  441. cursor: default;
  442. }
  443. }
  444. textarea {
  445. vertical-align: top;
  446. overflow: auto;
  447. }
  448. input {
  449. &[type="search"] {
  450. -webkit-appearance: textfield;
  451. box-sizing: content-box;
  452. -webkit-box-sizing: content-box;
  453. &::-webkit-search-decoration,
  454. &::-webkit-search-cancel-button {
  455. -webkit-appearance: none;
  456. }
  457. }
  458. &:-webkit-autofill {
  459. text-shadow: none;
  460. }
  461. }
  462. .md-visually-hidden {
  463. border: 0;
  464. clip: rect(0 0 0 0);
  465. height: 1px;
  466. margin: -1px;
  467. overflow: hidden;
  468. padding: 0;
  469. position: absolute;
  470. text-transform: none;
  471. width: 1px;
  472. }
  473. .md-shadow {
  474. position: absolute;
  475. top: 0;
  476. left: 0;
  477. bottom: 0;
  478. right: 0;
  479. border-radius: inherit;
  480. pointer-events: none;
  481. }
  482. .md-shadow-bottom-z-1 {
  483. @include md-shadow-bottom-z-1();
  484. }
  485. .md-shadow-bottom-z-2 {
  486. @include md-shadow-bottom-z-2();
  487. }
  488. .md-shadow-animated.md-shadow {
  489. transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1);
  490. }
  491. /*
  492. * A container inside of a rippling element (eg a button),
  493. * which contains all of the individual ripples
  494. */
  495. .md-ripple-container {
  496. pointer-events: none;
  497. position: absolute;
  498. overflow: hidden;
  499. left: 0;
  500. top: 0;
  501. width: 100%;
  502. height: 100%;
  503. transition: all 0.55s $swift-ease-out-timing-function;
  504. }
  505. .md-ripple {
  506. $sizeDuration: 0.45s * 2;
  507. position: absolute;
  508. transform: translate(-50%, -50%) scale(0);
  509. transform-origin: 50% 50%;
  510. opacity: 0;
  511. border-radius: 50%;
  512. &.md-ripple-placed {
  513. transition: margin $sizeDuration $swift-ease-out-timing-function,
  514. border $sizeDuration $swift-ease-out-timing-function,
  515. width $sizeDuration $swift-ease-out-timing-function,
  516. height $sizeDuration $swift-ease-out-timing-function,
  517. opacity $sizeDuration $swift-ease-out-timing-function,
  518. transform $sizeDuration $swift-ease-out-timing-function;
  519. }
  520. &.md-ripple-scaled {
  521. transform: translate(-50%, -50%) scale(1);
  522. }
  523. &.md-ripple-active, &.md-ripple-full, &.md-ripple-visible {
  524. opacity: 0.20;
  525. }
  526. &.md-ripple-remove {
  527. animation: md-remove-ripple $sizeDuration $swift-ease-out-timing-function;
  528. }
  529. }
  530. // Fix issue causing ripple disappear suddenly in Chrome version 51, opacity .15 is close to the opacity when a normal click mouseup
  531. @keyframes md-remove-ripple {
  532. 0% { opacity: .15; }
  533. 100% { opacity: 0; }
  534. }
  535. .md-padding {
  536. padding: 8px;
  537. }
  538. .md-margin {
  539. margin: 8px;
  540. }
  541. .md-scroll-mask {
  542. position: absolute;
  543. background-color: transparent;
  544. top: 0;
  545. right: 0;
  546. bottom: 0;
  547. left: 0;
  548. z-index: $z-index-scroll-mask;
  549. > .md-scroll-mask-bar {
  550. display: block;
  551. position: absolute;
  552. background-color: #fafafa;
  553. right: 0;
  554. top: 0;
  555. bottom: 0;
  556. z-index: $z-index-scroll-mask-bar;
  557. box-shadow: inset 0px 0px 1px rgba(0, 0, 0, 0.3)
  558. }
  559. }
  560. // For iOS allow disabling of momentum scrolling
  561. // @see issue #2640
  562. .md-no-momentum {
  563. -webkit-overflow-scrolling: auto;
  564. }
  565. // Add a class to help reduce flicker
  566. // @see issue #7078 and #8649
  567. .md-no-flicker {
  568. -webkit-filter: blur(0px);
  569. }
  570. @media (min-width: $layout-breakpoint-sm) {
  571. .md-padding {
  572. padding: 16px;
  573. }
  574. }
  575. // Bi-directional support
  576. html, body {
  577. &[dir=rtl], &[dir=ltr] {
  578. unicode-bidi: embed
  579. }
  580. }
  581. bdo[dir=rtl] {
  582. direction: rtl;
  583. unicode-bidi: bidi-override;
  584. }
  585. bdo[dir=ltr] {
  586. direction: ltr;
  587. unicode-bidi: bidi-override;
  588. }
  589. // Global page styles
  590. //
  591. // [2] Ensure the page always fills at least the entire height of the viewport.
  592. // [3] Prevent iOS text size adjust after orientation change, without disabling user zoom
  593. // [4] Fonts on OSX will look more consistent with other systems that do not
  594. // render text using sub-pixel anti-aliasing.
  595. html, body {
  596. -webkit-tap-highlight-color: rgba(0,0,0,0);
  597. -webkit-touch-callout: none;
  598. min-height: 100%; // [2]
  599. -webkit-text-size-adjust: 100%; // [3]
  600. -ms-text-size-adjust: 100%; // [3]
  601. -webkit-font-smoothing: antialiased; // [4]
  602. -moz-osx-font-smoothing: grayscale; // [4]
  603. }
  604. md-select, md-card, md-list, md-toolbar,
  605. ul, ol, p, h1, h2, h3, h4, h5, h6 {
  606. //text-rendering: optimizeLegibility;
  607. }
  608. /************
  609. * Headings
  610. ************/
  611. .md-display-4 {
  612. font-size: $display-4-font-size-base;
  613. font-weight: 300;
  614. letter-spacing: -0.010em;
  615. line-height: $display-4-font-size-base;
  616. }
  617. .md-display-3 {
  618. font-size: $display-3-font-size-base;
  619. font-weight: 400;
  620. letter-spacing: -0.005em;
  621. line-height: $display-3-font-size-base;
  622. }
  623. .md-display-2 {
  624. font-size: $display-2-font-size-base;
  625. font-weight: 400;
  626. line-height: rem(6.4);
  627. }
  628. .md-display-1 {
  629. font-size: $display-1-font-size-base;
  630. font-weight: 400;
  631. line-height: rem(4);
  632. }
  633. .md-headline {
  634. font-size: $headline-font-size-base;
  635. font-weight: 400;
  636. line-height: rem(3.2);
  637. }
  638. .md-title {
  639. @include md-title();
  640. }
  641. .md-subhead {
  642. @include md-subhead();
  643. }
  644. /************
  645. * Body Copy
  646. ************/
  647. .md-body-1 {
  648. @include md-body-1();
  649. }
  650. .md-body-2 {
  651. @include md-body-2();
  652. }
  653. .md-caption {
  654. font-size: $caption-font-size-base;
  655. letter-spacing: 0.020em;
  656. }
  657. .md-button {
  658. letter-spacing: 0.010em;
  659. }
  660. /************
  661. * Defaults
  662. ************/
  663. button,
  664. select,
  665. html,
  666. textarea,
  667. input {
  668. font-family: $font-family;
  669. }
  670. select,
  671. button,
  672. textarea,
  673. input {
  674. font-size: 100%;
  675. }
  676. /*
  677. *
  678. * Responsive attributes
  679. *
  680. * References:
  681. * 1) https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties#flex
  682. * 2) https://css-tricks.com/almanac/properties/f/flex/
  683. * 3) https://css-tricks.com/snippets/css/a-guide-to-flexbox/
  684. * 4) https://github.com/philipwalton/flexbugs#3-min-height-on-a-flex-container-wont-apply-to-its-flex-items
  685. * 5) http://godban.com.ua/projects/flexgrid
  686. *
  687. *
  688. */
  689. @mixin flex-order-for-name($sizes:null) {
  690. @if $sizes == null {
  691. $sizes : '';
  692. .flex-order {
  693. order : 0;
  694. }
  695. }
  696. @for $i from -20 through 20 {
  697. $order : '';
  698. $suffix : '';
  699. @each $s in $sizes {
  700. @if $s != '' { $suffix : '#{$s}-#{$i}'; }
  701. @else { $suffix : '#{$i}'; }
  702. $order : '.flex-order-#{$suffix}';
  703. }
  704. #{$order} {
  705. order: #{$i};
  706. }
  707. }
  708. }
  709. @mixin offset-for-name($sizes:null) {
  710. @if $sizes == null { $sizes : ''; }
  711. @for $i from 0 through 19 {
  712. $offsets : '';
  713. $suffix : '';
  714. @each $s in $sizes {
  715. @if $s != '' { $suffix : '#{$s}-#{$i * 5}'; }
  716. @else { $suffix : '#{$i * 5}'; }
  717. $offsets : '.offset-#{$suffix}, .flex-offset-#{$suffix}';
  718. }
  719. #{$offsets} {
  720. @if $i != 0 { @include rtl-prop(margin-left, margin-right, #{$i * 5 + '%'}, auto); }
  721. @else { @include rtl-prop(margin-left, margin-right, 0, auto); }
  722. }
  723. }
  724. @each $i in 33 {
  725. $offsets : '';
  726. $suffix : '';
  727. @each $s in $sizes {
  728. @if $s != '' { $suffix : '#{$s}-#{$i}'; }
  729. @else { $suffix : '#{$i}'; }
  730. $offsets : '.offset-#{$suffix}, .flex-offset-#{$suffix} ';
  731. }
  732. #{$offsets} {
  733. margin-left: calc(100% / 3);
  734. }
  735. }
  736. @each $i in 66 {
  737. $offsets : '';
  738. $suffix : '';
  739. @each $s in $sizes {
  740. @if $s != '' { $suffix : '#{$s}-#{$i}'; }
  741. @else { $suffix : '#{$i}'; }
  742. $offsets : '.offset-#{$suffix}, .flex-offset-#{$suffix} ';
  743. }
  744. #{$offsets} {
  745. @include rtl-prop(margin-left, margin-right, calc(200% / 3), auto);
  746. }
  747. }
  748. }
  749. @mixin layout-for-name($name: null) {
  750. @if $name == null { $name : ''; }
  751. @if $name != '' { $name : '-#{$name}'; }
  752. .layout#{$name}, .layout#{$name}-column, .layout#{$name}-row {
  753. box-sizing: border-box;
  754. display: -webkit-box;
  755. display: -webkit-flex;
  756. display: -moz-box;
  757. display: -ms-flexbox;
  758. display: flex;
  759. }
  760. .layout#{$name}-column { flex-direction: column; }
  761. .layout#{$name}-row { flex-direction: row; }
  762. }
  763. @mixin flex-properties-for-name($name: null) {
  764. $flexName: 'flex';
  765. @if $name != null {
  766. $flexName: 'flex-#{$name}';
  767. $name : '-#{$name}';
  768. } @else {
  769. $name : '';
  770. }
  771. .#{$flexName} { flex: 1; box-sizing: border-box; } // === flex: 1 1 0%;
  772. .#{$flexName}-grow { flex: 1 1 100%; box-sizing: border-box; }
  773. .#{$flexName}-initial { flex: 0 1 auto; box-sizing: border-box; }
  774. .#{$flexName}-auto { flex: 1 1 auto; box-sizing: border-box; }
  775. .#{$flexName}-none { flex: 0 0 auto; box-sizing: border-box; }
  776. .#{$flexName}-noshrink { flex: 1 0 auto; box-sizing: border-box; }
  777. .#{$flexName}-nogrow { flex: 0 1 auto; box-sizing: border-box; }
  778. // (1-20) * 5 = 0-100%
  779. @for $i from 0 through 20 {
  780. $value : #{$i * 5 + '%'};
  781. .#{$flexName}-#{$i * 5} {
  782. flex: 1 1 100%;
  783. max-width: #{$value};
  784. max-height: 100%;
  785. box-sizing: border-box;
  786. }
  787. .layout-row > .#{$flexName}-#{$i * 5} {
  788. flex: 1 1 100%;
  789. max-width: #{$value};
  790. max-height: 100%;
  791. box-sizing: border-box;
  792. // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
  793. @if $i == 0 { min-width: 0; }
  794. }
  795. .layout-column > .#{$flexName}-#{$i * 5} {
  796. flex: 1 1 100%;
  797. max-width: 100%;
  798. max-height: #{$value};
  799. box-sizing: border-box;
  800. }
  801. .layout-row {
  802. > .#{$flexName}-33 , > .#{$flexName}-33 { flex: 1 1 33.33%; max-width: 33.33%; max-height: 100%; box-sizing: border-box; }
  803. > .#{$flexName}-66 , > .#{$flexName}-66 { flex: 1 1 66.66%; max-width: 66.66%; max-height: 100%; box-sizing: border-box; }
  804. }
  805. .layout-column {
  806. > .#{$flexName}-33 , > .#{$flexName}-33 { flex: 1 1 33.33%; max-width: 100%; max-height: 33.33%; box-sizing: border-box; }
  807. > .#{$flexName}-66 , > .#{$flexName}-66 { flex: 1 1 66.66%; max-width: 100%; max-height: 66.66%; box-sizing: border-box; }
  808. }
  809. .layout#{$name}-row > .#{$flexName}-#{$i * 5} {
  810. flex: 1 1 100%;
  811. max-width: #{$value};
  812. max-height: 100%;
  813. box-sizing: border-box;
  814. // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
  815. @if $i == 0 { min-width: 0; }
  816. }
  817. .layout#{$name}-column > .#{$flexName}-#{$i * 5} {
  818. flex: 1 1 100%;
  819. max-width: 100%;
  820. max-height: #{$value};
  821. box-sizing: border-box;
  822. // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
  823. @if $i == 0 { min-height: 0; }
  824. }
  825. }
  826. .layout#{$name}-row {
  827. > .#{$flexName}-33 , > .#{$flexName}-33 { flex: 1 1 100%; max-width: 33.33%; max-height: 100%; box-sizing: border-box; }
  828. > .#{$flexName}-66 , > .#{$flexName}-66 { flex: 1 1 100%; max-width: 66.66%; max-height: 100%; box-sizing: border-box; }
  829. // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
  830. > .flex { min-width: 0; }
  831. }
  832. .layout#{$name}-column {
  833. > .#{$flexName}-33 , > .#{$flexName}-33 { flex: 1 1 100%; max-width: 100%; max-height: 33.33%; box-sizing: border-box; }
  834. > .#{$flexName}-66 , > .#{$flexName}-66 { flex: 1 1 100%; max-width: 100%; max-height: 66.66%; box-sizing: border-box; }
  835. // Bug workaround for http://crbug.com/546034 - flex issues on Chrome 48
  836. > .flex { min-height: 0; }
  837. }
  838. }
  839. @mixin layout-align-for-name($suffix: null) {
  840. // Alignment attributes for layout containers' children
  841. // Arrange on the Main Axis
  842. // center, start, end, space-between, space-around
  843. // flex-start is the default for justify-content
  844. // ------------------------------
  845. $name: 'layout-align';
  846. @if $suffix != null {
  847. $name: 'layout-align-#{$suffix}';
  848. }
  849. .#{$name},
  850. .#{$name}-start-stretch // defaults
  851. {
  852. justify-content : flex-start;
  853. align-content : stretch;
  854. align-items: stretch;
  855. }
  856. // Main Axis Center
  857. .#{$name}-start,
  858. .#{$name}-start-start,
  859. .#{$name}-start-center,
  860. .#{$name}-start-end,
  861. .#{$name}-start-stretch
  862. {
  863. justify-content: flex-start;
  864. }
  865. // Main Axis Center
  866. .#{$name}-center, //stretch
  867. .#{$name}-center-start,
  868. .#{$name}-center-center,
  869. .#{$name}-center-end,
  870. .#{$name}-center-stretch
  871. {
  872. justify-content: center;
  873. }
  874. // Main Axis End
  875. .#{$name}-end, //stretch
  876. .#{$name}-end-start,
  877. .#{$name}-end-center,
  878. .#{$name}-end-end,
  879. .#{$name}-end-stretch
  880. {
  881. justify-content: flex-end;
  882. }
  883. // Main Axis Space Around
  884. .#{$name}-space-around, //stretch
  885. .#{$name}-space-around-center,
  886. .#{$name}-space-around-start,
  887. .#{$name}-space-around-end,
  888. .#{$name}-space-around-stretch
  889. {
  890. justify-content: space-around;
  891. }
  892. // Main Axis Space Between
  893. .#{$name}-space-between, //stretch
  894. .#{$name}-space-between-center,
  895. .#{$name}-space-between-start,
  896. .#{$name}-space-between-end,
  897. .#{$name}-space-between-stretch
  898. {
  899. justify-content: space-between;
  900. }
  901. // Arrange on the Cross Axis
  902. // center, start, end
  903. // stretch is the default for align-items
  904. // ------------------------------
  905. // Cross Axis Start
  906. .#{$name}-start-start,
  907. .#{$name}-center-start,
  908. .#{$name}-end-start,
  909. .#{$name}-space-between-start,
  910. .#{$name}-space-around-start
  911. {
  912. align-items: flex-start;
  913. align-content: flex-start;
  914. }
  915. // Cross Axis Center
  916. .#{$name}-start-center,
  917. .#{$name}-center-center,
  918. .#{$name}-end-center,
  919. .#{$name}-space-between-center,
  920. .#{$name}-space-around-center
  921. {
  922. align-items: center;
  923. align-content: center;
  924. max-width: 100%;
  925. }
  926. // Cross Axis Center IE overflow fix
  927. .#{$name}-start-center > *,
  928. .#{$name}-center-center > *,
  929. .#{$name}-end-center > *,
  930. .#{$name}-space-between-center > *,
  931. .#{$name}-space-around-center > *
  932. {
  933. max-width: 100%;
  934. box-sizing: border-box;
  935. }
  936. // Cross Axis End
  937. .#{$name}-start-end,
  938. .#{$name}-center-end,
  939. .#{$name}-end-end,
  940. .#{$name}-space-between-end,
  941. .#{$name}-space-around-end
  942. {
  943. align-items: flex-end;
  944. align-content: flex-end;
  945. }
  946. // Cross Axis Start
  947. .#{$name}-start-stretch,
  948. .#{$name}-center-stretch,
  949. .#{$name}-end-stretch,
  950. .#{$name}-space-between-stretch,
  951. .#{$name}-space-around-stretch
  952. {
  953. align-items: stretch;
  954. align-content: stretch;
  955. }
  956. }
  957. @mixin layout-padding-margin() {
  958. // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
  959. .layout-padding-sm > *,
  960. .layout-padding > .flex-sm
  961. {
  962. padding: $layout-gutter-width / 4;
  963. }
  964. .layout-padding,
  965. .layout-padding-gt-sm,
  966. .layout-padding-md,
  967. // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
  968. .layout-padding > *,
  969. .layout-padding-gt-sm > *,
  970. .layout-padding-md > *,
  971. .layout-padding > .flex,
  972. .layout-padding > .flex-gt-sm,
  973. .layout-padding > .flex-md
  974. {
  975. padding: $layout-gutter-width / 2;
  976. }
  977. // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
  978. .layout-padding-gt-md > *,
  979. .layout-padding-lg > *,
  980. .layout-padding-gt-lg > *,
  981. .layout-padding > .flex-gt-md,
  982. .layout-padding > .flex-lg,
  983. .layout-padding > .flex-lg,
  984. .layout-padding > .flex-gt-lg
  985. {
  986. padding: $layout-gutter-width / 1;
  987. }
  988. // Margin enhancements
  989. .layout-margin-sm > *,
  990. .layout-margin > .flex-sm
  991. {
  992. margin: $layout-gutter-width / 4;
  993. }
  994. .layout-margin,
  995. .layout-margin-gt-sm,
  996. .layout-margin-md,
  997. // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
  998. .layout-margin > *,
  999. .layout-margin-gt-sm > *,
  1000. .layout-margin-md > *,
  1001. .layout-margin > .flex,
  1002. .layout-margin > .flex-gt-sm,
  1003. .layout-margin > .flex-md
  1004. {
  1005. margin: $layout-gutter-width / 2;
  1006. }
  1007. // NOTE: these`> *` selectors should only be applied for layout="row" or layout="column" children !!
  1008. .layout-margin-gt-md > *,
  1009. .layout-margin-lg > *,
  1010. .layout-margin-gt-lg > *,
  1011. .layout-margin > .flex-gt-md,
  1012. .layout-margin > .flex-lg,
  1013. .layout-margin > .flex-gt-lg
  1014. {
  1015. margin: $layout-gutter-width / 1;
  1016. }
  1017. .layout-wrap {
  1018. flex-wrap: wrap;
  1019. }
  1020. .layout-nowrap {
  1021. flex-wrap: nowrap;
  1022. }
  1023. .layout-fill {
  1024. margin: 0;
  1025. width: 100%;
  1026. min-height: 100%;
  1027. height: 100%;
  1028. }
  1029. }
  1030. @mixin layouts_for_breakpoint($name:null) {
  1031. @include flex-order-for-name($name);
  1032. @include offset-for-name($name);
  1033. @include layout-align-for-name($name);
  1034. @include flex-properties-for-name($name);
  1035. @include layout-for-name($name);
  1036. }
  1037. .md-panel-outer-wrapper {
  1038. height: 100%;
  1039. left: 0;
  1040. position: absolute;
  1041. top: 0;
  1042. width: 100%;
  1043. }
  1044. ._md-panel-hidden {
  1045. display: none;
  1046. }
  1047. ._md-panel-fullscreen {
  1048. border-radius: 0;
  1049. left: 0;
  1050. min-height: 100%;
  1051. min-width: 100%;
  1052. position: fixed;
  1053. top: 0;
  1054. }
  1055. // Only used when no animations are present.
  1056. ._md-panel-shown .md-panel {
  1057. opacity: 1;
  1058. transition: none;
  1059. }
  1060. .md-panel {
  1061. opacity: 0;
  1062. position: fixed;
  1063. &._md-panel-shown {
  1064. // Only used when custom animations are present.
  1065. // Overridden by the default animations.
  1066. opacity: 1;
  1067. transition: none;
  1068. }
  1069. &._md-panel-animate-enter {
  1070. opacity: 1;
  1071. transition: $material-enter;
  1072. }
  1073. &._md-panel-animate-leave {
  1074. opacity: 1;
  1075. transition: $material-leave;
  1076. }
  1077. &._md-panel-animate-scale-out,
  1078. &._md-panel-animate-fade-out {
  1079. opacity: 0;
  1080. }
  1081. &._md-panel-backdrop {
  1082. height: 100%;
  1083. position: absolute;
  1084. width: 100%;
  1085. }
  1086. &._md-opaque-enter {
  1087. opacity: .48;
  1088. transition: opacity $material-enter-duration $material-enter-timing-function;
  1089. }
  1090. &._md-opaque-leave {
  1091. transition: opacity $material-leave-duration $material-leave-timing-function;
  1092. }
  1093. }
  1094. // !!Important - Theme-based Background-color can be configured in backdrop-theme.scss
  1095. // - Animate background-color opacity only for `.md-opaque` styles
  1096. md-backdrop {
  1097. transition: opacity 450ms;
  1098. position: absolute;
  1099. top:0;
  1100. bottom:0;
  1101. left: 0;
  1102. right: 0;
  1103. z-index: $z-index-backdrop;
  1104. &.md-menu-backdrop {
  1105. position: fixed !important;
  1106. z-index: $z-index-menu - 1;
  1107. }
  1108. &.md-select-backdrop {
  1109. z-index: $z-index-dialog + 1;
  1110. transition-duration: 0;
  1111. }
  1112. &.md-dialog-backdrop {
  1113. z-index: $z-index-dialog - 1;
  1114. }
  1115. &.md-bottom-sheet-backdrop {
  1116. z-index: $z-index-bottom-sheet - 1;
  1117. }
  1118. &.md-sidenav-backdrop {
  1119. z-index: $z-index-sidenav - 1;
  1120. }
  1121. &.md-click-catcher {
  1122. position: absolute;
  1123. }
  1124. &.md-opaque {
  1125. opacity: .48;
  1126. &.ng-enter {
  1127. opacity: 0;
  1128. }
  1129. &.ng-enter.md-opaque.ng-enter-active {
  1130. opacity: .48;
  1131. }
  1132. &.ng-leave {
  1133. opacity: .48;
  1134. transition: opacity 400ms;
  1135. }
  1136. &.ng-leave.md-opaque.ng-leave-active {
  1137. opacity: 0;
  1138. }
  1139. }
  1140. }
  1141. $bottom-sheet-horizontal-padding: 2 * $baseline-grid !default;
  1142. $bottom-sheet-vertical-padding: 1 * $baseline-grid !default;
  1143. $bottom-sheet-icon-after-margin: 4 * $baseline-grid !default;
  1144. $bottom-sheet-list-item-height: 6 * $baseline-grid !default;
  1145. $bottom-sheet-hidden-bottom-padding: 80px !default;
  1146. $bottom-sheet-header-height: 7 * $baseline-grid !default;
  1147. $bottom-sheet-grid-font-weight: 400 !default;
  1148. md-bottom-sheet {
  1149. position: absolute;
  1150. left: 0;
  1151. right: 0;
  1152. bottom: 0;
  1153. padding: $bottom-sheet-vertical-padding $bottom-sheet-horizontal-padding $bottom-sheet-vertical-padding + $bottom-sheet-hidden-bottom-padding $bottom-sheet-horizontal-padding;
  1154. z-index: $z-index-bottom-sheet;
  1155. border-top-width: 1px;
  1156. border-top-style: solid;
  1157. transform: translate3d(0, $bottom-sheet-hidden-bottom-padding, 0);
  1158. transition: $swift-ease-out;
  1159. transition-property: transform;
  1160. &.md-has-header {
  1161. padding-top: 0;
  1162. }
  1163. &.ng-enter {
  1164. opacity: 0;
  1165. transform: translate3d(0, 100%, 0);
  1166. }
  1167. &.ng-enter-active {
  1168. opacity: 1;
  1169. display: block;
  1170. transform: translate3d(0, $bottom-sheet-hidden-bottom-padding, 0) !important;
  1171. }
  1172. &.ng-leave-active {
  1173. transform: translate3d(0, 100%, 0) !important;
  1174. transition: $swift-ease-in;
  1175. }
  1176. .md-subheader {
  1177. background-color: transparent;
  1178. font-family: $font-family;
  1179. line-height: $bottom-sheet-header-height;
  1180. padding: 0;
  1181. white-space: nowrap;
  1182. }
  1183. md-inline-icon {
  1184. display: inline-block;
  1185. height: 24px;
  1186. width: 24px;
  1187. fill: #444;
  1188. }
  1189. md-list-item {
  1190. display: flex;
  1191. outline: none;
  1192. &:hover {
  1193. cursor: pointer;
  1194. }
  1195. }
  1196. &.md-list {
  1197. md-list-item {
  1198. padding: 0;
  1199. align-items: center;
  1200. height: $bottom-sheet-list-item-height;
  1201. }
  1202. }
  1203. &.md-grid {
  1204. padding-left: 3 * $baseline-grid;
  1205. padding-right: 3 * $baseline-grid;
  1206. padding-top: 0;
  1207. md-list {
  1208. display: flex;
  1209. flex-direction: row;
  1210. flex-wrap: wrap;
  1211. transition: all 0.5s;
  1212. align-items: center;
  1213. }
  1214. md-list-item {
  1215. flex-direction: column;
  1216. align-items: center;
  1217. transition: all 0.5s;
  1218. height: 12 * $baseline-grid;
  1219. margin-top: $baseline-grid;
  1220. margin-bottom: $baseline-grid;
  1221. /* Mixin for how many grid items to show per row */
  1222. @mixin grid-items-per-row($num, $alignEdges: false) {
  1223. $width: 100% / $num;
  1224. flex: 1 1 $width;
  1225. max-width: $width;
  1226. @if $alignEdges {
  1227. &:nth-of-type(#{$num}n + 1) {
  1228. align-items: flex-start;
  1229. }
  1230. &:nth-of-type(#{$num}n) {
  1231. align-items: flex-end;
  1232. }
  1233. }
  1234. }
  1235. @media (max-width: $layout-breakpoint-sm) {
  1236. @include grid-items-per-row(3, true);
  1237. }
  1238. @media (min-width: $layout-breakpoint-sm) and (max-width: $layout-breakpoint-md - 1) {
  1239. @include grid-items-per-row(4);
  1240. }
  1241. @media (min-width: $layout-breakpoint-md) and (max-width: $layout-breakpoint-lg - 1) {
  1242. @include grid-items-per-row(6);
  1243. }
  1244. @media (min-width: $layout-breakpoint-lg) {
  1245. @include grid-items-per-row(7);
  1246. }
  1247. // Override of the IE11 fix from @mixin ie11-min-height-flexbug, line 109 mixins.scss
  1248. &::before {
  1249. display: none;
  1250. }
  1251. .md-list-item-content {
  1252. display: flex;
  1253. flex-direction: column;
  1254. align-items: center;
  1255. width: 6 * $baseline-grid;
  1256. padding-bottom: 2 * $baseline-grid;
  1257. }
  1258. .md-grid-item-content {
  1259. border: 1px solid transparent;
  1260. display: flex;
  1261. flex-direction: column;
  1262. align-items: center;
  1263. width: 10 * $baseline-grid;
  1264. }
  1265. .md-grid-text {
  1266. font-weight: $bottom-sheet-grid-font-weight;
  1267. line-height: 2 * $baseline-grid;
  1268. font-size: 2 * $baseline-grid - 3;
  1269. margin: 0;
  1270. white-space: nowrap;
  1271. width: 8 * $baseline-grid;
  1272. text-align: center;
  1273. text-transform: none;
  1274. padding-top: 1 * $baseline-grid;
  1275. }
  1276. }
  1277. }
  1278. }
  1279. // IE only
  1280. @media screen and (-ms-high-contrast: active) {
  1281. md-bottom-sheet {
  1282. border: 1px solid #fff;
  1283. }
  1284. }
  1285. // Material Design Button
  1286. // https://material.google.com/components/buttons.html
  1287. $button-border-radius: 2px !default;
  1288. $button-fab-border-radius: 50% !default;
  1289. $button-icon-border-radius: $button-fab-border-radius !default;
  1290. $button-font-size: $body-font-size-base !default;
  1291. $button-font-size-dense: $body-font-size-base * 13/14 !default;
  1292. $button-line-height: rem(3.60) !default;
  1293. $button-line-height-dense: rem(3.20) !default;
  1294. $button-margin: rem(0.600) rem(0.800) !default;
  1295. $button-min-width: rem(8.800) !default;
  1296. $button-padding: 0 $button-left-right-padding !default;
  1297. // Fab buttons
  1298. $button-fab-line-height: rem(5.600) !default;
  1299. $button-fab-mini-width: rem(4.00) !default;
  1300. $button-fab-mini-height: rem(4.00) !default;
  1301. $button-fab-mini-line-height: rem(4.00) !default;
  1302. $button-fab-toast-offset: $button-fab-height * 0.75 !default;
  1303. $icon-button-height: rem(4.000) !default;
  1304. $icon-button-width: rem(4.000) !default;
  1305. $icon-button-margin: rem(0.600) !default;
  1306. // Fix issue causing buttons in Firefox to be 2px bigger than they should
  1307. button.md-button::-moz-focus-inner {
  1308. border: 0;
  1309. }
  1310. .md-button {
  1311. display: inline-block;
  1312. position: relative; // Required for absolute canvas child elements.
  1313. cursor: pointer;
  1314. /** Alignment adjustments */
  1315. @include dense(min-height, $button-line-height, $button-line-height-dense);
  1316. min-width: $button-min-width;
  1317. @include dense(line-height, $button-line-height, $button-line-height-dense);
  1318. vertical-align: middle;
  1319. align-items: center;
  1320. text-align: center;
  1321. border-radius: $button-border-radius;
  1322. box-sizing: border-box;
  1323. /* Reset default button appearance */
  1324. user-select: none;
  1325. outline: none;
  1326. border: 0;
  1327. /** Custom styling for button */
  1328. padding: $button-padding;
  1329. margin: $button-margin;
  1330. background: transparent;
  1331. color: currentColor;
  1332. white-space: nowrap;
  1333. /* Uppercase text content */
  1334. text-transform: uppercase;
  1335. font-weight: 500;
  1336. @include dense(font-size, $button-font-size, $button-font-size-dense);
  1337. font-style: inherit;
  1338. font-variant: inherit;
  1339. font-family: inherit;
  1340. text-decoration: none;
  1341. // Ink Ripple should not create any overflow.
  1342. overflow: hidden;
  1343. transition: box-shadow $swift-ease-out-duration $swift-ease-out-timing-function,
  1344. background-color $swift-ease-out-duration $swift-ease-out-timing-function;
  1345. &:focus {
  1346. outline: none;
  1347. }
  1348. &:hover, &:focus {
  1349. text-decoration: none;
  1350. }
  1351. // By default $ngAnimate looks for transition durations on the element, when using ng-hide, ng-if, ng-show.
  1352. // The .md-button has a transition duration applied, which means, that $ngAnimate delays the hide process.
  1353. // To avoid this, we need to reset the transition, when $ngAnimate looks for the duration.
  1354. &.ng-hide, &.ng-leave {
  1355. transition: none;
  1356. }
  1357. &.md-cornered {
  1358. border-radius: 0;
  1359. }
  1360. &.md-icon {
  1361. padding: 0;
  1362. background: none;
  1363. }
  1364. &.md-raised {
  1365. &:not([disabled]) {
  1366. @include md-shadow-bottom-z-1();
  1367. }
  1368. }
  1369. &.md-icon-button {
  1370. margin: 0 $icon-button-margin;
  1371. height: $icon-button-height;
  1372. min-width: 0;
  1373. line-height: $icon-size;
  1374. padding: $baseline-grid;
  1375. width: $icon-button-width;
  1376. border-radius: $button-icon-border-radius;
  1377. .md-ripple-container {
  1378. border-radius: $button-icon-border-radius;
  1379. background-clip: padding-box;
  1380. overflow: hidden;
  1381. // The following hack causes Safari/Chrome to respect overflow hidden for ripples
  1382. -webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC');
  1383. }
  1384. }
  1385. &.md-fab {
  1386. // Include the top/left/bottom/right fab positions
  1387. @include fab-all-positions();
  1388. z-index: $z-index-fab;
  1389. line-height: $button-fab-line-height;
  1390. min-width: 0;
  1391. width: $button-fab-width;
  1392. height: $button-fab-height;
  1393. vertical-align: middle;
  1394. @include md-shadow-bottom-z-1();
  1395. border-radius: $button-fab-border-radius;
  1396. background-clip: padding-box;
  1397. overflow: hidden;
  1398. transition: $swift-ease-in;
  1399. transition-property: background-color, box-shadow, transform;
  1400. .md-ripple-container {
  1401. border-radius: $button-fab-border-radius;
  1402. background-clip: padding-box;
  1403. overflow: hidden;
  1404. // The following hack causes Safari/Chrome to respect overflow hidden for ripples
  1405. -webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC');
  1406. }
  1407. &.md-mini {
  1408. line-height: $button-fab-mini-line-height;
  1409. width: $button-fab-mini-width;
  1410. height: $button-fab-mini-height;
  1411. }
  1412. &.ng-hide, &.ng-leave {
  1413. transition: none;
  1414. }
  1415. }
  1416. &:not([disabled]) {
  1417. &.md-raised,
  1418. &.md-fab {
  1419. &.md-focused {
  1420. @include md-shadow-bottom-z-1();
  1421. }
  1422. &:active {
  1423. @include md-shadow-bottom-z-2();
  1424. }
  1425. }
  1426. }
  1427. .md-ripple-container {
  1428. border-radius: $button-border-radius;
  1429. background-clip: padding-box;
  1430. overflow: hidden;
  1431. // The following hack causes Safari/Chrome to respect overflow hidden for ripples
  1432. -webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC');
  1433. }
  1434. }
  1435. // Using `display:block;` is required for correct vertical alignment
  1436. // because '.md-button' uses `display:inline-block;`.
  1437. .md-button.md-icon-button,
  1438. button.md-button.md-fab {
  1439. md-icon {
  1440. display: block;
  1441. }
  1442. }
  1443. .md-toast-open-top {
  1444. .md-button.md-fab-top-left,
  1445. .md-button.md-fab-top-right {
  1446. transition: $swift-ease-out;
  1447. transform: translate3d(0, $button-fab-toast-offset, 0);
  1448. &:not([disabled]) {
  1449. &.md-focused,
  1450. &:hover {
  1451. transform: translate3d(0, $button-fab-toast-offset - 1, 0);
  1452. }
  1453. }
  1454. }
  1455. }
  1456. .md-toast-open-bottom {
  1457. .md-button.md-fab-bottom-left,
  1458. .md-button.md-fab-bottom-right {
  1459. transition: $swift-ease-out;
  1460. transform: translate3d(0, -$button-fab-toast-offset, 0);
  1461. &:not([disabled]) {
  1462. &.md-focused,
  1463. &:hover {
  1464. transform: translate3d(0, -$button-fab-toast-offset - 1, 0);
  1465. }
  1466. }
  1467. }
  1468. }
  1469. .md-button-group {
  1470. display: flex;
  1471. flex: 1;
  1472. width: 100%;
  1473. & > .md-button {
  1474. flex: 1;
  1475. display: block;
  1476. overflow: hidden;
  1477. width: 0;
  1478. border-width: 1px 0px 1px 1px;
  1479. border-radius: 0;
  1480. text-align: center;
  1481. text-overflow: ellipsis;
  1482. white-space: nowrap;
  1483. &:first-child {
  1484. border-radius: 2px 0px 0px 2px;
  1485. }
  1486. &:last-child {
  1487. border-right-width: 1px;
  1488. border-radius: 0px 2px 2px 0px;
  1489. }
  1490. }
  1491. }
  1492. // IE only
  1493. @media screen and (-ms-high-contrast: active) {
  1494. .md-button.md-raised,
  1495. .md-button.md-fab {
  1496. border: 1px solid #fff;
  1497. }
  1498. }
  1499. $card-padding: 16px !default;
  1500. $card-box-shadow: $whiteframe-shadow-1dp !default;
  1501. md-card {
  1502. box-sizing: border-box;
  1503. display: flex;
  1504. flex-direction: column;
  1505. margin: $baseline-grid;
  1506. box-shadow: $card-box-shadow;
  1507. md-card-header {
  1508. padding: $card-padding;
  1509. display: flex;
  1510. flex-direction: row;
  1511. &:first-child {
  1512. md-card-avatar {
  1513. @include rtl-prop(margin-right, margin-left, 12px, auto);
  1514. }
  1515. }
  1516. &:last-child {
  1517. md-card-avatar {
  1518. @include rtl-prop(margin-left, margin-right, 12px, auto);
  1519. }
  1520. }
  1521. md-card-avatar {
  1522. width: 40px;
  1523. height: 40px;
  1524. .md-user-avatar,
  1525. md-icon{
  1526. border-radius: 50%;
  1527. }
  1528. md-icon {
  1529. padding: 8px;
  1530. > svg {
  1531. // Safari workaround for any SVG with padded parent
  1532. height: inherit;
  1533. width: inherit;
  1534. }
  1535. }
  1536. & + md-card-header-text {
  1537. max-height: 40px;
  1538. .md-title {
  1539. font-size: 14px;
  1540. }
  1541. }
  1542. }
  1543. md-card-header-text {
  1544. display: flex;
  1545. flex: 1;
  1546. flex-direction: column;
  1547. .md-subhead {
  1548. font-size: 14px;
  1549. }
  1550. }
  1551. }
  1552. > img,
  1553. > md-card-header img,
  1554. md-card-title-media img {
  1555. box-sizing: border-box;
  1556. display: flex;
  1557. flex: 0 0 auto;
  1558. width: 100%;
  1559. height: auto;
  1560. }
  1561. md-card-title {
  1562. padding: 3 * $card-padding / 2 $card-padding $card-padding;
  1563. display: flex;
  1564. flex: 1 1 auto;
  1565. flex-direction: row;
  1566. & + md-card-content {
  1567. padding-top: 0;
  1568. }
  1569. md-card-title-text {
  1570. flex: 1;
  1571. flex-direction: column;
  1572. display: flex;
  1573. .md-subhead {
  1574. padding-top: 0;
  1575. font-size: 14px;
  1576. }
  1577. &:only-child {
  1578. .md-subhead {
  1579. padding-top: 3 * $card-padding / 4;
  1580. }
  1581. }
  1582. }
  1583. md-card-title-media {
  1584. margin-top: - $card-padding / 2;
  1585. .md-media-sm {
  1586. height: 80px;
  1587. width: 80px;
  1588. }
  1589. .md-media-md {
  1590. height: 112px;
  1591. width: 112px;
  1592. }
  1593. .md-media-lg {
  1594. height: 152px;
  1595. width: 152px;
  1596. }
  1597. }
  1598. }
  1599. md-card-content {
  1600. display: block;
  1601. padding: $card-padding;
  1602. & > p {
  1603. &:first-child {
  1604. margin-top: 0;
  1605. }
  1606. &:last-child {
  1607. margin-bottom: 0;
  1608. }
  1609. }
  1610. .md-media-xl {
  1611. height: 240px;
  1612. width: 240px;
  1613. }
  1614. }
  1615. .md-actions, md-card-actions {
  1616. margin: $baseline-grid;
  1617. &.layout-column {
  1618. .md-button {
  1619. &:not(.md-icon-button) {
  1620. margin: $baseline-grid / 4 0;
  1621. &:first-of-type {
  1622. margin-top: 0;
  1623. }
  1624. &:last-of-type {
  1625. margin-bottom: 0;
  1626. }
  1627. }
  1628. &.md-icon-button {
  1629. margin-top: 3 * $baseline-grid / 4;
  1630. margin-bottom: 3 * $baseline-grid / 4;
  1631. }
  1632. }
  1633. }
  1634. md-card-icon-actions {
  1635. flex: 1;
  1636. justify-content: flex-start;
  1637. display: flex;
  1638. flex-direction: row;
  1639. }
  1640. &:not(.layout-column) .md-button {
  1641. &:not(.md-icon-button) {
  1642. margin: 0 $baseline-grid * .5;
  1643. &:first-of-type {
  1644. @include rtl-prop(margin-left, margin-right, 0, auto);
  1645. }
  1646. &:last-of-type {
  1647. @include rtl-prop(margin-right, margin-left, 0, auto);
  1648. }
  1649. }
  1650. &.md-icon-button {
  1651. margin-left: 3 * $baseline-grid / 4;
  1652. margin-right: 3 * $baseline-grid / 4;
  1653. &:first-of-type {
  1654. @include rtl-prop(margin-left, margin-right, 3 * $baseline-grid / 2, auto);
  1655. }
  1656. &:last-of-type {
  1657. @include rtl-prop(margin-right, margin-left, 3 * $baseline-grid / 2, auto);
  1658. }
  1659. }
  1660. & + md-card-icon-actions {
  1661. flex: 1;
  1662. justify-content: flex-end;
  1663. display: flex;
  1664. flex-direction: row;
  1665. }
  1666. }
  1667. }
  1668. md-card-footer {
  1669. margin-top: auto;
  1670. padding: $card-padding;
  1671. }
  1672. }
  1673. @media screen and (-ms-high-contrast: active) {
  1674. md-card {
  1675. border: 1px solid #fff;
  1676. }
  1677. }
  1678. .md-image-no-fill {
  1679. > img {
  1680. width: auto;
  1681. height: auto;
  1682. }
  1683. }
  1684. //$checkbox-width: 20px !default;
  1685. //$checkbox-height: $checkbox-width !default;
  1686. //$checkbox-border-radius: 2px !default;
  1687. //$checkbox-border-width: 2px !default;
  1688. //
  1689. // ^^ defined in variables.scss
  1690. //
  1691. $checkbox-margin: 16px !default;
  1692. $checkbox-text-margin: 10px !default;
  1693. $checkbox-top: 12px !default;
  1694. .md-inline-form {
  1695. md-checkbox {
  1696. margin: 19px 0 18px;
  1697. }
  1698. }
  1699. md-checkbox {
  1700. box-sizing: border-box;
  1701. display: inline-block;
  1702. margin-bottom: $checkbox-margin;
  1703. white-space: nowrap;
  1704. cursor: pointer;
  1705. outline: none;
  1706. user-select: none;
  1707. position: relative;
  1708. min-width: $checkbox-width;
  1709. min-height: $checkbox-width;
  1710. @include rtl(margin-left, 0, $checkbox-margin);
  1711. @include rtl(margin-right, $checkbox-margin, 0);
  1712. &:last-of-type {
  1713. margin-left: 0;
  1714. margin-right: 0;
  1715. }
  1716. &.md-focused:not([disabled]) {
  1717. .md-container:before {
  1718. left: -8px;
  1719. top: -8px;
  1720. right: -8px;
  1721. bottom: -8px;
  1722. }
  1723. &:not(.md-checked) {
  1724. .md-container:before {
  1725. background-color: rgba(0, 0, 0, 0.12);
  1726. }
  1727. }
  1728. }
  1729. &.md-align-top-left > div.md-container {
  1730. top: $checkbox-top;
  1731. }
  1732. @include checkbox-container;
  1733. .md-label {
  1734. box-sizing: border-box;
  1735. position: relative;
  1736. display: inline-block;
  1737. vertical-align: middle;
  1738. white-space: normal;
  1739. user-select: text;
  1740. @include rtl(margin-left, $checkbox-text-margin + $checkbox-width, 0);
  1741. @include rtl(margin-right, 0, $checkbox-text-margin + $checkbox-width);
  1742. }
  1743. }
  1744. // The default item height is also specified in the JavaScript.
  1745. $md-autocomplete-item-height: 48px !default;
  1746. $md-autocomplete-clear-size: 30px !default;
  1747. $md-autocomplete-input-offset: 20px !default;
  1748. md-autocomplete {
  1749. border-radius: 2px;
  1750. display: block;
  1751. height: 40px;
  1752. position: relative;
  1753. overflow: visible;
  1754. min-width: 190px;
  1755. &[disabled] {
  1756. input {
  1757. cursor: default;
  1758. }
  1759. }
  1760. &[md-floating-label] {
  1761. border-radius: 0;
  1762. background: transparent;
  1763. height: auto;
  1764. md-input-container {
  1765. padding-bottom: 0;
  1766. }
  1767. md-autocomplete-wrap {
  1768. height: auto;
  1769. }
  1770. .md-show-clear-button {
  1771. button {
  1772. display: block;
  1773. position: absolute;
  1774. right: 0;
  1775. top: $md-autocomplete-input-offset;
  1776. width: $md-autocomplete-clear-size;
  1777. height: $md-autocomplete-clear-size;
  1778. }
  1779. input {
  1780. // Add padding to the end of the input to avoid overlapping with the clear button.
  1781. @include rtl-prop(padding-right, padding-left, $md-autocomplete-clear-size, 0);
  1782. }
  1783. }
  1784. }
  1785. md-autocomplete-wrap {
  1786. // Layout [layout='row']
  1787. display: flex;
  1788. flex-direction: row;
  1789. box-sizing: border-box;
  1790. position: relative;
  1791. overflow: visible;
  1792. height: 40px;
  1793. &.md-menu-showing {
  1794. z-index: $z-index-backdrop + 1;
  1795. }
  1796. md-input-container, input {
  1797. // Layout [flex]
  1798. flex: 1 1 0%;
  1799. box-sizing: border-box;
  1800. min-width : 0;
  1801. }
  1802. md-progress-linear {
  1803. position: absolute;
  1804. bottom: -2px;
  1805. left: 0;
  1806. // When `md-inline` is present, we adjust the offset to go over the `ng-message` space
  1807. &.md-inline {
  1808. bottom: 40px;
  1809. right: 2px;
  1810. left: 2px;
  1811. width: auto;
  1812. }
  1813. .md-mode-indeterminate {
  1814. position: absolute;
  1815. top: 0;
  1816. left: 0;
  1817. width: 100%;
  1818. height: 3px;
  1819. transition: none;
  1820. .md-container {
  1821. transition: none;
  1822. height: 3px;
  1823. }
  1824. &.ng-enter {
  1825. transition: opacity 0.15s linear;
  1826. &.ng-enter-active {
  1827. opacity: 1;
  1828. }
  1829. }
  1830. &.ng-leave {
  1831. transition: opacity 0.15s linear;
  1832. &.ng-leave-active {
  1833. opacity: 0;
  1834. }
  1835. }
  1836. }
  1837. }
  1838. }
  1839. input:not(.md-input) {
  1840. @include md-flat-input();
  1841. width: 100%;
  1842. padding: 0 15px;
  1843. line-height: 40px;
  1844. height: 40px;
  1845. }
  1846. .md-show-clear-button button {
  1847. position: relative;
  1848. line-height: 20px;
  1849. text-align: center;
  1850. width: $md-autocomplete-clear-size;
  1851. height: $md-autocomplete-clear-size;
  1852. cursor: pointer;
  1853. border: none;
  1854. border-radius: 50%;
  1855. padding: 0;
  1856. font-size: 12px;
  1857. background: transparent;
  1858. margin: auto 5px;
  1859. &:after {
  1860. content: '';
  1861. position: absolute;
  1862. top: -6px;
  1863. right: -6px;
  1864. bottom: -6px;
  1865. left: -6px;
  1866. border-radius: 50%;
  1867. transform: scale(0);
  1868. opacity: 0;
  1869. transition: $swift-ease-out;
  1870. }
  1871. &:focus {
  1872. outline: none;
  1873. &:after {
  1874. transform: scale(1);
  1875. opacity: 1;
  1876. }
  1877. }
  1878. md-icon {
  1879. position: absolute;
  1880. top: 50%;
  1881. left: 50%;
  1882. transform: translate3d(-50%, -50%, 0) scale(0.9);
  1883. path {
  1884. stroke-width: 0;
  1885. }
  1886. }
  1887. &.ng-enter {
  1888. transform: scale(0);
  1889. transition: transform 0.15s ease-out;
  1890. &.ng-enter-active {
  1891. transform: scale(1);
  1892. }
  1893. }
  1894. &.ng-leave {
  1895. transition: transform 0.15s ease-out;
  1896. &.ng-leave-active {
  1897. transform: scale(0);
  1898. }
  1899. }
  1900. }
  1901. // IE Only
  1902. @media screen and (-ms-high-contrast: active) {
  1903. $border-color: #fff;
  1904. input {
  1905. border: 1px solid $border-color;
  1906. }
  1907. li:focus {
  1908. color: #fff;
  1909. }
  1910. }
  1911. }
  1912. .md-virtual-repeat-container.md-autocomplete-suggestions-container {
  1913. position: absolute;
  1914. box-shadow: 0 2px 5px rgba(black, 0.25);
  1915. z-index: $z-index-tooltip;
  1916. // Expand the virtualRepeatContainer as much as the max-height from the JavaScript allows.
  1917. // This is necessary for the virtualRepeatContainer to be able to grow back.
  1918. height: 100%;
  1919. }
  1920. .md-virtual-repeat-container.md-not-found {
  1921. height: $md-autocomplete-item-height;
  1922. }
  1923. .md-autocomplete-suggestions {
  1924. margin: 0;
  1925. list-style: none;
  1926. padding: 0;
  1927. li {
  1928. font-size: 14px;
  1929. overflow: hidden;
  1930. padding: 0 15px;
  1931. line-height: $md-autocomplete-item-height;
  1932. height: $md-autocomplete-item-height;
  1933. transition: background 0.15s linear;
  1934. margin: 0;
  1935. white-space: nowrap;
  1936. text-overflow: ellipsis;
  1937. &:focus {
  1938. outline: none;
  1939. }
  1940. &:not(.md-not-found-wrapper) {
  1941. cursor: pointer;
  1942. }
  1943. }
  1944. }
  1945. // IE Only
  1946. @media screen and (-ms-high-contrast: active) {
  1947. md-autocomplete,
  1948. .md-autocomplete-suggestions {
  1949. border: 1px solid #fff;
  1950. }
  1951. }
  1952. md-content {
  1953. display: block;
  1954. position: relative;
  1955. overflow: auto;
  1956. -webkit-overflow-scrolling: touch;
  1957. &[md-scroll-y] {
  1958. overflow-y: auto;
  1959. overflow-x: hidden;
  1960. }
  1961. &[md-scroll-x] {
  1962. overflow-x: auto;
  1963. overflow-y: hidden;
  1964. }
  1965. &[md-scroll-xy] {
  1966. }
  1967. @media print {
  1968. overflow: visible !important;
  1969. }
  1970. }
  1971. md-divider {
  1972. display: block;
  1973. border-top-width: 1px;
  1974. border-top-style: solid;
  1975. margin: 0;
  1976. &[md-inset] {
  1977. @include rtl-prop(margin-left, margin-right, $baseline-grid * 10, auto);
  1978. }
  1979. }
  1980. .layout-row,
  1981. .layout-xs-row, .layout-gt-xs-row,
  1982. .layout-sm-row, .layout-gt-sm-row,
  1983. .layout-md-row, .layout-gt-md-row,
  1984. .layout-lg-row, .layout-gt-lg-row,
  1985. .layout-xl-row {
  1986. & > md-divider {
  1987. border-top-width: 0;
  1988. border-right-width: 1px;
  1989. border-right-style: solid;
  1990. }
  1991. }
  1992. $chip-font-size: rem(1.6) !default;
  1993. $chip-height: rem(3.2) !default;
  1994. $chip-padding: 0 rem(1.2) 0 rem(1.2) !default;
  1995. $chip-input-padding: 0 !default;
  1996. $chip-remove-padding-right: rem(2.2) !default;
  1997. $chip-remove-line-height: rem(2.2) !default;
  1998. $chip-margin: rem(0.8) rem(0.8) 0 0 !default;
  1999. $chip-wrap-padding: 0 0 rem(0.8) rem(0.3) !default;
  2000. $chip-delete-icon-size: rem(1.8) !default;
  2001. $contact-chip-padding: 0 rem(2.5) 0 0 !default;
  2002. $contact-chip-suggestion-image-height: rem(4.0) !default;
  2003. $contact-chip-suggestion-margin: rem(0.8) !default;
  2004. $contact-chip-name-width: rem(12) !default;
  2005. .md-contact-chips {
  2006. .md-chips {
  2007. md-chip {
  2008. @include rtl(padding, $contact-chip-padding, rtl-value($contact-chip-padding));
  2009. .md-contact-avatar {
  2010. @include rtl(float, left, right);
  2011. img {
  2012. height: $chip-height;
  2013. border-radius: $chip-height / 2;
  2014. }
  2015. }
  2016. .md-contact-name {
  2017. display: inline-block;
  2018. height: $chip-height;
  2019. @include rtl-prop(margin-left, margin-right, rem(0.8), auto);
  2020. }
  2021. }
  2022. }
  2023. }
  2024. .md-contact-suggestion {
  2025. height: ($contact-chip-suggestion-margin * 2) + $contact-chip-suggestion-image-height;
  2026. img {
  2027. height: $contact-chip-suggestion-image-height;
  2028. border-radius: $contact-chip-suggestion-image-height / 2;
  2029. margin-top: $contact-chip-suggestion-margin;
  2030. }
  2031. .md-contact-name {
  2032. @include rtl-prop(margin-left, margin-right, $contact-chip-suggestion-margin, auto);
  2033. width: $contact-chip-name-width;
  2034. }
  2035. .md-contact-name, .md-contact-email {
  2036. display: inline-block;
  2037. overflow: hidden;
  2038. text-overflow: ellipsis;
  2039. }
  2040. }
  2041. .md-contact-chips-suggestions li {
  2042. height: 100%;
  2043. }
  2044. .md-chips {
  2045. @include pie-clearfix();
  2046. display: block;
  2047. font-family: $font-family;
  2048. font-size: $chip-font-size;
  2049. @include rtl(padding, $chip-wrap-padding, rtl-value($chip-wrap-padding));
  2050. vertical-align: middle;
  2051. &.md-readonly .md-chip-input-container {
  2052. min-height: $chip-height;
  2053. }
  2054. &:not(.md-readonly) {
  2055. cursor: text;
  2056. }
  2057. &.md-removable {
  2058. md-chip {
  2059. @include rtl-prop(padding-right, padding-left, $chip-remove-padding-right, 0);
  2060. .md-chip-content {
  2061. @include rtl-prop(padding-right, padding-left, rem(0.4), 0);
  2062. }
  2063. }
  2064. }
  2065. md-chip {
  2066. cursor: default;
  2067. border-radius: $chip-height / 2;
  2068. display: block;
  2069. height: $chip-height;
  2070. line-height: $chip-height;
  2071. @include rtl(margin, $chip-margin, rtl-value($chip-margin));
  2072. padding: $chip-padding;
  2073. @include rtl(float, left, right);
  2074. box-sizing: border-box;
  2075. max-width: 100%;
  2076. position: relative;
  2077. .md-chip-content {
  2078. display: block;
  2079. @include rtl(float, left, right);
  2080. white-space: nowrap;
  2081. max-width: 100%;
  2082. overflow: hidden;
  2083. text-overflow: ellipsis;
  2084. &:focus {
  2085. outline: none;
  2086. }
  2087. }
  2088. &._md-chip-content-edit-is-enabled {
  2089. -webkit-user-select: none; /* webkit (safari, chrome) browsers */
  2090. -moz-user-select: none; /* mozilla browsers */
  2091. -khtml-user-select: none; /* webkit (konqueror) browsers */
  2092. -ms-user-select: none; /* IE10+ */
  2093. }
  2094. .md-chip-remove-container {
  2095. position: absolute;
  2096. @include rtl-prop(right, left, 0, auto);
  2097. line-height: $chip-remove-line-height;
  2098. }
  2099. .md-chip-remove {
  2100. text-align: center;
  2101. width: $chip-height;
  2102. height: $chip-height;
  2103. min-width: 0;
  2104. padding: 0;
  2105. background: transparent;
  2106. border: none;
  2107. box-shadow: none;
  2108. margin: 0;
  2109. position: relative;
  2110. md-icon {
  2111. height: $chip-delete-icon-size;
  2112. width: $chip-delete-icon-size;
  2113. position: absolute;
  2114. top: 50%;
  2115. left: 50%;
  2116. transform: translate3d(-50%, -50%, 0);
  2117. }
  2118. }
  2119. }
  2120. .md-chip-input-container {
  2121. display: block;
  2122. line-height: $chip-height;
  2123. @include rtl(margin, $chip-margin, rtl-value($chip-margin));
  2124. padding: $chip-input-padding;
  2125. @include rtl(float, left, right);
  2126. input {
  2127. &:not([type]),&[type="email"],&[type="number"],&[type="tel"],&[type="url"],&[type="text"] {
  2128. border: 0;
  2129. height: $chip-height;
  2130. line-height: $chip-height;
  2131. padding: 0;
  2132. &:focus {
  2133. outline: none;
  2134. }
  2135. }
  2136. }
  2137. md-autocomplete, md-autocomplete-wrap {
  2138. background: transparent;
  2139. height: $chip-height;
  2140. }
  2141. md-autocomplete {
  2142. md-autocomplete-wrap {
  2143. box-shadow: none;
  2144. }
  2145. input {
  2146. position: relative;
  2147. }
  2148. }
  2149. input {
  2150. border:0;
  2151. height: $chip-height;
  2152. line-height: $chip-height;
  2153. padding: 0;
  2154. &:focus {
  2155. outline:none;
  2156. }
  2157. }
  2158. md-autocomplete, md-autocomplete-wrap {
  2159. height: $chip-height;
  2160. }
  2161. md-autocomplete {
  2162. box-shadow: none;
  2163. input {
  2164. position: relative;
  2165. }
  2166. }
  2167. &:not(:first-child) {
  2168. @include rtl(margin, $chip-margin, rtl-value($chip-margin));
  2169. }
  2170. input {
  2171. background:transparent;
  2172. border-width: 0;
  2173. }
  2174. }
  2175. md-autocomplete {
  2176. button {
  2177. display: none;
  2178. }
  2179. }
  2180. }
  2181. // IE only
  2182. @media screen and (-ms-high-contrast: active) {
  2183. .md-chip-input-container,
  2184. md-chip {
  2185. border: 1px solid #fff;
  2186. }
  2187. .md-chip-input-container md-autocomplete {
  2188. border: none;
  2189. }
  2190. }
  2191. md-fab-speed-dial {
  2192. position: relative;
  2193. display: flex;
  2194. align-items: center;
  2195. // Include the top/left/bottom/right fab positions and set the z-index for absolute positioning
  2196. @include fab-all-positions();
  2197. z-index: $z-index-fab;
  2198. // Allow users to enable/disable hovering over the entire speed dial (i.e. the empty space where
  2199. // items will eventually appear)
  2200. &:not(.md-hover-full) {
  2201. // Turn off pointer events when closed
  2202. pointer-events: none;
  2203. md-fab-trigger, .md-fab-action-item {
  2204. // Always make the trigger and action items always have pointer events (the tooltip looks
  2205. // for the first parent with pointer-events, so we must set this for tooltips to work)
  2206. pointer-events: auto;
  2207. }
  2208. &.md-is-open {
  2209. // Turn on pointer events when open
  2210. pointer-events: auto;
  2211. }
  2212. }
  2213. ._md-css-variables {
  2214. z-index: $z-index-fab;
  2215. }
  2216. &.md-is-open {
  2217. .md-fab-action-item {
  2218. align-items: center;
  2219. }
  2220. }
  2221. md-fab-actions {
  2222. display: flex;
  2223. // Set the height so that the z-index in the JS animation works
  2224. height: auto;
  2225. .md-fab-action-item {
  2226. transition: $swift-ease-in;
  2227. }
  2228. }
  2229. &.md-down {
  2230. flex-direction: column;
  2231. md-fab-trigger {
  2232. order: 1;
  2233. }
  2234. md-fab-actions {
  2235. flex-direction: column;
  2236. order: 2;
  2237. }
  2238. }
  2239. &.md-up {
  2240. flex-direction: column;
  2241. md-fab-trigger {
  2242. order: 2;
  2243. }
  2244. md-fab-actions {
  2245. flex-direction: column-reverse;
  2246. order: 1;
  2247. }
  2248. }
  2249. &.md-left {
  2250. flex-direction: row;
  2251. md-fab-trigger {
  2252. order: 2;
  2253. }
  2254. md-fab-actions {
  2255. flex-direction: row-reverse;
  2256. order: 1;
  2257. .md-fab-action-item {
  2258. transition: $swift-ease-in;
  2259. }
  2260. }
  2261. }
  2262. &.md-right {
  2263. flex-direction: row;
  2264. md-fab-trigger {
  2265. order: 1;
  2266. }
  2267. md-fab-actions {
  2268. flex-direction: row;
  2269. order: 2;
  2270. .md-fab-action-item {
  2271. transition: $swift-ease-in;
  2272. }
  2273. }
  2274. }
  2275. /*
  2276. * Hide some graphics glitches if switching animation types
  2277. */
  2278. &.md-fling-remove, &.md-scale-remove {
  2279. .md-fab-action-item > * {
  2280. visibility: hidden;
  2281. }
  2282. }
  2283. /*
  2284. * Handle the animations
  2285. */
  2286. &.md-fling {
  2287. .md-fab-action-item {
  2288. opacity: 1;
  2289. }
  2290. }
  2291. // For the initial animation, set the duration to be instant
  2292. &.md-fling.md-animations-waiting {
  2293. .md-fab-action-item {
  2294. opacity: 0;
  2295. transition-duration: 0s;
  2296. }
  2297. }
  2298. &.md-scale {
  2299. .md-fab-action-item {
  2300. transform: scale(0);
  2301. transition: $swift-ease-in;
  2302. // Make the scale animation a bit faster since we are delaying each item
  2303. transition-duration: $swift-ease-in-duration / 2.1;
  2304. }
  2305. }
  2306. }
  2307. /** Styles for mdCalendar. */
  2308. $md-calendar-cell-size: 44px !default;
  2309. $md-calendar-header-height: 40px !default;
  2310. $md-calendar-cell-emphasis-size: 40px !default;
  2311. $md-calendar-side-padding: 16px !default;
  2312. $md-calendar-weeks-to-show: 7 !default;
  2313. $md-calendar-month-label-padding: 8px !default;
  2314. $md-calendar-month-label-font-size: 14px !default;
  2315. $md-calendar-scroll-cue-shadow-radius: 6px !default;
  2316. $md-calendar-width: (7 * $md-calendar-cell-size) + (2 * $md-calendar-side-padding) !default;
  2317. $md-calendar-height:
  2318. ($md-calendar-weeks-to-show * $md-calendar-cell-size) + $md-calendar-header-height !default;
  2319. // Styles for date cells, including day-of-the-week header cells.
  2320. @mixin md-calendar-cell($height: $md-calendar-cell-size) {
  2321. height: $height;
  2322. width: $md-calendar-cell-size;
  2323. text-align: center;
  2324. // Remove all padding and borders so we can completely
  2325. // control the size of the table cells.
  2326. padding: 0;
  2327. border: none;
  2328. // Prevent issues if somebody is applying box-sizing: border-box; eveywhere.
  2329. box-sizing: content-box;
  2330. // The left / right padding is applied to the cells instead of the wrapper
  2331. // because we want the header background and the month dividing border to
  2332. // extend the entire width of the calendar.
  2333. &:first-child {
  2334. @include rtl-prop(padding-left, padding-right, $md-calendar-side-padding, 0);
  2335. }
  2336. &:last-child {
  2337. @include rtl-prop(padding-right, padding-left, $md-calendar-side-padding, 0);
  2338. }
  2339. }
  2340. // Styles for tables used in mdCalendar (the day-of-the-week header and the table of dates itself).
  2341. @mixin md-calendar-table() {
  2342. // Fixed table layout makes IE faster.
  2343. // https://msdn.microsoft.com/en-us/library/ms533020(VS.85).aspx
  2344. table-layout: fixed;
  2345. border-spacing: 0;
  2346. border-collapse: collapse;
  2347. }
  2348. md-calendar {
  2349. font-size: 13px;
  2350. user-select: none;
  2351. }
  2352. // Wrap the scroll with overflow: hidden in order to hide the scrollbar.
  2353. // The inner .md-calendar-scroll-container will using a padding-right to push the
  2354. // scrollbar into the hidden area (done with javascript).
  2355. .md-calendar-scroll-mask {
  2356. display: inline-block;
  2357. overflow: hidden;
  2358. height: $md-calendar-weeks-to-show * $md-calendar-cell-size;
  2359. // The actual scrolling element.
  2360. .md-virtual-repeat-scroller {
  2361. // These two properties are needed to get touch momentum to work.
  2362. // See https://css-tricks.com/snippets/css/momentum-scrolling-on-ios-overflow-elements
  2363. overflow-y: scroll;
  2364. -webkit-overflow-scrolling: touch;
  2365. &::-webkit-scrollbar {
  2366. display: none;
  2367. }
  2368. }
  2369. // Offsetter is the element that is translateY'ed into view of the user and contains the
  2370. // calendar content.
  2371. .md-virtual-repeat-offsetter {
  2372. width: 100%;
  2373. }
  2374. }
  2375. // Contains the scrolling element (this is the md-virtual-repeat-container).
  2376. .md-calendar-scroll-container {
  2377. // Add an inset shadow to help cue users that the calendar is scrollable. Use a negative x
  2378. // offset to push the vertical edge shadow off to the right so that it's cut off by the edge
  2379. // of the calendar container.
  2380. box-shadow: inset -3px 3px $md-calendar-scroll-cue-shadow-radius rgba(black, 0.2);
  2381. display: inline-block;
  2382. height: $md-calendar-weeks-to-show * $md-calendar-cell-size;
  2383. // Add the shadow radius to the width so that the shadow os pushed off to the side and cut off.
  2384. width: $md-calendar-width + $md-calendar-scroll-cue-shadow-radius;
  2385. }
  2386. // A single date cell in the calendar table.
  2387. .md-calendar-date {
  2388. @include md-calendar-cell();
  2389. &.md-calendar-date-disabled {
  2390. cursor: default;
  2391. }
  2392. }
  2393. // Circle element inside of every date cell used to indicate selection or focus.
  2394. .md-calendar-date-selection-indicator {
  2395. transition: background-color, color $swift-ease-out-duration $swift-ease-out-timing-function;
  2396. border-radius: 50%;
  2397. display: inline-block;
  2398. width: $md-calendar-cell-emphasis-size;
  2399. height: $md-calendar-cell-emphasis-size;
  2400. line-height: $md-calendar-cell-emphasis-size;
  2401. .md-calendar-date:not(.md-disabled) & {
  2402. cursor: pointer;
  2403. }
  2404. }
  2405. // The label above each month (containing the month name and the year, e.g. "Jun 2014").
  2406. .md-calendar-month-label {
  2407. height: $md-calendar-cell-size;
  2408. font-size: $md-calendar-month-label-font-size;
  2409. font-weight: 500; // Roboto Medium
  2410. @include rtl(padding, 0 0 0 $md-calendar-side-padding + $md-calendar-month-label-padding, rtl-value( 0 0 0 $md-calendar-side-padding + $md-calendar-month-label-padding));
  2411. md-calendar-month &:not(.md-calendar-month-label-disabled) {
  2412. cursor: pointer;
  2413. }
  2414. md-icon {
  2415. @include rtl(transform, rotate(180deg), none);
  2416. }
  2417. span {
  2418. vertical-align: middle;
  2419. }
  2420. }
  2421. // Table containing the day-of-the-week header.
  2422. .md-calendar-day-header {
  2423. @include md-calendar-table();
  2424. th {
  2425. @include md-calendar-cell($md-calendar-header-height);
  2426. font-weight: normal;
  2427. }
  2428. }
  2429. // Primary table containing all date cells. Each month is a tbody in this table.
  2430. .md-calendar {
  2431. @include md-calendar-table();
  2432. // Divider between months.
  2433. tr:last-child td {
  2434. border-bottom-width: 1px;
  2435. border-bottom-style: solid;
  2436. }
  2437. // The divider between months doesn't actually change the height of the tbody in which the
  2438. // border appear; it changes the height of the following tbody. The causes the first-child to be
  2439. // 1px shorter than the other months. We fix this by adding an invisible border-top.
  2440. &:first-child {
  2441. border-top: 1px solid transparent;
  2442. }
  2443. // Explicitly set vertical-align to avoid conflicting with popular CSS resets. When
  2444. // vertical-align:baseline is set, month headers are misaligned. Also reset the box-sizing,
  2445. // in case the user set it to border-box.
  2446. // http://meyerweb.com/eric/tools/css/reset/
  2447. tbody, td, tr {
  2448. vertical-align: middle;
  2449. box-sizing: content-box;
  2450. }
  2451. }
  2452. /** Styles for mdDatepicker. */
  2453. $md-datepicker-button-gap: 12px !default; // Space between the text input and the calendar-icon button.
  2454. $md-datepicker-border-bottom-gap: 5px !default; // Space between input and the grey underline.
  2455. $md-date-arrow-size: 5px !default; // Size of the triangle on the right side of the input.
  2456. $md-datepicker-open-animation-duration: 0.2s !default;
  2457. $md-datepicker-triangle-button-width: 36px !default;
  2458. $md-datepicker-input-mask-height: 40px !default;
  2459. $md-datepicker-button-padding: 8px !default;
  2460. md-datepicker {
  2461. // Don't let linebreaks happen between the open icon-button and the input.
  2462. white-space: nowrap;
  2463. overflow: hidden;
  2464. vertical-align: middle;
  2465. }
  2466. .md-inline-form {
  2467. md-datepicker {
  2468. margin-top: 12px;
  2469. }
  2470. }
  2471. // The calendar icon button used to open the calendar pane.
  2472. .md-datepicker-button {
  2473. display: inline-block;
  2474. box-sizing: border-box;
  2475. background: none;
  2476. vertical-align: middle;
  2477. position: relative;
  2478. // Captures any of the click events. This is necessary, because the button has a SVG
  2479. // icon which doesn't propagate the focus event, causing inconsistent behaviour.
  2480. &:before {
  2481. top: 0;
  2482. left: 0;
  2483. bottom: 0;
  2484. right: 0;
  2485. position: absolute;
  2486. content: '';
  2487. speak: none;
  2488. }
  2489. }
  2490. // The input into which the user can type the date.
  2491. .md-datepicker-input {
  2492. @include md-flat-input();
  2493. min-width: 120px;
  2494. max-width: $md-calendar-width - $md-datepicker-button-gap;
  2495. padding: 0 0 $md-datepicker-border-bottom-gap;
  2496. }
  2497. // If the datepicker is inside of a md-input-container
  2498. ._md-datepicker-floating-label {
  2499. > md-datepicker {
  2500. // Prevents the ripple on the triangle from being clipped.
  2501. overflow: visible;
  2502. .md-datepicker-input-container {
  2503. border: none;
  2504. }
  2505. .md-datepicker-button {
  2506. // Prevents the button from wrapping around, as well as it pushing
  2507. // down the error messages more than they should be.
  2508. @include rtl(float, left, right);
  2509. margin-top: $button-left-right-padding * -2;
  2510. top: $button-left-right-padding * 2 - $md-datepicker-border-bottom-gap / 2;
  2511. }
  2512. }
  2513. .md-input {
  2514. float: none;
  2515. }
  2516. &._md-datepicker-has-calendar-icon {
  2517. > label:not(.md-no-float):not(.md-container-ignore) {
  2518. $width-offset: $md-datepicker-triangle-button-width * 2 + $md-datepicker-button-gap;
  2519. $offset: $md-datepicker-triangle-button-width / 2;
  2520. @include rtl(right, $offset, auto);
  2521. @include rtl(left, auto, $offset);
  2522. width: calc(100% - #{$width-offset});
  2523. }
  2524. .md-input-message-animation {
  2525. $margin: $md-datepicker-triangle-button-width + $md-datepicker-button-padding * 2 + $md-datepicker-button-gap;
  2526. @include rtl-prop(margin-left, margin-right, $margin, auto);
  2527. }
  2528. }
  2529. }
  2530. ._md-datepicker-has-triangle-icon {
  2531. // Leave room for the down-triangle button to "overflow" it's parent without modifying scrollLeft.
  2532. // This prevents the element from shifting right when opening via the triangle button.
  2533. @include rtl-prop(padding-right, padding-left, $md-datepicker-triangle-button-width / 2, 0);
  2534. @include rtl-prop(margin-right, margin-left, -$md-datepicker-triangle-button-width / 2, auto);
  2535. }
  2536. // Container for the datepicker input.
  2537. .md-datepicker-input-container {
  2538. // Position relative in order to absolutely position the down-triangle button within.
  2539. position: relative;
  2540. border-bottom-width: 1px;
  2541. border-bottom-style: solid;
  2542. display: inline-block;
  2543. width: auto;
  2544. .md-icon-button + & {
  2545. @include rtl-prop(margin-left, margin-right, $md-datepicker-button-gap, auto);
  2546. }
  2547. &.md-datepicker-focused {
  2548. border-bottom-width: 2px;
  2549. }
  2550. }
  2551. .md-datepicker-is-showing .md-scroll-mask {
  2552. z-index: $z-index-calendar-pane - 1;
  2553. }
  2554. // Floating pane that contains the calendar at the bottom of the input.
  2555. .md-datepicker-calendar-pane {
  2556. // On most browsers the `scale(0)` below prevents this element from
  2557. // overflowing it's parent, however IE and Edge seem to disregard it.
  2558. // The `left: -100%` pulls the element back in order to ensure that
  2559. // it doesn't cause an overflow.
  2560. position: absolute;
  2561. top: 0;
  2562. left: -100%;
  2563. z-index: $z-index-calendar-pane;
  2564. border-width: 1px;
  2565. border-style: solid;
  2566. background: transparent;
  2567. transform: scale(0);
  2568. transform-origin: 0 0;
  2569. transition: transform $md-datepicker-open-animation-duration $swift-ease-out-timing-function;
  2570. &.md-pane-open {
  2571. transform: scale(1);
  2572. }
  2573. }
  2574. // Portion of the floating panel that sits, invisibly, on top of the input.
  2575. .md-datepicker-input-mask {
  2576. height: $md-datepicker-input-mask-height;
  2577. width: $md-calendar-width;
  2578. position: relative;
  2579. overflow: hidden;
  2580. background: transparent;
  2581. pointer-events: none;
  2582. cursor: text;
  2583. }
  2584. // The calendar portion of the floating pane (vs. the input mask).
  2585. .md-datepicker-calendar {
  2586. opacity: 0;
  2587. // Use a modified timing function (from swift-ease-out) so that the opacity part of the
  2588. // animation doesn't come in as quickly so that the floating pane doesn't ever seem to
  2589. // cover up the trigger input.
  2590. transition: opacity $md-datepicker-open-animation-duration cubic-bezier(0.5, 0, 0.25, 1);
  2591. .md-pane-open & {
  2592. opacity: 1;
  2593. }
  2594. md-calendar:focus {
  2595. outline: none;
  2596. }
  2597. }
  2598. // Down triangle/arrow indicating that the datepicker can be opened.
  2599. // We can do this entirely with CSS without needing to load an icon.
  2600. // See https://css-tricks.com/snippets/css/css-triangle/
  2601. .md-datepicker-expand-triangle {
  2602. // Center the triangle inside of the button so that the
  2603. // ink ripple origin looks correct.
  2604. position: absolute;
  2605. top: 50%;
  2606. left: 50%;
  2607. transform: translate(-50%, -50%);
  2608. width: 0;
  2609. height: 0;
  2610. border-left: $md-date-arrow-size solid transparent;
  2611. border-right: $md-date-arrow-size solid transparent;
  2612. border-top: $md-date-arrow-size solid;
  2613. }
  2614. // Button containing the down "disclosure" triangle/arrow.
  2615. .md-datepicker-triangle-button {
  2616. position: absolute;
  2617. @include rtl-prop(right, left, 0, auto);
  2618. bottom: -$md-date-arrow-size / 2;
  2619. // TODO(jelbourn): This position isn't great on all platforms.
  2620. @include rtl(transform, translateX(45%), translateX(-45%));
  2621. }
  2622. // Need crazy specificity to override .md-button.md-icon-button.
  2623. // Only apply this high specificity to the property we need to override.
  2624. .md-datepicker-triangle-button.md-button.md-icon-button {
  2625. height: $md-datepicker-triangle-button-width;
  2626. width: $md-datepicker-triangle-button-width;
  2627. position: absolute;
  2628. padding: $md-datepicker-button-padding;
  2629. }
  2630. // Disabled state for all elements of the picker.
  2631. md-datepicker[disabled] {
  2632. .md-datepicker-input-container {
  2633. border-bottom-color: transparent;
  2634. }
  2635. .md-datepicker-triangle-button {
  2636. display: none;
  2637. }
  2638. }
  2639. // Open state for all of the elements of the picker.
  2640. .md-datepicker-open {
  2641. overflow: hidden;
  2642. .md-datepicker-input-container,
  2643. input.md-input {
  2644. border-bottom-color: transparent;
  2645. }
  2646. .md-datepicker-triangle-button,
  2647. &.md-input-has-value > label,
  2648. &.md-input-has-placeholder > label {
  2649. display: none;
  2650. }
  2651. }
  2652. // When the position of the floating calendar pane is adjusted to remain inside
  2653. // of the viewport, hide the inputput mask, as the text input will no longer be
  2654. // directly underneath it.
  2655. .md-datepicker-pos-adjusted .md-datepicker-input-mask {
  2656. display: none;
  2657. }
  2658. // Animate the calendar inside of the floating calendar pane such that it appears to "scroll" into
  2659. // view while the pane is opening. This is done as a cue to users that the calendar is scrollable.
  2660. .md-datepicker-calendar-pane {
  2661. .md-calendar {
  2662. transform: translateY(-85px);
  2663. transition: transform 0.65s $swift-ease-out-timing-function;
  2664. transition-delay: 0.125s;
  2665. }
  2666. &.md-pane-open .md-calendar {
  2667. transform: translateY(0);
  2668. }
  2669. }
  2670. $dialog-padding: $baseline-grid * 3 !default;
  2671. .md-dialog-is-showing {
  2672. max-height: 100%;
  2673. }
  2674. .md-dialog-container {
  2675. display: flex;
  2676. justify-content: center;
  2677. align-items: center;
  2678. position: absolute;
  2679. top: 0;
  2680. left: 0;
  2681. width: 100%;
  2682. height: 100%;
  2683. z-index: $z-index-dialog;
  2684. overflow: hidden;
  2685. }
  2686. md-dialog {
  2687. &.md-transition-in {
  2688. opacity: 1;
  2689. transition: $swift-ease-out;
  2690. transform: translate(0,0) scale(1.0);
  2691. }
  2692. &.md-transition-out {
  2693. opacity: 0;
  2694. transition: $swift-ease-out;
  2695. transform: translate(0,100%) scale(0.2);
  2696. }
  2697. opacity: 0;
  2698. min-width: 240px;
  2699. max-width: 80%;
  2700. max-height: 80%;
  2701. position: relative;
  2702. overflow: auto; // stop content from leaking out of dialog parent and fix IE
  2703. box-shadow: $whiteframe-shadow-13dp;
  2704. display: flex;
  2705. flex-direction: column;
  2706. &> form {
  2707. display: flex;
  2708. flex-direction: column;
  2709. overflow: auto;
  2710. }
  2711. .md-dialog-content {
  2712. padding: $dialog-padding;
  2713. }
  2714. md-dialog-content {
  2715. order: 1;
  2716. flex-direction: column;
  2717. overflow: auto;
  2718. -webkit-overflow-scrolling: touch;
  2719. &:not([layout=row]) > *:first-child:not(.md-subheader) {
  2720. margin-top: 0;
  2721. }
  2722. &:focus {
  2723. outline: none;
  2724. }
  2725. .md-subheader {
  2726. margin: 0;
  2727. }
  2728. .md-dialog-content-body {
  2729. width:100%;
  2730. }
  2731. .md-prompt-input-container {
  2732. width: 100%;
  2733. box-sizing: border-box;
  2734. }
  2735. }
  2736. .md-actions, md-dialog-actions {
  2737. display: flex;
  2738. order: 2;
  2739. box-sizing: border-box;
  2740. align-items: center;
  2741. justify-content: flex-end;
  2742. margin-bottom: 0;
  2743. @include rtl(padding-right, $baseline-grid, $baseline-grid * 2);
  2744. @include rtl(padding-left, $baseline-grid * 2, $baseline-grid);
  2745. min-height: $baseline-grid * 6.5;
  2746. overflow: hidden;
  2747. .md-button {
  2748. margin-bottom: $baseline-grid;
  2749. @include rtl(margin-left, $baseline-grid, 0);
  2750. @include rtl(margin-right, 0, $baseline-grid);
  2751. margin-top: $baseline-grid;
  2752. }
  2753. }
  2754. &.md-content-overflow {
  2755. .md-actions, md-dialog-actions {
  2756. border-top-width: 1px;
  2757. border-top-style: solid;
  2758. }
  2759. }
  2760. }
  2761. @media screen and (-ms-high-contrast: active) {
  2762. md-dialog {
  2763. border: 1px solid #fff;
  2764. }
  2765. }
  2766. @media (max-width: $layout-breakpoint-sm - 1) {
  2767. md-dialog.md-dialog-fullscreen {
  2768. min-height: 100%;
  2769. min-width: 100%;
  2770. border-radius: 0;
  2771. }
  2772. }
  2773. $button-fab-width: rem(5.600) !default;
  2774. $icon-button-margin: rem(0.600) !default;
  2775. md-fab-toolbar {
  2776. $icon-delay: 200ms;
  2777. // Include the top/left/bottom/right fab positions
  2778. @include fab-all-positions();
  2779. display: block;
  2780. /*
  2781. * Closed styling
  2782. */
  2783. .md-fab-toolbar-wrapper {
  2784. display: block;
  2785. position: relative;
  2786. overflow: hidden;
  2787. // Account for the size of the trigger plus its margin/shadow
  2788. height: $button-fab-width + ($icon-button-margin * 2);
  2789. }
  2790. md-fab-trigger {
  2791. position: absolute;
  2792. z-index: $z-index-fab;
  2793. button {
  2794. overflow: visible !important;
  2795. }
  2796. .md-fab-toolbar-background {
  2797. display: block;
  2798. position: absolute;
  2799. z-index: $z-index-fab + 1;
  2800. opacity: 1;
  2801. transition: $swift-ease-in;
  2802. }
  2803. md-icon {
  2804. position: relative;
  2805. z-index: $z-index-fab + 2;
  2806. opacity: 1;
  2807. // Hide the icon very quickly
  2808. transition: all $icon-delay ease-in;
  2809. }
  2810. }
  2811. &.md-left {
  2812. md-fab-trigger {
  2813. @include rtl-prop(right, left, 0, auto);
  2814. }
  2815. .md-toolbar-tools {
  2816. flex-direction: row-reverse;
  2817. > .md-button:first-child {
  2818. @include rtl-prop(margin-right, margin-left, 0.6rem, auto)
  2819. }
  2820. > .md-button:first-child {
  2821. @include rtl-prop(margin-left, margin-right, -0.8rem, auto);
  2822. }
  2823. > .md-button:last-child {
  2824. @include rtl-prop(margin-right, margin-left, 8px, auto);
  2825. }
  2826. }
  2827. }
  2828. &.md-right {
  2829. md-fab-trigger {
  2830. @include rtl-prop(left, right, 0, auto);
  2831. }
  2832. .md-toolbar-tools {
  2833. flex-direction: row;
  2834. }
  2835. }
  2836. md-toolbar {
  2837. background-color: transparent !important;
  2838. pointer-events: none;
  2839. z-index: $z-index-fab + 3;
  2840. .md-toolbar-tools {
  2841. // Fix some spacing issues with the icons and the trigger
  2842. padding: 0 20px;
  2843. margin-top: 3px;
  2844. }
  2845. .md-fab-action-item {
  2846. opacity: 0;
  2847. transform: scale(0);
  2848. transition: $swift-ease-in;
  2849. // Cut the action item's animation time in half since we delay it in the JS
  2850. transition-duration: $swift-ease-in-duration / 2;
  2851. }
  2852. }
  2853. /*
  2854. * Hover styling
  2855. */
  2856. &.md-is-open {
  2857. md-fab-trigger > button {
  2858. box-shadow: none;
  2859. md-icon {
  2860. opacity: 0;
  2861. }
  2862. }
  2863. .md-fab-action-item {
  2864. opacity: 1;
  2865. transform: scale(1);
  2866. }
  2867. }
  2868. }
  2869. md-grid-list {
  2870. box-sizing: border-box;
  2871. display: block;
  2872. position: relative;
  2873. md-grid-tile,
  2874. md-grid-tile > figure,
  2875. md-grid-tile-header,
  2876. md-grid-tile-footer {
  2877. box-sizing: border-box;
  2878. }
  2879. md-grid-tile {
  2880. display: block;
  2881. position: absolute;
  2882. figure {
  2883. display: flex;
  2884. align-items: center;
  2885. justify-content: center;
  2886. height: 100%;
  2887. position: absolute;
  2888. top: 0;
  2889. right: 0;
  2890. bottom: 0;
  2891. left: 0;
  2892. padding: 0;
  2893. margin: 0;
  2894. }
  2895. // Headers & footers
  2896. md-grid-tile-header,
  2897. md-grid-tile-footer {
  2898. display: flex;
  2899. flex-direction: row;
  2900. align-items: center;
  2901. height: 48px;
  2902. color: #fff;
  2903. background: rgba(0, 0, 0, 0.18);
  2904. overflow: hidden;
  2905. // Positioning
  2906. position: absolute;
  2907. left: 0;
  2908. right: 0;
  2909. h3,
  2910. h4 {
  2911. font-weight: 400;
  2912. margin: 0 0 0 16px;
  2913. }
  2914. h3 {
  2915. font-size: 14px;
  2916. }
  2917. h4 {
  2918. font-size: 12px;
  2919. }
  2920. }
  2921. md-grid-tile-header {
  2922. top: 0;
  2923. }
  2924. md-grid-tile-footer {
  2925. bottom: 0;
  2926. }
  2927. }
  2928. }
  2929. @media screen and (-ms-high-contrast: active) {
  2930. md-grid-tile {
  2931. border: 1px solid #fff;
  2932. }
  2933. md-grid-tile-footer {
  2934. border-top: 1px solid #fff;
  2935. }
  2936. }
  2937. $dense-baseline-grid: $baseline-grid / 2 !default;
  2938. $list-h3-margin: 0 0 0px 0 !default;
  2939. $list-h4-margin: 3px 0 1px 0 !default;
  2940. $list-h4-font-weight: 400 !default;
  2941. $list-header-line-height: 1.2em !default;
  2942. $list-p-margin: 0 0 0 0 !default;
  2943. $list-p-line-height: 1.6em !default;
  2944. $list-padding-top: $baseline-grid !default;
  2945. $list-padding-right: 0px !default;
  2946. $list-padding-left: 0px !default;
  2947. $list-padding-bottom: $baseline-grid !default;
  2948. $item-padding-top: 0px !default;
  2949. $item-padding-right: 0px !default;
  2950. $item-padding-left: 0px !default;
  2951. $item-padding-bottom: 0px !default;
  2952. $list-item-padding-vertical: 0px !default;
  2953. $list-item-padding-horizontal: $baseline-grid * 2 !default;
  2954. $list-item-primary-width: $baseline-grid * 7 !default;
  2955. $list-item-primary-avatar-width: $baseline-grid * 5 !default;
  2956. $list-item-primary-icon-width: $baseline-grid * 3 !default;
  2957. $list-item-secondary-left-margin: $baseline-grid * 2 !default;
  2958. $list-item-secondary-button-width: $baseline-grid * 6 !default;
  2959. $list-item-inset-divider-offset: 9 * $baseline-grid !default;
  2960. $list-item-height: 6 * $baseline-grid !default;
  2961. $list-item-two-line-height: 9 * $baseline-grid !default;
  2962. $list-item-three-line-height: 11 * $baseline-grid !default;
  2963. $list-item-dense-height: 12 * $dense-baseline-grid !default;
  2964. $list-item-dense-two-line-height: 15 * $dense-baseline-grid !default;
  2965. $list-item-dense-three-line-height: 19 * $dense-baseline-grid !default;
  2966. $list-item-dense-primary-icon-width: $dense-baseline-grid * 5 !default;
  2967. $list-item-dense-primary-avatar-width: $dense-baseline-grid * 9 !default;
  2968. $list-item-dense-header-font-size: round($subhead-font-size-base * 0.8) !default;
  2969. $list-item-dense-font-size: round($body-font-size-base * 0.85) !default;
  2970. $list-item-dense-line-height: 1.05 !default;
  2971. md-list {
  2972. display: block;
  2973. padding: $list-padding-top $list-padding-right $list-padding-bottom $list-padding-left;
  2974. .md-subheader {
  2975. font-size: $body-font-size-base;
  2976. font-weight: 500;
  2977. letter-spacing: 0.010em;
  2978. line-height: $list-header-line-height;
  2979. }
  2980. &.md-dense {
  2981. md-list-item {
  2982. &,
  2983. .md-list-item-inner {
  2984. min-height: $list-item-dense-height;
  2985. @include ie11-min-height-flexbug($list-item-dense-height);
  2986. // Layout for controls in primary or secondary divs, or auto-infered first child
  2987. md-icon:first-child {
  2988. width: $list-item-dense-primary-icon-width;
  2989. height: $list-item-dense-primary-icon-width;
  2990. }
  2991. > md-icon:first-child:not(.md-avatar-icon) {
  2992. @include rtl-prop(margin-right, margin-left, $list-item-primary-width - $list-item-dense-primary-icon-width, auto);
  2993. }
  2994. .md-avatar, .md-avatar-icon {
  2995. @include rtl-prop(margin-right, margin-left, $list-item-primary-width - $list-item-dense-primary-avatar-width, auto);
  2996. }
  2997. .md-avatar {
  2998. flex: none;
  2999. width: $list-item-dense-primary-avatar-width;
  3000. height: $list-item-dense-primary-avatar-width;
  3001. }
  3002. }
  3003. &.md-2-line,
  3004. &.md-3-line {
  3005. &, & > .md-no-style {
  3006. .md-list-item-text {
  3007. &.md-offset {
  3008. @include rtl-prop(margin-left, margin-right, $list-item-primary-width, auto);
  3009. }
  3010. h3,
  3011. h4,
  3012. p {
  3013. line-height: $list-item-dense-line-height;
  3014. font-size: $list-item-dense-font-size;
  3015. }
  3016. h3 {
  3017. font-size: $list-item-dense-header-font-size;
  3018. }
  3019. }
  3020. }
  3021. }
  3022. &.md-2-line {
  3023. &, & > .md-no-style {
  3024. min-height: $list-item-dense-two-line-height;
  3025. @include ie11-min-height-flexbug($list-item-dense-two-line-height);
  3026. > .md-avatar, .md-avatar-icon {
  3027. margin-top: $baseline-grid * 1.5;
  3028. }
  3029. }
  3030. }
  3031. &.md-3-line {
  3032. &, & > .md-no-style {
  3033. min-height: $list-item-dense-three-line-height;
  3034. @include ie11-min-height-flexbug($list-item-dense-three-line-height);
  3035. > md-icon:first-child,
  3036. > .md-avatar {
  3037. margin-top: $baseline-grid * 2;
  3038. }
  3039. }
  3040. }
  3041. }
  3042. }
  3043. }
  3044. md-list-item {
  3045. // Ensure nested dividers are properly positioned
  3046. position: relative;
  3047. &.md-proxy-focus.md-focused .md-no-style {
  3048. transition: background-color 0.15s linear;
  3049. }
  3050. &._md-button-wrap {
  3051. position: relative;
  3052. > div.md-button:first-child {
  3053. // Layout - Vertically align the item content.
  3054. display: flex;
  3055. align-items: center;
  3056. justify-content: flex-start;
  3057. padding: 0 16px;
  3058. margin: 0;
  3059. font-weight: 400;
  3060. @include rtl(text-align, left, right);
  3061. border: medium none;
  3062. // The button executor should fill the whole list item.
  3063. > .md-button:first-child {
  3064. position: absolute;
  3065. top: 0;
  3066. left: 0;
  3067. height: 100%;
  3068. margin: 0;
  3069. padding: 0;
  3070. }
  3071. .md-list-item-inner {
  3072. // The list item content should fill the complete width.
  3073. width: 100%;
  3074. min-height: inherit;
  3075. }
  3076. }
  3077. }
  3078. &.md-no-proxy,
  3079. .md-no-style {
  3080. position: relative;
  3081. padding: $list-item-padding-vertical $list-item-padding-horizontal;
  3082. // Layout [flex='auto']
  3083. flex: 1 1 auto;
  3084. &.md-button {
  3085. font-size: inherit;
  3086. height: inherit;
  3087. @include rtl(text-align, left, right);
  3088. text-transform: none;
  3089. width: 100%;
  3090. white-space: normal;
  3091. flex-direction: inherit;
  3092. align-items: inherit;
  3093. border-radius: 0;
  3094. margin: 0;
  3095. & > .md-ripple-container {
  3096. border-radius: 0;
  3097. }
  3098. }
  3099. &:focus {
  3100. outline: none
  3101. }
  3102. }
  3103. &.md-clickable:hover {
  3104. cursor: pointer;
  3105. }
  3106. md-divider {
  3107. position: absolute;
  3108. bottom: 0;
  3109. @include rtl-prop(left, right, 0, auto);
  3110. width: 100%;
  3111. &[md-inset] {
  3112. @include rtl-prop(left, right, $list-item-inset-divider-offset, auto);
  3113. width: calc(100% - #{$list-item-inset-divider-offset});
  3114. margin: 0 !important;
  3115. }
  3116. }
  3117. &,
  3118. .md-list-item-inner {
  3119. // Layout [flex layout-align='start center']
  3120. display: flex;
  3121. justify-content: flex-start;
  3122. align-items: center;
  3123. min-height: $list-item-height;
  3124. @include ie11-min-height-flexbug($list-item-height);
  3125. height: auto;
  3126. // Layout for controls in primary or secondary divs, or auto-infered first child
  3127. & > div.md-primary > md-icon:not(.md-avatar-icon),
  3128. & > div.md-secondary > md-icon:not(.md-avatar-icon),
  3129. & > md-icon:first-child:not(.md-avatar-icon),
  3130. > md-icon.md-secondary:not(.md-avatar-icon) {
  3131. width: $list-item-primary-icon-width;
  3132. margin-top: 16px;
  3133. margin-bottom: 12px;
  3134. box-sizing: content-box;
  3135. }
  3136. & > div.md-primary > md-checkbox,
  3137. & > div.md-secondary > md-checkbox,
  3138. & > md-checkbox,
  3139. md-checkbox.md-secondary {
  3140. align-self: center;
  3141. .md-label {
  3142. display: none;
  3143. }
  3144. }
  3145. & > md-icon:first-child:not(.md-avatar-icon) {
  3146. @include rtl-prop(margin-right, margin-left, $list-item-primary-width - $list-item-primary-icon-width, auto);
  3147. }
  3148. & .md-avatar, .md-avatar-icon {
  3149. margin-top: $baseline-grid;
  3150. margin-bottom: $baseline-grid;
  3151. @include rtl-prop(margin-right, margin-left, $list-item-primary-width - $list-item-primary-avatar-width, auto);
  3152. border-radius: 50%;
  3153. box-sizing: content-box;
  3154. }
  3155. & .md-avatar {
  3156. flex: none;
  3157. width: $list-item-primary-avatar-width;
  3158. height: $list-item-primary-avatar-width;
  3159. }
  3160. & .md-avatar-icon {
  3161. padding: 8px;
  3162. // Set the width/height to the same as the icon to fix issue on iOS Safari where the
  3163. // height: 100% was causing it to be larger than it's parent
  3164. svg {
  3165. width: $icon-size;
  3166. height: $icon-size;
  3167. }
  3168. }
  3169. & > md-checkbox {
  3170. width: 3 * $baseline-grid;
  3171. @include rtl(margin-left, 3px, 29px);
  3172. @include rtl(margin-right, 29px, 3px);
  3173. margin-top: 16px;
  3174. }
  3175. .md-secondary-container {
  3176. display: flex;
  3177. align-items: center;
  3178. // Per W3C: https://www.w3.org/TR/css-flexbox/#flex-common
  3179. // By default, flex items won’t shrink below their minimum content size.
  3180. // Safari doesn't follow that specification due to a bug and expects the developer to
  3181. // explicitly disable flex shrinking.
  3182. flex-shrink: 0;
  3183. // Using margin auto to move them to the end of the list item is more elegant, because it has
  3184. // a lower priority than a flex filler and isn't introducing any overflow issues.
  3185. // The margin on the top is important to align multiple secondary items vertically.
  3186. margin: auto;
  3187. @include rtl(margin-right, 0, auto);
  3188. @include rtl(margin-left, auto, 0);
  3189. .md-button, .md-icon-button {
  3190. &:last-of-type {
  3191. // Reset 6px margin for the button.
  3192. @include rtl-prop(margin-right, margin-left, 0, auto);
  3193. }
  3194. }
  3195. md-checkbox {
  3196. margin-top: 0;
  3197. margin-bottom: 0;
  3198. &:last-child {
  3199. width: 3 * $baseline-grid;
  3200. @include rtl-prop(margin-right, margin-left, 0, auto);
  3201. }
  3202. }
  3203. md-switch {
  3204. margin-top: 0;
  3205. margin-bottom: 0;
  3206. @include rtl-prop(margin-right, margin-left, -6px, auto);
  3207. }
  3208. }
  3209. & > p, & > .md-list-item-inner > p {
  3210. flex: 1 1 auto;
  3211. margin: 0;
  3212. }
  3213. }
  3214. &.md-2-line,
  3215. &.md-3-line {
  3216. &, & > .md-no-style {
  3217. align-items: flex-start;
  3218. justify-content: center;
  3219. &.md-long-text {
  3220. margin-top: $baseline-grid;
  3221. margin-bottom: $baseline-grid;
  3222. }
  3223. .md-list-item-text {
  3224. flex: 1 1 auto;
  3225. margin: auto;
  3226. text-overflow: ellipsis;
  3227. overflow: hidden;
  3228. &.md-offset {
  3229. @include rtl-prop(margin-left, margin-right, $list-item-primary-width, auto);
  3230. }
  3231. h3 {
  3232. font-size: $subhead-font-size-base;
  3233. font-weight: 400;
  3234. letter-spacing: 0.010em;
  3235. margin: $list-h3-margin;
  3236. line-height: $list-header-line-height;
  3237. overflow: hidden;
  3238. white-space: nowrap;
  3239. text-overflow: ellipsis;
  3240. }
  3241. h4 {
  3242. font-size: $body-font-size-base;
  3243. letter-spacing: 0.010em;
  3244. margin: $list-h4-margin;
  3245. font-weight: $list-h4-font-weight;
  3246. line-height: $list-header-line-height;
  3247. overflow: hidden;
  3248. white-space: nowrap;
  3249. text-overflow: ellipsis;
  3250. }
  3251. p {
  3252. font-size: $body-font-size-base;
  3253. font-weight: 500;
  3254. letter-spacing: 0.010em;
  3255. margin: $list-p-margin;
  3256. line-height: $list-p-line-height;
  3257. }
  3258. }
  3259. }
  3260. }
  3261. &.md-2-line {
  3262. &, & > .md-no-style {
  3263. height: auto;
  3264. min-height: $list-item-two-line-height;
  3265. @include ie11-min-height-flexbug($list-item-two-line-height);
  3266. > .md-avatar, .md-avatar-icon {
  3267. margin-top: $baseline-grid * 1.5;
  3268. }
  3269. > md-icon:first-child {
  3270. align-self: flex-start;
  3271. }
  3272. .md-list-item-text {
  3273. flex: 1 1 auto;
  3274. }
  3275. }
  3276. }
  3277. &.md-3-line {
  3278. &, & > .md-no-style {
  3279. height: auto;
  3280. min-height: $list-item-three-line-height;
  3281. @include ie11-min-height-flexbug($list-item-three-line-height);
  3282. > md-icon:first-child,
  3283. > .md-avatar {
  3284. margin-top: $baseline-grid * 2;
  3285. }
  3286. }
  3287. }
  3288. }
  3289. md-toolbar {
  3290. &.md-menu-toolbar {
  3291. h2.md-toolbar-tools {
  3292. line-height: 1rem;
  3293. height: auto;
  3294. padding: 3.5 * $baseline-grid;
  3295. padding-bottom: 1.5 * $baseline-grid;
  3296. }
  3297. }
  3298. // Used to allow hovering from one menu to the
  3299. // next when inside of a toolbar.
  3300. &.md-has-open-menu {
  3301. position: relative;
  3302. z-index: $z-index-menu;
  3303. }
  3304. }
  3305. md-menu-bar {
  3306. padding: 0 2.5 * $baseline-grid;
  3307. display: block;
  3308. position: relative;
  3309. z-index: 2;
  3310. .md-menu {
  3311. display: inline-block;
  3312. padding: 0;
  3313. position: relative;
  3314. }
  3315. button {
  3316. font-size: rem(1.4);
  3317. padding: 0 1.25 * $baseline-grid;
  3318. margin: 0;
  3319. border: 0;
  3320. background-color: transparent;
  3321. height: 5 * $baseline-grid;
  3322. }
  3323. md-backdrop.md-menu-backdrop {
  3324. z-index: -2;
  3325. }
  3326. }
  3327. md-menu-content.md-menu-bar-menu.md-dense {
  3328. max-height: none;
  3329. padding: 2 * $baseline-grid 0;
  3330. md-menu-item.md-indent {
  3331. position: relative;
  3332. > md-icon {
  3333. position: absolute;
  3334. padding: 0;
  3335. width: 24px;
  3336. top: 0.75 * $baseline-grid;
  3337. @include rtl-prop(left, right, 3 * $baseline-grid, auto);
  3338. }
  3339. > .md-button, .md-menu > .md-button {
  3340. @include rtl(padding, 0 4 * $baseline-grid 0 8 * $baseline-grid, 0 8 * $baseline-grid 0 4 * $baseline-grid);
  3341. }
  3342. }
  3343. .md-button {
  3344. min-height: 0;
  3345. height: 4 * $baseline-grid;
  3346. span {
  3347. @include rtl(float, left, right);
  3348. }
  3349. span.md-alt-text {
  3350. @include rtl(float, right, left);
  3351. margin: 0 $baseline-grid;
  3352. }
  3353. }
  3354. md-menu-divider {
  3355. margin: $baseline-grid 0;
  3356. }
  3357. md-menu-item > .md-button, .md-menu > .md-button {
  3358. @include rtl(text-align, left, right);
  3359. }
  3360. .md-menu {
  3361. padding: 0;
  3362. > .md-button {
  3363. position: relative;
  3364. margin: 0;
  3365. width: 100%;
  3366. text-transform: none;
  3367. font-weight: normal;
  3368. border-radius: 0px;
  3369. @include rtl-prop(padding-left, padding-right, 2 * $baseline-grid, 0);
  3370. &:after {
  3371. display: block;
  3372. content: '\25BC';
  3373. position: absolute;
  3374. top: 0px;
  3375. speak: none;
  3376. @include rtl(transform, rotate(270deg) scaleY(0.45) scaleX(0.9), rotate(90deg) scaleY(0.45) scaleX(0.9));
  3377. @include rtl-prop(right, left, 3.5 * $baseline-grid, auto);
  3378. }
  3379. }
  3380. }
  3381. }
  3382. /** Matches "md-tabs md-tabs-wrapper" style. */
  3383. $md-nav-bar-height: 48px;
  3384. .md-nav-bar {
  3385. border-style: solid;
  3386. border-width: 0 0 1px;
  3387. height: $md-nav-bar-height;
  3388. position: relative;
  3389. }
  3390. ._md-nav-bar-list {
  3391. outline: none;
  3392. list-style: none;
  3393. margin: 0;
  3394. padding: 0;
  3395. // Layout [layout='row']
  3396. box-sizing: border-box;
  3397. display: flex;
  3398. flex-direction: row;
  3399. }
  3400. .md-nav-item:first-of-type {
  3401. margin-left: 8px;
  3402. }
  3403. // override button styles to look more like tabs
  3404. .md-button._md-nav-button {
  3405. line-height: 24px;
  3406. margin: 0 4px;
  3407. padding: 12px 16px;
  3408. transition: background-color 0.35s $swift-ease-in-out-timing-function;
  3409. &:focus {
  3410. outline: none;
  3411. }
  3412. &:hover {
  3413. background-color: inherit;
  3414. }
  3415. }
  3416. md-nav-ink-bar {
  3417. $duration: $swift-ease-in-out-duration * 0.5;
  3418. $multiplier: 0.5;
  3419. bottom: 0;
  3420. height: 2px;
  3421. left: auto;
  3422. position: absolute;
  3423. right: auto;
  3424. background-color: black;
  3425. &._md-left {
  3426. transition: left ($duration * $multiplier) $swift-ease-in-out-timing-function,
  3427. right $duration $swift-ease-in-out-timing-function;
  3428. }
  3429. &._md-right {
  3430. transition: left $duration $swift-ease-in-out-timing-function,
  3431. right ($duration * $multiplier) $swift-ease-in-out-timing-function;
  3432. }
  3433. // By default $ngAnimate looks for transition durations on the element, when using ng-hide, ng-if, ng-show.
  3434. // The ink bar has a transition duration applied, which means, that $ngAnimate delays the hide process.
  3435. // To avoid this, we need to reset the transition, when $ngAnimate looks for the duration.
  3436. &.ng-animate {
  3437. transition: none;
  3438. }
  3439. }
  3440. md-nav-extra-content {
  3441. min-height: 48px;
  3442. padding-right: 12px;
  3443. }
  3444. $input-container-padding: 2px !default;
  3445. $input-label-default-offset: 24px !default;
  3446. $input-label-default-scale: 1.0 !default;
  3447. $input-label-float-offset: 6px !default;
  3448. $input-label-float-scale: 0.75 !default;
  3449. $input-label-float-width: $input-container-padding + 16px !default;
  3450. $input-placeholder-offset: $input-label-default-offset !default;
  3451. $input-border-width-default: 1px !default;
  3452. $input-border-width-focused: 2px !default;
  3453. $input-line-height: 26px !default;
  3454. $input-padding-top: 2px !default;
  3455. $input-error-font-size: 12px !default;
  3456. $input-error-height: 24px !default;
  3457. $input-error-line-height: $input-error-font-size + 2px !default;
  3458. $error-padding-top: ($input-error-height - $input-error-line-height) / 2 !default;
  3459. $icon-offset: 36px !default;
  3460. $icon-top-offset: ($icon-offset - $input-padding-top - $input-border-width-focused) / 4 !default;
  3461. $icon-float-focused-top: -8px !default;
  3462. $input-resize-handle-height: 10px !default;
  3463. md-input-container {
  3464. @include pie-clearfix();
  3465. display: inline-block;
  3466. position: relative;
  3467. padding: $input-container-padding;
  3468. margin: 18px 0;
  3469. vertical-align: middle;
  3470. &.md-block {
  3471. display: block;
  3472. }
  3473. // Setup a spacer that is always there as a placeholder for any messages so we don't change
  3474. // height with only 1 message
  3475. .md-errors-spacer {
  3476. @include rtl(float, right, left);
  3477. min-height: $input-error-height;
  3478. // Ensure the element always takes up space, even if empty
  3479. min-width: 1px;
  3480. }
  3481. > md-icon {
  3482. position: absolute;
  3483. top: $icon-top-offset;
  3484. @include rtl(left, 2px, auto);
  3485. @include rtl(right, auto, 2px);
  3486. }
  3487. textarea,
  3488. input[type="text"],
  3489. input[type="password"],
  3490. input[type="datetime"],
  3491. input[type="datetime-local"],
  3492. input[type="date"],
  3493. input[type="month"],
  3494. input[type="time"],
  3495. input[type="week"],
  3496. input[type="number"],
  3497. input[type="email"],
  3498. input[type="url"],
  3499. input[type="search"],
  3500. input[type="tel"],
  3501. input[type="color"] {
  3502. /* remove default appearance from all input/textarea */
  3503. -moz-appearance: none;
  3504. -webkit-appearance: none;
  3505. }
  3506. input[type="date"],
  3507. input[type="datetime-local"],
  3508. input[type="month"],
  3509. input[type="time"],
  3510. input[type="week"] {
  3511. min-height: $input-line-height;
  3512. }
  3513. textarea {
  3514. resize: none;
  3515. overflow: hidden;
  3516. &.md-input {
  3517. min-height: $input-line-height;
  3518. -ms-flex-preferred-size: auto; //IE fix
  3519. }
  3520. // The height usually gets set to 1 line by `.md-input`.
  3521. &[md-no-autogrow] {
  3522. height: auto;
  3523. overflow: auto;
  3524. }
  3525. }
  3526. label:not(.md-container-ignore) {
  3527. position: absolute;
  3528. bottom: 100%;
  3529. @include rtl(left, 0, auto);
  3530. @include rtl(right, auto, 0);
  3531. &.md-required:after {
  3532. content: ' *';
  3533. font-size: 13px;
  3534. vertical-align: top;
  3535. }
  3536. }
  3537. label:not(.md-no-float):not(.md-container-ignore),
  3538. .md-placeholder {
  3539. overflow: hidden;
  3540. text-overflow: ellipsis;
  3541. white-space: nowrap;
  3542. width: 100%;
  3543. order: 1;
  3544. pointer-events: none;
  3545. -webkit-font-smoothing: antialiased;
  3546. @include rtl(padding-left, $input-container-padding + 1px, 0);
  3547. @include rtl(padding-right, 0, $input-container-padding + 1px);
  3548. z-index: 1;
  3549. transform: translate3d(0, $input-label-default-offset + 4, 0) scale($input-label-default-scale);
  3550. transition: transform $swift-ease-out-duration $swift-ease-out-timing-function;
  3551. // The max-width is necessary, because in some browsers, using this together with
  3552. // a calc might cause it to overflow the parent. See #7403
  3553. max-width: 100%;
  3554. @include rtl(transform-origin, left top, right top);
  3555. }
  3556. .md-placeholder {
  3557. position: absolute;
  3558. top: 0;
  3559. opacity: 0;
  3560. transition-property: opacity, transform;
  3561. transform: translate3d(0, $input-placeholder-offset + $baseline-grid * 0.75, 0);
  3562. }
  3563. &.md-input-focused .md-placeholder {
  3564. opacity: 1;
  3565. transform: translate3d(0, $input-placeholder-offset, 0);
  3566. }
  3567. // Placeholder should immediately disappear when the user starts typing
  3568. &.md-input-has-value .md-placeholder {
  3569. transition: none;
  3570. opacity: 0;
  3571. }
  3572. &:not( .md-input-has-value ) input:not( :focus ),
  3573. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-ampm-field,
  3574. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-day-field,
  3575. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-hour-field,
  3576. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-millisecond-field,
  3577. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-minute-field,
  3578. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-month-field,
  3579. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-second-field,
  3580. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-week-field,
  3581. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-year-field,
  3582. &:not( .md-input-has-value ) input:not( :focus )::-webkit-datetime-edit-text {
  3583. color: transparent;
  3584. }
  3585. /*
  3586. * The .md-input class is added to the input/textarea
  3587. */
  3588. .md-input {
  3589. order: 2;
  3590. display: block;
  3591. margin-top: 0;
  3592. background: none;
  3593. padding-top: $input-padding-top;
  3594. padding-bottom: $input-border-width-focused - $input-border-width-default;
  3595. padding-left: 2px;
  3596. padding-right: 2px;
  3597. border-width: 0 0 $input-border-width-default 0;
  3598. line-height: $input-line-height;
  3599. height: $input-line-height + ($input-padding-top * 2);
  3600. -ms-flex-preferred-size: $input-line-height; //IE fix
  3601. border-radius: 0;
  3602. border-style: solid; // Firefox fix
  3603. // Fix number inputs in Firefox to be full-width
  3604. width: 100%;
  3605. box-sizing: border-box;
  3606. // Hacky fix to force vertical alignment between `input` and `textarea`
  3607. // Input and textarea do not align by default:
  3608. // http://jsbin.com/buqomevage/1/edit?html,css,js,output
  3609. @include rtl(float, left, right);
  3610. &:focus {
  3611. outline: none;
  3612. }
  3613. &:invalid {
  3614. outline: none;
  3615. box-shadow: none;
  3616. }
  3617. &.md-no-flex {
  3618. flex: none !important;
  3619. }
  3620. }
  3621. .md-char-counter {
  3622. @include rtl(text-align, right, left);
  3623. @include rtl(padding-right, $input-container-padding, 0);
  3624. @include rtl(padding-left, 0, $input-container-padding);
  3625. }
  3626. //
  3627. // ngMessage base styles - animations moved to input.js
  3628. //
  3629. .md-input-messages-animation {
  3630. position: relative;
  3631. order: 4;
  3632. overflow: hidden;
  3633. @include rtl(clear, left, right);
  3634. &.ng-enter {
  3635. // Upon entering the DOM, messages should be hidden
  3636. .md-input-message-animation {
  3637. opacity: 0;
  3638. margin-top: -100px;
  3639. }
  3640. }
  3641. }
  3642. .md-input-message-animation, .md-char-counter {
  3643. font-size: $input-error-font-size;
  3644. line-height: $input-error-line-height;
  3645. overflow: hidden;
  3646. transition: $swift-ease-in;
  3647. // Default state for messages is to be visible
  3648. opacity: 1;
  3649. margin-top: 0;
  3650. // Add some top padding which is equal to half the difference between the expected height
  3651. // and the actual height
  3652. padding-top: $error-padding-top;
  3653. &:not(.md-char-counter) {
  3654. // Add some padding so that the messages don't touch the character counter
  3655. @include rtl(padding-right, rem(0.5), 0);
  3656. @include rtl(padding-left, 0, rem(0.5));
  3657. }
  3658. }
  3659. &:not(.md-input-invalid) {
  3660. .md-auto-hide {
  3661. .md-input-message-animation {
  3662. opacity: 0;
  3663. margin-top: -100px;
  3664. }
  3665. }
  3666. }
  3667. // Note: This is a workaround to fix an ng-enter flicker bug
  3668. .md-input-message-animation {
  3669. &:not(.ng-animate) {
  3670. opacity: 0;
  3671. margin-top: -100px;
  3672. }
  3673. }
  3674. .md-input-message-animation {
  3675. &.ng-enter {
  3676. opacity: 0;
  3677. margin-top: -100px;
  3678. }
  3679. }
  3680. &.md-input-focused,
  3681. &.md-input-has-placeholder,
  3682. &.md-input-has-value {
  3683. label:not(.md-no-float) {
  3684. transform: translate3d(0, $input-label-float-offset, 0) scale($input-label-float-scale);
  3685. transition: transform $swift-ease-out-timing-function $swift-ease-out-duration,
  3686. width $swift-ease-out-timing-function $swift-ease-out-duration;
  3687. }
  3688. }
  3689. // If we have an existing value; don't animate the transform as it happens on page load and
  3690. // causes erratic/unnecessary animation
  3691. &.md-input-has-value {
  3692. label {
  3693. transition: none;
  3694. }
  3695. }
  3696. // Use wide border in error state or in focused state
  3697. &.md-input-focused .md-input,
  3698. .md-input.ng-invalid.ng-dirty,
  3699. &.md-input-resized .md-input {
  3700. padding-bottom: 0; // Increase border width by 1px, decrease padding by 1
  3701. border-width: 0 0 $input-border-width-focused 0;
  3702. }
  3703. .md-input {
  3704. &[disabled],
  3705. [disabled] & {
  3706. // The negative border width offsets the dotted "border" so
  3707. // it's placed in the same place as the solid one before it.
  3708. background-position: bottom $input-border-width-default * -1 left 0;
  3709. // This background-size is coordinated with a linear-gradient set in input-theme.scss
  3710. // to create a dotted line under the input.
  3711. background-size: 4px 1px;
  3712. background-repeat: repeat-x;
  3713. }
  3714. }
  3715. &.md-icon-float {
  3716. transition: margin-top $swift-ease-out-duration $swift-ease-out-timing-function;
  3717. > label {
  3718. pointer-events: none;
  3719. position: absolute;
  3720. }
  3721. > md-icon {
  3722. top: $icon-top-offset;
  3723. @include rtl(left, 2px, auto);
  3724. @include rtl(right, auto, 2px);
  3725. }
  3726. }
  3727. &.md-icon-left,
  3728. &.md-icon-right {
  3729. > label {
  3730. &:not(.md-no-float):not(.md-container-ignore),
  3731. .md-placeholder {
  3732. width: calc(100% - #{$icon-offset} - #{$input-label-float-width});
  3733. }
  3734. }
  3735. }
  3736. // icon offset should have higher priority as normal label
  3737. &.md-icon-left {
  3738. @include rtl(padding-left, $icon-offset, 0);
  3739. @include rtl(padding-right, 0, $icon-offset);
  3740. > label {
  3741. @include rtl(left, $icon-offset, auto);
  3742. @include rtl(right, auto, $icon-offset);
  3743. }
  3744. }
  3745. &.md-icon-right {
  3746. @include rtl(padding-left, 0, $icon-offset);
  3747. @include rtl(padding-right, $icon-offset, 0);
  3748. > md-icon:last-of-type {
  3749. margin: 0;
  3750. @include rtl(right, 2px, auto);
  3751. @include rtl(left, auto, 2px);
  3752. }
  3753. }
  3754. &.md-icon-left.md-icon-right {
  3755. padding-left: $icon-offset;
  3756. padding-right: $icon-offset;
  3757. > label {
  3758. &:not(.md-no-float):not(.md-container-ignore),
  3759. .md-placeholder {
  3760. width: calc(100% - (#{$icon-offset} * 2));
  3761. }
  3762. }
  3763. }
  3764. }
  3765. .md-resize-wrapper {
  3766. @include pie-clearfix();
  3767. position: relative;
  3768. }
  3769. .md-resize-handle {
  3770. position: absolute;
  3771. bottom: $input-resize-handle-height / -2;
  3772. left: 0;
  3773. height: $input-resize-handle-height;
  3774. background: transparent;
  3775. width: 100%;
  3776. cursor: ns-resize;
  3777. }
  3778. @media screen and (-ms-high-contrast: active) {
  3779. md-input-container.md-default-theme > md-icon {
  3780. fill: #fff;
  3781. }
  3782. }
  3783. md-icon {
  3784. margin: auto;
  3785. background-repeat: no-repeat no-repeat;
  3786. display: inline-block;
  3787. vertical-align: middle;
  3788. fill: currentColor;
  3789. height: $icon-size;
  3790. width: $icon-size;
  3791. // The icons should not shrink on smaller viewports.
  3792. min-height: $icon-size;
  3793. min-width: $icon-size;
  3794. svg {
  3795. pointer-events: none;
  3796. display: block;
  3797. }
  3798. &[md-font-icon] {
  3799. line-height: $icon-size;
  3800. width: auto;
  3801. }
  3802. }
  3803. //
  3804. //@font-face {
  3805. // font-family:"material";
  3806. // src:url("/dist/material-font/material.eot");
  3807. // font-weight:normal;
  3808. // font-style:normal;
  3809. //}
  3810. //
  3811. //@font-face {
  3812. // font-family:"material";
  3813. // src:url("/dist/material-font/material.eot");
  3814. // src:url("/dist/material-font/material.eot?#iefix") format("embedded-opentype"),
  3815. // url("/dist/material-font/material.woff") format("woff"),
  3816. // url("/dist/material-font/material.ttf") format("truetype"),
  3817. // url("/dist/material-font/material.svg?#material") format("svg");
  3818. // font-weight:normal;
  3819. // font-style:normal;
  3820. //}
  3821. //
  3822. ///* Bootstrap Overrides */
  3823. //[class^="icon-"]:before,
  3824. //[class*=" icon-"]:before {
  3825. // font-family:"material";
  3826. // display:inline-block;
  3827. // vertical-align:middle;
  3828. // line-height:1;
  3829. // font-weight:normal;
  3830. // font-style:normal;
  3831. // speak:none;
  3832. // text-decoration:inherit;
  3833. // text-transform:none;
  3834. // text-rendering:optimizeLegibility;
  3835. // -webkit-font-smoothing:antialiased;
  3836. // -moz-osx-font-smoothing:grayscale;
  3837. //}
  3838. $progress-linear-bar-height: 5px !default;
  3839. md-progress-linear {
  3840. display: block;
  3841. position: relative;
  3842. width: 100%;
  3843. height: $progress-linear-bar-height;
  3844. padding-top: 0 !important;
  3845. margin-bottom: 0 !important;
  3846. &._md-progress-linear-disabled {
  3847. visibility: hidden;
  3848. }
  3849. .md-container {
  3850. display:block;
  3851. position: relative;
  3852. overflow: hidden;
  3853. width:100%;
  3854. height: $progress-linear-bar-height;
  3855. transform: translate(0, 0) scale(1, 1);
  3856. .md-bar {
  3857. position: absolute;
  3858. left: 0;
  3859. top: 0;
  3860. bottom: 0;
  3861. width: 100%;
  3862. height: $progress-linear-bar-height;
  3863. }
  3864. .md-dashed:before {
  3865. content: "";
  3866. display: none;
  3867. position: absolute;
  3868. margin-top: 0;
  3869. height: $progress-linear-bar-height;
  3870. width: 100%;
  3871. background-color: transparent;
  3872. background-size: 10px 10px !important;
  3873. background-position: 0px -23px;
  3874. }
  3875. .md-bar1, .md-bar2 {
  3876. // Just set the transition information here.
  3877. // Note: the actual transform values are calculated in JS
  3878. transition: transform 0.2s linear;
  3879. }
  3880. // ************************************************************
  3881. // Animations for modes: Determinate, InDeterminate, and Query
  3882. // ************************************************************
  3883. &.md-mode-query {
  3884. .md-bar1 {
  3885. display: none;
  3886. }
  3887. .md-bar2 {
  3888. transition: all 0.2s linear;
  3889. animation: query .8s infinite cubic-bezier(0.390, 0.575, 0.565, 1.000);
  3890. }
  3891. }
  3892. &.md-mode-determinate {
  3893. .md-bar1 {
  3894. display: none;
  3895. }
  3896. }
  3897. &.md-mode-indeterminate {
  3898. .md-bar1 {
  3899. animation: md-progress-linear-indeterminate-scale-1 4s infinite,
  3900. md-progress-linear-indeterminate-1 4s infinite;
  3901. }
  3902. .md-bar2 {
  3903. animation: md-progress-linear-indeterminate-scale-2 4s infinite,
  3904. md-progress-linear-indeterminate-2 4s infinite;
  3905. }
  3906. }
  3907. &.ng-hide
  3908. ._md-progress-linear-disabled & {
  3909. animation: none;
  3910. .md-bar1 {
  3911. animation-name: none;
  3912. }
  3913. .md-bar2 {
  3914. animation-name: none;
  3915. }
  3916. }
  3917. }
  3918. // Special animations for the `buffer` mode
  3919. .md-container.md-mode-buffer {
  3920. background-color: transparent !important;
  3921. transition: all 0.2s linear;
  3922. .md-dashed:before {
  3923. display: block;
  3924. animation: buffer 3s infinite linear;
  3925. }
  3926. }
  3927. }
  3928. @keyframes query {
  3929. 0% {
  3930. opacity: 1;
  3931. transform: translateX(35%) scale(.3, 1);
  3932. }
  3933. 100% {
  3934. opacity: 0;
  3935. transform: translateX(-50%) scale(0, 1);
  3936. }
  3937. }
  3938. @keyframes buffer {
  3939. 0% {
  3940. opacity: 1;
  3941. background-position: 0px -23px;
  3942. }
  3943. 50% {
  3944. opacity: 0;
  3945. }
  3946. 100% {
  3947. opacity: 1;
  3948. background-position: -200px -23px;
  3949. }
  3950. }
  3951. @keyframes md-progress-linear-indeterminate-scale-1 {
  3952. 0% {
  3953. transform: scaleX(0.1);
  3954. animation-timing-function: linear;
  3955. }
  3956. 36.6% {
  3957. transform: scaleX(0.1);
  3958. animation-timing-function: cubic-bezier(0.334731432, 0.124819821, 0.785843996, 1);
  3959. }
  3960. 69.15% {
  3961. transform: scaleX(0.83);
  3962. animation-timing-function: cubic-bezier(0.225732004, 0, 0.233648906, 1.3709798);
  3963. }
  3964. 100% {
  3965. transform: scaleX(0.1);
  3966. }
  3967. }
  3968. @keyframes md-progress-linear-indeterminate-1 {
  3969. 0% {
  3970. left: -378.6 * 100% / 360;
  3971. animation-timing-function: linear;
  3972. }
  3973. 20% {
  3974. left: -378.6 * 100% / 360;
  3975. animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495818703);
  3976. }
  3977. 69.15% {
  3978. left: 77.4 * 100% / 360;
  3979. animation-timing-function: cubic-bezier(0.302435, 0.38135197, 0.55, 0.956352125);
  3980. }
  3981. 100% {
  3982. left: 343.6 * 100% / 360;
  3983. }
  3984. }
  3985. @keyframes md-progress-linear-indeterminate-scale-2 {
  3986. 0% {
  3987. transform: scaleX(0.1);
  3988. animation-timing-function: cubic-bezier(0.205028172, 0.057050836, 0.57660995, 0.453970841);
  3989. }
  3990. 19.15% {
  3991. transform: scaleX(0.57);
  3992. animation-timing-function: cubic-bezier(0.152312994, 0.196431957, 0.648373778, 1.00431535);
  3993. }
  3994. 44.15% {
  3995. transform: scaleX(0.91);
  3996. animation-timing-function: cubic-bezier(0.25775882, -0.003163357, 0.211761916, 1.38178961);
  3997. }
  3998. 100% {
  3999. transform: scaleX(0.1);
  4000. }
  4001. }
  4002. @keyframes md-progress-linear-indeterminate-2 {
  4003. 0% {
  4004. left: -197.6 * 100% / 360;
  4005. animation-timing-function: cubic-bezier(0.15, 0, 0.5150584, 0.409684966);
  4006. }
  4007. 25% {
  4008. left: -62.1 * 100% / 360;
  4009. animation-timing-function: cubic-bezier(0.3103299, 0.284057684, 0.8, 0.733718979);
  4010. }
  4011. 48.35% {
  4012. left: 106.2 * 100% / 360;
  4013. animation-timing-function: cubic-bezier(0.4, 0.627034903, 0.6, 0.902025796);
  4014. }
  4015. 100% {
  4016. left: 422.6 * 100% / 360;
  4017. }
  4018. }
  4019. $menu-border-radius: 2px !default;
  4020. $max-visible-items: 6 !default;
  4021. $menu-item-height: 6 * $baseline-grid !default;
  4022. $dense-menu-item-height: 4 * $baseline-grid !default;
  4023. $max-menu-height: 2 * $baseline-grid + $max-visible-items * $menu-item-height !default;
  4024. $max-dense-menu-height: 2 * $baseline-grid + $max-visible-items * $dense-menu-item-height !default;
  4025. .md-open-menu-container {
  4026. position: fixed;
  4027. left: 0;
  4028. top: 0;
  4029. z-index: $z-index-menu;
  4030. opacity: 0;
  4031. border-radius: $menu-border-radius;
  4032. md-menu-divider {
  4033. margin-top: $baseline-grid / 2;
  4034. margin-bottom: $baseline-grid / 2;
  4035. height: 1px;
  4036. min-height: 1px;
  4037. max-height: 1px;
  4038. width: 100%;
  4039. }
  4040. md-menu-content > * {
  4041. opacity: 0;
  4042. }
  4043. // Don't let the user click something until it's animated
  4044. &:not(.md-clickable) {
  4045. pointer-events: none;
  4046. }
  4047. // enter: menu scales in, then list fade in.
  4048. &.md-active {
  4049. opacity: 1;
  4050. transition: $swift-ease-out;
  4051. transition-duration: 200ms;
  4052. > md-menu-content > * {
  4053. opacity: 1;
  4054. transition: $swift-ease-in;
  4055. transition-duration: 200ms;
  4056. transition-delay: 100ms;
  4057. }
  4058. }
  4059. // leave: the container fades out
  4060. &.md-leave {
  4061. opacity: 0;
  4062. transition: $swift-ease-in;
  4063. transition-duration: 250ms;
  4064. }
  4065. }
  4066. md-menu-content {
  4067. display: flex;
  4068. flex-direction: column;
  4069. padding: $baseline-grid 0;
  4070. max-height: $max-menu-height;
  4071. overflow-y: auto;
  4072. &.md-dense {
  4073. max-height: $max-dense-menu-height;
  4074. md-menu-item {
  4075. height: $dense-menu-item-height;
  4076. min-height: 0px;
  4077. }
  4078. }
  4079. }
  4080. md-menu-item {
  4081. display: flex;
  4082. flex-direction: row;
  4083. min-height: $menu-item-height;
  4084. height: $menu-item-height;
  4085. align-content: center;
  4086. justify-content: flex-start;
  4087. > * {
  4088. width: 100%;
  4089. margin: auto 0;
  4090. padding-left: 2*$baseline-grid;
  4091. padding-right: 2*$baseline-grid;
  4092. }
  4093. /*
  4094. * We cannot use flex on <button> elements due to a bug in Firefox, so we also can't use it on
  4095. * <a> elements. Add some top padding to fix alignment since buttons automatically align their
  4096. * text vertically.
  4097. */
  4098. > a.md-button {
  4099. padding-top: 5px;
  4100. }
  4101. > .md-button {
  4102. // Firefox-specific reset styling to fix alignment issues (see #8464)
  4103. &::-moz-focus-inner {
  4104. padding: 0;
  4105. border: 0
  4106. }
  4107. @include rtl(text-align, left, right);
  4108. display: inline-block;
  4109. border-radius: 0;
  4110. margin: auto 0;
  4111. font-size: (2*$baseline-grid) - 1;
  4112. text-transform: none;
  4113. font-weight: 400;
  4114. height: 100%;
  4115. padding-left: 2*$baseline-grid;
  4116. padding-right: 2*$baseline-grid;
  4117. width:100%;
  4118. md-icon {
  4119. @include rtl(margin, auto 2*$baseline-grid auto 0, auto 0 auto 2*$baseline-grid);
  4120. }
  4121. p {
  4122. display:inline-block;
  4123. margin: auto;
  4124. }
  4125. span {
  4126. margin-top: auto;
  4127. margin-bottom: auto;
  4128. }
  4129. .md-ripple-container {
  4130. border-radius: inherit;
  4131. }
  4132. }
  4133. }
  4134. md-toolbar {
  4135. .md-menu {
  4136. height: auto;
  4137. margin: auto;
  4138. padding: 0;
  4139. }
  4140. }
  4141. @media (max-width: $layout-breakpoint-sm - 1) {
  4142. md-menu-content {
  4143. min-width: 112px;
  4144. }
  4145. @for $i from 3 through 7 {
  4146. md-menu-content[width="#{$i}"] {
  4147. min-width: $i * 56px;
  4148. }
  4149. }
  4150. }
  4151. @media (min-width: $layout-breakpoint-sm) {
  4152. md-menu-content {
  4153. min-width: 96px;
  4154. }
  4155. @for $i from 3 through 7 {
  4156. md-menu-content[width="#{$i}"] {
  4157. min-width: $i * 64px;
  4158. }
  4159. }
  4160. }
  4161. $radio-width: 20px !default;
  4162. $radio-height: $radio-width !default;
  4163. $radio-text-margin: 10px !default;
  4164. $radio-top-left: 12px !default;
  4165. $radio-margin: 16px !default;
  4166. @mixin md-radio-button-disabled {
  4167. cursor: default;
  4168. .md-container {
  4169. cursor: default;
  4170. }
  4171. }
  4172. md-radio-button {
  4173. box-sizing: border-box;
  4174. display: block;
  4175. margin-bottom: $radio-margin;
  4176. white-space: nowrap;
  4177. cursor: pointer;
  4178. position: relative;
  4179. // When the radio-button is disabled.
  4180. &[disabled] {
  4181. @include md-radio-button-disabled();
  4182. }
  4183. .md-container {
  4184. position: absolute;
  4185. top: 50%;
  4186. transform: translateY(-50%);
  4187. box-sizing: border-box;
  4188. display: inline-block;
  4189. width: $radio-width;
  4190. height: $radio-width;
  4191. cursor: pointer;
  4192. @include rtl(left, 0, auto);
  4193. @include rtl(right, auto, 0);
  4194. .md-ripple-container {
  4195. position: absolute;
  4196. display: block;
  4197. width: auto;
  4198. height: auto;
  4199. left: -15px;
  4200. top: -15px;
  4201. right: -15px;
  4202. bottom: -15px;
  4203. }
  4204. &:before {
  4205. box-sizing: border-box;
  4206. background-color: transparent;
  4207. border-radius: 50%;
  4208. content: '';
  4209. position: absolute;
  4210. display: block;
  4211. height: auto;
  4212. left: 0;
  4213. top: 0;
  4214. right: 0;
  4215. bottom: 0;
  4216. transition: all 0.5s;
  4217. width: auto;
  4218. }
  4219. }
  4220. &.md-align-top-left > div.md-container {
  4221. top: $radio-top-left;
  4222. }
  4223. .md-off {
  4224. box-sizing: border-box;
  4225. position: absolute;
  4226. top: 0;
  4227. left: 0;
  4228. width: $radio-width;
  4229. height: $radio-width;
  4230. border-style: solid;
  4231. border-width: 2px;
  4232. border-radius: 50%;
  4233. transition: border-color ease 0.28s;
  4234. }
  4235. .md-on {
  4236. box-sizing: border-box;
  4237. position: absolute;
  4238. top: 0;
  4239. left: 0;
  4240. width: $radio-width;
  4241. height: $radio-width;
  4242. border-radius: 50%;
  4243. transition: transform ease 0.28s;
  4244. transform: scale(0);
  4245. }
  4246. &.md-checked .md-on {
  4247. transform: scale(0.50);
  4248. }
  4249. .md-label {
  4250. box-sizing: border-box;
  4251. position: relative;
  4252. display: inline-block;
  4253. @include rtl(margin-left, $radio-text-margin + $radio-width, 0);
  4254. @include rtl(margin-right, 0, $radio-text-margin + $radio-width);
  4255. vertical-align: middle;
  4256. white-space: normal;
  4257. pointer-events: none;
  4258. width: auto;
  4259. }
  4260. }
  4261. md-radio-group {
  4262. /** Layout adjustments for the radio group. */
  4263. &.layout-column,
  4264. &.layout-xs-column, &.layout-gt-xs-column,
  4265. &.layout-sm-column, &.layout-gt-sm-column,
  4266. &.layout-md-column, &.layout-gt-md-column,
  4267. &.layout-lg-column, &.layout-gt-lg-column,
  4268. &.layout-xl-column {
  4269. md-radio-button {
  4270. margin-bottom: $radio-margin;
  4271. }
  4272. }
  4273. &.layout-row,
  4274. &.layout-xs-row, &.layout-gt-xs-row,
  4275. &.layout-sm-row, &.layout-gt-sm-row,
  4276. &.layout-md-row, &.layout-gt-md-row,
  4277. &.layout-lg-row, &.layout-gt-lg-row,
  4278. &.layout-xl-row {
  4279. md-radio-button {
  4280. margin-top: 0;
  4281. margin-bottom: 0;
  4282. @include rtl(margin-left, 0, $radio-margin);
  4283. @include rtl(margin-right, $radio-margin, 0);
  4284. &:last-of-type {
  4285. margin-left: 0;
  4286. margin-right: 0;
  4287. }
  4288. }
  4289. }
  4290. &:focus {
  4291. outline: none;
  4292. }
  4293. &.md-focused {
  4294. .md-checked .md-container:before {
  4295. left: -8px;
  4296. top: -8px;
  4297. right: -8px;
  4298. bottom: -8px;
  4299. }
  4300. }
  4301. &[disabled] md-radio-button {
  4302. @include md-radio-button-disabled();
  4303. }
  4304. }
  4305. .md-inline-form {
  4306. md-radio-group {
  4307. margin: 18px 0 19px;
  4308. md-radio-button {
  4309. display: inline-block;
  4310. height: 30px;
  4311. padding: 2px;
  4312. box-sizing: border-box;
  4313. margin-top: 0;
  4314. margin-bottom: 0;
  4315. }
  4316. }
  4317. }
  4318. @media screen and (-ms-high-contrast: active) {
  4319. md-radio-button.md-default-theme .md-on {
  4320. background-color: #fff;
  4321. }
  4322. }
  4323. $progress-circular-indeterminate-duration: 1568.63ms !default;
  4324. @keyframes indeterminate-rotate {
  4325. 0% { transform: rotate(0deg); }
  4326. 100% { transform: rotate(360deg); }
  4327. }
  4328. // Used to avoid unnecessary layout
  4329. md-progress-circular {
  4330. position: relative;
  4331. display: block;
  4332. &._md-progress-circular-disabled {
  4333. visibility: hidden;
  4334. }
  4335. &.md-mode-indeterminate svg {
  4336. animation: indeterminate-rotate $progress-circular-indeterminate-duration linear infinite;
  4337. }
  4338. svg {
  4339. position: absolute;
  4340. overflow: visible;
  4341. top: 0;
  4342. left: 0;
  4343. }
  4344. }
  4345. $sidenav-mobile-width: 320px !default;
  4346. $sidenav-desktop-width: 400px !default;
  4347. $sidenav-min-space: 56px !default;
  4348. md-sidenav {
  4349. box-sizing: border-box;
  4350. position: absolute;
  4351. flex-direction: column;
  4352. z-index: $z-index-sidenav;
  4353. width: $sidenav-mobile-width;
  4354. max-width: $sidenav-mobile-width;
  4355. bottom: 0;
  4356. overflow: auto;
  4357. -webkit-overflow-scrolling: touch;
  4358. ul {
  4359. list-style: none;
  4360. }
  4361. // Animation Comment Syntax: [mdLockedOpen]|[mdClosed]
  4362. // mdLockedOpen states: unlocked, locked, any
  4363. // mdClosed states: open, closed, any
  4364. // Default state: unlocked|open
  4365. // unlocked|closed
  4366. &.md-closed {
  4367. display: none;
  4368. }
  4369. // any|open <=> any|closed
  4370. &.md-closed-add,
  4371. &.md-closed-remove {
  4372. display: flex;
  4373. transition: 0.2s ease-in all;
  4374. }
  4375. // any|open <=> any|closed (animating)
  4376. &.md-closed-add.md-closed-add-active,
  4377. &.md-closed-remove.md-closed-remove-active {
  4378. transition: $swift-ease-out;
  4379. }
  4380. // unlocked|any <=> locked|any
  4381. &.md-locked-open-add,
  4382. &.md-locked-open-remove {
  4383. position: static;
  4384. display: flex;
  4385. transform: translate3d(0, 0, 0);
  4386. }
  4387. // locked|any
  4388. &.md-locked-open,
  4389. &.md-locked-open.md-closed,
  4390. &.md-locked-open.md-closed.md-sidenav-left,
  4391. &.md-locked-open.md-closed.md-sidenav-right {
  4392. position: static;
  4393. display: flex;
  4394. transform: translate3d(0, 0, 0);
  4395. }
  4396. // locked|closed => unlock|closed
  4397. &.md-locked-open-remove.md-closed {
  4398. position: static;
  4399. display: flex;
  4400. transform: translate3d(0, 0, 0);
  4401. }
  4402. // unlocked|closed => locked|closed
  4403. &.md-closed.md-locked-open-add {
  4404. position: static;
  4405. display: flex;
  4406. transform: translate3d(0%, 0, 0);
  4407. }
  4408. // unlocked|closed => locked|closed (pre-animation)
  4409. &.md-closed.md-locked-open-add:not(.md-locked-open-add-active) {
  4410. transition: width $swift-ease-in-duration $swift-ease-in-timing-function,
  4411. min-width $swift-ease-in-duration $swift-ease-in-timing-function;
  4412. width: 0 !important;
  4413. min-width: 0 !important;
  4414. }
  4415. // unlocked|closed => locked|closed (animating)
  4416. &.md-closed.md-locked-open-add-active {
  4417. transition: width $swift-ease-in-duration $swift-ease-in-timing-function,
  4418. min-width $swift-ease-in-duration $swift-ease-in-timing-function;
  4419. }
  4420. // locked|any => unlocked|any (animating)
  4421. &.md-locked-open-remove-active {
  4422. transition: width $swift-ease-in-duration $swift-ease-in-timing-function,
  4423. min-width $swift-ease-in-duration $swift-ease-in-timing-function;
  4424. width: 0 !important;
  4425. min-width: 0 !important;
  4426. }
  4427. @extend .md-sidenav-left;
  4428. }
  4429. .md-sidenav-backdrop.md-locked-open {
  4430. display: none;
  4431. }
  4432. .md-sidenav-left {
  4433. left: 0;
  4434. top: 0;
  4435. transform: translate3d(0%, 0, 0);
  4436. &.md-closed {
  4437. transform: translate3d(-100%, 0, 0);
  4438. }
  4439. }
  4440. .md-sidenav-right {
  4441. left: 100%;
  4442. top: 0;
  4443. transform: translate(-100%, 0);
  4444. &.md-closed {
  4445. transform: translate(0%, 0);
  4446. }
  4447. }
  4448. @media (min-width: $layout-breakpoint-xs) {
  4449. md-sidenav {
  4450. max-width: $sidenav-desktop-width;
  4451. }
  4452. }
  4453. @media (max-width: $sidenav-desktop-width + $sidenav-min-space) {
  4454. md-sidenav {
  4455. width: calc(100% - #{$sidenav-min-space});
  4456. min-width: calc(100% - #{$sidenav-min-space});
  4457. max-width: calc(100% - #{$sidenav-min-space});
  4458. }
  4459. }
  4460. // IE Only
  4461. @media screen and (-ms-high-contrast: active) {
  4462. .md-sidenav-left {
  4463. border-right: 1px solid #fff;
  4464. }
  4465. .md-sidenav-right {
  4466. border-left: 1px solid #fff;
  4467. }
  4468. }
  4469. $slider-background-color: rgb(200, 200, 200) !default;
  4470. $slider-size: 48px !default;
  4471. $slider-min-size: 128px !default;
  4472. $slider-track-height: 2px !default;
  4473. $slider-thumb-width: 20px !default;
  4474. $slider-thumb-height: $slider-thumb-width !default;
  4475. $slider-thumb-default-scale: 0.7 !default;
  4476. $slider-thumb-hover-scale: 0.8 !default;
  4477. $slider-thumb-focus-scale: 1 !default;
  4478. $slider-thumb-disabled-scale: 0.5 !default;
  4479. $slider-thumb-disabled-border: 4px !default;
  4480. $slider-thumb-focus-duration: .7s !default;
  4481. $slider-focus-thumb-width: 34px !default;
  4482. $slider-focus-thumb-height: $slider-focus-thumb-width !default;
  4483. $slider-focus-ring-border-width: 3px !default;
  4484. $slider-arrow-height: 16px !default;
  4485. $slider-arrow-width: 28px !default;
  4486. $slider-sign-height: 28px !default;
  4487. $slider-sign-width: 28px !default;
  4488. $slider-sign-top: ($slider-size / 2) - ($slider-thumb-default-scale * $slider-thumb-height / 2) - ($slider-sign-height) - ($slider-arrow-height) + 10px !default;
  4489. @keyframes sliderFocusThumb {
  4490. 0% {
  4491. transform: scale($slider-thumb-default-scale);
  4492. }
  4493. 30% {
  4494. transform: scale($slider-thumb-focus-scale);
  4495. }
  4496. 100% {
  4497. transform: scale($slider-thumb-default-scale);
  4498. }
  4499. }
  4500. @keyframes sliderDiscreteFocusThumb {
  4501. 0% {
  4502. transform: scale($slider-thumb-default-scale);
  4503. }
  4504. 50% {
  4505. transform: scale($slider-thumb-hover-scale);
  4506. }
  4507. 100% {
  4508. transform: scale(0);
  4509. }
  4510. }
  4511. @keyframes sliderDiscreteFocusRing {
  4512. 0% {
  4513. transform: scale(0.7);
  4514. opacity: 0;
  4515. }
  4516. 50% {
  4517. transform: scale(1);
  4518. opacity: 1;
  4519. }
  4520. 100% {
  4521. transform: scale(0);
  4522. }
  4523. }
  4524. @mixin slider-thumb-position($width: $slider-thumb-width, $height: $slider-thumb-height) {
  4525. position: absolute;
  4526. @include rtl-prop(left, right, (-$width / 2), auto);
  4527. top: ($slider-size / 2) - ($height / 2);
  4528. width: $width;
  4529. height: $height;
  4530. border-radius: max($width, $height);
  4531. }
  4532. md-slider {
  4533. height: $slider-size;
  4534. min-width: $slider-min-size;
  4535. position: relative;
  4536. margin-left: 4px;
  4537. margin-right: 4px;
  4538. padding: 0;
  4539. display: block;
  4540. flex-direction: row;
  4541. *, *:after {
  4542. box-sizing: border-box;
  4543. }
  4544. .md-slider-wrapper {
  4545. outline: none;
  4546. width: 100%;
  4547. height: 100%;
  4548. }
  4549. .md-slider-content {
  4550. position: relative;
  4551. }
  4552. /**
  4553. * Track
  4554. */
  4555. .md-track-container {
  4556. width: 100%;
  4557. position: absolute;
  4558. top: ($slider-size / 2) - ($slider-track-height) / 2;
  4559. height: $slider-track-height;
  4560. }
  4561. .md-track {
  4562. position: absolute;
  4563. left: 0;
  4564. right: 0;
  4565. height: 100%;
  4566. }
  4567. .md-track-fill {
  4568. transition: all .4s cubic-bezier(.25,.8,.25,1);
  4569. transition-property: width, height;
  4570. }
  4571. .md-track-ticks {
  4572. position: absolute;
  4573. left: 0;
  4574. right: 0;
  4575. height: 100%;
  4576. }
  4577. .md-track-ticks canvas {
  4578. // Restrict the width and the height of the canvas so that ticks are rendered correctly
  4579. // when parent elements are resized. Else, the position of the ticks might
  4580. // be incorrect as we only update the canvas width attribute on window resize.
  4581. width: 100%;
  4582. height: 100%;
  4583. }
  4584. /**
  4585. * Slider thumb
  4586. */
  4587. .md-thumb-container {
  4588. position: absolute;
  4589. @include rtl-prop(left, right, 0, auto);
  4590. top: 50%;
  4591. transform: translate3d(-50%,-50%,0);
  4592. transition: all .4s cubic-bezier(.25,.8,.25,1);
  4593. transition-property: left, right, bottom;
  4594. }
  4595. .md-thumb {
  4596. z-index: 1;
  4597. @include slider-thumb-position($slider-thumb-width, $slider-thumb-height);
  4598. // We render thumb in an :after selector to fix an obscure problem with the
  4599. // thumb being clipped by the focus-ring and focus-thumb while running the focus
  4600. // animation.
  4601. &:after {
  4602. content: '';
  4603. position: absolute;
  4604. width: $slider-thumb-width;
  4605. height: $slider-thumb-height;
  4606. border-radius: max($slider-thumb-width, $slider-thumb-height);
  4607. border-width: 3px;
  4608. border-style: solid;
  4609. transition: inherit;
  4610. }
  4611. transform: scale($slider-thumb-default-scale);
  4612. transition: all .4s cubic-bezier(.25,.8,.25,1);
  4613. }
  4614. /* The sign that's focused in discrete mode */
  4615. .md-sign {
  4616. /* Center the children (slider-thumb-text) */
  4617. display: flex;
  4618. align-items: center;
  4619. justify-content: center;
  4620. position: absolute;
  4621. left: -($slider-sign-height / 2);
  4622. top: $slider-sign-top;
  4623. width: $slider-sign-width;
  4624. height: $slider-sign-height;
  4625. border-radius: max($slider-sign-height, $slider-sign-width);
  4626. transform: scale(0.4) translate3d(0,(-$slider-sign-top + 10) / 0.4,0);
  4627. transition: all 0.3s $swift-ease-in-out-timing-function;
  4628. /* The arrow pointing down under the sign */
  4629. &:after {
  4630. position: absolute;
  4631. content: '';
  4632. @include rtl-prop(left, right, -($slider-sign-width / 2 - $slider-arrow-width / 2), auto);
  4633. border-radius: $slider-arrow-height;
  4634. top: 19px;
  4635. border-left: $slider-arrow-width / 2 solid transparent;
  4636. border-right: $slider-arrow-width / 2 solid transparent;
  4637. border-top-width: $slider-arrow-height;
  4638. border-top-style: solid;
  4639. opacity: 0;
  4640. transform: translate3d(0,-8px,0);
  4641. transition: all 0.2s $swift-ease-in-out-timing-function;
  4642. }
  4643. .md-thumb-text {
  4644. z-index: 1;
  4645. font-size: 12px;
  4646. font-weight: bold;
  4647. }
  4648. }
  4649. /**
  4650. * The border/background that comes in when focused in non-discrete mode
  4651. */
  4652. .md-focus-ring {
  4653. @include slider-thumb-position($slider-focus-thumb-width, $slider-focus-thumb-height);
  4654. transform: scale(.7);
  4655. opacity: 0;
  4656. // using a custom duration to match the spec example video
  4657. transition: all ($slider-thumb-focus-duration / 2) $swift-ease-in-out-timing-function;
  4658. }
  4659. .md-disabled-thumb {
  4660. @include slider-thumb-position(
  4661. $slider-thumb-width + $slider-thumb-disabled-border * 2,
  4662. $slider-thumb-height + $slider-thumb-disabled-border * 2
  4663. );
  4664. transform: scale($slider-thumb-disabled-scale);
  4665. border-width: $slider-thumb-disabled-border;
  4666. border-style: solid;
  4667. display: none;
  4668. }
  4669. &.md-min {
  4670. .md-sign {
  4671. opacity: 0;
  4672. }
  4673. }
  4674. &:focus {
  4675. outline: none;
  4676. }
  4677. /* Don't animate left/right while panning */
  4678. &.md-dragging {
  4679. .md-thumb-container,
  4680. .md-track-fill {
  4681. transition: none;
  4682. }
  4683. }
  4684. &:not([md-discrete]) {
  4685. /* Hide the sign and ticks in non-discrete mode */
  4686. .md-track-ticks,
  4687. .md-sign {
  4688. display: none;
  4689. }
  4690. &:not([disabled]) {
  4691. .md-slider-wrapper {
  4692. .md-thumb:hover {
  4693. transform: scale($slider-thumb-hover-scale);
  4694. }
  4695. &.md-focused {
  4696. .md-focus-ring {
  4697. transform: scale(1);
  4698. opacity: 1;
  4699. }
  4700. .md-thumb {
  4701. animation: sliderFocusThumb $slider-thumb-focus-duration $swift-ease-in-out-timing-function;
  4702. }
  4703. }
  4704. }
  4705. &.md-active {
  4706. .md-slider-wrapper {
  4707. .md-thumb {
  4708. transform: scale($slider-thumb-focus-scale);
  4709. }
  4710. }
  4711. }
  4712. }
  4713. }
  4714. &[md-discrete] {
  4715. &:not([disabled]) {
  4716. .md-slider-wrapper {
  4717. &.md-focused {
  4718. .md-focus-ring {
  4719. transform: scale(0);
  4720. animation: sliderDiscreteFocusRing .5s $swift-ease-in-out-timing-function;
  4721. }
  4722. .md-thumb {
  4723. animation: sliderDiscreteFocusThumb .5s $swift-ease-in-out-timing-function;
  4724. }
  4725. }
  4726. }
  4727. .md-slider-wrapper.md-focused,
  4728. &.md-active {
  4729. .md-thumb {
  4730. transform: scale(0);
  4731. }
  4732. .md-sign,
  4733. .md-sign:after {
  4734. opacity: 1;
  4735. transform: translate3d(0,0,0) scale(1.0);
  4736. }
  4737. }
  4738. }
  4739. &[disabled][readonly] {
  4740. .md-thumb {
  4741. transform: scale(0);
  4742. }
  4743. .md-sign,
  4744. .md-sign:after {
  4745. opacity: 1;
  4746. transform: translate3d(0,0,0) scale(1.0);
  4747. }
  4748. }
  4749. }
  4750. &[disabled] {
  4751. .md-track-fill {
  4752. display: none;
  4753. }
  4754. .md-track-ticks {
  4755. opacity: 0;
  4756. }
  4757. &:not([readonly]) .md-sign {
  4758. opacity: 0;
  4759. }
  4760. .md-thumb {
  4761. transform: scale($slider-thumb-disabled-scale);
  4762. }
  4763. .md-disabled-thumb {
  4764. display: block;
  4765. }
  4766. }
  4767. &[md-vertical] {
  4768. flex-direction: column;
  4769. min-height: $slider-min-size;
  4770. min-width: 0;
  4771. .md-slider-wrapper {
  4772. flex: 1;
  4773. padding-top: 12px;
  4774. padding-bottom: 12px;
  4775. width: $slider-size;
  4776. align-self: center;
  4777. display: flex;
  4778. justify-content: center;
  4779. }
  4780. .md-track-container {
  4781. height: 100%;
  4782. width: $slider-track-height;
  4783. top: 0;
  4784. left: calc(50% - (#{$slider-track-height} / 2));
  4785. }
  4786. .md-thumb-container {
  4787. top: auto;
  4788. margin-bottom: ($slider-size / 2) - ($slider-track-height) / 2;
  4789. left: calc(50% - 1px);
  4790. bottom: 0;
  4791. .md-thumb:after {
  4792. left: 1px;
  4793. }
  4794. .md-focus-ring {
  4795. left: -(($slider-focus-thumb-width / 2) - ($slider-track-height / 2));
  4796. }
  4797. }
  4798. .md-track-fill {
  4799. bottom: 0;
  4800. }
  4801. &[md-discrete] {
  4802. .md-sign {
  4803. $sign-top: -($slider-sign-top / 2) + 1;
  4804. left: -$slider-sign-height - 12;
  4805. top: $sign-top;
  4806. transform: scale(0.4) translate3d((-$slider-sign-top + 10) / 0.4, 0 ,0);
  4807. /* The arrow pointing left next the sign */
  4808. &:after {
  4809. top: $sign-top;
  4810. left: 19px;
  4811. border-top: $slider-arrow-width / 2 solid transparent;
  4812. border-right: 0;
  4813. border-bottom: $slider-arrow-width / 2 solid transparent;
  4814. border-left-width: $slider-arrow-height;
  4815. border-left-style: solid;
  4816. opacity: 0;
  4817. transform: translate3d(0,-8px,0);
  4818. transition: all 0.2s ease-in-out;
  4819. }
  4820. .md-thumb-text {
  4821. z-index: 1;
  4822. font-size: 12px;
  4823. font-weight: bold;
  4824. }
  4825. }
  4826. &.md-active,
  4827. .md-focused,
  4828. &[disabled][readonly]{
  4829. .md-sign:after {
  4830. top: 0;
  4831. }
  4832. }
  4833. }
  4834. &[disabled][readonly] {
  4835. .md-thumb {
  4836. transform: scale(0);
  4837. }
  4838. .md-sign,
  4839. .md-sign:after {
  4840. opacity: 1;
  4841. transform: translate3d(0,0,0) scale(1.0);
  4842. }
  4843. }
  4844. }
  4845. &[md-invert] {
  4846. &:not([md-vertical]) .md-track-fill {
  4847. @include rtl(left, auto, 0);
  4848. @include rtl(right, 0, auto);
  4849. }
  4850. &[md-vertical] {
  4851. .md-track-fill {
  4852. bottom: auto;
  4853. top: 0;
  4854. }
  4855. }
  4856. }
  4857. }
  4858. md-slider-container {
  4859. display: flex;
  4860. align-items: center;
  4861. flex-direction: row;
  4862. $items-width: 25px;
  4863. $items-height: $items-width;
  4864. $items-margin: 16px;
  4865. & > *:first-child,
  4866. & > *:last-child {
  4867. &:not(md-slider){
  4868. min-width: $items-width;
  4869. max-width: ($items-width * 2) - 8;
  4870. height: $items-height;
  4871. transition: $swift-ease-out;
  4872. transition-property: color, max-width;
  4873. }
  4874. }
  4875. & > *:first-child:not(md-slider) {
  4876. @include rtl-prop(margin-right, margin-left, $items-margin, auto);
  4877. }
  4878. & > *:last-child:not(md-slider) {
  4879. @include rtl-prop(margin-left, margin-right, $items-margin, auto);
  4880. }
  4881. &[md-vertical] {
  4882. flex-direction: column;
  4883. & > *:first-child:not(md-slider),
  4884. & > *:last-child:not(md-slider) {
  4885. margin-right: 0;
  4886. margin-left: 0;
  4887. text-align: center;
  4888. }
  4889. }
  4890. md-input-container {
  4891. input[type="number"] {
  4892. text-align: center;
  4893. @include rtl-prop(padding-left, padding-right, 15px, 0); // size of arrows
  4894. height: $items-height * 2;
  4895. margin-top: -$items-height;
  4896. }
  4897. }
  4898. }
  4899. @media screen and (-ms-high-contrast: active) {
  4900. md-slider.md-default-theme .md-track {
  4901. border-bottom: 1px solid #fff;
  4902. }
  4903. }
  4904. $select-checkbox-border-radius: 2px !default;
  4905. $select-checkbox-border-width: 2px !default;
  4906. $select-checkbox-width: rem(1.4) !default;
  4907. $select-option-height: 48px !default;
  4908. $select-option-padding: 16px !default;
  4909. $select-container-padding: 16px !default;
  4910. $select-container-transition-duration: 350ms !default;
  4911. $select-max-visible-options: 5 !default;
  4912. // Fixes the animations with the floating label when select is inside an input container
  4913. md-input-container {
  4914. &:not([md-no-float]) {
  4915. .md-select-placeholder span:first-child {
  4916. transition: transform $swift-ease-out-duration $swift-ease-out-timing-function;
  4917. @include rtl(transform-origin, left top, right top);
  4918. }
  4919. }
  4920. &.md-input-focused {
  4921. &:not([md-no-float]) {
  4922. .md-select-placeholder span:first-child {
  4923. transform: translateY(-22px) translateX(-2px) scale(0.75);
  4924. }
  4925. }
  4926. }
  4927. }
  4928. .md-select-menu-container {
  4929. position: fixed;
  4930. left: 0;
  4931. top: 0;
  4932. z-index: $z-index-select;
  4933. opacity: 0;
  4934. display: none;
  4935. // Fix 1px alignment issue to line up with text inputs (and spec)
  4936. transform: translateY(-1px);
  4937. // Don't let the user select a new choice while it's animating
  4938. &:not(.md-clickable) {
  4939. pointer-events: none;
  4940. }
  4941. md-progress-circular {
  4942. display: table;
  4943. margin: 3*$baseline-grid auto !important;
  4944. }
  4945. // enter: md-select scales in, then options fade in.
  4946. &.md-active {
  4947. display: block;
  4948. opacity: 1;
  4949. md-select-menu {
  4950. transition: $swift-ease-out;
  4951. transition-duration: 150ms;
  4952. > * {
  4953. opacity: 1;
  4954. transition: $swift-ease-in;
  4955. transition-duration: 150ms;
  4956. transition-delay: 100ms;
  4957. }
  4958. }
  4959. }
  4960. // leave: the container fades out
  4961. &.md-leave {
  4962. opacity: 0;
  4963. transition: $swift-ease-in;
  4964. transition-duration: 250ms;
  4965. }
  4966. }
  4967. md-input-container > md-select {
  4968. margin: 0;
  4969. order: 2;
  4970. }
  4971. // Show the asterisk on the placeholder if the element is required
  4972. //
  4973. // NOTE: When the input has a value and uses a floating label, the floating label will show the
  4974. // asterisk denoting that it is required
  4975. md-input-container:not(.md-input-has-value) {
  4976. md-select[required]:not(.md-no-asterisk), md-select.ng-required:not(.md-no-asterisk) {
  4977. .md-select-value span:first-child:after {
  4978. content: ' *';
  4979. font-size: 13px;
  4980. vertical-align: top;
  4981. }
  4982. }
  4983. }
  4984. md-input-container.md-input-invalid {
  4985. md-select {
  4986. .md-select-value {
  4987. border-bottom-style: solid;
  4988. padding-bottom: 1px;
  4989. }
  4990. }
  4991. }
  4992. md-select {
  4993. display: flex;
  4994. margin: 2.5*$baseline-grid 0 3*$baseline-grid + 2 0;
  4995. &[required], &.ng-required {
  4996. &.ng-invalid:not(.md-no-asterisk) {
  4997. .md-select-value span:first-child:after {
  4998. content: ' *';
  4999. font-size: 13px;
  5000. vertical-align: top;
  5001. }
  5002. }
  5003. }
  5004. &[disabled] .md-select-value {
  5005. background-position: 0 bottom;
  5006. // This background-size is coordinated with a linear-gradient set in select-theme.scss
  5007. // to create a dotted line under the input.
  5008. background-size: 4px 1px;
  5009. background-repeat: repeat-x;
  5010. margin-bottom: -1px; // Shift downward so dotted line is positioned the same as other bottom borders
  5011. }
  5012. &:focus {
  5013. outline: none;
  5014. }
  5015. &[disabled]:hover {
  5016. cursor: default;
  5017. }
  5018. &:not([disabled]) {
  5019. &:hover {
  5020. cursor: pointer
  5021. }
  5022. &.ng-invalid.ng-touched {
  5023. .md-select-value {
  5024. border-bottom-style: solid;
  5025. padding-bottom: 1px;
  5026. }
  5027. }
  5028. &:focus {
  5029. .md-select-value {
  5030. border-bottom-width: 2px;
  5031. border-bottom-style: solid;
  5032. padding-bottom: 0;
  5033. }
  5034. &.ng-invalid.ng-touched {
  5035. .md-select-value {
  5036. padding-bottom: 0;
  5037. }
  5038. }
  5039. }
  5040. }
  5041. }
  5042. // Fix value by 1px to align with standard text inputs (and spec)
  5043. md-input-container.md-input-has-value .md-select-value {
  5044. > span:not(.md-select-icon) {
  5045. transform: translate3d(0, 1px, 0);
  5046. }
  5047. }
  5048. .md-select-value {
  5049. display: flex;
  5050. align-items: center;
  5051. padding: 2px 2px 1px;
  5052. border-bottom-width: 1px;
  5053. border-bottom-style: solid;
  5054. background-color: rgba(0,0,0,0);
  5055. position: relative;
  5056. box-sizing: content-box;
  5057. min-width: 8 * $baseline-grid;
  5058. min-height: 26px;
  5059. flex-grow: 1;
  5060. > span:not(.md-select-icon) {
  5061. max-width: 100%;
  5062. flex: 1 1 auto;
  5063. text-overflow: ellipsis;
  5064. white-space: nowrap;
  5065. overflow: hidden;
  5066. .md-text {
  5067. display: inline;
  5068. }
  5069. }
  5070. .md-select-icon {
  5071. display: block;
  5072. align-items: flex-end;
  5073. text-align: end;
  5074. width: 3 * $baseline-grid;
  5075. margin: 0 .5 * $baseline-grid;
  5076. transform: translate3d(0, -2px, 0);
  5077. font-size: 1.2rem;
  5078. }
  5079. .md-select-icon:after {
  5080. display: block;
  5081. content: '\25BC';
  5082. position: relative;
  5083. top: 2px;
  5084. speak: none;
  5085. font-size: 13px;
  5086. transform: scaleY(0.5) scaleX(1);
  5087. }
  5088. &.md-select-placeholder {
  5089. display: flex;
  5090. order: 1;
  5091. pointer-events: none;
  5092. -webkit-font-smoothing: antialiased;
  5093. padding-left: 2px;
  5094. z-index: 1;
  5095. }
  5096. }
  5097. md-select-menu {
  5098. display: flex;
  5099. flex-direction: column;
  5100. &.md-reverse {
  5101. flex-direction: column-reverse;
  5102. }
  5103. &:not(.md-overflow) {
  5104. md-content {
  5105. padding-top: $baseline-grid;
  5106. padding-bottom: $baseline-grid;
  5107. }
  5108. }
  5109. box-shadow: $whiteframe-shadow-1dp;
  5110. max-height: ($select-option-height * $select-max-visible-options) + 2 * $baseline-grid;
  5111. min-height: $select-option-height;
  5112. overflow-y: hidden;
  5113. @include rtl(transform-origin, left top, right top);
  5114. transform: scale(1.0);
  5115. md-content {
  5116. min-width: 136px;
  5117. min-height: $select-option-height;
  5118. max-height: ($select-option-height * $select-max-visible-options) + 2 * $baseline-grid;
  5119. overflow-y: auto;
  5120. }
  5121. > * {
  5122. opacity: 0;
  5123. }
  5124. }
  5125. md-option {
  5126. cursor: pointer;
  5127. position: relative;
  5128. display: flex;
  5129. align-items: center;
  5130. width: auto;
  5131. transition: background 0.15s linear;
  5132. &[disabled] {
  5133. cursor: default;
  5134. }
  5135. &:focus {
  5136. outline: none;
  5137. }
  5138. .md-text {
  5139. @include not-selectable();
  5140. width: auto;
  5141. white-space: nowrap;
  5142. overflow: hidden;
  5143. text-overflow: ellipsis;
  5144. }
  5145. padding: 0 $select-option-padding 0 $select-option-padding;
  5146. height: $select-option-height;
  5147. }
  5148. md-optgroup {
  5149. display: block;
  5150. label {
  5151. display: block;
  5152. font-size: rem(1.4);
  5153. text-transform: uppercase;
  5154. padding: $baseline-grid * 2;
  5155. font-weight: 500;
  5156. }
  5157. md-option {
  5158. padding-left: $select-option-padding * 2;
  5159. padding-right: $select-option-padding * 2;
  5160. }
  5161. }
  5162. @media screen and (-ms-high-contrast: active) {
  5163. .md-select-backdrop {
  5164. background-color: transparent;
  5165. }
  5166. md-select-menu {
  5167. border: 1px solid #fff;
  5168. }
  5169. }
  5170. md-select-menu[multiple] {
  5171. md-option.md-checkbox-enabled {
  5172. @include rtl(padding-left, $select-option-padding * 2.5, $select-option-padding);
  5173. @include rtl(padding-right, $select-option-padding, $select-option-padding * 2.5);
  5174. @include checkbox-container('[selected]');
  5175. .md-container {
  5176. @include rtl(margin-left, $select-option-padding * (2 / 3), auto);
  5177. @include rtl(margin-right, auto, $select-option-padding * (2 / 3));
  5178. }
  5179. }
  5180. }
  5181. .md-sticky-clone {
  5182. z-index: 2;
  5183. top: 0;
  5184. left: 0;
  5185. right: 0;
  5186. position: absolute !important;
  5187. transform: translate3d(-9999px,-9999px,0);
  5188. &[sticky-state="active"] {
  5189. transform: translate3d(0, 0, 0);
  5190. &:not(.md-sticky-no-effect) .md-subheader-inner {
  5191. animation: subheaderStickyHoverIn 0.3s ease-out both;
  5192. }
  5193. }
  5194. }
  5195. $subheader-line-height: 1em !default;
  5196. $subheader-font-size: rem(1.4) !default;
  5197. $subheader-padding: ($baseline-grid * 2) !default;
  5198. $subheader-font-weight: 500 !default;
  5199. $subheader-margin: 0 0 0 0 !default;
  5200. $subheader-sticky-shadow: 0px 2px 4px 0 rgba(0,0,0,0.16) !default;
  5201. @keyframes subheaderStickyHoverIn {
  5202. 0% {
  5203. box-shadow: 0 0 0 0 transparent;
  5204. }
  5205. 100% {
  5206. box-shadow: $subheader-sticky-shadow;
  5207. }
  5208. }
  5209. @keyframes subheaderStickyHoverOut {
  5210. 0% {
  5211. box-shadow: $subheader-sticky-shadow;
  5212. }
  5213. 100% {
  5214. box-shadow: 0 0 0 0 transparent;
  5215. }
  5216. }
  5217. .md-subheader-wrapper {
  5218. &:not(.md-sticky-no-effect) {
  5219. .md-subheader {
  5220. margin: 0;
  5221. }
  5222. transition: 0.2s ease-out margin;
  5223. &.md-sticky-clone {
  5224. z-index: 2;
  5225. }
  5226. &[sticky-state="active"] {
  5227. margin-top: -2px;
  5228. }
  5229. &:not(.md-sticky-clone)[sticky-prev-state="active"] .md-subheader-inner:after {
  5230. animation: subheaderStickyHoverOut 0.3s ease-out both;
  5231. }
  5232. }
  5233. }
  5234. .md-subheader {
  5235. display: block;
  5236. font-size: $subheader-font-size;
  5237. font-weight: $subheader-font-weight;
  5238. line-height: $subheader-line-height;
  5239. margin: $subheader-margin;
  5240. position: relative;
  5241. .md-subheader-inner {
  5242. display: block;
  5243. padding: $subheader-padding;
  5244. }
  5245. .md-subheader-content {
  5246. display: block;
  5247. z-index: 1;
  5248. position: relative;
  5249. }
  5250. }
  5251. $switch-width: 36px !default;
  5252. $switch-height: $baseline-grid * 3 !default;
  5253. $switch-bar-height: 14px !default;
  5254. $switch-thumb-size: 20px !default;
  5255. $switch-margin: 16px !default;
  5256. .md-inline-form {
  5257. md-switch {
  5258. margin-top: 18px;
  5259. margin-bottom: 19px;
  5260. }
  5261. }
  5262. md-switch {
  5263. margin: $switch-margin 0;
  5264. white-space: nowrap;
  5265. cursor: pointer;
  5266. outline: none;
  5267. user-select: none;
  5268. height: 30px;
  5269. line-height: 28px;
  5270. align-items: center;
  5271. display: flex;
  5272. @include rtl(margin-left, inherit, $switch-margin);
  5273. @include rtl(margin-right, $switch-margin, inherit);
  5274. &:last-of-type {
  5275. @include rtl(margin-left, inherit, 0);
  5276. @include rtl(margin-right, 0, inherit);
  5277. }
  5278. &[disabled] {
  5279. cursor: default;
  5280. .md-container {
  5281. cursor: default;
  5282. }
  5283. }
  5284. .md-container {
  5285. cursor: grab;
  5286. width: $switch-width;
  5287. height: $switch-height;
  5288. position: relative;
  5289. user-select: none;
  5290. @include rtl-prop(margin-right, margin-left, 8px, 0px);
  5291. float: left;
  5292. }
  5293. &.md-inverted .md-container {
  5294. @include rtl(margin-right, initial, 8px);
  5295. @include rtl(margin-left, 8px, initial);
  5296. }
  5297. // If the user moves his mouse off the switch, stil display grabbing cursor
  5298. &:not([disabled]) {
  5299. .md-dragging,
  5300. &.md-dragging .md-container {
  5301. cursor: grabbing;
  5302. }
  5303. }
  5304. &.md-focused:not([disabled]) {
  5305. .md-thumb:before {
  5306. left: -8px;
  5307. top: -8px;
  5308. right: -8px;
  5309. bottom: -8px;
  5310. }
  5311. &:not(.md-checked) {
  5312. .md-thumb:before {
  5313. background-color: rgba(0, 0, 0, 0.12);
  5314. }
  5315. }
  5316. }
  5317. .md-label {
  5318. border-color: transparent;
  5319. border-width: 0;
  5320. float: left;
  5321. }
  5322. .md-bar {
  5323. left: 1px;
  5324. width: $switch-width - 2px;
  5325. top: $switch-height / 2 - $switch-bar-height / 2;
  5326. height: $switch-bar-height;
  5327. border-radius: 8px;
  5328. position: absolute;
  5329. }
  5330. .md-thumb-container {
  5331. top: $switch-height / 2 - $switch-thumb-size / 2;
  5332. left: 0;
  5333. width: $switch-width - $switch-thumb-size;
  5334. position: absolute;
  5335. transform: translate3d(0,0,0);
  5336. z-index: 1;
  5337. }
  5338. &.md-checked .md-thumb-container {
  5339. transform: translate3d(100%,0,0);
  5340. }
  5341. .md-thumb {
  5342. position: absolute;
  5343. margin: 0;
  5344. left: 0;
  5345. top: 0;
  5346. outline: none;
  5347. height: $switch-thumb-size;
  5348. width: $switch-thumb-size;
  5349. border-radius: 50%;
  5350. box-shadow: $whiteframe-shadow-1dp;
  5351. &:before {
  5352. background-color: transparent;
  5353. border-radius: 50%;
  5354. content: '';
  5355. position: absolute;
  5356. display: block;
  5357. height: auto;
  5358. left: 0;
  5359. top: 0;
  5360. right: 0;
  5361. bottom: 0;
  5362. transition: all 0.5s;
  5363. width: auto;
  5364. }
  5365. .md-ripple-container {
  5366. position: absolute;
  5367. display: block;
  5368. width: auto;
  5369. height: auto;
  5370. left: -$switch-thumb-size;
  5371. top: -$switch-thumb-size;
  5372. right: -$switch-thumb-size;
  5373. bottom: -$switch-thumb-size;
  5374. }
  5375. }
  5376. &:not(.md-dragging) {
  5377. .md-bar,
  5378. .md-thumb-container,
  5379. .md-thumb {
  5380. transition: $swift-linear;
  5381. transition-property: transform, background-color;
  5382. }
  5383. .md-bar,
  5384. .md-thumb {
  5385. transition-delay: 0.05s;
  5386. }
  5387. }
  5388. }
  5389. @media screen and (-ms-high-contrast: active) {
  5390. md-switch.md-default-theme .md-bar {
  5391. background-color: #666;
  5392. }
  5393. md-switch.md-default-theme.md-checked .md-bar {
  5394. background-color: #9E9E9E;
  5395. }
  5396. md-switch.md-default-theme .md-thumb {
  5397. background-color: #fff;
  5398. }
  5399. }
  5400. $tabs-paginator-width: $baseline-grid * 4 !default;
  5401. $tabs-tab-width: $baseline-grid * 12 !default;
  5402. $tabs-header-height: 48px !default;
  5403. @keyframes md-tab-content-hide {
  5404. 0% { opacity: 1; }
  5405. 50% { opacity: 1; }
  5406. 100% { opacity: 0; }
  5407. }
  5408. md-tab-data {
  5409. position: absolute;
  5410. top: 0;
  5411. left: 0;
  5412. right: 0;
  5413. bottom: 0;
  5414. z-index: -1;
  5415. opacity: 0;
  5416. }
  5417. md-tabs {
  5418. display: block;
  5419. margin: 0;
  5420. border-radius: 2px;
  5421. overflow: hidden;
  5422. position: relative;
  5423. flex-shrink: 0;
  5424. &:not(.md-no-tab-content):not(.md-dynamic-height) {
  5425. min-height: 200 + $tabs-header-height;
  5426. }
  5427. &[md-align-tabs="bottom"] {
  5428. padding-bottom: $tabs-header-height;
  5429. md-tabs-wrapper {
  5430. position: absolute;
  5431. bottom: 0;
  5432. left: 0;
  5433. right: 0;
  5434. height: $tabs-header-height;
  5435. z-index: 2;
  5436. }
  5437. md-tabs-content-wrapper {
  5438. top: 0;
  5439. bottom: $tabs-header-height;
  5440. }
  5441. }
  5442. &.md-dynamic-height {
  5443. md-tabs-content-wrapper {
  5444. min-height: 0;
  5445. position: relative;
  5446. top: auto;
  5447. left: auto;
  5448. right: auto;
  5449. bottom: auto;
  5450. overflow: visible;
  5451. }
  5452. md-tab-content {
  5453. &.md-active {
  5454. position: relative;
  5455. }
  5456. }
  5457. }
  5458. &[md-border-bottom] {
  5459. md-tabs-wrapper {
  5460. border-width: 0 0 1px;
  5461. border-style: solid;
  5462. }
  5463. &:not(.md-dynamic-height) {
  5464. md-tabs-content-wrapper {
  5465. top: $tabs-header-height + 1;
  5466. }
  5467. }
  5468. }
  5469. }
  5470. md-tabs-wrapper {
  5471. display: block;
  5472. position: relative;
  5473. // transform is needed for iOS Safari to prevent content from disappearing on scroll
  5474. transform: translate3d(0, 0, 0);
  5475. md-prev-button, md-next-button {
  5476. height: 100%;
  5477. width: $tabs-paginator-width;
  5478. position: absolute;
  5479. top: 50%;
  5480. transform: translateY(-50%);
  5481. line-height: 1em;
  5482. z-index: 2;
  5483. cursor: pointer;
  5484. font-size: 16px;
  5485. background: transparent no-repeat center center;
  5486. transition: $swift-ease-in-out;
  5487. &:focus {
  5488. outline: none;
  5489. }
  5490. &.md-disabled {
  5491. opacity: 0.25;
  5492. cursor: default;
  5493. }
  5494. &.ng-leave {
  5495. transition: none;
  5496. }
  5497. md-icon {
  5498. position: absolute;
  5499. top: 50%;
  5500. left: 50%;
  5501. transform: translate3d(-50%, -50%, 0);
  5502. }
  5503. }
  5504. md-prev-button {
  5505. @include rtl-prop(left, right, 0, auto);
  5506. background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==');
  5507. }
  5508. md-next-button {
  5509. @include rtl-prop(right, left, 0, auto);
  5510. background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K');
  5511. md-icon {
  5512. transform: translate3d(-50%, -50%, 0) rotate(180deg);
  5513. }
  5514. }
  5515. &.md-stretch-tabs {
  5516. md-pagination-wrapper {
  5517. width: 100%;
  5518. flex-direction: row;
  5519. md-tab-item {
  5520. flex-grow: 1;
  5521. }
  5522. }
  5523. }
  5524. }
  5525. md-tabs-canvas {
  5526. @include pie-clearfix;
  5527. position: relative;
  5528. overflow: hidden;
  5529. display: block;
  5530. height: $tabs-header-height;
  5531. .md-dummy-wrapper {
  5532. position: absolute;
  5533. top: 0;
  5534. @include rtl-prop(left, right, 0, auto);
  5535. }
  5536. &.md-paginated {
  5537. margin: 0 $tabs-paginator-width;
  5538. }
  5539. &.md-center-tabs {
  5540. display: flex;
  5541. flex-direction: column;
  5542. text-align: center;
  5543. .md-tab {
  5544. float: none;
  5545. display: inline-block;
  5546. }
  5547. }
  5548. }
  5549. md-pagination-wrapper {
  5550. @include pie-clearfix;
  5551. height: $tabs-header-height;
  5552. display: flex;
  5553. transition: transform $swift-ease-in-out-duration $swift-ease-in-out-timing-function;
  5554. position: absolute;
  5555. @include rtl-prop(left, right, 0, auto);
  5556. transform: translate3d(0, 0, 0);
  5557. &.md-center-tabs {
  5558. position: relative;
  5559. justify-content: center;
  5560. }
  5561. }
  5562. md-tabs-content-wrapper {
  5563. display: block;
  5564. position: absolute;
  5565. top: $tabs-header-height;
  5566. left: 0;
  5567. right: 0;
  5568. bottom: 0;
  5569. overflow: hidden;
  5570. }
  5571. md-tab-content {
  5572. display: flex;
  5573. position: absolute;
  5574. top: 0;
  5575. left: 0;
  5576. right: 0;
  5577. bottom: 0;
  5578. transition: transform $swift-ease-in-out-duration $swift-ease-in-out-timing-function;
  5579. overflow: auto;
  5580. // transform is needed for iOS Safari to prevent content from disappearing on scroll
  5581. transform: translate3d(0, 0, 0);
  5582. &.md-no-scroll {
  5583. bottom: auto;
  5584. overflow: hidden;
  5585. }
  5586. &.ng-leave, &.md-no-transition {
  5587. transition: none;
  5588. }
  5589. &.md-left:not(.md-active) {
  5590. @include rtl(transform, translateX(-100%), translateX(+100%));
  5591. animation: 2 * $swift-ease-in-out-duration md-tab-content-hide;
  5592. opacity: 0;
  5593. * {
  5594. transition: visibility 0s linear;
  5595. transition-delay: $swift-ease-in-out-duration;
  5596. visibility: hidden;
  5597. }
  5598. }
  5599. &.md-right:not(.md-active) {
  5600. @include rtl(transform, translateX(100%), translateX(-100%));
  5601. animation: 2 * $swift-ease-in-out-duration md-tab-content-hide;
  5602. opacity: 0;
  5603. * {
  5604. transition: visibility 0s linear;
  5605. transition-delay: $swift-ease-in-out-duration;
  5606. visibility: hidden;
  5607. }
  5608. }
  5609. > div {
  5610. flex: 1 0 100%;
  5611. min-width: 0;
  5612. &.ng-leave {
  5613. animation: 2 * $swift-ease-in-out-duration md-tab-content-hide;
  5614. }
  5615. }
  5616. }
  5617. md-ink-bar {
  5618. $duration: $swift-ease-in-out-duration * 0.5;
  5619. $multiplier: 0.5;
  5620. position: absolute;
  5621. left: auto;
  5622. right: auto;
  5623. bottom: 0;
  5624. height: 2px;
  5625. &.md-left {
  5626. transition: left ($duration * $multiplier) $swift-ease-in-out-timing-function,
  5627. right $duration $swift-ease-in-out-timing-function;
  5628. }
  5629. &.md-right {
  5630. transition: left $duration $swift-ease-in-out-timing-function,
  5631. right ($duration * $multiplier) $swift-ease-in-out-timing-function;
  5632. }
  5633. }
  5634. md-tab {
  5635. position: absolute;
  5636. z-index: -1;
  5637. left: -9999px;
  5638. }
  5639. .md-tab {
  5640. font-size: 14px;
  5641. text-align: center;
  5642. line-height: $tabs-header-height - 24;
  5643. padding: 12px 24px;
  5644. transition: background-color 0.35s $swift-ease-in-out-timing-function;
  5645. cursor: pointer;
  5646. white-space: nowrap;
  5647. position: relative;
  5648. text-transform: uppercase;
  5649. @include rtl(float, left, right);
  5650. font-weight: 500;
  5651. box-sizing: border-box;
  5652. overflow: hidden;
  5653. text-overflow: ellipsis;
  5654. &.md-focused {
  5655. box-shadow: none;
  5656. outline: none;
  5657. }
  5658. &.md-active {
  5659. cursor: default;
  5660. }
  5661. &.md-disabled {
  5662. pointer-events: none;
  5663. touch-action: pan-y;
  5664. user-select: none;
  5665. -webkit-user-drag: none;
  5666. opacity: 0.5;
  5667. cursor: default;
  5668. }
  5669. &.ng-leave {
  5670. transition: none;
  5671. }
  5672. }
  5673. md-toolbar + md-tabs {
  5674. border-top-left-radius: 0;
  5675. border-top-right-radius: 0;
  5676. }
  5677. // See height set globally, depended on by buttons
  5678. $md-toast-content-padding: 3 * $baseline-grid - $button-left-right-padding !default;
  5679. $md-toast-button-left-margin: 3 * $baseline-grid - 2 * $button-left-right-padding !default;
  5680. $md-toast-text-padding: $button-left-right-padding !default;
  5681. .md-toast-text {
  5682. padding: 0 $md-toast-text-padding;
  5683. }
  5684. md-toast {
  5685. position: absolute;
  5686. z-index: $z-index-toast;
  5687. box-sizing: border-box;
  5688. cursor: default;
  5689. overflow: hidden;
  5690. // Add some padding to the outer toast container so that the wrapper's box shadow is visible
  5691. padding: $toast-margin;
  5692. // Setup opacity transition on whole toast
  5693. opacity: 1;
  5694. transition: $swift-ease-out;
  5695. .md-toast-content {
  5696. display: flex;
  5697. direction: row;
  5698. align-items: center;
  5699. max-height: 7 * $toast-height;
  5700. max-width: 100%;
  5701. min-height: 48px;
  5702. // Since we're vertically centering our text by using flexbox and having a min-height, we need to apply
  5703. // a fix for an IE11 flexbug, otherwise the text won't be centered vertically.
  5704. @include ie11-min-height-flexbug(48px);
  5705. padding: 0 $md-toast-content-padding;
  5706. box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
  5707. border-radius: 2px;
  5708. font-size: 14px;
  5709. overflow: hidden;
  5710. // Setup for transform transitions on inner content
  5711. transform: translate3d(0, 0, 0) rotateZ(0deg);
  5712. transition: $swift-ease-out;
  5713. @include rtl(justify-content, flex-start, flex-end);
  5714. span {
  5715. // Layout [flex]
  5716. flex:1 1 0%;
  5717. box-sizing:border-box;
  5718. min-width :0;
  5719. }
  5720. }
  5721. &.md-capsule {
  5722. border-radius: 24px;
  5723. .md-toast-content {
  5724. border-radius: 24px;
  5725. }
  5726. }
  5727. &.ng-leave-active {
  5728. .md-toast-content {
  5729. transition: $swift-ease-in;
  5730. }
  5731. }
  5732. /* Transition differently when swiping */
  5733. &.md-swipeleft,
  5734. &.md-swiperight,
  5735. &.md-swipeup,
  5736. &.md-swipedown {
  5737. .md-toast-content {
  5738. transition: $swift-ease-out;
  5739. }
  5740. }
  5741. &.ng-enter {
  5742. opacity: 0;
  5743. .md-toast-content {
  5744. transform: translate3d(0, 100%, 0);
  5745. }
  5746. &.md-top {
  5747. .md-toast-content {
  5748. transform: translate3d(0, -100%, 0);
  5749. }
  5750. }
  5751. &.ng-enter-active {
  5752. opacity: 1;
  5753. .md-toast-content {
  5754. transform: translate3d(0, 0, 0);
  5755. }
  5756. }
  5757. }
  5758. /*
  5759. * When the toast doesn't take up the whole screen,
  5760. * make it rotate when the user swipes it away
  5761. */
  5762. &.ng-leave.ng-leave-active {
  5763. .md-toast-content {
  5764. opacity: 0;
  5765. transform: translate3d(0, 100%, 0);
  5766. }
  5767. &.md-swipeup {
  5768. .md-toast-content {
  5769. transform: translate3d(0, -50%, 0);
  5770. }
  5771. }
  5772. &.md-swipedown {
  5773. .md-toast-content {
  5774. transform: translate3d(0, 50%, 0);
  5775. }
  5776. }
  5777. &.md-top {
  5778. .md-toast-content {
  5779. transform: translate3d(0, -100%, 0);
  5780. }
  5781. }
  5782. }
  5783. .md-action {
  5784. line-height: 19px;
  5785. margin-left: 24px;
  5786. margin-right: 0;
  5787. cursor: pointer;
  5788. text-transform: uppercase;
  5789. float: right;
  5790. }
  5791. .md-button {
  5792. min-width: 0;
  5793. @include rtl(margin-right, 0, $md-toast-button-left-margin);
  5794. @include rtl(margin-left, $md-toast-button-left-margin, 0);
  5795. }
  5796. }
  5797. @media (max-width: $layout-breakpoint-sm - 1) {
  5798. md-toast {
  5799. left: 0;
  5800. right: 0;
  5801. width: 100%;
  5802. max-width: 100%;
  5803. min-width: 0;
  5804. border-radius: 0;
  5805. bottom: 0;
  5806. padding: 0;
  5807. &.ng-leave.ng-leave-active {
  5808. &.md-swipeup {
  5809. .md-toast-content {
  5810. transform: translate3d(0, -50%, 0);
  5811. }
  5812. }
  5813. &.md-swipedown {
  5814. .md-toast-content {
  5815. transform: translate3d(0, 50%, 0);
  5816. }
  5817. }
  5818. }
  5819. }
  5820. }
  5821. @media (min-width: $layout-breakpoint-sm) {
  5822. md-toast {
  5823. min-width: 288px + $toast-margin * 2;
  5824. &.md-bottom {
  5825. bottom: 0;
  5826. }
  5827. &.md-left {
  5828. left: 0;
  5829. }
  5830. &.md-right {
  5831. right: 0;
  5832. }
  5833. &.md-top {
  5834. top: 0;
  5835. }
  5836. // Support for RTL alignment
  5837. &._md-start {
  5838. @include rtl-prop(left, right, 0, auto);
  5839. }
  5840. &._md-end {
  5841. @include rtl-prop(right, left, 0, auto);
  5842. }
  5843. /*
  5844. * When the toast doesn't take up the whole screen,
  5845. * make it rotate when the user swipes it away
  5846. */
  5847. &.ng-leave.ng-leave-active {
  5848. &.md-swipeleft {
  5849. .md-toast-content {
  5850. transform: translate3d(-50%, 0, 0);
  5851. }
  5852. }
  5853. &.md-swiperight {
  5854. .md-toast-content {
  5855. transform: translate3d(50%, 0, 0);
  5856. }
  5857. }
  5858. }
  5859. }
  5860. }
  5861. @media (min-width: $layout-breakpoint-lg) {
  5862. md-toast {
  5863. .md-toast-content {
  5864. max-width: $baseline-grid * 71;
  5865. }
  5866. }
  5867. }
  5868. @media screen and (-ms-high-contrast: active) {
  5869. md-toast {
  5870. border: 1px solid #fff;
  5871. }
  5872. }
  5873. // While animating, set the toast parent's overflow to hidden so scrollbars do not appear
  5874. .md-toast-animating {
  5875. overflow: hidden !important;
  5876. }
  5877. // Standard/Desktop Heights
  5878. $md-toolbar-height: $baseline-grid * 8 !default;
  5879. $md-toolbar-medium-tall-height: 88px !default;
  5880. $md-toolbar-tall-height: 128px !default;
  5881. // Mobile device heights
  5882. $md-toolbar-height-mobile-portrait: 56px !default;
  5883. $md-toolbar-height-mobile-landscape: 48px !default;
  5884. $md-toolbar-indent-margin: 64px !default;
  5885. $md-toolbar-padding: 16px !default;
  5886. $icon-button-margin-offset: rem(-0.800) !default;
  5887. md-toolbar {
  5888. box-sizing: border-box;
  5889. display: flex;
  5890. flex-direction: column;
  5891. position: relative;
  5892. z-index: 2;
  5893. font-size: rem(2.0);
  5894. min-height: $md-toolbar-height;
  5895. width: 100%;
  5896. &._md-toolbar-transitions {
  5897. transition-duration: $swift-ease-in-out-duration;
  5898. transition-timing-function: $swift-ease-in-out-timing-function;
  5899. transition-property: background-color, fill, color;
  5900. }
  5901. &.md-whiteframe-z1-add, &.md-whiteframe-z1-remove {
  5902. transition: box-shadow $swift-ease-in-out-duration linear;
  5903. }
  5904. md-toolbar-filler {
  5905. width: 9 * $baseline-grid;
  5906. }
  5907. *,
  5908. *:before,
  5909. *:after {
  5910. box-sizing: border-box;
  5911. }
  5912. // By default $ngAnimate looks for transition durations on the element, when using ng-hide, ng-if, ng-show.
  5913. // The toolbar has a transition duration applied, which means, that $ngAnimate delays the hide process.
  5914. // To avoid this, we need to reset the transition, when $ngAnimate looks for the duration.
  5915. &.ng-animate {
  5916. transition: none;
  5917. }
  5918. &.md-tall {
  5919. height: $md-toolbar-tall-height;
  5920. min-height: $md-toolbar-tall-height;
  5921. max-height: $md-toolbar-tall-height;
  5922. }
  5923. &.md-medium-tall {
  5924. height: $md-toolbar-medium-tall-height;
  5925. min-height: $md-toolbar-medium-tall-height;
  5926. max-height: $md-toolbar-medium-tall-height;
  5927. .md-toolbar-tools {
  5928. height: 48px;
  5929. min-height: 48px;
  5930. max-height: 48px;
  5931. }
  5932. }
  5933. > .md-indent {
  5934. @include rtl-prop(margin-left, margin-right, $md-toolbar-indent-margin, auto);
  5935. }
  5936. ~ md-content {
  5937. > md-list {
  5938. padding: 0;
  5939. md-list-item:last-child {
  5940. md-divider {
  5941. display: none;
  5942. }
  5943. }
  5944. }
  5945. }
  5946. }
  5947. .md-toolbar-tools {
  5948. font-size: $title-font-size-base;
  5949. letter-spacing: 0.005em;
  5950. box-sizing: border-box;
  5951. font-weight: 400;
  5952. display: flex;
  5953. align-items: center;
  5954. flex-direction: row;
  5955. width: 100%;
  5956. height: $md-toolbar-height;
  5957. max-height: $md-toolbar-height;
  5958. padding: 0 $md-toolbar-padding;
  5959. margin: 0;
  5960. h1, h2, h3 {
  5961. font-size: inherit;
  5962. font-weight: inherit;
  5963. margin: inherit;
  5964. }
  5965. a {
  5966. color: inherit;
  5967. text-decoration: none;
  5968. }
  5969. .fill-height {
  5970. display: flex;
  5971. align-items: center;
  5972. }
  5973. md-checkbox {
  5974. margin: inherit;
  5975. }
  5976. .md-button {
  5977. margin-top: 0;
  5978. margin-bottom: 0;
  5979. &, &.md-icon-button md-icon {
  5980. transition-duration: $swift-ease-in-out-duration;
  5981. transition-timing-function: $swift-ease-in-out-timing-function;
  5982. transition-property: background-color, fill, color;
  5983. // Normally .md-button is already resetting the transition, when $ngAnimate looks for the duration,
  5984. // but in this case, the selector has a higher specificity than the `reset selector`, which means, that
  5985. // we need to reset the transition our self.
  5986. &.ng-animate {
  5987. transition: none;
  5988. }
  5989. }
  5990. }
  5991. &> .md-button:first-child {
  5992. @include rtl-prop(margin-left, margin-right, $icon-button-margin-offset, auto);
  5993. }
  5994. &> .md-button:last-child {
  5995. @include rtl-prop(margin-right, margin-left, $icon-button-margin-offset, auto);
  5996. }
  5997. &> md-menu:last-child {
  5998. @include rtl-prop(margin-right, margin-left, $icon-button-margin-offset, auto);
  5999. & > .md-button {
  6000. @include rtl-prop(margin-right, margin-left, 0, auto);
  6001. }
  6002. }
  6003. @media screen and (-ms-high-contrast: active) {
  6004. border-bottom: 1px solid #fff;
  6005. }
  6006. }
  6007. // Handle mobile portrait
  6008. @media (min-width: 0) and (max-width: $layout-breakpoint-sm - 1) and (orientation: portrait) {
  6009. md-toolbar {
  6010. min-height: $md-toolbar-height-mobile-portrait;
  6011. }
  6012. .md-toolbar-tools {
  6013. height: $md-toolbar-height-mobile-portrait;
  6014. max-height: $md-toolbar-height-mobile-portrait;
  6015. }
  6016. }
  6017. // Handle mobile landscape
  6018. @media (min-width: 0) and (max-width: $layout-breakpoint-sm - 1) and (orientation: landscape) {
  6019. md-toolbar {
  6020. min-height: $md-toolbar-height-mobile-landscape;
  6021. }
  6022. .md-toolbar-tools {
  6023. height: $md-toolbar-height-mobile-landscape;
  6024. max-height: $md-toolbar-height-mobile-landscape;
  6025. }
  6026. }
  6027. $tooltip-fontsize-lg: 10px !default;
  6028. $tooltip-fontsize-sm: 14px !default;
  6029. $tooltip-height-lg: 22px !default;
  6030. $tooltip-height-sm: 32px !default;
  6031. $tooltip-top-margin-lg: 14px !default;
  6032. $tooltip-top-margin-sm: 24px !default;
  6033. $tooltip-lr-padding-lg: 8px !default;
  6034. $tooltip-lr-padding-sm: 16px !default;
  6035. $tooltip-max-width: 32px !default;
  6036. .md-tooltip {
  6037. pointer-events: none;
  6038. border-radius: 4px;
  6039. overflow: hidden;
  6040. opacity: 0;
  6041. font-weight: 500;
  6042. font-size: $tooltip-fontsize-sm;
  6043. white-space: nowrap;
  6044. text-overflow: ellipsis;
  6045. height: $tooltip-height-sm;
  6046. line-height: $tooltip-height-sm;
  6047. padding-right: $tooltip-lr-padding-sm;
  6048. padding-left: $tooltip-lr-padding-sm;
  6049. &.md-origin-top {
  6050. transform-origin: center bottom;
  6051. margin-top: -$tooltip-top-margin-sm;
  6052. }
  6053. &.md-origin-right {
  6054. transform-origin: left center;
  6055. margin-left: $tooltip-top-margin-sm;
  6056. }
  6057. &.md-origin-bottom {
  6058. transform-origin: center top;
  6059. margin-top: $tooltip-top-margin-sm;
  6060. }
  6061. &.md-origin-left {
  6062. transform-origin: right center;
  6063. margin-left: -$tooltip-top-margin-sm;
  6064. }
  6065. @media (min-width: $layout-breakpoint-sm) {
  6066. font-size: $tooltip-fontsize-lg;
  6067. height: $tooltip-height-lg;
  6068. line-height: $tooltip-height-lg;
  6069. padding-right: $tooltip-lr-padding-lg;
  6070. padding-left: $tooltip-lr-padding-lg;
  6071. &.md-origin-top { margin-top: -$tooltip-top-margin-lg; }
  6072. &.md-origin-right { margin-left: $tooltip-top-margin-lg; }
  6073. &.md-origin-bottom { margin-top: $tooltip-top-margin-lg; }
  6074. &.md-origin-left { margin-left: -$tooltip-top-margin-lg; }
  6075. }
  6076. &.md-show-add {
  6077. transform: scale(0);
  6078. }
  6079. &.md-show {
  6080. transition: $swift-ease-out;
  6081. transform: scale(1);
  6082. opacity: 0.9;
  6083. }
  6084. &.md-hide {
  6085. transition: $swift-ease-in;
  6086. transition-duration: .1s;
  6087. transform: scale(0);
  6088. opacity: 0;
  6089. }
  6090. }
  6091. .md-truncate {
  6092. overflow: hidden;
  6093. white-space: nowrap;
  6094. // Default overflow is ellipsis
  6095. text-overflow: ellipsis;
  6096. // Allow override to use clipping
  6097. &.md-clip {
  6098. text-overflow: clip;
  6099. }
  6100. // This is a flex-specific hack that forces the element to only take up available space.
  6101. &.flex {
  6102. width: 0;
  6103. }
  6104. }
  6105. $virtual-repeat-scrollbar-width: 16px !default;
  6106. .md-virtual-repeat-container {
  6107. box-sizing: border-box;
  6108. display: block;
  6109. margin: 0;
  6110. overflow: hidden;
  6111. padding: 0;
  6112. position: relative;
  6113. .md-virtual-repeat-scroller {
  6114. bottom: 0;
  6115. box-sizing: border-box;
  6116. left: 0;
  6117. margin: 0;
  6118. overflow-x: hidden;
  6119. padding: 0;
  6120. position: absolute;
  6121. right: 0;
  6122. top: 0;
  6123. -webkit-overflow-scrolling: touch;
  6124. }
  6125. .md-virtual-repeat-sizer {
  6126. box-sizing: border-box;
  6127. height: 1px;
  6128. display: block;
  6129. margin: 0;
  6130. padding: 0;
  6131. width: 1px;
  6132. }
  6133. .md-virtual-repeat-offsetter {
  6134. box-sizing: border-box;
  6135. left: 0;
  6136. margin: 0;
  6137. padding: 0;
  6138. position: absolute;
  6139. right: 0;
  6140. top: 0;
  6141. }
  6142. }
  6143. .md-virtual-repeat-container.md-orient-horizontal {
  6144. .md-virtual-repeat-scroller {
  6145. overflow-x: auto;
  6146. overflow-y: hidden;
  6147. }
  6148. .md-virtual-repeat-offsetter {
  6149. // Leave room for the scroll bar.
  6150. // TODO: Will probably need to perform measurements at runtime.
  6151. bottom: $virtual-repeat-scrollbar-width;
  6152. @include rtl-prop(right, left, auto, auto);
  6153. white-space: nowrap;
  6154. }
  6155. }
  6156. .md-whiteframe-1dp, .md-whiteframe-z1 {
  6157. box-shadow: $whiteframe-shadow-1dp;
  6158. }
  6159. .md-whiteframe-2dp {
  6160. box-shadow: $whiteframe-shadow-2dp;
  6161. }
  6162. .md-whiteframe-3dp {
  6163. box-shadow: $whiteframe-shadow-3dp;
  6164. }
  6165. .md-whiteframe-4dp, .md-whiteframe-z2{
  6166. box-shadow: $whiteframe-shadow-4dp;
  6167. }
  6168. .md-whiteframe-5dp {
  6169. box-shadow: $whiteframe-shadow-5dp;
  6170. }
  6171. .md-whiteframe-6dp {
  6172. box-shadow: $whiteframe-shadow-6dp;
  6173. }
  6174. .md-whiteframe-7dp, .md-whiteframe-z3 {
  6175. box-shadow: $whiteframe-shadow-7dp;
  6176. }
  6177. .md-whiteframe-8dp {
  6178. box-shadow: $whiteframe-shadow-8dp;
  6179. }
  6180. .md-whiteframe-9dp {
  6181. box-shadow: $whiteframe-shadow-9dp;
  6182. }
  6183. .md-whiteframe-10dp, .md-whiteframe-z4 {
  6184. box-shadow: $whiteframe-shadow-10dp;
  6185. }
  6186. .md-whiteframe-11dp {
  6187. box-shadow: $whiteframe-shadow-11dp;
  6188. }
  6189. .md-whiteframe-12dp {
  6190. box-shadow: $whiteframe-shadow-12dp;
  6191. }
  6192. .md-whiteframe-13dp, .md-whiteframe-z5{
  6193. box-shadow: $whiteframe-shadow-13dp;
  6194. }
  6195. .md-whiteframe-14dp {
  6196. box-shadow: $whiteframe-shadow-14dp;
  6197. }
  6198. .md-whiteframe-15dp {
  6199. box-shadow: $whiteframe-shadow-15dp;
  6200. }
  6201. .md-whiteframe-16dp {
  6202. box-shadow: $whiteframe-shadow-16dp;
  6203. }
  6204. .md-whiteframe-17dp {
  6205. box-shadow: $whiteframe-shadow-17dp;
  6206. }
  6207. .md-whiteframe-18dp {
  6208. box-shadow: $whiteframe-shadow-18dp;
  6209. }
  6210. .md-whiteframe-19dp {
  6211. box-shadow: $whiteframe-shadow-19dp;
  6212. }
  6213. .md-whiteframe-20dp {
  6214. box-shadow: $whiteframe-shadow-20dp;
  6215. }
  6216. .md-whiteframe-21dp {
  6217. box-shadow: $whiteframe-shadow-21dp;
  6218. }
  6219. .md-whiteframe-22dp {
  6220. box-shadow: $whiteframe-shadow-22dp;
  6221. }
  6222. .md-whiteframe-23dp {
  6223. box-shadow: $whiteframe-shadow-23dp;
  6224. }
  6225. .md-whiteframe-24dp {
  6226. box-shadow: $whiteframe-shadow-24dp;
  6227. }
  6228. @media screen and (-ms-high-contrast: active) {
  6229. md-whiteframe {
  6230. border: 1px solid #fff;
  6231. }
  6232. }
  6233. @media print {
  6234. md-whiteframe, [md-whiteframe] {
  6235. background-color: #ffffff;
  6236. }
  6237. }
  6238. /*
  6239. * Since Layout API uses ng-cloak to hide the dom elements while layouts are adjusted
  6240. *
  6241. */
  6242. [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
  6243. display: none !important;
  6244. }
  6245. /*
  6246. *
  6247. * Responsive attributes
  6248. *
  6249. * References:
  6250. * 1) https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties#flex
  6251. * 2) https://css-tricks.com/almanac/properties/f/flex/
  6252. * 3) https://css-tricks.com/snippets/css/a-guide-to-flexbox/
  6253. * 4) https://github.com/philipwalton/flexbugs#3-min-height-on-a-flex-container-wont-apply-to-its-flex-items
  6254. * 5) http://godban.com.ua/projects/flexgrid
  6255. *
  6256. *
  6257. */
  6258. @-moz-document url-prefix() {
  6259. .layout-fill {
  6260. margin: 0;
  6261. width: 100%;
  6262. min-height: 100%;
  6263. height: 100%;
  6264. }
  6265. }
  6266. /*
  6267. * Apply Mixins to create Layout/Flexbox styles
  6268. *
  6269. */
  6270. @include layouts_for_breakpoint();
  6271. @include layout-padding-margin();
  6272. /**
  6273. * `hide-gt-sm show-gt-lg` should hide from 600px to 1200px
  6274. * `show-md hide-gt-sm` should show from 0px to 960px and hide at >960px
  6275. * `hide-gt-md show-gt-sm` should show everywhere (show overrides hide)`
  6276. *
  6277. * hide means hide everywhere
  6278. * Sizes:
  6279. * $layout-breakpoint-xs: 600px !default;
  6280. * $layout-breakpoint-sm: 960px !default;
  6281. * $layout-breakpoint-md: 1280px !default;
  6282. * $layout-breakpoint-lg: 1920px !default;
  6283. */
  6284. @media (max-width: $layout-breakpoint-xs - 1) {
  6285. // Xtra-SMALL SCREEN
  6286. .hide-xs, .hide {
  6287. &:not(.show-xs):not(.show) {
  6288. display: none;
  6289. }
  6290. }
  6291. @include layouts_for_breakpoint(xs);
  6292. }
  6293. @media (min-width: $layout-breakpoint-xs) {
  6294. // BIGGER THAN Xtra-SMALL SCREEN
  6295. @include layouts_for_breakpoint(gt-xs);
  6296. }
  6297. @media (min-width: $layout-breakpoint-xs) and (max-width: $layout-breakpoint-sm - 1) {
  6298. .hide, .hide-gt-xs {
  6299. &:not(.show-gt-xs):not(.show-sm):not(.show) {
  6300. display: none;
  6301. }
  6302. }
  6303. .hide-sm:not(.show-gt-xs):not(.show-sm):not(.show) {
  6304. display: none;
  6305. }
  6306. @include layouts_for_breakpoint(sm);
  6307. }
  6308. @media (min-width: $layout-breakpoint-sm) {
  6309. // BIGGER THAN SMALL SCREEN
  6310. @include layouts_for_breakpoint(gt-sm);
  6311. }
  6312. @media (min-width: $layout-breakpoint-sm) and (max-width: $layout-breakpoint-md - 1) {
  6313. // MEDIUM SCREEN
  6314. .hide, .hide-gt-xs, .hide-gt-sm {
  6315. &:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show) {
  6316. display: none;
  6317. }
  6318. }
  6319. .hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show) {
  6320. display: none;
  6321. }
  6322. @include layouts_for_breakpoint(md);
  6323. }
  6324. @media (min-width: $layout-breakpoint-md) {
  6325. // BIGGER THAN MEDIUM SCREEN
  6326. @include layouts_for_breakpoint(gt-md);
  6327. }
  6328. @media (min-width: $layout-breakpoint-md) and (max-width: $layout-breakpoint-lg - 1) {
  6329. // LARGE SCREEN
  6330. .hide,.hide-gt-xs, .hide-gt-sm, .hide-gt-md {
  6331. &:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show) {
  6332. display: none;
  6333. }
  6334. }
  6335. .hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show) {
  6336. display: none;
  6337. }
  6338. @include layouts_for_breakpoint(lg);
  6339. }
  6340. @media (min-width: $layout-breakpoint-lg) {
  6341. @include layouts_for_breakpoint(gt-lg);
  6342. @include layouts_for_breakpoint(xl);
  6343. // BIGGER THAN LARGE SCREEN
  6344. .hide, .hide-gt-xs, .hide-gt-sm, .hide-gt-md, .hide-gt-lg {
  6345. &:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show) {
  6346. display: none;
  6347. }
  6348. }
  6349. .hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show) {
  6350. display: none;
  6351. }
  6352. }
  6353. // General printing Rules
  6354. @media print {
  6355. .hide-print:not(.show-print):not(.show) {
  6356. display: none !important;
  6357. }
  6358. }