From 8a2b53d0b285784df3ca7c5330af04bf9d928f45 Mon Sep 17 00:00:00 2001 From: NotBigGhost Date: Sat, 18 Jul 2026 03:13:05 +0300 Subject: [PATCH] =?UTF-8?q?UI:=20=D0=B4=D0=BE=D0=B2=D0=BE=D0=B4=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=D1=8B=D0=BF=D0=B0=D0=B4=D0=B0=D1=88=D0=B5=D0=BA?= =?UTF-8?q?=20=D0=B8=D0=B3=D1=80=D0=BE=D0=BA=D0=BE=D0=B2=20=E2=80=94=20?= =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20=D0=BF=D1=83=D1=81=D1=82=D1=8B=D1=85=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=D0=BE=D0=B2,=20?= =?UTF-8?q?=D1=84=D0=BE=D0=BD=20=D0=BA=D0=B0=D0=BA=20=D1=83=20select,=20?= =?UTF-8?q?=D0=B1=D1=8B=D1=81=D1=82=D1=80=D0=B5=D0=B5=20=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=BB=D0=B8=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Из списков убраны варианты-плейсхолдеры («— игрок —» в выборе игрока, «— фракция —» в выборе фракции — disabled+hidden, в закрытом виде текст остаётся). Фон .suggest-list — surface-2, как у input/select; hover строк — --border. Скорость: дебаунс поиска 250→100 мс, в инвайте показанный список дофильтровывается по вводу на клиенте, не дожидаясь ответа сервера; touch-action: manipulation на строках и триггере. Co-Authored-By: Claude Fable 5 --- frontend/src/components/PlayerSelect.tsx | 10 +--------- frontend/src/components/PlayerSuggestions.tsx | 17 +---------------- frontend/src/hooks/users.ts | 5 +++-- frontend/src/pages/CreateMatchPage.tsx | 6 +++++- frontend/src/pages/GroupPage.tsx | 7 ++++++- frontend/src/styles/global.css | 7 ++++--- 6 files changed, 20 insertions(+), 32 deletions(-) diff --git a/frontend/src/components/PlayerSelect.tsx b/frontend/src/components/PlayerSelect.tsx index 8e4afeb..8c9612e 100644 --- a/frontend/src/components/PlayerSelect.tsx +++ b/frontend/src/components/PlayerSelect.tsx @@ -16,7 +16,7 @@ export function PlayerSelect({ }: { value: number | ""; options: PlayerSuggestion[]; - onPick: (userId: number | "") => void; + onPick: (userId: number) => void; }) { const [open, setOpen] = useState(false); const selected = value === "" ? null : options.find((o) => o.user_id === value) ?? null; @@ -48,14 +48,6 @@ export function PlayerSelect({ onPick(u.user_id); setOpen(false); }} - onClear={ - selected - ? () => { - onPick(""); - setOpen(false); - } - : undefined - } /> )} diff --git a/frontend/src/components/PlayerSuggestions.tsx b/frontend/src/components/PlayerSuggestions.tsx index 1c165ac..feb078d 100644 --- a/frontend/src/components/PlayerSuggestions.tsx +++ b/frontend/src/components/PlayerSuggestions.tsx @@ -14,28 +14,13 @@ export interface PlayerSuggestion { export function PlayerSuggestions({ items, onPick, - onClear, }: { items: PlayerSuggestion[]; onPick: (item: PlayerSuggestion) => void; - // Необязательная строка сброса сверху списка («— игрок —» в PlayerSelect). - onClear?: () => void; }) { - if (items.length === 0 && !onClear) return null; + if (items.length === 0) return null; return (
- {onClear && ( - - )} {items.map((u) => (