-
Notifications
You must be signed in to change notification settings - Fork 3
/
grid.js
65 lines (54 loc) · 1.25 KB
/
grid.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
const _ = require('lodash')
module.exports = function ({ columns = _.range(1, 12), gutter, variants = ['responsive']}) {
return function ({ e, addUtilities }) {
addUtilities([
{'.row': {
display: 'flex',
flexWrap: 'wrap',
marginLeft: `${gutter / -2}px`,
marginRight: `${gutter / -2}px`,
}},
{'.col': {
flexBasis: 0,
flexGrow: 1,
maxWidth: '100%',
paddingRight: `${gutter / 2}px`,
paddingLeft: `${gutter / 2}px`,
}},
...columns.map(size => ({
[`.col-${size}`]: {
position: 'relative',
width: '100%',
minHeight: '1px',
paddingRight: `${gutter / 2}px`,
paddingLeft: `${gutter / 2}px`,
flex: `0 0 ${size / _.max(columns) * 100}%`,
maxWidth: `${size / _.max(columns) * 100}%`,
}
})),
{'.order-first': {
order: '-1'
}},
{'.order-last': {
order: `${_.max(columns) + 1}`,
}},
...columns.map(size => ({
[`.order-${size}`]: {
order: `${size}`,
}
})),
...columns.map(size => ({
[`.offset-${size}`]: {
marginLeft: getOffset(size, columns),
}
})),
], variants)
}
}
function getOffset(size, columns) {
const num = size / _.max(columns);
if(num === 1) {
return '0';
}
return `${size / _.max(columns) * 100}%`;
}