Skip to content
Open
Original file line number Diff line number Diff line change
Expand Up @@ -395,22 +395,36 @@ const FilterBar: FC<FiltersBarProps> = ({
]);

const handleClearAll = useCallback(() => {
dispatch(logEvent(LOG_ACTIONS_CHANGE_DASHBOARD_FILTER, {}));
setUpdateKey(1);
const newClearAllTriggers = { ...clearAllTriggers };
// Clear all native filters, not just those in scope
// This ensures dependent filters are cleared even if parent was cleared first
const updates: Record<string, DataMaskWithId> = {};
nativeFilterValues.forEach(filter => {
const { id } = filter;
if (dataMaskSelected[id]) {
setDataMaskSelected(draft => {
if (draft[id].filterState?.value !== undefined) {
draft[id].filterState!.value = undefined;
}
draft[id].extraFormData = {};
});
updates[id] = {
...dataMaskSelected[id],
filterState: {
...dataMaskSelected[id].filterState,
value: null,
},
extraFormData: {},
};
newClearAllTriggers[id] = true;
}
});

setDataMaskSelected(draft => {
Object.entries(updates).forEach(([id, mask]) => {
draft[id] = mask;
});
});

Object.values(updates).forEach(mask => {
dispatch(updateDataMask(mask.id, mask));
});

let hasChartCustomizationsToClear = false;

const allDataMasks = { ...dataMaskSelected, ...dataMaskApplied };
Expand Down Expand Up @@ -445,6 +459,16 @@ const FilterBar: FC<FiltersBarProps> = ({
dispatch(clearAllPendingChartCustomizations());
dispatch(clearAllChartCustomizationsFromMetadata());
setHasClearedChartCustomizations(true);

const clearedChartCustomizations = chartCustomizationItems.map(item => ({
...item,
customization: {
...item.customization,
column: null,
},
}));

dispatch(saveChartCustomization(clearedChartCustomizations));
}

setClearAllTriggers(newClearAllTriggers);
Expand Down
Loading