Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 534 | Rev 536 | 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'
3
import { useHistory } from 'react-router-dom'
4
import styled from 'styled-components'
5
 
6
import OpenInNewIcon from '@mui/icons-material/OpenInNew'
7
import EditIcon from '@mui/icons-material/Edit'
8
import DeleteIcon from '@mui/icons-material/Delete'
9
import ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew'
535 stevensc 10
 
409 stevensc 11
import Paraphrase from '../UI/Paraphrase'
531 stevensc 12
import StyledContainer from '../widgets/WidgetLayout'
5 stevensc 13
 
14
export const QuestionStats = styled.div`
15
  display: flex;
16
  align-items: center;
17
  gap: 0.5rem;
421 andreina 18
  justify-content: space-around;
5 stevensc 19
`
20
 
21
export const QuestionCategories = styled.ul`
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,
56
  onReply = () => null,
57
}) => {
58
  const labels = useSelector(({ intl }) => intl.labels)
59
  const history = useHistory()
60
 
61
  const onView = (url = '') => {
62
    history.replace(url)
63
  }
64
 
65
  const goBack = () => {
66
    history.replace('/my-coach')
67
  }
68
 
69
  return (
531 stevensc 70
    <StyledContainer>
534 stevensc 71
      <StyledContainer.Header image={user_image} title={user_name}>
5 stevensc 72
        <QuestionCategories>
73
          {categories.map(({ category }) => (
74
            <li key={category}>{category}</li>
75
          ))}
76
        </QuestionCategories>
532 stevensc 77
      </StyledContainer.Header>
535 stevensc 78
      <StyledContainer.Body>
79
        <h2>{title}</h2>
80
        <span>{`${labels.my_coach_question} ${added_on}`}</span>
81
        {last_answer_on && (
82
          <span>{`${labels.my_coach_last_answer} ${last_answer_on}`}</span>
83
        )}
84
        <Paraphrase className="my-2">{description}</Paraphrase>
5 stevensc 85
 
535 stevensc 86
        <QuestionStats className="mb-2">
87
          <span>{`${answers} ${labels.my_coach_answers}`}</span>
88
          <span>{`${reactions} ${labels.my_coach_reactions}`}</span>
89
          <span>{`${views} ${labels.my_coach_views}`}</span>
90
          <span>{`${comments} ${labels.comments}`}</span>
91
        </QuestionStats>
92
      </StyledContainer.Body>
531 stevensc 93
      <StyledContainer.Actions>
5 stevensc 94
        {link_answers && (
531 stevensc 95
          <button onClick={goBack}>
5 stevensc 96
            <ArrowBackIosNewIcon />
97
            {labels.back}
98
          </button>
99
        )}
100
        {link_view && (
531 stevensc 101
          <button onClick={() => onView(link_view)}>
5 stevensc 102
            <OpenInNewIcon />
103
            {labels.view}
104
          </button>
105
        )}
106
        {link_edit && (
531 stevensc 107
          <button onClick={() => onEdit(link_edit)}>
5 stevensc 108
            <EditIcon />
109
            {labels.edit}
110
          </button>
111
        )}
112
        {link_answers_add && (
531 stevensc 113
          <button onClick={() => onReply(link_edit)}>
5 stevensc 114
            <EditIcon />
115
            {labels.reply}
116
          </button>
117
        )}
118
        {link_delete && (
119
          <button
120
            className="btn feed__share-option"
121
            onClick={() => onDelete(link_delete)}
122
          >
123
            <DeleteIcon />
124
            {labels.delete}
125
          </button>
126
        )}
531 stevensc 127
      </StyledContainer.Actions>
128
    </StyledContainer>
5 stevensc 129
  )
130
}
131
 
132
export default QuestionCard