@coko/client
Version:
Client side common code for coko apps
50 lines (49 loc) • 1.85 kB
JavaScript
;
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;