import React, { useState } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import Icon from '../Icon'; const SegmentationItem = ({ id, index, label, displayText, isActive, isVisible, onClick, onEdit, onDelete, toggleVisibility, }) => { const [isHovering, setIsHovering] = useState(false); const onEditHandler = event => { event.stopPropagation(); onEdit({ id, isActive, event }); }; const onClickHandler = event => onClick({ id, isActive, event }); const onMouseEnter = () => setIsHovering(true); const onMouseLeave = () => setIsHovering(false); return (
{isHovering ? ( { e.stopPropagation(); onDelete(id); }} /> ) : ( {index} )}
{label}
onEditHandler(e)} />
{ // stopPropagation needed to avoid disable the current active item e.stopPropagation(); toggleVisibility(e, id); }} />
{displayText && displayText.map(line => ( {line} ))}
); }; SegmentationItem.propTypes = { id: PropTypes.oneOfType([ PropTypes.number.isRequired, PropTypes.string.isRequired, ]), index: PropTypes.number.isRequired, label: PropTypes.string, displayText: PropTypes.arrayOf(PropTypes.string), isActive: PropTypes.bool, isVisible: PropTypes.bool, onClick: PropTypes.func, onEdit: PropTypes.func, onDelete: PropTypes.func, toggleVisibility: PropTypes.func, }; SegmentationItem.defaultProps = { isActive: false, displayText: [], }; export default SegmentationItem;