@@ -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+
4956class 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