gui-one-nutui-react-taro
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
95 lines (94 loc) • 4.47 kB
JavaScript
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: '¥',
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(/"/g, '"');
url = url.replace(/&/g, '&');
url = url.replace(/</g, '<');
url = url.replace(/>/g, '>');
url = url.replace(/ /g, ' ');
url = url.replace(/¥/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 };