fix(native-filters): fix removing native filter (#13688)
* fix: fix removeing native filter * fix: fix native-cross filters * fix: fix native-cross filters * fix: fix native-cross filters * fix: fix function declaration
This commit is contained in:
parent
e6c5bf4d54
commit
7e6beb5ebf
|
|
@ -96,6 +96,7 @@ export const setFilterConfiguration = (
|
|||
});
|
||||
dispatch({
|
||||
type: SET_DATA_MASK_FOR_FILTER_CONFIG_COMPLETE,
|
||||
unitName: DataMaskType.NativeFilters,
|
||||
filterConfig,
|
||||
});
|
||||
} catch (err) {
|
||||
|
|
|
|||
|
|
@ -240,6 +240,30 @@ const FilterBar: React.FC<FiltersBarProps> = ({
|
|||
}
|
||||
}, [filterValues.length]);
|
||||
|
||||
useEffect(() => {
|
||||
// Remove deleted filters from local state
|
||||
Object.keys(dataMaskSelected).forEach(selectedId => {
|
||||
if (!filters[selectedId]) {
|
||||
setDataMaskSelected(draft => {
|
||||
delete draft[selectedId];
|
||||
});
|
||||
}
|
||||
});
|
||||
Object.keys(dataMaskApplied).forEach(appliedId => {
|
||||
if (!filters[appliedId]) {
|
||||
setLastAppliedFilterData(draft => {
|
||||
delete draft[appliedId];
|
||||
});
|
||||
}
|
||||
});
|
||||
}, [
|
||||
dataMaskApplied,
|
||||
dataMaskSelected,
|
||||
filters,
|
||||
setDataMaskSelected,
|
||||
setLastAppliedFilterData,
|
||||
]);
|
||||
|
||||
const cascadeChildren = useMemo(
|
||||
() => mapParentFiltersToChildren(filterValues),
|
||||
[filterValues],
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ export const SET_DATA_MASK_FOR_FILTER_CONFIG_COMPLETE =
|
|||
export interface SetDataMaskForFilterConfigComplete {
|
||||
type: typeof SET_DATA_MASK_FOR_FILTER_CONFIG_COMPLETE;
|
||||
filterConfig: FilterConfiguration;
|
||||
unitName: DataMaskType;
|
||||
}
|
||||
export const SET_DATA_MASK_FOR_FILTER_CONFIG_FAIL =
|
||||
'SET_DATA_MASK_FOR_FILTER_CONFIG_FAIL';
|
||||
|
|
|
|||
|
|
@ -49,14 +49,9 @@ const setUnitDataMask = (
|
|||
}
|
||||
};
|
||||
|
||||
const emptyDataMask = {
|
||||
[DataMaskType.NativeFilters]: {},
|
||||
[DataMaskType.CrossFilters]: {},
|
||||
[DataMaskType.OwnFilters]: {},
|
||||
};
|
||||
|
||||
const dataMaskReducer = produce(
|
||||
(draft: DataMaskStateWithId, action: AnyDataMaskAction) => {
|
||||
const oldData = { ...draft };
|
||||
switch (action.type) {
|
||||
case UPDATE_DATA_MASK:
|
||||
Object.values(DataMaskType).forEach(unitName =>
|
||||
|
|
@ -65,20 +60,21 @@ const dataMaskReducer = produce(
|
|||
break;
|
||||
|
||||
case SET_DATA_MASK_FOR_FILTER_CONFIG_COMPLETE:
|
||||
Object.values(DataMaskType).forEach(unitName => {
|
||||
draft[unitName] = emptyDataMask[unitName];
|
||||
});
|
||||
draft[action.unitName] = {};
|
||||
(action.filterConfig ?? []).forEach(filter => {
|
||||
draft[DataMaskType.NativeFilters][filter.id] =
|
||||
draft[DataMaskType.NativeFilters][filter.id] ??
|
||||
getInitialMask(filter.id);
|
||||
draft[action.unitName][filter.id] =
|
||||
oldData[action.unitName][filter.id] ?? getInitialMask(filter.id);
|
||||
});
|
||||
break;
|
||||
|
||||
default:
|
||||
}
|
||||
},
|
||||
emptyDataMask,
|
||||
{
|
||||
[DataMaskType.NativeFilters]: {},
|
||||
[DataMaskType.CrossFilters]: {},
|
||||
[DataMaskType.OwnFilters]: {},
|
||||
},
|
||||
);
|
||||
|
||||
export default dataMaskReducer;
|
||||
|
|
|
|||
Loading…
Reference in New Issue