@financial-times/n-conversion-forms
Version:
Containing jsx components and styles for forms included on Accounts and Acquisition apps (next-signup, next-profile, next-retention, etc).
107 lines (99 loc) • 2.27 kB
JavaScript
const { flattenObj } = require('./utilities');
const { printRegions } = require('./constants');
const countriesMasterList = {
cemeaV1: {
AUT: 'Austria',
ARE: 'United Arab Emirates',
BEL: 'Belgium',
BGR: 'Bulgaria',
HRV: 'Croatia',
CZE: 'Czechia',
DNK: 'Denmark',
EST: 'Estonia',
FIN: 'Finland',
DEU: 'Germany',
GRC: 'Greece',
HUN: 'Hungary',
ISL: 'Iceland',
ISR: 'Isarel',
ITA: 'Italy',
LIE: 'Liechtenstein',
LTU: 'Lithuania',
LVA: 'Latvia',
MLT: 'Malta',
MNE: 'Montenegro',
NLD: 'Netherlands',
NOR: 'Norway',
POL: 'Poland',
PRT: 'Portugal',
QAT: 'Qatar',
ROU: 'Romania',
RUS: 'Russian Federation',
SVK: 'Slovakia',
SVN: 'Slovenia',
TTO: 'Trinidad and Tobago',
ZAF: 'South Africa',
ESP: 'Spain',
SWE: 'Sweden',
CHE: 'Switzerland',
SRB: 'Serbia',
BIH: 'Bosnia and Herzegovina',
},
cemeaV2: {
FRA: 'France',
LUX: 'Luxembourg',
MCO: 'Monaco',
},
apac: {
AUS: 'Australia',
CHN: 'China',
HKG: 'Hong Kong',
IND: 'India',
IDN: 'Indonesia',
JPN: 'Japan',
KOR: 'Korea, Republic of',
MYS: 'Malaysia',
NZL: 'New Zealand',
PHL: 'Philippines',
SGP: 'Singapore',
TWN: 'Taiwan, Province of China',
THA: 'Thailand',
},
other: {
GBR: 'United Kingdom',
USA: 'United States',
CAN: 'Canada',
},
};
const cemeaV1ISO = Object.keys(countriesMasterList.cemeaV1);
const cemeaV2ISO = Object.keys(countriesMasterList.cemeaV2);
const apacISO = Object.keys(countriesMasterList.apac);
const singleCountries = Object.keys(countriesMasterList.other);
const countriesSupported = flattenObj(countriesMasterList);
const countriesSupportedISO = Object.keys(countriesSupported);
const postcodeExemptCountryCodes = ['HKG', 'QAT', 'ARE'];
const identifyShippingZone = (country) => {
if (cemeaV1ISO.includes(country)) {
return printRegions.cemeaV1;
}
if (cemeaV2ISO.includes(country)) {
return printRegions.cemeaV2;
}
if (apacISO.includes(country)) {
return printRegions.apac;
}
if (singleCountries.includes(country)) {
return country;
}
// if no match, then return a default shipping zone
return 'DEFAULT';
};
module.exports = {
cemeaV1ISO,
cemeaV2ISO,
apacISO,
countriesSupported,
countriesSupportedISO,
postcodeExemptCountryCodes,
identifyShippingZone,
};