@szhsin/react-menu
Version:
React component for building accessible menu, dropdown, submenu, context menu, and more
24 lines (21 loc) • 760 B
JavaScript
import { useMemo } from 'react';
const useBEM = ({
block,
element,
modifiers,
className
}) => useMemo(() => {
const blockElement = element ? `${block}__${element}` : block;
let classString = blockElement;
modifiers && Object.keys(modifiers).forEach(name => {
const value = modifiers[name];
if (value) classString += ` ${blockElement}--${value === true ? name : `${name}-${value}`}`;
});
let expandedClassName = typeof className === 'function' ? className(modifiers) : className;
if (typeof expandedClassName === 'string') {
expandedClassName = expandedClassName.trim();
if (expandedClassName) classString += ` ${expandedClassName}`;
}
return classString;
}, [block, element, modifiers, className]);
export { useBEM };