Guest User

Untitled

a guest
Oct 8th, 2020
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. const organizations = [
  2. { id: 'o0', alt: 'A', badgeContent: 10 },
  3. { id: 'o1', alt: 'B' },
  4. { id: 'o2', alt: 'C', badgeContent: 1 },
  5. ]
  6.  
  7. export const SidebarOrganizationsListItemLink: React.FC<SidebarOrganizationsListItemLinkProps> = (props) => {
  8. const { className: classNameProp, data: { organization }, ...restProps } = props;
  9. const classes = useStyles()
  10. const router = useRouter()
  11.  
  12. const active = React.useMemo(() => {
  13. const { organizationId } = router.query
  14.  
  15. return organizationId === organization.id
  16. }, [router, organization.id])
  17. const className: string = React.useMemo(() => {
  18. return clsx(classes.root, { [classes.active]: active }, classNameProp)
  19. }, [classes, classNameProp, active])
  20.  
  21. return (
  22. <ButtonLink {...restProps} className={className}>
  23. <Badge color="secondary" overlap="circle" badgeContent={organization.badgeContent}>
  24. <Avatar className={classes.avatar}>{organization.alt}</Avatar>
  25. </Badge>
  26. </ButtonLink>
  27. )
  28. }
  29.  
  30. export const SidebarOrganizationsListItem: React.FC<SidebarOrganizationsListItemProps> = (props) => {
  31. const { className: classNameProp, data: { organization }, ...restProps } = props;
  32. const classes = useStyles()
  33.  
  34. const className: string = React.useMemo(() => {
  35. return clsx(classes.root, classNameProp)
  36. }, [classes, classNameProp])
  37.  
  38. return (
  39. <li {...restProps} className={className}>
  40. <SidebarOrganizationsListItemLink
  41. data={{ organization }}
  42. href="/[organizationId]"
  43. as={`/${organization.id}`}
  44. />
  45. </li>
  46. )
  47. }
  48.  
  49. export const SidebarOrganizationsList: React.FC<SidebarOrganizationsListProps> = React.memo((props) => {
  50. const { className, ...restProps } = props;
  51. const classes = useStyles();
  52.  
  53. return (
  54. <ul {...restProps} className={clsx(classes.root, className)}>
  55. {organizations.map(organization => {
  56. return (
  57. <SidebarOrganizationsListItem key={organization.id} data={{ organization }} />
  58. )
  59. })}
  60. </ul>
  61. )
  62. })
Advertisement
Add Comment
Please, Sign In to add comment