UNPKG

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.09 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.NumberField = undefined; var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); 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 hasNumberFormat = !!((typeof Intl === 'undefined' ? 'undefined' : (0, _typeof3.default)(Intl)) === 'object' && Intl && typeof Intl.NumberFormat === 'function'); /** * Display a numeric value as a locale string. * * Uses Intl.NumberFormat() if available, passing the locales and options props as arguments. * If Intl is not available, it outputs number as is (and ignores the locales and options props). * * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString * @example * <NumberField source="score" /> * // renders the record { id: 1234, score: 567 } as * <span>567</span> * * <NumberField source="score" elStyle={{ color: 'red' }} /> * // renders the record { id: 1234, score: 567 } as * <span style="color:red;">567</span> * * <NumberField source="share" options={{ style: 'percent' }} /> * // renders the record { id: 1234, share: 0.2545 } as * <span>25%</span> * * <NumberField source="price" options={{ style: 'currency', currency: 'USD' }} /> * // renders the record { id: 1234, price: 25.99 } as * <span>$25.99</span> * * <NumberField source="price" locales="fr-FR" options={{ style: 'currency', currency: 'USD' }} /> * // renders the record { id: 1234, price: 25.99 } as * <span>25,99 $US</span> */ var NumberField = exports.NumberField = function NumberField(_ref) { var record = _ref.record, source = _ref.source, locales = _ref.locales, options = _ref.options, elStyle = _ref.elStyle; if (!record) return null; var value = (0, _lodash2.default)(record, source); if (value == null) return null; if (!hasNumberFormat) return _react2.default.createElement( 'span', { style: elStyle }, value ); return _react2.default.createElement( 'span', { style: elStyle }, value.toLocaleString(locales, options) ); }; NumberField.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, source: _react.PropTypes.string.isRequired }; var PureNumberField = (0, _pure2.default)(NumberField); PureNumberField.defaultProps = { addLabel: true, style: { textAlign: 'right' }, headerStyle: { textAlign: 'right' } }; exports.default = PureNumberField;