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 10b48b9d9cc87..a808823a094f1 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 059e202905523..dec1481c29c99 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, t } from '@superset-ui/core'; import { Radio } from 'src/components/Radio'; import { AntdForm, Typography } from 'src/components'; @@ -63,6 +63,7 @@ const FilterScope: FC = ({ const [initialFilterScope] = useState( filterScope || getDefaultScopeValue(chartId, initiallyExcludedCharts), ); + const lastSpecificScope = useRef(initialFilterScope); const [initialScopingType] = useState( isScopingAll(initialFilterScope, chartId) ? ScopingType.all @@ -74,10 +75,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(() => { @@ -109,12 +113,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(); }}