UNPKG

@coko/client

Version:

Client side common code for coko apps

50 lines (49 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _moment = _interopRequireDefault(require("moment")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var getDuration = function getDuration(timestamp) { var today = (0, _moment["default"])(); var stamp = (0, _moment["default"])(timestamp); return _moment["default"].duration(today.diff(stamp)); }; var DateParser = function DateParser(props) { var children = props.children, timestamp = props.timestamp, dateFormat = props.dateFormat, humanizeThreshold = props.humanizeThreshold; var renderTimestamp = function renderTimestamp() { if (!timestamp) return ''; var duration = getDuration(timestamp); if (duration.asDays() < humanizeThreshold) { return "".concat(duration.humanize(), " ago"); } return (0, _moment["default"])(timestamp).format(dateFormat); }; var renderTimeAgo = function renderTimeAgo() { if (!timestamp) return ''; var duration = getDuration(timestamp); return duration.humanize(); }; var timestampValue = renderTimestamp(); var timeAgoValue = renderTimeAgo(); return children(timestampValue, timeAgoValue); }; DateParser.propTypes = { /** The date string. Can be any date parsable by momentjs. */ timestamp: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number, Date]).isRequired, /** Format of the rendered date. */ dateFormat: _propTypes["default"].string, /** Humanize duration threshold */ humanizeThreshold: _propTypes["default"].number }; DateParser.defaultProps = { dateFormat: 'DD.MM.YYYY', humanizeThreshold: 0 }; var _default = DateParser; exports["default"] = _default;