@@ -190,7 +190,13 @@ export const VCombobox = genericComponent<new <
190
190
: ( props . multiple ? model . value . length : search . value . length )
191
191
} )
192
192
193
- const { filteredItems, getMatches } = useFilter ( props , items , ( ) => isPristine . value ? '' : search . value )
193
+ const { filteredItems, getMatches } = useFilter ( props , items , search )
194
+
195
+ const hasMatchingItems = computed ( ( ) => {
196
+ return props . hideSelected
197
+ ? filteredItems . value . some ( filteredItem => ! model . value . some ( s => s . value === filteredItem . value ) )
198
+ : filteredItems . value . length > 0
199
+ } )
194
200
195
201
const displayItems = computed ( ( ) => {
196
202
if ( props . hideSelected ) {
@@ -202,10 +208,9 @@ export const VCombobox = genericComponent<new <
202
208
return filteredItems . value
203
209
} )
204
210
205
- const menuDisabled = computed ( ( ) => (
206
- ( props . hideNoData && ! displayItems . value . length ) ||
207
- form . isReadonly . value || form . isDisabled . value
208
- ) )
211
+ const menuDisabled = computed ( ( ) => {
212
+ return form . isReadonly . value || form . isDisabled . value
213
+ } )
209
214
const _menu = useProxiedModel ( props , 'menu' )
210
215
const menu = computed ( {
211
216
get : ( ) => _menu . value ,
@@ -225,7 +230,9 @@ export const VCombobox = genericComponent<new <
225
230
// then search computed triggers and updates _search to ''
226
231
nextTick ( ( ) => ( cleared = false ) )
227
232
} else if ( isFocused . value && ! menu . value ) {
228
- menu . value = true
233
+ menu . value = hasMatchingItems . value || ! props . hideNoData
234
+ } else if ( isFocused . value && menu . value && ! hasMatchingItems . value && props . hideNoData ) {
235
+ menu . value = false
229
236
}
230
237
231
238
isPristine . value = ! value
@@ -456,7 +463,7 @@ export const VCombobox = genericComponent<new <
456
463
} )
457
464
}
458
465
459
- if ( val && search . value && filteredItems . value . length === 0 ) {
466
+ if ( val && search . value && ! hasMatchingItems . value ) {
460
467
showAllItemsForNoMatch . value = true
461
468
}
462
469
0 commit comments