PasswordInput
PasswordInput
は、表示・非表示の切り替えができるパスワード入力用のコンポーネントです。
インポート
import { PasswordInput, PasswordInputStrengthMeter } from "@yamada-ui/react"
使い方
編集可能な例
<PasswordInput placeholder="basic" />
バリアントを変更する
編集可能な例
<VStack> <PasswordInput variant="outline" placeholder="outline" /> <PasswordInput variant="filled" placeholder="filled" /> <PasswordInput variant="flushed" placeholder="flushed" /> <PasswordInput variant="unstyled" placeholder="unstyled" /> </VStack>
サイズを変更する
編集可能な例
<VStack> <PasswordInput size="xs" placeholder="extra small size" /> <PasswordInput size="sm" placeholder="small size" /> <PasswordInput size="md" placeholder="medium size" /> <PasswordInput size="lg" placeholder="large size" /> </VStack>
デフォルトで値を表示する
デフォルトで値を表示する場合は、defaultVisible
をtrue
に設定します。
編集可能な例
<PasswordInput defaultValue="password" defaultVisible placeholder="your password" />
強度メーターを表示する
強度メーターを表示する場合は、PasswordInputStrengthMeter
を使用します。
編集可能な例
const [value, setValue] = useState("Password") const getStrength = (password: string): number => { let strength = 0 if (password.length >= 8) strength++ if (/[A-Z]/.test(password)) strength++ if (/[0-9]/.test(password)) strength++ if (/[^A-Za-z0-9]/.test(password)) strength++ return strength } return ( <VStack> <PasswordInput placeholder="your password" value={value} onChange={(e) => setValue(e.target.value)} /> <PasswordInputStrengthMeter value={getStrength(value)} /> </VStack> )
ボーダーのカラーを変更する
ボーダーのカラーを変更する場合は、focusBorderColor
またはerrorBorderColor
にカラーを設定します。
編集可能な例
<VStack> <PasswordInput focusBorderColor="green.500" placeholder="custom border color" /> <PasswordInput errorBorderColor="orange.500" isInvalid placeholder="custom border color" /> </VStack>
プレースホルダーのカラーを変更する
プレースホルダーのカラーを変更する場合は、_placeholder
にprops
を設定します。
編集可能な例
<VStack> <PasswordInput placeholder="custom placeholder" _placeholder={{ opacity: 1, color: "blue.500" }} _dark={{ _placeholder: { opacity: 1, color: "blue.500" } }} /> <PasswordInput color="green.500" placeholder="custom placeholder" _placeholder={{ color: "inherit" }} _dark={{ _placeholder: { color: "inherit" }, }} /> </VStack>
無効化する
無効化する場合は、isDisabled
をtrue
に設定します。
編集可能な例
<VStack> <PasswordInput variant="outline" isDisabled placeholder="outline" /> <PasswordInput variant="filled" isDisabled placeholder="filled" /> <PasswordInput variant="flushed" isDisabled placeholder="flushed" /> <PasswordInput variant="unstyled" isDisabled placeholder="unstyled" /> <FormControl helperMessage="We'll never share your password." isDisabled label="Password" > <PasswordInput placeholder="your password" /> </FormControl> </VStack>
読み取り専用にする
読み取り専用にする場合は、isReadOnly
をtrue
に設定します。
編集可能な例
<VStack> <PasswordInput variant="outline" isReadOnly placeholder="outline" /> <PasswordInput variant="filled" isReadOnly placeholder="filled" /> <PasswordInput variant="flushed" isReadOnly placeholder="flushed" /> <PasswordInput variant="unstyled" isReadOnly placeholder="unstyled" /> <FormControl helperMessage="We'll never share your password." isReadOnly label="Password" > <PasswordInput placeholder="your password" /> </FormControl> </VStack>
無効な入力にする
無効な入力にする場合は、isInvalid
をtrue
に設定します。
編集可能な例
<VStack> <PasswordInput variant="outline" isInvalid placeholder="outline" /> <PasswordInput variant="filled" isInvalid placeholder="filled" /> <PasswordInput variant="flushed" isInvalid placeholder="flushed" /> <PasswordInput variant="unstyled" isInvalid placeholder="unstyled" /> <FormControl errorMessage="Email is required." isInvalid label="Password"> <PasswordInput placeholder="your password" /> </FormControl> </VStack>
制御する
編集可能な例
const [visible, setVisible] = useState(true) return ( <PasswordInput placeholder="your password" visible={visible} onVisibleChange={setVisible} /> )
React Hook Form
を使う
編集可能な例
type Data = { password: string } const { register, handleSubmit, watch, formState: { errors }, } = useForm<Data>() const onSubmit: SubmitHandler<Data> = (data) => { console.log("submit:", data) } console.log("watch:", watch()) return ( <VStack as="form" onSubmit={handleSubmit(onSubmit)}> <FormControl errorMessage={errors.password?.message} isInvalid={!!errors.password} label="Password" > <PasswordInput {...register("password", { required: { message: "Password is required.", value: true }, })} /> </FormControl> <Button type="submit" alignSelf="flex-end"> Submit </Button> </VStack> )
GitHubでこのページを編集する