ตัวอย่างการทำ Tab ด้วย Headless UI ของดีจาก Tailwind Labs
Headlessui เป็น UI Components จากทีม Tailwind Labs ปัจจุบัน รองรับ React.js และ Vue.js โดยปัจจุบันมี Component ให้เลือก เช่น Dropdown, Menu, Toggle, Switch, Listbox, Tab, Dialog เป็นต้นครับ
เนื่องจากมันเป็น Headless UI ก็จะไม่มี css หรือ default style มาให้ เราสามารถใช้ CSS อะไรก็ได้ (แต่ตัวอย่างนี้ผมใช้ Tailwind CSS เนื่องจากเป็นทีมเดียวกันกับ headdlessui ครับ)
วันนี้ก็เลยลองเล่นตัว Tabs ซักหน่อย ข้อดีนอกจากมี UI มาให้แล้ว คือมีเรื่องของ ARIA มาให้ด้วย ไม่ต้องกำหนด role
และ attribute
เพิ่มเอง ทำให้สามารถใช้ Keyboard short cut ได้เลย
ลองทำ headlessui Tabs
ทดลองสร้างโปรเจ็คขึ้นมาเลยดีกว่า โดยตัวโปรเจ็คจะใช้ Vite.js ขึ้นโปรเจ็คเป็น React.js ครับ ซึ่ง Library ต่างๆ ที่ใช้ในบทความประกอบไปด้วย
- React v18.2.0
- Headlessui v1.6.6
- Tailwind v3.1
- Vite v3.0.7
1. สร้างโปรเจ็คด้วย Vite
จากนั้นตั้งชื่อโปรเจ็คและเลือก react และ react (ใครจะเลือก typesript ก็ได้นะครับ)
เมื่อ setup Vite เสร็จแล้ว ก็ทำการเปิดโฟลเดอร์ที่เราเพิ่ง init แล้ว install dependencies
2. ทำการติดตั้ง tailwindcss
เราจะใช้ tailwind เป็น css หลัก
ต่อมา init tailwindcss จะได้ไฟล์ tailwind.config.js
และ postcss.config.js
แก้ไขไฟล์ tailwind.css.js
เพื่อให้มันรู้ว่าไฟล์ index.html
และไฟล์ต่างๆของ react จะใช้ tailwind
สุดท้าย เพิ่มตรงนี้ลงไป ที่ไฟล์ index.css
3. headlessui tabs
ติดตั้ง headlessui tabs
ตัวโครงสร้างในการสร้าง Tab ประกอบไปด้วย Tab.Group
, Tab.List
, Tab
, Tab.Panels
, และ Tab.Panel
โดย Component เริ่มต้นจะมีหน้าตาประมาณนี้
ตัวอย่างภาพ เพื่อให้เห็นภาพมากขึ้น ว่า Tab.List
และ Tab.Panels
คือส่วนไหน
สร้างไฟล์ TabExample.jsx
ขึ้นมา ใน folder components
ซึ่งตัวอย่างโค๊ด ก็เป็นตัวอย่างเดียวกับเว็บ headless ui ครับ
แก้ไขไฟล์ App.jsx
นิดหน่อย (ลบ state counter ออก) และทำการ import TabExample
มาใช้
ทดลองรันโปรแกรม
และเปิดหน้าเว็บขึ้นมาดูผลลัพธ์ http://localhost:5173
References
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust