@ecomplus/utils
Version:
JS utility functions to E-Com Plus (not only) related apps
82 lines (81 loc) • 3.34 kB
JavaScript
;
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;