-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgrid.mjs
39 lines (35 loc) · 1.43 KB
/
grid.mjs
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
import rems from './rems.mjs'
export default function grid(state={}) {
const config = state.config || {}
const grid = config.grid || {}
const gridSteps = grid.steps || 12
const gridHeights = grid.heights || []
const query = state.label || ''
let output = /*css*/`
/*** Grid ***/
.flow-row${query}{grid-auto-flow:row;}
.flow-col${query}{grid-auto-flow:column;}
.flow-row-dense${query}{grid-auto-flow:row dense;}
.flow-column-dense${query}{grid-auto-flow:column dense;}
.row-auto${query}{grid-row:auto;}
.col-auto${query}{grid-column:auto;}
.col-end-auto${query}{grid-column-end: auto;}
.rows-end-auto${query}{grid-row-end:auto;}
.rows-none${query}{grid-template-rows:none;}
`
for (let i=1; i<gridSteps+1; i++) {
output += `.col-${i}${query}{grid-template-columns:repeat(${i}, minmax(0, 1fr));}\n`
output += `.col-span-${i}${query}{grid-column: span ${i} / span ${i};}\n`
output += `.col-start-${i}${query}{grid-column-start: ${i};}\n`
output += `.row-start-${i}${query}{grid-row-start: ${i};}\n`
output += `.col-end-${i}${query}{grid-column-end: ${i};}\n`
output += `.row-end-${i}${query}{grid-row-end: ${i};}\n`
output += `.row-${i}${query}{grid-template-rows: repeat(${i}, minmax(0, 1fr));}\n`
}
const gHL = gridHeights.length || 0
for (let i=0; i<gHL; i++) {
let value = gridHeights[i]
output += `.row-auto-${value}${query}{grid-auto-rows:minmax(${rems({config, value})}, auto);}\n`
}
return output
}