4.2.2 • Published 6 days ago

@shopify/address v4.2.2

Weekly downloads
41,999
License
MIT
Repository
github
Last release
6 days ago

@shopify/address

Build Status Build Status License: MIT npm version npm bundle size (minified + gzip)

Address utilities for formatting addresses.

Installation

yarn add @shopify/address

API Reference

  • country field in Address is expected to be of format ISO 3166-1 alpha-2, eg. CA / FR / JP

AddressFormatter class

Show an address:

import AddressFormatter from '@shopify/address';

const address = {
  company: 'Shopify',
  firstName: '恵子',
  lastName: '田中',
  address1: '八重洲1-5-3',
  address2: '',
  city: '目黒区',
  province: 'JP-13',
  zip: '100-8994',
  country: 'JP',
  phone: '',
};

const addressFormatter = new AddressFormatter('ja');
await addressFormatter.format(address);
/* =>
  日本
  〒100-8994東京都目黒区八重洲1-5-3
  Shopify
  田中恵子様
 */

await addressFormatter.getOrderedFields('CA');
/* =>
  [
    ['firstName', 'lastName'],
    ['company'],
    ['address1'],
    ['address2'],
    ['city'],
    ['country', 'province', 'zip'],
    ['phone']
  ]
 */

constructor(private locale: string)

Instantiate the AddressFormatter by passing it a locale.

updateLocale(locale: string)

Update the current locale of the formatter. Following requests will be in the given locale.

async .getCountry(countryCode: string): Promise<Country>

Loads and returns data about a given country in the current locale. Country and province names are localized. Province names are sorted based on the locale.

async .getCountries(): Promise<Country[]>

Loads and returns data for all countries in the current locale. Countries are sorted based on the locale. Zones are also ordered based on the locale.

async .getZoneName(countryCode: string, zoneCode: string): Promise<string>

This returns the names of the provinces or regions for the specified country, displayed in the language that is currently set.

async .getOrderedFields(countryCode): Promise<FieldName[][]>

Returns how to order address fields for a country code. Fetches the country if not already cached.

async .format(address: Address): Promise<string[]>

Given an address, returns the address ordered for multiline rendering. Uses the formatAddress sync API in the background.

AddressFormatter.resetCache(): void

Resets the internal cache. Useful to avoid side-effects in test suite.

Sync API

If you already have the input data ready, like a Country object, you can use the sync API to get the result right away.

The following functions can be imported as stand-alone utilities.

formatAddress(address: Address, country: Country): string[]

Given an address and a country, returns the address ordered for multiline rendering. e.g.:

['Shopify', 'Lindenstraße 9-14', '10969 Berlin', 'Germany'];

buildOrderedFields(country: Country): FieldName[][]

Returns how to order address fields for a specific country.

Eg.:

[
  ['firstName', 'lastName'],
  ['company'],
  ['address1'],
  ['address2'],
  ['city'],
  ['country', 'province', 'zip'],
  ['phone'],
];

Testing

If your component uses this package and you want to test it with mock API calls you can use the following:

import {fetch} from '@shopify/jest-dom-mocks';
import {mockCountryRequests} from '@shopify/address/tests';
import AddressFormatter from '@shopify/address';

beforeEach(() => {
  AddressFormatter.resetCache(); // to avoid side-effects.
  mockCountryRequests();
});
afterEach(fetch.restore);

Note: Only FR / JA and EN are mocked.

4.2.2

6 days ago

4.2.1

13 days ago

4.2.0

9 months ago

4.0.7

1 year ago

4.0.8

1 year ago

4.1.0

1 year ago

4.0.6

2 years ago

4.0.5

2 years ago

4.0.4

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.3

2 years ago

4.0.2

2 years ago

3.2.0

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

3.0.13

2 years ago

3.0.16

2 years ago

3.0.14

2 years ago

3.0.15

2 years ago

3.0.12

2 years ago

3.0.10

2 years ago

3.0.11

2 years ago

4.0.0-wp5-beta.1

2 years ago

3.0.9

3 years ago

3.0.8

3 years ago

3.0.7

3 years ago

3.0.6

3 years ago

3.0.5

3 years ago

3.0.4

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.10.8

3 years ago

2.10.6

3 years ago

2.10.5

3 years ago

2.10.4

3 years ago

2.10.3

3 years ago

2.10.2

3 years ago

2.10.1

3 years ago

2.10.0

3 years ago

2.9.4

3 years ago

2.9.3

3 years ago

2.9.2

4 years ago

2.9.1

4 years ago

2.9.0

4 years ago

2.8.6

4 years ago

2.8.5

4 years ago

2.8.4

4 years ago

2.8.3

4 years ago

2.8.2

4 years ago

2.8.1

4 years ago

2.8.0

4 years ago

2.7.17

4 years ago

2.7.16

4 years ago

2.7.15

4 years ago

2.7.14

4 years ago

2.7.13

5 years ago

2.7.12

5 years ago

2.7.11

5 years ago

2.7.10

5 years ago

2.7.9

5 years ago

2.7.8

5 years ago

2.7.7

5 years ago

2.7.6

5 years ago

2.7.5

5 years ago

2.7.4

5 years ago

2.7.3

5 years ago

2.7.2

5 years ago

2.7.1

5 years ago

2.7.0

5 years ago

2.6.17

5 years ago

2.6.16

5 years ago

2.6.15

5 years ago

2.6.14

5 years ago

2.6.13

5 years ago

2.6.12

5 years ago

2.6.11

5 years ago

2.6.10

5 years ago

2.6.9

5 years ago

2.6.8

5 years ago

2.6.7

5 years ago

2.6.6

5 years ago

2.6.5

5 years ago

2.6.4

5 years ago

2.6.3

5 years ago

2.6.2

5 years ago

2.6.1

5 years ago

2.6.0

5 years ago

2.5.1

5 years ago

2.5.0

5 years ago

2.4.5

5 years ago

2.4.4

6 years ago

2.4.3

6 years ago

2.4.1

6 years ago

2.4.0

6 years ago

2.3.0

6 years ago

2.2.0

6 years ago

2.1.0

6 years ago

2.0.0

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago