From cf5eba1e8af86a565652c1ffbda0ec8d0c4dd4a8 Mon Sep 17 00:00:00 2001 From: Kevin Tan Date: Mon, 13 Oct 2025 19:57:56 -0700 Subject: [PATCH 1/4] LPD-68453 Ensure preloaded filters are cleared correctly When a filter is active on initial load due to `preloadedData`, clicking the "Clear Filters" button fails to clear the filter from the UI if the user has not interacted with it first. The `deactivateFilter` utility function was directly mutating the filter object, which prevented React from detecting a state change and re-rendering the UI. The function is now updated to return a new, immutable object, ensuring React sees the change and updates the UI correctly. --- .../resources/utils/filters/deactivateFilter.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/utils/filters/deactivateFilter.ts b/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/utils/filters/deactivateFilter.ts index 65fd85db8ad6a0..25075deb881a95 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/utils/filters/deactivateFilter.ts +++ b/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/utils/filters/deactivateFilter.ts @@ -4,9 +4,10 @@ */ export function deactivateFilter(filter: any) { - filter.active = false; - filter.odataFilterString = undefined; - filter.selectedData = undefined; - - return filter; + return { + ...filter, + active: false, + odataFilterString: undefined, + selectedData: undefined, + }; } From e77006ce8541dd133317a5dea607a346bf58f846 Mon Sep 17 00:00:00 2001 From: Kevin Tan Date: Thu, 16 Oct 2025 12:13:46 -0700 Subject: [PATCH 2/4] LPD-68453 Fix filter resume not fully removing when unselecting items In the filter resume dropdown, if you unchecked all the selections and then clicked "Delete Filter", the filter resume label would still show for example: "Color:". This is because `setFilter` needs to be able to also set `active: false` but `activateFilter` was always setting `active: true` --- .../resources/management_bar/controls/filters/Filter.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/management_bar/controls/filters/Filter.tsx b/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/management_bar/controls/filters/Filter.tsx index 3382d92b58b0ec..454436d8cb8ca6 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/management_bar/controls/filters/Filter.tsx +++ b/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/management_bar/controls/filters/Filter.tsx @@ -8,7 +8,6 @@ import {loadModule} from 'frontend-js-web'; import React, {ReactElement, useContext, useEffect, useState} from 'react'; import FrontendDataSetContext from '../../../FrontendDataSetContext'; -import {activateFilter} from '../../../utils/filters/activateFilter'; import ViewsContext from '../../../views/ViewsContext'; // @ts-ignore @@ -97,10 +96,14 @@ const Filter = ({ ...filters.find( (filter: FilterConfiguration) => filter.id === filterId ), + selectedData, ...otherProps, }; - activateFilter({filter: newFilter, selectedData}); + newFilter.odataFilterString = + filterImplementation.getOdataString(newFilter); + newFilter.selectedItemsLabel = + filterImplementation.getSelectedItemsLabel(newFilter); setSearching(true); From a0ce1c0982f1de0b8534f7a9e1546fe4d75b23f9 Mon Sep 17 00:00:00 2001 From: Kevin Tan Date: Thu, 16 Oct 2025 13:10:43 -0700 Subject: [PATCH 3/4] LPD-68453 playwright: Remove unnecessary double check --- .../main/tests/advanced/config_in_url.spec.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/test/playwright/tests/frontend-data-set-web/main/tests/advanced/config_in_url.spec.ts b/modules/test/playwright/tests/frontend-data-set-web/main/tests/advanced/config_in_url.spec.ts index 5a211ba1588512..2f365495413301 100644 --- a/modules/test/playwright/tests/frontend-data-set-web/main/tests/advanced/config_in_url.spec.ts +++ b/modules/test/playwright/tests/frontend-data-set-web/main/tests/advanced/config_in_url.spec.ts @@ -463,8 +463,6 @@ for (const spaConfiguration of spaConfigurations) { }); await test.step('Check back navigation', async () => { - await checkFilter(true, 'color', 'Color: Green, Red'); - await page.goBack(); await checkFilter(true, 'color', 'Color: Yellow, Green'); await page.goBack(); From 13d91610f462a19ae56d27744f90cc291a047900 Mon Sep 17 00:00:00 2001 From: Kevin Tan Date: Thu, 16 Oct 2025 15:56:48 -0700 Subject: [PATCH 4/4] LPD-68453 Fix browser navigation when clearing filters When clearing a filter, the history wouldn't be pushed properly and would lead to issues like - The back history button getting stuck on the same state - Unable to move back or forward to a state where a filter was removed --- .../META-INF/resources/utils/filters/deactivateFilter.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/utils/filters/deactivateFilter.ts b/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/utils/filters/deactivateFilter.ts index 25075deb881a95..4f0c46e5cc33d2 100644 --- a/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/utils/filters/deactivateFilter.ts +++ b/modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/utils/filters/deactivateFilter.ts @@ -4,10 +4,11 @@ */ export function deactivateFilter(filter: any) { + filter.active = false; + filter.odataFilterString = undefined; + filter.selectedData = undefined; + return { ...filter, - active: false, - odataFilterString: undefined, - selectedData: undefined, }; }