UNPKG

gui-one-nutui-react-taro

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

95 lines (94 loc) 4.47 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; var _excluded = ["price", "needSymbol", "symbol", "decimalDigits", "thousands", "position", "size", "className"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } import React__default from 'react'; import { c as cn } from './bem-893ad28d.js'; var defaultProps = { price: 0, needSymbol: true, symbol: '&yen;', decimalDigits: 2, thousands: false, position: 'before', size: 'large', className: '' }; var Price = function Price(props) { var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), price = _defaultProps$props.price, needSymbol = _defaultProps$props.needSymbol, symbol = _defaultProps$props.symbol, decimalDigits = _defaultProps$props.decimalDigits, thousands = _defaultProps$props.thousands, position = _defaultProps$props.position, size = _defaultProps$props.size, className = _defaultProps$props.className, rest = _objectWithoutProperties(_defaultProps$props, _excluded); var b = cn('price'); var replaceSpecialChar = function replaceSpecialChar(url) { url = url.replace(/&quot;/g, '"'); url = url.replace(/&amp;/g, '&'); url = url.replace(/&lt;/g, '<'); url = url.replace(/&gt;/g, '>'); url = url.replace(/&nbsp;/g, ' '); url = url.replace(/&yen;/g, '¥'); return url; }; var showSymbol = function showSymbol() { return { __html: needSymbol ? replaceSpecialChar(symbol) : '' }; }; var checkPoint = function checkPoint(price) { return String(price).indexOf('.') > 0; }; var formatThousands = function formatThousands(num) { if (Number(num) === 0) { num = 0; } if (checkPoint(num)) { num = Number(num).toFixed(decimalDigits); num = typeof num.split('.') === 'string' ? num.split('.') : num.split('.')[0]; } else { num = num.toString(); } if (thousands) { return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); } return num; }; var formatDecimal = function formatDecimal(decimalNum) { if (Number(decimalNum) === 0) { decimalNum = 0; } if (checkPoint(decimalNum)) { decimalNum = Number(decimalNum).toFixed(decimalDigits); decimalNum = typeof decimalNum.split('.') === 'string' ? 0 : decimalNum.split('.')[1] || 0; } else { decimalNum = 0; } var result = "0.".concat(decimalNum); var resultFixed = Number(result).toFixed(decimalDigits); return String(resultFixed).substring(2, resultFixed.length); }; var renderSymbol = function renderSymbol() { return React__default.createElement("div", { className: "".concat(b('symbol'), " ").concat(b("symbol-".concat(size))), dangerouslySetInnerHTML: showSymbol() }); }; return React__default.createElement("div", _objectSpread({ className: "".concat(b(), " ").concat(className) }, rest), needSymbol && position === 'before' ? renderSymbol() : null, React__default.createElement("div", { className: "".concat(b('integer'), " ").concat(b("integer-".concat(size))) }, formatThousands(price)), decimalDigits !== 0 ? React__default.createElement("div", { className: "".concat(b('decimal'), " ").concat(b("decimal-".concat(size))) }, ".") : null, React__default.createElement("div", { className: "".concat(b('decimal'), " ").concat(b("decimal-".concat(size))) }, formatDecimal(price)), needSymbol && position === 'after' ? renderSymbol() : null); }; Price.defaultProps = defaultProps; Price.displayName = 'NutPrice'; export { Price as P };