susy 2.0.0.beta.3 → 2.0.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -29
- data/VERSION +1 -1
- data/docs/changelog.rst +32 -1
- data/sass/susy/_math.scss +1 -0
- data/sass/susy/language/_susy.scss +0 -2
- data/sass/susy/language/_susyone.scss +0 -4
- data/sass/susy/language/susy/_background.scss +31 -25
- data/sass/susy/language/susy/_bleed.scss +4 -4
- data/sass/susy/language/susy/_box-sizing.scss +1 -1
- data/sass/susy/language/susy/_container.scss +1 -1
- data/sass/susy/language/susy/_gallery.scss +2 -2
- data/sass/susy/language/susy/_gutters.scss +3 -3
- data/sass/susy/language/susy/_rows.scss +2 -2
- data/sass/susy/language/susy/_settings.scss +68 -116
- data/sass/susy/language/susy/_span.scss +2 -2
- data/sass/susy/language/susyone/_functions.scss +2 -2
- data/sass/susy/language/susyone/_grid.scss +5 -5
- data/sass/susy/math/_maps.scss +89 -0
- data/sass/susy/math/_settings.scss +51 -0
- data/sass/susy/math/_validation.scss +13 -7
- data/sass/susy/output/_float.scss +0 -1
- data/sass/susy/output/_shared.scss +3 -1
- data/sass/susy/output/_support.scss +9 -0
- data/sass/susy/output/float/_end.scss +11 -3
- data/sass/susy/output/float/_isolate.scss +10 -6
- data/sass/susy/output/float/_span.scss +10 -6
- data/sass/susy/output/shared/_background.scss +10 -20
- data/sass/susy/output/shared/_container.scss +7 -3
- data/sass/susy/output/shared/_margins.scss +6 -2
- data/sass/susy/output/shared/_output.scss +14 -0
- data/sass/susy/output/shared/_padding.scss +6 -2
- data/sass/susy/output/support/_background.scss +58 -0
- data/sass/susy/output/support/_box-sizing.scss +17 -0
- data/sass/susy/output/support/_clearfix.scss +18 -0
- data/sass/susy/output/support/_prefix.scss +19 -0
- data/sass/susy/output/support/_rem.scss +22 -0
- data/sass/susy/output/support/_support.scss +82 -0
- metadata +14 -14
- data/sass/susy/language/_shared.scss +0 -4
- data/sass/susy/language/shared/_maps.scss +0 -85
- data/sass/susy/language/susyone/_units.scss +0 -159
- data/sass/susy/output/float/_clearfix.scss +0 -15
- data/sass/susy/output/shared/_box-sizing.scss +0 -16
@@ -23,10 +23,10 @@
|
|
23
23
|
@include nobreak;
|
24
24
|
}
|
25
25
|
|
26
|
-
@include
|
26
|
+
@include output((box-sizing: $box));
|
27
27
|
@include float-span-output($output...);
|
28
28
|
|
29
|
-
@if
|
29
|
+
@if valid-columns($nesting, silent) {
|
30
30
|
@include nested($span) { @content; }
|
31
31
|
} @else {
|
32
32
|
@content;
|
@@ -190,7 +190,7 @@ $rem-with-px-fallback : true !default;
|
|
190
190
|
@if $request == 'position' {
|
191
191
|
@return $pos;
|
192
192
|
} @else {
|
193
|
-
@warn '"#{$request}"
|
193
|
+
@warn '"#{$request}" is not a valid value for $request';
|
194
194
|
}
|
195
195
|
}
|
196
196
|
}
|
@@ -335,7 +335,7 @@ $rem-with-px-fallback : true !default;
|
|
335
335
|
// Return the nearest layout (column-count) above a given breakpoint.
|
336
336
|
//
|
337
337
|
// $min : The min-width media-query breakpoint above which to establish a new layout.
|
338
|
-
@function get-layout
|
338
|
+
@function get-layout(
|
339
339
|
$min
|
340
340
|
) {
|
341
341
|
$min : fix-ems($min);
|
@@ -27,12 +27,12 @@
|
|
27
27
|
$width: container-outer-width($columns);
|
28
28
|
|
29
29
|
@if $style == 'static' {
|
30
|
-
@include
|
30
|
+
@include rem(width, $width);
|
31
31
|
} @else {
|
32
32
|
@if $style == 'fluid' {
|
33
|
-
@if unit($width) == '%' { @include
|
33
|
+
@if unit($width) == '%' { @include rem(width, $width); }
|
34
34
|
} @else {
|
35
|
-
@include
|
35
|
+
@include rem(max-width, $width);
|
36
36
|
@include for-legacy-browser(ie,"6") {
|
37
37
|
@if unit($width) == 'rem' {
|
38
38
|
_width: round(convert-length($width, px));
|
@@ -52,8 +52,8 @@
|
|
52
52
|
){
|
53
53
|
@include pie-clearfix;
|
54
54
|
@include set-container-width($columns);
|
55
|
-
@include
|
56
|
-
@include
|
55
|
+
@include rem(padding-left, $grid-padding);
|
56
|
+
@include rem(padding-right, $grid-padding);
|
57
57
|
margin: { left: auto; right: auto; }
|
58
58
|
}
|
59
59
|
|
@@ -0,0 +1,89 @@
|
|
1
|
+
// Map Functions
|
2
|
+
// =============
|
3
|
+
|
4
|
+
|
5
|
+
// Truncate List
|
6
|
+
// -------------
|
7
|
+
// - Return a list, truncated to a given length
|
8
|
+
@function _susy-truncate-list(
|
9
|
+
$list,
|
10
|
+
$length
|
11
|
+
) {
|
12
|
+
$_return: ();
|
13
|
+
|
14
|
+
@for $i from 1 through length($list) {
|
15
|
+
$_return: if($i <= $length, append($_return, nth($list, $i)), $_return);
|
16
|
+
}
|
17
|
+
|
18
|
+
@return $_return;
|
19
|
+
}
|
20
|
+
|
21
|
+
|
22
|
+
// Deep Get
|
23
|
+
// --------
|
24
|
+
// - Return a value deep in nested maps
|
25
|
+
@function _susy-deep-get(
|
26
|
+
$map,
|
27
|
+
$keys...
|
28
|
+
) {
|
29
|
+
$_return: $map;
|
30
|
+
|
31
|
+
@each $key in $keys {
|
32
|
+
@if type-of($_return) == map {
|
33
|
+
$_return: map-get($_return, $key);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
@return $_return;
|
38
|
+
}
|
39
|
+
|
40
|
+
|
41
|
+
// Deep Set
|
42
|
+
// --------
|
43
|
+
// - Set a value deep in nested maps
|
44
|
+
@function _susy-deep-set(
|
45
|
+
$map,
|
46
|
+
$keys-value...
|
47
|
+
) {
|
48
|
+
$_value: nth($keys-value, -1);
|
49
|
+
$_keys: _susy-truncate-list($keys-value, length($keys-value) - 1);
|
50
|
+
$_length: length($_keys);
|
51
|
+
$_return: ();
|
52
|
+
|
53
|
+
@for $i from 1 through $_length {
|
54
|
+
$_n: 0 - $i;
|
55
|
+
$_level: _susy-truncate-list($_keys, $_length + $_n);
|
56
|
+
$_level: _susy-deep-get($map, $_level...);
|
57
|
+
$_merge: (nth($_keys, $_n): $_value);
|
58
|
+
$_return: if($_level, map-merge($_level, $_merge), $_merge);
|
59
|
+
$_value: $_return;
|
60
|
+
}
|
61
|
+
|
62
|
+
@return $_return;
|
63
|
+
}
|
64
|
+
|
65
|
+
|
66
|
+
// Deep Has-Key
|
67
|
+
// ------------
|
68
|
+
// - Return true if a deep key exists
|
69
|
+
@function _susy-deep-has-key(
|
70
|
+
$map,
|
71
|
+
$keys...
|
72
|
+
) {
|
73
|
+
$_return: null;
|
74
|
+
$_stop: false;
|
75
|
+
|
76
|
+
@each $key in $keys {
|
77
|
+
@if not $_stop {
|
78
|
+
$_return: map-has-key($map, $key);
|
79
|
+
}
|
80
|
+
|
81
|
+
@if $_return {
|
82
|
+
$map: map-get($map, $key);
|
83
|
+
} @else {
|
84
|
+
$_stop: true;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
@return $_return;
|
89
|
+
}
|
@@ -5,6 +5,7 @@
|
|
5
5
|
// -------
|
6
6
|
$susy-version: 2.0;
|
7
7
|
|
8
|
+
|
8
9
|
// Default Settings
|
9
10
|
// ----------------
|
10
11
|
// PRIVATE: The basic settings
|
@@ -13,6 +14,15 @@ $susy-defaults: (
|
|
13
14
|
gutters: 1/4,
|
14
15
|
);
|
15
16
|
|
17
|
+
|
18
|
+
// User Settings
|
19
|
+
// -------------
|
20
|
+
// - Define the $susy variable with a map of your own settings.
|
21
|
+
// - Set EITHER $column-width OR $container
|
22
|
+
// - Use $column-width for static layouts
|
23
|
+
$susy: () !default;
|
24
|
+
|
25
|
+
|
16
26
|
// Susy Defaults
|
17
27
|
// -------------
|
18
28
|
// PRIVATE: Add defaults to Susy
|
@@ -21,3 +31,44 @@ $susy-defaults: (
|
|
21
31
|
) {
|
22
32
|
$susy-defaults: map-merge($susy-defaults, $defaults) !global;
|
23
33
|
}
|
34
|
+
|
35
|
+
|
36
|
+
// Susy Set
|
37
|
+
// --------
|
38
|
+
// Change one setting
|
39
|
+
// - $key : setting name
|
40
|
+
// - $value : setting value
|
41
|
+
@mixin susy-set(
|
42
|
+
$key-value...
|
43
|
+
) {
|
44
|
+
$susy: _susy-deep-set($susy, $key-value...) !global;
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
// Susy Get
|
49
|
+
// --------
|
50
|
+
// Return one setting from a grid
|
51
|
+
// - $key : <keyword>
|
52
|
+
// - $layout : <settings>
|
53
|
+
@function susy-get(
|
54
|
+
$key,
|
55
|
+
$layout: map-merge($susy-defaults, $susy)
|
56
|
+
) {
|
57
|
+
$layout: parse-grid($layout);
|
58
|
+
$_options: $layout $susy $susy-defaults;
|
59
|
+
$_break: false;
|
60
|
+
$_return: null;
|
61
|
+
|
62
|
+
@each $opt in $_options {
|
63
|
+
@if type-of($opt) == map and not $_break {
|
64
|
+
$_keyset: _susy-deep-has-key($opt, $key...);
|
65
|
+
@if $_keyset {
|
66
|
+
$_return: _susy-deep-get($opt, $key...);
|
67
|
+
$_break: true;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
@return $_return;
|
73
|
+
}
|
74
|
+
|
@@ -5,7 +5,8 @@
|
|
5
5
|
// -------------
|
6
6
|
// Check that a column setting is valid.
|
7
7
|
@function valid-columns(
|
8
|
-
$columns
|
8
|
+
$columns,
|
9
|
+
$silent: false
|
9
10
|
) {
|
10
11
|
$type: type-of($columns);
|
11
12
|
$return: null;
|
@@ -21,26 +22,31 @@
|
|
21
22
|
$return: if($fail, $return, $columns);
|
22
23
|
}
|
23
24
|
|
24
|
-
@if $return != $columns {
|
25
|
+
@if $return != $columns and not $silent {
|
26
|
+
$return: null;
|
25
27
|
$warn: '$columns must be a unitless number or list of unitless numbers.';
|
26
28
|
@warn $warn + ' Current value [#{$type}]: #{$columns}';
|
27
|
-
} @else {
|
28
|
-
@return $return;
|
29
29
|
}
|
30
|
+
|
31
|
+
@return $return;
|
30
32
|
}
|
31
33
|
|
32
34
|
// Valid Gutters
|
33
35
|
// -------------
|
34
36
|
// Check that a gutter setting is valid.
|
35
37
|
@function valid-gutters(
|
36
|
-
$gutters
|
38
|
+
$gutters,
|
39
|
+
$silent: false
|
37
40
|
) {
|
38
41
|
$type: type-of($gutters);
|
42
|
+
$return: null;
|
39
43
|
|
40
44
|
@if $type == number and unitless($gutters) {
|
41
|
-
|
42
|
-
} @else {
|
45
|
+
$return: $gutters;
|
46
|
+
} @else if not $silent {
|
43
47
|
$warn: '$gutters must be a unitless number.';
|
44
48
|
@warn $warn + ' Current value [#{$type}]: #{$gutters}';
|
45
49
|
}
|
50
|
+
|
51
|
+
@return $return;
|
46
52
|
}
|
@@ -18,8 +18,12 @@
|
|
18
18
|
) {
|
19
19
|
$to: to($flow);
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
$output: (
|
22
|
+
float: if($last-flow == to, $to, null),
|
23
|
+
margin-#{$to}: $margin,
|
24
|
+
);
|
25
|
+
|
26
|
+
@include output($output);
|
23
27
|
}
|
24
28
|
|
25
29
|
// Float First
|
@@ -28,5 +32,9 @@
|
|
28
32
|
@mixin float-first(
|
29
33
|
$flow: map-get($susy-defaults, flow)
|
30
34
|
) {
|
31
|
-
|
35
|
+
$output: (
|
36
|
+
margin-#{from($flow)}: 0,
|
37
|
+
);
|
38
|
+
|
39
|
+
@include output($output);
|
32
40
|
}
|
@@ -7,12 +7,16 @@
|
|
7
7
|
// - [$flow] : ltr | rtl
|
8
8
|
@mixin isolate-output(
|
9
9
|
$push,
|
10
|
-
$flow
|
10
|
+
$flow: map-get($susy-defaults, flow)
|
11
11
|
) {
|
12
|
-
$to
|
13
|
-
$from
|
12
|
+
$to: to($flow);
|
13
|
+
$from: from($flow);
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
$output: (
|
16
|
+
float: $from,
|
17
|
+
margin-#{$from}: $push,
|
18
|
+
margin-#{$to}: -100%,
|
19
|
+
);
|
20
|
+
|
21
|
+
@include output($output);
|
18
22
|
}
|
@@ -22,10 +22,14 @@
|
|
22
22
|
$to : to($flow);
|
23
23
|
$from : from($flow);
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
$output: (
|
26
|
+
width: $width,
|
27
|
+
float: if($float == to, $to, null) or if($float == from, $from, null),
|
28
|
+
margin-#{$from}: $margin-before,
|
29
|
+
margin-#{$to}: $margin-after,
|
30
|
+
padding-#{$from}: $padding-before,
|
31
|
+
padding-#{$to}: $padding-after,
|
32
|
+
);
|
33
|
+
|
34
|
+
@include output($output);
|
31
35
|
}
|
@@ -10,27 +10,17 @@
|
|
10
10
|
// - [$flow]: ltr | rtl
|
11
11
|
@mixin background-grid-output (
|
12
12
|
$image,
|
13
|
-
$size:
|
14
|
-
$clip:
|
13
|
+
$size: null,
|
14
|
+
$clip: null,
|
15
15
|
$flow: map-get($susy-defaults, flow)
|
16
16
|
) {
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
background-
|
21
|
-
|
17
|
+
$output: (
|
18
|
+
background-image: $image,
|
19
|
+
background-size: $size,
|
20
|
+
background-origin: $clip,
|
21
|
+
background-clip: $clip,
|
22
|
+
background-position: from($flow) top,
|
23
|
+
);
|
22
24
|
|
23
|
-
@
|
24
|
-
-webkit-background-size: $size;
|
25
|
-
background-size: $size;
|
26
|
-
}
|
27
|
-
|
28
|
-
@if $clip {
|
29
|
-
-webkit-background-origin: $clip;
|
30
|
-
-webkit-background-clip: $clip;
|
31
|
-
background-origin: $clip;
|
32
|
-
background-clip: $clip;
|
33
|
-
}
|
34
|
-
|
35
|
-
background-position: from($flow) top;
|
25
|
+
@include output($output);
|
36
26
|
}
|
@@ -11,7 +11,11 @@
|
|
11
11
|
$justify: auto auto,
|
12
12
|
$property: max-width
|
13
13
|
) {
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
$output: (
|
15
|
+
#{$property}: $width or 100%,
|
16
|
+
margin-left: nth($justify, 1),
|
17
|
+
margin-right: nth($justify, 2),
|
18
|
+
);
|
19
|
+
|
20
|
+
@include output($output);
|
17
21
|
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
// Output
|
2
|
+
// ======
|
3
|
+
|
4
|
+
// Output
|
5
|
+
// ------
|
6
|
+
// Output CSS with proper browser support.
|
7
|
+
// - $styles : <map of css property-value pairs>
|
8
|
+
@mixin output(
|
9
|
+
$styles
|
10
|
+
) {
|
11
|
+
@each $prop, $val in $styles {
|
12
|
+
@include susy-support($prop, $val);
|
13
|
+
}
|
14
|
+
}
|