useActive.js 993 B

123456789101112131415161718192021222324252627282930
  1. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  2. import { useInjectCascader } from '../context';
  3. import { watch } from 'vue';
  4. import { useBaseProps } from '../../vc-select';
  5. import useState from '../../_util/hooks/useState';
  6. /**
  7. * Control the active open options path.
  8. */
  9. export default (function () {
  10. var baseProps = useBaseProps();
  11. var _useInjectCascader = useInjectCascader(),
  12. values = _useInjectCascader.values;
  13. // Record current dropdown active options
  14. // This also control the open status
  15. var _useState = useState([]),
  16. _useState2 = _slicedToArray(_useState, 2),
  17. activeValueCells = _useState2[0],
  18. setActiveValueCells = _useState2[1];
  19. watch(function () {
  20. return baseProps.open;
  21. }, function () {
  22. if (baseProps.open && !baseProps.multiple) {
  23. var firstValueCells = values.value[0];
  24. setActiveValueCells(firstValueCells || []);
  25. }
  26. }, {
  27. immediate: true
  28. });
  29. return [activeValueCells, setActiveValueCells];
  30. });