@@ -82,11 +82,14 @@ export default defineComponent({
8282 const disabled = computed (() => props .disabled )
8383 const ripple = computed (() => props .ripple )
8484 const { select, bindSelect } = useSelect ()
85- const { pattern, filter, filterable, multiple, focusColor, onSelect, computeLabel } = select
85+ const { pattern, showMenu, filter, filterable, multiple, focusColor, onSelect, computeLabel } = select
8686 const { hovering, handleHovering } = useHoverOverlay ()
87-
8887 const labelVNode = computed <any >(() => (isFunction (props .label ) ? option .value : props .label ))
89- const visible = computed (() => ! filterable .value || ! pattern .value || filter .value (pattern .value , option .value ))
88+ const frozenVisible = ref (true )
89+ const visibleByFilter = computed (
90+ () => ! filterable .value || ! pattern .value || filter .value (pattern .value , option .value ),
91+ )
92+ const visible = computed (() => (showMenu .value ? visibleByFilter .value : frozenVisible .value ))
9093
9194 const optionProvider: OptionProvider = {
9295 label: labelVNode ,
@@ -99,6 +102,16 @@ export default defineComponent({
99102
100103 watch ([() => props .label , () => props .value ], computeLabel )
101104
105+ watch (
106+ () => [showMenu .value , visibleByFilter .value ] as const ,
107+ () => {
108+ if (showMenu .value ) {
109+ frozenVisible .value = visibleByFilter .value
110+ }
111+ },
112+ { immediate: true },
113+ )
114+
102115 bindSelect (optionProvider )
103116
104117 useEventListener (() => window , ' keydown' , handleKeydown )
0 commit comments