Dumb BEM
Dumb BEM is a simple BEM class name transformation for React components.
Install
npm install --save dumb-bem
Usage
const dumbHeader = const Header = 'div'const HeaderTitle = 'h1' ReactDOM// Would render:// <div className='header header--landing'>// <h1 className='header__title'>// Lorem Ipsum// </h1>// </div>
API
dumbBem(block, options={})
Arguments
block
(String): name of the base block.options
(Object): Override default options.-
[
plugins
] (Array): array of plugins for modifying class names.Plugin is an object with two properties:
maker
(function) Maker function takesblock
andprops
as arguments and should return anything suitable for classnames input. E.g. it can be a string, array of string or object.- [
propsToRemove
] (Array) An array of properties which are used in the plugin but should not be injected into the corresponding DOM element in the end.
See also built-in makers.
-
Returns
A function which takes props
object as a parameter, transforms className
prop on execution and returns back changed props object.
...props className: classNameModifiedByMakers
Examples
Use built-in maker function
const dumbList = const List = 'ul'const ListItem = 'li' ReactDOM // Would render:// <ul class='list'>// <li class='list__item is-active'>Item 1</li>// <li class='list__item is-disabled'>Item 2</li>// <li class='list__item is-hidden'>Item 3</li>// <li class='list__item is-loading'>Item 4</li>// </ul>
Use custom maker function
const colorModifierPlugin = { if propscolor return `--` } propsToRemove: 'color' const dumbList = const List = 'ul'const ListItem = 'li' ReactDOM // Would render:// <ul class='list'>// <li class='list__item list__item--black'>Item 1</li>// <li class='list__item list__item--white'>Item 2</li>// </ul>
Built-in Plugins
License
MIT © Alexander Gudulin