diff --git a/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/DisplayWidgets/Table_spec.js b/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/DisplayWidgets/Table_spec.js index 87c5320215..77b142017d 100644 --- a/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/DisplayWidgets/Table_spec.js +++ b/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/DisplayWidgets/Table_spec.js @@ -268,6 +268,21 @@ describe("Table Widget Functionality", function() { }); }); + it("Check Selected Row(s) Resets When Table Data Changes", function() { + cy.isSelectRow(1); + cy.openPropertyPane("tablewidget"); + + const newTableData = [...this.data.TableInput]; + newTableData[0].userName = ""; + cy.testJsontext("tabledata", JSON.stringify(newTableData)); + cy.wait("@updateLayout"); + const selectedRowsSelector = `.t--widget-tablewidget .tbody .tr.selected-row`; + cy.get(selectedRowsSelector).should(($p) => { + // should found 0 rows + expect($p).to.have.length(0); + }); + }); + /* To enabled later diff --git a/app/client/src/widgets/TableWidget/index.tsx b/app/client/src/widgets/TableWidget/index.tsx index 33236cf47e..aaf4e3f7f3 100644 --- a/app/client/src/widgets/TableWidget/index.tsx +++ b/app/client/src/widgets/TableWidget/index.tsx @@ -712,6 +712,8 @@ class TableWidget extends BaseWidget { "filteredTableData", filteredTableData, ); + //Update selectedRow indices since tableData is changed + this.updateSelectedRowIndex(); } } @@ -736,23 +738,7 @@ class TableWidget extends BaseWidget { // If the user changed the defaultSelectedRow(s) if (!isEqual(this.props.defaultSelectedRow, prevProps.defaultSelectedRow)) { //Runs only when defaultSelectedRow is changed from property pane - if (!this.props.multiRowSelection) { - const selectedRowIndex = isNumber(this.props.defaultSelectedRow) - ? this.props.defaultSelectedRow - : -1; - this.props.updateWidgetMetaProperty( - "selectedRowIndex", - selectedRowIndex, - ); - } else { - const selectedRowIndices = Array.isArray(this.props.defaultSelectedRow) - ? this.props.defaultSelectedRow - : []; - this.props.updateWidgetMetaProperty( - "selectedRowIndices", - selectedRowIndices, - ); - } + this.updateSelectedRowIndex(); } if (this.props.pageSize !== prevProps.pageSize) { @@ -767,6 +753,23 @@ class TableWidget extends BaseWidget { } } + updateSelectedRowIndex = () => { + if (!this.props.multiRowSelection) { + const selectedRowIndex = isNumber(this.props.defaultSelectedRow) + ? this.props.defaultSelectedRow + : -1; + this.props.updateWidgetMetaProperty("selectedRowIndex", selectedRowIndex); + } else { + const selectedRowIndices = Array.isArray(this.props.defaultSelectedRow) + ? this.props.defaultSelectedRow + : []; + this.props.updateWidgetMetaProperty( + "selectedRowIndices", + selectedRowIndices, + ); + } + }; + getSelectedRowIndexes = (selectedRowIndices: string) => { return selectedRowIndices ? selectedRowIndices.split(",").map((i) => Number(i))