fix(super-admin): убрать «моргание» при клике на орг — переход теперь по double-click
Some checks are pending
CI / POS (WPF, Windows) (push) Waiting to run
CI / Backend (.NET 8) (push) Successful in 1m7s
CI / Web (React + Vite) (push) Successful in 39s
Docker Web / Build + push Web (push) Successful in 33s
Docker Web / Deploy Web on stage (push) Successful in 11s

В списке организаций SuperAdmin одиночный клик навигировал на /super-admin/organizations/{id} и страница успевала отрисоваться → визуальное моргание. Изменил поведение:

- DataTable теперь поддерживает onRowDoubleClick параллельно onRowClick.
- SuperAdminOrganizationsPage: убран single-click navigate; double-click → setOrgOverride + переход на /dashboard этой орги (вход в её личный кабинет).
- Кнопки в колонке действий не задеты — у них уже stopPropagation.
This commit is contained in:
nurdotnet 2026-05-03 02:50:50 +05:00
parent a54315bd6e
commit 36b4fb1b31
2 changed files with 7 additions and 3 deletions

View file

@ -18,6 +18,7 @@ interface DataTableProps<T> {
columns: Column<T>[]
rowKey: (row: T) => string
onRowClick?: (row: T) => void
onRowDoubleClick?: (row: T) => void
empty?: ReactNode
isLoading?: boolean
/** If true (default), the table wraps itself in a scrollable container with a sticky thead.
@ -31,7 +32,7 @@ interface DataTableProps<T> {
}
export function DataTable<T>({
rows, columns, rowKey, onRowClick, empty, isLoading, scrollable = true,
rows, columns, rowKey, onRowClick, onRowDoubleClick, empty, isLoading, scrollable = true,
sortKey, sortOrder, onSortChange,
}: DataTableProps<T>) {
const handleHeaderClick = (key: string) => {
@ -95,8 +96,11 @@ export function DataTable<T>({
<tr
key={rowKey(row)}
onClick={() => onRowClick?.(row)}
onDoubleClick={() => onRowDoubleClick?.(row)}
className={cn(
onRowClick && 'cursor-pointer hover:bg-slate-50 dark:hover:bg-slate-800/30',
(onRowClick || onRowDoubleClick) && 'hover:bg-slate-50 dark:hover:bg-slate-800/30',
onRowDoubleClick && 'cursor-pointer select-none',
onRowClick && !onRowDoubleClick && 'cursor-pointer',
)}
>
{columns.map((c, i) => (

View file

@ -92,7 +92,7 @@ export function SuperAdminOrganizationsPage() {
sortKey={list.sortKey}
sortOrder={list.sortOrder}
onSortChange={list.setSort}
onRowClick={(r) => navigate(`/super-admin/organizations/${r.id}`)}
onRowDoubleClick={(r) => setOrgOverride({ id: r.id, name: r.name }, { redirectTo: '/dashboard' })}
columns={[
{ header: 'Название', cell: (r) => (
<div>