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.

7352 lines
173 KiB

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