diff --git a/frontend/src/Editor/Components/Table/Table.jsx b/frontend/src/Editor/Components/Table/Table.jsx index ae4612add1..5644fa8c19 100644 --- a/frontend/src/Editor/Components/Table/Table.jsx +++ b/frontend/src/Editor/Components/Table/Table.jsx @@ -455,6 +455,21 @@ export function Table({ }, [serverSidePagination, clientSidePagination, setPaginationInternalPageIndex] ); + registerAction( + 'selectRow', + async function (key, value) { + const item = tableData.filter((item) => item[key] == value); + const row = rows.find((item, index) => item.original[key] == value); + if (row != undefined) { + const selectedRowDetails = { selectedRow: item[0], selectedRowId: row.id }; + mergeToTableDetails(selectedRowDetails); + setExposedVariables(selectedRowDetails).then(() => { + fireEvent('onRowClicked'); + }); + } + }, + [JSON.stringify(tableData), JSON.stringify(tableDetails.selectedRow)] + ); useEffect(() => { const selectedRowsOriginalData = selectedFlatRows.map((row) => row.original); diff --git a/frontend/src/Editor/Inspector/EventManager.jsx b/frontend/src/Editor/Inspector/EventManager.jsx index f0a1afe0ec..01beb7d0ed 100644 --- a/frontend/src/Editor/Inspector/EventManager.jsx +++ b/frontend/src/Editor/Inspector/EventManager.jsx @@ -601,7 +601,7 @@ export const EventManager = ({ const newParam = { ...param, value: value }; const params = event?.componentSpecificActionParams ?? []; const newParams = params.map((paramOfParamList) => - paramOfParamList.handle === param.handle ? newParam : param + paramOfParamList.handle === param.handle ? newParam : paramOfParamList ); handlerChanged(index, 'componentSpecificActionParams', newParams); }} diff --git a/frontend/src/Editor/WidgetManager/widgetConfig.js b/frontend/src/Editor/WidgetManager/widgetConfig.js index 62028a53bf..a0498a0a50 100644 --- a/frontend/src/Editor/WidgetManager/widgetConfig.js +++ b/frontend/src/Editor/WidgetManager/widgetConfig.js @@ -363,6 +363,14 @@ export const widgets = [ }, ], }, + { + handle: 'selectRow', + displayName: 'Select row', + params: [ + { handle: 'key', displayName: 'Key' }, + { handle: 'value', displayName: 'Value' }, + ], + }, ], definition: { others: {