Phone Input

国選択とバリデーションを備えた電話番号入力コンポーネント。

react-phone-number-input を利用して構築した、国セレクター付きの電話番号入力です。

"use client"

import * as React from "react"

インストール

pnpm dlx shadcn@latest add https://ui.tyap.me/r/styles/base/phone-input.json

使い方

import { PhoneInput } from "@/components/ui/phone-input"
const [value, setValue] = useState("")
 
return (
  <PhoneInput
    placeholder="Enter phone number"
    defaultCountry="US"
    value={value}
    onChange={setValue}
  />
)

value は E.164 形式(例: +14155552671)の文字列です。

サンプル

サイズ

variant"sm" / "default" / "lg" を切り替えられます。

"use client"

import * as React from "react"

多言語対応

国名は labelsreact-phone-number-input/locale/*.json)で、検索プレースホルダーや「該当なし」表示は messages でローカライズできます。アラビア語では dir="rtl" でレイアウトが反転します。

"use client"

import * as React from "react"
import labels from "react-phone-number-input/locale/ja.json"
 
<PhoneInput
  labels={labels}
  defaultCountry="JP"
  placeholder="電話番号を入力"
  messages={{ searchPlaceholder: "国を検索…", noResults: "該当する国がありません。" }}
  value={value}
  onChange={setValue}
/>

API リファレンス

PhoneInput

電話番号を入力し、国を選択するためのメインコンポーネント。

PropTypeDefaultDescription
valuestring-現在の電話番号(E.164 形式)。
onChange(value: string) => void-値が変化したときに呼ばれるコールバック。
variant"sm" | "default" | "lg""default"入力と国セレクターの縦サイズ。
defaultCountryCountry-値が未指定のときに選択される国。
placeholderstring-電話番号入力のプレースホルダー。
messagesPartial<PhoneInputMessages>-国セレクターの UI 文言(検索・該当なし)。
popupClassNamestring-国選択ドロップダウンへの追加クラス。
disabledbooleanfalse入力と国セレクターを無効化するか。
classNamestring-ルートコンテナへの追加クラス。

PhoneInputMessages

国セレクターのローカライズ文言。

PropertyTypeDescription
searchPlaceholderstring国検索ボックスのプレースホルダー。
noResultsstring検索結果が無いときの表示。

External Props

このコンポーネントは react-phone-number-input のすべての props も受け付けます(labels による国名のローカライズなど)。