Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 425 | Rev 529 | 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 { Avatar, Card } from '@mui/material'
3
import { useSelector } from 'react-redux'
4
import { useHistory } from 'react-router-dom'
5
import styled from 'styled-components'
6
 
7
import OpenInNewIcon from '@mui/icons-material/OpenInNew'
8
import EditIcon from '@mui/icons-material/Edit'
9
import DeleteIcon from '@mui/icons-material/Delete'
10
import ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew'
409 stevensc 11
import Paraphrase from '../UI/Paraphrase'
5 stevensc 12
 
13
export const StyledQuestionCard = styled(Card)`
14
  background: var(--bg-color);
425 andreina 15
  border: 1px solid var(--border-primary);
5 stevensc 16
  border-radius: var(--border-radius);
425 andreina 17
  height: fit-content;
5 stevensc 18
  padding: 1rem 0;
19
  & > * {
412 stevensc 20
    padding-right: 0.8rem;
21
    padding-left: 0.8rem;
5 stevensc 22
  }
23
  & > h2 {
410 andreina 24
    font-size: 16px;
5 stevensc 25
    line-height: 1.2;
420 andreina 26
    margin-bottom:5px;
5 stevensc 27
  }
426 andreina 28
  input[text]{
29
    flex-grow: 1;
30
    padding: 0.5rem;
31
    background-color: #ECECEC;
32
    border: 1px solid var(--border-primary);
33
    border-radius: var(--border-radius) 0 0 var(--border-radius);
34
    width:80%;
35
  }
5 stevensc 36
  p {
37
    color: var(--font-color);
415 andreina 38
    font-size: 14px;
5 stevensc 39
    font-weight: 400;
40
    text-align: justify;
41
    margin-bottom: 0.5rem;
42
  }
43
  span {
44
    color: var(--subtitle-color);
412 stevensc 45
    font-weight: 400;
415 andreina 46
    font-size: .7rem;
416 andreina 47
    margin-top:3px;
5 stevensc 48
  }
49
`
50
 
51
export const QuestionDetails = styled.div`
52
  display: flex;
53
  align-items: center;
54
  flex-wrap: wrap;
55
  gap: 1rem;
56
  justify-content: space-between;
57
  margin-bottom: 0.5rem;
58
  padding-bottom: 0.5rem;
59
  border-bottom: 1px solid var(--border-primary);
60
`
61
 
62
export const QuestionUserInfo = styled.div`
63
  align-items: center;
64
  display: inline-flex;
65
  gap: 0.5rem;
66
  width: fit-content;
406 stevensc 67
  span {
419 andreina 68
    color: #000;
406 stevensc 69
    font-weight: 600;
412 stevensc 70
    font-size: 0.8rem;
406 stevensc 71
  }
5 stevensc 72
`
73
 
74
export const QuestionActions = styled.div`
75
  display: flex;
76
  align-items: center;
77
  gap: 0.5rem;
78
  justify-content: space-around;
79
  padding-top: 0.5rem;
80
  border-top: 1px solid var(--border-primary);
81
  & > * {
82
    flex-grow: 1;
83
  }
84
  .btn {
85
    color: var(--icons-color);
423 andreina 86
    font-size: 0.9rem !important;
5 stevensc 87
    border-radius: var(--border-radius) !important;
88
    padding: 5px !important;
89
    position: relative;
422 andreina 90
    display: flex;
91
  flex-direction: column;
92
  justify-content: center;
93
  align-items: center;
94
}
5 stevensc 95
  }
96
`
97
 
98
export const QuestionStats = styled.div`
99
  display: flex;
100
  align-items: center;
101
  gap: 0.5rem;
421 andreina 102
  justify-content: space-around;
5 stevensc 103
`
104
 
105
export const QuestionCategories = styled.ul`
106
  align-items: center;
107
  display: flex;
108
  gap: 0.5rem;
109
  flex-wrap: wrap;
110
  max-width: 200px;
111
  li {
412 stevensc 112
    background: rgb(198, 209, 240);
5 stevensc 113
    border-radius: var(--border-radius);
114
    color: var(--font-color);
412 stevensc 115
    padding: 0.3rem 0.4rem;
116
    font-size: 0.7rem;
5 stevensc 117
    font-weight: 600;
118
  }
119
`
120
 
121
const QuestionCard = ({
122
  last_answer_on = '',
123
  added_on = '',
124
  user_name = '',
125
  user_image = '',
126
  title = '',
127
  description = '',
128
  categories = [],
129
  views = 0,
130
  answers = 0,
131
  reactions = 0,
132
  comments = 0,
133
  link_view = '',
134
  link_edit = '',
135
  link_delete = '',
136
  link_answers_add = '',
137
  link_answers = '',
138
  onDelete = () => null,
139
  onEdit = () => null,
140
  onReply = () => null,
141
}) => {
142
  const labels = useSelector(({ intl }) => intl.labels)
143
  const history = useHistory()
144
 
145
  const onView = (url = '') => {
146
    history.replace(url)
147
  }
148
 
149
  const goBack = () => {
150
    history.replace('/my-coach')
151
  }
152
 
153
  return (
154
    <StyledQuestionCard>
155
      <QuestionDetails>
156
        <QuestionUserInfo>
157
          <Avatar
158
            src={user_image}
159
            alt={`${user_name} profile image`}
160
            sx={{ width: '50px', height: '50px' }}
161
          />
406 stevensc 162
          <span>{user_name}</span>
5 stevensc 163
        </QuestionUserInfo>
164
        <QuestionCategories>
165
          {categories.map(({ category }) => (
166
            <li key={category}>{category}</li>
167
          ))}
168
        </QuestionCategories>
169
      </QuestionDetails>
170
 
171
      <h2>{title}</h2>
172
      <span>{`${labels.my_coach_question} ${added_on}`}</span>
173
      {last_answer_on && (
174
        <span>{`${labels.my_coach_last_answer} ${last_answer_on}`}</span>
175
      )}
409 stevensc 176
      <Paraphrase className="my-2">{description}</Paraphrase>
5 stevensc 177
 
178
      <QuestionStats className="mb-2">
179
        <span>{`${answers} ${labels.my_coach_answers}`}</span>
180
        <span>{`${reactions} ${labels.my_coach_reactions}`}</span>
181
        <span>{`${views} ${labels.my_coach_views}`}</span>
182
        <span>{`${comments} ${labels.comments}`}</span>
183
      </QuestionStats>
184
 
185
      <QuestionActions>
186
        {link_answers && (
187
          <button className="btn feed__share-option" onClick={goBack}>
188
            <ArrowBackIosNewIcon />
189
            {labels.back}
190
          </button>
191
        )}
192
        {link_view && (
193
          <button
194
            className="btn feed__share-option"
195
            onClick={() => onView(link_view)}
196
          >
197
            <OpenInNewIcon />
198
            {labels.view}
199
          </button>
200
        )}
201
        {link_edit && (
202
          <button
203
            className="btn feed__share-option"
204
            onClick={() => onEdit(link_edit)}
205
          >
206
            <EditIcon />
207
            {labels.edit}
208
          </button>
209
        )}
210
        {link_answers_add && (
211
          <button
212
            className="btn feed__share-option"
213
            onClick={() => onReply(link_edit)}
214
          >
215
            <EditIcon />
216
            {labels.reply}
217
          </button>
218
        )}
219
        {link_delete && (
220
          <button
221
            className="btn feed__share-option"
222
            onClick={() => onDelete(link_delete)}
223
          >
224
            <DeleteIcon />
225
            {labels.delete}
226
          </button>
227
        )}
228
      </QuestionActions>
229
    </StyledQuestionCard>
230
  )
231
}
232
 
233
export default QuestionCard