Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5734 | Rev 5738 | 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 (
5734 stevensc 38
    <button type="button" className="reaction-btn" onMouseEnter={onHover}>
5737 stevensc 39
      {reactions.map((reaction) =>
40
        reaction.type === settedReaction ? reaction.icon : null
41
      )}
5734 stevensc 42
      <div className={`reactions ${showReactions ? 'active' : ''}`}>
5669 stevensc 43
        {reactions.map((reaction) => (
44
          <button
45
            key={reaction.type}
5670 stevensc 46
            onClick={() => setSettedReaction(reaction.type)}
5669 stevensc 47
          >
48
            {reaction.icon}
49
          </button>
50
        ))}
5577 stevensc 51
      </div>
52
    </button>
53
  )
54
}