susy 2.0.0.beta.1 → 2.0.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/docs/changelog.rst +42 -1
  4. data/sass/susy/_math.scss +0 -1
  5. data/sass/susy/language/_shared.scss +4 -0
  6. data/sass/susy/language/_susy.scss +3 -1
  7. data/sass/susy/language/shared/_maps.scss +85 -0
  8. data/sass/susy/language/susy/_background.scss +59 -45
  9. data/sass/susy/language/susy/_bleed.scss +150 -29
  10. data/sass/susy/language/susy/_breakpoint-plugin.scss +1 -1
  11. data/sass/susy/language/susy/_container.scss +21 -21
  12. data/sass/susy/language/susy/_context.scss +5 -5
  13. data/sass/susy/language/susy/_gallery.scss +20 -20
  14. data/sass/susy/language/susy/_grids.scss +15 -25
  15. data/sass/susy/language/susy/_gutters.scss +14 -14
  16. data/sass/susy/language/susy/_isolate.scss +31 -9
  17. data/sass/susy/language/susy/_margins.scss +14 -4
  18. data/sass/susy/language/susy/_padding.scss +14 -4
  19. data/sass/susy/language/susy/_rows.scss +19 -16
  20. data/sass/susy/language/susy/_settings.scss +40 -14
  21. data/sass/susy/language/susy/_span.scss +5 -2
  22. data/sass/susy/math/_columns.scss +8 -8
  23. data/sass/susy/math/_settings.scss +1 -2
  24. data/sass/susy/math/_validation.scss +0 -16
  25. data/sass/susy/{api → output}/_float.scss +0 -0
  26. data/sass/susy/{api → output}/_shared.scss +0 -0
  27. data/sass/susy/{api → output}/float/_clearfix.scss +0 -0
  28. data/sass/susy/{api → output}/float/_container.scss +0 -0
  29. data/sass/susy/{api → output}/float/_end.scss +0 -0
  30. data/sass/susy/{api → output}/float/_isolate.scss +0 -0
  31. data/sass/susy/{api → output}/float/_span.scss +0 -0
  32. data/sass/susy/{api → output}/shared/_background.scss +0 -0
  33. data/sass/susy/{api → output}/shared/_box-sizing.scss +0 -0
  34. data/sass/susy/{api → output}/shared/_container.scss +0 -0
  35. data/sass/susy/{api → output}/shared/_direction.scss +0 -0
  36. data/sass/susy/{api → output}/shared/_margins.scss +0 -0
  37. data/sass/susy/{api → output}/shared/_padding.scss +0 -0
  38. metadata +16 -16
  39. data/sass/susy/_helpers.scss +0 -6
  40. data/sass/susy/math/_container.scss +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d45ed731ca80458ec4677b2342c82c1a37198052
4
- data.tar.gz: 0a6a3b6f31a87c8f49cebe66576e89524e85982f
3
+ metadata.gz: 9db5246394497a4752238d5b432ce4e2e173995a
4
+ data.tar.gz: 06daf5683a28b569dcbca57308e3c07f5ed918ed
5
5
  SHA512:
6
- metadata.gz: 0f0e5475bf46aa863ff545b072b261a76dfd4a4eb4bdd83d56a81c6ad0fbfc1849f99f1be1fd13865009381a2b71d5dce27896a07855b2b30606c1d090c81557
7
- data.tar.gz: 227b2172872f3ec60db0c1c82b3d585fd5d299d5efc1e57905aa1f4ea5313e53b9c08fbfaee7759b77e6bb80bdc5e6c4cea174dddcd5f99421744c44e2ebea8b
6
+ metadata.gz: 21cf7cb67d634c0ed2a87819416148bbf9708b3b12b0ecf17e44b4675289a812522cb465f25f29101fe72b7d706ca7435a229ad14cffa80294f36bdd8e2562da
7
+ data.tar.gz: 39670449c17c8edbb172a4fc284627d0e3657c2efef048258c18f6a5f08260c31b92f4d7122369f9d45df89440e2facd831e82f72630b78eacdbb14f3ab05b4b
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.0.beta.0
1
+ 2.0.0.beta.1
@@ -2,7 +2,48 @@ Changelog
2
2
  =========
3
3
 
4
4
 
5
- 2.0.0.beta.1Dec 25 2013
5
+ 2.0.0.beta.2Jan 6 2014
6
+ -------------------------
7
+
8
+ - Allow nesting of Susy settings.
9
+ - ``show-grid`` mixin can output either background or overlay grids.
10
+ - Add ``isolate`` function to return isolation offset width.
11
+ - Fix a bug with ``last`` output for ``split``-gutter layouts.
12
+ - Fix a bug with split-gutter ``span()``, and ``narrow``/``wider`` keywords.
13
+ - Fix a bug with ``bleed`` and ``null``+``inside`` gutters.
14
+ - ``bleed`` output uses TRBL shorthand when possible.
15
+ - Clean up and document the core math functions.
16
+ - Document upgrade path, core-math, and DIY grids.
17
+
18
+ BREAKING:
19
+
20
+ - Move debug settings into ``$susy: (debug: (<settings>));``.
21
+ - Replace ``show-grid`` setting with new ``debug: image`` setting.
22
+ - Add ``debug: output`` setting and keywords
23
+ to toggle between ``background`` and ``overlay`` grid images.
24
+ - Remove ``grid-overlay`` mixin.
25
+
26
+ + Becomes part of ``show-grid`` mixin.
27
+ + Doesn't take ``$selector`` argument — should be nested instead.
28
+ + Can still be used multiple times.
29
+
30
+ - ``isolate`` mixin now interprets span argument as location,
31
+ unless location is otherwise specified.
32
+
33
+ + ``isolate(2)`` is the same as ``isolate(at 2)``.
34
+ + ``isolate(25%)`` will isolate *at* ``25%``.
35
+
36
+ - Rename setting controls for consistency.
37
+
38
+ + ``set-grid`` => ``layout``
39
+ + ``use-grid`` => ``with-layout``
40
+
41
+ - ``pad`` and ``squish`` use RL shorthand for shared context.
42
+
43
+ + ``pad(1, 3 of 12)`` => ``pad(1 3 of 12)``
44
+
45
+
46
+ 2.0.0.beta.1 — Dec 24 2013
6
47
  --------------------------
7
48
 
8
49
  - Add ``susy-breakpoint`` mixin for basic integration with `Breakpoint`_.
@@ -3,5 +3,4 @@
3
3
 
4
4
  @import "math/settings";
5
5
  @import "math/validation";
6
- @import "math/container";
7
6
  @import "math/columns";
@@ -0,0 +1,4 @@
1
+ // Shared Language
2
+ // ===============
3
+
4
+ @import "shared/maps";
@@ -1,8 +1,10 @@
1
1
  // Susy Next Syntax
2
2
  // ================
3
3
 
4
+ @import "shared";
5
+
4
6
  @import "../math";
5
- @import "../api/float";
7
+ @import "../output/float";
6
8
 
7
9
  @import "susy/settings";
8
10
  @import "susy/grids";
@@ -0,0 +1,85 @@
1
+ // Map Toolkit
2
+ // ===========
3
+
4
+ // Truncate List
5
+ // -------------
6
+ // - Return a list, truncated to a given length
7
+ @function truncate-list(
8
+ $list,
9
+ $length
10
+ ) {
11
+ $return: ();
12
+
13
+ @for $i from 1 through length($list) {
14
+ $return: if($i <= $length, append($return, nth($list, $i)), $return);
15
+ }
16
+
17
+ @return $return;
18
+ }
19
+
20
+ // Deep Get
21
+ // --------
22
+ // - Return a value deep in nested maps
23
+ @function deep-get(
24
+ $map,
25
+ $keys...
26
+ ) {
27
+ $return: $map;
28
+
29
+ @each $key in $keys {
30
+ @if type-of($return) == map {
31
+ $return: map-get($return, $key);
32
+ }
33
+ }
34
+
35
+ @return $return;
36
+ }
37
+
38
+ // Deep Set
39
+ // --------
40
+ // - Set a value deep in nested maps
41
+ @function deep-set(
42
+ $map,
43
+ $keys,
44
+ $value
45
+ ) {
46
+ $length: length($keys);
47
+ $return: ();
48
+
49
+ @for $i from 1 through $length {
50
+ $n: 0 - $i;
51
+ $level: truncate-list($keys, $length + $n);
52
+ $level: deep-get($map, $level...);
53
+ $merge: (nth($keys, $n): $value);
54
+ $value: if($level, map-merge($level, $merge), $merge);
55
+ $return: $value;
56
+ }
57
+
58
+ @return $return;
59
+ }
60
+
61
+ // Deep Has-Key
62
+ // ------------
63
+ // - Return true if a deep key exists
64
+ @function deep-has-key(
65
+ $map,
66
+ $keys...
67
+ ) {
68
+ $return: null;
69
+ $break: false;
70
+
71
+ @each $key in $keys {
72
+ @if not $break {
73
+ $return: map-has-key($map, $key);
74
+ }
75
+
76
+ @if $return {
77
+ $map: map-get($map, $key);
78
+ } @else {
79
+ $break: true;
80
+ }
81
+ }
82
+
83
+ @return $return;
84
+ }
85
+
@@ -1,17 +1,37 @@
1
1
  // Background Grid Syntax
2
2
  // ======================
3
3
 
4
- $debug-defaults: (
5
- color: rgba(#66f, .25),
6
- toggle: top right,
7
- );
4
+ $susy-overlay-grid-head-exists: false;
8
5
 
9
- // Show Grid
10
- // ---------
11
- // Show a grid background on any element.
6
+
7
+ // Show Grid/s
8
+ // -----------
9
+ // Show grid on any element using either background or overlay.
12
10
  // - [$grid] : <settings>
13
11
  @mixin show-grid(
14
12
  $grid: $susy
13
+ ) {
14
+ $output: debug-get(output, $grid);
15
+
16
+ @if $output == overlay {
17
+ @include overlay-grid($grid);
18
+ } @else {
19
+ @include background-grid($grid);
20
+ }
21
+ }
22
+
23
+ @mixin show-grids(
24
+ $grid: $susy
25
+ ) {
26
+ @include show-grid($grid);
27
+ }
28
+
29
+ // Background Grid
30
+ // ---------------
31
+ // Show a grid background on any element.
32
+ // - [$grid] : <settings>
33
+ @mixin background-grid(
34
+ $grid: $susy
15
35
  ) {
16
36
  $output: get-background($grid);
17
37
 
@@ -29,27 +49,34 @@ $debug-defaults: (
29
49
  }
30
50
  }
31
51
 
32
- @mixin show-grids(
33
- $grid: $susy
34
- ) {
35
- @include show-grid($grid);
36
- }
37
52
 
38
- // Grid Overlay
53
+ // Overlay Grid
39
54
  // ------------
40
55
  // Generate an icon to trigger grid-overlays on any given elements.
41
56
  // $grids... : <selector> [<settings>] [, <selector>]*
42
- @mixin grid-overlay (
43
- $grids...
57
+ @mixin overlay-grid (
58
+ $grid: $susy
44
59
  ) {
45
- head {
46
- @include overlay-head;
47
- &:hover {
48
- @include overlay-backgrounds($grids...);
60
+ @if not $susy-overlay-grid-head-exists {
61
+ @at-root head { @include overlay-head; }
62
+ $susy-overlay-grid-head-exists: true !global;
63
+ }
64
+
65
+ $selector: #{&};
66
+
67
+ @at-root head:hover {
68
+ ~ #{$selector},
69
+ ~ body #{$selector} {
70
+ position: relative;
71
+ &::before {
72
+ @include grid-overlay-base;
73
+ @include background-grid($grid);
74
+ }
49
75
  }
50
76
  }
51
77
  }
52
78
 
79
+
53
80
  // [Private] Overlay Head
54
81
  // ----------------------
55
82
  // <head> styles to create grid overlay toggle
@@ -86,31 +113,11 @@ $debug-defaults: (
86
113
  }
87
114
  }
88
115
 
89
- // [Private] Overlay Backgrounds
90
- // -----------------------------
91
- // Parse and apply backgrounds for overlay-grid
92
- @mixin overlay-backgrounds(
93
- $grids...
94
- ) {
95
- @each $grid in $grids {
96
- $selector: nth($grid, 1);
97
- $grid: if(length($grid) > 1, nth($grid, 2), $susy);
98
-
99
- ~ #{$selector},
100
- ~ body #{$selector} {
101
- position: relative;
102
- &::before {
103
- @extend %grid-overlay-base;
104
- @include show-grid($grid);
105
- }
106
- }
107
- }
108
- }
109
116
 
110
117
  // [Private] Grid Overlay Base
111
118
  // ---------------------------
112
119
  // Base styles for generating a grid overlay
113
- %grid-overlay-base {
120
+ @mixin grid-overlay-base() {
114
121
  position: absolute;
115
122
  top: 0;
116
123
  left: 0;
@@ -120,6 +127,7 @@ $debug-defaults: (
120
127
  z-index: 998;
121
128
  }
122
129
 
130
+
123
131
  // Get Symmetrical Background
124
132
  // --------------------------
125
133
  // - $grid: <map>
@@ -158,6 +166,7 @@ $debug-defaults: (
158
166
  @return $background;
159
167
  }
160
168
 
169
+
161
170
  // Get Asymmetrical Inside
162
171
  // -----------------------
163
172
  // - $grid: <settings>
@@ -196,6 +205,7 @@ $debug-defaults: (
196
205
  @return $stops;
197
206
  }
198
207
 
208
+
199
209
  // Get Asymmetrical Split
200
210
  // ----------------------
201
211
  // - $grid: <settings>
@@ -227,6 +237,7 @@ $debug-defaults: (
227
237
  @return $stops;
228
238
  }
229
239
 
240
+
230
241
  // Get Asymmetrical Outside
231
242
  // ------------------------
232
243
  // - $grid: <settings>
@@ -270,6 +281,7 @@ $debug-defaults: (
270
281
  @return $stops;
271
282
  }
272
283
 
284
+
273
285
  // Get Asymmetrical Background
274
286
  // ---------------------------
275
287
  // - $grid: <settings>
@@ -289,6 +301,7 @@ $debug-defaults: (
289
301
  @return (image: (columns: $stops));
290
302
  }
291
303
 
304
+
292
305
  // Get Background
293
306
  // --------------
294
307
  // - $grid: <settings>
@@ -296,7 +309,7 @@ $debug-defaults: (
296
309
  $grid
297
310
  ) {
298
311
  $grid : parse-grid($grid);
299
- $show : susy-get(show-grids, $grid);
312
+ $show : susy-get(debug image, $grid);
300
313
  $return : ();
301
314
 
302
315
  @if $show and $show != hide {
@@ -342,14 +355,15 @@ $debug-defaults: (
342
355
  @return $return;
343
356
  }
344
357
 
358
+
345
359
  // Get Debug
346
360
  // ---------
347
361
  // Return the value of a debug setting
348
362
  // - $key: <setting>
349
363
  @function debug-get(
350
- $key
364
+ $key,
365
+ $grid: $susy
351
366
  ) {
352
- $user: variable-exists(debug);
353
- $map: if($user, map-merge($debug-defaults, $debug), $debug-defaults);
354
- @return map-get($map, $key);
367
+ $key: join(debug, $key, space);
368
+ @return susy-get($key);
355
369
  }
@@ -4,44 +4,24 @@
4
4
  // Bleed
5
5
  // -----
6
6
  // Add negative margins, and equal positive padding to create bleed.
7
- // - $span : <span>
7
+ // - $bleed : <span>
8
8
  @mixin bleed(
9
9
  $bleed: 0 gutter()
10
10
  ) {
11
- $bleed : map-merge(parse-span($bleed), (spread: wide));
12
- $trbl : susy-get(span, $bleed);
13
- $spans : (top: 0, right: 0, bottom: 0, left: 0);
14
-
15
- $i: 1;
16
- @each $span in $trbl {
17
- $this: map-merge($bleed, (span: $span));
18
- $span: span($this);
11
+ $output: get-bleed($bleed);
19
12
 
20
- @if $i == 1 {
21
- $spans: map-merge($spans, (top: $span, right: $span, bottom: $span, left: $span));
22
- } @else if $i == 2 {
23
- $spans: map-merge($spans, (right: $span, left: $span));
24
- } @else if $i == 3 {
25
- $spans: map-merge($spans, (bottom: $span));
26
- } @else if $i == 4 {
27
- $spans: map-merge($spans, (left: $span));
28
- }
29
- $i: $i + 1;
30
- }
31
-
32
- @each $side, $span in $spans {
33
- $padding: $span;
34
- @if is-inside($bleed) and ($side == right or $side == left) {
35
- $gutter: gutter($bleed);
36
- $padding: if(comparable($padding, $gutter), $padding + $gutter, $padding);
37
- }
38
- margin-#{$side}: if($span != 0, 0 - $span, null);
39
- padding-#{$side}: if($padding != 0, $padding, null);
13
+ @each $property, $value in $output {
14
+ #{$property}: $value;
40
15
  }
41
16
 
42
17
  @include susy-box-sizing(content-box);
43
18
  }
44
19
 
20
+
21
+ // Bleed-x
22
+ // -------
23
+ // Shortcut for horizontal bleed.
24
+ // - $bleed : <span>
45
25
  @mixin bleed-x(
46
26
  $bleed: gutter()
47
27
  ) {
@@ -59,6 +39,11 @@
59
39
  @include bleed($bleed);
60
40
  }
61
41
 
42
+
43
+ // Bleed-y
44
+ // -------
45
+ // Shortcut for vertical bleed.
46
+ // - $bleed : <span>
62
47
  @mixin bleed-y(
63
48
  $bleed: if(function-exists(rhythm), rhythm(1), 1em)
64
49
  ) {
@@ -75,3 +60,139 @@
75
60
 
76
61
  @include bleed($bleed);
77
62
  }
63
+
64
+
65
+ // Get Bleed
66
+ // ---------
67
+ // Return bleed output values
68
+ // - $bleed: <span>
69
+ @function get-bleed(
70
+ $bleed
71
+ ) {
72
+ $bleed : map-merge((spread: wide), parse-span($bleed));
73
+ $trbl : susy-get(span, $bleed);
74
+ $short : null;
75
+ $output : ();
76
+
77
+ @for $i from 1 through length($trbl) {
78
+ $this: nth($trbl, $i);
79
+ $new: ();
80
+ $margin: null;
81
+ $padding: null;
82
+ $padding-x: null;
83
+
84
+ @if $this > 0 {
85
+ $this: map-merge($bleed, (span: $this));
86
+ $margin: span($this);
87
+ $padding: $margin;
88
+ $padding-x: $padding;
89
+ }
90
+
91
+ @if $margin and $margin > 0 {
92
+ $margin: - $margin;
93
+
94
+ @if is-inside($this) {
95
+ $gutter: gutter($this);
96
+ $join: if($gutter and comparable($padding, $gutter), true, false);
97
+ $padding-x: if($join and $padding > 0, $padding + $gutter, $padding);
98
+ }
99
+ }
100
+
101
+ @if $i == 1 {
102
+ $new: (
103
+ margin-top: $margin,
104
+ padding-top: $padding,
105
+ margin-right: $margin,
106
+ padding-right: $padding-x,
107
+ margin-bottom: $margin,
108
+ padding-bottom: $padding,
109
+ margin-left: $margin,
110
+ padding-left: $padding-x,
111
+ );
112
+ } @else if $i == 2 {
113
+ $new: (
114
+ margin-right: $margin,
115
+ padding-right: $padding-x,
116
+ margin-left: $margin,
117
+ padding-left: $padding-x,
118
+ );
119
+ } @else if $i == 3 {
120
+ $new: (
121
+ margin-bottom: $margin,
122
+ padding-bottom: $padding,
123
+ );
124
+ } @else if $i == 4 {
125
+ $new: (
126
+ margin-left: $margin,
127
+ padding-left: $padding-x,
128
+ );
129
+ }
130
+
131
+ $output: map-merge($output, $new);
132
+ }
133
+
134
+ @each $prop, $value in $output {
135
+ $output: if($value == 0, map-merge($output, ($prop: null)), $output);
136
+ }
137
+
138
+ @return bleed-shorthand($output);
139
+ }
140
+
141
+ // Bleed Shorthand
142
+ // ---------------
143
+ // Convert bleed output into shorthand when possible.
144
+ // - $bleed: <output map>
145
+ @function bleed-shorthand(
146
+ $bleed
147
+ ) {
148
+ $margin: ();
149
+ $padding: ();
150
+ $return: ();
151
+
152
+ @each $key, $value in $bleed {
153
+ @if str-index($key, margin) > 0 {
154
+ $margin: map-merge($margin, ($key: $value));
155
+ } @else if str-index($key, padding) > 0 {
156
+ $padding: map-merge($padding, ($key: $value));
157
+ }
158
+ }
159
+
160
+ $props: (
161
+ margin: $margin,
162
+ padding: $padding,
163
+ );
164
+
165
+ @each $name, $map in $props {
166
+ $four: if(length(map-keys($map)) == 4, true, false);
167
+ $null: if(index(map-values($map), null), true, false);
168
+
169
+ @if $four and not $null {
170
+ $top: map-get($map, '#{$name}-top');
171
+ $right: map-get($map, '#{$name}-right');
172
+ $bottom: map-get($map, '#{$name}-bottom');
173
+ $left: map-get($map, '#{$name}-left');
174
+
175
+ $tb: if($top == $bottom, $top, null);
176
+ $rl: if($right == $left, $right, null);
177
+ $all: if($tb == $rl, $tb, null);
178
+
179
+ $new: if($all, $all, null);
180
+
181
+ @if not $new {
182
+ @if $tb and $rl {
183
+ $new: $tb $rl;
184
+ } @else if $rl {
185
+ $new: $top $rl $bottom;
186
+ } @else {
187
+ $new: $top $right $bottom $left;
188
+ }
189
+ }
190
+
191
+ $return: map-merge($return, ($name: $new));
192
+ } @else {
193
+ $return: map-merge($return, $map);
194
+ }
195
+ }
196
+
197
+ @return $return;
198
+ }