Proyectos de Subversion LeadersLinked - SPA

Rev

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