From f898461f07c8a1324491741925ac43f26e3aa733 Mon Sep 17 00:00:00 2001 From: Keyur Paralkar Date: Fri, 7 Jul 2023 12:16:48 +0530 Subject: [PATCH] fix: prevent click event on disabled next page button of table widget (#25119) ## Description This PR fixes the issue mentioned below by preventing the click event when the next page button is disabled and when it is table's last page. #### PR fixes following issue(s) Fixes #22477 #### Type of change - Bug fix (non-breaking change which fixes an issue) ## Testing #### How Has This Been Tested? - [x] Manual - [ ] Jest - [ ] Cypress - should check whether the next page button is disabled and not clickable when last page is reached #### Test Plan > Add Testsmith test cases links that relate to this PR > > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --- .../Binding/TableV2_Widget_API_Pagination_spec.js | 15 +++++++++++++++ .../component/header/actions/index.tsx | 8 +++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js b/app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js index 8892bd9a4b..6cc8330afd 100644 --- a/app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js +++ b/app/client/cypress/e2e/Regression/ClientSide/Binding/TableV2_Widget_API_Pagination_spec.js @@ -4,6 +4,7 @@ import { entityExplorer, propPane, apiPage, + table, } from "../../../../support/Objects/ObjectsCore"; describe("Test Create Api and Bind to Table widget V2", function () { @@ -34,4 +35,18 @@ describe("Test Create Api and Bind to Table widget V2", function () { .first() .should("contain", "2"); }); + + it("2. Bug #22477: should check whether the next page button is disabled and not clickable when last page is reached", () => { + /** + * Flow: + * Update total records count to 20 + * Click next page + */ + + propPane.UpdatePropertyFieldValue("Total Records", "20"); + agHelper.GetNClick(table._nextPage("v2")); + + agHelper.AssertAttribute(table._nextPage("v2"), "disabled", "disabled"); + agHelper.AssertElementAbsence(commonlocators._toastMsg); + }); }); diff --git a/app/client/src/widgets/TableWidgetV2/component/header/actions/index.tsx b/app/client/src/widgets/TableWidgetV2/component/header/actions/index.tsx index a68eda52cd..98233cae13 100644 --- a/app/client/src/widgets/TableWidgetV2/component/header/actions/index.tsx +++ b/app/client/src/widgets/TableWidgetV2/component/header/actions/index.tsx @@ -237,7 +237,13 @@ function Actions(props: ActionsPropsType) { props.pageNo === props.pageCount - 1 } onClick={() => { - props.nextPageClick(); + if ( + !( + !!props.totalRecordsCount && + props.pageNo === props.pageCount - 1 + ) + ) + props.nextPageClick(); }} >