Skip to content

A simple JavaScript utility for conditionally joining classNames together. (rewriting nameplates utility with Typescript)

License

Notifications You must be signed in to change notification settings

nok91/classnames-ts

Repository files navigation

Classnames-TS

bee

Simple utility for conditionally joining classNames together




CI/CD DeepScan grade codecov

This previously resided inside React as a utility, but is now pulled out and library-agnostic.

Please note this is a rewritten version of classname library.

The problem

So let's say you want to conditionally join class names together, a common scenario should be something like:

var toggleClassName = 'toggle';
if (isLoading) {
  toggleClassName += ' toggle--loading';
}
if (isSelected) {
  className += ' toggle--active';
}

The solution

Assigning class name strings can be hard to read and error-prone. This utility solves this problem:

var toggleClassName = className({
  'toggle': true,
  'toggle--loading': isLoading,
  'toggle--active': isSelected
});

Installation

This module is distributed via [npm][npm] which is bundled with [node][node] and should be installed as one of your project's devDependencies:

npm install --save classnames-ts

or

for installation via [yarn][yarn]

yarn add classnames-ts

Examples

The classNames function takes any number of arguments which can be a strings, objects or array or a mix of them.

classNames('class1', 'class2'); // => 'class1 class2'
classNames('class1', { class2: true }); // => 'class1 class2'
classNames({ 'class-header': true }); // => 'class-header'
classNames({ 'class-footer': false }); // => ''
classNames({ footer: true }, { header: true }); // => 'footer header'
classNames({ footer: true, header: true }); // => 'footer header'

It's compatible with different types of arguments:

classNames('footer', { header: true, wrapper: false }, 'icon', { bar: true }); // => 'footer header icon bar'
classNames(null, false, 'header', undefined, { bar: null }, ''); // => 'header'

var arr = ['b', { c: true, d: false }];
classNames('a', arr); // => 'a b c'

🐛 Bugs

Please file an issue for bugs, missing documentation, or unexpected behavior.

[See Bugs][bugs]

License

MIT

About

A simple JavaScript utility for conditionally joining classNames together. (rewriting nameplates utility with Typescript)

Resources

License

Stars

Watchers

Forks

Packages

No packages published