Proyectos de Subversion LeadersLinked - SPA

Rev

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