Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] evoluindo no JavaScript

const btnTarefa = document.querySelector('.app__button--add-task');
const formTarefa = document.querySelector('.app__form-add-task');
const textArea = document.querySelector('.app__form-textarea');
const ulTarefas = document.querySelector('.app__section-task-list');
const btnCancelar = document.querySelector('.app__form-footer__button--cancel');

const tarefas = JSON.parse(localStorage.getItem('tarefas')) || [];

const limparFormulario = () => {
  textArea.value = '';
  formTarefa.classList.add('hidden');
};

btnCancelar.addEventListener('click', limparFormulario);

const atualizarTarefas = () => {
  localStorage.setItem('tarefas', JSON.stringify(tarefas));
};

const criarTarefa = (tarefa) => {
  const li = document.createElement('li');
  li.classList.add('app__section-task-list-item');

  const svg = document.createElement('svg');
  svg.innerHTML = `
    <svg class="app__section-task-icon-status" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
      <circle cx="12" cy="12" r="12" fill="#FFF"></circle>
      <path d="M9 16.1719L19.5938 5.57812L21 6.98438L9 18.9844L3.42188 13.4062L4.82812 12L9 16.1719Z" fill="#01080E"></path>
    </svg>
  `;

  const paragrafo = document.createElement('p');
  paragrafo.textContent = tarefa.descricao;
  paragrafo.classList.add('app__section-task-list-item-description');

  const btn = document.createElement('button');
  btn.classList.add('app_button-edit');

  btn.onclick = () => {
    const novaDescricao = prompt('Qual o novo nome da tarefa?');
    if (novaDescricao) {
      paragrafo.textContent = novaDescricao;
      tarefa.descricao = novaDescricao;
      atualizarTarefas();
    }
  };

  const imgBotao = document.createElement('img');
  imgBotao.setAttribute('src', '/imagens/edit.png');

  btn.append(imgBotao);
  li.append(svg);
  li.append(paragrafo);
  li.append(btn);

  return li;
};

btnTarefa.addEventListener('click', () => {
  formTarefa.classList.toggle('hidden');
});

formTarefa.addEventListener('submit', (evento) => {
  evento.preventDefault();
  const tarefa = {
    descricao: textArea.value,
  };
  tarefas.push(tarefa);
  const elementoTarefa = criarTarefa(tarefa);
  ulTarefas.append(elementoTarefa);
  atualizarTarefas();
  textArea.value = '';
  formTarefa.classList.add('hidden');
});

tarefas.forEach((tarefa) => {
  const elementoTarefa = criarTarefa(tarefa);
  ulTarefas.append(elementoTarefa);
});
1 resposta

Oi, Samuel, tudo bem?

Parabéns pelo resultado, ficou ótimo! Também agradeço por compartilhar seu projeto, com certeza vai ajudar nos estudos de todas as pessoas que estão aprendendo este mesmo assunto.

Continue mergulhando em tecnologia e se tiver dúvidas, conte com o fórum.

Abraços e bons estudos!