Skip to content

Commit 6e7ae58

Browse files
committed
Move container component to a built-in plugin
1 parent 20461a3 commit 6e7ae58

File tree

5 files changed

+62
-3
lines changed

5 files changed

+62
-3
lines changed

defaultConfig.stub.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -872,7 +872,9 @@ module.exports = {
872872
|
873873
*/
874874

875-
plugins: [],
875+
plugins: [
876+
require('./plugins/container')(),
877+
],
876878

877879

878880
/*

plugins/container.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require('../lib/plugins/container')

src/cli.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ program
5454

5555
const output = fs.readFileSync(path.resolve(__dirname, '../defaultConfig.stub.js'), 'utf8')
5656
fs.outputFileSync(destination, output.replace('// let defaultConfig', 'let defaultConfig'))
57+
fs.outputFileSync(
58+
destination,
59+
output.replace("require('./plugins/container')", "require('tailwindcss/plugins/container')")
60+
)
5761
console.log(`Generated Tailwind config: ${destination}`)
5862
process.exit()
5963
})

src/lib/substituteTailwindAtRules.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import fs from 'fs'
22
import postcss from 'postcss'
3-
import container from '../generators/container'
43
import utilityModules from '../utilityModules'
54
import prefixTree from '../util/prefixTree'
65
import generateModules from '../util/generateModules'
@@ -22,7 +21,7 @@ export default function(config) {
2221

2322
if (atRule.params === 'components') {
2423
const pluginComponentTree = postcss.root({
25-
nodes: [...container(unwrappedConfig), ...pluginComponents],
24+
nodes: pluginComponents,
2625
})
2726

2827
pluginComponentTree.walk(node => (node.source = atRule.source))

src/plugins/container.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/* eslint-disable no-shadow */
2+
import _ from 'lodash'
3+
import postcss from 'postcss'
4+
import defineClass from '../util/defineClass'
5+
6+
function extractMinWidths(breakpoints) {
7+
return _.flatMap(breakpoints, breakpoints => {
8+
if (_.isString(breakpoints)) {
9+
breakpoints = { min: breakpoints }
10+
}
11+
12+
if (!_.isArray(breakpoints)) {
13+
breakpoints = [breakpoints]
14+
}
15+
16+
return _(breakpoints)
17+
.filter(breakpoint => {
18+
return _.has(breakpoint, 'min') || _.has(breakpoint, 'min-width')
19+
})
20+
.map(breakpoint => {
21+
return _.get(breakpoint, 'min-width', breakpoint.min)
22+
})
23+
.value()
24+
})
25+
}
26+
27+
module.exports = function(options) {
28+
return function({ addComponents, config }) {
29+
const screens = _.get(options, 'screens', config('screens'))
30+
31+
const minWidths = extractMinWidths(screens)
32+
33+
const atRules = _.map(minWidths, minWidth => {
34+
const atRule = postcss.atRule({
35+
name: 'media',
36+
params: `(min-width: ${minWidth})`,
37+
})
38+
atRule.append(
39+
defineClass('container', {
40+
'max-width': minWidth,
41+
})
42+
)
43+
return atRule
44+
})
45+
46+
addComponents([
47+
defineClass('container', {
48+
width: '100%',
49+
}),
50+
...atRules,
51+
])
52+
}
53+
}

0 commit comments

Comments
 (0)