|
|
/** Priority1 电话国家区号 — 按英文国名 A–Z 排序,供模拟界面搜索选择 */
|
|
|
|
|
|
export type PhoneCountry = {
|
|
|
code: string;
|
|
|
name: string;
|
|
|
dial: string;
|
|
|
};
|
|
|
|
|
|
const RAW: PhoneCountry[] = [
|
|
|
{ code: "AF", name: "Afghanistan", dial: "+93" },
|
|
|
{ code: "AL", name: "Albania", dial: "+355" },
|
|
|
{ code: "DZ", name: "Algeria", dial: "+213" },
|
|
|
{ code: "AR", name: "Argentina", dial: "+54" },
|
|
|
{ code: "AU", name: "Australia", dial: "+61" },
|
|
|
{ code: "AT", name: "Austria", dial: "+43" },
|
|
|
{ code: "BH", name: "Bahrain", dial: "+973" },
|
|
|
{ code: "BD", name: "Bangladesh", dial: "+880" },
|
|
|
{ code: "BE", name: "Belgium", dial: "+32" },
|
|
|
{ code: "BR", name: "Brazil", dial: "+55" },
|
|
|
{ code: "BN", name: "Brunei", dial: "+673" },
|
|
|
{ code: "KH", name: "Cambodia", dial: "+855" },
|
|
|
{ code: "CA", name: "Canada", dial: "+1" },
|
|
|
{ code: "CL", name: "Chile", dial: "+56" },
|
|
|
{ code: "CN", name: "China", dial: "+86" },
|
|
|
{ code: "CO", name: "Colombia", dial: "+57" },
|
|
|
{ code: "CR", name: "Costa Rica", dial: "+506" },
|
|
|
{ code: "HR", name: "Croatia", dial: "+385" },
|
|
|
{ code: "CZ", name: "Czech Republic", dial: "+420" },
|
|
|
{ code: "DK", name: "Denmark", dial: "+45" },
|
|
|
{ code: "DO", name: "Dominican Republic", dial: "+1" },
|
|
|
{ code: "EC", name: "Ecuador", dial: "+593" },
|
|
|
{ code: "EG", name: "Egypt", dial: "+20" },
|
|
|
{ code: "EE", name: "Estonia", dial: "+372" },
|
|
|
{ code: "FI", name: "Finland", dial: "+358" },
|
|
|
{ code: "FR", name: "France", dial: "+33" },
|
|
|
{ code: "DE", name: "Germany", dial: "+49" },
|
|
|
{ code: "GR", name: "Greece", dial: "+30" },
|
|
|
{ code: "HK", name: "Hong Kong", dial: "+852" },
|
|
|
{ code: "HU", name: "Hungary", dial: "+36" },
|
|
|
{ code: "IS", name: "Iceland", dial: "+354" },
|
|
|
{ code: "IN", name: "India", dial: "+91" },
|
|
|
{ code: "ID", name: "Indonesia", dial: "+62" },
|
|
|
{ code: "IE", name: "Ireland", dial: "+353" },
|
|
|
{ code: "IL", name: "Israel", dial: "+972" },
|
|
|
{ code: "IT", name: "Italy", dial: "+39" },
|
|
|
{ code: "JP", name: "Japan", dial: "+81" },
|
|
|
{ code: "JO", name: "Jordan", dial: "+962" },
|
|
|
{ code: "KE", name: "Kenya", dial: "+254" },
|
|
|
{ code: "KW", name: "Kuwait", dial: "+965" },
|
|
|
{ code: "LV", name: "Latvia", dial: "+371" },
|
|
|
{ code: "LB", name: "Lebanon", dial: "+961" },
|
|
|
{ code: "LT", name: "Lithuania", dial: "+370" },
|
|
|
{ code: "LU", name: "Luxembourg", dial: "+352" },
|
|
|
{ code: "MY", name: "Malaysia", dial: "+60" },
|
|
|
{ code: "MX", name: "Mexico", dial: "+52" },
|
|
|
{ code: "MA", name: "Morocco", dial: "+212" },
|
|
|
{ code: "NL", name: "Netherlands", dial: "+31" },
|
|
|
{ code: "NZ", name: "New Zealand", dial: "+64" },
|
|
|
{ code: "NG", name: "Nigeria", dial: "+234" },
|
|
|
{ code: "NO", name: "Norway", dial: "+47" },
|
|
|
{ code: "OM", name: "Oman", dial: "+968" },
|
|
|
{ code: "PK", name: "Pakistan", dial: "+92" },
|
|
|
{ code: "PA", name: "Panama", dial: "+507" },
|
|
|
{ code: "PE", name: "Peru", dial: "+51" },
|
|
|
{ code: "PH", name: "Philippines", dial: "+63" },
|
|
|
{ code: "PL", name: "Poland", dial: "+48" },
|
|
|
{ code: "PT", name: "Portugal", dial: "+351" },
|
|
|
{ code: "QA", name: "Qatar", dial: "+974" },
|
|
|
{ code: "RO", name: "Romania", dial: "+40" },
|
|
|
{ code: "RU", name: "Russia", dial: "+7" },
|
|
|
{ code: "SA", name: "Saudi Arabia", dial: "+966" },
|
|
|
{ code: "SG", name: "Singapore", dial: "+65" },
|
|
|
{ code: "SK", name: "Slovakia", dial: "+421" },
|
|
|
{ code: "ZA", name: "South Africa", dial: "+27" },
|
|
|
{ code: "KR", name: "South Korea", dial: "+82" },
|
|
|
{ code: "ES", name: "Spain", dial: "+34" },
|
|
|
{ code: "LK", name: "Sri Lanka", dial: "+94" },
|
|
|
{ code: "SE", name: "Sweden", dial: "+46" },
|
|
|
{ code: "CH", name: "Switzerland", dial: "+41" },
|
|
|
{ code: "TW", name: "Taiwan", dial: "+886" },
|
|
|
{ code: "TH", name: "Thailand", dial: "+66" },
|
|
|
{ code: "TR", name: "Turkey", dial: "+90" },
|
|
|
{ code: "AE", name: "United Arab Emirates", dial: "+971" },
|
|
|
{ code: "GB", name: "United Kingdom", dial: "+44" },
|
|
|
{ code: "US", name: "United States", dial: "+1" },
|
|
|
{ code: "UA", name: "Ukraine", dial: "+380" },
|
|
|
{ code: "UY", name: "Uruguay", dial: "+598" },
|
|
|
{ code: "VE", name: "Venezuela", dial: "+58" },
|
|
|
{ code: "VN", name: "Vietnam", dial: "+84" },
|
|
|
];
|
|
|
|
|
|
export const P1_PHONE_COUNTRIES: PhoneCountry[] = [...RAW].sort((a, b) =>
|
|
|
a.name.localeCompare(b.name, "en"),
|
|
|
);
|
|
|
|
|
|
export function findPhoneCountry(code: string): PhoneCountry {
|
|
|
return (
|
|
|
P1_PHONE_COUNTRIES.find((c) => c.code === code) ??
|
|
|
P1_PHONE_COUNTRIES.find((c) => c.code === "US")!
|
|
|
);
|
|
|
}
|
|
|
|
|
|
export function filterPhoneCountries(query: string): PhoneCountry[] {
|
|
|
const q = query.trim().toLowerCase();
|
|
|
if (!q) return P1_PHONE_COUNTRIES;
|
|
|
return P1_PHONE_COUNTRIES.filter(
|
|
|
(c) =>
|
|
|
c.name.toLowerCase().includes(q) ||
|
|
|
c.code.toLowerCase().includes(q) ||
|
|
|
c.dial.includes(q.replace(/\s/g, "")),
|
|
|
);
|
|
|
}
|