From 60a6e91aefe29c7e14573eaf1304e13425320d03 Mon Sep 17 00:00:00 2001 From: Emiel Kremers Date: Mon, 9 Mar 2026 15:22:51 +0100 Subject: [PATCH 1/2] feat(data-table): add customizable pagination labels for improved user experience - Introduced `paginationPageInfoLabel` and `paginationTotalRecordsLabel` props to the DataTable component for dynamic pagination information. - Updated the ModManagementPage to utilize these new props with translations for better localization. - Added corresponding entries in the admin JSON locale file for pagination text. --- .../src/components/layout/ui/data-table.tsx | 17 +++++++++++++--- studio/src/i18n/locales/en/admin.json | 12 +++++++++++ .../mod-management/ConfigFieldRenderer.tsx | 20 +++++++++++++++---- .../mod-management/ModManagementPage.tsx | 11 ++++++++++ 4 files changed, 53 insertions(+), 7 deletions(-) diff --git a/studio/src/components/layout/ui/data-table.tsx b/studio/src/components/layout/ui/data-table.tsx index c0378db90..60a12fb3f 100644 --- a/studio/src/components/layout/ui/data-table.tsx +++ b/studio/src/components/layout/ui/data-table.tsx @@ -50,6 +50,8 @@ export interface DataTableProps { toolbar?: React.ReactNode className?: string onRowClick?: (row: TData) => void + paginationPageInfoLabel?: (currentPage: number, totalPages: number) => string + paginationTotalRecordsLabel?: (totalRecords: number) => string } export function DataTable({ @@ -67,6 +69,9 @@ export function DataTable({ toolbar, className, onRowClick, + paginationPageInfoLabel = (currentPage, totalPages) => + `Page ${currentPage} of ${totalPages}`, + paginationTotalRecordsLabel = (totalRecords) => `${totalRecords} records`, }: DataTableProps) { const [sorting, setSorting] = React.useState([]) const [columnFilters, setColumnFilters] = React.useState( @@ -237,11 +242,17 @@ export function DataTable({
- 第 {table.getState().pagination.pageIndex + 1} 页,共{" "} - {table.getPageCount()} 页 + {paginationPageInfoLabel( + table.getState().pagination.pageIndex + 1, + table.getPageCount() + )} - 共 {table.getFilteredRowModel().rows.length} 条记录 + + {paginationTotalRecordsLabel( + table.getFilteredRowModel().rows.length + )} +
); @@ -277,7 +289,7 @@ const ConfigFieldRenderer: React.FC = ({ default: return (
- 不支持的字段类型: {field.type} + {t('modManagement.settings.unsupportedFieldType', '不支持的字段类型')}: {field.type}
); } diff --git a/studio/src/pages/mod-management/ModManagementPage.tsx b/studio/src/pages/mod-management/ModManagementPage.tsx index cdf3592a5..5d47f8f09 100644 --- a/studio/src/pages/mod-management/ModManagementPage.tsx +++ b/studio/src/pages/mod-management/ModManagementPage.tsx @@ -411,6 +411,17 @@ const ModManagementPage: React.FC = () => { searchColumn={["id", "name", "displayName", "description"]} pagination={true} pageSize={10} + paginationPageInfoLabel={(currentPage, totalPages) => + t("modManagement.table.pageInfo", "第 {{current}} 页,共 {{total}} 页", { + current: currentPage, + total: totalPages, + }) + } + paginationTotalRecordsLabel={(totalRecords) => + t("modManagement.table.totalRecords", "共 {{count}} 条记录", { + count: totalRecords, + }) + } emptyMessage={t( "modManagement.enabledMods.empty", "No mods configured" From d4fd6582db05e63a10f0c6705d322580804f8864 Mon Sep 17 00:00:00 2001 From: Emiel Kremers Date: Mon, 9 Mar 2026 15:32:59 +0100 Subject: [PATCH 2/2] feat(i18n): add search placeholder for agents in network localization - Introduced a new translation key `searchPlaceholder` in the network JSON locale file to enhance user experience by providing a prompt for searching agents. --- studio/src/i18n/locales/en/network.json | 1 + 1 file changed, 1 insertion(+) diff --git a/studio/src/i18n/locales/en/network.json b/studio/src/i18n/locales/en/network.json index 558fed526..f7a08eeec 100644 --- a/studio/src/i18n/locales/en/network.json +++ b/studio/src/i18n/locales/en/network.json @@ -75,6 +75,7 @@ "refresh": "Refresh", "total": "Total Agents", "online": "Online Agents", + "searchPlaceholder": "Search agents...", "empty": "No agents connected", "you": "(You)", "kick": "Kick",