Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
2896 stevensc 1
import React, { useState, useCallback } from 'react'
2850 stevensc 2
import { Typography } from '@mui/material'
2838 stevensc 3
 
2892 stevensc 4
import { parse } from '@utils'
2891 stevensc 5
 
2893 stevensc 6
export default function FeedDescription({ description = '' }) {
2838 stevensc 7
  const [showMore, setShowMore] = useState(false)
2896 stevensc 8
 
9
  const stripText = description.replace(/<p>|<\/p>/g, '')
2891 stevensc 10
  const maxLength = 300
2896 stevensc 11
  const truncatedText = stripText.slice(0, maxLength)
12
  const isTruncated = stripText.length > maxLength
2838 stevensc 13
 
2891 stevensc 14
  const toggleShowMore = useCallback(
15
    () => setShowMore((prevState) => !prevState),
16
    []
17
  )
2838 stevensc 18
 
2891 stevensc 19
  return (
20
    <Typography onClick={toggleShowMore}>
2896 stevensc 21
      {parse(showMore ? stripText : truncatedText)}
2891 stevensc 22
 
23
      {isTruncated && (
24
        <Typography
25
          onClick={toggleShowMore}
26
          variant='body2'
27
          color='primary'
28
          sx={{ cursor: 'pointer' }}
29
          aria-expanded={showMore}
30
        >
31
          {showMore ? ' Mostrar menos' : '... Mostrar más'}
2850 stevensc 32
        </Typography>
2891 stevensc 33
      )}
34
    </Typography>
35
  )
2838 stevensc 36
}