Skip to content

Commit 6740e77

Browse files
committed
Fix generating wrong class name
1 parent c116fa1 commit 6740e77

File tree

3 files changed

+35
-20
lines changed

3 files changed

+35
-20
lines changed

Diff for: index.js

+19-7
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
var _ = require('lodash')
22
var flatten = require('flat')
33

4+
5+
const FLATTEN_CONFIG = { delimiter: '-', maxDepth: 2 }
6+
const getName = name => name.split('-default').join('')
7+
8+
49
module.exports = function () {
510
return function ({
611
addUtilities, addComponents, addBase, addVariant,
712
e, prefix, theme, variants, config,
813
}) {
9-
const buildObjectFromTheme = themeKey => {
14+
const buildObjectFromTheme = (themeKey, ...fallbackKeys) => {
1015
const buildObject = ([ modifier, value ]) => [ modifier, { [themeKey]: value } ]
11-
const themeEntries = Object.entries(theme(themeKey, {})).map(entry => buildObject(entry))
16+
const getThemeSettings = (themeKey, fallbackKeys) => {
17+
return theme(themeKey, false) || getThemeSettings([themeKey, ...fallbackKeys] = fallbackKeys)
18+
}
19+
const themeEntries = Object
20+
.entries(flatten(getThemeSettings(themeKey, fallbackKeys), FLATTEN_CONFIG))
21+
.map(entry => buildObject(entry))
22+
1223
return _.fromPairs(themeEntries)
1324
}
1425

@@ -25,13 +36,14 @@ module.exports = function () {
2536
Object.entries(pluginUtilities)
2637
.filter(([ modifier, values ]) => !_.isEmpty(values))
2738
.forEach(([ modifier, values ]) => {
39+
const className = _.kebabCase(modifier)
2840
const variantName = Object.keys(Object.entries(values)[0][1])[0]
29-
const utilities = flatten(
30-
{ [`.${e(`bg-${modifier}`)}`]: values },
31-
{ delimiter: '-', maxDepth: 2 },
32-
)
41+
const utilities = flatten({ [`.${e(`${className}`)}`]: values }, FLATTEN_CONFIG)
3342

34-
addUtilities(utilities, variants(variantName, ['responsive']))
43+
addUtilities(
44+
_.mapKeys(utilities, (value, key) => getName(key)),
45+
variants(variantName, ['responsive'])
46+
)
3547
})
3648
}
3749
}

Diff for: pnpm-lock.yaml

+4-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: test.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ expect.extend({ toMatchCss: require('jest-matcher-css') })
2525
test('generates default utilities and responsive variants', () => {
2626
const testConfig = {}
2727
const expectedCss = `
28-
.bg-rendering-auto { image-rendering: auto }
29-
.bg-rendering-crisp-edges { image-rendering: crisp-edges }
30-
.bg-rendering-pixelated { image-rendering: pixelated }
28+
.rendering-auto { image-rendering: auto }
29+
.rendering-crisp-edges { image-rendering: crisp-edges }
30+
.rendering-pixelated { image-rendering: pixelated }
3131
3232
@media (min-width: 640px) {
33-
.sm\\:bg-rendering-auto { image-rendering: auto }
34-
.sm\\:bg-rendering-crisp-edges { image-rendering: crisp-edges }
35-
.sm\\:bg-rendering-pixelated { image-rendering: pixelated }
33+
.sm\\:rendering-auto { image-rendering: auto }
34+
.sm\\:rendering-crisp-edges { image-rendering: crisp-edges }
35+
.sm\\:rendering-pixelated { image-rendering: pixelated }
3636
}
3737
`
3838

@@ -46,13 +46,13 @@ test('variants can be customized', () => {
4646
},
4747
}
4848
const expectedCss = `
49-
.bg-rendering-auto { image-rendering: auto }
50-
.bg-rendering-crisp-edges { image-rendering: crisp-edges }
51-
.bg-rendering-pixelated { image-rendering: pixelated }
49+
.rendering-auto { image-rendering: auto }
50+
.rendering-crisp-edges { image-rendering: crisp-edges }
51+
.rendering-pixelated { image-rendering: pixelated }
5252
53-
.hover\\:bg-rendering-auto:hover { image-rendering: auto }
54-
.hover\\:bg-rendering-crisp-edges:hover { image-rendering: crisp-edges }
55-
.hover\\:bg-rendering-pixelated:hover { image-rendering: pixelated }
53+
.hover\\:rendering-auto:hover { image-rendering: auto }
54+
.hover\\:rendering-crisp-edges:hover { image-rendering: crisp-edges }
55+
.hover\\:rendering-pixelated:hover { image-rendering: pixelated }
5656
`
5757

5858
return generatePluginCss(testConfig).then(css => expect(css).toMatchCss(expectedCss))

0 commit comments

Comments
 (0)