diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/FilterScope.test.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/FilterScope.test.tsx index 10b48b9d9c..a808823a09 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/FilterScope.test.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/FilterScope.test.tsx @@ -129,7 +129,7 @@ describe('FilterScope', () => { expect(screen.getByRole('tree')).toBeInTheDocument(); expect( document.querySelectorAll('.ant-tree-checkbox-checked').length, - ).toBe(1); + ).toBe(4); }); }); }); diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/FilterScope.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/FilterScope.tsx index ce1a510e20..0682279120 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/FilterScope.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/FilterScope.tsx @@ -17,7 +17,7 @@ * under the License. */ -import React, { FC, useCallback, useState } from 'react'; +import React, { FC, useCallback, useRef, useState } from 'react'; import { NativeFilterScope, styled, @@ -67,6 +67,7 @@ const FilterScope: FC = ({ const [initialFilterScope] = useState( filterScope || getDefaultScopeValue(chartId, initiallyExcludedCharts), ); + const lastSpecificScope = useRef(initialFilterScope); const [initialScopingType] = useState( isScopingAll(initialFilterScope, chartId) ? ScopingType.all @@ -78,10 +79,13 @@ const FilterScope: FC = ({ const onUpdateFormValues = useCallback( (formValues: any) => { + if (formScopingType === ScopingType.specific) { + lastSpecificScope.current = formValues.scope; + } updateFormValues(formValues); setHasScopeBeenModified(true); }, - [updateFormValues], + [formScopingType, updateFormValues], ); const updateScopes = useCallback(() => { @@ -113,12 +117,11 @@ const FilterScope: FC = ({ > { - if (value === ScopingType.all) { - const scope = getDefaultScopeValue(chartId); - updateFormValues({ - scope, - }); - } + const scope = + value === ScopingType.all + ? getDefaultScopeValue(chartId) + : lastSpecificScope.current; + updateFormValues({ scope }); setHasScopeBeenModified(true); forceUpdate(); }}