diff --git a/frontend/src/Editor/Components/Table/Pagination.jsx b/frontend/src/Editor/Components/Table/Pagination.jsx index 445f452620..60091289dc 100644 --- a/frontend/src/Editor/Components/Table/Pagination.jsx +++ b/frontend/src/Editor/Components/Table/Pagination.jsx @@ -6,15 +6,25 @@ export const Pagination = function Pagination({ autoGotoPage, autoCanNextPage, autoPageCount, - autoPageOptions + autoPageOptions, + lastActivePageIndex }) { - const [pageIndex, setPageIndex] = useState(1); + const [pageIndex, setPageIndex] = useState(lastActivePageIndex ?? 1); const [pageCount, setPageCount] = useState(autoPageCount); useEffect(() => { setPageCount(autoPageCount); }, [autoPageCount]); + useEffect(() => { + + if(serverSide && lastActivePageIndex > 0) { + setPageCount(lastActivePageIndex) + } else if(serverSide || lastActivePageIndex === 0) { + setPageIndex(1) + } + }, [serverSide, lastActivePageIndex ]) + function gotoPage(page) { setPageIndex(page); onPageIndexChanged(page); diff --git a/frontend/src/Editor/Components/Table/Table.jsx b/frontend/src/Editor/Components/Table/Table.jsx index 0724d41620..c25adeffde 100644 --- a/frontend/src/Editor/Components/Table/Table.jsx +++ b/frontend/src/Editor/Components/Table/Table.jsx @@ -47,6 +47,15 @@ export function Table({ const displaySearchBoxProperty = component.definition.properties.displaySearchBox; const displaySearchBox = displaySearchBoxProperty ? displaySearchBoxProperty.value : true; + const showDownloadButtonProperty = component.definition.properties.showDownloadButton?.value; + const showDownloadButton = resolveWidgetFieldValue(showDownloadButtonProperty, currentState) ?? true; // default is true for backward compatibility + + const showFilterButtonProperty = component.definition.properties.showFilterButton?.value; + const showFilterButton = resolveWidgetFieldValue(showFilterButtonProperty, currentState) ?? true; // default is true for backward compatibility + + const clientSidePaginationProperty = component.definition.properties.clientSidePagination?.value; + const clientSidePagination = resolveWidgetFieldValue(clientSidePaginationProperty, currentState) ?? !serverSidePagination; // default is true for backward compatibility + const tableTypeProperty = component.definition.styles.tableType; let tableType = tableTypeProperty ? tableTypeProperty.value : 'table-bordered'; tableType = tableType === '' ? 'table-bordered' : tableType; @@ -584,7 +593,7 @@ export function Table({ columns, data, defaultColumn, - initialState: { pageIndex: 0, pageSize: serverSidePagination ? -1 : 10}, // pageSize should be unset if server-side pagination is enabled + initialState: { pageIndex: 0, pageSize: -1}, pageCount: -1, manualPagination: false, getExportFileBlob @@ -598,6 +607,18 @@ export function Table({ useExportData ); + + + React.useEffect(() => { + if(serverSidePagination || !clientSidePagination) { + setPageSize(-1) + } + if(!serverSidePagination && clientSidePagination) { + setPageSize(10) + } + + },[clientSidePagination, serverSidePagination]) + useEffect(() => { const pageData = page.map(row => row.original); const currentData = rows.map(row => row.original);; @@ -669,36 +690,15 @@ export function Table({ onClick={event => {event.stopPropagation(); onComponentClick(id, component)}} > {/* Show top bar unless search box is disabled and server pagination is enabled */} - {(!(!displaySearchBox && serverSidePagination) && + {displaySearchBox &&