From 83ba53eeb5d0f1845e7734ad8bdcba7800af39e9 Mon Sep 17 00:00:00 2001 From: AlexeyPonomarenko Date: Wed, 20 Apr 2022 00:45:30 +0300 Subject: [PATCH] test(tests): another portion of tests --- .../AccountButton/AccountButton.tsx | 2 +- .../DisconnectButton/DisconnectButton.tsx | 2 +- .../tests/DisconnectButton.spec.tsx | 11 + .../MyAccountButton.module.scss | 0 .../MyAccountButton.tsx | 0 .../{MyAccount => MyAccountButton}/index.ts | 0 .../tests/MyAccountButton.spec.tsx | 18 + .../components/WalletButton/WalletButton.tsx | 2 +- .../WalletButton/tests/WalletButton.spec.tsx | 21 + .../tests/WalletDescription.spec.tsx | 19 + .../WalletIcon/tests/WalletIcon.spec.tsx | 37 + .../tests/WalletSelectionModal.spec.tsx | 36 + .../tests/WalletWithAccounts.spec.tsx | 39 + .../components/WalletsList/WalletsList.tsx | 4 +- .../WalletsList/tests/WalletsList.spec.tsx | 25 + .../components/tests/AccountButton.spec.tsx | 151 +++ astro_2.0/components/Chip/Chip.tsx | 12 +- astro_2.0/components/Chip/tests/Chip.spec.tsx | 17 + constants/countryPhoneCodes.ts | 913 ++++++++++++++++++ 19 files changed, 1298 insertions(+), 11 deletions(-) create mode 100644 astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton/tests/DisconnectButton.spec.tsx rename astro_2.0/components/AppHeader/components/AccountButton/components/{MyAccount => MyAccountButton}/MyAccountButton.module.scss (100%) rename astro_2.0/components/AppHeader/components/AccountButton/components/{MyAccount => MyAccountButton}/MyAccountButton.tsx (100%) rename astro_2.0/components/AppHeader/components/AccountButton/components/{MyAccount => MyAccountButton}/index.ts (100%) create mode 100644 astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/tests/MyAccountButton.spec.tsx create mode 100644 astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton/tests/WalletButton.spec.tsx create mode 100644 astro_2.0/components/AppHeader/components/AccountButton/components/WalletDescription/tests/WalletDescription.spec.tsx create mode 100644 astro_2.0/components/AppHeader/components/AccountButton/components/WalletIcon/tests/WalletIcon.spec.tsx create mode 100644 astro_2.0/components/AppHeader/components/AccountButton/components/WalletSelectionModal/tests/WalletSelectionModal.spec.tsx create mode 100644 astro_2.0/components/AppHeader/components/AccountButton/components/WalletWithAccounts/tests/WalletWithAccounts.spec.tsx create mode 100644 astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList/tests/WalletsList.spec.tsx create mode 100644 astro_2.0/components/AppHeader/components/AccountButton/components/tests/AccountButton.spec.tsx create mode 100644 astro_2.0/components/Chip/tests/Chip.spec.tsx create mode 100644 constants/countryPhoneCodes.ts diff --git a/astro_2.0/components/AppHeader/components/AccountButton/AccountButton.tsx b/astro_2.0/components/AppHeader/components/AccountButton/AccountButton.tsx index e2e1ed485..f16f04981 100644 --- a/astro_2.0/components/AppHeader/components/AccountButton/AccountButton.tsx +++ b/astro_2.0/components/AppHeader/components/AccountButton/AccountButton.tsx @@ -8,7 +8,7 @@ import { AppFooter } from 'astro_2.0/components/AppFooter'; import { GenericDropdown } from 'astro_2.0/components/GenericDropdown'; import { WalletType } from 'types/config'; -import { WalletIcon } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletIcon/WalletIcon'; +import { WalletIcon } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletIcon'; import { useModal } from 'components/modal'; import { WalletSelectionModal } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletSelectionModal'; import { WalletsList } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList'; diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton/DisconnectButton.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton/DisconnectButton.tsx index c548071ac..7c2359b7e 100644 --- a/astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton/DisconnectButton.tsx +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton/DisconnectButton.tsx @@ -13,7 +13,7 @@ export const DisconnectButton: React.FC = ({ }) => { return ( logout()} + onClick={logout} className={styles.menuButton} content={
Disconnect
} icon={ diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton/tests/DisconnectButton.spec.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton/tests/DisconnectButton.spec.tsx new file mode 100644 index 000000000..775b27db9 --- /dev/null +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton/tests/DisconnectButton.spec.tsx @@ -0,0 +1,11 @@ +import { render } from 'jest/testUtils'; + +import { DisconnectButton } from 'astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton'; + +describe('DisconnectButton', () => { + it('Should render component', () => { + const { getByText } = render( 0} />); + + expect(getByText('Disconnect')).toBeTruthy(); + }); +}); diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/MyAccount/MyAccountButton.module.scss b/astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/MyAccountButton.module.scss similarity index 100% rename from astro_2.0/components/AppHeader/components/AccountButton/components/MyAccount/MyAccountButton.module.scss rename to astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/MyAccountButton.module.scss diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/MyAccount/MyAccountButton.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/MyAccountButton.tsx similarity index 100% rename from astro_2.0/components/AppHeader/components/AccountButton/components/MyAccount/MyAccountButton.tsx rename to astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/MyAccountButton.tsx diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/MyAccount/index.ts b/astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/index.ts similarity index 100% rename from astro_2.0/components/AppHeader/components/AccountButton/components/MyAccount/index.ts rename to astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/index.ts diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/tests/MyAccountButton.spec.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/tests/MyAccountButton.spec.tsx new file mode 100644 index 000000000..ab6d1466a --- /dev/null +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton/tests/MyAccountButton.spec.tsx @@ -0,0 +1,18 @@ +import { render } from 'jest/testUtils'; +import { fireEvent } from '@testing-library/dom'; + +import { MyAccountButton } from 'astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton'; + +describe('MyAccountButton', () => { + it('Should handle click properly ', () => { + const closeDropdown = jest.fn(); + + const { getByRole } = render( + + ); + + fireEvent.click(getByRole('button')); + + expect(closeDropdown).toBeCalled(); + }); +}); diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton/WalletButton.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton/WalletButton.tsx index c9890f3df..c7474deb6 100644 --- a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton/WalletButton.tsx +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton/WalletButton.tsx @@ -1,4 +1,4 @@ -import { WalletIcon } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletIcon/WalletIcon'; +import { WalletIcon } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletIcon'; import { WalletType } from 'types/config'; import { WalletDescription } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletDescription'; import { AccountPopupItem } from 'astro_2.0/components/AppHeader/components/AccountButton/components/AccountPopupItem'; diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton/tests/WalletButton.spec.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton/tests/WalletButton.spec.tsx new file mode 100644 index 000000000..c1dc2bae7 --- /dev/null +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton/tests/WalletButton.spec.tsx @@ -0,0 +1,21 @@ +import { render } from 'jest/testUtils'; + +import { WalletButton } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton'; + +describe('WalletButton', () => { + it('Should render component', () => { + const name = 'Wallet Name'; + + const { getByText } = render( + 0} + /> + ); + + expect(getByText(name)).toBeTruthy(); + }); +}); diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletDescription/tests/WalletDescription.spec.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletDescription/tests/WalletDescription.spec.tsx new file mode 100644 index 000000000..d07d270f5 --- /dev/null +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletDescription/tests/WalletDescription.spec.tsx @@ -0,0 +1,19 @@ +import { render } from 'jest/testUtils'; + +import { WalletDescription } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletDescription'; + +describe('WalletDescription', () => { + it('Should render component', () => { + const name = 'Wallet name'; + const type = 'Wallet type'; + const url = 'Wallet url'; + + const { getByText } = render( + + ); + + expect(getByText(name)).toBeTruthy(); + expect(getByText(type, { exact: false })).toBeTruthy(); + expect(getByText(url)).toBeTruthy(); + }); +}); diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletIcon/tests/WalletIcon.spec.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletIcon/tests/WalletIcon.spec.tsx new file mode 100644 index 000000000..f99e5cf6a --- /dev/null +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletIcon/tests/WalletIcon.spec.tsx @@ -0,0 +1,37 @@ +import { render } from 'jest/testUtils'; + +import { WalletIcon } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletIcon'; + +jest.mock('astro_2.0/components/NearIcon', () => { + return { + NearIcon: () =>
NearIcon
, + }; +}); + +jest.mock('astro_2.0/components/SenderIcon', () => { + return { + SenderIcon: () =>
SenderIcon
, + }; +}); + +describe('WalletIcon', () => { + it('Should render Near icon', () => { + const { getByText } = render(); + + expect(getByText('NearIcon')).toBeTruthy(); + }); + + it('Should render Sender icon', () => { + const { getByText } = render( + + ); + + expect(getByText('SenderIcon')).toBeTruthy(); + }); + + it('Should render Near icon by default', () => { + const { getByText } = render(); + + expect(getByText('NearIcon')).toBeTruthy(); + }); +}); diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletSelectionModal/tests/WalletSelectionModal.spec.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletSelectionModal/tests/WalletSelectionModal.spec.tsx new file mode 100644 index 000000000..8513f71f5 --- /dev/null +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletSelectionModal/tests/WalletSelectionModal.spec.tsx @@ -0,0 +1,36 @@ +import { render } from 'jest/testUtils'; +import { fireEvent } from '@testing-library/dom'; + +import { WalletSelectionModal } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletSelectionModal'; + +jest.mock('components/modal', () => { + return { + Modal: ({ children }: { children: unknown }) => children, + }; +}); + +describe('WalletSelectionModal', () => { + it('Should sign in Near wallet', () => { + const signIn = jest.fn(); + + const { getAllByRole } = render( + 0} signIn={signIn} /> + ); + + fireEvent.click(getAllByRole('button')[0]); + + expect(signIn).toBeCalledWith(0); + }); + + it('Should sign in Sender wallet', () => { + const signIn = jest.fn(); + + const { getAllByRole } = render( + 0} signIn={signIn} /> + ); + + fireEvent.click(getAllByRole('button')[2]); + + expect(signIn).toBeCalledWith(1); + }); +}); diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletWithAccounts/tests/WalletWithAccounts.spec.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletWithAccounts/tests/WalletWithAccounts.spec.tsx new file mode 100644 index 000000000..7c9bda2de --- /dev/null +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletWithAccounts/tests/WalletWithAccounts.spec.tsx @@ -0,0 +1,39 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ + +import { render } from 'jest/testUtils'; + +import { useAuthContext } from 'context/AuthContext'; + +import { WalletWithAccounts } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletWithAccounts'; + +jest.mock('context/AuthContext', () => { + return { + useAuthContext: jest.fn(() => ({})), + }; +}); + +describe('WalletWithAccounts', () => { + it('Should render component', () => { + // @ts-ignore + useAuthContext.mockImplementation(() => ({ + accountId: '1', + })); + + const { getByText } = render( + () => 0} + switchWalletHandler={() => () => 0} + /> + ); + + expect(getByText('NEAR')).toBeTruthy(); + }); +}); diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList/WalletsList.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList/WalletsList.tsx index 81370756a..6b6851b20 100644 --- a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList/WalletsList.tsx +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList/WalletsList.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { MyAccountButton } from 'astro_2.0/components/AppHeader/components/AccountButton/components/MyAccount'; +import { MyAccountButton } from 'astro_2.0/components/AppHeader/components/AccountButton/components/MyAccountButton'; import { WalletType } from 'types/config'; import { DisconnectButton } from 'astro_2.0/components/AppHeader/components/AccountButton/components/DisconnectButton'; import { WalletMeta } from 'services/sputnik/SputnikNearService/services/types'; @@ -7,7 +7,7 @@ import { WalletWithAccounts } from 'astro_2.0/components/AppHeader/components/Ac import { WalletButton } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletButton'; import styles from './WalletsList.module.scss'; -interface WalletsListProps { +export interface WalletsListProps { logoutHandler: () => Promise; availableNearAccounts: string[]; availableWallets: WalletMeta[]; diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList/tests/WalletsList.spec.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList/tests/WalletsList.spec.tsx new file mode 100644 index 000000000..19f24850c --- /dev/null +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList/tests/WalletsList.spec.tsx @@ -0,0 +1,25 @@ +import { render } from 'jest/testUtils'; + +import { WalletMeta } from 'services/sputnik/SputnikNearService/services/types'; +import { WalletsList } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList'; + +describe('WalletsList', () => { + it('Should render component', () => { + const wallets = ([ + { id: 'NEAR' }, + { id: 'SENDER' }, + ] as unknown) as WalletMeta[]; + + render( + Promise.resolve()} + availableNearAccounts={[]} + availableWallets={wallets} + selectedWallet={0} + switchAccountHandler={() => () => 0} + switchWalletHandler={() => () => 0} + closeDropdownHandler={() => 0} + /> + ); + }); +}); diff --git a/astro_2.0/components/AppHeader/components/AccountButton/components/tests/AccountButton.spec.tsx b/astro_2.0/components/AppHeader/components/AccountButton/components/tests/AccountButton.spec.tsx new file mode 100644 index 000000000..995d93f69 --- /dev/null +++ b/astro_2.0/components/AppHeader/components/AccountButton/components/tests/AccountButton.spec.tsx @@ -0,0 +1,151 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */ + +import React, { ReactNode } from 'react'; +import { render } from 'jest/testUtils'; +import { fireEvent } from '@testing-library/dom'; + +import { WalletType } from 'types/config'; +import { WalletsListProps } from 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList'; + +import { useAuthContext } from 'context/AuthContext'; + +import { GenericDropdown } from 'astro_2.0/components/GenericDropdown'; +import { AccountButton } from 'astro_2.0/components/AppHeader/components/AccountButton'; + +const accountId = 'My account Id'; + +const context = { + accountId: 'My account Id', + nearService: { + getWalletType: () => 0, + availableWallets: () => [], + }, +}; + +jest.mock('react', () => { + return { + ...jest.requireActual('react'), + useState: jest.fn(() => []), + }; +}); + +jest.mock('context/AuthContext', () => { + return { + useAuthContext: jest.fn(() => context), + }; +}); + +jest.mock( + 'astro_2.0/components/AppHeader/components/AccountButton/components/WalletsList', + () => { + return { + WalletsList: ({ + switchWalletHandler, + switchAccountHandler, + closeDropdownHandler, + }: WalletsListProps) => { + return ( +
+
closeDropdownHandler
+ {/* @ts-ignore */} +
+ switchWalletHandler +
+
+ switchAccountHandler +
+
+ ); + }, + }; + } +); + +jest.mock('astro_2.0/components/GenericDropdown', () => { + return { + GenericDropdown: jest.fn(), + }; +}); + +jest.mock('next-i18next', () => ({ + // this mock makes sure any components using the translate hook does not generate warnings in console + useTranslation: () => { + return { + t: (str: string): string => str, + }; + }, +})); + +describe('AccountButton', () => { + it('Should render component', () => { + // @ts-ignore + GenericDropdown.mockImplementation(({ parent }: { parent: ReactNode }) => ( +
{parent}
+ )); + + const { getByText } = render(); + + expect(getByText(accountId)).toBeTruthy(); + }); + + it('Should close dropdown', () => { + const setOpen = jest.fn(); + + // @ts-ignore + GenericDropdown.mockImplementation( + ({ children }: { children: ReactNode }) =>
{children}
+ ); + + jest + .spyOn(React, 'useState') + .mockImplementationOnce(() => [false, setOpen]); + + const { getByText } = render(); + + fireEvent.click(getByText('closeDropdownHandler')); + + expect(setOpen).toBeCalledWith(false); + }); + + it('Should switch account', () => { + const switchAccount = jest.fn(); + + // @ts-ignore + useAuthContext.mockImplementation(() => ({ + ...context, + switchAccount, + })); + + // @ts-ignore + GenericDropdown.mockImplementation( + ({ children }: { children: ReactNode }) =>
{children}
+ ); + + const { getByText } = render(); + + fireEvent.click(getByText('switchAccountHandler')); + + expect(switchAccount).toBeCalledWith(WalletType.NEAR, 'New Account'); + }); + + it('Should switch wallet', () => { + const switchWallet = jest.fn(); + + // @ts-ignore + useAuthContext.mockImplementation(() => ({ + ...context, + switchWallet, + })); + + // @ts-ignore + GenericDropdown.mockImplementation( + ({ children }: { children: ReactNode }) =>
{children}
+ ); + + const { getByText } = render(); + + fireEvent.click(getByText('switchWalletHandler')); + + expect(switchWallet).toBeCalledWith('New Wallet'); + }); +}); diff --git a/astro_2.0/components/Chip/Chip.tsx b/astro_2.0/components/Chip/Chip.tsx index 49a9b6bd4..f0abbb976 100644 --- a/astro_2.0/components/Chip/Chip.tsx +++ b/astro_2.0/components/Chip/Chip.tsx @@ -1,4 +1,4 @@ -import React, { FC } from 'react'; +import React, { FC, useCallback } from 'react'; import cn from 'classnames'; import { IconButton } from 'components/button/IconButton'; @@ -12,14 +12,14 @@ export interface ChipProps { } export const Chip: FC = ({ className, onRemove, name }) => { + const remove = useCallback(() => { + onRemove(name); + }, [name, onRemove]); + return (
{name}
- onRemove(name)} - icon="close" - /> +
); }; diff --git a/astro_2.0/components/Chip/tests/Chip.spec.tsx b/astro_2.0/components/Chip/tests/Chip.spec.tsx new file mode 100644 index 000000000..d84143c49 --- /dev/null +++ b/astro_2.0/components/Chip/tests/Chip.spec.tsx @@ -0,0 +1,17 @@ +import { render } from 'jest/testUtils'; +import { fireEvent } from '@testing-library/dom'; + +import { Chip } from 'astro_2.0/components/Chip'; + +describe('Chip', () => { + it('Should call remove callback', () => { + const name = 'My Name'; + const onRemove = jest.fn(); + + const { getByRole } = render(); + + fireEvent.click(getByRole('button')); + + expect(onRemove).toBeCalledWith(name); + }); +}); diff --git a/constants/countryPhoneCodes.ts b/constants/countryPhoneCodes.ts new file mode 100644 index 000000000..2e2edfaa9 --- /dev/null +++ b/constants/countryPhoneCodes.ts @@ -0,0 +1,913 @@ +export const COUNTRY_PHONE_CODES = [ + { dialCode: '+1', flag: '๐Ÿ‡จ๐Ÿ‡ฆ', code: 'CA', name: 'Canada' }, + { + dialCode: '+1', + flag: '๐Ÿ‡บ๐Ÿ‡ธ', + code: 'US', + name: 'United States', + }, + { dialCode: '+1242', flag: '๐Ÿ‡ง๐Ÿ‡ธ', code: 'BS', name: 'Bahamas' }, + { + dialCode: '+1246', + flag: '๐Ÿ‡ง๐Ÿ‡ง', + code: 'BB', + name: 'Barbados', + }, + { dialCode: '+1264', flag: '๐Ÿ‡ฆ๐Ÿ‡ฎ', code: 'AI', name: 'Anguilla' }, + { + dialCode: '+1268', + flag: '๐Ÿ‡ฆ๐Ÿ‡ฌ', + code: 'AG', + name: 'Antigua and Barbuda', + }, + { + dialCode: '+1284', + flag: '๐Ÿ‡ป๐Ÿ‡ฌ', + code: 'VG', + name: 'Virgin Islands, British', + }, + { + dialCode: '+1340', + flag: '๐Ÿ‡ป๐Ÿ‡ฎ', + code: 'VI', + name: 'Virgin Islands, U.S.', + }, + { dialCode: '+1441', flag: '๐Ÿ‡ง๐Ÿ‡ฒ', code: 'BM', name: 'Bermuda' }, + { + dialCode: '+1473', + flag: '๐Ÿ‡ฌ๐Ÿ‡ฉ', + code: 'GD', + name: 'Grenada', + }, + { + dialCode: '+1649', + flag: '๐Ÿ‡น๐Ÿ‡จ', + code: 'TC', + name: 'Turks and Caicos Islands', + }, + { + dialCode: '+1664', + flag: '๐Ÿ‡ฒ๐Ÿ‡ธ', + code: 'MS', + name: 'Montserrat', + }, + { + dialCode: '+1670', + flag: '๐Ÿ‡ฒ๐Ÿ‡ต', + code: 'MP', + name: 'Northern Mariana Islands', + }, + { + dialCode: '+1671', + flag: '๐Ÿ‡ฌ๐Ÿ‡บ', + code: 'GU', + name: 'Guam', + }, + { dialCode: '+1684', flag: '๐Ÿ‡ฆ๐Ÿ‡ธ', code: 'AS', name: 'American Samoa' }, + { + dialCode: '+1758', + flag: '๐Ÿ‡ฑ๐Ÿ‡จ', + code: 'LC', + name: 'Saint Lucia', + }, + { dialCode: '+1767', flag: '๐Ÿ‡ฉ๐Ÿ‡ฒ', code: 'DM', name: 'Dominica' }, + { + dialCode: '+1784', + flag: '๐Ÿ‡ป๐Ÿ‡จ', + code: 'VC', + name: 'Saint Vincent and the Grenadines', + }, + { dialCode: '+1849', flag: '๐Ÿ‡ฉ๐Ÿ‡ด', code: 'DO', name: 'Dominican Republic' }, + { + dialCode: '+1868', + flag: '๐Ÿ‡น๐Ÿ‡น', + code: 'TT', + name: 'Trinidad and Tobago', + }, + { dialCode: '+1869', flag: '๐Ÿ‡ฐ๐Ÿ‡ณ', code: 'KN', name: 'Saint Kitts and Nevis' }, + { + dialCode: '+1876', + flag: '๐Ÿ‡ฏ๐Ÿ‡ฒ', + code: 'JM', + name: 'Jamaica', + }, + { dialCode: '+1939', flag: '๐Ÿ‡ต๐Ÿ‡ท', code: 'PR', name: 'Puerto Rico' }, + { + dialCode: '+20', + flag: '๐Ÿ‡ช๐Ÿ‡ฌ', + code: 'EG', + name: 'Egypt', + }, + { dialCode: '+211', flag: '๐Ÿ‡ธ๐Ÿ‡ธ', code: 'SS', name: 'South Sudan' }, + { + dialCode: '+212', + flag: '๐Ÿ‡ฒ๐Ÿ‡ฆ', + code: 'MA', + name: 'Morocco', + }, + { dialCode: '+213', flag: '๐Ÿ‡ฉ๐Ÿ‡ฟ', code: 'DZ', name: 'Algeria' }, + { + dialCode: '+216', + flag: '๐Ÿ‡น๐Ÿ‡ณ', + code: 'TN', + name: 'Tunisia', + }, + { dialCode: '+218', flag: '๐Ÿ‡ฑ๐Ÿ‡พ', code: 'LY', name: 'Libyan Arab Jamahiriya' }, + { + dialCode: '+220', + flag: '๐Ÿ‡ฌ๐Ÿ‡ฒ', + code: 'GM', + name: 'Gambia', + }, + { dialCode: '+221', flag: '๐Ÿ‡ธ๐Ÿ‡ณ', code: 'SN', name: 'Senegal' }, + { + dialCode: '+222', + flag: '๐Ÿ‡ฒ๐Ÿ‡ท', + code: 'MR', + name: 'Mauritania', + }, + { dialCode: '+223', flag: '๐Ÿ‡ฒ๐Ÿ‡ฑ', code: 'ML', name: 'Mali' }, + { + dialCode: '+224', + flag: '๐Ÿ‡ฌ๐Ÿ‡ณ', + code: 'GN', + name: 'Guinea', + }, + { dialCode: '+225', flag: '๐Ÿ‡จ๐Ÿ‡ฎ', code: 'CI', name: "Cote d'Ivoire" }, + { + dialCode: '+226', + flag: '๐Ÿ‡ง๐Ÿ‡ซ', + code: 'BF', + name: 'Burkina Faso', + }, + { dialCode: '+227', flag: '๐Ÿ‡ณ๐Ÿ‡ช', code: 'NE', name: 'Niger' }, + { + dialCode: '+228', + flag: '๐Ÿ‡น๐Ÿ‡ฌ', + code: 'TG', + name: 'Togo', + }, + { dialCode: '+229', flag: '๐Ÿ‡ง๐Ÿ‡ฏ', code: 'BJ', name: 'Benin' }, + { + dialCode: '+230', + flag: '๐Ÿ‡ฒ๐Ÿ‡บ', + code: 'MU', + name: 'Mauritius', + }, + { dialCode: '+231', flag: '๐Ÿ‡ฑ๐Ÿ‡ท', code: 'LR', name: 'Liberia' }, + { + dialCode: '+232', + flag: '๐Ÿ‡ธ๐Ÿ‡ฑ', + code: 'SL', + name: 'Sierra Leone', + }, + { dialCode: '+233', flag: '๐Ÿ‡ฌ๐Ÿ‡ญ', code: 'GH', name: 'Ghana' }, + { + dialCode: '+234', + flag: '๐Ÿ‡ณ๐Ÿ‡ฌ', + code: 'NG', + name: 'Nigeria', + }, + { dialCode: '+235', flag: '๐Ÿ‡น๐Ÿ‡ฉ', code: 'TD', name: 'Chad' }, + { + dialCode: '+236', + flag: '๐Ÿ‡จ๐Ÿ‡ซ', + code: 'CF', + name: 'Central African Republic', + }, + { dialCode: '+237', flag: '๐Ÿ‡จ๐Ÿ‡ฒ', code: 'CM', name: 'Cameroon' }, + { + dialCode: '+238', + flag: '๐Ÿ‡จ๐Ÿ‡ป', + code: 'CV', + name: 'Cape Verde', + }, + { dialCode: '+239', flag: '๐Ÿ‡ธ๐Ÿ‡น', code: 'ST', name: 'Sao Tome and Principe' }, + { + dialCode: '+240', + flag: '๐Ÿ‡ฌ๐Ÿ‡ถ', + code: 'GQ', + name: 'Equatorial Guinea', + }, + { dialCode: '+241', flag: '๐Ÿ‡ฌ๐Ÿ‡ฆ', code: 'GA', name: 'Gabon' }, + { + dialCode: '+242', + flag: '๐Ÿ‡จ๐Ÿ‡ฌ', + code: 'CG', + name: 'Congo', + }, + { + dialCode: '+243', + flag: '๐Ÿ‡จ๐Ÿ‡ฉ', + code: 'CD', + name: 'Congo, The Democratic Republic of the Congo', + }, + { dialCode: '+244', flag: '๐Ÿ‡ฆ๐Ÿ‡ด', code: 'AO', name: 'Angola' }, + { + dialCode: '+245', + flag: '๐Ÿ‡ฌ๐Ÿ‡ผ', + code: 'GW', + name: 'Guinea-Bissau', + }, + { + dialCode: '+246', + flag: '๐Ÿ‡ฎ๐Ÿ‡ด', + code: 'IO', + name: 'British Indian Ocean Territory', + }, + { + dialCode: '+248', + flag: '๐Ÿ‡ธ๐Ÿ‡จ', + code: 'SC', + name: 'Seychelles', + }, + { dialCode: '+249', flag: '๐Ÿ‡ธ๐Ÿ‡ฉ', code: 'SD', name: 'Sudan' }, + { + dialCode: '+250', + flag: '๐Ÿ‡ท๐Ÿ‡ผ', + code: 'RW', + name: 'Rwanda', + }, + { dialCode: '+251', flag: '๐Ÿ‡ช๐Ÿ‡น', code: 'ET', name: 'Ethiopia' }, + { + dialCode: '+252', + flag: '๐Ÿ‡ธ๐Ÿ‡ด', + code: 'SO', + name: 'Somalia', + }, + { dialCode: '+253', flag: '๐Ÿ‡ฉ๐Ÿ‡ฏ', code: 'DJ', name: 'Djibouti' }, + { + dialCode: '+254', + flag: '๐Ÿ‡ฐ๐Ÿ‡ช', + code: 'KE', + name: 'Kenya', + }, + { + dialCode: '+255', + flag: '๐Ÿ‡น๐Ÿ‡ฟ', + code: 'TZ', + name: 'Tanzania, United Republic of Tanzania', + }, + { dialCode: '+256', flag: '๐Ÿ‡บ๐Ÿ‡ฌ', code: 'UG', name: 'Uganda' }, + { + dialCode: '+257', + flag: '๐Ÿ‡ง๐Ÿ‡ฎ', + code: 'BI', + name: 'Burundi', + }, + { dialCode: '+258', flag: '๐Ÿ‡ฒ๐Ÿ‡ฟ', code: 'MZ', name: 'Mozambique' }, + { + dialCode: '+260', + flag: '๐Ÿ‡ฟ๐Ÿ‡ฒ', + code: 'ZM', + name: 'Zambia', + }, + { dialCode: '+261', flag: '๐Ÿ‡ฒ๐Ÿ‡ฌ', code: 'MG', name: 'Madagascar' }, + { + dialCode: '+262', + flag: '๐Ÿ‡น๐Ÿ‡ซ', + code: 'TF', + name: 'French Southern Territories', + }, + { dialCode: '+262', flag: '๐Ÿ‡พ๐Ÿ‡น', code: 'YT', name: 'Mayotte' }, + { + dialCode: '+262', + flag: '๐Ÿ‡ท๐Ÿ‡ช', + code: 'RE', + name: 'Reunion', + }, + { dialCode: '+263', flag: '๐Ÿ‡ฟ๐Ÿ‡ผ', code: 'ZW', name: 'Zimbabwe' }, + { + dialCode: '+264', + flag: '๐Ÿ‡ณ๐Ÿ‡ฆ', + code: 'NA', + name: 'Namibia', + }, + { dialCode: '+265', flag: '๐Ÿ‡ฒ๐Ÿ‡ผ', code: 'MW', name: 'Malawi' }, + { + dialCode: '+266', + flag: '๐Ÿ‡ฑ๐Ÿ‡ธ', + code: 'LS', + name: 'Lesotho', + }, + { dialCode: '+267', flag: '๐Ÿ‡ง๐Ÿ‡ผ', code: 'BW', name: 'Botswana' }, + { + dialCode: '+268', + flag: '๐Ÿ‡ธ๐Ÿ‡ฟ', + code: 'SZ', + name: 'Swaziland', + }, + { dialCode: '+269', flag: '๐Ÿ‡ฐ๐Ÿ‡ฒ', code: 'KM', name: 'Comoros' }, + { + dialCode: '+27', + flag: '๐Ÿ‡ฟ๐Ÿ‡ฆ', + code: 'ZA', + name: 'South Africa', + }, + { + dialCode: '+290', + flag: '๐Ÿ‡ธ๐Ÿ‡ญ', + code: 'SH', + name: 'Saint Helena, Ascension and Tristan Da Cunha', + }, + { dialCode: '+291', flag: '๐Ÿ‡ช๐Ÿ‡ท', code: 'ER', name: 'Eritrea' }, + { + dialCode: '+297', + flag: '๐Ÿ‡ฆ๐Ÿ‡ผ', + code: 'AW', + name: 'Aruba', + }, + { dialCode: '+298', flag: '๐Ÿ‡ซ๐Ÿ‡ด', code: 'FO', name: 'Faroe Islands' }, + { + dialCode: '+299', + flag: '๐Ÿ‡ฌ๐Ÿ‡ฑ', + code: 'GL', + name: 'Greenland', + }, + { dialCode: '+30', flag: '๐Ÿ‡ฌ๐Ÿ‡ท', code: 'GR', name: 'Greece' }, + { + dialCode: '+31', + flag: '๐Ÿ‡ณ๐Ÿ‡ฑ', + code: 'NL', + name: 'Netherlands', + }, + { dialCode: '+32', flag: '๐Ÿ‡ง๐Ÿ‡ช', code: 'BE', name: 'Belgium' }, + { + dialCode: '+33', + flag: '๐Ÿ‡ซ๐Ÿ‡ท', + code: 'FR', + name: 'France', + }, + { dialCode: '+34', flag: '๐Ÿ‡ช๐Ÿ‡ธ', code: 'ES', name: 'Spain' }, + { + dialCode: '+345', + flag: '๐Ÿ‡ฐ๐Ÿ‡พ', + code: 'KY', + name: 'Cayman Islands', + }, + { dialCode: '+350', flag: '๐Ÿ‡ฌ๐Ÿ‡ฎ', code: 'GI', name: 'Gibraltar' }, + { + dialCode: '+351', + flag: '๐Ÿ‡ต๐Ÿ‡น', + code: 'PT', + name: 'Portugal', + }, + { dialCode: '+352', flag: '๐Ÿ‡ฑ๐Ÿ‡บ', code: 'LU', name: 'Luxembourg' }, + { + dialCode: '+353', + flag: '๐Ÿ‡ฎ๐Ÿ‡ช', + code: 'IE', + name: 'Ireland', + }, + { dialCode: '+354', flag: '๐Ÿ‡ฎ๐Ÿ‡ธ', code: 'IS', name: 'Iceland' }, + { + dialCode: '+355', + flag: '๐Ÿ‡ฆ๐Ÿ‡ฑ', + code: 'AL', + name: 'Albania', + }, + { dialCode: '+356', flag: '๐Ÿ‡ฒ๐Ÿ‡น', code: 'MT', name: 'Malta' }, + { + dialCode: '+357', + flag: '๐Ÿ‡จ๐Ÿ‡พ', + code: 'CY', + name: 'Cyprus', + }, + { dialCode: '+358', flag: '๐Ÿ‡ฆ๐Ÿ‡ฝ', code: 'AX', name: 'ร…land Islands' }, + { + dialCode: '+358', + flag: '๐Ÿ‡ซ๐Ÿ‡ฎ', + code: 'FI', + name: 'Finland', + }, + { dialCode: '+359', flag: '๐Ÿ‡ง๐Ÿ‡ฌ', code: 'BG', name: 'Bulgaria' }, + { + dialCode: '+36', + flag: '๐Ÿ‡ญ๐Ÿ‡บ', + code: 'HU', + name: 'Hungary', + }, + { dialCode: '+370', flag: '๐Ÿ‡ฑ๐Ÿ‡น', code: 'LT', name: 'Lithuania' }, + { + dialCode: '+371', + flag: '๐Ÿ‡ฑ๐Ÿ‡ป', + code: 'LV', + name: 'Latvia', + }, + { dialCode: '+372', flag: '๐Ÿ‡ช๐Ÿ‡ช', code: 'EE', name: 'Estonia' }, + { + dialCode: '+373', + flag: '๐Ÿ‡ฒ๐Ÿ‡ฉ', + code: 'MD', + name: 'Moldova', + }, + { dialCode: '+374', flag: '๐Ÿ‡ฆ๐Ÿ‡ฒ', code: 'AM', name: 'Armenia' }, + { + dialCode: '+375', + flag: '๐Ÿ‡ง๐Ÿ‡พ', + code: 'BY', + name: 'Belarus', + }, + { dialCode: '+376', flag: '๐Ÿ‡ฆ๐Ÿ‡ฉ', code: 'AD', name: 'Andorra' }, + { + dialCode: '+377', + flag: '๐Ÿ‡ฒ๐Ÿ‡จ', + code: 'MC', + name: 'Monaco', + }, + { dialCode: '+378', flag: '๐Ÿ‡ธ๐Ÿ‡ฒ', code: 'SM', name: 'San Marino' }, + { + dialCode: '+379', + flag: '๐Ÿ‡ป๐Ÿ‡ฆ', + code: 'VA', + name: 'Holy See (Vatican City State)', + }, + { dialCode: '+380', flag: '๐Ÿ‡บ๐Ÿ‡ฆ', code: 'UA', name: 'Ukraine' }, + { + dialCode: '+381', + flag: '๐Ÿ‡ท๐Ÿ‡ธ', + code: 'RS', + name: 'Serbia', + }, + { dialCode: '+382', flag: '๐Ÿ‡ฒ๐Ÿ‡ช', code: 'ME', name: 'Montenegro' }, + { + dialCode: '+383', + flag: '๐Ÿ‡ฝ๐Ÿ‡ฐ', + code: 'XK', + name: 'Kosovo', + }, + { dialCode: '+385', flag: '๐Ÿ‡ญ๐Ÿ‡ท', code: 'HR', name: 'Croatia' }, + { + dialCode: '+386', + flag: '๐Ÿ‡ธ๐Ÿ‡ฎ', + code: 'SI', + name: 'Slovenia', + }, + { dialCode: '+387', flag: '๐Ÿ‡ง๐Ÿ‡ฆ', code: 'BA', name: 'Bosnia and Herzegovina' }, + { + dialCode: '+389', + flag: '๐Ÿ‡ฒ๐Ÿ‡ฐ', + code: 'MK', + name: 'Macedonia', + }, + { dialCode: '+39', flag: '๐Ÿ‡ฎ๐Ÿ‡น', code: 'IT', name: 'Italy' }, + { + dialCode: '+40', + flag: '๐Ÿ‡ท๐Ÿ‡ด', + code: 'RO', + name: 'Romania', + }, + { dialCode: '+41', flag: '๐Ÿ‡จ๐Ÿ‡ญ', code: 'CH', name: 'Switzerland' }, + { + dialCode: '+420', + flag: '๐Ÿ‡จ๐Ÿ‡ฟ', + code: 'CZ', + name: 'Czech Republic', + }, + { dialCode: '+421', flag: '๐Ÿ‡ธ๐Ÿ‡ฐ', code: 'SK', name: 'Slovakia' }, + { + dialCode: '+423', + flag: '๐Ÿ‡ฑ๐Ÿ‡ฎ', + code: 'LI', + name: 'Liechtenstein', + }, + { dialCode: '+43', flag: '๐Ÿ‡ฆ๐Ÿ‡น', code: 'AT', name: 'Austria' }, + { + dialCode: '+44', + flag: '๐Ÿ‡ฌ๐Ÿ‡ฌ', + code: 'GG', + name: 'Guernsey', + }, + { dialCode: '+44', flag: '๐Ÿ‡ฎ๐Ÿ‡ฒ', code: 'IM', name: 'Isle of Man' }, + { + dialCode: '+44', + flag: '๐Ÿ‡ฏ๐Ÿ‡ช', + code: 'JE', + name: 'Jersey', + }, + { dialCode: '+44', flag: '๐Ÿ‡ฌ๐Ÿ‡ง', code: 'GB', name: 'United Kingdom' }, + { + dialCode: '+45', + flag: '๐Ÿ‡ฉ๐Ÿ‡ฐ', + code: 'DK', + name: 'Denmark', + }, + { dialCode: '+46', flag: '๐Ÿ‡ธ๐Ÿ‡ช', code: 'SE', name: 'Sweden' }, + { + dialCode: '+47', + flag: '๐Ÿ‡ง๐Ÿ‡ป', + code: 'BV', + name: 'Bouvet Island', + }, + { dialCode: '+47', flag: '๐Ÿ‡ณ๐Ÿ‡ด', code: 'NO', name: 'Norway' }, + { + dialCode: '+47', + flag: '๐Ÿ‡ธ๐Ÿ‡ฏ', + code: 'SJ', + name: 'Svalbard and Jan Mayen', + }, + { dialCode: '+48', flag: '๐Ÿ‡ต๐Ÿ‡ฑ', code: 'PL', name: 'Poland' }, + { + dialCode: '+49', + flag: '๐Ÿ‡ฉ๐Ÿ‡ช', + code: 'DE', + name: 'Germany', + }, + { + dialCode: '+500', + flag: '๐Ÿ‡ซ๐Ÿ‡ฐ', + code: 'FK', + name: 'Falkland Islands (Malvinas)', + }, + { + dialCode: '+500', + flag: '๐Ÿ‡ฌ๐Ÿ‡ธ', + code: 'GS', + name: 'South Georgia and the South Sandwich Islands', + }, + { dialCode: '+501', flag: '๐Ÿ‡ง๐Ÿ‡ฟ', code: 'BZ', name: 'Belize' }, + { + dialCode: '+502', + flag: '๐Ÿ‡ฌ๐Ÿ‡น', + code: 'GT', + name: 'Guatemala', + }, + { dialCode: '+503', flag: '๐Ÿ‡ธ๐Ÿ‡ป', code: 'SV', name: 'El Salvador' }, + { + dialCode: '+504', + flag: '๐Ÿ‡ญ๐Ÿ‡ณ', + code: 'HN', + name: 'Honduras', + }, + { dialCode: '+505', flag: '๐Ÿ‡ณ๐Ÿ‡ฎ', code: 'NI', name: 'Nicaragua' }, + { + dialCode: '+506', + flag: '๐Ÿ‡จ๐Ÿ‡ท', + code: 'CR', + name: 'Costa Rica', + }, + { dialCode: '+507', flag: '๐Ÿ‡ต๐Ÿ‡ฆ', code: 'PA', name: 'Panama' }, + { + dialCode: '+508', + flag: '๐Ÿ‡ต๐Ÿ‡ฒ', + code: 'PM', + name: 'Saint Pierre and Miquelon', + }, + { dialCode: '+509', flag: '๐Ÿ‡ญ๐Ÿ‡น', code: 'HT', name: 'Haiti' }, + { + dialCode: '+51', + flag: '๐Ÿ‡ต๐Ÿ‡ช', + code: 'PE', + name: 'Peru', + }, + { dialCode: '+52', flag: '๐Ÿ‡ฒ๐Ÿ‡ฝ', code: 'MX', name: 'Mexico' }, + { + dialCode: '+53', + flag: '๐Ÿ‡จ๐Ÿ‡บ', + code: 'CU', + name: 'Cuba', + }, + { dialCode: '+54', flag: '๐Ÿ‡ฆ๐Ÿ‡ท', code: 'AR', name: 'Argentina' }, + { + dialCode: '+55', + flag: '๐Ÿ‡ง๐Ÿ‡ท', + code: 'BR', + name: 'Brazil', + }, + { dialCode: '+56', flag: '๐Ÿ‡จ๐Ÿ‡ฑ', code: 'CL', name: 'Chile' }, + { + dialCode: '+57', + flag: '๐Ÿ‡จ๐Ÿ‡ด', + code: 'CO', + name: 'Colombia', + }, + { + dialCode: '+58', + flag: '๐Ÿ‡ป๐Ÿ‡ช', + code: 'VE', + name: 'Venezuela, Bolivarian Republic of Venezuela', + }, + { dialCode: '+590', flag: '๐Ÿ‡ฌ๐Ÿ‡ต', code: 'GP', name: 'Guadeloupe' }, + { + dialCode: '+590', + flag: '๐Ÿ‡ง๐Ÿ‡ฑ', + code: 'BL', + name: 'Saint Barthelemy', + }, + { dialCode: '+590', flag: '๐Ÿ‡ฒ๐Ÿ‡ซ', code: 'MF', name: 'Saint Martin' }, + { + dialCode: '+591', + flag: '๐Ÿ‡ง๐Ÿ‡ด', + code: 'BO', + name: 'Bolivia, Plurinational State of bolivia', + }, + { dialCode: '+592', flag: '๐Ÿ‡ฌ๐Ÿ‡พ', code: 'GY', name: 'Guyana' }, + { + dialCode: '+593', + flag: '๐Ÿ‡ช๐Ÿ‡จ', + code: 'EC', + name: 'Ecuador', + }, + { dialCode: '+594', flag: '๐Ÿ‡ฌ๐Ÿ‡ซ', code: 'GF', name: 'French Guiana' }, + { + dialCode: '+595', + flag: '๐Ÿ‡ต๐Ÿ‡พ', + code: 'PY', + name: 'Paraguay', + }, + { dialCode: '+596', flag: '๐Ÿ‡ฒ๐Ÿ‡ถ', code: 'MQ', name: 'Martinique' }, + { + dialCode: '+597', + flag: '๐Ÿ‡ธ๐Ÿ‡ท', + code: 'SR', + name: 'Suriname', + }, + { dialCode: '+598', flag: '๐Ÿ‡บ๐Ÿ‡พ', code: 'UY', name: 'Uruguay' }, + { + dialCode: '+599', + flag: '', + code: 'AN', + name: 'Netherlands Antilles', + }, + { dialCode: '+60', flag: '๐Ÿ‡ฒ๐Ÿ‡พ', code: 'MY', name: 'Malaysia' }, + { + dialCode: '+61', + flag: '๐Ÿ‡ฆ๐Ÿ‡บ', + code: 'AU', + name: 'Australia', + }, + { dialCode: '+61', flag: '๐Ÿ‡จ๐Ÿ‡ฝ', code: 'CX', name: 'Christmas Island' }, + { + dialCode: '+61', + flag: '๐Ÿ‡จ๐Ÿ‡จ', + code: 'CC', + name: 'Cocos (Keeling) Islands', + }, + { dialCode: '+62', flag: '๐Ÿ‡ฎ๐Ÿ‡ฉ', code: 'ID', name: 'Indonesia' }, + { + dialCode: '+63', + flag: '๐Ÿ‡ต๐Ÿ‡ญ', + code: 'PH', + name: 'Philippines', + }, + { dialCode: '+64', flag: '๐Ÿ‡ณ๐Ÿ‡ฟ', code: 'NZ', name: 'New Zealand' }, + { + dialCode: '+64', + flag: '๐Ÿ‡ต๐Ÿ‡ณ', + code: 'PN', + name: 'Pitcairn', + }, + { dialCode: '+65', flag: '๐Ÿ‡ธ๐Ÿ‡ฌ', code: 'SG', name: 'Singapore' }, + { + dialCode: '+66', + flag: '๐Ÿ‡น๐Ÿ‡ญ', + code: 'TH', + name: 'Thailand', + }, + { dialCode: '+670', flag: '๐Ÿ‡น๐Ÿ‡ฑ', code: 'TL', name: 'Timor-Leste' }, + { + dialCode: '+672', + flag: '๐Ÿ‡ฆ๐Ÿ‡ถ', + code: 'AQ', + name: 'Antarctica', + }, + { + dialCode: '+672', + flag: '๐Ÿ‡ญ๐Ÿ‡ฒ', + code: 'HM', + name: 'Heard Island and Mcdonald Islands', + }, + { dialCode: '+672', flag: '๐Ÿ‡ณ๐Ÿ‡ซ', code: 'NF', name: 'Norfolk Island' }, + { + dialCode: '+673', + flag: '๐Ÿ‡ง๐Ÿ‡ณ', + code: 'BN', + name: 'Brunei Darussalam', + }, + { dialCode: '+674', flag: '๐Ÿ‡ณ๐Ÿ‡ท', code: 'NR', name: 'Nauru' }, + { + dialCode: '+675', + flag: '๐Ÿ‡ต๐Ÿ‡ฌ', + code: 'PG', + name: 'Papua New Guinea', + }, + { dialCode: '+676', flag: '๐Ÿ‡น๐Ÿ‡ด', code: 'TO', name: 'Tonga' }, + { + dialCode: '+677', + flag: '๐Ÿ‡ธ๐Ÿ‡ง', + code: 'SB', + name: 'Solomon Islands', + }, + { dialCode: '+678', flag: '๐Ÿ‡ป๐Ÿ‡บ', code: 'VU', name: 'Vanuatu' }, + { + dialCode: '+679', + flag: '๐Ÿ‡ซ๐Ÿ‡ฏ', + code: 'FJ', + name: 'Fiji', + }, + { dialCode: '+680', flag: '๐Ÿ‡ต๐Ÿ‡ผ', code: 'PW', name: 'Palau' }, + { + dialCode: '+681', + flag: '๐Ÿ‡ผ๐Ÿ‡ซ', + code: 'WF', + name: 'Wallis and Futuna', + }, + { dialCode: '+682', flag: '๐Ÿ‡จ๐Ÿ‡ฐ', code: 'CK', name: 'Cook Islands' }, + { + dialCode: '+683', + flag: '๐Ÿ‡ณ๐Ÿ‡บ', + code: 'NU', + name: 'Niue', + }, + { dialCode: '+685', flag: '๐Ÿ‡ผ๐Ÿ‡ธ', code: 'WS', name: 'Samoa' }, + { + dialCode: '+686', + flag: '๐Ÿ‡ฐ๐Ÿ‡ฎ', + code: 'KI', + name: 'Kiribati', + }, + { dialCode: '+687', flag: '๐Ÿ‡ณ๐Ÿ‡จ', code: 'NC', name: 'New Caledonia' }, + { + dialCode: '+688', + flag: '๐Ÿ‡น๐Ÿ‡ป', + code: 'TV', + name: 'Tuvalu', + }, + { dialCode: '+689', flag: '๐Ÿ‡ต๐Ÿ‡ซ', code: 'PF', name: 'French Polynesia' }, + { + dialCode: '+690', + flag: '๐Ÿ‡น๐Ÿ‡ฐ', + code: 'TK', + name: 'Tokelau', + }, + { + dialCode: '+691', + flag: '๐Ÿ‡ซ๐Ÿ‡ฒ', + code: 'FM', + name: 'Micronesia, Federated States of Micronesia', + }, + { dialCode: '+692', flag: '๐Ÿ‡ฒ๐Ÿ‡ญ', code: 'MH', name: 'Marshall Islands' }, + { + dialCode: '+7', + flag: '๐Ÿ‡ฐ๐Ÿ‡ฟ', + code: 'KZ', + name: 'Kazakhstan', + }, + { dialCode: '+7', flag: '๐Ÿ‡ท๐Ÿ‡บ', code: 'RU', name: 'Russia' }, + { + dialCode: '+81', + flag: '๐Ÿ‡ฏ๐Ÿ‡ต', + code: 'JP', + name: 'Japan', + }, + { + dialCode: '+82', + flag: '๐Ÿ‡ฐ๐Ÿ‡ท', + code: 'KR', + name: 'Korea, Republic of South Korea', + }, + { + dialCode: '+84', + flag: '๐Ÿ‡ป๐Ÿ‡ณ', + code: 'VN', + name: 'Vietnam', + }, + { + dialCode: '+850', + flag: '๐Ÿ‡ฐ๐Ÿ‡ต', + code: 'KP', + name: "Korea, Democratic People's Republic of Korea", + }, + { dialCode: '+852', flag: '๐Ÿ‡ญ๐Ÿ‡ฐ', code: 'HK', name: 'Hong Kong' }, + { + dialCode: '+853', + flag: '๐Ÿ‡ฒ๐Ÿ‡ด', + code: 'MO', + name: 'Macao', + }, + { dialCode: '+855', flag: '๐Ÿ‡ฐ๐Ÿ‡ญ', code: 'KH', name: 'Cambodia' }, + { + dialCode: '+856', + flag: '๐Ÿ‡ฑ๐Ÿ‡ฆ', + code: 'LA', + name: 'Laos', + }, + { dialCode: '+86', flag: '๐Ÿ‡จ๐Ÿ‡ณ', code: 'CN', name: 'China' }, + { + dialCode: '+880', + flag: '๐Ÿ‡ง๐Ÿ‡ฉ', + code: 'BD', + name: 'Bangladesh', + }, + { dialCode: '+886', flag: '๐Ÿ‡น๐Ÿ‡ผ', code: 'TW', name: 'Taiwan' }, + { + dialCode: '+90', + flag: '๐Ÿ‡น๐Ÿ‡ท', + code: 'TR', + name: 'Turkey', + }, + { dialCode: '+91', flag: '๐Ÿ‡ฎ๐Ÿ‡ณ', code: 'IN', name: 'India' }, + { + dialCode: '+92', + flag: '๐Ÿ‡ต๐Ÿ‡ฐ', + code: 'PK', + name: 'Pakistan', + }, + { dialCode: '+93', flag: '๐Ÿ‡ฆ๐Ÿ‡ซ', code: 'AF', name: 'Afghanistan' }, + { + dialCode: '+94', + flag: '๐Ÿ‡ฑ๐Ÿ‡ฐ', + code: 'LK', + name: 'Sri Lanka', + }, + { dialCode: '+95', flag: '๐Ÿ‡ฒ๐Ÿ‡ฒ', code: 'MM', name: 'Myanmar' }, + { + dialCode: '+960', + flag: '๐Ÿ‡ฒ๐Ÿ‡ป', + code: 'MV', + name: 'Maldives', + }, + { dialCode: '+961', flag: '๐Ÿ‡ฑ๐Ÿ‡ง', code: 'LB', name: 'Lebanon' }, + { + dialCode: '+962', + flag: '๐Ÿ‡ฏ๐Ÿ‡ด', + code: 'JO', + name: 'Jordan', + }, + { dialCode: '+963', flag: '๐Ÿ‡ธ๐Ÿ‡พ', code: 'SY', name: 'Syrian Arab Republic' }, + { + dialCode: '+964', + flag: '๐Ÿ‡ฎ๐Ÿ‡ถ', + code: 'IQ', + name: 'Iraq', + }, + { dialCode: '+965', flag: '๐Ÿ‡ฐ๐Ÿ‡ผ', code: 'KW', name: 'Kuwait' }, + { + dialCode: '+966', + flag: '๐Ÿ‡ธ๐Ÿ‡ฆ', + code: 'SA', + name: 'Saudi Arabia', + }, + { dialCode: '+967', flag: '๐Ÿ‡พ๐Ÿ‡ช', code: 'YE', name: 'Yemen' }, + { + dialCode: '+968', + flag: '๐Ÿ‡ด๐Ÿ‡ฒ', + code: 'OM', + name: 'Oman', + }, + { + dialCode: '+970', + flag: '๐Ÿ‡ต๐Ÿ‡ธ', + code: 'PS', + name: 'Palestinian Territory, Occupied', + }, + { dialCode: '+971', flag: '๐Ÿ‡ฆ๐Ÿ‡ช', code: 'AE', name: 'United Arab Emirates' }, + { + dialCode: '+972', + flag: '๐Ÿ‡ฎ๐Ÿ‡ฑ', + code: 'IL', + name: 'Israel', + }, + { dialCode: '+973', flag: '๐Ÿ‡ง๐Ÿ‡ญ', code: 'BH', name: 'Bahrain' }, + { + dialCode: '+974', + flag: '๐Ÿ‡ถ๐Ÿ‡ฆ', + code: 'QA', + name: 'Qatar', + }, + { dialCode: '+975', flag: '๐Ÿ‡ง๐Ÿ‡น', code: 'BT', name: 'Bhutan' }, + { + dialCode: '+976', + flag: '๐Ÿ‡ฒ๐Ÿ‡ณ', + code: 'MN', + name: 'Mongolia', + }, + { dialCode: '+977', flag: '๐Ÿ‡ณ๐Ÿ‡ต', code: 'NP', name: 'Nepal' }, + { + dialCode: '+98', + flag: '๐Ÿ‡ฎ๐Ÿ‡ท', + code: 'IR', + name: 'Iran, Islamic Republic of Persian Gulf', + }, + { dialCode: '+992', flag: '๐Ÿ‡น๐Ÿ‡ฏ', code: 'TJ', name: 'Tajikistan' }, + { + dialCode: '+993', + flag: '๐Ÿ‡น๐Ÿ‡ฒ', + code: 'TM', + name: 'Turkmenistan', + }, + { dialCode: '+994', flag: '๐Ÿ‡ฆ๐Ÿ‡ฟ', code: 'AZ', name: 'Azerbaijan' }, + { + dialCode: '+995', + flag: '๐Ÿ‡ฌ๐Ÿ‡ช', + code: 'GE', + name: 'Georgia', + }, + { dialCode: '+996', flag: '๐Ÿ‡ฐ๐Ÿ‡ฌ', code: 'KG', name: 'Kyrgyzstan' }, + { + dialCode: '+998', + flag: '๐Ÿ‡บ๐Ÿ‡ฟ', + code: 'UZ', + name: 'Uzbekistan', + }, +];