/**
* External dependencies
*/
import clsx from 'clsx';
import { cloneElement, Component } from '@wordpress/element';
import NoticeOutline from 'gridicons/dist/notice-outline';
import moment from 'moment';
import PropTypes from 'prop-types';
import { H, Section } from '@woocommerce/components';
import { Button } from '@wordpress/components';
/**
* Internal dependencies
*/
import './style.scss';
/**
* Determine if the provided string is a date, as
* formatted by wc_rest_prepare_date_response().
*
* @param {string} value String value
*/
const isDateString = ( value ) =>
// PHP date format: Y-m-d\TH:i:s.
/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test( value );
class ActivityCard extends Component {
getCard() {
const {
actions,
className,
children,
date,
icon,
subtitle,
title,
unread,
} = this.props;
const cardClassName = clsx( 'woocommerce-activity-card', className );
const actionsList = Array.isArray( actions ) ? actions : [ actions ];
const dateString = isDateString( date )
? moment.utc( date ).fromNow()
: date;
return (
{ unread && (
) }
{ icon && (
{ icon }
) }
{ title && (
{ title }
{ subtitle && (
{ subtitle }
) }
{ dateString && (
{ dateString }
) }
) }
{ children && (
) }
{ actions && (
) }
);
}
render() {
const { onClick } = this.props;
if ( onClick ) {
return (
);
}
return this.getCard();
}
}
ActivityCard.propTypes = {
actions: PropTypes.oneOfType( [
PropTypes.arrayOf( PropTypes.element ),
PropTypes.element,
] ),
onClick: PropTypes.func,
className: PropTypes.string,
children: PropTypes.node,
date: PropTypes.string,
icon: PropTypes.node,
subtitle: PropTypes.node,
title: PropTypes.oneOfType( [ PropTypes.string, PropTypes.node ] ),
unread: PropTypes.bool,
};
ActivityCard.defaultProps = {
icon: ,
unread: false,
};
export { ActivityCard };
export { default as ActivityCardPlaceholder } from './placeholder';