Как и в списке партий группы: карточка целиком ведёт в партию, ссылки на профили внутри мешали выбору. Элемент возвращён к <button>. Плюс правка подписи кнопки создания группы: «+ Создать группу» -> «Создать группу». Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { useState } from "react";
|
|
|
|
import { useMe, useSetActiveGroup } from "../hooks/auth";
|
|
import { CreateGroupForm } from "./CreateGroupForm";
|
|
|
|
export function GroupSwitcher() {
|
|
const { data: me } = useMe();
|
|
const setActive = useSetActiveGroup();
|
|
const [creating, setCreating] = useState(false);
|
|
if (!me || me.groups.length === 0) return null;
|
|
|
|
return (
|
|
<div className="card">
|
|
<h3>Мои группы</h3>
|
|
<div className="stack">
|
|
{me.groups.map((g) => {
|
|
const active = g.id === me.active_group_id;
|
|
return (
|
|
<button
|
|
key={g.id}
|
|
className={"btn" + (active ? " btn-primary" : "")}
|
|
onClick={() => !active && setActive.mutate(g.id)}
|
|
>
|
|
{g.name} {active && "✓"}
|
|
</button>
|
|
);
|
|
})}
|
|
{/* Плашка создания новой группы — в одном ряду логики с выбором группы. */}
|
|
<button className="btn" onClick={() => setCreating((v) => !v)}>
|
|
Создать группу
|
|
</button>
|
|
</div>
|
|
|
|
{creating && (
|
|
<div style={{ marginTop: 12 }}>
|
|
<CreateGroupForm onCreated={() => setCreating(false)} />
|
|
</div>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|