Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
409 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'
5
 
6
const StyledViewMore = styled.span`
7
  cursor: 'pointer';
8
  color: '#00a6ff';
9
  margin-left: '5px';
10
`
11
 
12
const Paraphrase = ({ children, ...rest }) => {
13
  const [isReadMoreActive, setIsReadMoreActive] = useState(false)
14
  const { read_less, read_more } = useSelector(({ intl }) => intl.labels)
15
 
16
  const readMore = () => {
17
    setIsReadMoreActive(!isReadMoreActive)
18
  }
19
 
20
  const htmlParsedText = useCallback(
21
    (fullStringText = '') => {
22
      let fullText = parse(fullStringText)
23
 
24
      try {
25
        fullText = parse(fullStringText)
26
      } catch (error) {
27
        fullText = ''
28
      }
29
 
30
      if (fullStringText.length > 500) {
31
        const shortenedString = fullStringText.substring(0, 500)
32
        const shortenedText = parse(`${shortenedString}... `)
33
 
34
        return (
35
          <>
36
            {isReadMoreActive ? fullText : shortenedText}
37
            <StyledViewMore onClick={readMore}>
38
              {isReadMoreActive ? read_less : read_more}
39
            </StyledViewMore>
40
          </>
41
        )
42
      }
43
 
44
      return fullText
45
    },
46
    [isReadMoreActive]
47
  )
48
 
49
  return <p {...rest}>{htmlParsedText(children)}</p>
50
}
51
 
52
export default Paraphrase