11<template >
22 <div
3+ v-show =" visible"
34 ref =" root"
45 v-ripple =" { disabled: disabled || !ripple }"
56 v-hover:desktop =" handleHovering"
@@ -47,6 +48,7 @@ import VarCheckbox from '../checkbox'
4748import Hover from ' ../hover'
4849import VarHoverOverlay , { useHoverOverlay } from ' ../hover-overlay'
4950import Ripple from ' ../ripple'
51+ import { SelectOption } from ' ../select/props'
5052import { createNamespace , MaybeVNode } from ' ../utils/components'
5153import { props } from ' ./props'
5254import { OptionProvider , useSelect } from ' ./provide'
@@ -66,26 +68,25 @@ export default defineComponent({
6668 const root = ref <HTMLElement >()
6769 const isFocusing = ref (false )
6870 const optionSelected = ref (false )
71+ const option = computed (
72+ () =>
73+ props .option ??
74+ ({
75+ label: props .label ,
76+ value: props .value ,
77+ disabled: props .disabled ,
78+ } as SelectOption ),
79+ )
6980 const selected = computed (() => optionSelected .value )
7081 const value = computed <any >(() => props .value )
7182 const disabled = computed (() => props .disabled )
7283 const ripple = computed (() => props .ripple )
7384 const { select, bindSelect } = useSelect ()
74- const { multiple, focusColor, onSelect, computeLabel } = select
85+ const { query, filter, filterable, multiple, focusColor, onSelect, computeLabel } = select
7586 const { hovering, handleHovering } = useHoverOverlay ()
7687
77- const labelVNode = computed (() =>
78- isFunction (props .label )
79- ? props .label (
80- props .option ?? {
81- label: props .label ,
82- value: props .value ,
83- disabled: props .disabled ,
84- },
85- optionSelected .value ,
86- )
87- : props .label ,
88- )
88+ const labelVNode = computed <any >(() => (isFunction (props .label ) ? option .value : props .label ))
89+ const visible = computed (() => ! filterable .value || ! query .value || filter .value (query .value , option .value ))
8990
9091 const optionProvider: OptionProvider = {
9192 label: labelVNode ,
@@ -151,6 +152,7 @@ export default defineComponent({
151152 return {
152153 root ,
153154 optionSelected ,
155+ visible ,
154156 multiple ,
155157 focusColor ,
156158 hovering ,
0 commit comments