index.jsx 800 B

12345678910111213141516171819202122232425262728
  1. import { ElAvatar } from 'element-plus'
  2. import { generateProps, generateEmits } from '../helper/component-util'
  3. import { componentScheme } from './component.scheme'
  4. import { DefaultAvatar } from './icons-vue'
  5. export default {
  6. name: 'cip-avatar',
  7. props: generateProps(componentScheme),
  8. emits: generateEmits(componentScheme),
  9. setup (props, { slots }) {
  10. const getDefaultIcon = () => {
  11. if (props.icon) return props.icon
  12. if (slots.default) return
  13. return <DefaultAvatar />
  14. }
  15. return () => (
  16. <ElAvatar
  17. style="--el-avatar-icon-size: var(--el-avatar-size); --ep-avatar-icon-size: var(--ep-avatar-size)"
  18. {...props}
  19. icon={getDefaultIcon()}
  20. >
  21. {{
  22. default: () => slots.default?.()
  23. }}
  24. </ElAvatar>
  25. )
  26. }
  27. }