34 lines
806 B
JavaScript
34 lines
806 B
JavaScript
/**
|
|
* External dependencies
|
|
*/
|
|
import { sprintf } from '@wordpress/i18n';
|
|
import { CURRENCY } from '@woocommerce/settings';
|
|
|
|
/**
|
|
* Format a price with currency data.
|
|
*
|
|
* @param {number} value Number to format.
|
|
* @param {string} priceFormat Price format string.
|
|
* @param {string} currencySymbol Currency symbol.
|
|
*/
|
|
export const formatPrice = (
|
|
value,
|
|
priceFormat = CURRENCY.price_format,
|
|
currencySymbol = CURRENCY.symbol
|
|
) => {
|
|
const formattedNumber = parseInt( value, 10 );
|
|
if ( ! isFinite( formattedNumber ) ) {
|
|
return '';
|
|
}
|
|
const formattedValue = sprintf(
|
|
priceFormat,
|
|
currencySymbol,
|
|
formattedNumber
|
|
);
|
|
|
|
// This uses a textarea to magically decode HTML currency symbols.
|
|
const txt = document.createElement( 'textarea' );
|
|
txt.innerHTML = formattedValue;
|
|
return txt.value;
|
|
};
|