@@ -35,10 +35,6 @@ function getFormState(filterGroup, query) {
35
35
} , { } )
36
36
}
37
37
38
- function supportsContains ( filterName ) {
39
- return [ 'page' , 'entry_page' , 'exit_page' ] . includes ( filterName )
40
- }
41
-
42
38
function supportsIsNot ( filterName ) {
43
39
return ! [ 'goal' , 'prop_key' ] . includes ( filterName )
44
40
}
@@ -122,6 +118,8 @@ class FilterModal extends React.Component {
122
118
fetchOptions ( filter ) {
123
119
return ( input ) => {
124
120
const { query, formState } = this . state
121
+ if ( formState [ filter ] . type === FILTER_TYPES . contains ) { return Promise . resolve ( [ ] ) }
122
+
125
123
const formFilters = Object . fromEntries (
126
124
Object . entries ( formState ) . map ( ( [ filter , { type, clauses} ] ) => [ filter , toFilterQuery ( type , clauses ) ] )
127
125
)
@@ -147,6 +145,8 @@ class FilterModal extends React.Component {
147
145
return filterVal
148
146
} else if ( filterVal . startsWith ( '!' ) ) {
149
147
return filterVal
148
+ } else if ( filterVal . startsWith ( '~' ) ) {
149
+ return null
150
150
} else {
151
151
return '!' + filterVal
152
152
}
@@ -178,9 +178,12 @@ class FilterModal extends React.Component {
178
178
this . props . history . replace ( { pathname : siteBasePath ( this . props . site ) , search : queryString . toString ( ) } )
179
179
}
180
180
181
+ isFreeChoice ( ) {
182
+ return [ 'page' , 'utm' ] . includes ( this . state . selectedFilterGroup )
183
+ }
184
+
181
185
renderSearchBox ( filter ) {
182
- const freeChoice = this . state . selectedFilterGroup === 'page'
183
- return < Combobox fetchOptions = { this . fetchOptions ( filter ) } freeChoice = { freeChoice } values = { this . state . formState [ filter ] . clauses } onChange = { this . onChange ( filter ) } placeholder = { `Select ${ withIndefiniteArticle ( formattedFilters [ filter ] ) } ` } />
186
+ return < Combobox fetchOptions = { this . fetchOptions ( filter ) } freeChoice = { this . isFreeChoice ( ) } values = { this . state . formState [ filter ] . clauses } onChange = { this . onChange ( filter ) } placeholder = { `Select ${ withIndefiniteArticle ( formattedFilters [ filter ] ) } ` } />
184
187
}
185
188
186
189
renderFilterInputs ( ) {
@@ -228,7 +231,7 @@ class FilterModal extends React.Component {
228
231
< div className = "py-1" >
229
232
{ this . renderTypeItem ( filterName , FILTER_TYPES . is , true ) }
230
233
{ this . renderTypeItem ( filterName , FILTER_TYPES . isNot , supportsIsNot ( filterName ) ) }
231
- { this . renderTypeItem ( filterName , FILTER_TYPES . contains , supportsContains ( filterName ) ) }
234
+ { this . renderTypeItem ( filterName , FILTER_TYPES . contains , this . isFreeChoice ( ) ) }
232
235
</ div >
233
236
</ Menu . Items >
234
237
</ Transition >
0 commit comments