UI: единый PlayerLink — ники игроков кликабельны во всех местах просмотра
Новый компонент PlayerLink (ссылка на /u/:id, кликабельно всё поле строки, stopPropagation для вложенности в кликабельные карточки). Применён: - Leaderboard и общая статистика (рефакторинг ручных Link); - страница партии: результаты и состав; - настройки группы: список участников; - список партий и незавершённые на главной (карточки button -> div, т.к. ссылки внутри button — невалидная разметка). «пригласил: X» в приглашениях остаётся текстом — в API нет id пригласившего. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
import type { LeaderboardEntry } from "../domain/types";
|
||||
import { Avatar } from "./Avatar";
|
||||
import { PlayerLink } from "./PlayerLink";
|
||||
|
||||
function pct(v: number | null | undefined): string {
|
||||
return v == null ? "—" : `${Math.round(v * 100)}%`;
|
||||
@@ -9,14 +8,9 @@ function pct(v: number | null | undefined): string {
|
||||
|
||||
function Row({ entry }: { entry: LeaderboardEntry }) {
|
||||
return (
|
||||
// Вся строка — ссылка на профиль. stopPropagation: на главной карточка-обёртка
|
||||
// ведёт в общую статистику, а клик по строке игрока — в его профиль.
|
||||
<Link
|
||||
to={`/u/${entry.user_id}`}
|
||||
className="lb-row"
|
||||
style={{ color: "inherit" }}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
// Вся строка — ссылка на профиль (на главной карточка-обёртка ведёт в общую
|
||||
// статистику, а клик по строке игрока — в его профиль).
|
||||
<PlayerLink userId={entry.user_id} className="lb-row">
|
||||
<div className={"lb-rank" + (entry.rank && entry.rank <= 3 ? " top" : "")}>
|
||||
{entry.rank ?? "—"}
|
||||
</div>
|
||||
@@ -30,7 +24,7 @@ function Row({ entry }: { entry: LeaderboardEntry }) {
|
||||
</div>
|
||||
</div>
|
||||
<div className="lb-score">{entry.score ?? "—"}</div>
|
||||
</Link>
|
||||
</PlayerLink>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user