UNPKG

@nutui/nutui-react

Version:

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

60 lines (59 loc) 2.67 kB
import { _ as __rest } from "./tslib.es6.js"; import React__default from "react"; import { C as ComponentDefaults } from "./typings.js"; const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { price: 0, symbol: "¥", digits: 2, thousands: false, position: "before", size: "large", line: false }); const Price = (props) => { const _a = Object.assign(Object.assign({}, defaultProps), props), { price, symbol, digits, thousands, position, size, line, className, style } = _a, rest = __rest(_a, ["price", "symbol", "digits", "thousands", "position", "size", "line", "className", "style"]); const classPrefix = "nut-price"; const showSymbol = () => { return { __html: symbol || "" }; }; const checkPoint = (price2) => { return String(price2).indexOf(".") > 0; }; const formatThousands = (num) => { if (Number(num) === 0) { num = 0; } if (checkPoint(num)) { num = Number(num).toFixed(digits); 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; }; const formatDecimal = (decimalNum) => { if (Number(decimalNum) === 0) { decimalNum = 0; } if (checkPoint(decimalNum)) { decimalNum = Number(decimalNum).toFixed(digits); decimalNum = typeof decimalNum.split(".") === "string" ? 0 : decimalNum.split(".")[1] || 0; } else { decimalNum = 0; } const result = `0.${decimalNum}`; const resultFixed = Number(result).toFixed(digits); return String(resultFixed).substring(2, resultFixed.length); }; const renderSymbol = () => { return React__default.createElement("div", { className: `${classPrefix}-symbol ${classPrefix}-symbol-${size}`, dangerouslySetInnerHTML: showSymbol() }); }; return React__default.createElement( "div", Object.assign({ className: `${classPrefix} ${line ? `${classPrefix}-line` : ""} ${className}`, style }, rest), symbol && position === "before" ? renderSymbol() : null, React__default.createElement("div", { className: `${classPrefix}-integer ${classPrefix}-integer-${size}` }, formatThousands(price)), digits !== 0 ? React__default.createElement("div", { className: `${classPrefix}-decimal ${classPrefix}-decimal-${size}` }, ".") : null, React__default.createElement("div", { className: `${classPrefix}-decimal ${classPrefix}-decimal-${size}` }, formatDecimal(price)), symbol && position === "after" ? renderSymbol() : null ); }; Price.displayName = "NutPrice"; export { Price as default };