Skip to content

Commit 4e13e7c

Browse files
fallmokmcfaul
andauthored
fix(ToolbarFilter): Clear filters on unmount (#12266)
Co-authored-by: kmcfaul <45077788+kmcfaul@users.noreply.github.com>
1 parent d31ee88 commit 4e13e7c

1 file changed

Lines changed: 16 additions & 20 deletions

File tree

packages/react-core/src/components/Toolbar/ToolbarFilter.tsx

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ interface ToolbarFilterState {
4646
isMounted: boolean;
4747
}
4848

49+
const getCategoryKey = (categoryName: string | ToolbarLabelGroup): string => {
50+
if (typeof categoryName === 'string') {
51+
return categoryName;
52+
}
53+
return categoryName.key;
54+
};
55+
4956
class ToolbarFilter extends Component<ToolbarFilterProps, ToolbarFilterState> {
5057
static displayName = 'ToolbarFilter';
5158
static contextType = ToolbarContext;
@@ -63,24 +70,16 @@ class ToolbarFilter extends Component<ToolbarFilterProps, ToolbarFilterState> {
6370
}
6471

6572
componentDidMount() {
66-
const { categoryName, labels } = this.props;
67-
this.context.updateNumberFilters(
68-
typeof categoryName !== 'string' && categoryName.hasOwnProperty('key')
69-
? categoryName.key
70-
: categoryName.toString(),
71-
labels.length
72-
);
73+
this.context.updateNumberFilters(getCategoryKey(this.props.categoryName), this.props.labels.length);
7374
this.setState({ isMounted: true });
7475
}
7576

7677
componentDidUpdate() {
77-
const { categoryName, labels } = this.props;
78-
this.context.updateNumberFilters(
79-
typeof categoryName !== 'string' && categoryName.hasOwnProperty('key')
80-
? categoryName.key
81-
: categoryName.toString(),
82-
labels.length
83-
);
78+
this.context.updateNumberFilters(getCategoryKey(this.props.categoryName), this.props.labels.length);
79+
}
80+
81+
componentWillUnmount() {
82+
this.context.updateNumberFilters(getCategoryKey(this.props.categoryName), 0);
8483
}
8584

8685
render() {
@@ -99,10 +98,7 @@ class ToolbarFilter extends Component<ToolbarFilterProps, ToolbarFilterState> {
9998
} = this.props;
10099
const { isExpanded: managedIsExpanded, labelGroupContentRef } = this.context;
101100
const _isExpanded = isExpanded !== undefined ? isExpanded : managedIsExpanded;
102-
const categoryKey =
103-
typeof categoryName !== 'string' && categoryName.hasOwnProperty('key')
104-
? categoryName.key
105-
: categoryName.toString();
101+
const categoryKey = getCategoryKey(categoryName);
106102

107103
const labelGroup = labels.length ? (
108104
<ToolbarItem variant="label-group">
@@ -116,11 +112,11 @@ class ToolbarFilter extends Component<ToolbarFilterProps, ToolbarFilterState> {
116112
>
117113
{labels.map((label) =>
118114
typeof label === 'string' ? (
119-
<Label variant="outline" key={label} onClose={() => deleteLabel(categoryKey, label)}>
115+
<Label variant="outline" key={label} onClose={() => deleteLabel?.(categoryKey, label)}>
120116
{label}
121117
</Label>
122118
) : (
123-
<Label key={label.key} onClose={() => deleteLabel(categoryKey, label)}>
119+
<Label key={label.key} onClose={() => deleteLabel?.(categoryKey, label)}>
124120
{label.node}
125121
</Label>
126122
)

0 commit comments

Comments
 (0)