Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
841 stevensc 1
import React, { useCallback, useState } from 'react'
2
import { useSelector } from 'react-redux'
3
import parse from 'html-react-parser'
4
import styled from 'styled-components'
409 stevensc 5
 
856 stevensc 6
const StyledParaphase = styled.p`
7
  color: ${(props) => props.theme.font.color.primary};
8
  font-size: 14px;
9
  line-height: 1.2;
10
`
11
 
409 stevensc 12
const StyledViewMore = styled.span`
558 stevensc 13
  cursor: pointer;
14
  color: #00a6ff;
15
  margin-left: 5px;
841 stevensc 16
`
409 stevensc 17
 
18
const Paraphrase = ({ children, ...rest }) => {
841 stevensc 19
  const [isReadMoreActive, setIsReadMoreActive] = useState(false)
20
  const { read_less, read_more } = useSelector(({ intl }) => intl.labels)
409 stevensc 21
 
22
  const readMore = () => {
841 stevensc 23
    setIsReadMoreActive(!isReadMoreActive)
24
  }
409 stevensc 25
 
26
  const htmlParsedText = useCallback(
841 stevensc 27
    (fullStringText = '') => {
28
      if (typeof fullStringText !== 'string') {
845 stevensc 29
        return 'Children prop must be a string'
409 stevensc 30
      }
31
 
844 stevensc 32
      if (fullStringText.length > 500) {
845 stevensc 33
        const shortenedString = fullStringText.substring(0, 500)
841 stevensc 34
        const shortenedText = `${shortenedString}...`
633 stevensc 35
 
409 stevensc 36
        return (
37
          <>
845 stevensc 38
            {isReadMoreActive ? parse(fullStringText) : parse(shortenedText)}
409 stevensc 39
            <StyledViewMore onClick={readMore}>
40
              {isReadMoreActive ? read_less : read_more}
41
            </StyledViewMore>
42
          </>
841 stevensc 43
        )
409 stevensc 44
      }
45
 
845 stevensc 46
      return parse(fullStringText)
409 stevensc 47
    },
48
    [isReadMoreActive]
841 stevensc 49
  )
409 stevensc 50
 
856 stevensc 51
  return <StyledParaphase {...rest}>{htmlParsedText(children)}</StyledParaphase>
841 stevensc 52
}
409 stevensc 53
 
841 stevensc 54
export default Paraphrase