import React from 'react'; import PropTypes from 'prop-types'; import styled from 'styled-components'; import { Card, CardView, CardMeta, CardTitle, CardSubTitle, CardDescription, CardGroupView, CardOptions, CardHeader, CardInfo, Anchor } from 'joyent-ui-toolkit'; import { InstancesIcon, HealthyIcon, P } from 'joyent-ui-toolkit'; import Status from './status'; const StyledCardHeader = styled(CardHeader)` position: relative; `; const TitleInnerContainer = styled.div` display: flex; flex-direction: row; justify-content: center; align-items: center; `; const ServiceListItem = ({ onQuickActionsClick = () => {}, deploymentGroup = '', service = {} }) => { const isChild = Boolean(service.parent); const children = service.children ? service.children.map(service => ) : null; const to = `/deployment-groups/${deploymentGroup}/services/${service.slug}`; const title = service.parent ? {service.name} : {service.name} ; const subtitle = ( {service.instances.length}{' '} {service.instances.length > 1 ? 'instances' : 'instance'} ); const handleCardOptionsClick = evt => { onQuickActionsClick(evt, service); }; const instancesCount = service.children ? service.children.reduce( (count, child) => count + child.instances.length, 0 ) : service.instances.length; const header = isChild ? null : {title} } iconPosition="left" label={`${instancesCount} ${instancesCount > 1 ? 'instances' : 'instance'}`} color="light" /> ; const view = children ? {children} : {isChild && title} {isChild && subtitle} } iconPosition="left" label="Healthy" color="dark" /> ; return ( 1} > {header} {view} ); }; ServiceListItem.propTypes = { onQuickActionsClick: PropTypes.func, deploymentGroup: PropTypes.string, service: PropTypes.object.isRequired // Define better }; export default ServiceListItem;