Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

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