Bộ chọn thời gian

Sử dụng các thành phần kết hợp TimePicker để xây dựng giao diện người dùng chọn thời gian tùy chỉnh. Ví dụ này thay thế trình kích hoạt mặc định bằng một nút được tạo kiểu trong khi vẫn giữ lại bảng điều khiển thời gian và chân trang tiêu chuẩn.

import { useState } from "react";
import { TimePicker } from "react-date-range-picker-tailwind4";
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>
);
}

Định dạng 12 giờ

Định cấu hình định dạng 12 giờ với time:

import { useState } from "react";
import { TimePicker } from "react-date-range-picker-tailwind4";
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 ${isOpen ? "#3b82f6" : "#d1d5db"}`,
borderRadius: 6,
background: isOpen ? "#eff6ff" : "#fff",
cursor: "pointer",
fontSize: 14,
}}
>
<span style={{ fontSize: 16 }}>🕐</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>
);
}