index.jsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { computed } from 'vue'
  2. import { ElInput } from 'element-plus'
  3. import { getUsingConfig } from '@cip/utils/util'
  4. import './index.less'
  5. import { generateProps, generateEmits } from '../helper/component-util'
  6. import { componentScheme } from './component.scheme'
  7. export default {
  8. name: 'CipInput',
  9. props: generateProps(componentScheme),
  10. emits: generateEmits(componentScheme),
  11. setup (props, { slots, attrs }) {
  12. const placeholder = computed(() => {
  13. return getUsingConfig(attrs.placeholder, '请输入')
  14. })
  15. const rows = computed(() => {
  16. return getUsingConfig(attrs.rows, 3)
  17. })
  18. const modelValue = computed(() => {
  19. if (typeof props.modelValue === 'object' && props.modelValue !== null) {
  20. return JSON.stringify(props.modelValue)
  21. }
  22. return props.modelValue
  23. })
  24. return () => <ElInput
  25. class={
  26. [
  27. 'cip-input',
  28. {
  29. 'cip-input--fix-border': props.fixBorder,
  30. 'cip-input--suffix-border': props.fixBorder && (slots.suffix || props.suffixIcon)
  31. }
  32. ]
  33. }
  34. modelValue={modelValue.value}
  35. placeholder={placeholder.value}
  36. suffixIcon={props.suffixIcon}
  37. rows={rows.value}
  38. v-slots={slots}
  39. />
  40. }
  41. }