44 lines
1.7 KiB
Markdown
44 lines
1.7 KiB
Markdown
# Number
|
|
|
|
A collection of utilities to propery localize numerical values in WooCommerce
|
|
|
|
## Installation
|
|
|
|
Install the module
|
|
|
|
```bash
|
|
pnpm install @woocommerce/number --save
|
|
```
|
|
|
|
_This package assumes that your code will run in an **ES2015+** environment. If you're using an environment that has limited or no support for ES2015+ such as lower versions of IE then using [core-js](https://github.com/zloirock/core-js) or [@babel/polyfill](https://babeljs.io/docs/en/next/babel-polyfill) will add support for these methods. Learn more about it in [Babel docs](https://babeljs.io/docs/en/next/caveats)._
|
|
|
|
## Usage
|
|
|
|
```JS
|
|
import { formatNumber, formatValue, calculateDelta } from '@woocommerce/number';
|
|
|
|
// It's best to retrieve the site currency settings and compose them with the format functions.
|
|
import { partial } from 'lodash';
|
|
// Retrieve this from the API or a global settings object.
|
|
const siteNumberOptions = {
|
|
precision: 2,
|
|
decimalSeparator: '.',
|
|
thousandSeparator: ',',
|
|
};
|
|
// Compose.
|
|
const formatStoreNumber = partial( siteNumberOptions, formatNumber );
|
|
const formatStoreValue = partial( siteNumberOptions, formatValue );
|
|
|
|
// Formats a number using site's current locale.
|
|
const localizedNumber = formatStoreNumber( 1337 ); // '1,377'
|
|
|
|
// formatValue's second argument is a type: average, or number
|
|
// The third argument is the number/value to format
|
|
// (The first argument is the config object we composed with earlier)
|
|
const formattedAverage = formatStoreValue( 'average', '10.5' ); // 11 just uses Math.round
|
|
const formattedNumber = formatStoreValue( 'number', '1337' ); // 1,337 calls formatNumber ( see above )
|
|
|
|
// Get a rounded percent change/delta between two numbers
|
|
const delta = calculateDelta( 10, 8 ); // '25'
|
|
```
|