gridle 1.3.36 → 2.0.0
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.
- checksums.yaml +4 -4
- data/lib/gridle.rb +2 -2
- data/stylesheets/_gridle-flex.scss +4 -0
- data/stylesheets/gridle/_api.scss +508 -0
- data/stylesheets/gridle/_driver-default.scss +445 -0
- data/stylesheets/gridle/_driver-flex.scss +418 -0
- data/stylesheets/gridle/_flexbox.scss +422 -0
- data/stylesheets/gridle/_functions.scss +575 -175
- data/stylesheets/gridle/_generate-mixins.scss +320 -381
- data/stylesheets/gridle/_gridle-flex.scss +60 -0
- data/stylesheets/gridle/_gridle.scss +6 -88
- data/stylesheets/gridle/_init.scss +131 -0
- data/stylesheets/gridle/_mixins.scss +289 -728
- data/stylesheets/gridle/_settings-mixins.scss +310 -45
- data/stylesheets/gridle/_settings.scss +128 -61
- metadata +9 -4
- data/stylesheets/gridle/_common-mixins.scss +0 -124
- data/stylesheets/gridle/_silent-classes.scss +0 -104
@@ -0,0 +1,422 @@
|
|
1
|
+
// Flexbox Mixins
|
2
|
+
// http://philipwalton.github.io/solved-by-flexbox/
|
3
|
+
// https://github.com/philipwalton/solved-by-flexbox
|
4
|
+
//
|
5
|
+
// Copyright (c) 2013 Brian Franco
|
6
|
+
//
|
7
|
+
// Permission is hereby granted, free of charge, to any person obtaining a
|
8
|
+
// copy of this software and associated documentation files (the
|
9
|
+
// "Software"), to deal in the Software without restriction, including
|
10
|
+
// without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
// distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
// permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
// the following conditions:
|
14
|
+
// The above copyright notice and this permission notice shall be included
|
15
|
+
// in all copies or substantial portions of the Software.
|
16
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
17
|
+
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
19
|
+
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
20
|
+
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
21
|
+
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
22
|
+
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
|
+
//
|
24
|
+
// This is a set of mixins for those who want to mess around with flexbox
|
25
|
+
// using the native support of current browsers. For full support table
|
26
|
+
// check: http://caniuse.com/flexbox
|
27
|
+
//
|
28
|
+
// Basically this will use:
|
29
|
+
//
|
30
|
+
// * Fallback, old syntax (IE10, mobile webkit browsers - no wrapping)
|
31
|
+
// * Final standards syntax (FF, Safari, Chrome, IE11, Opera)
|
32
|
+
//
|
33
|
+
// This was inspired by:
|
34
|
+
//
|
35
|
+
// * http://dev.opera.com/articles/view/advanced-cross-browser-flexbox/
|
36
|
+
//
|
37
|
+
// With help from:
|
38
|
+
//
|
39
|
+
// * http://w3.org/tr/css3-flexbox/
|
40
|
+
// * http://the-echoplex.net/flexyboxes/
|
41
|
+
// * http://msdn.microsoft.com/en-us/library/ie/hh772069(v=vs.85).aspx
|
42
|
+
// * http://css-tricks.com/using-flexbox/
|
43
|
+
// * http://dev.opera.com/articles/view/advanced-cross-browser-flexbox/
|
44
|
+
// * https://developer.mozilla.org/en-us/docs/web/guide/css/flexible_boxes
|
45
|
+
|
46
|
+
//----------------------------------------------------------------------
|
47
|
+
|
48
|
+
// Flexbox Containers
|
49
|
+
//
|
50
|
+
// The 'flex' value causes an element to generate a block-level flex
|
51
|
+
// container box.
|
52
|
+
//
|
53
|
+
// The 'inline-flex' value causes an element to generate a inline-level
|
54
|
+
// flex container box.
|
55
|
+
//
|
56
|
+
// display: flex | inline-flex
|
57
|
+
//
|
58
|
+
// http://w3.org/tr/css3-flexbox/#flex-containers
|
59
|
+
//
|
60
|
+
// (Placeholder selectors for each type, for those who rather @extend)
|
61
|
+
|
62
|
+
@mixin flexbox {
|
63
|
+
@if $gridle-vendor-prefix {
|
64
|
+
display: -webkit-box;
|
65
|
+
display: -webkit-flex;
|
66
|
+
display: -moz-flex;
|
67
|
+
display: -ms-flexbox;
|
68
|
+
}
|
69
|
+
display: flex;
|
70
|
+
}
|
71
|
+
|
72
|
+
%flexbox { @include flexbox; }
|
73
|
+
|
74
|
+
//----------------------------------
|
75
|
+
|
76
|
+
@mixin inline-flex {
|
77
|
+
@if $gridle-vendor-prefix {
|
78
|
+
display: -webkit-inline-box;
|
79
|
+
display: -webkit-inline-flex;
|
80
|
+
display: -moz-inline-flex;
|
81
|
+
display: -ms-inline-flexbox;
|
82
|
+
}
|
83
|
+
display: inline-flex;
|
84
|
+
}
|
85
|
+
|
86
|
+
%inline-flex { @include inline-flex; }
|
87
|
+
|
88
|
+
//----------------------------------------------------------------------
|
89
|
+
|
90
|
+
// Flexbox Direction
|
91
|
+
//
|
92
|
+
// The 'flex-direction' property specifies how flex items are placed in
|
93
|
+
// the flex container, by setting the direction of the flex container's
|
94
|
+
// main axis. This determines the direction that flex items are laid out in.
|
95
|
+
//
|
96
|
+
// Values: row | row-reverse | column | column-reverse
|
97
|
+
// Default: row
|
98
|
+
//
|
99
|
+
// http://w3.org/tr/css3-flexbox/#flex-direction-property
|
100
|
+
|
101
|
+
@mixin flex-direction($value: row) {
|
102
|
+
@if $gridle-vendor-prefix {
|
103
|
+
@if $value == row-reverse {
|
104
|
+
-webkit-box-direction: reverse;
|
105
|
+
-webkit-box-orient: horizontal;
|
106
|
+
} @else if $value == column {
|
107
|
+
-webkit-box-direction: normal;
|
108
|
+
-webkit-box-orient: vertical;
|
109
|
+
} @else if $value == column-reverse {
|
110
|
+
-webkit-box-direction: reverse;
|
111
|
+
-webkit-box-orient: vertical;
|
112
|
+
} @else {
|
113
|
+
-webkit-box-direction: normal;
|
114
|
+
-webkit-box-orient: horizontal;
|
115
|
+
}
|
116
|
+
-webkit-flex-direction: $value;
|
117
|
+
-moz-flex-direction: $value;
|
118
|
+
-ms-flex-direction: $value;
|
119
|
+
}
|
120
|
+
flex-direction: $value;
|
121
|
+
}
|
122
|
+
// Shorter version:
|
123
|
+
@mixin flex-dir($args...) { @include flex-direction($args...); }
|
124
|
+
|
125
|
+
//----------------------------------------------------------------------
|
126
|
+
|
127
|
+
// Flexbox Wrap
|
128
|
+
//
|
129
|
+
// The 'flex-wrap' property controls whether the flex container is single-line
|
130
|
+
// or multi-line, and the direction of the cross-axis, which determines
|
131
|
+
// the direction new lines are stacked in.
|
132
|
+
//
|
133
|
+
// Values: nowrap | wrap | wrap-reverse
|
134
|
+
// Default: nowrap
|
135
|
+
//
|
136
|
+
// http://w3.org/tr/css3-flexbox/#flex-wrap-property
|
137
|
+
|
138
|
+
@mixin flex-wrap($value: nowrap) {
|
139
|
+
@if $gridle-vendor-prefix {
|
140
|
+
// No Webkit Box fallback.
|
141
|
+
-webkit-flex-wrap: $value;
|
142
|
+
-moz-flex-wrap: $value;
|
143
|
+
@if $value == nowrap {
|
144
|
+
-ms-flex-wrap: none;
|
145
|
+
} @else {
|
146
|
+
-ms-flex-wrap: $value;
|
147
|
+
}
|
148
|
+
}
|
149
|
+
flex-wrap: $value;
|
150
|
+
}
|
151
|
+
|
152
|
+
//----------------------------------------------------------------------
|
153
|
+
|
154
|
+
// Flexbox Flow (shorthand)
|
155
|
+
//
|
156
|
+
// The 'flex-flow' property is a shorthand for setting the 'flex-direction'
|
157
|
+
// and 'flex-wrap' properties, which together define the flex container's
|
158
|
+
// main and cross axes.
|
159
|
+
//
|
160
|
+
// Values: <flex-direction> | <flex-wrap>
|
161
|
+
// Default: row nowrap
|
162
|
+
//
|
163
|
+
// http://w3.org/tr/css3-flexbox/#flex-flow-property
|
164
|
+
|
165
|
+
@mixin flex-flow($values: (row nowrap)) {
|
166
|
+
@if $gridle-vendor-prefix {
|
167
|
+
// No Webkit Box fallback.
|
168
|
+
-webkit-flex-flow: $values;
|
169
|
+
-moz-flex-flow: $values;
|
170
|
+
-ms-flex-flow: $values;
|
171
|
+
}
|
172
|
+
flex-flow: $values;
|
173
|
+
}
|
174
|
+
|
175
|
+
//----------------------------------------------------------------------
|
176
|
+
|
177
|
+
// Flexbox Order
|
178
|
+
//
|
179
|
+
// The 'order' property controls the order in which flex items appear within
|
180
|
+
// their flex container, by assigning them to ordinal groups.
|
181
|
+
//
|
182
|
+
// Default: 0
|
183
|
+
//
|
184
|
+
// http://w3.org/tr/css3-flexbox/#order-property
|
185
|
+
|
186
|
+
@mixin order($int: 0) {
|
187
|
+
@if $gridle-vendor-prefix {
|
188
|
+
-webkit-box-ordinal-group: $int + 1;
|
189
|
+
-webkit-order: $int;
|
190
|
+
-moz-order: $int;
|
191
|
+
-ms-flex-order: $int;
|
192
|
+
}
|
193
|
+
order: $int;
|
194
|
+
}
|
195
|
+
|
196
|
+
//----------------------------------------------------------------------
|
197
|
+
|
198
|
+
// Flexbox Grow
|
199
|
+
//
|
200
|
+
// The 'flex-grow' property sets the flex grow factor. Negative numbers
|
201
|
+
// are invalid.
|
202
|
+
//
|
203
|
+
// Default: 0
|
204
|
+
//
|
205
|
+
// http://w3.org/tr/css3-flexbox/#flex-grow-property
|
206
|
+
|
207
|
+
@mixin flex-grow($int: 0) {
|
208
|
+
@if $gridle-vendor-prefix {
|
209
|
+
-webkit-box-flex: $int;
|
210
|
+
-webkit-flex-grow: $int;
|
211
|
+
-moz-flex-grow: $int;
|
212
|
+
-ms-flex-positive: $int;
|
213
|
+
}
|
214
|
+
flex-grow: $int;
|
215
|
+
}
|
216
|
+
|
217
|
+
//----------------------------------------------------------------------
|
218
|
+
|
219
|
+
// Flexbox Shrink
|
220
|
+
//
|
221
|
+
// The 'flex-shrink' property sets the flex shrink factor. Negative numbers
|
222
|
+
// are invalid.
|
223
|
+
//
|
224
|
+
// Default: 1
|
225
|
+
//
|
226
|
+
// http://w3.org/tr/css3-flexbox/#flex-shrink-property
|
227
|
+
|
228
|
+
@mixin flex-shrink($int: 1) {
|
229
|
+
@if $gridle-vendor-prefix {
|
230
|
+
-webkit-flex-shrink: $int;
|
231
|
+
-moz-flex-shrink: $int;
|
232
|
+
-ms-flex-negative: $int;
|
233
|
+
}
|
234
|
+
flex-shrink: $int;
|
235
|
+
}
|
236
|
+
|
237
|
+
//----------------------------------------------------------------------
|
238
|
+
|
239
|
+
// Flexbox Basis
|
240
|
+
//
|
241
|
+
// The 'flex-basis' property sets the flex basis. Negative lengths are invalid.
|
242
|
+
//
|
243
|
+
// Values: Like "width"
|
244
|
+
// Default: auto
|
245
|
+
//
|
246
|
+
// http://www.w3.org/TR/css3-flexbox/#flex-basis-property
|
247
|
+
|
248
|
+
@mixin flex-basis($value: auto) {
|
249
|
+
@if $gridle-vendor-prefix {
|
250
|
+
-webkit-flex-basis: $value;
|
251
|
+
-moz-flex-basis: $value;
|
252
|
+
-ms-flex-preferred-size: $value;
|
253
|
+
}
|
254
|
+
flex-basis: $value;
|
255
|
+
}
|
256
|
+
|
257
|
+
//----------------------------------------------------------------------
|
258
|
+
|
259
|
+
// Flexbox "Flex" (shorthand)
|
260
|
+
//
|
261
|
+
// The 'flex' property specifies the components of a flexible length: the
|
262
|
+
// flex grow factor and flex shrink factor, and the flex basis. When an
|
263
|
+
// element is a flex item, 'flex' is consulted instead of the main size
|
264
|
+
// property to determine the main size of the element. If an element is
|
265
|
+
// not a flex item, 'flex' has no effect.
|
266
|
+
//
|
267
|
+
// Values: none | <flex-grow> <flex-shrink> || <flex-basis>
|
268
|
+
// Default: See individual properties (1 1 0).
|
269
|
+
//
|
270
|
+
// http://w3.org/tr/css3-flexbox/#flex-property
|
271
|
+
|
272
|
+
@mixin flex($fg: 1, $fs: null, $fb: null) {
|
273
|
+
|
274
|
+
// Set a variable to be used by box-flex properties
|
275
|
+
$fg-boxflex: $fg;
|
276
|
+
|
277
|
+
// Box-Flex only supports a flex-grow value so let's grab the
|
278
|
+
// first item in the list and just return that.
|
279
|
+
@if type-of($fg) == 'list' {
|
280
|
+
$fg-boxflex: nth($fg, 1);
|
281
|
+
}
|
282
|
+
|
283
|
+
@if $gridle-vendor-prefix {
|
284
|
+
-webkit-box-flex: $fg-boxflex;
|
285
|
+
-webkit-flex: $fg $fs $fb;
|
286
|
+
-moz-box-flex: $fg-boxflex;
|
287
|
+
-moz-flex: $fg $fs $fb;
|
288
|
+
-ms-flex: $fg $fs $fb;
|
289
|
+
}
|
290
|
+
flex: $fg $fs $fb;
|
291
|
+
}
|
292
|
+
|
293
|
+
//----------------------------------------------------------------------
|
294
|
+
|
295
|
+
// Flexbox Justify Content
|
296
|
+
//
|
297
|
+
// The 'justify-content' property aligns flex items along the main axis
|
298
|
+
// of the current line of the flex container. This is done after any flexible
|
299
|
+
// lengths and any auto margins have been resolved. Typically it helps distribute
|
300
|
+
// extra free space leftover when either all the flex items on a line are
|
301
|
+
// inflexible, or are flexible but have reached their maximum size. It also
|
302
|
+
// exerts some control over the alignment of items when they overflow the line.
|
303
|
+
//
|
304
|
+
// Note: 'space-*' values not supported in older syntaxes.
|
305
|
+
//
|
306
|
+
// Values: flex-start | flex-end | center | space-between | space-around
|
307
|
+
// Default: flex-start
|
308
|
+
//
|
309
|
+
// http://w3.org/tr/css3-flexbox/#justify-content-property
|
310
|
+
|
311
|
+
@mixin justify-content($value: flex-start) {
|
312
|
+
@if $gridle-vendor-prefix {
|
313
|
+
@if $value == flex-start {
|
314
|
+
-webkit-box-pack: start;
|
315
|
+
-ms-flex-pack: start;
|
316
|
+
} @else if $value == flex-end {
|
317
|
+
-webkit-box-pack: end;
|
318
|
+
-ms-flex-pack: end;
|
319
|
+
} @else if $value == space-between {
|
320
|
+
-webkit-box-pack: justify;
|
321
|
+
-ms-flex-pack: justify;
|
322
|
+
} @else if $value == space-around {
|
323
|
+
-ms-flex-pack: distribute;
|
324
|
+
} @else {
|
325
|
+
-webkit-box-pack: $value;
|
326
|
+
-ms-flex-pack: $value;
|
327
|
+
}
|
328
|
+
-webkit-justify-content: $value;
|
329
|
+
-moz-justify-content: $value;
|
330
|
+
}
|
331
|
+
justify-content: $value;
|
332
|
+
}
|
333
|
+
// Shorter version:
|
334
|
+
@mixin flex-just($args...) { @include justify-content($args...); }
|
335
|
+
|
336
|
+
//----------------------------------------------------------------------
|
337
|
+
|
338
|
+
// Flexbox Align Items
|
339
|
+
//
|
340
|
+
// Flex items can be aligned in the cross axis of the current line of the
|
341
|
+
// flex container, similar to 'justify-content' but in the perpendicular
|
342
|
+
// direction. 'align-items' sets the default alignment for all of the flex
|
343
|
+
// container's items, including anonymous flex items. 'align-self' allows
|
344
|
+
// this default alignment to be overridden for individual flex items. (For
|
345
|
+
// anonymous flex items, 'align-self' always matches the value of 'align-items'
|
346
|
+
// on their associated flex container.)
|
347
|
+
//
|
348
|
+
// Values: flex-start | flex-end | center | baseline | stretch
|
349
|
+
// Default: stretch
|
350
|
+
//
|
351
|
+
// http://w3.org/tr/css3-flexbox/#align-items-property
|
352
|
+
|
353
|
+
@mixin align-items($value: stretch) {
|
354
|
+
@if $gridle-vendor-prefix {
|
355
|
+
@if $value == flex-start {
|
356
|
+
-webkit-box-align: start;
|
357
|
+
-ms-flex-align: start;
|
358
|
+
} @else if $value == flex-end {
|
359
|
+
-webkit-box-align: end;
|
360
|
+
-ms-flex-align: end;
|
361
|
+
} @else {
|
362
|
+
-webkit-box-align: $value;
|
363
|
+
-ms-flex-align: $value;
|
364
|
+
}
|
365
|
+
-webkit-align-items: $value;
|
366
|
+
-moz-align-items: $value;
|
367
|
+
}
|
368
|
+
align-items: $value;
|
369
|
+
}
|
370
|
+
|
371
|
+
//----------------------------------
|
372
|
+
|
373
|
+
// Flexbox Align Self
|
374
|
+
//
|
375
|
+
// Values: auto | flex-start | flex-end | center | baseline | stretch
|
376
|
+
// Default: auto
|
377
|
+
|
378
|
+
@mixin align-self($value: auto) {
|
379
|
+
@if $gridle-vendor-prefix {
|
380
|
+
// No Webkit Box Fallback.
|
381
|
+
-webkit-align-self: $value;
|
382
|
+
-moz-align-self: $value;
|
383
|
+
@if $value == flex-start {
|
384
|
+
-ms-flex-item-align: start;
|
385
|
+
} @else if $value == flex-end {
|
386
|
+
-ms-flex-item-align: end;
|
387
|
+
} @else {
|
388
|
+
-ms-flex-item-align: $value;
|
389
|
+
}
|
390
|
+
}
|
391
|
+
align-self: $value;
|
392
|
+
}
|
393
|
+
|
394
|
+
//----------------------------------------------------------------------
|
395
|
+
|
396
|
+
// Flexbox Align Content
|
397
|
+
//
|
398
|
+
// The 'align-content' property aligns a flex container's lines within the
|
399
|
+
// flex container when there is extra space in the cross-axis, similar to
|
400
|
+
// how 'justify-content' aligns individual items within the main-axis. Note,
|
401
|
+
// this property has no effect when the flexbox has only a single line.
|
402
|
+
//
|
403
|
+
// Values: flex-start | flex-end | center | space-between | space-around | stretch
|
404
|
+
// Default: stretch
|
405
|
+
//
|
406
|
+
// http://w3.org/tr/css3-flexbox/#align-content-property
|
407
|
+
|
408
|
+
@mixin align-content($value: stretch) {
|
409
|
+
@if $gridle-vendor-prefix {
|
410
|
+
// No Webkit Box Fallback.
|
411
|
+
-webkit-align-content: $value;
|
412
|
+
-moz-align-content: $value;
|
413
|
+
@if $value == flex-start {
|
414
|
+
-ms-flex-line-pack: start;
|
415
|
+
} @else if $value == flex-end {
|
416
|
+
-ms-flex-line-pack: end;
|
417
|
+
} @else {
|
418
|
+
-ms-flex-line-pack: $value;
|
419
|
+
}
|
420
|
+
}
|
421
|
+
align-content: $value;
|
422
|
+
}
|
@@ -4,15 +4,15 @@
|
|
4
4
|
// |------------------------------------------------------
|
5
5
|
// |------------------------------------------------------
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
//
|
8
|
+
// Str replace
|
9
|
+
//
|
10
|
+
// @param {string} $string String that you want to replace
|
11
|
+
// @param {string} $substr String that is to be replaced by `$newsubstr`
|
12
|
+
// @param {string} $newsubstr String that replaces `$substr`
|
13
|
+
// @param {number*} $all Flag for replaceing all (1+) or not (0)
|
14
|
+
// @return {string}
|
15
|
+
//
|
16
16
|
@function str-replace($string, $substr, $newsubstr, $all: 0) {
|
17
17
|
$position-found: str-index($string, $substr);
|
18
18
|
$processed: ();
|
@@ -40,44 +40,146 @@
|
|
40
40
|
@return $string;
|
41
41
|
}
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
43
|
+
//
|
44
|
+
// Map set
|
45
|
+
//
|
46
|
+
// @param Map $map The map to use
|
47
|
+
// @param String $key The key to update
|
48
|
+
// @param Mixed $value The new value
|
49
|
+
// @return Map The new map
|
50
|
+
//
|
51
51
|
@function map-set($map, $key, $value) {
|
52
52
|
$new: ($key: $value);
|
53
53
|
@return map-merge($map, $new);
|
54
54
|
}
|
55
55
|
|
56
|
+
//
|
57
|
+
// Remove item from list
|
58
|
+
//
|
59
|
+
@function remove-nth($list, $index) {
|
60
|
+
$result: null;
|
61
|
+
|
62
|
+
@if type-of($index) != number {
|
63
|
+
@warn "$index: #{quote($index)} is not a number for `remove-nth`.";
|
64
|
+
}
|
65
|
+
|
66
|
+
@else if $index == 0 {
|
67
|
+
@warn "List index 0 must be a non-zero integer for `remove-nth`.";
|
68
|
+
}
|
69
|
+
|
70
|
+
@else if abs($index) > length($list) {
|
71
|
+
@warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
|
72
|
+
}
|
73
|
+
|
74
|
+
@else {
|
75
|
+
$result: ();
|
76
|
+
$index: if($index < 0, length($list) + $index + 1, $index);
|
77
|
+
|
78
|
+
@for $i from 1 through length($list) {
|
79
|
+
@if $i != $index {
|
80
|
+
$result: append($result, nth($list, $i));
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
@return $result;
|
86
|
+
}
|
87
|
+
|
88
|
+
//
|
89
|
+
// List shift
|
90
|
+
//
|
91
|
+
// @param List $list The list to use
|
92
|
+
// @return List The processed list
|
93
|
+
//
|
94
|
+
@function list-shift($list) {
|
95
|
+
@return remove-nth($list,1);
|
96
|
+
}
|
97
|
+
|
98
|
+
//
|
99
|
+
// List pop
|
100
|
+
//
|
101
|
+
// @param List $list The list to use
|
102
|
+
// @return List The processed list
|
103
|
+
//
|
104
|
+
@function list-pop($list) {
|
105
|
+
@return remove-nth($list,length($list));
|
106
|
+
}
|
107
|
+
|
108
|
+
//
|
109
|
+
// In map
|
110
|
+
// Determine if something is in the provided map
|
111
|
+
//
|
112
|
+
// @param Map $map The map to use
|
113
|
+
// @param Mixed $needle What to search
|
114
|
+
// @return Boolean True|false
|
115
|
+
//
|
116
|
+
@function in-map($map, $needle) {
|
117
|
+
@each $v in $map {
|
118
|
+
@if $v == $needle {
|
119
|
+
@return true;
|
120
|
+
}
|
121
|
+
}
|
122
|
+
@return false;
|
123
|
+
}
|
124
|
+
|
125
|
+
|
126
|
+
//
|
127
|
+
// Get states count
|
128
|
+
//
|
129
|
+
// @return int The number of states defined
|
130
|
+
//
|
131
|
+
@function gridle_states_count() {
|
132
|
+
@return length($_gridle_states);
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
//
|
137
|
+
// Get the current state
|
138
|
+
//
|
139
|
+
@function gridle_current_state() {
|
140
|
+
@return $_gridle_current_state;
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
//
|
145
|
+
// Get the current state name
|
146
|
+
//
|
147
|
+
@function gridle_current_state_name() {
|
148
|
+
@return $_gridle_current_stateName;
|
149
|
+
}
|
56
150
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
151
|
+
|
152
|
+
//
|
153
|
+
// Get the column width in percent for the global or a specific context
|
154
|
+
//
|
155
|
+
// @param int $columns The number of columns to calculate
|
156
|
+
// @param int $context : $gridle-columns-count The context to use
|
157
|
+
// @return percentage The width in percent
|
158
|
+
//
|
159
|
+
@function gridle_column_width(
|
65
160
|
$columns : 1,
|
66
161
|
$stateMap-or-stateName : null
|
67
162
|
) {
|
163
|
+
$context : gridle_get_state_var(context, $stateMap-or-stateName);
|
68
164
|
@return percentage(1 / $context * $columns);
|
69
165
|
}
|
70
166
|
|
71
167
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
@function
|
79
|
-
$stateMap-or-stateName
|
168
|
+
//
|
169
|
+
// Get a state map
|
170
|
+
//
|
171
|
+
// @param string $name The name of the state to get
|
172
|
+
// @return map A state map object
|
173
|
+
//
|
174
|
+
@function gridle_get_state(
|
175
|
+
$stateMap-or-stateName : current
|
80
176
|
) {
|
177
|
+
|
178
|
+
// check if need to return the current state
|
179
|
+
@if $stateMap-or-stateName == current {
|
180
|
+
@return gridle_current_state();
|
181
|
+
}
|
182
|
+
|
81
183
|
// check if has a state named like this
|
82
184
|
@if (type-of($stateMap-or-stateName) == string
|
83
185
|
and map-has-key($_gridle_states, unquote("#{$stateMap-or-stateName}")))
|
@@ -85,11 +187,25 @@
|
|
85
187
|
@return map-get($_gridle_states, unquote("#{$stateMap-or-stateName}"));
|
86
188
|
}
|
87
189
|
|
190
|
+
// check if it's a registered state as map passed
|
191
|
+
@if type-of($stateMap-or-stateName) == map
|
192
|
+
and map-get($stateMap-or-stateName, name) {
|
193
|
+
$name : map-get($stateMap-or-stateName, name);
|
194
|
+
@if gridle_has_state($name) {
|
195
|
+
@return $stateMap-or-stateName;
|
196
|
+
}
|
197
|
+
}
|
198
|
+
|
88
199
|
// a map is passed, so it's a state himself
|
89
200
|
@if $stateMap-or-stateName
|
90
201
|
and type-of($stateMap-or-stateName) == map
|
91
202
|
{
|
92
|
-
|
203
|
+
// create a new state by merging given one with defaul one
|
204
|
+
$state : map-merge($_gridle-settings, $stateMap-or-stateName);
|
205
|
+
// set the name with random name
|
206
|
+
$state : map-set($state, name, unique-id());
|
207
|
+
// return the custom state
|
208
|
+
@return $state;
|
93
209
|
}
|
94
210
|
|
95
211
|
// return the default one if exist
|
@@ -103,13 +219,13 @@
|
|
103
219
|
}
|
104
220
|
|
105
221
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
@function
|
222
|
+
//
|
223
|
+
// Check if a state exist :
|
224
|
+
//
|
225
|
+
// @param string $name The name of the state to check
|
226
|
+
// @return Boolean true is exist
|
227
|
+
//
|
228
|
+
@function gridle_has_state(
|
113
229
|
$stateName
|
114
230
|
) {
|
115
231
|
@if map-has-key($_gridle_states, unquote("#{$stateName}")) {
|
@@ -120,54 +236,25 @@
|
|
120
236
|
}
|
121
237
|
|
122
238
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
@function
|
131
|
-
$stateName,
|
132
|
-
$var : "name"
|
133
|
-
) {
|
134
|
-
|
135
|
-
// get the state :
|
136
|
-
$state : _gridle_get_state($stateName);
|
137
|
-
|
138
|
-
// check ig state and if has the variable :
|
139
|
-
@if $state
|
140
|
-
and map-has-key($state,unquote("#{$var}"))
|
141
|
-
{
|
142
|
-
@return map-get($state,unquote("#{$var}"));
|
143
|
-
}
|
144
|
-
|
145
|
-
// nothing getted :
|
146
|
-
@return null;
|
147
|
-
}
|
148
|
-
|
149
|
-
|
150
|
-
/**
|
151
|
-
* Get a variable
|
152
|
-
*
|
153
|
-
* @param String $varName The variable name
|
154
|
-
* @param String $stateMap-or-stateName The state name or a map state value
|
155
|
-
* @return Mixed The finded value
|
156
|
-
*/
|
157
|
-
@function _gridle_get_var_value(
|
239
|
+
//
|
240
|
+
// Get a variable
|
241
|
+
//
|
242
|
+
// @param String $varName The variable name
|
243
|
+
// @param String $stateMap-or-stateName The state name or a map state value
|
244
|
+
// @return Mixed The finded value
|
245
|
+
//
|
246
|
+
@function gridle_get_state_var(
|
158
247
|
$varName,
|
159
248
|
$stateMap-or-stateName : null
|
160
249
|
) {
|
161
250
|
// if is a state :
|
162
251
|
$state : null;
|
163
252
|
|
164
|
-
// get the state (if no state find, return the
|
165
|
-
$state :
|
253
|
+
// get the state (if no state find, return the current one) :
|
254
|
+
$state : gridle_get_state($stateMap-or-stateName);
|
166
255
|
|
167
|
-
//
|
168
|
-
|
169
|
-
|
170
|
-
@if map-has-key($props, unquote("#{$varName}")) {
|
256
|
+
// check if has key
|
257
|
+
@if map-has-key($state, unquote("#{$varName}")) {
|
171
258
|
@return map-get($state, unquote("#{$varName}"));
|
172
259
|
}
|
173
260
|
|
@@ -176,20 +263,20 @@
|
|
176
263
|
}
|
177
264
|
|
178
265
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
@function
|
187
|
-
$stateName,
|
266
|
+
//
|
267
|
+
// Set a variable in a state
|
268
|
+
// @param Mixed $stateName-or-stateIndex The state name of state index
|
269
|
+
// @param String $var Variable name to assign
|
270
|
+
// @param Mixed $newValue The new value to assign
|
271
|
+
// @return List The states list (full)
|
272
|
+
//
|
273
|
+
@function gridle_set_state_var(
|
188
274
|
$var,
|
189
|
-
$newValue
|
275
|
+
$newValue,
|
276
|
+
$stateName : default
|
190
277
|
) {
|
191
278
|
// get the state :
|
192
|
-
$state :
|
279
|
+
$state : gridle_get_state($stateName);
|
193
280
|
|
194
281
|
// check ig state and if has the variable :
|
195
282
|
@if $state
|
@@ -210,14 +297,72 @@
|
|
210
297
|
}
|
211
298
|
|
212
299
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
300
|
+
//
|
301
|
+
// get the registered gridle states
|
302
|
+
//
|
303
|
+
@function gridle_get_states() {
|
304
|
+
@return $_gridle_states;
|
305
|
+
}
|
306
|
+
|
307
|
+
|
308
|
+
//
|
309
|
+
// Get the states names
|
310
|
+
//
|
311
|
+
@function gridle_get_states_names() {
|
312
|
+
$list : ();
|
313
|
+
@each $stateName, $state in $_gridle_states {
|
314
|
+
$list : append($list, $stateName);
|
315
|
+
}
|
316
|
+
@return $list;
|
317
|
+
}
|
318
|
+
|
319
|
+
|
320
|
+
//
|
321
|
+
// Get the apply css for map for a certain class and state
|
322
|
+
//
|
323
|
+
@function gridle_get_apply_css_for_map(
|
324
|
+
$for,
|
325
|
+
$stateName : default
|
326
|
+
) {
|
327
|
+
// check if has some extend for this state
|
328
|
+
$map : map-get($_gridle_apply_css_for, $stateName);
|
329
|
+
@if $map == null { @return null; }
|
330
|
+
|
331
|
+
// check if has some extend for the requested for
|
332
|
+
$extend : map-get($map, $for);
|
333
|
+
|
334
|
+
// return the resulting extend map
|
335
|
+
@return $extend;
|
336
|
+
}
|
337
|
+
|
338
|
+
|
339
|
+
//
|
340
|
+
// Get the extend map for a certain class and state
|
341
|
+
//
|
342
|
+
@function gridle_get_extend_class_map(
|
343
|
+
$for,
|
344
|
+
$stateName : default
|
345
|
+
) {
|
346
|
+
// check if has some extend for this state
|
347
|
+
$map : map-get($_gridle_extend_base_classes, $stateName);
|
348
|
+
@if $map == null { @return null; }
|
349
|
+
|
350
|
+
// check if has some extend for the requested for
|
351
|
+
$extend : map-get($map, $for);
|
352
|
+
|
353
|
+
// return the resulting extend map
|
354
|
+
@return $extend;
|
355
|
+
}
|
356
|
+
|
357
|
+
|
358
|
+
//
|
359
|
+
// Generate a column
|
360
|
+
//
|
361
|
+
// @param String $name The column name (often count)
|
362
|
+
// @param int $columns The column count that the column will take
|
363
|
+
// @param int $context The context on witch the with will be calculed
|
364
|
+
// @param Boolean $generateClasses Set if the column has to be generated in css
|
365
|
+
//
|
221
366
|
@function _gridle_create_column(
|
222
367
|
$name,
|
223
368
|
$columns,
|
@@ -233,79 +378,262 @@
|
|
233
378
|
}
|
234
379
|
|
235
380
|
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
381
|
+
// get columns names in a list
|
382
|
+
@function gridle_get_columns(
|
383
|
+
$state : default
|
384
|
+
) {
|
385
|
+
// get variables
|
386
|
+
$context : gridle_get_state_var(context, $state);
|
387
|
+
$name-multiplicator : gridle_get_state_var(name-multiplicator, $state);
|
388
|
+
|
389
|
+
// get specials columns
|
390
|
+
$columnsMap : map-merge((), $_gridle_columns);
|
391
|
+
|
392
|
+
// loop through context
|
393
|
+
@for $i from 0 through $context {
|
394
|
+
|
395
|
+
// name
|
396
|
+
$columnName : "#{$i*$name-multiplicator}";
|
397
|
+
$columnWidth : $i * $name-multiplicator;
|
398
|
+
|
399
|
+
// // create a column
|
400
|
+
$col : _gridle_create_column($columnName, $columnWidth, $context, $name-multiplicator);
|
401
|
+
|
402
|
+
// // add column in columns map
|
403
|
+
$columnsMap : map-set($columnsMap, $columnName, $col);
|
404
|
+
}
|
405
|
+
|
406
|
+
// return columns
|
407
|
+
@return $columnsMap;
|
408
|
+
}
|
409
|
+
|
410
|
+
|
411
|
+
//
|
412
|
+
// Get the padding value
|
413
|
+
//
|
414
|
+
@function _gridle_forge_gutters_map(
|
415
|
+
$side-or-size,
|
416
|
+
$state : current
|
417
|
+
) {
|
418
|
+
$map : ();
|
419
|
+
// check if is number passed
|
420
|
+
@if type-of($side-or-size) == map {
|
421
|
+
@each $side in (top right bottom left) {
|
422
|
+
@if map-get($side-or-size, $side) {
|
423
|
+
$map : map-set($map, $side, map-get($side-or-size, $side));
|
424
|
+
} @else {
|
425
|
+
$map : map-set($map, $side, 0);
|
426
|
+
}
|
427
|
+
}
|
428
|
+
} @else if type-of($side-or-size) == number {
|
429
|
+
$map : (
|
430
|
+
top : 0,
|
431
|
+
right : $side-or-size * .5,
|
432
|
+
bottom : 0,
|
433
|
+
left : $side-or-size * .5
|
434
|
+
);
|
435
|
+
} @else if type-of($side-or-size) == list or type-of($side-or-size) == string {
|
436
|
+
|
437
|
+
// check if is a full number list
|
438
|
+
$list-number : true;
|
439
|
+
@each $s in $side-or-size {
|
440
|
+
@if type-of($s) != number {
|
441
|
+
$list-number : false;
|
442
|
+
}
|
443
|
+
}
|
444
|
+
|
445
|
+
@if $list-number {
|
446
|
+
|
447
|
+
@if length($side-or-size) == 2 {
|
448
|
+
$val1 : nth($side-or-size,1) * .5;
|
449
|
+
$val2 : nth($side-or-size,2) * .5;
|
450
|
+
$map : (
|
451
|
+
top : $val1,
|
452
|
+
right : $val2,
|
453
|
+
bottom : $val1,
|
454
|
+
left : $val2
|
455
|
+
)
|
456
|
+
} @else if length($side-or-size) == 4 {
|
457
|
+
$map : (
|
458
|
+
top : nth($side-or-size,1),
|
459
|
+
right : nth($side-or-size,2),
|
460
|
+
bottom : nth($side-or-size,3),
|
461
|
+
left : nth($side-or-size,4)
|
462
|
+
)
|
463
|
+
}
|
464
|
+
|
465
|
+
} @else {
|
466
|
+
// forge the map with registered values
|
467
|
+
@each $side in (top right bottom left) {
|
468
|
+
@if index($side-or-size, $side) {
|
469
|
+
$map : map-set($map, $side, gridle_get_state_var("gutter-#{$side}", $state));
|
470
|
+
} @else {
|
471
|
+
$map : map-set($map, $side, 0);
|
472
|
+
}
|
473
|
+
}
|
474
|
+
// @debug("get gutters from registered #{inspect($map)}");
|
475
|
+
}
|
476
|
+
} @else {
|
477
|
+
// unable to generate a gutter map
|
478
|
+
@return false;
|
479
|
+
}
|
480
|
+
|
481
|
+
// return the padding map
|
482
|
+
@return $map;
|
483
|
+
}
|
484
|
+
|
485
|
+
|
486
|
+
//
|
487
|
+
// Get the attribute selector
|
488
|
+
//
|
489
|
+
@function gridle_selector(
|
490
|
+
$for,
|
491
|
+
$states : null,
|
492
|
+
$values : null
|
493
|
+
) {
|
494
|
+
$sel : ();
|
495
|
+
|
496
|
+
@if length($for) > 1 {
|
497
|
+
@each $f in $for {
|
498
|
+
$sel : append($sel, gridle_selector($f, $states, $values), comma);
|
499
|
+
}
|
500
|
+
} @else {
|
501
|
+
|
502
|
+
// get all states if not specified
|
503
|
+
@if $states == null {
|
504
|
+
$states : gridle_get_states_names();
|
505
|
+
}
|
506
|
+
|
507
|
+
// get the pattern
|
508
|
+
$pattern : map-get($_gridle-packages, $for);
|
509
|
+
$pattern : map-get($pattern, classname);
|
510
|
+
|
511
|
+
@each $stateName in $states {
|
512
|
+
@if $values != null {
|
513
|
+
$sel : append($sel, _gridle_classname($for, $stateName, $values), comma);
|
514
|
+
} @else if index($pattern, '%column') {
|
515
|
+
@each $columnName, $column in gridle_get_columns() {
|
516
|
+
$sel : append($sel, _gridle_classname($for, $stateName, $columnName), comma);
|
517
|
+
}
|
518
|
+
} @else if index($pattern, '%column-count') {
|
519
|
+
@for $i from 0 through length(gridle_get_columns()) {
|
520
|
+
$sel : append($sel, _gridle_classname($for, $stateName, $i), comma);
|
521
|
+
}
|
522
|
+
@if $for == flex-order {
|
523
|
+
$sel : append($sel, _gridle_classname($for, $stateName, first), comma);
|
524
|
+
$sel : append($sel, _gridle_classname($for, $stateName, last), comma);
|
525
|
+
}
|
526
|
+
} @else if index($pattern, '%align') {
|
527
|
+
@each $a in map-get($_gridle-names-tokens, align) {
|
528
|
+
$sel : append($sel, _gridle_classname($for, $stateName, $a), comma);
|
529
|
+
}
|
530
|
+
} @else if index($pattern, '%count') and $for == clear-each {
|
531
|
+
@each $idx, $clearEach in $_gridle_clear_classes {
|
532
|
+
$count : map-get($clearEach, clearEach);
|
533
|
+
$sel : append($sel, _gridle_classname($for, $stateName, $count), comma);
|
534
|
+
}
|
535
|
+
} @else if index($pattern, '%side') {
|
536
|
+
@each $side in map-get($_gridle-names-tokens, side) {
|
537
|
+
$sel : append($sel, _gridle_classname($for, $stateName, $side), comma);
|
538
|
+
}
|
539
|
+
} @else if index($pattern, '%float') {
|
540
|
+
@each $float in map-get($_gridle-names-tokens, float) {
|
541
|
+
$sel : append($sel, _gridle_classname($for, $stateName, $float), comma);
|
542
|
+
}
|
543
|
+
} @else if index($pattern, '%reverse') {
|
544
|
+
@each $reverse in map-get($_gridle-names-tokens, reverse) {
|
545
|
+
$sel : append($sel, _gridle_classname($for, $stateName, $reverse), comma);
|
546
|
+
}
|
547
|
+
} @else {
|
548
|
+
$sel : append($sel, _gridle_classname($for, $stateName), comma);
|
549
|
+
}
|
550
|
+
}
|
551
|
+
}
|
552
|
+
@return $sel;
|
553
|
+
}
|
554
|
+
|
555
|
+
|
556
|
+
//
|
557
|
+
// Generate classname
|
558
|
+
//
|
559
|
+
// @param List $parrern The pattern to use to generate classname
|
560
|
+
// @param String $state The state
|
561
|
+
// @param int $count The column count
|
562
|
+
//
|
243
563
|
@function _gridle_classname(
|
244
|
-
$
|
564
|
+
$for,
|
245
565
|
$state : null,
|
246
|
-
$
|
566
|
+
$value : null
|
247
567
|
) {
|
248
568
|
|
249
|
-
//
|
250
|
-
$
|
569
|
+
// get the pattern
|
570
|
+
$pattern : $for;
|
571
|
+
@if type-of($for) == string {
|
572
|
+
$pattern : map-get($_gridle-packages, $for);
|
573
|
+
$pattern : map-get($pattern, classname);
|
574
|
+
}
|
251
575
|
|
252
576
|
// delete default :
|
253
577
|
@if unquote("#{$state}") == default {
|
254
578
|
$state : null;
|
255
579
|
}
|
256
|
-
|
257
|
-
// add class prefix :
|
258
|
-
@if $gridle-class-prefix and $gridle-class-prefix != '' {
|
259
|
-
$sel : "#{$sel}#{$gridle-class-prefix}";
|
260
|
-
@if $gridle-class-separator {
|
261
|
-
$sel : "#{$sel}#{$gridle-class-separator}";
|
262
|
-
}
|
263
|
-
}
|
264
580
|
|
265
581
|
// construct class name :
|
266
|
-
$
|
267
|
-
@
|
268
|
-
|
269
|
-
|
270
|
-
@if $var == '
|
271
|
-
$
|
272
|
-
}
|
273
|
-
@if $var == '%count' and $count {
|
274
|
-
$sel : "#{$sel}#{$count}";
|
275
|
-
}
|
276
|
-
@if $var != '%state' and $var != '%count' and $var != '%-' and $var != '-' and $var != '--' and $var != '_' and $var != '__' and $var != '%prefix' {
|
277
|
-
$sel : "#{$sel}#{$var}";
|
582
|
+
$removeSeparator : false;
|
583
|
+
@for $i from length($pattern) through 1 {
|
584
|
+
$var : nth($pattern, $i);
|
585
|
+
|
586
|
+
@if $var == '@' {
|
587
|
+
$pattern : set-nth($pattern, $i, '\\@');
|
278
588
|
}
|
279
589
|
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
@if $value != '%state' and $value != '%count' and $value != '%-' and $value != '-' and $value != '--' and $value != '_' and $value != '__' and $value != '%prefix' {
|
285
|
-
@if $var == '%-' {
|
286
|
-
$sel : "#{$sel}#{$gridle-class-separator}";
|
287
|
-
} @else {
|
288
|
-
$sel : "#{$sel}#{$var}";
|
289
|
-
}
|
590
|
+
@if index($_gridle_names-separators, $var) {
|
591
|
+
// check if need to remove separator
|
592
|
+
@if $removeSeparator {
|
593
|
+
$pattern : set-nth($pattern, $i, null);
|
290
594
|
}
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
595
|
+
$removeSeparator : false;
|
596
|
+
} @else if $var == "%state" {
|
597
|
+
@if $state == null {
|
598
|
+
$pattern : set-nth($pattern, $i, null);
|
599
|
+
$removeSeparator : true;
|
600
|
+
} @else {
|
601
|
+
$pattern : set-nth($pattern, $i, $state);
|
297
602
|
}
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
603
|
+
} @else if $var and str-index($var, '%') == 1 {
|
604
|
+
$token : str-slice($var, 2);
|
605
|
+
// check that the value is part of the token
|
606
|
+
$tokens : map-get($_gridle-names-tokens, $token);
|
607
|
+
@if $tokens {
|
608
|
+
$pattern : set-nth($pattern, $i, $value);
|
609
|
+
@if $value == null {
|
610
|
+
$removeSeparator : true;
|
303
611
|
}
|
304
612
|
}
|
305
613
|
}
|
614
|
+
}
|
306
615
|
|
307
|
-
|
308
|
-
|
616
|
+
// clean selector
|
617
|
+
$list: ();
|
618
|
+
@each $var in $pattern {
|
619
|
+
@if $var {
|
620
|
+
$list: append($list, $var);
|
621
|
+
}
|
622
|
+
}
|
623
|
+
$pattern : $list;
|
624
|
+
|
625
|
+
// build selector
|
626
|
+
$sel : "";
|
627
|
+
$prefix : gridle_get_state_var(classes-prefix, $state);
|
628
|
+
@each $part in $pattern {
|
629
|
+
@if $part {
|
630
|
+
$sel : "#{$sel}#{$part}";
|
631
|
+
}
|
632
|
+
}
|
633
|
+
@if $prefix and str-slice($sel,1,str_length($prefix)) != $prefix {
|
634
|
+
$sel : ".#{$prefix}#{$sel}";
|
635
|
+
} @else {
|
636
|
+
$sel : ".#{$sel}";
|
309
637
|
}
|
310
638
|
|
311
639
|
// return generated class :
|
@@ -313,21 +641,103 @@
|
|
313
641
|
}
|
314
642
|
|
315
643
|
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
644
|
+
//
|
645
|
+
// Get the current driver
|
646
|
+
//
|
647
|
+
@function gridle_get_driver() {
|
648
|
+
@return $_gridle-driver;
|
649
|
+
}
|
650
|
+
|
651
|
+
|
652
|
+
//
|
653
|
+
// Is driver
|
654
|
+
//
|
655
|
+
@function gridle_is_driver($driver) {
|
656
|
+
@each $d in $driver {
|
657
|
+
@if $d == gridle_get_driver() {
|
658
|
+
@return true;
|
659
|
+
}
|
660
|
+
}
|
661
|
+
@return false;
|
662
|
+
}
|
663
|
+
|
664
|
+
|
665
|
+
//
|
666
|
+
// Check if we need to generate the class or not
|
667
|
+
//
|
668
|
+
// @param List $for Name of the class map
|
669
|
+
// @param List $what The map that set which class map to include and exclude
|
670
|
+
// @return Boolean true if need to generate, false if not
|
671
|
+
//
|
672
|
+
@function _gridle_need_to_generate(
|
673
|
+
$package,
|
674
|
+
$what
|
675
|
+
) {
|
676
|
+
// check that the wanted package exist in system
|
677
|
+
@if map-get($_gridle-packages, $package) {
|
678
|
+
$package : map-get($_gridle-packages, $package);
|
679
|
+
$package : map-get($package, package);
|
680
|
+
} @else {
|
681
|
+
@return false;
|
682
|
+
}
|
683
|
+
|
684
|
+
// if we have a what param, need to check if the package is needed
|
685
|
+
@if $what and $what != all {
|
686
|
+
|
687
|
+
// check if we have only some - in the states list
|
688
|
+
// mean that we want to only remove these specified states
|
689
|
+
// from the all states list
|
690
|
+
$onlyRemove : true;
|
691
|
+
@each $w in $what {
|
692
|
+
@if str-slice($w,1,1) != '-' {
|
693
|
+
$onlyRemove : false;
|
694
|
+
}
|
695
|
+
}
|
696
|
+
|
697
|
+
@if $onlyRemove {
|
698
|
+
@each $name in $package {
|
699
|
+
@if index($what, unquote("-#{$name}")) {
|
700
|
+
@return false;
|
701
|
+
}
|
702
|
+
}
|
703
|
+
@return true;
|
704
|
+
} @else {
|
705
|
+
@each $name in $package {
|
706
|
+
@if index($what, unquote("#{$name}")) {
|
707
|
+
@return true;
|
708
|
+
}
|
709
|
+
}
|
710
|
+
@return false;
|
711
|
+
}
|
712
|
+
}
|
713
|
+
// we don't have a what param so the package is
|
714
|
+
@return true;
|
715
|
+
}
|
716
|
+
|
717
|
+
|
718
|
+
//
|
719
|
+
// Check if is in generate mode
|
720
|
+
//
|
721
|
+
@function _gridle_is_in_generate_phase() {
|
722
|
+
@return $_gridle_is_in_generate_phase;
|
723
|
+
}
|
724
|
+
|
725
|
+
|
726
|
+
//
|
727
|
+
// Get the media query for a particular state, or with, etc...
|
728
|
+
//
|
729
|
+
// @param Mixed $state-or-min-width The state name of the min with
|
730
|
+
// @param Mixed $max-width The max width if first param is a min width
|
731
|
+
// @return String The media query string without the @media
|
732
|
+
//
|
733
|
+
@function gridle_get_media_query(
|
734
|
+
$state-or-settings : current
|
325
735
|
) {
|
326
736
|
// check if is a string :
|
327
737
|
$state : null;
|
328
738
|
@if type-of($state-or-settings) == string
|
329
739
|
{
|
330
|
-
$state :
|
740
|
+
$state : gridle_get_state($state-or-settings);
|
331
741
|
}
|
332
742
|
@else if $state-or-settings == null
|
333
743
|
{
|
@@ -374,14 +784,4 @@
|
|
374
784
|
{
|
375
785
|
@return null;
|
376
786
|
}
|
377
|
-
}
|
378
|
-
|
379
|
-
|
380
|
-
/**
|
381
|
-
* Get states count
|
382
|
-
*
|
383
|
-
* @return int The number of states defined
|
384
|
-
*/
|
385
|
-
@function _gridle_get_states_count() {
|
386
|
-
@return length($_gridle_states) / length($_gridle_states_vars_pattern);
|
387
787
|
}
|