Search.jsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { Empty, Input, Popover } from 'antd'
  2. import React from 'react'
  3. import { connect } from 'react-redux';
  4. import { Link } from 'react-router-dom';
  5. import { actionFindUsers, actionSearchUsers } from '../../actions';
  6. import { UserAvatar } from './Header';
  7. const { Search } = Input;
  8. const FindUsersResult = ({ usersRes }) => {
  9. return <div className='Header__search-drop' >
  10. {
  11. usersRes.length === 0 ?
  12. <Empty /> :
  13. usersRes.map(u => {
  14. return (<Link
  15. className='Header__search-link'
  16. key={u._id}
  17. to={`/profile/${u._id}`} >
  18. <UserAvatar avatar={u.avatar} login={u.login} nick={u.nick} avatarSize={'40px'} />
  19. <strong>{u?.nick || u?.login || 'User'}</strong>
  20. </Link>)
  21. })
  22. }
  23. </div >
  24. }
  25. export const FieldSearch = ({ usersRes, findUsers }) => {
  26. return (
  27. <>
  28. <Popover placement="bottom"
  29. content={<FindUsersResult usersRes={usersRes} />}
  30. destroyTooltipOnHide={true}
  31. trigger="focus">
  32. <></>
  33. <Input
  34. placeholder="Search users"
  35. allowClear
  36. onChange={e => findUsers(e.currentTarget.value)}
  37. />
  38. </Popover>
  39. </>
  40. )
  41. }
  42. export const CFieldSearch = connect(state => ({ usersRes: state.promise?.findUsersAll?.payload || [] }), { findUsers: actionSearchUsers })(FieldSearch)