Pessoal fiz a parte de edição de tarefas diferente do que foi apresentado na aula, pois queria incluir a edição diretamente no campo de parágrafo ao invés de utilizar um prompt. Porém queria adicionar uma funcionalidade de impedir que o usuário saia do campo de edição antes de salvar as alterações. Conseguem me ajudar?
Segue o código :
function criarElementoTarefa (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 botao = document.createElement('button');
botao.classList.add('app_button-edit');
function salvarOuEditar() {
const textoAnterior = tarefa.descricao; // Salva o texto anterior
if (edicaoAtiva) {
// Salvar mudanças
const novaDescricao = paragrafo.textContent.trim();
if (novaDescricao !== ''){
paragrafo.contentEditable = false;
paragrafo.textContent = novaDescricao;
tarefa.descricao = novaDescricao;
atualizarTarefas();
}else{
paragrafo.textContent = textoAnterior;
alert('Digite algo');
edicaoAtiva = !edicaoAtiva;
}
} else {
// Permitir edição
paragrafo.contentEditable = true;
paragrafo.focus();
}
edicaoAtiva = !edicaoAtiva;
console.log(edicaoAtiva);
}
botao.onclick = salvarOuEditar;
paragrafo.addEventListener('keydown', (event) => {// opção para utilizar o enter para salvar
if (event.key === 'Enter') {
event.preventDefault();
salvarOuEditar();
}
});
const imagemBotao = document.createElement('img');
imagemBotao.setAttribute('src','/imagens/edit.png');
botao.append(imagemBotao);//colocando a imagem dentro do botão
li.append(svg);
li.append(paragrafo);
li.append(botao);
return li;
}