Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 532 | Rev 535 | 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'
409 stevensc 10
import Paraphrase from '../UI/Paraphrase'
531 stevensc 11
import StyledContainer from '../widgets/WidgetLayout'
5 stevensc 12
 
13
export const QuestionUserInfo = styled.div`
14
  align-items: center;
15
  display: inline-flex;
16
  gap: 0.5rem;
17
  width: fit-content;
406 stevensc 18
  span {
419 andreina 19
    color: #000;
406 stevensc 20
    font-weight: 600;
412 stevensc 21
    font-size: 0.8rem;
406 stevensc 22
  }
5 stevensc 23
`
24
 
25
export const QuestionStats = styled.div`
26
  display: flex;
27
  align-items: center;
28
  gap: 0.5rem;
421 andreina 29
  justify-content: space-around;
5 stevensc 30
`
31
 
32
export const QuestionCategories = styled.ul`
33
  align-items: center;
34
  display: flex;
35
  gap: 0.5rem;
36
  flex-wrap: wrap;
37
  max-width: 200px;
38
  li {
412 stevensc 39
    background: rgb(198, 209, 240);
5 stevensc 40
    border-radius: var(--border-radius);
41
    color: var(--font-color);
412 stevensc 42
    padding: 0.3rem 0.4rem;
43
    font-size: 0.7rem;
5 stevensc 44
    font-weight: 600;
45
  }
46
`
47
 
48
const QuestionCard = ({
49
  last_answer_on = '',
50
  added_on = '',
51
  user_name = '',
52
  user_image = '',
53
  title = '',
54
  description = '',
55
  categories = [],
56
  views = 0,
57
  answers = 0,
58
  reactions = 0,
59
  comments = 0,
60
  link_view = '',
61
  link_edit = '',
62
  link_delete = '',
63
  link_answers_add = '',
64
  link_answers = '',
65
  onDelete = () => null,
66
  onEdit = () => null,
67
  onReply = () => null,
68
}) => {
69
  const labels = useSelector(({ intl }) => intl.labels)
70
  const history = useHistory()
71
 
72
  const onView = (url = '') => {
73
    history.replace(url)
74
  }
75
 
76
  const goBack = () => {
77
    history.replace('/my-coach')
78
  }
79
 
80
  return (
531 stevensc 81
    <StyledContainer>
534 stevensc 82
      <StyledContainer.Header image={user_image} title={user_name}>
5 stevensc 83
        <QuestionCategories>
84
          {categories.map(({ category }) => (
85
            <li key={category}>{category}</li>
86
          ))}
87
        </QuestionCategories>
532 stevensc 88
      </StyledContainer.Header>
5 stevensc 89
 
90
      <h2>{title}</h2>
91
      <span>{`${labels.my_coach_question} ${added_on}`}</span>
92
      {last_answer_on && (
93
        <span>{`${labels.my_coach_last_answer} ${last_answer_on}`}</span>
94
      )}
409 stevensc 95
      <Paraphrase className="my-2">{description}</Paraphrase>
5 stevensc 96
 
97
      <QuestionStats className="mb-2">
98
        <span>{`${answers} ${labels.my_coach_answers}`}</span>
99
        <span>{`${reactions} ${labels.my_coach_reactions}`}</span>
100
        <span>{`${views} ${labels.my_coach_views}`}</span>
101
        <span>{`${comments} ${labels.comments}`}</span>
102
      </QuestionStats>
103
 
531 stevensc 104
      <StyledContainer.Actions>
5 stevensc 105
        {link_answers && (
531 stevensc 106
          <button onClick={goBack}>
5 stevensc 107
            <ArrowBackIosNewIcon />
108
            {labels.back}
109
          </button>
110
        )}
111
        {link_view && (
531 stevensc 112
          <button onClick={() => onView(link_view)}>
5 stevensc 113
            <OpenInNewIcon />
114
            {labels.view}
115
          </button>
116
        )}
117
        {link_edit && (
531 stevensc 118
          <button onClick={() => onEdit(link_edit)}>
5 stevensc 119
            <EditIcon />
120
            {labels.edit}
121
          </button>
122
        )}
123
        {link_answers_add && (
531 stevensc 124
          <button onClick={() => onReply(link_edit)}>
5 stevensc 125
            <EditIcon />
126
            {labels.reply}
127
          </button>
128
        )}
129
        {link_delete && (
130
          <button
131
            className="btn feed__share-option"
132
            onClick={() => onDelete(link_delete)}
133
          >
134
            <DeleteIcon />
135
            {labels.delete}
136
          </button>
137
        )}
531 stevensc 138
      </StyledContainer.Actions>
139
    </StyledContainer>
5 stevensc 140
  )
141
}
142
 
143
export default QuestionCard