Add modifiers to context.getClassList result (#10251)

* Add modifiers to `conext.getClassList` result

* Tweak test

* Add `includeMetadata` flag and update tests

* update test
This commit is contained in:
Brad Cornes 2023-01-26 10:58:37 +00:00 • committed by GitHub
parent 20c39a95b9
commit ef6f9ee6c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 124 additions and 6 deletions

View file

@ -962,23 +962,35 @@ function registerPlugins(plugins, context) {
// Generate a list of strings for autocompletion purposes, e.g.
// ['uppercase', 'lowercase', ...]
context.getClassList = function getClassList() {
context.getClassList = function getClassList(options = {}) {
let output = []
for (let util of classList) {
if (Array.isArray(util)) {
let [utilName, options] = util
let [utilName, utilOptions] = util
let negativeClasses = []
for (let [key, value] of Object.entries(options?.values ?? {})) {
let modifiers = Object.keys(utilOptions?.modifiers ?? {})
if (utilOptions?.types?.some(({ type }) => type === 'color')) {
modifiers.push(...Object.keys(context.tailwindConfig.theme.opacity ?? {}))
}
let metadata = { modifiers }
let includeMetadata = options.includeMetadata && modifiers.length > 0
for (let [key, value] of Object.entries(utilOptions?.values ?? {})) {
// Ignore undefined and null values
if (value == null) {
continue
}
output.push(formatClass(utilName, key))
if (options?.supportsNegativeValues && negateValue(value)) {
negativeClasses.push(formatClass(utilName, `-${key}`))
let cls = formatClass(utilName, key)
output.push(includeMetadata ? [cls, metadata] : cls)
if (utilOptions?.supportsNegativeValues && negateValue(value)) {
let cls = formatClass(utilName, `-${key}`)
negativeClasses.push(includeMetadata ? [cls, metadata] : cls)
}
}