Input
Inputは、ユーザーからのテキスト入力を取得するために使用されるコンポーネントです。
<Input placeholder="Placeholder" />
使い方
import { Input, InputGroup } from "@yamada-ui/react"
import { Input, InputGroup } from "@/components/ui"
import { Input, InputGroup } from "@workspaces/ui"
<Input />
<InputGroup.Root>
<InputGroup.Addon />
<Input />
<InputGroup.Element />
</InputGroup.Root>
バリアントを変更する
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<Input
key={variant}
variant={variant}
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
サイズを変更する
<VStack>
<For each={["sm", "md", "lg"]}>
{(size) => <Input key={size} size={size} placeholder={`Size (${size})`} />}
</For>
</VStack>
カラースキームを変更する
<VStack>
<For each={["success", "warning"]}>
{(colorScheme) => (
<Input
key={colorScheme}
colorScheme={colorScheme}
placeholder={toTitleCase(colorScheme)}
/>
)}
</For>
</VStack>
無効にする
無効にする場合は、disabledをtrueに設定します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<Input
key={variant}
disabled
variant={variant}
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
読み取り専用にする
読み取り専用にする場合は、readOnlyをtrueに設定します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<Input
key={variant}
readOnly
variant={variant}
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
無効な入力にする
無効な入力にする場合は、invalidをtrueに設定します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<Input
key={variant}
invalid
variant={variant}
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
アドオンを追加する
アドオンを追加する場合は、InputをInputGroupでラッピングし、InputGroup.Addonを使用します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<InputGroup.Root key={variant} variant={variant}>
<InputGroup.Addon>https://</InputGroup.Addon>
<Input placeholder="Your site address" />
<InputGroup.Addon>.com</InputGroup.Addon>
</InputGroup.Root>
)}
</For>
</VStack>
要素を追加する
要素を追加する場合は、InputをInputGroupでラッピングし、InputGroup.Elementを使用します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<InputGroup.Root key={variant} variant={variant}>
<InputGroup.Element>
<PhoneIcon />
</InputGroup.Element>
<Input type="tel" placeholder="Your phone number" />
</InputGroup.Root>
)}
</For>
</VStack>
タイプを変更する
タイプを変更する場合は、typeにタイプを設定します。
<Input placeholder="Select Date and Time" type="datetime-local" />
ボーダーの色を変更する
ボーダーの色を変更する場合は、focusBorderColorまたはerrorBorderColorに値を設定します。
<VStack>
<Input focusBorderColor="green.500" placeholder="Custom focus border color" />
<Input
errorBorderColor="orange.500"
invalid
placeholder="Custom invalid border color"
/>
</VStack>
プレースホルダーの色を変更する
プレースホルダーの色を変更する場合は、_placeholderに値を設定します。
<Input placeholder="Custom placeholder" _placeholder={{ color: "blue.500" }} />
フローティングラベルを使う
<Field.Root>
<Input type="email" data-peer placeholder="" />
<Field.Label
css={{
bg: "bg",
fontSize: "sm",
fontWeight: "normal",
insetStart: "2",
pointerEvents: "none",
position: "absolute",
px: "1",
top: "-12px",
transitionDuration: "moderate",
transitionProperty: "top, color, font-size",
transitionTimingFunction: "ease-in-out",
zIndex: "yamcha",
_peerPlaceholderShown: {
color: "fg.subtle",
fontSize: "md",
insetStart: "2",
top: "5px",
},
// eslint-disable-next-line perfectionist/sort-objects
_peerFocusVisible: {
color: "fg",
fontSize: "sm",
insetStart: "2",
top: "-12px",
},
}}
>
Email
</Field.Label>
</Field.Root>
制御する
const [value, setValue] = useState<string>("オッス!オラ悟空!")
return <Input value={value} onChange={(ev) => setValue(ev.target.value)} />
"use client"をファイルの上部に追加する必要があります。Props
アクセシビリティ
Field.Rootを使用しない場合は、Inputにaria-labelまたはaria-labelledbyを設定します。
<Input type="email" aria-label="Email address" />
<VStack gap="sm">
<Text as="h3" id="label">
Email address
</Text>
<Input type="email" aria-labelledby="label" />
</VStack>
ARIAロールと属性
| コンポーネント | ロールと属性 | 使い方 |
|---|---|---|
Input | aria-invalid | invalidが設定されている場合は"true"を設定します。 |
aria-disabled | disabledが設定されている場合は"true"を設定します。 | |
aria-describedby | InputがField.Root内にあり、Field.RootにerrorMessageまたはhelperMessage、もしくはField.ErrorMessageまたはField.HelperMessageが設定されている場合は、そのidを設定します。 | |
aria-readonly | readOnlyが設定されている場合は"true"を設定します。 | |
aria-required | requiredが設定されている場合は"true"を設定します。 |
類似のコンポーネント
Textarea
Textareaは、複数行のテキスト入力を取得するために使用されるコンポーネントです。
PinInput
PinInputは、ピンコードやOTP(ワンタイムパスワード)の入力を取得するために使用されるコンポーネントです。
PasswordInput
PasswordInputは、表示・非表示の切り替えができるパスワード入力用のコンポーネントです。
NumberInput
NumberInputは、ユーザーからの数値入力を取得するために使用されるコンポーネントです。
Editable
Editableは、インラインで編集可能なテキスト入力を取得するために使用されるコンポーネントです。
FileInput
FileInputは、ユーザーがファイルを選択するために使用されるコンポーネントです。
Autocomplete
Autocompleteは、ユーザーのテキスト入力に応じて候補を表示するために使用されるコンポーネントです。
Switch
Switchは、オンとオフの状態を切り替えるために使用されるコンポーネントです。
使用しているコンポーネント・フック
Field
Fieldは、フォーム要素に、ラベル、ヘルパーメッセージ、エラーメッセージなどをグループ化するために使用されるコンポーネントです。
Group
Groupは、複数の要素をまとめて扱うためのコンポーネントです。
使用されているコンポーネント・フック
Autocomplete
Autocompleteは、ユーザーのテキスト入力に応じて候補を表示するために使用されるコンポーネントです。
Checkbox
Checkboxは、ユーザーが複数の選択肢の中から複数の値を選択するために使用されるコンポーネントです。
CheckboxCard
CheckboxCardは、ユーザーが複数の選択肢の中から複数の値を選択するために使用されるコンポーネントです。
ColorPicker
ColorPickerは、ユーザーが色を選択したり任意の色の値を入力するために使用されるコンポーネントです。
DatePicker
DatePickerは、ユーザーが日付を選択するために使用されるコンポーネントです。
Dropzone
Dropzoneは、ファイルをドラッグアンドドロップでアップロードするために使用されるコンポーネントです。
Editable
Editableは、インラインで編集可能なテキスト入力を取得するために使用されるコンポーネントです。
FileButton
FileButtonは、ユーザーがファイルを選択するために使用されるボタンのコンポーネントです。
FileInput
FileInputは、ユーザーがファイルを選択するために使用されるコンポーネントです。
NativeSelect
NativeSelectは、ユーザーがオプションのリストから1つの値を選択するために使用されるコンポーネントです。ブラウザ(ユーザーエージェント)によって提供されるネイティブなドロップダウンリストを表示します。
NumberInput
NumberInputは、ユーザーからの数値入力を取得するために使用されるコンポーネントです。
PasswordInput
PasswordInputは、表示・非表示の切り替えができるパスワード入力用のコンポーネントです。
PinInput
PinInputは、ピンコードやOTP(ワンタイムパスワード)の入力を取得するために使用されるコンポーネントです。
Radio
Radioは、ユーザーが複数の選択肢の中から1つの値を選択するために使用されるコンポーネントです。
RadioCard
RadioCardは、ユーザーが複数の選択肢の中から1つを選択するために使用されるコンポーネントです。
Select
Selectは、ユーザーがオプションのリストから値を選択するために使用されるコンポーネントです。
Textarea
Textareaは、複数行のテキスト入力を取得するために使用されるコンポーネントです。
Toggle
Toggleは、オンまたはオフの2つの状態を持つコンポーネントです。