การปรับแต่งเซลล์วัน
ใช้ render prop ของคอมโพเนนต์ Day เพื่อปรับแต่งแต่ละเซลล์วัน ซึ่งมีประโยชน์สำหรับการเพิ่มตัวบ่งชี้เหตุการณ์, การกำหนดสไตล์ตามคุณสมบัติของวันที่ หรือการแทนที่การเรนเดอร์วันทั้งหมด
import { useState } from "react";import { DatePicker } from "react-date-range-picker-tailwind3";
const eventDates = new Set([5, 12, 18, 25]);
function CompoundCustomDay() { const [value, setValue] = useState<Date | null>(null);
return ( <DatePicker.Root value={value} onChange={setValue} inline> <DatePicker.Content> <DatePicker.Header> <DatePicker.PrevButton /> <DatePicker.Title /> <DatePicker.NextButton /> </DatePicker.Header> <DatePicker.Grid> {({ date }) => ( <DatePicker.Day date={date}> {({ day, isDisabled, isSelected, isToday, onClick, onMouseEnter, onMouseLeave }) => ( <button type="button" onClick={onClick} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave} disabled={isDisabled} style={{ display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", width: 36, height: 36, border: "none", borderRadius: 6, cursor: isDisabled ? "default" : "pointer", background: isSelected ? "#3b82f6" : "transparent", color: isSelected ? "#fff" : isToday ? "#2563eb" : undefined, fontWeight: isToday || isSelected ? 600 : 400, fontSize: 13, position: "relative", }} > {day} {eventDates.has(date.getDate()) && ( <span style={{ position: "absolute", bottom: 2, width: 4, height: 4, borderRadius: "50%", background: isSelected ? "#fff" : "#f59e0b", }} /> )} </button> )} </DatePicker.Day> )} </DatePicker.Grid> </DatePicker.Content> </DatePicker.Root> );}March 2026
Su
Mo
Tu
We
Th
Fr
Sa
Render Props ของ Day
| Prop | ประเภท | คำอธิบาย |
|---|---|---|
date | Date | อ็อบเจกต์ Date |
day | number | วันของเดือน (1-31) |
isToday | boolean | ระบุว่าเป็นวันนี้หรือไม่ |
isSelected | boolean | ระบุว่าวันดังกล่าวถูกเลือกหรือไม่ |
isDisabled | boolean | ระบุว่าวันดังกล่าวถูกปิดใช้งานหรือไม่ |
isInRange | boolean | ระบุว่าวันดังกล่าวอยู่ในช่วงที่เลือกหรือไม่ |
isRangeStart | boolean | ระบุว่าเป็นวันเริ่มต้นของช่วงหรือไม่ |
isRangeEnd | boolean | ระบุว่าเป็นวันสิ้นสุดของช่วงหรือไม่ |
isInHoverRange | boolean | ระบุว่าวันดังกล่าวอยู่ในช่วงแสดงตัวอย่างเมื่อโฮเวอร์หรือไม่ |
isHoverTarget | boolean | ระบุว่าเป็นจุดสิ้นสุดของการโฮเวอร์หรือไม่ |
isOutsideDay | boolean | ระบุว่าวันดังกล่าวเป็นของเดือนที่อยู่ติดกันหรือไม่ |
isHighlighted | boolean | ระบุว่าวันดังกล่าวมีจุดไฮไลท์หรือไม่ |
isFocused | boolean | ระบุว่าวันดังกล่าวได้รับการโฟกัสจากคีย์บอร์ดหรือไม่ |
onClick | () => void | ตัวจัดการการคลิก |
onMouseEnter | () => void | ตัวจัดการเมื่อเมาส์เข้า |
onMouseLeave | () => void | ตัวจัดการเมื่อเมาส์ออก |