FormattedDistanceDate.jsx 938 B

12345678910111213141516171819202122232425262728293031
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { format, formatDistanceStrict } from 'date-fns';
  4. import { UncontrolledTooltip } from 'reactstrap';
  5. const FormattedDistanceDate = (props) => {
  6. // cast to date if string
  7. const date = (typeof props.date === 'string') ? new Date(props.date) : props.date;
  8. const baseDate = props.baseDate || new Date();
  9. const elemId = `grw-fdd-${props.id}`;
  10. const dateFormatted = format(date, 'yyyy/MM/dd HH:mm');
  11. return (
  12. <>
  13. <span id={elemId}>{formatDistanceStrict(date, baseDate)}</span>
  14. <UncontrolledTooltip placement="bottom" fade={false} target={elemId}>{dateFormatted}</UncontrolledTooltip>
  15. </>
  16. );
  17. };
  18. FormattedDistanceDate.propTypes = {
  19. id: PropTypes.string.isRequired,
  20. date: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(Date)]).isRequired,
  21. baseDate: PropTypes.instanceOf(Date),
  22. };
  23. export default FormattedDistanceDate;