1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/dashboard/client/utils/cssNames.ts
Sebastian Malton b1ff34879a cleanup Lens repo with tighter linting
Signed-off-by: Sebastian Malton <smalton@mirantis.com>
2020-07-09 17:00:23 -04:00

22 lines
641 B
TypeScript
Executable File

// Helper for combining css classes inside components
export type ClassName = string | string[] | ClassNameMap;
export interface ClassNameMap {
[className: string]: boolean | any;
}
export function cssNames(...args: ClassName[]): string {
const map: ClassNameMap = {};
args.forEach(className => {
if (typeof className === "string" || Array.isArray(className)) {
[].concat(className).forEach(name => map[name] = true);
} else {
Object.assign(map, className);
}
});
return Object.entries(map)
.filter(([_className, isActive]) => !!isActive)
.map(([className]) => className.trim())
.join(' ');
}