インプット

インプットは、ユーザーがテキストを入力できるようにするコンポーネントです。フォーム、検索フィールドなどでユーザー入力を取得するために使用できます。


インストール

npx nextui-cli@latest add input
上記のコマンドは、個別インストール専用です。もし、 @nextui-org/react がグローバルにインストールされている場合は、このステップを省略できます。

インポート

使用法

無効

読み取り専用

必須

インプットにisRequiredプロパティを渡すと、ラベルの最後にdangerアスタリスクが表示され、インプットが必須になります。

サイズ

バリアント

半径

ラベル配置

labelPlacementプロパティをinsideoutside、またはoutside-leftに設定することで、ラベルの位置を変更できます。

:labelが渡されない場合、labelPlacementプロパティはデフォルトでoutsideになります。

パスワード入力

typeプロパティを使用して、インプットタイプをpasswordに変更できます。

クリアボタン

インプットにisClearableプロパティを渡すと、インプットの最後にクリアボタンが表示され、インプットに値がある場合に表示されます。

開始&終了コンテンツ

startContentプロパティとendContentプロパティを使用して、インプットの開始と終了にコンテンツを追加できます。

説明付き

descriptionプロパティを渡すことで、インプットに説明を追加できます。

エラーメッセージ付き

isInvalidプロパティとerrorMessageプロパティを組み合わせることで、無効なインプットを表示できます。errorMessageは、isInvalidtrueに設定されている場合にのみ表示されます。

例:regex を使用したメールアドレスの検証

制御された入力

value プロパティと onValueChange プロパティを使用して、入力値を制御できます。

注意: NextUI Input は、onChange のようなネイティブイベントもサポートしており、FormikReact Hook Form のようなフォームライブラリで役立ちます。

スロット

  • base: 入力ラッパー。配置、位置、および全体的な外観を処理します。
  • label: 入力のラベル。入力の上、内側、または左側に表示されます。
  • mainWrapper: 位置が outside / outside-left の場合に inputWrapper をラップします。
  • inputWrapper: label (内側にある場合) と innerWrapper をラップします。
  • innerWrapper: input, startContent, および endContent をラップします。
  • input: 入力要素。
  • clearButton: 入力の末尾にあるクリアボタン。
  • helperWrapper: descriptionerrorMessage をラップします。
  • description: 入力の説明。
  • errorMessage: 入力のエラーメッセージ。

カスタムスタイル

カスタムの Tailwind CSS クラスをコンポーネントのスロットに渡すことで、Input コンポーネントをカスタマイズできます。

カスタム実装

入力をさらにカスタマイズする必要がある場合は、useInput フックを使用して独自の実装を作成できます。

データ属性

Inputbase 要素には、次の属性があります。

  • 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

属性説明デフォルト
childrenReactNode入力の内容。-
variantflat | bordered | faded | underlined入力のバリアント。flat
colordefault | primary | secondary | success | warning | danger入力の色。default
sizesm | md | lg入力のサイズ。md
radiusnone | sm | md | lg | full入力の半径。-
labelReactNodeラベルとして表示するコンテンツ。-
valuestring入力の現在の値(制御されたコンポーネント)。-
defaultValuestring入力のデフォルト値(非制御コンポーネント)。-
placeholderstring入力のプレースホルダー。-
descriptionReactNode入力の説明。選択すべき内容の具体的な要件などのヒントを提供します。-
errorMessageReactNode | ((v: ValidationResult) => ReactNode)入力のエラーメッセージ。isInvalidtrue に設定されている場合にのみ表示されます。-
validate(value: string) => ValidationError | true | null | undefinedコミット時(例:blur時)に入力値を検証し、無効な値に対してエラーメッセージを返します。validationBehaviornative に設定されている場合、検証エラーはフォーム送信時に表示されます。リアルタイム検証には、isInvalid プロパティを使用してください。-
validationBehaviornative | aria値が欠落しているか無効な場合にフォーム送信を防ぐためにネイティブHTMLフォーム検証を使用するか、ARIAを介してフィールドを必須または無効としてマークするかどうか。aria
startContentReactNode入力の左側にレンダリングされる要素。-
endContentReactNode入力の右側にレンダリングされる要素。-
labelPlacementinside | outside | outside-leftラベルの位置。inside
fullWidthboolean入力が親の幅を占有するかどうか。true
isClearableboolean入力にクリアボタンが必要かどうか。false
isRequiredbooleanフォーム送信前に、入力でユーザー入力が必要かどうか。false
isReadOnlyboolean入力が選択可能であるが、ユーザーによって変更できないかどうか。
isDisabledboolean入力が無効になっているかどうか。false
isInvalidboolean入力が無効かどうか。false
baseRefRefObject<HTMLDivElement>ベース要素へのref。-
validationStatevalid | invalid入力が「有効」または「無効」の視覚的なスタイルを表示するかどうか。(非推奨)代わりにisInvalidを使用してください。-
disableAnimationboolean入力にアニメーションを適用するかどうか。false
classNamesRecord<"base"| "label"| "inputWrapper"| "innerWrapper"| "mainWrapper" | "input" | "clearButton" | "helperWrapper" | "description" | "errorMessage", string>Inputのスロットにカスタムクラス名を設定できます。-

Input Events

属性説明
onChangeReact.ChangeEvent<HTMLInputElement>要素の値が変更されたときに呼び出されるハンドラー。event.target.value (string)にアクセスして新しい値を取得できます。
onValueChange(value: string) => void要素の値が変更されたときに呼び出されるハンドラー。
onClear() => voidクリアボタンがクリックされたときに呼び出されるハンドラー。