( node: FormKitNode, property: string, ...args: Record<string, boolean>[] )
| 54 | * @public |
| 55 | */ |
| 56 | export function generateClassList( |
| 57 | node: FormKitNode, |
| 58 | property: string, |
| 59 | ...args: Record<string, boolean>[] |
| 60 | ): string | null { |
| 61 | const combinedClassList = args.reduce((finalClassList, currentClassList) => { |
| 62 | if (!currentClassList) return handleNegativeClasses(finalClassList) |
| 63 | const { $reset, ...classList } = currentClassList |
| 64 | if ($reset) { |
| 65 | return handleNegativeClasses(classList) |
| 66 | } |
| 67 | return handleNegativeClasses(Object.assign(finalClassList, classList)) |
| 68 | }, {}) |
| 69 | |
| 70 | return Object.keys( |
| 71 | node.hook.classes.dispatch({ property, classes: combinedClassList }) |
| 72 | .classes |
| 73 | ) |
| 74 | .filter((key) => combinedClassList[key]) |
| 75 | .join(' ') || null |
| 76 | } |
| 77 | |
| 78 | function handleNegativeClasses(classList: Record<string, boolean>): Record<string, boolean> { |
| 79 | const removalToken = '$remove:' |
no test coverage detected