インプット
インプットは、ユーザーがテキストを入力できるようにするコンポーネントです。フォーム、検索フィールドなどでユーザー入力を取得するために使用できます。
インストール
npx nextui-cli@latest add input
上記のコマンドは、個別インストール専用です。もし、 @nextui-org/react
がグローバルにインストールされている場合は、このステップを省略できます。
インポート
使用法
無効
読み取り専用
必須
インプットにisRequired
プロパティを渡すと、ラベルの最後にdanger
アスタリスクが表示され、インプットが必須になります。
サイズ
色
バリアント
半径
ラベル配置
labelPlacement
プロパティをinside
、outside
、またはoutside-left
に設定することで、ラベルの位置を変更できます。
注:
label
が渡されない場合、labelPlacement
プロパティはデフォルトでoutside
になります。
パスワード入力
type
プロパティを使用して、インプットタイプをpassword
に変更できます。
クリアボタン
インプットにisClearable
プロパティを渡すと、インプットの最後にクリアボタンが表示され、インプットに値がある場合に表示されます。
開始&終了コンテンツ
startContent
プロパティとendContent
プロパティを使用して、インプットの開始と終了にコンテンツを追加できます。
説明付き
description
プロパティを渡すことで、インプットに説明を追加できます。
エラーメッセージ付き
isInvalid
プロパティとerrorMessage
プロパティを組み合わせることで、無効なインプットを表示できます。errorMessage
は、isInvalid
がtrue
に設定されている場合にのみ表示されます。
例:regex
を使用したメールアドレスの検証
制御された入力
value
プロパティと onValueChange
プロパティを使用して、入力値を制御できます。
注意: NextUI
Input
は、onChange
のようなネイティブイベントもサポートしており、Formik や React Hook Form のようなフォームライブラリで役立ちます。
スロット
- base: 入力ラッパー。配置、位置、および全体的な外観を処理します。
- label: 入力のラベル。入力の上、内側、または左側に表示されます。
- mainWrapper: 位置が
outside
/outside-left
の場合にinputWrapper
をラップします。 - inputWrapper:
label
(内側にある場合) とinnerWrapper
をラップします。 - innerWrapper:
input
,startContent
, およびendContent
をラップします。 - input: 入力要素。
- clearButton: 入力の末尾にあるクリアボタン。
- helperWrapper:
description
とerrorMessage
をラップします。 - description: 入力の説明。
- errorMessage: 入力のエラーメッセージ。
カスタムスタイル
カスタムの Tailwind CSS クラスをコンポーネントのスロットに渡すことで、Input
コンポーネントをカスタマイズできます。
カスタム実装
入力をさらにカスタマイズする必要がある場合は、useInput
フックを使用して独自の実装を作成できます。
データ属性
Input
の base
要素には、次の属性があります。
- data-invalid: 入力が無効な場合。
isInvalid
プロパティに基づきます。 - data-required: 入力が必須の場合。
isRequired
プロパティに基づきます。 - data-readonly: 入力が読み取り専用の場合。
isReadOnly
プロパティに基づきます。 - data-hover: 入力がホバーされている場合。useHover に基づきます。
- data-focus: 入力がフォーカスされている場合。useFocusRing に基づきます。
- data-focus-within: 入力またはその子要素のいずれかがフォーカスされている場合。useFocusWithin に基づきます。
- data-focus-visible: キーボードで入力がフォーカスされている場合。useFocusRing に基づきます。
- data-disabled: 入力が無効になっている場合。
isDisabled
プロパティに基づきます。
アクセシビリティ
- ネイティブの
<input>
要素で構築されています。 - 視覚的なラベル付けと ARIA ラベル付けをサポートします。
- change、clipboard、composition、selection、input イベントをサポートします。
- 必須および無効な状態を ARIA を介して支援技術に公開します。
- ARIA を介して入力にリンクされた説明とエラーメッセージのヘルプテキストをサポートします。
API
Input Props
属性 | 型 | 説明 | デフォルト |
---|---|---|---|
children | ReactNode | 入力の内容。 | - |
variant | flat | bordered | faded | underlined | 入力のバリアント。 | flat |
color | default | primary | secondary | success | warning | danger | 入力の色。 | default |
size | sm | md | lg | 入力のサイズ。 | md |
radius | none | sm | md | lg | full | 入力の半径。 | - |
label | ReactNode | ラベルとして表示するコンテンツ。 | - |
value | string | 入力の現在の値(制御されたコンポーネント)。 | - |
defaultValue | string | 入力のデフォルト値(非制御コンポーネント)。 | - |
placeholder | string | 入力のプレースホルダー。 | - |
description | ReactNode | 入力の説明。選択すべき内容の具体的な要件などのヒントを提供します。 | - |
errorMessage | ReactNode | ((v: ValidationResult) => ReactNode) | 入力のエラーメッセージ。isInvalid が true に設定されている場合にのみ表示されます。 | - |
validate | (value: string) => ValidationError | true | null | undefined | コミット時(例:blur時)に入力値を検証し、無効な値に対してエラーメッセージを返します。validationBehavior が native に設定されている場合、検証エラーはフォーム送信時に表示されます。リアルタイム検証には、isInvalid プロパティを使用してください。 | - |
validationBehavior | native | aria | 値が欠落しているか無効な場合にフォーム送信を防ぐためにネイティブHTMLフォーム検証を使用するか、ARIAを介してフィールドを必須または無効としてマークするかどうか。 | aria |
startContent | ReactNode | 入力の左側にレンダリングされる要素。 | - |
endContent | ReactNode | 入力の右側にレンダリングされる要素。 | - |
labelPlacement | inside | outside | outside-left | ラベルの位置。 | inside |
fullWidth | boolean | 入力が親の幅を占有するかどうか。 | true |
isClearable | boolean | 入力にクリアボタンが必要かどうか。 | false |
isRequired | boolean | フォーム送信前に、入力でユーザー入力が必要かどうか。 | false |
isReadOnly | boolean | 入力が選択可能であるが、ユーザーによって変更できないかどうか。 | |
isDisabled | boolean | 入力が無効になっているかどうか。 | false |
isInvalid | boolean | 入力が無効かどうか。 | false |
baseRef | RefObject<HTMLDivElement> | ベース要素へのref。 | - |
validationState | valid | invalid | 入力が「有効」または「無効」の視覚的なスタイルを表示するかどうか。(非推奨)代わりにisInvalidを使用してください。 | - |
disableAnimation | boolean | 入力にアニメーションを適用するかどうか。 | false |
classNames | Record<"base"| "label"| "inputWrapper"| "innerWrapper"| "mainWrapper" | "input" | "clearButton" | "helperWrapper" | "description" | "errorMessage", string> | Inputのスロットにカスタムクラス名を設定できます。 | - |
Input Events
属性 | 型 | 説明 |
---|---|---|
onChange | React.ChangeEvent<HTMLInputElement> | 要素の値が変更されたときに呼び出されるハンドラー。event.target.value (string)にアクセスして新しい値を取得できます。 |
onValueChange | (value: string) => void | 要素の値が変更されたときに呼び出されるハンドラー。 |
onClear | () => void | クリアボタンがクリックされたときに呼び出されるハンドラー。 |