admin-on-rest-fr05t1k
Version:
A frontend Framework for building admin applications on top of REST services, using ES6, React and Material UI
96 lines (79 loc) • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DateField = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _lodash = require('lodash.get');
var _lodash2 = _interopRequireDefault(_lodash);
var _pure = require('recompose/pure');
var _pure2 = _interopRequireDefault(_pure);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var toLocaleStringSupportsLocales = function () {
// from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
try {
new Date().toLocaleString("i");
} catch (error) {
return error instanceof RangeError;
}
return false;
}();
/**
* Display a date value as a locale string.
*
* Uses Intl.DateTimeFormat() if available, passing the locales and options props as arguments.
* If Intl is not available, it outputs date as is (and ignores the locales and options props).
*
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
* @example
* <DateField source="published_at" />
* // renders the record { id: 1234, published_at: new Date('2012-11-07') } as
* <span>07/11/2012</span>
*
* <DateField source="published_at" elStyle={{ color: 'red' }} />
* // renders the record { id: 1234, new Date('2012-11-07') } as
* <span style="color:red;">07/11/2012</span>
*
* <DateField source="share" options={{ weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }} />
* // renders the record { id: 1234, new Date('2012-11-07') } as
* <span>Wednesday, November 7, 2012</span>
*
* <DateField source="price" locales="fr-FR" options={{ weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }} />
* // renders the record { id: 1234, new Date('2012-11-07') } as
* <span>mercredi 7 novembre 2012</span>
*/
var DateField = exports.DateField = function DateField(_ref) {
var elStyle = _ref.elStyle,
locales = _ref.locales,
options = _ref.options,
record = _ref.record,
_ref$showTime = _ref.showTime,
showTime = _ref$showTime === undefined ? false : _ref$showTime,
source = _ref.source;
if (!record) return null;
var value = (0, _lodash2.default)(record, source);
if (value == null) return null;
var date = value instanceof Date ? value : new Date(value);
var dateString = showTime ? toLocaleStringSupportsLocales ? date.toLocaleString(locales, options) : date.toLocaleString() : toLocaleStringSupportsLocales ? date.toLocaleDateString(locales, options) : date.toLocaleDateString();
return _react2.default.createElement(
'span',
{ style: elStyle },
dateString
);
};
DateField.propTypes = {
addLabel: _react.PropTypes.bool,
elStyle: _react.PropTypes.object,
label: _react.PropTypes.string,
locales: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.arrayOf(_react.PropTypes.string)]),
options: _react.PropTypes.object,
record: _react.PropTypes.object,
showTime: _react.PropTypes.bool,
source: _react.PropTypes.string.isRequired
};
var PureDateField = (0, _pure2.default)(DateField);
PureDateField.defaultProps = {
addLabel: true
};
exports.default = PureDateField;