import { useState } from "react"; interface CountryCode { code: string; label: string; } interface PhoneInputProps { countries: CountryCode[]; placeholder?: string; onChange?: (phoneNumber: string) => void; selectPosition?: "start" | "end"; // New prop for dropdown position } const PhoneInput: React.FC = ({ countries, placeholder = "+1 (555) 000-0000", onChange, selectPosition = "start", // Default position is 'start' }) => { const [selectedCountry, setSelectedCountry] = useState("US"); const [phoneNumber, setPhoneNumber] = useState("+1"); const countryCodes: Record = countries.reduce( (acc, { code, label }) => ({ ...acc, [code]: label }), {} ); const handleCountryChange = (e: React.ChangeEvent) => { const newCountry = e.target.value; setSelectedCountry(newCountry); setPhoneNumber(countryCodes[newCountry]); if (onChange) { onChange(countryCodes[newCountry]); } }; const handlePhoneNumberChange = (e: React.ChangeEvent) => { const newPhoneNumber = e.target.value; setPhoneNumber(newPhoneNumber); if (onChange) { onChange(newPhoneNumber); } }; return (
{/* Dropdown position: Start */} {selectPosition === "start" && (
)} {/* Input field */} {/* Dropdown position: End */} {selectPosition === "end" && (
)}
); }; export default PhoneInput;