Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 536 | Rev 1507 | 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;
748 stevensc 19
  padding: 5px;
5 stevensc 20
`
21
 
748 stevensc 22
const StyledQuestionContainer = styled(StyledContainer)`
23
  display: flex;
24
  flex-direction: column;
25
  height: 100%;
26
`
27
 
28
const StyledBody = styled(StyledContainer.Body)`
29
  flex: 1 1 0;
30
`
31
 
32
const QuestionCategories = styled.ul`
5 stevensc 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,
748 stevensc 67
  onReply = () => null
5 stevensc 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 (
748 stevensc 81
    <StyledQuestionContainer>
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>
748 stevensc 89
 
90
      <StyledBody>
535 stevensc 91
        <h2>{title}</h2>
92
        <span>{`${labels.my_coach_question} ${added_on}`}</span>
536 stevensc 93
        {last_answer_on ? (
535 stevensc 94
          <span>{`${labels.my_coach_last_answer} ${last_answer_on}`}</span>
536 stevensc 95
        ) : null}
96
        <Paraphrase>{description}</Paraphrase>
748 stevensc 97
      </StyledBody>
5 stevensc 98
 
748 stevensc 99
      <QuestionStats>
100
        <span>{`${answers} ${labels.my_coach_answers}`}</span>
101
        <span>{`${reactions} ${labels.my_coach_reactions}`}</span>
102
        <span>{`${views} ${labels.my_coach_views}`}</span>
103
        <span>{`${comments} ${labels.comments}`}</span>
104
      </QuestionStats>
105
 
531 stevensc 106
      <StyledContainer.Actions>
5 stevensc 107
        {link_answers && (
531 stevensc 108
          <button onClick={goBack}>
5 stevensc 109
            <ArrowBackIosNewIcon />
110
            {labels.back}
111
          </button>
112
        )}
113
        {link_view && (
531 stevensc 114
          <button onClick={() => onView(link_view)}>
5 stevensc 115
            <OpenInNewIcon />
116
            {labels.view}
117
          </button>
118
        )}
119
        {link_edit && (
531 stevensc 120
          <button onClick={() => onEdit(link_edit)}>
5 stevensc 121
            <EditIcon />
122
            {labels.edit}
123
          </button>
124
        )}
125
        {link_answers_add && (
531 stevensc 126
          <button onClick={() => onReply(link_edit)}>
5 stevensc 127
            <EditIcon />
128
            {labels.reply}
129
          </button>
130
        )}
131
        {link_delete && (
132
          <button
748 stevensc 133
            className='btn feed__share-option'
5 stevensc 134
            onClick={() => onDelete(link_delete)}
135
          >
136
            <DeleteIcon />
137
            {labels.delete}
138
          </button>
139
        )}
531 stevensc 140
      </StyledContainer.Actions>
748 stevensc 141
    </StyledQuestionContainer>
5 stevensc 142
  )
143
}
144
 
145
export default QuestionCard