DatePicker
DatePickerは、ユーザーが日付を選択するために使用されるコンポーネントです。
<DatePicker />
使い方
import { DatePicker } from "@yamada-ui/react"
import { DatePicker } from "@/components/ui"
import { DatePicker } from "@workspaces/ui"
<DatePicker />
バリアントを変更する
<VStack>
<For each={["outline", "filled", "flushed", "plain"]}>
{(variant, index) => (
<DatePicker
key={index}
variant={variant}
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
サイズを変更する
<VStack>
<For each={["xs", "sm", "md", "lg", "xl"]}>
{(size, index) => (
<DatePicker key={index} size={size} placeholder={`Size (${size})`} />
)}
</For>
</VStack>
カラースキームを変更する
<VStack>
<For each={["success", "warning"]}>
{(colorScheme, index) => (
<DatePicker
key={index}
colorScheme={colorScheme}
today
defaultValue={new Date(new Date().setDate(1))}
/>
)}
</For>
</VStack>
フォーマットを変更する
フォーマットを変更する場合は、formatにオブジェクトを設定します。
const format = useMemo<DatePickerFormat>(
() => ({
input: null,
month: "long",
weekday: "narrow",
year: "2-digit",
}),
[],
)
return <DatePicker format={format} />
デフォルトの日付を設定する
デフォルトの日付を設定する場合は、defaultValueにDateを設定します。
<DatePicker defaultValue={new Date(1993, 7, 18)} />
デフォルトの入力値を設定する
デフォルトの入力値を設定する場合は、defaultInputValueに文字列を設定します。
<DatePicker defaultInputValue="1993/08/18" />
デフォルトの月を設定する
デフォルトの月を設定する場合は、defaultMonthにDateを設定します。
<DatePicker defaultMonth={new Date("2025-10-01")} />
最小日付を設定する
最小日付を設定する場合は、minDateにDateを設定します。
<DatePicker minDate={new Date(new Date().setDate(1))} />
最大日付を設定する
最大日付を設定する場合は、maxDateにDateを設定します。
<DatePicker maxDate={new Date(new Date().setDate(18))} />
最小と最大の範囲外を許可する
デフォルトでは、最小と最大の日付の範囲外が入力された場合、自動的に最小または最大の日付に置換されます。この制御を無効にし、最小と最大の範囲外を許可する場合は、allowInputBeyondをtrueに設定します。
<DatePicker
minDate={new Date(new Date().setDate(1))}
maxDate={new Date(new Date().setDate(18))}
allowInputBeyond
/>
今日の強調を無効にする
今日の強調を無効にする場合は、todayをfalseに設定します。
<DatePicker today={false} />
特定の曜日を無効にする
特定の曜日を無効にする場合は、excludeDateを使用します。
<DatePicker excludeDate={(date) => [0, 1, 6].includes(date.getDay())} />
"use client"をファイルの上部に追加する必要があります。複数選択を有効する
複数選択を有効にする場合は、multipleをtrueに設定します。
<DatePicker multiple />
複数選択の最大数を設定する
複数選択の最大選択数を設定する場合は、maxに数値を設定します。
<DatePicker max={3} multiple />
複数選択の区切り文字を変更する
複数選択の区切り文字を変更する場合は、separatorに文字列を設定します。デフォルトでは、,が設定されています。
<DatePicker multiple separator=";" />
期間選択を有効にする
期間選択を有効にする場合は、rangeをtrueに設定します。
<DatePicker range />
週の開始曜日を変更する
週の開始曜日を変更する場合は、startDayOfWeekに"sunday"または"monday"を設定します。
<VStack>
<DatePicker placeholder="sunday" startDayOfWeek="sunday" />
<DatePicker placeholder="monday" startDayOfWeek="monday" />
</VStack>
週末の曜日を変更する
週末の曜日を変更する場合は、weekendDaysに曜日(数値)の配列を設定します。
<DatePicker weekendDays={[0, 1]} />
パターンを設定する
パターンを設定する場合は、patternに正規表現を設定します。
<DatePicker pattern={/[^\w, ]/g} defaultValue={new Date()} />
入力された値の解析をハンドルする
入力された値の解析をハンドルする場合は、parseDateを使用します。
<DatePicker parseDate={(value) => new Date(value)} />
"use client"をファイルの上部に追加する必要があります。祝日を設定する
祝日を設定する場合は、holidaysにDateの配列を設定します。
const holidays = useMemo(
() => [
new Date("2025-01-01"),
new Date("2025-01-13"),
new Date("2025-02-11"),
new Date("2025-02-23"),
new Date("2025-02-24"),
new Date("2025-03-20"),
new Date("2025-04-29"),
new Date("2025-05-03"),
new Date("2025-05-04"),
new Date("2025-05-05"),
new Date("2025-05-06"),
new Date("2025-07-21"),
new Date("2025-08-11"),
new Date("2025-09-15"),
new Date("2025-09-23"),
new Date("2025-10-13"),
new Date("2025-11-03"),
new Date("2025-11-23"),
new Date("2025-11-24"),
new Date("2026-01-01"),
new Date("2026-01-12"),
new Date("2026-02-11"),
new Date("2026-02-23"),
new Date("2026-03-20"),
new Date("2026-04-29"),
new Date("2026-05-03"),
new Date("2026-05-04"),
new Date("2026-05-05"),
new Date("2026-05-06"),
new Date("2026-07-20"),
new Date("2026-08-11"),
new Date("2026-09-21"),
new Date("2026-09-22"),
new Date("2026-10-12"),
new Date("2026-11-03"),
new Date("2026-11-23"),
],
[],
)
return <DatePicker holidays={holidays} />
当月外の日付を非表示にする
当月外の日付を非表示にする場合は、dayPropsでスタイルを設定します。
<DatePicker
calendarProps={{
dayProps: {
css: { "&[data-outside]": { opacity: 0, pointerEvents: "none" } },
},
}}
/>
オフセットを変更する
オフセットを変更する場合は、gutterまたはoffsetに値を設定します。
<DatePicker gutter={16} />
アニメーションを変更する
アニメーションを変更する場合は、animationSchemeに"block-start"や"inline-end"などを設定します。デフォルトでは、"scale"が設定されています。
<DatePicker animationScheme="inline-start" />
表示位置を変更する
表示位置を変更するには、placementにendやstart-centerなどを設定します。デフォルトでは、end-startが設定されています。
<DatePicker
animationScheme="inline-start"
placement="center-end"
rootProps={{ w: "xs" }}
/>
スクロールをブロックする
スクロールをブロックするには、blockScrollOnMountをtrueに設定します。
<DatePicker blockScrollOnMount />
スクロール時にドロップダウンを閉じる
スクロール時にドロップダウンを閉じる場合は、closeOnScrollをtrueに設定します。
<DatePicker closeOnScroll />
変更時にドロップダウンを開くイベントをハンドルする
変更時にドロップダウンを開くイベントをハンドルする場合は、openOnChangeに関数を設定します。
<DatePicker
openOnFocus={false}
openOnChange={(ev) => ev.target.value.length > 1}
/>
"use client"をファイルの上部に追加する必要があります。変更時にドロップダウンを閉じるイベントをハンドルする
変更時にドロップダウンを閉じるイベントをハンドルする場合は、closeOnChangeに関数を設定します。
<DatePicker
openOnFocus={false}
closeOnChange={(ev) => !ev.target.value.length}
/>
"use client"をファイルの上部に追加する必要があります。フォーカス時にドロップダウンを開かない
フォーカス時にドロップダウンを開かない場合は、openOnFocusをfalseに設定します。
<DatePicker openOnFocus={false} />
クリック時にドロップダウンを開かない
クリック時にドロップダウンを開かない場合は、openOnClickをfalseに設定します。
<DatePicker openOnClick={false} />
クリア時にフォーカスしない
クリア時にフォーカスしない場合は、focusOnClearをfalseに設定します。
<DatePicker focusOnClear={false} />
選択時にカレンダーを閉じない
選択時にドロップダウンを閉じない場合は、closeOnSelectをfalseに設定します。
<DatePicker closeOnSelect={false} />
フォーカスが外れた場合に閉じない
フォーカスが外れた場合にドロップダウンを閉じない場合は、closeOnBlurをfalseに設定します。
<DatePicker closeOnBlur={false} />
ESCキーが入力された時にドロップダウンを閉じない
ESCキーが入力された時にドロップダウンを閉じない場合は、closeOnEscをfalseに設定します。
<DatePicker closeOnEsc={false} />
クリアを無効化する
クリアを無効化する場合は、clearableをfalseに設定します。
<DatePicker clearable={false} />
入力を許可しない
入力を許可しない場合は、allowInputをfalseに設定します。
<DatePicker allowInput={false} />
形を変える
<VStack>
<For each={["rounded", "circle", "square"]}>
{(shape, index) => (
<DatePicker
key={index}
defaultValue={{
end: new Date(new Date().setDate(new Date().getDate() + 4)),
start: new Date(),
}}
range
calendarProps={{ shape }}
/>
)}
</For>
</VStack>
無効にする
無効にする場合は、disabledをtrueに設定します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant, index) => (
<DatePicker
key={index}
variant={variant}
disabled
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
読み取り専用にする
読み取り専用にする場合は、readOnlyをtrueに設定します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant, index) => (
<DatePicker
key={index}
variant={variant}
readOnly
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
無効な入力にする
無効な入力にする場合は、invalidをtrueに設定します。
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant, index) => (
<DatePicker
key={index}
variant={variant}
invalid
placeholder={toTitleCase(variant)}
/>
)}
</For>
</VStack>
ボーダーの色を変更する
ボーダーの色を変更する場合は、focusBorderColorまたはerrorBorderColorに値を設定します。
<VStack>
<DatePicker focusBorderColor="green.500" placeholder="custom border color" />
<DatePicker
invalid
errorBorderColor="orange.500"
placeholder="custom border color"
/>
</VStack>
アイコンをカスタマイズする
<VStack>
<DatePicker iconProps={{ color: "orange" }} />
<DatePicker icon={<CalendarDaysIcon />} />
</VStack>
複数選択時の表示をカスタマイズする
<DatePicker
multiple
render={({ value, onClear }) => (
<Tag size="sm" me="{gap}" onClose={onClear}>
{value}
</Tag>
)}
/>
カレンダーをカスタマイズする
カレンダーをカスタマイズして、表示を変更できます。
<VStack>
<DatePicker>
<Calendar.Navigation>
<Calendar.Control justifyContent="flex-start" px="3">
{({ month }) =>
`${month.getFullYear()}/${(month.getMonth() + 1).toString().padStart(2, "0")}`
}
</Calendar.Control>
<Calendar.PrevButton gridColumn="6 / 7" />
<Calendar.NextButton gridColumn="7 / 8" />
</Calendar.Navigation>
<Calendar.Month />
</DatePicker>
<DatePicker
calendarProps={{
day: ({ value }) => (
<Indicator
colorScheme="blue"
size="sm"
disabled={value.getDate() % 4 !== 0}
offset="-3px"
labelProps={{ minBoxSize: "2" }}
>
<Text as="span">{value.getDate()}</Text>
</Indicator>
),
}}
/>
</VStack>
"use client"をファイルの上部に追加する必要があります。制御する
const [value, onChange] = useState<Date | null>(new Date())
return <DatePicker value={value} onChange={onChange} />
Props
アクセシビリティ
現在、v2の移行に伴い、このセクションは更新中です。