MonthPicker
MonthPicker
は、ユーザーが月を選択するために使用されるコンポーネントです。
インポート
@yamada-ui/calendar
は、@yamada-ui/react
に含まれていないため、別途インストールする必要があります。
import { MonthPicker } from "@yamada-ui/calendar"
使い方
編集可能な例
<MonthPicker placeholder="basic" />
バリアントを変更する
編集可能な例
<VStack> <For each={["outline", "filled", "flushed", "unstyled"]}> {(variant, index) => ( <MonthPicker key={index} variant={variant} placeholder={variant} /> )} </For> </VStack>
カレンダーのバリアントを変更する場合は、variant
を設定します。
編集可能な例
<VStack> <MonthPicker placeholder="solid" calendarVariant="solid" /> <MonthPicker placeholder="subtle" calendarVariant="subtle" /> </VStack>
サイズを変更する
編集可能な例
<VStack> <MonthPicker placeholder="extra small size" size="xs" /> <MonthPicker placeholder="small size" size="sm" /> <MonthPicker placeholder="medium size" size="md" /> <MonthPicker placeholder="large size" size="lg" /> </VStack>
カレンダーのサイズを変更する場合は、calendarSize
を設定します。
編集可能な例
<VStack> <MonthPicker placeholder="small size" calendarSize="sm" /> <MonthPicker placeholder="medium size" calendarSize="md" /> <MonthPicker placeholder="large size" calendarSize="lg" /> </VStack>
カラースキーマを変更する
編集可能な例
<VStack> <MonthPicker calendarVariant="solid" calendarColorScheme="secondary" today defaultValue={new Date()} /> <MonthPicker calendarVariant="subtle" calendarColorScheme="green" today defaultValue={new Date()} /> </VStack>
デフォルトの値を設定する
デフォルトの値を設定する場合は、defaultValue
にDate
を設定します。
編集可能な例
<MonthPicker defaultValue={new Date()} placeholder="YYYY/MM" />
デフォルトのタイプを変更する
デフォルトのタイプを変更する場合は、defaultType
にmonth
またはyear
を設定します。デフォルトでは、month
が設定されています。
編集可能な例
<VStack> <MonthPicker placeholder="month" defaultType="month" /> <MonthPicker placeholder="year" defaultType="year" /> </VStack>
デフォルトの月を設定する
デフォルトの月を設定する場合は、defaultMonth
にDate
を設定します。
編集可能な例
<MonthPicker placeholder="YYYY/MM" defaultMonth={new Date("1993-08")} />
パターンを設定する
パターンを設定する場合は、pattern
に正規表現を設定します。デフォルトでは、'/[^0-9\-\/]/g'
が設定されています。
編集可能な例
<MonthPicker placeholder="MMM YYYY" inputFormat="MMM YYYY" pattern={/[^\w, ]/g} defaultValue={new Date()} />
日付の解析
日付の解析方法をカスタマイズすることができます。
編集可能な例
<MonthPicker placeholder="YYYY/MM" inputFormat="YYYY/MM" parseDate={(value) => new Date(value)} />
最小と最大の月を設定する
選択可能な最小と最大の月を設定する場合は、minDate
とmaxDate
にDate
を設定します。
編集可能な例
<MonthPicker placeholder="YYYY/MM" defaultValue={new Date(1997, 0)} minDate={new Date(1993, 8)} maxDate={new Date(2000, 10)} />
ロケールを設定する
ロケールを設定する場合は、データをインポートして、locale
に対象のロケールを設定します。
import "dayjs/locale/ja"
編集可能な例
<MonthPicker locale="ja" placeholder="YYYY/MM" />
ロケールについては、こちらをご覧ください。
年月のフォーマットを変更する
年月のフォーマットを変更する場合は、inputFormat
やyearFormat
に文字列を設定します。
編集可能な例
<VStack> <MonthPicker placeholder="YYYY-MM" inputFormat="YYYY-MM" /> <MonthPicker placeholder="YYYY/MM" locale="ja" defaultType="month" yearFormat="YYYY年" /> </VStack>
フォーマットについては、こちらをご覧ください。
選択時にカレンダーを閉じない
デフォルトでは、選択時に自動的にカレンダーを閉じます。選択時にカレンダーを閉じないようにする場合は、closeOnSelect
をfalse
に設定します。
編集可能な例
<MonthPicker placeholder="YYYY/MM" closeOnSelect={false} />
ブラー時にカレンダーを閉じない
デフォルトでは、ブラー時に自動的にカレンダーを閉じます。ブラー時にカレンダーを閉じないようにする場合は、closeOnBlur
をfalse
に設定します。
編集可能な例
<MonthPicker placeholder="YYYY/MM" closeOnBlur={false} />
クリアを無効化する
クリアを無効化する場合は、isClearable
をfalse
に設定します。
編集可能な例
<MonthPicker placeholder="YYYY/MM" isClearable={false} />
入力を許可しない
入力を許可しない場合は、allowInput
をfalse
に設定します。
編集可能な例
<MonthPicker placeholder="YYYY/MM" allowInput={false} />
表示位置を変更する
表示位置を変更するには、placement
にtop
やleft-start
などを設定します。デフォルトでは、bottom
が設定されています。
編集可能な例
<MonthPicker placeholder="YYYY/MM" placement="bottom-end" />
オフセットを変更する
要素の大きさやシチュエーションによっては、ツールチップの位置を変更したい場合があります。その場合は、gutter
またはoffset
で位置を調整します。
gutter
は、単純な要素との差を設定でき、offset
は、[横軸, 縦軸]
を設定できます。
編集可能な例
<VStack> <MonthPicker placeholder="YYYY/MM" gutter={32} /> <MonthPicker placeholder="YYYY/MM" offset={[16, 16]} /> </VStack>
ボーダーのカラーを変更する
ボーダーのカラーを変更する場合は、focusBorderColor
またはerrorBorderColor
にカラーを設定します。
編集可能な例
<VStack> <MonthPicker focusBorderColor="green.500" placeholder="custom border color" /> <MonthPicker isInvalid errorBorderColor="orange.500" placeholder="custom border color" /> </VStack>
無効化する
無効化する場合は、isDisabled
をtrue
に設定します。
編集可能な例
<VStack> <MonthPicker isDisabled variant="outline" placeholder="outline" /> <MonthPicker isDisabled variant="filled" placeholder="filled" /> <MonthPicker isDisabled variant="flushed" placeholder="flushed" /> </VStack>
読み取り専用にする
読み取り専用にする場合は、isReadOnly
をtrue
に設定します。
編集可能な例
<VStack> <MonthPicker isReadOnly variant="outline" placeholder="outline" /> <MonthPicker isReadOnly variant="filled" placeholder="filled" /> <MonthPicker isReadOnly variant="flushed" placeholder="flushed" /> </VStack>
無効な入力にする
無効な入力にする場合は、isInvalid
をtrue
に設定します。
編集可能な例
<VStack> <MonthPicker isInvalid variant="outline" placeholder="outline" /> <MonthPicker isInvalid variant="filled" placeholder="filled" /> <MonthPicker isInvalid variant="flushed" placeholder="flushed" /> </VStack>
アイコンをカスタマイズする
アイコンをカスタマイズする場合は、iconProps
にprops
を設定します。
編集可能な例
<VStack> <MonthPicker placeholder="YYYY/MM" iconProps={{ color: "primary" }} /> <MonthPicker placeholder="YYYY/MM" iconProps={{ children: <GhostIcon /> }} /> </VStack>
ドロップダウンに要素を追加する
ドロップダウンに要素を追加する場合は、children
に要素を設定します。
children
には、value
とonClose
のメソッドが提供されます。これを利用して、内部状態にアクセスすることができます。
編集可能な例
<VStack> <MonthPicker placeholder="MMM YYYY"> <VStack mt="sm"> <Button>Submit</Button> </VStack> </MonthPicker> <MonthPicker placeholder="MMM YYYY" closeOnSelect={false}> {({ value, onClose }) => ( <VStack mt="sm"> <Button isDisabled={!value} onClick={onClose}> Submit {value ? ` ${ value.getFullYear() + "/" + String(value.getMonth() + 1).padStart(2, "0") }` : ""} </Button> </VStack> )} </MonthPicker> </VStack>
制御する
編集可能な例
const [value, onChange] = useState<Date | null>(new Date()) return <MonthPicker placeholder="YYYY/MM" value={value} onChange={onChange} />
編集可能な例
const [type, onChangeType] = useState<MonthPickerProps["type"]>("month") return ( <MonthPicker placeholder="YYYY/MM" type={type} onChangeType={onChangeType} /> )
編集可能な例
const [month, onChangeMonth] = useState<Date>(new Date("1993-08-18")) return ( <MonthPicker placeholder="YYYY/MM" month={month} onChangeMonth={onChangeMonth} /> )
React Hook Form
を使う
編集可能な例
type Data = { monthPicker: Date | null } const { control, 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 isInvalid={!!errors.monthPicker} label="Birthday" errorMessage={errors.monthPicker ? errors.monthPicker.message : undefined} > <Controller name="monthPicker" control={control} rules={{ required: { value: true, message: "This is required." } }} render={({ field }) => <MonthPicker placeholder="YYYY/MM" {...field} />} /> </FormControl> <Button type="submit" alignSelf="flex-end"> Submit </Button> </VStack> )
GitHubでこのページを編集する