Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
5 stevensc 1
import React from 'react'
2
import { useSelector } from 'react-redux'
2614 stevensc 3
import { useNavigate } from 'react-router-dom'
2888 stevensc 4
import { styled, Typography } from '@mui/material'
5
import { ArrowBackIosNew, OpenInNew, Edit, Delete } from '@mui/icons-material'
5 stevensc 6
 
2864 stevensc 7
import { parse } from '@utils'
535 stevensc 8
 
2888 stevensc 9
import Widget from '@components/UI/Widget'
10
import Button from '@components/UI/buttons/Buttons'
5 stevensc 11
 
2888 stevensc 12
export const QuestionStats = styled('div')`
5 stevensc 13
  display: flex;
14
  align-items: center;
15
  gap: 0.5rem;
421 andreina 16
  justify-content: space-around;
748 stevensc 17
  padding: 5px;
5 stevensc 18
`
19
 
2888 stevensc 20
const QuestionCategories = styled('ul')`
5 stevensc 21
  align-items: center;
22
  display: flex;
23
  gap: 0.5rem;
24
  flex-wrap: wrap;
25
  max-width: 200px;
26
  li {
412 stevensc 27
    background: rgb(198, 209, 240);
5 stevensc 28
    border-radius: var(--border-radius);
29
    color: var(--font-color);
412 stevensc 30
    padding: 0.3rem 0.4rem;
31
    font-size: 0.7rem;
5 stevensc 32
    font-weight: 600;
33
  }
34
`
35
 
36
const QuestionCard = ({
37
  last_answer_on = '',
38
  added_on = '',
39
  user_name = '',
40
  user_image = '',
41
  title = '',
42
  description = '',
43
  categories = [],
44
  views = 0,
45
  answers = 0,
46
  reactions = 0,
47
  comments = 0,
48
  link_view = '',
49
  link_edit = '',
50
  link_delete = '',
51
  link_answers_add = '',
52
  link_answers = '',
53
  onDelete = () => null,
54
  onEdit = () => null,
748 stevensc 55
  onReply = () => null
5 stevensc 56
}) => {
57
  const labels = useSelector(({ intl }) => intl.labels)
2614 stevensc 58
  const navigate = useNavigate()
5 stevensc 59
 
60
  const onView = (url = '') => {
2614 stevensc 61
    navigate(url)
5 stevensc 62
  }
63
 
64
  const goBack = () => {
2614 stevensc 65
    navigate('/my-coach')
5 stevensc 66
  }
67
 
68
  return (
2888 stevensc 69
    <Widget>
70
      <Widget.Header
71
        avatar={user_image}
72
        title={user_name}
73
        renderAction={() => (
74
          <QuestionCategories>
75
            {categories.map(({ category }) => (
76
              <li key={category}>{category}</li>
77
            ))}
78
          </QuestionCategories>
79
        )}
80
      />
748 stevensc 81
 
2888 stevensc 82
      <Widget.Body>
535 stevensc 83
        <h2>{title}</h2>
84
        <span>{`${labels.my_coach_question} ${added_on}`}</span>
536 stevensc 85
        {last_answer_on ? (
535 stevensc 86
          <span>{`${labels.my_coach_last_answer} ${last_answer_on}`}</span>
536 stevensc 87
        ) : null}
2864 stevensc 88
        <Typography>{parse(description)}</Typography>
2888 stevensc 89
      </Widget.Body>
5 stevensc 90
 
748 stevensc 91
      <QuestionStats>
92
        <span>{`${answers} ${labels.my_coach_answers}`}</span>
93
        <span>{`${reactions} ${labels.my_coach_reactions}`}</span>
94
        <span>{`${views} ${labels.my_coach_views}`}</span>
95
        <span>{`${comments} ${labels.comments}`}</span>
96
      </QuestionStats>
97
 
2888 stevensc 98
      <Widget.Actions>
5 stevensc 99
        {link_answers && (
2888 stevensc 100
          <Button onClick={goBack}>
101
            <ArrowBackIosNew />
5 stevensc 102
            {labels.back}
2888 stevensc 103
          </Button>
5 stevensc 104
        )}
105
        {link_view && (
2888 stevensc 106
          <Button onClick={() => onView(link_view)}>
107
            <OpenInNew />
5 stevensc 108
            {labels.view}
2888 stevensc 109
          </Button>
5 stevensc 110
        )}
111
        {link_edit && (
2888 stevensc 112
          <Button onClick={() => onEdit(link_edit)}>
113
            <Edit />
5 stevensc 114
            {labels.edit}
2888 stevensc 115
          </Button>
5 stevensc 116
        )}
117
        {link_answers_add && (
2888 stevensc 118
          <Button onClick={() => onReply(link_edit)}>
119
            <Edit />
5 stevensc 120
            {labels.reply}
2888 stevensc 121
          </Button>
5 stevensc 122
        )}
123
        {link_delete && (
2888 stevensc 124
          <Button
748 stevensc 125
            className='btn feed__share-option'
5 stevensc 126
            onClick={() => onDelete(link_delete)}
127
          >
2888 stevensc 128
            <Delete />
5 stevensc 129
            {labels.delete}
2888 stevensc 130
          </Button>
5 stevensc 131
        )}
2888 stevensc 132
      </Widget.Actions>
133
    </Widget>
5 stevensc 134
  )
135
}
136
 
137
export default QuestionCard