↕️ Bài 25: Drag & Drop Reorder
List 8 task có thể drag để sắp xếp lại thứ tự. Bài tập về UI interaction + state ordering + persistence.
📋 Quy tắc
- Mỗi item có handle (≡) để drag.
- Khi drag → hiển thị placeholder ở vị trí mới.
- Drop ở vị trí khác → cập nhật thứ tự.
- Drop ngoài area hoặc về vị trí cũ → không thay đổi.
- Mỗi item hiển thị
order index (1, 2, 3, ...).
- Có nút "Save order" để persist (lưu vào localStorage).
- Có nút "Reset" để về thứ tự mặc định.
📌 Items mặc định
- Mua đồ tạp hóa
- Đi tập gym
- Họp với team
- Code review
- Đọc sách
- Nấu cơm
- Gọi điện cho mẹ
- Xem phim cuối tuần
🎯 Yêu cầu
- Test drag từ vị trí A → vị trí B (cả lên và xuống).
- Test drag rồi drop về vị trí cũ (không thay đổi).
- Test order index update sau mỗi lần drop.
- Test Save → Reload trang → thứ tự có giữ?
- Test Reset → về default 1-8.
- Test edge case: drag item lên đầu, drag item xuống cuối.
⚠️ Bug được cài cắm: order index không update, save không persist đúng, reset không hoạt động đầy đủ, drop về vị trí cũ vẫn trigger reorder.