1 - Clone o repositório do exercício
- Use o comando:
git clone git@github.com:gBatiista/esquenta-tryunfo.git
2 - Instale as dependências
npm install
Neste requisito, você deve criar um formulário com campos de título da tarefa, descrição e categoria.
- Crie um componente
Form
que será o seu formulário dentro do diretóriosrc/components
. - O componente deve ter um elemento do tipo
form
e conter os seguintes inputs:
1 - Input do tipo
text
que será o campo referente ao título da tarefa
2 - Input do tipotext
que será o campo referente à descrição da tarefa
3 - Input do tiposelect
, referente à categoria da tarefa com asoptions
: 'Trabalho', 'Casa', 'Lazer', 'Outros'
4 - Input do tipocheckbox
envelopado com umalabel
"Importante"
- Inserir um botão com o texto "Adicionar"
- O componente deve receber as seguintes props:
1 - title, uma string
2 - description, uma string
3 - category, uma string
4 - handleChange, uma callback
5 - addTask, uma callback
6 - urgent, uma boolean
7 - disabledButton, uma boolean
OBS: Não se esqueça de fazer a validação das props com o PropTypes.
- No App, crie os seguintes states:
1 - title
2 - description
3 - category
4 - urgent
5 - disabledButton
6 - tasks (que deve ser iniciado como uma array vazio)
A função handleChange é uma função genérica disparada por eventos nos inputs. Essa função alterar o valor de states
do App de acordo com os valores (value) do input onde o evento ocorreu.
A função validateFields
deverá validar os campos de title
e description
com as seguintes condições:
- title deve ter mais de 4 caracteres
- description deve ter mais de 10 caracteres
E, caso os campos sejam válidos, o botão "Adicionar" deve ser habilitado via state
disabledButton.
O componente Task
deve ser criado no diretório components
que receberá as seguintes props:
1 - title
2 - description
3 - category
4 - removeTask
5 - urgent
O componente deve renderizar em uma tag div
com a classe "taskCard" com os seguintes elementos:
1 - Uma tag h2 com
title
2 - Uma tag p comdescription
3 - Uma tag p comcategory
4 - Uma tag p com o texto "Importante" se a propurgent
fortrue
5 - Um botão com o texto "Feito!"
O componente Task
deve ser renderizado no App
a medida que novas tarefas vão sendo adicionadas
A função removeTask é disparada por eventos de click
no botão Feito
do componente Task
. Essa função deve remover a tarefa da aplicação.