Skip to content

Commit 95a1078

Browse files
authored
fix(FilterBar): Add missing onFiltersDialogSave event properties and fix manually controlled visibleInFilterBar prop (#682)
1 parent c6adc3e commit 95a1078

File tree

3 files changed

+22
-19
lines changed

3 files changed

+22
-19
lines changed

packages/main/src/components/FilterBar/FilterDialog.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,11 @@ export const FilterDialog = (props) => {
224224
}, [children, searchString, filterBarRefs]);
225225

226226
const handleCheckBoxChange = useCallback(
227-
(element, toggledFilters) => (e) => {
227+
(element) => (e) => {
228228
if (handleSelectionChange) {
229229
handleSelectionChange(enrichEventWithDetails(e, { element, checked: e.target.checked }));
230230
}
231-
setToggledFilters({ ...toggledFilters, [element.key]: e.target.checked });
231+
setToggledFilters((old) => ({ ...old, [element.key]: e.target.checked }));
232232
},
233233
[setToggledFilters, handleSelectionChange]
234234
);
@@ -251,7 +251,7 @@ export const FilterDialog = (props) => {
251251
{el}
252252
<CheckBox
253253
checked={el.props.visibleInFilterBar || el.props.required || el.type.displayName !== 'FilterGroupItem'}
254-
onChange={handleCheckBoxChange(el, toggledFilters)}
254+
onChange={handleCheckBoxChange(el)}
255255
disabled={el.props.required || el.type.displayName !== 'FilterGroupItem'}
256256
/>
257257
</div>
@@ -282,7 +282,7 @@ export const FilterDialog = (props) => {
282282
)}
283283
{renderGroups()}
284284
</div>
285-
</Dialog>,
285+
</Dialog>,
286286
document.body
287287
);
288288
};

packages/main/src/components/FilterBar/index.tsx

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -131,19 +131,18 @@ const FilterBar: FC<FilterBarPropTypes> = forwardRef((props: FilterBarPropTypes,
131131
);
132132

133133
useEffect(() => {
134-
if (showFilterConfiguration) {
135-
Children.toArray(children).forEach((item: ReactElement<any>) => {
136-
if (
137-
prevVisibleInFilterBarProps.current?.[item.key] !== undefined &&
138-
prevVisibleInFilterBarProps.current?.[item.key] !== item.props.visibleInFilterBar
139-
) {
140-
const updatedToggledFilters = toggledFilters;
141-
delete updatedToggledFilters[item.key];
142-
setToggledFilters(updatedToggledFilters);
134+
Children.toArray(children).forEach((item: ReactElement<any>) => {
135+
setToggledFilters((prev) => {
136+
if (!item.props.hasOwnProperty('visibleInFilterBar') && prev?.[item.key] === undefined) {
137+
return { ...prev, [item.key]: true };
143138
}
139+
if (item.props.hasOwnProperty('visibleInFilterBar')) {
140+
return { ...prev, [item.key]: item.props.visibleInFilterBar };
141+
}
142+
return prev;
144143
});
145-
}
146-
}, [children, prevVisibleInFilterBarProps, setToggledFilters, toggledFilters, showFilterConfiguration]);
144+
});
145+
}, [children, setToggledFilters]);
147146

148147
useEffect(() => {
149148
setShowFilters(useToolbar ? filterBarExpanded : true);
@@ -171,9 +170,14 @@ const FilterBar: FC<FilterBarPropTypes> = forwardRef((props: FilterBarPropTypes,
171170
const handleDialogSave = useCallback(
172171
(e, newRefs, updatedToggledFilters) => {
173172
setDialogRefs(newRefs);
174-
setToggledFilters({ ...toggledFilters, ...updatedToggledFilters });
173+
setToggledFilters((old) => ({ ...old, ...updatedToggledFilters }));
175174
if (onFiltersDialogSave) {
176-
onFiltersDialogSave(enrichEventWithDetails(e));
175+
onFiltersDialogSave(
176+
enrichEventWithDetails(e, {
177+
elements: newRefs,
178+
toggledElements: { ...toggledFilters, ...updatedToggledFilters }
179+
})
180+
);
177181
}
178182
handleDialogClose(e);
179183
},
@@ -215,7 +219,7 @@ const FilterBar: FC<FilterBarPropTypes> = forwardRef((props: FilterBarPropTypes,
215219
]);
216220

217221
const safeChildren = useCallback(() => {
218-
if (showFilterConfiguration && Object.keys(toggledFilters).length > 0) {
222+
if (Object.keys(toggledFilters).length > 0) {
219223
return Children.toArray(children).map((child: ReactElement) => {
220224
if (toggledFilters?.[child.key] !== undefined) {
221225
return cloneElement(child, {

packages/main/src/components/FilterGroupItem/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ FilterGroupItem.displayName = 'FilterGroupItem';
8686
FilterGroupItem.defaultProps = {
8787
groupName: 'default',
8888
visible: true,
89-
visibleInFilterBar: true,
9089
required: false,
9190
label: ''
9291
};

0 commit comments

Comments
 (0)