1
resposta

06 Faça como eu fiz

/*Colocar todo o código dentro de ( () => {...código...})() - Função para encapsular o script.
Função de invocação imediata(não exibe modelo de negócio no navegador)*/

( () => {

    const criarTarefa = (evento) => { 

    evento.preventDefault()

    const lista = document.querySelector('[data-list]')
    const input = document.querySelector('[data-form-input]')
    const valor = input.value

    const tarefa = document.createElement('li')
    tarefa.classList.add('task')

    const conteudo = `<p class="content">${valor}</p>`
    tarefa.innerHTML = conteudo
    //Coloca o botão dentro da tarefa(tag pai) que é o li
    tarefa.appendChild(BotaoConclui())
    lista.appendChild(tarefa)   
    input.value = " "   

}

const novaTarefa = document.querySelector('[data-form-button]')

novaTarefa.addEventListener('click', criarTarefa)

//Criando um componente
const BotaoConclui = ()=>{
    //Criando um elemento
    const botaoConclui = document.createElement('button')
    //Adicionando uma classe ao botão
    botaoConclui.classList.add('check-button')
    //Adiciona um texto no botão
    botaoConclui.innerText = 'concluir'
    //Criando um evento
    botaoConclui.addEventListener('click', concluirTarefa)

    //Retornar o botão
    return botaoConclui
}

//Criando a função concluir tarefa (Arrow function - função de seta)
const concluirTarefa = (evento) => {
    //Retorna em qual elemento eu cliquei(target - alvo clicado)
    const botaoConclui = evento.target
    //Sobe um nó na árvore do DOM (parentElement - pega o pai do elemento clicado, pai do botão é li)
    const tarefaCompleta = botaoConclui.parentElement
    //Insere envento de rabisco na li
    tarefaCompleta.classList.toggle('done')
}
})()
1 resposta

Boa Carlos!!

Parabéns, ficou excelente!

Qualquer dúvida pode contar com a gente aqui no fórum, ta bom?

Abraços e bons estudos :D