index.tsx 1.1 KB

1234567891011121314151617181920212223242526272829
  1. import { View, Image } from '@tarojs/components'
  2. import style from './index.module.less'
  3. import { IContactModel,ICharacter } from '@/types/index'
  4. interface Props {
  5. data: IContactModel|ICharacter
  6. onClick?: (data: IContactModel|ICharacter)=>void
  7. renderRight?: ()=> JSX.Element | JSX.Element[]
  8. className?: string
  9. }
  10. const Index = ({onClick, data, className, renderRight}: Props)=> {
  11. return (
  12. <View className={`${style.contactCard} ${className}`} onClick={()=>{onClick?.(data)}}>
  13. <View className={style.avatar}>
  14. {data.avatar && <Image src={data.avatar} className={style.avatarImg} mode="aspectFill"></Image>}
  15. </View>
  16. <View className={`${style.infoColumn} truncate`}>
  17. <View className={style.nameRow}>
  18. <View className={`${style.nickName} truncate`}>{data.alias ?? data.name}</View>
  19. {data.badges?.map(item=><View className={style.nameMarkup}>{item}</View>)}
  20. </View>
  21. <View className={`${style.subInfo} truncate`}>{data.company}</View>
  22. <View className={`${style.subInfo} truncate`}>{data.job}</View>
  23. </View>
  24. {renderRight && renderRight()}
  25. </View>
  26. )
  27. }
  28. export default Index