@@ -51,6 +51,7 @@ import { createFilterKey, updateFilterKey } from './keyValue';
51
51
import ActionButtons from './ActionButtons' ;
52
52
import Horizontal from './Horizontal' ;
53
53
import Vertical from './Vertical' ;
54
+ import { useSelectFiltersInScope } from '../state' ;
54
55
55
56
// FilterBar is just being hidden as it must still
56
57
// render fully due to encapsulated logics
@@ -141,6 +142,8 @@ const FilterBar: React.FC<FiltersBarProps> = ({
141
142
( { dashboardInfo } ) => dashboardInfo . dash_edit_perm ,
142
143
) ;
143
144
145
+ const [ filtersInScope ] = useSelectFiltersInScope ( nativeFilterValues ) ;
146
+
144
147
const handleFilterSelectionChange = useCallback (
145
148
(
146
149
filter : Pick < Filter , 'id' > & Partial < Filter > ,
@@ -222,24 +225,32 @@ const FilterBar: React.FC<FiltersBarProps> = ({
222
225
} , [ dataMaskSelected , dispatch ] ) ;
223
226
224
227
const handleClearAll = useCallback ( ( ) => {
225
- const filterIds = Object . keys ( dataMaskSelected ) ;
226
- filterIds . forEach ( filterId => {
227
- if ( dataMaskSelected [ filterId ] ) {
228
- dispatch ( clearDataMask ( filterId ) ) ;
228
+ const clearDataMaskIds : string [ ] = [ ] ;
229
+ let dispatchAllowed = false ;
230
+ filtersInScope . filter ( isNativeFilter ) . forEach ( filter => {
231
+ const { id } = filter ;
232
+ if ( dataMaskSelected [ id ] ) {
233
+ if ( filter . controlValues ?. enableEmptyFilter ) {
234
+ dispatchAllowed = false ;
235
+ }
236
+ clearDataMaskIds . push ( id ) ;
229
237
setDataMaskSelected ( draft => {
230
- if ( draft [ filterId ] . filterState ?. value !== undefined ) {
231
- draft [ filterId ] . filterState ! . value = undefined ;
238
+ if ( draft [ id ] . filterState ?. value !== undefined ) {
239
+ draft [ id ] . filterState ! . value = undefined ;
232
240
}
233
241
} ) ;
234
242
}
235
243
} ) ;
236
- } , [ dataMaskSelected , dispatch , setDataMaskSelected ] ) ;
244
+ if ( dispatchAllowed ) {
245
+ clearDataMaskIds . forEach ( id => dispatch ( clearDataMask ( id ) ) ) ;
246
+ }
247
+ } , [ dataMaskSelected , dispatch , filtersInScope , setDataMaskSelected ] ) ;
237
248
238
249
useFilterUpdates ( dataMaskSelected , setDataMaskSelected ) ;
239
250
const isApplyDisabled = checkIsApplyDisabled (
240
251
dataMaskSelected ,
241
252
dataMaskApplied ,
242
- nativeFilterValues ,
253
+ filtersInScope . filter ( isNativeFilter ) ,
243
254
) ;
244
255
const isInitialized = useInitialization ( ) ;
245
256
0 commit comments