From a520cb30a88147fdf3cbb95ca7403dc8f08bdd3b Mon Sep 17 00:00:00 2001 From: Kiran Ashok Date: Mon, 5 Dec 2022 16:49:47 +0530 Subject: [PATCH] Feature :: SelectRow CSA :: [ Table ] (#4591) * feat :: prototyping selectrow csa * fix :: bug * removed :: logs * bugfix :: page does not contain whole data changed to rows * fix :: for table inside modal * fix:: csa not working for table inside modal * fix :: table csa in modal * fix :: multiple event params --- frontend/src/Editor/Components/Table/Table.jsx | 15 +++++++++++++++ frontend/src/Editor/Inspector/EventManager.jsx | 2 +- frontend/src/Editor/WidgetManager/widgetConfig.js | 8 ++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) 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: {