fix(SelectFilterPlugin): clear all clears all filters including dependent ones (#35303)

This commit is contained in:
Mehmet Salih Yavuz
2025-11-06 19:18:42 +03:00
committed by GitHub
parent 0827ff7687
commit af37e12de4
2 changed files with 25 additions and 14 deletions

View File

@@ -396,7 +396,9 @@ const FilterBar: FC<FiltersBarProps> = ({
const handleClearAll = useCallback(() => {
const newClearAllTriggers = { ...clearAllTriggers };
filtersInScope.filter(isNativeFilter).forEach(filter => {
// Clear all native filters, not just those in scope
// This ensures dependent filters are cleared even if parent was cleared first
nativeFilterValues.forEach(filter => {
const { id } = filter;
if (dataMaskSelected[id]) {
setDataMaskSelected(draft => {
@@ -448,10 +450,11 @@ const FilterBar: FC<FiltersBarProps> = ({
setClearAllTriggers(newClearAllTriggers);
}, [
dataMaskSelected,
dataMaskApplied,
filtersInScope,
chartCustomizationItems,
nativeFilterValues,
setDataMaskSelected,
clearAllTriggers,
dataMaskApplied,
chartCustomizationItems,
dispatch,
]);

View File

@@ -349,17 +349,21 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) {
}
// Handle the default to first Value case
if (defaultToFirstItem) {
// Set to first item if defaultToFirstItem is true
const firstItem: SelectValue = data[0]
? (groupby.map(col => data[0][col]) as string[])
: null;
if (firstItem?.[0] !== undefined) {
updateDataMask(firstItem);
// Skip default values when clearAllTrigger is active to prevent
// defaults from being applied during Clear All operation
if (!clearAllTrigger) {
if (defaultToFirstItem) {
// Set to first item if defaultToFirstItem is true
const firstItem: SelectValue = data[0]
? (groupby.map(col => data[0][col]) as string[])
: null;
if (firstItem?.[0] !== undefined) {
updateDataMask(firstItem);
}
} else if (formData?.defaultValue) {
// Handle defalut value case
updateDataMask(formData.defaultValue);
}
} else if (formData?.defaultValue) {
// Handle defalut value case
updateDataMask(formData.defaultValue);
}
}, [
isDisabled,
@@ -370,6 +374,7 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) {
groupby,
col,
inverseSelection,
clearAllTrigger,
]);
useEffect(() => {
@@ -406,7 +411,9 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) {
? (groupby.map(col => data[0][col]) as string[])
: null;
// Skip default value update when clearAllTrigger is active
if (
!clearAllTrigger &&
defaultToFirstItem &&
Object.keys(formData?.extraFormData || {}).length &&
filterState.value !== undefined &&
@@ -423,6 +430,7 @@ export default function PluginFilterSelect(props: PluginFilterSelectProps) {
formData,
data,
JSON.stringify(filterState.value),
clearAllTrigger,
]);
useEffect(() => {