32 lines
		
	
	
		
			907 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			907 B
		
	
	
	
		
			TypeScript
		
	
	
import { useInjectCascader } from '../context';
 | 
						|
import type { Ref } from 'vue';
 | 
						|
import { watch } from 'vue';
 | 
						|
import { useBaseProps } from '../../vc-select';
 | 
						|
import type { Key } from '../../_util/type';
 | 
						|
import useState from '../../_util/hooks/useState';
 | 
						|
 | 
						|
/**
 | 
						|
 * Control the active open options path.
 | 
						|
 */
 | 
						|
export default (): [Ref<Key[]>, (activeValueCells: Key[]) => void] => {
 | 
						|
  const baseProps = useBaseProps();
 | 
						|
  const { values } = useInjectCascader();
 | 
						|
 | 
						|
  // Record current dropdown active options
 | 
						|
  // This also control the open status
 | 
						|
  const [activeValueCells, setActiveValueCells] = useState<Key[]>([]);
 | 
						|
 | 
						|
  watch(
 | 
						|
    () => baseProps.open,
 | 
						|
    () => {
 | 
						|
      if (baseProps.open && !baseProps.multiple) {
 | 
						|
        const firstValueCells = values.value[0];
 | 
						|
        setActiveValueCells(firstValueCells || []);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    { immediate: true },
 | 
						|
  );
 | 
						|
 | 
						|
  return [activeValueCells, setActiveValueCells];
 | 
						|
};
 |