# Rating Hiển thị điểm sao: dòng sao + số (`tt-rating`) và khối tổng hợp đánh giá có 5 thanh phân bố bấm lọc được (`tt-rating-summary`). ## Khi nào dùng - Hiện điểm trung bình hoặc điểm của một đánh giá: `tt-rating`. - Đầu tab Đánh giá: điểm lớn, số đánh giá và phân bố 5★…1★ để lọc: `tt-rating-summary`. ## Biến thể | Biến thể | Lớp | Dùng khi | |---|---|---| | Dòng sao | `tt-rating` | Sao `gold` + điểm bằng chữ | | Tổng hợp | `tt-rating-summary` | Điểm 2.4rem bên trái, 5 dòng phân bố bên phải | ## Cấu trúc ```html
``` Chuỗi sao dùng `TTMU.starString(4.6)`; điểm tiếng Việt dùng dấu phẩy. ## Trạng thái | Trạng thái | Hiệu ứng | |---|---| | `.tt-rating-summary__row[aria-pressed="true"]` | Nền `line` cả dòng, rãnh thanh đổi sang `panel` | ## Hành vi JS ```js var f = TTMU.ratingFilter(document.getElementById('rs'), { onChange: function (stars) {} }); f.value; // 1–5 hoặc null f.set(4); // đặt thủ công, set(null) để bỏ lọc ``` - Bấm dòng đang bật sẽ bỏ lọc. Gắn một lần (`data-tt-bound`); trả về `{ value, set(n), destroy() }`. - **Quy ước `onChange`:** chỉ thao tác của người dùng mới gọi `onChange`, và chỉ khi giá trị thật sự đổi; `set()` từ code thì im lặng. - `set()` với giá trị không phải số (`"abc"`, `NaN`) coi như `null` (bỏ lọc). ## Token sử dụng `gold`, `fill-muted` (rãnh thanh tóm tắt), `panel`, `soft`, `shadow-edge` (viền hàng lọc đang bật ở `hc`), `radius-8`, `space-4/6/10/16`. ## Khả năng tiếp cận - `gold` trên nền sáng chỉ khoảng 1.79:1, nên sao luôn đi kèm điểm bằng chữ; sao `aria-hidden`. - Mỗi dòng phân bố là `