Edición de Tareas Dinámicas en Aplicaciones Web

Clase 20 de 71Curso de Angular: Creación de Aplicaciones Web

Resumen

¿Cómo marcar una clase como completada de forma dinámica?

Para completar una clase de manera dinámica, necesitas asegurarte de que cada elemento li (lista) tenga la clase "completed" activada solo si la tarea está finalizada. Dado que el estado de una tarea es un booleano, la asignación puede ser directa, reflejándose inmediatamente en la interfaz gracias al uso de programación reactiva con signals. Esto permite que, al marcar una tarea como completada, aparezca una línea de tachado que la distingue visualmente como terminada.

¿Cómo activar el modo de edición en una tarea?

Para activar el modo de edición en una tarea, necesitas asignar una clase dinámica llamada "editing". Esta clase revela un input que permite editar el título de la tarea al hacer doble clic en él. A continuación, te mostramos los pasos para habilitar este modo:

  1. Usa la clase "editing": Una clase CSS que se activa al entrar en modo de edición.
  2. Input, visible solo en edición: Define un input que aparece solo al activar el modo de edición.
  3. Valor dinámico: Asegúrate de que el input tenga un valor que refleje el título actual de la tarea para editar.

En el modelo de tareas (tasks), se puede agregar un estado opcional editing, que indica si una tarea está en modo de edición o no. Este estado se cambia al hacer doble clic sobre una tarea.

Añadir un estado de edición

Define un estado opcional editing en tu modelo de datos para gestionar el modo de edición:

let task = {
    title: 'Nombre de la tarea',
    completed: false,
    editing: false  // Estado opcional
};

Este estado ayuda a determinar qué tarea está en edición, para que al hacer doble clic solo actives el input de esa tarea y se oculte el resto.

Método para cambiar entre modos

Añade un método para cambiar el modo de edición al hacer doble clic:

function updateEditingMode(taskIndex) {
    tasks.forEach((task, index) => {
        task.editing = (index === taskIndex);
    });
}

Con este método, al hacer doble clic en una tarea específica, se activa su estado de edición y los demás se desactivan, permitiendo editar una tarea a la vez.

¿Cómo guardar cambios en el título de una tarea?

Al terminar de editar, presiona Enter para guardar cambios. Aquí te mostramos cómo lograrlo:

Capturar el evento Enter

Configura un listener para capturar el evento Enter en el input de edición:

function handleEnterKey(event, taskIndex) {
    if (event.key === 'Enter') {
        updateTaskTitle(taskIndex, event.target.value);
    }
}

Actualizar título y finalizar edición

Crea un método para actualizar el título de la tarea y salir del modo de edición:

function updateTaskTitle(taskIndex, newTitle) {
    tasks[taskIndex].title = newTitle;
    tasks[taskIndex].editing = false;
}

Este método asegura que el nuevo título se guarda en la tarea específica, y el modo de edición se desactiva al guardar.

Probar la funcionalidad

Finalmente, prueba la funcionalidad verificando que al editar y presionar Enter, el título de la tarea se actualiza correctamente sin perder los estados visuales previos como la línea de tachado si la tarea está completada.

Siguiendo estos pasos, podrás implementar una edición dinámica y eficiente en tus tareas, mejorando la interacción del usuario con la aplicación. La clave está en usar programación reactiva y manipular el DOM de forma dinámica y efectiva. ¡Adelante, sigue practicando y perfecciona tus habilidades en desarrollo web!