タイムピッカー
TimePicker 複合APIを使用して、カスタムトリガーを持つカスタムタイムピッカーを構築します。
import { useState } from "react";import { TimePicker } from "react-date-range-picker-styled";import "react-date-range-picker-styled/rdrp-styles.css";
function CompoundTimePicker() { const [value, setValue] = useState<Date | null>(null);
return ( <TimePicker.Root value={value} onChange={setValue}> <TimePicker.Trigger> {({ displayValue, isOpen, onToggle, triggerRef }) => ( <button ref={triggerRef as React.Ref<HTMLButtonElement>} onClick={onToggle} style={{ display: "inline-flex", alignItems: "center", gap: 8, padding: "8px 12px", border: "1px solid #d1d5db", borderRadius: 6, background: isOpen ? "#eff6ff" : "#fff", cursor: "pointer", fontSize: 14, }} > <span style={{ fontSize: 18 }}>{"\uD83D\uDD52"}</span> <span>{displayValue || "Select time"}</span> </button> )} </TimePicker.Trigger> <TimePicker.Content> <TimePicker.TimePanel target="single" /> <TimePicker.Footer> <TimePicker.ClearButton /> <TimePicker.CancelButton /> <TimePicker.ConfirmButton /> </TimePicker.Footer> </TimePicker.Content> </TimePicker.Root> );}12時間形式
time を使用して12時間形式を設定します:
import { useState } from "react";import { TimePicker } from "react-date-range-picker-styled";import "react-date-range-picker-styled/rdrp-styles.css";
function CompoundTimePickerTwelveHour() { const [value, setValue] = useState<Date | null>(null);
return ( <TimePicker.Root value={value} onChange={setValue} time={{ hourFormat: "12" }}> <TimePicker.Trigger> {({ displayValue, isOpen, onToggle, triggerRef }) => ( <button ref={triggerRef as React.Ref<HTMLButtonElement>} onClick={onToggle} style={{ display: "inline-flex", alignItems: "center", gap: 8, padding: "8px 12px", border: "1px solid #d1d5db", borderRadius: 6, background: isOpen ? "#eff6ff" : "#fff", cursor: "pointer", fontSize: 14, }} > <span style={{ fontSize: 18 }}>{"\uD83D\uDD52"}</span> <span>{displayValue || "Select time (12h)"}</span> </button> )} </TimePicker.Trigger> <TimePicker.Content> <TimePicker.TimePanel target="single" /> <TimePicker.Footer> <TimePicker.ClearButton /> <TimePicker.CancelButton /> <TimePicker.ConfirmButton /> </TimePicker.Footer> </TimePicker.Content> </TimePicker.Root> );}