fix(super-admin): убрать «моргание» при клике на орг — переход теперь по double-click
Some checks are pending
Some checks are pending
В списке организаций SuperAdmin одиночный клик навигировал на /super-admin/organizations/{id} и страница успевала отрисоваться → визуальное моргание. Изменил поведение:
- DataTable теперь поддерживает onRowDoubleClick параллельно onRowClick.
- SuperAdminOrganizationsPage: убран single-click navigate; double-click → setOrgOverride + переход на /dashboard этой орги (вход в её личный кабинет).
- Кнопки в колонке действий не задеты — у них уже stopPropagation.
This commit is contained in:
parent
a54315bd6e
commit
36b4fb1b31
|
|
@ -18,6 +18,7 @@ interface DataTableProps<T> {
|
||||||
columns: Column<T>[]
|
columns: Column<T>[]
|
||||||
rowKey: (row: T) => string
|
rowKey: (row: T) => string
|
||||||
onRowClick?: (row: T) => void
|
onRowClick?: (row: T) => void
|
||||||
|
onRowDoubleClick?: (row: T) => void
|
||||||
empty?: ReactNode
|
empty?: ReactNode
|
||||||
isLoading?: boolean
|
isLoading?: boolean
|
||||||
/** If true (default), the table wraps itself in a scrollable container with a sticky thead.
|
/** 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>({
|
export function DataTable<T>({
|
||||||
rows, columns, rowKey, onRowClick, empty, isLoading, scrollable = true,
|
rows, columns, rowKey, onRowClick, onRowDoubleClick, empty, isLoading, scrollable = true,
|
||||||
sortKey, sortOrder, onSortChange,
|
sortKey, sortOrder, onSortChange,
|
||||||
}: DataTableProps<T>) {
|
}: DataTableProps<T>) {
|
||||||
const handleHeaderClick = (key: string) => {
|
const handleHeaderClick = (key: string) => {
|
||||||
|
|
@ -95,8 +96,11 @@ export function DataTable<T>({
|
||||||
<tr
|
<tr
|
||||||
key={rowKey(row)}
|
key={rowKey(row)}
|
||||||
onClick={() => onRowClick?.(row)}
|
onClick={() => onRowClick?.(row)}
|
||||||
|
onDoubleClick={() => onRowDoubleClick?.(row)}
|
||||||
className={cn(
|
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) => (
|
{columns.map((c, i) => (
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ export function SuperAdminOrganizationsPage() {
|
||||||
sortKey={list.sortKey}
|
sortKey={list.sortKey}
|
||||||
sortOrder={list.sortOrder}
|
sortOrder={list.sortOrder}
|
||||||
onSortChange={list.setSort}
|
onSortChange={list.setSort}
|
||||||
onRowClick={(r) => navigate(`/super-admin/organizations/${r.id}`)}
|
onRowDoubleClick={(r) => setOrgOverride({ id: r.id, name: r.name }, { redirectTo: '/dashboard' })}
|
||||||
columns={[
|
columns={[
|
||||||
{ header: 'Название', cell: (r) => (
|
{ header: 'Название', cell: (r) => (
|
||||||
<div>
|
<div>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue