UNPKG

@ecomplus/utils

Version:

JS utility functions to E-Com Plus (not only) related apps

82 lines (81 loc) 3.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("core-js/modules/es.regexp.exec.js"); require("core-js/modules/es.string.replace.js"); require("core-js/modules/es.symbol.js"); require("core-js/modules/es.symbol.description.js"); require("core-js/modules/es.object.to-string.js"); require("core-js/modules/es.symbol.iterator.js"); require("core-js/modules/es.array.iterator.js"); require("core-js/modules/es.string.iterator.js"); require("core-js/modules/web.dom-collections.iterator.js"); var _config2 = _interopRequireDefault(require("./../lib/config")); var _price = _interopRequireDefault(require("./price")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } /** * @method * @memberof ecomUtils * @name formatMoney * @description Parse price number to formatted currency string. * @param {number|Object.<string, *>} value - Price number or body object (product or variation) * @param {string|null} [currency=$ecomConfig.get('currency')] - Currency code such as 'BRL' * @param {string} [lang=$ecomConfig.get('lang')] - Snake case language code, eg.: 'en_us', 'pt_br' * @returns {string} * * @example * // With number as value * ecomUtils.formatMoney(10.6) * // => $10.60 * ecomUtils.formatMoney(10.6, 'BRL') * // => R$10.60 * ecomUtils.formatMoney(10.6, 'BRL', 'pt_br') * // => R$ 10,60 * * @example * // With product, variation or cart item object as value * // Full object ref.: https://developers.e-com.plus/docs/api/#/store/products/ * ecomUtils.formatMoney({ sku: 'TEST', name: 'Test', price: 140.56 }) * // => $140.56 * * @example * // You can also set the configured lang and currency first * $ecomConfig.set('lang', 'pt_br') * $ecomConfig.set('currency', 'BRL') * $ecomConfig.set('currency_symbol', 'R$') * // Then call `formatMoney` without expliciting currency and lang * ecomUtils.formatMoney(10.6) * // => R$ 10,60 */ var formatMoney = function formatMoney(value) { var currency = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _config2.default.get('currency'); var lang = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _config2.default.get('lang'); // price to number if (_typeof(value) === 'object') { if (value !== null) { // suppose to be product object value = (0, _price.default)(value); } } else if (typeof value === 'string') { value = parseFloat(value); } if (currency) { try { // format price string // lang code format: pt-br, en-us... return value.toLocaleString(lang.replace('_', '-'), { style: 'currency', currency: currency }); } catch (err) { console.error(err); } } // fallback using configured currency symbol var moneyPrefix = (currency || _config2.default.get('currency_symbol')) + ' '; return typeof value === 'number' ? moneyPrefix + value : ''; }; var _default = exports.default = formatMoney;