index.jsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { ElAutocomplete } from 'element-plus'
  2. import { generateProps, generateEmits } from '../helper/component-util'
  3. import { componentScheme } from './component.scheme'
  4. import { computed, ref } from 'vue'
  5. import { getUsingConfig } from '@cip/utils/util'
  6. export default {
  7. name: 'CipAutocomplete',
  8. props: generateProps(componentScheme),
  9. emits: generateEmits(componentScheme),
  10. setup (props, { slots, attrs, expose }) {
  11. const autocompleteRef = ref()
  12. const suffixIcon = () => <span class="el-icon-search"></span>
  13. const placeholder = computed(() => {
  14. return getUsingConfig(attrs.placeholder, '搜索')
  15. })
  16. const width = computed(() => typeof props.width === 'string' ? props.width : `${props.width}px`)
  17. expose({
  18. autocompleteRef
  19. })
  20. return () => <ElAutocomplete
  21. modelValue={props.modelValue}
  22. {...attrs}
  23. placeholder={placeholder.value}
  24. style={{ width: width.value }}
  25. ref={autocompleteRef}>
  26. {{
  27. suffix: suffixIcon,
  28. prefix: slots.prefix,
  29. prepend: slots.prepend,
  30. default: slots.default
  31. }}
  32. </ElAutocomplete>
  33. }
  34. }