Proyectos de Subversion LeadersLinked - SPA

Rev

Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3741 stevensc 1
import React, { useMemo } from 'react';
2
 
3
import { parseHelperToSelect } from '@shared/utils';
4
 
5
import { Form, FormButton, FormInput, FormRichEditor, FormSelect } from '@shared/components';
6
 
7
export function QuestionForm({ question = {}, categories = {}, onSubmit = () => {} }) {
8
  const handleSubmit = (data) => {
9
    onSubmit(data);
10
  };
11
 
12
  const defaultValues = useMemo(() => {
13
    if (!question)
14
      return {
15
        title: '',
16
        category_id: [],
17
        description: ''
18
      };
19
 
20
    const categoryIds = Object.entries(categories)
21
      .filter(([, cat]) => question.categories.includes(cat))
22
      .map(([key]) => key);
23
 
24
    return {
25
      title: question.title,
26
      category_id: categoryIds,
27
      description: question.description
28
    };
29
  }, [question, categories]);
30
 
31
  return (
32
    <Form onSubmit={handleSubmit} defaultValues={defaultValues} reset>
33
      <FormInput
34
        name='title'
35
        label='Título'
36
        rules={{ required: 'Este campo es requerido.' }}
37
        placeholder='Ingrese el título de la pregunta'
38
      />
39
 
40
      <FormSelect
41
        label='Categorías'
42
        name='category_id'
43
        multiple
44
        options={parseHelperToSelect(categories)}
45
        placeholder='Seleccione una categoría'
46
        rules={{
47
          required: 'Este campo es requerido.',
48
          validate: (val) => val.length > 0 || 'Por favor, seleccione una categoria.'
49
        }}
50
      />
51
 
52
      <FormRichEditor
53
        name='description'
54
        label='Descripción'
55
        rules={{ required: 'Este campo es requerido.' }}
56
      />
57
 
58
      <FormButton type='submit'>Guardar</FormButton>
59
    </Form>
60
  );
61
}