import React from 'react';
import { format, formatDistanceStrict, differenceInSeconds } from 'date-fns';
import PropTypes from 'prop-types';
import { UncontrolledTooltip } from 'reactstrap';
const FormattedDistanceDate = (props) => {
// cast to date if string
const date = (typeof props.date === 'string') ? new Date(props.date) : props.date;
const baseDate = props.baseDate || new Date();
const dateFormatted = format(date, 'yyyy/MM/dd HH:mm');
const diff = Math.abs(differenceInSeconds(date, baseDate));
if (diff > props.differenceForAvoidingFormat) {
return <>{dateFormatted}>;
}
const elemId = `grw-fdd-${props.id}`;
return (
<>
{formatDistanceStrict(date, baseDate)}
{props.isShowTooltip && {dateFormatted}}
>
);
};
FormattedDistanceDate.propTypes = {
id: PropTypes.string.isRequired,
date: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(Date)]).isRequired,
baseDate: PropTypes.instanceOf(Date),
// the number(sec) from 'baseDate' to avoid format
differenceForAvoidingFormat: PropTypes.number,
isShowTooltip: PropTypes.bool,
};
FormattedDistanceDate.defaultProps = {
differenceForAvoidingFormat: 86400 * 3,
isShowTooltip: true,
};
export default FormattedDistanceDate;