|
| 1 | +/// Mixin for standard `appearance` property |
| 2 | +@mixin appearance($value) { |
| 3 | + -moz-appearance: $value; |
| 4 | + -webkit-appearance: $value; |
| 5 | + appearance: $value; |
| 6 | +} |
| 7 | + |
| 8 | +/// Mixin for standard `:focus-visible` pseudo-class |
| 9 | +@mixin focus-visible { |
| 10 | + // Firefox uses non-standard selector |
| 11 | + &:-moz-focusring { @content; } |
| 12 | + // standards-compliant selector |
| 13 | + &:focus-visible { @content; } |
| 14 | +} |
| 15 | + |
| 16 | +/// Mixin for standard `::placeholder` pseudo-element |
| 17 | +/// https://developer.mozilla.org/en-US/docs/Web/CSS/::placeholder#Browser_compatibility |
| 18 | +/// https://css-tricks.com/snippets/css/style-placeholder-text/ |
| 19 | +@mixin placeholder { |
| 20 | + // Firefox (< 51) |
| 21 | + &::-moz-placeholder { @content; } |
| 22 | + // Edge |
| 23 | + &::-ms-input-placeholder { @content; } |
| 24 | + // Chrome (< 57), Opera (< 44), Safari (< 10.1), Edge |
| 25 | + &::-webkit-input-placeholder { @content; } |
| 26 | + // standards-compliant selector |
| 27 | + &::placeholder { @content; } |
| 28 | +} |
| 29 | + |
| 30 | +/// Mixin for standard `:placeholder-shown` pseudo-class |
| 31 | +/// https://developer.mozilla.org/en-US/docs/Web/CSS/:placeholder-shown#Browser_compatibility |
| 32 | +// |
| 33 | +/// - Edge hasn't added support for ANY selector |
| 34 | +@mixin placeholder-shown { |
| 35 | + // Firefox (< 51) uses non-standard, prefixed selector |
| 36 | + &:-moz-placeholder { @content; } |
| 37 | + // IE10+ uses non-standard, prefixed selector |
| 38 | + &:-ms-input-placeholder { @content; } |
| 39 | + // standards-compliant selector |
| 40 | + &:placeholder-shown { @content; } |
| 41 | +} |
| 42 | + |
| 43 | +/// -------------------- TRAITS -------------------- |
| 44 | + |
| 45 | +@mixin is-positionable { // replaces #Positionable.base() |
| 46 | + display: none; |
| 47 | + left: 0; |
| 48 | + position: fixed; |
| 49 | + top: 0; |
| 50 | + |
| 51 | + &[open] { |
| 52 | + margin: 0; |
| 53 | + } |
| 54 | +} |
| 55 | + |
| 56 | +/// -------------------- LEGACY -------------------- |
| 57 | + |
| 58 | +@mixin reset-focus { // replaces #Mix.resetFocus() |
| 59 | + &::-moz-focus-inner { |
| 60 | + border: 0; |
| 61 | + outline: none; |
| 62 | + } |
| 63 | + |
| 64 | + &:focus { |
| 65 | + outline: none; |
| 66 | + } |
| 67 | +} |
0 commit comments