{selectedCount != null && selectedCount > 0
- ? `Выбрано: ${selectedCount} из ${table.getFilteredRowModel().rows.length}`
- : `Всего: ${table.getFilteredRowModel().rows.length}`}
+ ? `Выбрано: ${selectedCount} из ${total}`
+ : `${from}–${to} из ${total}`}
-
-
-
- table.previousPage()}
- aria-disabled={!table.getCanPreviousPage()}
- className={!table.getCanPreviousPage() ? 'pointer-events-none opacity-50' : undefined}
- />
-
- {pages.map((page, idx) =>
- page === 'ellipsis' ? (
-
-
+
+
+ {pageSizeLabel}
+
+
+ {pageCount > 1 && (
+
+
+
+ table.previousPage()}
+ aria-disabled={!table.getCanPreviousPage()}
+ className={!table.getCanPreviousPage() ? 'pointer-events-none opacity-50' : undefined}
+ />
- ) : (
-
- table.setPageIndex(page - 1)}
- >
- {page}
-
+ {buildPageRange(pageIndex + 1, pageCount).map((page, idx) =>
+ page === 'ellipsis' ? (
+
+
+
+ ) : (
+
+ table.setPageIndex(page - 1)}
+ >
+ {page}
+
+
+ ),
+ )}
+
+ table.nextPage()}
+ aria-disabled={!table.getCanNextPage()}
+ className={!table.getCanNextPage() ? 'pointer-events-none opacity-50' : undefined}
+ />
- ),
- )}
-
- table.nextPage()}
- aria-disabled={!table.getCanNextPage()}
- className={!table.getCanNextPage() ? 'pointer-events-none opacity-50' : undefined}
- />
-
-
-
+
+
+ )}
+
)
}
diff --git a/apps/web/src/components/data-table-toolbar.tsx b/apps/web/src/components/data-table-toolbar.tsx
index 0f6f2a4..918ed51 100644
--- a/apps/web/src/components/data-table-toolbar.tsx
+++ b/apps/web/src/components/data-table-toolbar.tsx
@@ -13,13 +13,11 @@ import {
DropdownMenuLabel,
DropdownMenuRadioGroup,
DropdownMenuRadioItem,
- DropdownMenuSeparator,
DropdownMenuTrigger,
} from '@cfdm/ui/components/dropdown-menu'
import { AppButton } from '@/components/app-button'
import {
densityLabel,
- pageSizeOptions,
type Density,
} from '@/components/data-table-density'
@@ -66,13 +64,11 @@ export function DataTableToolbar