Last active
January 12, 2025 19:17
-
-
Save ramziddin/8a7699ec635c74ea0cd903461d6cb23c to your computer and use it in GitHub Desktop.
Uzbekistan phone number input component
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { ComponentProps, useState } from "react" | |
| function PhoneInput(props: ComponentProps<"input">) { | |
| const [value, setValue] = useState<string>("+998") | |
| const formattedValue = value | |
| .replaceAll(" ", "") // remove whitespace | |
| .slice(4) // strip the country code | |
| .match(/(\d{1,2})?(\d{1,3})?(\d{1,2})?(\d{1,2})?/)! // split into multiple components | |
| .toSpliced(0, 1, "+998") // replace global match with country code | |
| .filter(Boolean) // remove empty components | |
| .join(" ") // convert array back to string joined by spaces | |
| return ( | |
| <input | |
| value={formattedValue} | |
| onChange={(event) => { | |
| setValue(event.target.value) | |
| }} | |
| inputMode="tel" | |
| {...props} | |
| /> | |
| ) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Make sure
compilerOptions.libcontains"ESNext"in yourtsconfig.json