Giao diện
@digiforce-nc/plugin-block-list
Plugin hiển thị dữ liệu collection dưới dạng danh sách dọc (List View) - mỗi bản ghi là một hàng có layout tùy chỉnh, phù hợp cho danh sách bài viết, feed hoạt động, hoặc danh mục chi tiết.
Plugin này làm gì?
Grid Card sắp xếp thẻ theo lưới ngang, còn List View xếp từng bản ghi theo chiều dọc - mỗi item chiếm toàn bộ chiều ngang. Đây là layout quen thuộc cho blog posts, danh sách đơn hàng, hay feed thông báo.
Ba nhiệm vụ chính
| # | Nhiệm vụ | Chi tiết |
|---|---|---|
| 1 | Hiển thị danh sách dọc | Mỗi bản ghi là một hàng full-width với layout tùy chỉnh |
| 2 | Phân trang & tìm kiếm | Pagination known/unknown count, tích hợp filter/search |
| 3 | Item designer | Kéo thả field vào template của từng item |
Kiến trúc
Tổng quan
Giống như Grid Card, plugin hoạt động hoàn toàn ở client - không có server hay database riêng. Dữ liệu lấy từ collection API có sẵn.
Widget hierarchy
| Widget | Kế thừa từ | Vai trò |
|---|---|---|
ListBlockWidget | CollectionBlockWidget | Block chính, quản lý resource, pagination, toolbar |
ListItemWidget | CollectionBlockWidget | Đại diện một item trong danh sách |
So sánh với Grid Card
| Tiêu chí | Grid Card | List |
|---|---|---|
| Layout | Lưới ngang, nhiều cột | Danh sách dọc, 1 cột |
| Responsive | Số cột thay đổi theo breakpoint | Luôn 1 cột, chiều rộng item thay đổi |
| Use case | Catalog sản phẩm, thư viện ảnh | Blog, đơn hàng, feed |
| Shared | Cùng dùng MultiRecordResource, pagination, DnD | Cùng dùng MultiRecordResource, pagination, DnD |
Luồng hiển thị dữ liệu
Tính năng
| Tính năng | Mô tả |
|---|---|
| Danh sách dọc | Layout dọc full-width, dễ đọc trên mobile |
| Pagination | Phân trang known/unknown count |
| Item designer | Tùy chỉnh layout từng item bằng drag & drop |
| Toolbar actions | Filter, sort, refresh, bulk actions |
| Search | Tìm kiếm nhanh trên toolbar |
| Association support | Hiển thị list trong popup association |
| DnD reorder | Sắp xếp lại thứ tự item |
| Multi data source | Hoạt động với mọi data source |
Thành phần client
| Thành phần | Mô tả |
|---|---|
ListBlockWidget | Widget chính, extends CollectionBlockWidget, quản lý list layout |
ListItemWidget | Widget item con, render từng bản ghi theo template |
List | Component React render danh sách với Ant Design List |
ListDesigner | Designer cho phép cấu hình item template |
ListBlockInitializer | Đăng ký block vào menu "Add block" |
listActionInitializers | Nhóm action toolbar: filter, sort, refresh, bulk |
ListItemActionInitializers | Action trên từng item: view, edit, delete |
Dependencies
| Package | Vai trò |
|---|---|
@digiforce-nc/client | Client framework, widget system (peer) |
@digiforce-nc/server | Server framework - chỉ dùng khi build (peer) |
antd | Ant Design - List component (peer) |
@dnd-kit/core | Drag & drop framework (peer) |