SeenUserInfo.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import React, { FC, useState } from 'react';
  2. import { Button, Popover, PopoverBody } from 'reactstrap';
  3. import { FootstampIcon } from '@growi/ui';
  4. import { IUser } from '~/interfaces/user';
  5. import UserPictureList from './UserPictureList';
  6. interface Props {
  7. seenUsers: IUser[],
  8. disabled?: boolean,
  9. }
  10. const SeenUserInfo: FC<Props> = (props: Props) => {
  11. const [isPopoverOpen, setIsPopoverOpen] = useState(false);
  12. const { seenUsers, disabled } = props;
  13. const togglePopover = () => setIsPopoverOpen(!isPopoverOpen);
  14. return (
  15. <div className="grw-seen-user-info">
  16. <Button id="btn-seen-user" color="link" className="btn-seen-user">
  17. <span className="mr-1 footstamp-icon">
  18. <FootstampIcon />
  19. </span>
  20. <span className="seen-user-count">{seenUsers.length}</span>
  21. </Button>
  22. <Popover placement="bottom" isOpen={isPopoverOpen} target="btn-seen-user" toggle={togglePopover} trigger="legacy" disabled={disabled}>
  23. <PopoverBody className="user-list-popover">
  24. <div className="px-2 text-right user-list-content text-truncate text-muted">
  25. <UserPictureList users={seenUsers} />
  26. </div>
  27. </PopoverBody>
  28. </Popover>
  29. </div>
  30. );
  31. };
  32. export default SeenUserInfo;