UNPKG

scratch-gui

Version:

GraphicaL User Interface for creating and running Scratch 3.0 projects

78 lines (68 loc) 1.52 kB
import classNames from 'classnames'; import PropTypes from 'prop-types'; import React from 'react'; import styles from './menu.css'; const MenuComponent = ({ className = '', children, componentRef, place = 'right' }) => ( <ul className={classNames( styles.menu, className, { [styles.left]: place === 'left', [styles.right]: place === 'right' } )} ref={componentRef} > {children} </ul> ); MenuComponent.propTypes = { children: PropTypes.node, className: PropTypes.string, componentRef: PropTypes.func, place: PropTypes.oneOf(['left', 'right']) }; const MenuItem = ({ children, className, onClick }) => ( <li className={classNames(styles.menuItem, className)} onClick={onClick} > {children} </li> ); MenuItem.propTypes = { children: PropTypes.node, className: PropTypes.string, onClick: PropTypes.func }; const addDividerClassToFirstChild = (child, id) => ( React.cloneElement(child, { className: classNames(child.className, { [styles.menuSection]: id === 0 }), key: id }) ); const MenuSection = ({children}) => ( <React.Fragment>{ React.Children.map(children, addDividerClassToFirstChild) }</React.Fragment> ); MenuSection.propTypes = { children: PropTypes.node }; export { MenuComponent as default, MenuItem, MenuSection };