Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5737 | Rev 5739 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5737 stevensc 1
import React, { useEffect, useRef, useState } from 'react'
5577 stevensc 2
import RecommendIcon from '@mui/icons-material/Recommend'
3
import FavoriteIcon from '@mui/icons-material/Favorite'
4
import VolunteerActivismIcon from '@mui/icons-material/VolunteerActivism'
5734 stevensc 5
import { debounce } from '../../../utils'
5737 stevensc 6
import useOutsideClick from '../../../hooks/useOutsideClick'
5574 stevensc 7
 
5667 stevensc 8
export const ReactionButton = () => {
5668 stevensc 9
  const [settedReaction, setSettedReaction] = useState('r')
5734 stevensc 10
  const [showReactions, setShowReactions] = useState(false)
5737 stevensc 11
  const rectionBtn = useRef(null)
12
  const outsideClick = useOutsideClick(rectionBtn)
5667 stevensc 13
 
14
  const reactions = [
15
    {
16
      type: 'r',
5668 stevensc 17
      icon: <RecommendIcon />,
5667 stevensc 18
    },
19
    {
20
      type: 'f',
5668 stevensc 21
      icon: <FavoriteIcon />,
5667 stevensc 22
    },
23
    {
24
      type: 'v',
5668 stevensc 25
      icon: <VolunteerActivismIcon />,
5667 stevensc 26
    },
27
  ]
28
 
5734 stevensc 29
  const onHover = debounce(() => setShowReactions(true), 1000)
30
 
5737 stevensc 31
  useEffect(() => {
32
    if (outsideClick) {
33
      setShowReactions(false)
34
    }
35
  }, [outsideClick])
36
 
5577 stevensc 37
  return (
5738 stevensc 38
    <button
39
      type="button"
40
      className="reaction-btn"
41
      onMouseEnter={onHover}
42
      ref={rectionBtn}
43
    >
5737 stevensc 44
      {reactions.map((reaction) =>
45
        reaction.type === settedReaction ? reaction.icon : null
46
      )}
5734 stevensc 47
      <div className={`reactions ${showReactions ? 'active' : ''}`}>
5669 stevensc 48
        {reactions.map((reaction) => (
49
          <button
50
            key={reaction.type}
5670 stevensc 51
            onClick={() => setSettedReaction(reaction.type)}
5669 stevensc 52
          >
53
            {reaction.icon}
54
          </button>
55
        ))}
5577 stevensc 56
      </div>
57
    </button>
58
  )
59
}