import PropTypes from 'prop-types'; import React, { Component } from 'react'; import classNames from 'classnames'; import { map } from 'Helpers/elementChildren'; import Icon from 'Components/Icon'; import Link from 'Components/Link/Link'; import styles from './PageSidebarItem.css'; class PageSidebarItem extends Component { // // Listeners onPress = () => { const { isChildItem, isParentItem, onPress } = this.props; if (isChildItem || !isParentItem) { onPress(); } } // // Render render() { const { iconName, title, to, isActive, isActiveParent, isChildItem, statusComponent: StatusComponent, children } = this.props; return (
{ !!iconName && } {title} { !!StatusComponent && } { children && map(children, (child) => { return React.cloneElement(child, { isChildItem: true }); }) }
); } } PageSidebarItem.propTypes = { iconName: PropTypes.object, title: PropTypes.string.isRequired, to: PropTypes.string.isRequired, isActive: PropTypes.bool, isActiveParent: PropTypes.bool, isParentItem: PropTypes.bool.isRequired, isChildItem: PropTypes.bool.isRequired, statusComponent: PropTypes.func, children: PropTypes.node, onPress: PropTypes.func }; PageSidebarItem.defaultProps = { isChildItem: false }; export default PageSidebarItem;