คอมโพเนนต์แบบผสม (Compound Components)

แพ็คเกจ Tailwind v3 นำเสนอ Compound Component API ที่ให้คุณควบคุมโครงสร้างภายในและการเรนเดอร์ของ picker แต่ละตัวได้อย่างเต็มที่ แทนที่จะเป็นคอมโพเนนต์ขนาดใหญ่ชิ้นเดียว คุณสามารถประกอบ picker จากส่วนประกอบย่อยๆ ได้

วิธีการทำงาน

Picker ทุกตัว (เช่น DatePicker) เป็นทั้งคอมโพเนนต์แบบง่ายและเป็น namespace ของส่วนประกอบย่อย:

import { DatePicker } from "react-date-range-picker-tailwind3";
// การใช้งานแบบง่าย — เรนเดอร์เลย์เอาต์เริ่มต้น
<DatePicker value={value} onChange={setValue} />
// การใช้งานแบบผสม — ควบคุมโครงสร้างได้เต็มที่
<DatePicker.Root value={value} onChange={setValue}>
<DatePicker.Trigger />
<DatePicker.Content>
<DatePicker.Header>
<DatePicker.PrevButton />
<DatePicker.Title />
<DatePicker.NextButton />
</DatePicker.Header>
<DatePicker.Grid />
<DatePicker.Footer>
<DatePicker.ClearButton />
<DatePicker.CancelButton />
<DatePicker.ConfirmButton />
</DatePicker.Footer>
</DatePicker.Content>
</DatePicker.Root>

ส่วนประกอบที่มีให้

DatePicker

ส่วนประกอบคำอธิบาย
DatePicker.RootProvider + คอนเทนเนอร์. รับ props ทั้งหมดของ picker (value, onChange, minDate เป็นต้น)
DatePicker.Triggerปุ่มที่เปิด/ปิดป๊อปอัป. แสดงค่าที่เลือก
DatePicker.Contentคอนเทนเนอร์ป๊อปอัป (หรือคอนเทนเนอร์แบบอินไลน์เมื่อตั้งค่า inline บน Root)
DatePicker.Headerแถบนำทางสำหรับเดือน
DatePicker.PrevButtonนำทางไปยังเดือนก่อนหน้า
DatePicker.NextButtonนำทางไปยังเดือนถัดไป
DatePicker.Titleแสดงเดือน/ปีปัจจุบัน (รองรับการเลือกแบบดรอปดาวน์)
DatePicker.Gridตารางปฏิทินพร้อมหัวข้อวันในสัปดาห์และเซลล์วัน
DatePicker.Dayเซลล์วันแต่ละวัน (ใช้ภายใน render prop ของ Grid)
DatePicker.Footerคอนเทนเนอร์สำหรับปุ่มดำเนินการ
DatePicker.ClearButtonล้างค่าที่เลือก
DatePicker.CancelButtonยกเลิกและปิด
DatePicker.ConfirmButtonยืนยันการเลือก
DatePicker.TodayButtonนำทางไปยังวันนี้

DateRangePicker

รวมส่วนประกอบทั้งหมดข้างต้นบวกกับ:

ส่วนประกอบคำอธิบาย
DateRangePicker.Calendarsคอนเทนเนอร์ปฏิทินคู่
DateRangePicker.Presetsคอนเทนเนอร์แถบด้านข้างสำหรับช่วงที่ตั้งไว้ล่วงหน้า
DateRangePicker.PresetItemปุ่มสำหรับแต่ละช่วงที่ตั้งไว้ล่วงหน้า

DateTimePicker / DateRangeTimePicker

รวมส่วนประกอบพื้นฐานของแต่ละตัวบวกกับการรวมแผงเวลาผ่าน API แบบง่าย แผงเวลาจะถูกเรนเดอร์โดยอัตโนมัติเมื่อใช้ส่วนประกอบแบบผสมกับ picker ที่เปิดใช้งานเวลา