Skip to content
This repository was archived by the owner on Apr 6, 2021. It is now read-only.

Commit e31cc73

Browse files
committed
Add asList and arbitrary grid support
1 parent ae630ba commit e31cc73

File tree

7 files changed

+39
-24
lines changed

7 files changed

+39
-24
lines changed

src/corePlugins/gridAutoColumns.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
const nameClass = require('tailwindcss/lib/util/nameClass').default
2-
const transformThemeValue = require('tailwindcss/lib/util/transformThemeValue').default
2+
const { asList } = require('../pluginUtils')
33

44
module.exports = function ({ jit: { theme, addUtilities, addVariant, e } }) {
55
addUtilities({
66
'auto-cols': [
77
(modifier, { theme }) => {
8-
let transformValue = transformThemeValue('gridAutoColumns')
9-
let value = transformValue(theme.gridAutoColumns[modifier])
8+
let value = asList(modifier, theme.gridAutoColumns)
109

1110
if (value === undefined) {
1211
return []

src/corePlugins/gridAutoRows.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
const nameClass = require('tailwindcss/lib/util/nameClass').default
2-
const transformThemeValue = require('tailwindcss/lib/util/transformThemeValue').default
2+
const { asList } = require('../pluginUtils')
33

44
module.exports = function ({ jit: { theme, addUtilities, addVariant, e } }) {
55
addUtilities({
66
'auto-rows': [
77
(modifier, { theme }) => {
8-
let transformValue = transformThemeValue('gridAutoRows')
9-
let value = transformValue(theme.gridAutoRows[modifier])
8+
let value = asList(modifier, theme.gridAutoRows)
109

1110
if (value === undefined) {
1211
return []

src/corePlugins/gridTemplateColumns.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
const nameClass = require('tailwindcss/lib/util/nameClass').default
2-
const transformThemeValue = require('tailwindcss/lib/util/transformThemeValue').default
2+
const { asList } = require('../pluginUtils')
33

44
module.exports = function ({ jit: { theme, addUtilities, addVariant, e } }) {
55
addUtilities({
66
'grid-cols': [
77
(modifier, { theme }) => {
8-
let transformValue = transformThemeValue('gridTemplateColumns')
9-
let value = transformValue(theme.gridTemplateColumns[modifier])
8+
let value = asList(modifier, theme.gridTemplateColumns)
109

1110
if (value === undefined) {
1211
return []

src/corePlugins/gridTemplateRows.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
const nameClass = require('tailwindcss/lib/util/nameClass').default
2-
const transformThemeValue = require('tailwindcss/lib/util/transformThemeValue').default
2+
const { asList } = require('../pluginUtils')
33

44
module.exports = function ({ jit: { theme, addUtilities, addVariant, e } }) {
55
addUtilities({
66
'grid-rows': [
77
(modifier, { theme }) => {
8-
let transformValue = transformThemeValue('gridTemplateRows')
9-
let value = transformValue(theme.gridTemplateRows[modifier])
8+
let value = asList(modifier, theme.gridTemplateRows)
109

1110
if (value === undefined) {
1211
return []

src/index.test.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,9 @@ h1:first-child {
193193
.aspect-h-4 {
194194
--tw-aspect-h: 4;
195195
}
196+
.grid-cols-\[200px\,repeat\(auto-fill\,minmax\(15\%\,100px\)\)\,300px\] {
197+
grid-template-columns: 200px repeat(auto-fill, minmax(15%, 100px)) 300px;
198+
}
196199
.transform {
197200
--tw-translate-x: 0;
198201
--tw-translate-y: 0;

src/index.test.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<div
1212
class="container hover:container sm:container md:container text-center sm:text-center md:text-center"
1313
></div>
14+
<div class="grid-cols-[200px,repeat(auto-fill,minmax(15%,100px)),300px]"></div>
1415
<div class="aspect-w-1 aspect-h-2"></div>
1516
<div class="aspect-w-3 aspect-h-4"></div>
1617
<div class="filter-none filter-grayscale"></div>

src/pluginUtils.js

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const selectorParser = require('postcss-selector-parser')
2+
const postcss = require('postcss')
23

34
function updateAllClasses(selectors, updateClass) {
45
let parser = selectorParser((selectors) => {
@@ -154,7 +155,7 @@ function transformLastClasses(transformClass, wrap = null) {
154155
}
155156
}
156157

157-
function asValue(modifier, lookup = {}, validate = () => true) {
158+
function asValue(modifier, lookup = {}, { validate = () => true, transform = (v) => v } = {}) {
158159
let value = lookup[modifier]
159160

160161
if (value !== undefined) {
@@ -171,13 +172,15 @@ function asValue(modifier, lookup = {}, validate = () => true) {
171172
return undefined
172173
}
173174

174-
return value
175+
return transform(value)
175176
}
176177

177178
function asUnit(modifier, units, lookup = {}) {
178-
return asValue(modifier, lookup, (value) => {
179-
let pattern = new RegExp(`.+(${units.join('|')})$`, 'g')
180-
return value.match(pattern) !== null
179+
return asValue(modifier, lookup, {
180+
validate: (value) => {
181+
let pattern = new RegExp(`.+(${units.join('|')})$`, 'g')
182+
return value.match(pattern) !== null
183+
},
181184
})
182185
}
183186

@@ -201,14 +204,26 @@ module.exports = {
201204
}
202205
},
203206
asValue,
207+
asList(modifier, lookup = {}) {
208+
return asValue(modifier, lookup, {
209+
transform: (value) => {
210+
return postcss.list
211+
.comma(value)
212+
.map((v) => v.replace(/,/g, ', '))
213+
.join(' ')
214+
},
215+
})
216+
},
204217
asColor(modifier, lookup = {}) {
205-
return asValue(modifier, lookup, (value) => {
206-
try {
207-
toRgba(value)
208-
return true
209-
} catch (e) {
210-
return false
211-
}
218+
return asValue(modifier, lookup, {
219+
validate: (value) => {
220+
try {
221+
toRgba(value)
222+
return true
223+
} catch (e) {
224+
return false
225+
}
226+
},
212227
})
213228
},
214229
asAngle(modifier, lookup = {}) {

0 commit comments

Comments
 (0)