singularitygs 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: abb9b77eb89564812ea18968e3d9845d394843de
4
- data.tar.gz: 31191e29db09bf70faa60e326e50ef4894ad4ae6
3
+ metadata.gz: 13d24083bfaf80520aa48a26f7dee312d3efdd00
4
+ data.tar.gz: 812438c2a6fd732eb1bb06d026b3a9a6513656c9
5
5
  SHA512:
6
- metadata.gz: 89e8cbecaa1780b586c876573d0780a401b7f527559e966c728444247a0df838f32d73eb6ae52d712fee059fc6c45376d344fffa1e5f7d7bf764eaa0033848bb
7
- data.tar.gz: b0facd16278b69eb818105f900d4330fa2b561868c68950504db428d1d79e6dfc0dbe5f080b692e621915abdb0e39a01033dc9c3cc0b354b70de9a5c061db6e3
6
+ metadata.gz: fa7793a362cb1c5e078c2aa50a32cc57fddbb0db08588845c317e94aafc3b6ef58f9fce315023250e566946c2565184f6c26548ad4f4bf9edfed72e72d902cf2
7
+ data.tar.gz: c536c6256fbe591e0175ddabf1092ad80d6ec6db0688539b0d5af81a85755fe600a7c8b8132fcd8ff406fbd277690f5cbb371f7cf28c4a25aabdc97f5bb11c25
data/lib/singularitygs.rb CHANGED
@@ -12,6 +12,6 @@ else
12
12
  end
13
13
 
14
14
  module SingularityGS
15
- VERSION = "1.4.0"
16
- DATE = "2014-08-23"
15
+ VERSION = "1.5.0"
16
+ DATE = "2015-01-17"
17
17
  end
@@ -12,6 +12,7 @@ $Singularity-Settings: (
12
12
  'include clearfix': false,
13
13
  'background grid color': chocolate,
14
14
  'asymmetric output': 'isolation',
15
+ 'calc include min-width': true,
15
16
  'debug': false
16
17
  );
17
18
 
@@ -1,5 +1,6 @@
1
1
  @import "api/float";
2
2
  @import "api/isolation";
3
+ @import "api/calc";
3
4
 
4
5
  //////////////////////////////
5
6
  // Master Grid Span mixin
@@ -0,0 +1,201 @@
1
+ @function output-calc($Span-Map) {
2
+ // Set up Left/Right maps
3
+ $Return: ();
4
+
5
+ $Span: map-get($Span-Map, 'span');
6
+ $Location: map-get($Span-Map, 'location');
7
+
8
+ $Grid: map-get($Span-Map, 'grid');
9
+ $Gutter: map-get($Span-Map, 'gutter');
10
+ $Style: map-get($Span-Map, 'style');
11
+
12
+ @if unitless($Gutter) {
13
+ @error "Calc output style uses fixed gutters (gutters with units). Please define fixed gutters to use calc";
14
+ @return $Return;
15
+ }
16
+
17
+ @if type-of($Grid) == 'number' {
18
+ @error "Calc output style is designed to be used with asymmetric grids, especially with a mix of fixed and fluid columns. Please define an asymmetric grid or use another output style.";
19
+ }
20
+
21
+ $Start-Row: map-get($Span-Map, 'start row');
22
+ $End-Row: map-get($Span-Map, 'end row');
23
+
24
+ $Split-Gutter: map-get($Span-Map, 'split gutter');
25
+
26
+ $Direction: map-get($Span-Map, 'direction');
27
+ $Options: map-get($Span-Map, 'options');
28
+
29
+ $Dir: $Direction;
30
+ $Opp: opposite-direction($Dir);
31
+
32
+ $Width: '';
33
+ $Margin: null;
34
+ $Min-Width: '(';
35
+
36
+ $Fixed: ();
37
+ $Fluid: ();
38
+ $Fixed-Totals: ('px': 0, 'em': 0, '%': 0);
39
+ $Gutter-Totals: if(str-index($Style, 'split'), $Gutter * length($Grid), $Gutter * (length($Grid) - 1));
40
+ $Fluid-Totals: 0;
41
+ $Fluid-Fixed-Sum: '';
42
+ $Single-Fluid: '';
43
+
44
+ @for $i from 1 through length($Grid) {
45
+ $Item: nth($Grid, $i);
46
+ @if not unitless($Item) {
47
+ $Fixed: map-merge($Fixed, ($i: $Item));
48
+ }
49
+ @else {
50
+ $Fluid: map-merge($Fluid, ($i: $Item));
51
+ }
52
+ }
53
+
54
+ @each $k, $v in $Fixed {
55
+ $Unit: unit($v);
56
+ $Running: map-get($Fixed-Totals, $Unit) + $v;
57
+ $Fixed-Totals: map-merge($Fixed-Totals, ($Unit: $Running));
58
+ }
59
+
60
+ @each $k, $v in $Fluid {
61
+ $Fluid-Totals: $Fluid-Totals + $v;
62
+ }
63
+
64
+ @each $k, $v in $Fixed-Totals {
65
+
66
+ @if $v != 0 {
67
+ $Fluid-Fixed-Sum: '#{$Fluid-Fixed-Sum}#{$v} + ';
68
+ }
69
+ }
70
+
71
+ // Width of a single fluid item, for calc()
72
+ $Single-Fluid: '((100% - (#{$Fluid-Fixed-Sum}#{$Gutter-Totals})) / (#{$Fluid-Totals}))';
73
+
74
+ // Margin Calculation
75
+ @if not $Start-Row or not $End-Row {
76
+ @if $Split-Gutter {
77
+ $Margin: '#{$Gutter / 2} + ';
78
+ }
79
+
80
+ @for $i from 1 to $Location {
81
+ @if unitless(nth($Grid, $i)) {
82
+ $Margin: '#{$Margin}(#{$Single-Fluid} * #{nth($Grid, $i)} + #{$Gutter}) + ';
83
+ }
84
+ @else {
85
+ $Margin: '#{$Margin}(#{nth($Grid, $i)} + #{$Gutter}) + ';
86
+ }
87
+ }
88
+ }
89
+ @if $Margin != null {
90
+ $Margin: str-slice($Margin, 0, -4);
91
+ }
92
+
93
+
94
+ // Width Calculation
95
+ @if $Span == 1 {
96
+ @if map-has-key($Fixed, $Location) {
97
+ $Return: map-merge($Return, ('width': map-get($Fixed, $Location)));
98
+ }
99
+ @else if map-has-key($Fluid, $Location) {
100
+ $Math: '(#{$Single-Fluid}) * #{nth($Grid, $Location)}';
101
+ $Span-Map: ('width': ('webkit': -webkit-calc(#{unquote($Math)}), 'standard': calc(#{unquote($Math)})));
102
+ $Return: map-merge($Return, $Span-Map);
103
+ }
104
+ }
105
+ @else {
106
+ $Location-End: $Location + ($Span - 1);
107
+ $Fixed-Counter: 0;
108
+ @for $i from $Location through $Location-End {
109
+ @if unitless(nth($Grid, $i)) {
110
+ $Width: '#{$Width}(#{$Single-Fluid} * #{nth($Grid, $i)}';
111
+ }
112
+ @else {
113
+ $Fixed-Counter: $Fixed-Counter + 1;
114
+ $Min-Width: '#{$Min-Width}#{nth($Grid, $i)} + #{$Gutter} + ';
115
+ $Width: '#{$Width}(#{nth($Grid, $i)}';
116
+ }
117
+
118
+
119
+ @if $i != $Location-End {
120
+ $Width: '#{$Width} + #{$Gutter}) + ';
121
+ }
122
+ @else {
123
+ $Min-Width: str-slice($Min-Width, 0, -4);
124
+ @if $Fixed-Counter == 1 {
125
+ $Min-Width: '#{$Min-Width} - #{$Gutter}';
126
+ }
127
+ $Min-Width: '#{$Min-Width})';
128
+ $Width: '#{$Width})';
129
+ }
130
+ }
131
+
132
+ $Min-Map: ('min-width': ('webkit' : -webkit-calc(#{unquote($Min-Width)}), 'standard': calc(#{unquote($Min-Width)}) ));
133
+ $Span-Map: ('width': ('webkit': -webkit-calc(#{unquote($Width)}), 'standard': calc(#{unquote($Width)}) ) );
134
+
135
+ @if sgs-get('calc include min-width') {
136
+ $Return: map-merge($Return, $Min-Map);
137
+ }
138
+ $Return: map-merge($Return, $Span-Map);
139
+ }
140
+
141
+ // Build margins and Floats
142
+ @if ($End-Row) {
143
+ $Return: map-merge($Return, ('float': $Opp));
144
+ $Return: map-merge($Return, ('margin-#{$Dir}': 0));
145
+
146
+ @if $Split-Gutter {
147
+ $Return: map-merge($Return, ('margin-#{$Opp}': $Gutter / 2));
148
+ }
149
+ @else {
150
+ $Return: map-merge($Return, ('margin-#{$Opp}': 0));
151
+ }
152
+ }
153
+ @else {
154
+ $Return: map-merge($Return, ('float': $Dir));
155
+ $Return: map-merge($Return, ('margin-#{$Opp}': -100%));
156
+
157
+ @if $Start-Row {
158
+ @if $Split-Gutter {
159
+ $Return: map-merge($Return, ('margin-#{$Dir}': $Gutter / 2));
160
+ }
161
+ @else {
162
+ $Return: map-merge($Return, ('margin-#{$Dir}': 0));
163
+ }
164
+ }
165
+ @else {
166
+ $Margin-Map: ('margin-#{$Dir}': ('webkit': -webkit-calc(#{unquote($Margin)}), 'standard': calc(#{unquote($Margin)})));
167
+ $Return: map-merge($Return, $Margin-Map);
168
+ }
169
+ }
170
+
171
+ @return $Return;
172
+ }
173
+
174
+
175
+
176
+ //////////////////////////////
177
+ // Happy Syntax for Calc
178
+ //
179
+ // Makes working with Calc easier, as it moves Clear to a 1st class citizen of the mixin, and automatically builds the verbose grid-span mixin call
180
+ //////////////////////////////
181
+ @mixin calc-span($Span, $Location, $clear: false, $grid: false, $gutter: false, $gutter-style: false, $from: false) {
182
+
183
+ @if $gutter != false and unitless($gutter) {
184
+ @warn "Calc output style uses fixed gutters (gutters with units). Please define fixed gutters to use calc";
185
+ }
186
+
187
+ @if $grid != false and type-of($grid) == 'number' {
188
+ @warn "Calc output style is designed to be used with asymmetric grids, especially with a mix of fixed and fluid columns. Please define an asymmetric grid.";
189
+ }
190
+
191
+ $Options: ();
192
+ @if $clear {
193
+ $Options: map-merge($Options, ('clear': $clear));
194
+ }
195
+ @if $from {
196
+ $Options: map-merge($Options, ('from': $from));
197
+ }
198
+
199
+ $Options: if(length($Options) > 0, $Options, null);
200
+ @include grid-span($Span, $Location, $grid, $gutter, 'calc', $gutter-style, $Options);
201
+ }
@@ -158,6 +158,7 @@
158
158
 
159
159
  @mixin background-build($columns, $gutters, $gutter-styles, $color) {
160
160
  $Background-Map: background-map($columns, $gutters, $gutter-styles);
161
+ $Display: true;
161
162
 
162
163
  $Column-Color: $color;
163
164
  $Inverse-Column-Color: mix(black, $color, 15%);
@@ -199,32 +200,54 @@
199
200
  }
200
201
 
201
202
  @if $i != $Grid-Count {
202
- $Gradient: append($Gradient, ($Loop-Color $Counter-Width, $Loop-Color ($Counter-Width + $Loop-Width)), 'comma');
203
- $Counter-Width: $Counter-Width + $Loop-Width;
204
- $Gradient: append($Gradient, ($Gutter-Color $Counter-Width, $Gutter-Color ($Counter-Width + $Gutter-Width)), 'comma');
205
- $Counter-Width: $Counter-Width + $Gutter-Width;
203
+ @if unit($Counter-Width) == unit($Loop-Width) {
204
+ $Gradient: append($Gradient, ($Loop-Color $Counter-Width, $Loop-Color ($Counter-Width + $Loop-Width)), 'comma');
205
+ $Counter-Width: $Counter-Width + $Loop-Width;
206
+ $Gradient: append($Gradient, ($Gutter-Color $Counter-Width, $Gutter-Color ($Counter-Width + $Gutter-Width)), 'comma');
207
+ $Counter-Width: $Counter-Width + $Gutter-Width;
208
+ }
209
+ @else {
210
+ $Display: false;
211
+ }
212
+
206
213
  }
207
214
  @else if $i == 1 {
208
- $Gradient: append($Gradient, ($Loop-Color, $Loop-Color $Counter-Width, $Gutter-Color $Counter-Width, $Gutter-Color ($Counter-Width + $Gutter-Width)), 'comma');
209
- $Counter-Width: $Counter-Width + $Loop-Width + $Gutter-Width;
215
+ @if unit($Counter-Width) == unit($Loop-Width) {
216
+ $Gradient: append($Gradient, ($Loop-Color, $Loop-Color $Counter-Width, $Gutter-Color $Counter-Width, $Gutter-Color ($Counter-Width + $Gutter-Width)), 'comma');
217
+ $Counter-Width: $Counter-Width + $Loop-Width + $Gutter-Width;
218
+ }
219
+ @else {
220
+ $Display: false;
221
+ }
222
+
210
223
  }
211
224
  @else if $i == $Grid-Count and index($Style, 'split') {
212
- $Gradient: append($Gradient, ($Loop-Color $Counter-Width, $Loop-Color ($Counter-Width + $Loop-Width)), 'comma');
213
- $Counter-Width: $Counter-Width + $Loop-Width;
214
- $Gradient: append($Gradient, ($Gutter-Color $Counter-Width, $Gutter-Color ($Counter-Width + ($Gutter-Width / 2))), 'comma');
225
+ @if unit($Counter-Width) == unit($Loop-Width) {
226
+ $Gradient: append($Gradient, ($Loop-Color $Counter-Width, $Loop-Color ($Counter-Width + $Loop-Width)), 'comma');
227
+ $Counter-Width: $Counter-Width + $Loop-Width;
228
+ $Gradient: append($Gradient, ($Gutter-Color $Counter-Width, $Gutter-Color ($Counter-Width + ($Gutter-Width / 2))), 'comma');
229
+ }
230
+ @else {
231
+ $Display: false;
232
+ }
215
233
  }
216
234
  @else {
217
235
  $Gradient: append($Gradient, ($Loop-Color $Counter-Width, $Loop-Color), 'comma');
218
236
  }
219
237
  }
220
238
 
221
- @if $bkpt != -1px {
222
- @include breakpoint($bkpt) {
239
+ @if $Display {
240
+ @if $bkpt != -1px {
241
+ @include breakpoint($bkpt) {
242
+ background-image: unquote('linear-gradient(to #{opposite-direction($Direction)}, #{$Gradient})');
243
+ }
244
+ }
245
+ @else {
223
246
  background-image: unquote('linear-gradient(to #{opposite-direction($Direction)}, #{$Gradient})');
224
247
  }
225
248
  }
226
249
  @else {
227
- background-image: unquote('linear-gradient(to #{opposite-direction($Direction)}, #{$Gradient})');
250
+ @warn 'Cannot generate a CSS gradient for grid `#{$Grid}` with gutters `#{$Gutter}` and gutter style `#{$Style}`';
228
251
  }
229
252
  }
230
253
  }
@@ -37,6 +37,10 @@
37
37
  $sgs-change: sgs-set($setting, $value);
38
38
  }
39
39
 
40
+ @mixin sgs-set($setting, $value) {
41
+ @include sgs-change($setting, $value);
42
+ }
43
+
40
44
  //////////////////////////////
41
45
  // Remove Setting
42
46
  //////////////////////////////
@@ -43,7 +43,7 @@
43
43
 
44
44
  @if length($breakpoint-mq) > 1 {
45
45
  @warn "Responsive contexts are not available for `or` queries as which query to use is ambiguous. Please only use single context queries. Context set to -1px.";
46
- $parse-mq: 1px;
46
+ $parse-mq: -1px;
47
47
  }
48
48
  @else if length($breakpoint-mq) < 1 {
49
49
  @warn "No " + if($Mobile-First, 'min-width', 'max-width') + ' context found. Please use a media query with the correct context. Context set to -1px.';
@@ -60,4 +60,4 @@
60
60
  }
61
61
 
62
62
  @return ($parse-find $parse-mq);
63
- }
63
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: singularitygs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Kellum
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-23 00:00:00.000000000 Z
12
+ date: 2015-01-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sass
@@ -56,6 +56,7 @@ files:
56
56
  - stylesheets/singularitygs/_helpers.scss
57
57
  - stylesheets/singularitygs/_language.scss
58
58
  - stylesheets/singularitygs/_math.scss
59
+ - stylesheets/singularitygs/api/_calc.scss
59
60
  - stylesheets/singularitygs/api/_float.scss
60
61
  - stylesheets/singularitygs/api/_isolation.scss
61
62
  - stylesheets/singularitygs/grids/_add.scss