compass 0.13.alpha.7 → 0.13.alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION.yml +1 -1
  3. data/frameworks/compass/stylesheets/compass/_support.scss +136 -62
  4. data/frameworks/compass/stylesheets/compass/css3/_box-shadow.scss +1 -1
  5. data/frameworks/compass/stylesheets/compass/css3/_flexbox.scss +11 -2
  6. data/frameworks/compass/stylesheets/compass/css3/_inline-block.scss +2 -2
  7. data/frameworks/compass/stylesheets/compass/css3/_opacity.scss +1 -1
  8. data/frameworks/compass/stylesheets/compass/css3/_user-interface.scss +1 -1
  9. data/frameworks/compass/stylesheets/compass/typography/lists/_horizontal-list.scss +2 -2
  10. data/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss +1 -1
  11. data/frameworks/compass/stylesheets/compass/utilities/general/_float.scss +3 -3
  12. data/frameworks/compass/stylesheets/compass/utilities/general/_hacks.scss +6 -6
  13. data/lib/compass/browser_support.rb +2 -2
  14. data/lib/compass/caniuse.rb +55 -19
  15. data/lib/compass/sass_extensions/functions/cross_browser_support.rb +34 -10
  16. data/test/fixtures/stylesheets/compass/css/animation-with-legacy-ie.css +0 -3
  17. data/test/fixtures/stylesheets/compass/css/animation.css +0 -3
  18. data/test/fixtures/stylesheets/compass/css/filters.css +30 -6
  19. data/test/fixtures/stylesheets/compass/css/gradients.css +7 -2
  20. data/test/fixtures/stylesheets/compass/css/support.css +23 -16
  21. data/test/fixtures/stylesheets/compass/sass/support.scss +45 -8
  22. data/test/fixtures/stylesheets/envtest/tmp/env.css +3 -3
  23. data/test/units/caniuse_test.rb +29 -10
  24. metadata +3 -91
  25. data/test/fixtures/stylesheets/compass/tmp/animation-with-legacy-ie.css +0 -22
  26. data/test/fixtures/stylesheets/compass/tmp/animation.css +0 -22
  27. data/test/fixtures/stylesheets/compass/tmp/appearance.css +0 -3
  28. data/test/fixtures/stylesheets/compass/tmp/background-clip.css +0 -11
  29. data/test/fixtures/stylesheets/compass/tmp/background-origin.css +0 -11
  30. data/test/fixtures/stylesheets/compass/tmp/background-size.css +0 -17
  31. data/test/fixtures/stylesheets/compass/tmp/border_radius.css +0 -14
  32. data/test/fixtures/stylesheets/compass/tmp/box-sizing.css +0 -9
  33. data/test/fixtures/stylesheets/compass/tmp/box.css +0 -103
  34. data/test/fixtures/stylesheets/compass/tmp/box_shadow.css +0 -24
  35. data/test/fixtures/stylesheets/compass/tmp/brightness.css +0 -14
  36. data/test/fixtures/stylesheets/compass/tmp/browser-support.css +0 -306
  37. data/test/fixtures/stylesheets/compass/tmp/color.css +0 -18
  38. data/test/fixtures/stylesheets/compass/tmp/columns.css +0 -134
  39. data/test/fixtures/stylesheets/compass/tmp/filters.css +0 -29
  40. data/test/fixtures/stylesheets/compass/tmp/flexbox.css +0 -94
  41. data/test/fixtures/stylesheets/compass/tmp/fonts.css +0 -4
  42. data/test/fixtures/stylesheets/compass/tmp/force-wrap.css +0 -9
  43. data/test/fixtures/stylesheets/compass/tmp/gradients.css +0 -230
  44. data/test/fixtures/stylesheets/compass/tmp/grid_background.css +0 -64
  45. data/test/fixtures/stylesheets/compass/tmp/hyphenation.css +0 -16
  46. data/test/fixtures/stylesheets/compass/tmp/image_size.css +0 -15
  47. data/test/fixtures/stylesheets/compass/tmp/images.css +0 -8
  48. data/test/fixtures/stylesheets/compass/tmp/layout.css +0 -16
  49. data/test/fixtures/stylesheets/compass/tmp/legacy_clearfix.css +0 -26
  50. data/test/fixtures/stylesheets/compass/tmp/lists.css +0 -145
  51. data/test/fixtures/stylesheets/compass/tmp/opacity.css +0 -3
  52. data/test/fixtures/stylesheets/compass/tmp/print.css +0 -11
  53. data/test/fixtures/stylesheets/compass/tmp/regions.css +0 -9
  54. data/test/fixtures/stylesheets/compass/tmp/replacement.css +0 -59
  55. data/test/fixtures/stylesheets/compass/tmp/reset.css +0 -59
  56. data/test/fixtures/stylesheets/compass/tmp/selection.css +0 -50
  57. data/test/fixtures/stylesheets/compass/tmp/sprites.css +0 -1263
  58. data/test/fixtures/stylesheets/compass/tmp/sprites_with_explicit_separator.css +0 -16
  59. data/test/fixtures/stylesheets/compass/tmp/stretching.css +0 -66
  60. data/test/fixtures/stylesheets/compass/tmp/support.css +0 -59
  61. data/test/fixtures/stylesheets/compass/tmp/text_shadow.css +0 -29
  62. data/test/fixtures/stylesheets/compass/tmp/transform.css +0 -369
  63. data/test/fixtures/stylesheets/compass/tmp/transition.css +0 -116
  64. data/test/fixtures/stylesheets/compass/tmp/typography/links/hover-link.css +0 -4
  65. data/test/fixtures/stylesheets/compass/tmp/units.css +0 -30
  66. data/test/fixtures/stylesheets/compass/tmp/user-interface.css +0 -52
  67. data/test/fixtures/stylesheets/compass/tmp/utilities.css +0 -71
  68. data/test/fixtures/stylesheets/compass/tmp/vertical_rhythm.css +0 -211
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9cb2c25aab9972f00bc90b48de64f70daf7c5801
4
- data.tar.gz: 6c301558b8cbbbdce551ba058f1fa9b46d78e91a
3
+ metadata.gz: 7d6c6dd7481ec7877855d168f9505d10186b7a51
4
+ data.tar.gz: 80fc296eb971444658894a328e313ea2331df706
5
5
  SHA512:
6
- metadata.gz: 56698b053e206068650efe76548a2b72b81dc57bd5a33f97bc9f33ec8696783923c2bdb593a242b77fee5ccffa240bfdd91b4871b7dcf3938c96d9ebb4f61486
7
- data.tar.gz: 03a907e91daace15ce4fa2a016071b2c626764f0f006fcb455c597cdc14a1d864434ee8ff74cf475af56cc352428df535e2bfe0ee5f9b66dd28b0ff03f2c2711
6
+ metadata.gz: 309c62c39207648d3e586f7ff575aaea385ec13886b9013563da2ff4e99c19881078cd6284b40b7cc07809af4c2a82514fde27ac8ed085325c947cb071d045fa
7
+ data.tar.gz: f326bcd541902ba48d3a0fd06e56b802974a73172bc1ec78d9d6b0306a4fe9015e368ceede9d4d456996a5bf0105a5adb79417e3b848568f15780b0d9a11a78d
@@ -2,5 +2,5 @@
2
2
  :major: 0
3
3
  :minor: 13
4
4
  :state: alpha
5
- :iteration: 7
5
+ :iteration: 8
6
6
  :name: Markab
@@ -32,12 +32,19 @@ $default-capability-options: (
32
32
  (partial-support: true)
33
33
  );
34
34
 
35
- // When a prefix is in a selector or directive scope, this is set to the current prefix value.
35
+ // When a prefix in in context, but there is no current prefix
36
+ // That context is recorded here so other prefixes can be avoided.
37
+ $prefix-context: null;
38
+
39
+ // When a prefix is in a selector or directive scope, this is set to the
40
+ // current prefix value. When `null`, either there is no prefix in scope
41
+ // or the official prefix is being rendered. The `$prefix-context`
42
+ // variable can be used to make that distinction.
36
43
  $current-prefix: null;
37
44
 
38
45
  // When in a context that only exists in a particular version
39
46
  // this variable is set to those versions.
40
- $current-browser-minimum-versions: ();
47
+ $current-browser-versions: ();
41
48
 
42
49
  // The legacy support CSS 2.1 Selectors.
43
50
  // Defaults to the $critical-usage-threshold.
@@ -47,21 +54,23 @@ $css-sel2-support-threshold: $critical-usage-threshold !default;
47
54
  @function browser-out-of-scope($browser, $version: null) {
48
55
  @if not ($current-prefix == null or $current-prefix == browser-prefix($browser)) {
49
56
  @if $debug-browser-support {
50
- @return "The #{$browser} #{$version} is incompatible with #{$current-prefix}."
57
+ @return "#{$browser} #{$version} is incompatible with #{$current-prefix}."
51
58
  } @else {
52
59
  @return true;
53
60
  }
54
61
  }
55
- $current-min: map-get($current-browser-minimum-versions, $browser);
56
- @if not ($version and $current-min) {
62
+ $current-range: map-get($current-browser-versions, $browser);
63
+ $current-min: if($current-range, nth($current-range, 1), null);
64
+ $current-max: if($current-range, nth($current-range, 2), null);
65
+ @if not ($version and $current-max) {
57
66
  // We don't have any versions to compare
58
67
  @return false;
59
68
  } @else {
60
69
  // If the version is less than the current min, it is not supported
61
- $too-old: compare-browser-versions($browser, $version, $current-min) < 0;
70
+ $too-old: compare-browser-versions($browser, $version, $current-max) < 0;
62
71
  @if $too-old {
63
72
  @if $debug-browser-support {
64
- @return "The current scope only works with #{$browser} #{$current-min} or greater.";
73
+ @return "The current scope only works with #{display-browser-range($browser, $current-min, $current-max)}.";
65
74
  } @else {
66
75
  @return true;
67
76
  }
@@ -73,48 +82,60 @@ $css-sel2-support-threshold: $critical-usage-threshold !default;
73
82
 
74
83
  // Check whether the browser is supported according to the declared minimum support
75
84
  // and usage thresholds.
76
- @function support-legacy-browser($browser, $version, $threshold: $critical-usage-threshold) {
85
+ @function support-legacy-browser($browser, $min-version, $max-version: null, $threshold: $critical-usage-threshold) {
77
86
  // Check agaist usage stats and declared minimums
78
- $min-version: map-get($browser-minimum-versions, $browser);
79
- @return omitted-usage($browser, $version) > $threshold or
80
- ($min-version and compare-browser-versions($browser, $version, $min-version) >= 0);
87
+ $min-required-version: map-get($browser-minimum-versions, $browser);
88
+ $usage: if($max-version,
89
+ omitted-usage($browser, $min-version, $max-version),
90
+ omitted-usage($browser, $min-version));
91
+ @return $usage > $threshold or
92
+ ($min-required-version and
93
+ compare-browser-versions($browser, $max-version or $min-version, $min-required-version) >= 0);
81
94
  }
82
95
 
83
96
  // Include content for a legacy browser
84
97
  // Version can be a single version string or a list of versions ordered from oldest to newest.
85
- @mixin for-legacy-browser($browser, $version, $threshold: $critical-usage-threshold, $mins: ($browser: $version)) {
86
- $latest-version: nth($version, -1);
87
- @if not browser-out-of-scope($browser, $latest-version) and
88
- support-legacy-browser($browser, $latest-version, $threshold)
98
+ @mixin for-legacy-browser($browser, $min-version, $max-version: $min-version,
99
+ $threshold: $critical-usage-threshold,
100
+ $ranges: ($browser: $min-version $max-version)) {
101
+ @if not browser-out-of-scope($browser, $max-version) and
102
+ support-legacy-browser($browser, $min-version, $max-version, $threshold)
89
103
  {
90
104
  @if $debug-browser-support {
91
105
  /* Content for #{$browser} #{$version}.
92
106
  Min version: #{map-get($browser-minimum-versions, $browser) or unspecified}.
93
107
  User threshold to keep: #{$threshold}%. If #{$browser} #{$version} and below are omitted: #{omitted-usage($browser, $version)}%. */
94
108
  }
95
- @include with-browser-minimums(map-merge($current-browser-minimum-versions, $mins)) {
109
+ @include with-browser-ranges(intersect-browser-ranges($current-browser-versions, $ranges)) {
96
110
  @content;
97
111
  }
98
- } @else if $debug-browser-support and browser-out-of-scope($browser, $latest-version) {
99
- /* Content for #{$browser} #{$version} omitted.
100
- Not allowed in the current scope: #{browser-out-of-scope($browser, $latest-version)} */
101
- } @else if $debug-browser-support and not support-legacy-browser($browser, $latest-version, $threshold) {
102
- @if omitted-usage($browser, $version) > $threshold {
103
- /* Content for #{$browser} #{$version} omitted.
104
- User threshold to keep: #{$threshold}%. If #{$browser} #{$version} and below are omitted: #{omitted-usage($browser, $version)}%. */
112
+ } @else if $debug-browser-support and browser-out-of-scope($browser, $max-version) {
113
+ /* Content for #{display-browser-range($browser, $min-version, $max-version)} omitted.
114
+ Not allowed in the current scope: #{browser-out-of-scope($browser, $max-version)} */
115
+ } @else if $debug-browser-support and not
116
+ support-legacy-browser($browser, $min-version, $max-version, $threshold) {
117
+ @if omitted-usage($browser, $min-version, $max-version) > $threshold {
118
+ /* Content for #{display-browser-range($browser, $min-version, $max-version)} omitted.
119
+ User threshold to keep: #{$threshold}%. If #{display-browser-range($browser, $min-version, $max-version)} and below are omitted: #{omitted-usage($browser, $min-version, $max-version)}%. */
105
120
  } @else {
106
- /* Content for #{$browser} #{$version} omitted.
121
+ /* Content for #{display-browser-range($browser, $min-version, $max-version)} omitted.
107
122
  Minimum support is #{map-get($browser-minimum-versions, $browser)}. */
108
123
  }
109
124
  }
110
125
  }
111
126
 
127
+ @function display-browser-range($browser, $min-version, $max-version: $min-version) {
128
+ @return "#{unquote($browser)} #{unquote($min-version)}#{if($max-version != $min-version, unquote(' -') unquote($max-version), null)}";
129
+ }
130
+
131
+
112
132
  // Renders the content once if any of the legacy browsers are supported.
133
+ // $browsers is a map of browser name to version ranges
113
134
  @mixin for-legacy-browsers($browsers, $threshold: $critical-usage-threshold) {
114
135
  $rendered: false;
115
- @each $browser, $version in $browsers {
136
+ @each $browser, $range in $browsers {
116
137
  @if not $rendered {
117
- @include for-legacy-browser($browser, $version, $threshold, $mins: $browsers) {
138
+ @include for-legacy-browser($browser, $range..., $threshold: $threshold, $ranges: $browsers) {
118
139
  $rendered: true;
119
140
  @content;
120
141
  }
@@ -125,16 +146,44 @@ $css-sel2-support-threshold: $critical-usage-threshold !default;
125
146
  // If there's a prefix context in scope, this will only output the content if the prefix matches.
126
147
  // Otherwise, sets the current prefix scope and outputs the content.
127
148
  @mixin with-prefix($prefix) {
128
- @if $current-prefix {
129
- @if $current-prefix == $prefix {
149
+ @if $current-prefix or $prefix-context {
150
+ @if $current-prefix == $prefix or $prefix-context == $prefix {
151
+ @if $debug-browser-support {
152
+ @if $prefix {
153
+ /* content for #{$prefix} because #{$current-prefix or $prefix-context} is already in scope. */
154
+ } @else {
155
+ /* unprefixed content. #{$current-prefix or $prefix-context} is already in scope. */
156
+ }
157
+ }
158
+ $old-prefix-context: $prefix-context;
159
+ $old-prefix: $current-prefix;
160
+ $prefix-context: $prefix-context or $current-prefix !global;
161
+ $current-prefix: $prefix !global;
162
+ @content;
163
+ $prefix-context: $old-prefix-context !global;
164
+ $current-prefix: $old-prefix !global;
165
+ } @else if $prefix == null {
166
+ $old-prefix-context: $prefix-context;
167
+ $prefix-context: $prefix-context or $current-prefix !global;
168
+ $current-prefix: null !global;
169
+ @if $debug-browser-support {
170
+ /* Content for official syntax. Prefix context is still #{$prefix-context}. */
171
+ }
130
172
  @content;
173
+ $current-prefix: $prefix-context !global;
174
+ $prefix-context: $old-prefix-context !global;
131
175
  } @else if $debug-browser-support {
132
176
  /* Omitting content for #{$prefix} because #{$current-prefix} is already in scope. */
133
177
  }
134
178
  } @else {
179
+ @if $debug-browser-support and $prefix {
180
+ /* Creating new #{$prefix} context. */
181
+ }
182
+ $prefix-context: $prefix !global;
135
183
  $current-prefix: $prefix !global;
136
184
  @content;
137
185
  $current-prefix: null !global;
186
+ $prefix-context: null !global;
138
187
  }
139
188
  }
140
189
 
@@ -157,32 +206,44 @@ $css-sel2-support-threshold: $critical-usage-threshold !default;
157
206
  @if $debug-browser-support and type-of($should-use-prefix) == list {
158
207
  /* Capability #{$capability} is prefixed with #{$prefix} because #{$should-use-prefix} is required. */
159
208
  } @else if $debug-browser-support and type-of($should-use-prefix) == number {
160
- /* Capability #{$capability} is prefixed with #{$prefix} because omitting it would affect #{$should-use-prefix}% of users and the threshold is #{$threshold}%. */
209
+ /* Capability #{$capability} is prefixed with #{$prefix} because #{$should-use-prefix}% of users need it which is more than the threshold of #{$threshold}%. */
161
210
  }
162
211
  @include with-prefix($prefix) {
163
- @include with-browser-minimums($capability) {
212
+ @include with-browser-ranges($capability) {
164
213
  @content;
165
214
  }
166
215
  }
216
+ } @else if $debug-browser-support {
217
+ /* Capability #{$capability} is not prefixed with #{$prefix} because #{prefix-usage($prefix, $capability, $capability-options)}% of users are affected which is less than the threshold of #{$threshold}. */
167
218
  }
168
219
  }
169
- @if not $current-prefix {
170
- @include with-browser-minimums($capability) {
220
+ @include with-prefix(null) {
221
+ @include with-browser-ranges($capability) {
171
222
  @content;
172
223
  }
173
- } @else if $debug-browser-support {
174
- /* Not including prefix-free content for #{$capability} because the #{$current-prefix} prefix is in scope. */
175
224
  }
176
225
  }
177
226
 
178
- // Returns true if at least one browser-version pair in $subset-mins
179
- // is a higher (or same) version than the browser-version pairs in $mins.
180
- @function has-browser-subset($mins, $subset-mins) {
227
+ // Returns true if at least one browser-version pair in $subset-ranges
228
+ // is a higher (or same) version than the browser-version pairs in
229
+ // $ranges.
230
+ @function has-browser-subset($ranges, $subset-ranges) {
181
231
  $found-mismatch: false;
182
- @each $browser, $subset-min-version in $subset-mins {
183
- $min-version: map-get($mins, $browser);
184
- @if $min-version {
185
- @if compare-browser-versions($browser, $min-version, $subset-min-version) <= 0 {
232
+ @each $browser, $subset-range in $subset-ranges {
233
+ $range: map-get($ranges, $browser);
234
+ @if $range {
235
+ $min-1: nth($subset-range, 1);
236
+ $max-1: nth($subset-range, 2);
237
+ $min-2: nth($range, 1);
238
+ $max-2: nth($range, 2);
239
+ @if (compare-browser-versions($browser, $min-2, $min-1) <= 0 and
240
+ compare-browser-versions($browser, $min-1, $max-2) <= 0) or
241
+ (compare-browser-versions($browser, $min-2, $max-1) <= 0 and
242
+ compare-browser-versions($browser, $max-1, $max-2) <= 0) or
243
+ (compare-browser-versions($browser, $min-1, $min-2) <= 0 and
244
+ compare-browser-versions($browser, $max-1, $max-2) >= 0) or
245
+ (compare-browser-versions($browser, $min-1, $min-2) >= 0 and
246
+ compare-browser-versions($browser, $max-1, $max-2) <= 0) {
186
247
  @return true;
187
248
  } @else {
188
249
  $found-mismatch: true
@@ -192,40 +253,53 @@ $css-sel2-support-threshold: $critical-usage-threshold !default;
192
253
  @return not $found-mismatch;
193
254
  }
194
255
 
195
- @function merge-browser-minumums($mins, $new-mins) {
196
- @each $browser, $new-min in $new-mins {
197
- $old-min: map-get($mins, $browser);
198
- @if $old-min {
199
- $max-min: if(compare-browser-versions($browser, $old-min, $new-min) > 0,
256
+ // When the same browser is in both maps, then the minimum will be set
257
+ // to the maximum of the two minimum versions, and the maximum will be
258
+ // set to the minmum of the two maximum versions.
259
+ @function intersect-browser-ranges($ranges, $new-ranges) {
260
+ @each $browser, $new-range in $new-ranges {
261
+ $old-range: map-get($ranges, $browser);
262
+ @if $old-range {
263
+ $old-min: nth($old-range, 1);
264
+ $old-max: nth($old-range, 2);
265
+ $new-min: nth($new-range, 1);
266
+ $new-max: nth($new-range, 2);
267
+ $maximin: if(compare-browser-versions($browser, $old-min, $new-min) > 0,
200
268
  $old-min, $new-min);
201
- $mins: map-merge($mins, ($browser: $max-min));
269
+ $minimax: if(compare-browser-versions($browser, $old-max, $new-max) < 0,
270
+ $old-max, $new-max);
271
+ $ranges: map-merge($ranges, ($browser: $maximin $minimax));
202
272
  } @else {
203
- $mins: map-merge($mins, ($browser: $new-min));
273
+ $ranges: map-merge($ranges, ($browser: $new-range));
204
274
  }
205
275
  }
206
- @return $mins;
276
+ @return $ranges;
207
277
  }
208
278
 
209
- // If passed a map, that will be the new browser minimums.
210
- // Otherwise a minimum map will be created based on the given capability and prefix
211
- // using the `browser-minimums($capability, $prefix)` function.
279
+ // If passed a map, that will be the new browser ranges.
280
+ // Otherwise a range map will be created based on the given capability and prefix
281
+ // using the `browser-ranges($capability, $prefix)` function.
282
+ //
283
+ // If there are current ranges in scope and the new ranges have some overlap
284
+ // with the current,
212
285
  //
213
- // If there are current minimums in scope and the new minimums have some overlap
214
- // with the current, then the minimums will be set to the max version of each browser.
215
286
  // If there is no overlap, then the content will not be rendered.
216
- @mixin with-browser-minimums($capability, $prefix: $current-prefix) {
217
- $new-mins: null;
287
+ @mixin with-browser-ranges($capability, $prefix: $current-prefix) {
288
+ $new-ranges: null;
218
289
  @if type-of($capability) == map {
219
- $new-mins: $capability;
290
+ $new-ranges: $capability;
220
291
  } @else {
221
- $new-mins: browser-minimums($capability, $prefix);
292
+ $new-ranges: browser-ranges($capability, $prefix);
222
293
  }
223
294
 
224
- @if has-browser-subset($current-browser-minimum-versions, $new-mins) {
225
- $old-minimums: $current-browser-minimum-versions;
226
- $current-browser-minimum-versions: merge-browser-minumums($old-minimums, $new-mins) !global;
295
+ @if has-browser-subset($current-browser-versions, $new-ranges) {
296
+ $old-ranges: $current-browser-versions;
297
+ $current-browser-versions: intersect-browser-ranges($old-ranges, $new-ranges) !global;
227
298
  @content;
228
- $current-browser-minimum-versions: $old-minimums !global;
299
+ $current-browser-versions: $old-ranges !global;
300
+ } @else if $debug-browser-support {
301
+ /* Excluding content because #{inspect($new-ranges)} is not included within
302
+ #{inspect($current-browser-versions)} */
229
303
  }
230
304
  }
231
305
 
@@ -54,7 +54,7 @@ $default-box-shadow-inset: null !default;
54
54
  $inset : $default-box-shadow-inset
55
55
  ) {
56
56
  // Handle legacy argument order
57
- @if $hoff != none and type-of($hoff) != number {
57
+ @if not ($hoff == none or $hoff == null) and type-of($hoff) != number {
58
58
  @warn "The $color argument for single-box-shadow is now the 5th argument instead of the 1st.";
59
59
  $tmp-color: $color;
60
60
  $color: $hoff;
@@ -61,6 +61,14 @@ $flexbox-capability-options: (
61
61
  (partial-support: true, spec-versions: 3)
62
62
  );
63
63
 
64
+ // This is the underlying implementation for all the other mixins in this module.
65
+ // It is the only way to access prefix support for older versions of the spec.
66
+ //
67
+ // `$properties`: map of property-value pairs that should be prefixed
68
+
69
+ // `$version1: the version of the spec to use when considering what prefix
70
+ // to appply. Defaults to the most recent (spec version 3). Only the most
71
+ // recent version of the spec outputs an unprefixed version.
64
72
  @mixin flexbox($properties, $version: null) {
65
73
  $capability-options: $flexbox-capability-options;
66
74
  @if $version {
@@ -81,8 +89,9 @@ $flexbox-capability-options: (
81
89
  }
82
90
  }
83
91
 
84
- @mixin display-flex {
85
- @include flexbox((display: flex));
92
+ // Values for $display are: flex (default), inline-flex
93
+ @mixin display-flex($display: flex) {
94
+ @include flexbox((display: $display));
86
95
  }
87
96
 
88
97
  // Values: row | row-reverse | column | column-reverse
@@ -12,7 +12,7 @@ $inline-block-alignment: middle !default;
12
12
  // Provides a cross-browser method to implement `display: inline-block;`
13
13
  @mixin inline-block($alignment: $inline-block-alignment, $ie-alignment: auto) {
14
14
  // legacy support for VERY old firefox
15
- @if support-legacy-browser("firefox", "2", $inline-block-support-threshold) {
15
+ @if support-legacy-browser("firefox", "2", $threshold: $inline-block-support-threshold) {
16
16
  display: -moz-inline-stack;
17
17
  }
18
18
  // standard
@@ -21,7 +21,7 @@ $inline-block-alignment: middle !default;
21
21
  vertical-align: $alignment;
22
22
  }
23
23
  // legacy IE support
24
- @if support-legacy-browser("ie", "7", $inline-block-support-threshold) {
24
+ @if support-legacy-browser("ie", "7", $threshold: $inline-block-support-threshold) {
25
25
  @if $ie-alignment and $ie-alignment != none {
26
26
  *vertical-align: $ie-alignment;
27
27
  }
@@ -10,7 +10,7 @@ $opacity-usage-threshold: $graceful-usage-threshold;
10
10
  // A number between 0 and 1, where 0 is transparent and 1 is opaque.
11
11
 
12
12
  @mixin opacity($opacity) {
13
- @include for-legacy-browser("ie", "8", $opacity-usage-threshold) {
13
+ @include for-legacy-browser("ie", "8", $threshold: $opacity-usage-threshold) {
14
14
  filter: unquote("progid:DXImageTransform.Microsoft.Alpha(Opacity=#{round($opacity * 100)})");
15
15
  }
16
16
  opacity: $opacity;
@@ -57,7 +57,7 @@ $input-placeholder-support-threshold: $graceful-usage-threshold !default;
57
57
  }
58
58
  @elseif $current-prefix == -moz {
59
59
  // for Firefox 19 and below
60
- @if support-legacy-browser("firefox", "19", $input-placeholder-support-threshold) {
60
+ @if support-legacy-browser("firefox", "4", "19", $threshold: $input-placeholder-support-threshold) {
61
61
  &:-moz-placeholder { @content; }
62
62
  }
63
63
  // for Firefox 20 and above
@@ -46,9 +46,9 @@
46
46
  left: $padding;
47
47
  right: $padding;
48
48
  }
49
- &:first-child #{if(support-legacy-browser("ie", "6", $css-sel2-support-threshold), ', &.first', '')} { padding-#{$direction}: 0; }
49
+ &:first-child #{if(support-legacy-browser("ie", "6", $threshold: $css-sel2-support-threshold), ', &.first', '')} { padding-#{$direction}: 0; }
50
50
  &:last-child { padding-#{opposite-position($direction)}: 0; }
51
- @if support-legacy-browser("ie", "7", $css-sel2-support-threshold) {
51
+ @if support-legacy-browser("ie", "7", $threshold: $css-sel2-support-threshold) {
52
52
  &.last { padding-#{opposite-position($direction)}: 0; } }
53
53
  }
54
54
  }
@@ -31,7 +31,7 @@
31
31
  &:last-child {
32
32
  &:after { content: ""; }
33
33
  }
34
- @if support-legacy-browser("ie", "7", $css-sel2-support-threshold) {
34
+ @if support-legacy-browser("ie", "7", $threshold: $css-sel2-support-threshold) {
35
35
  &.last {
36
36
  &:after { content: ""; }
37
37
  }
@@ -18,7 +18,7 @@ $legacy-float-support-threshold: $critical-usage-threshold !default;
18
18
  // [double-margin bug in IE5/6](http://www.positioniseverything.net/explorer/doubled-margin.html)
19
19
  @mixin float($side: left) {
20
20
  float: unquote($side);
21
- @if support-legacy-browser("ie", "6", $legacy-float-support-threshold) {
21
+ @if support-legacy-browser("ie", "6", $threshold: $legacy-float-support-threshold) {
22
22
  display: inline; } }
23
23
 
24
24
  // Resets floated elements back to their default of `float: none` and defaults
@@ -34,5 +34,5 @@ $legacy-float-support-threshold: $critical-usage-threshold !default;
34
34
  // +reset-float
35
35
  @mixin reset-float($display: block) {
36
36
  float: none;
37
- @if support-legacy-browser("ie", "6", $legacy-float-support-threshold) {
38
- display: $display; } }
37
+ @if support-legacy-browser("ie", "6", $threshold: $legacy-float-support-threshold) {
38
+ display: $display; } }
@@ -13,7 +13,7 @@ $default-has-layout-approach: zoom !default;
13
13
  // to gain the "hasLayout" property in internet explorer.
14
14
  // More information on [hasLayout](http://reference.sitepoint.com/css/haslayout).
15
15
  @mixin has-layout($approach: $default-has-layout-approach) {
16
- @if support-legacy-browser("ie", "7", $has-layout-support-threshold) {
16
+ @if support-legacy-browser("ie", "7", $threshold: $has-layout-support-threshold) {
17
17
  @if $approach == zoom {
18
18
  @include has-layout-zoom;
19
19
  } @else if $approach == block {
@@ -26,13 +26,13 @@ $default-has-layout-approach: zoom !default;
26
26
  }
27
27
 
28
28
  @mixin has-layout-zoom {
29
- @if support-legacy-browser("ie", "7", $has-layout-support-threshold) {
29
+ @if support-legacy-browser("ie", "7", $threshold: $has-layout-support-threshold) {
30
30
  *zoom: 1;
31
31
  }
32
32
  }
33
33
 
34
34
  @mixin has-layout-block {
35
- @if support-legacy-browser("ie", "7", $has-layout-support-threshold) {
35
+ @if support-legacy-browser("ie", "7", $threshold: $has-layout-support-threshold) {
36
36
  // This makes ie6 get layout
37
37
  display: inline-block;
38
38
  // and this puts it back to block
@@ -48,7 +48,7 @@ $ie6-attribute-hack-support-threshold: $critical-usage-threshold !default;
48
48
  // A hack to supply IE6 (and below) with a different property value.
49
49
  // [Read more](http://www.cssportal.com/css-hacks/#in_css-important).
50
50
  @mixin bang-hack($property, $value, $ie6-value) {
51
- @if support-legacy-browser("ie", "6", $ie6-attribute-hack-support-threshold) {
51
+ @if support-legacy-browser("ie", "6", $threshold: $ie6-attribute-hack-support-threshold) {
52
52
  @warn "it's recommended to use the underscore-hack() mixin instead of bang-hack()";
53
53
  #{$property}: #{$value} !important;
54
54
  #{$property}: #{$ie6-value};
@@ -58,8 +58,8 @@ $ie6-attribute-hack-support-threshold: $critical-usage-threshold !default;
58
58
  // A hack to supply IE6 (and below) with a different property value.
59
59
  // [Read more](http://www.paulirish.com/2009/browser-specific-css-hacks/)
60
60
  @mixin underscore-hack($property, $value, $ie6-value) {
61
- @if support-legacy-browser("ie", "6", $ie6-attribute-hack-support-threshold) {
61
+ @if support-legacy-browser("ie", "6", $threshold: $ie6-attribute-hack-support-threshold) {
62
62
  #{$property}: #{$value};
63
63
  _#{$property}: #{$ie6-value};
64
64
  }
65
- }
65
+ }