require keyup before backspace after deleting task
Hunter
Tuesday, July 30th, 2024 at 3:59 PM
49 const appContainer = document.getElementById('app-container');
50 let currentTask = { id: 'root', text: 'todo', state: 0, subtasks: [{ id: Date.now(), text: '', state: 0, subtasks: [] }], selectedSubtaskId: null };
51 let taskPath = [currentTask];
52 + let globalBackspaceBlock = false;
53
54 function createTaskElement(task, isParent = false) {
55 const taskContainer = document.createElement('div');
69 taskInput.type = 'text';
70 taskInput.value = task.text;
71
- let canDelete = true;
72 + const backspaceHandler = (function() {
73 + let canDelete = true;
74
- taskInput.addEventListener('keydown', (e) => {
- if (e.key === 'Backspace') {
- if (taskInput.value === '' && canDelete && task !== taskPath[0]) {
- e.preventDefault();
- deleteTask(task);
- } else if (taskInput.value !== '') {
- canDelete = false;
75 + return {
76 + keydown: function(e) {
77 + if (e.key === 'Backspace') {
78 + if (globalBackspaceBlock) {
79 + e.preventDefault();
80 + return;
81 + }
82 + if (taskInput.value === '' && canDelete && task !== taskPath[0]) {
83 + e.preventDefault();
84 + globalBackspaceBlock = true;
85 + deleteTask(task);
86 + } else if (taskInput.value !== '') {
87 + canDelete = false;
88 + }
89 + } else {
90 + handleKeyDown(e, task);
91 + }
92 + },
93 + keyup: function(e) {
94 + if (e.key === 'Backspace') {
95 + canDelete = (taskInput.value === '');
96 + globalBackspaceBlock = false;
97 + }
98 }
- } else {
- handleKeyDown(e, task);
- }
- });
99 + };
100 + })();
101
- taskInput.addEventListener('keyup', (e) => {
- if (e.key === 'Backspace') {
- canDelete = (taskInput.value === '');
- }
- });
102 + taskInput.addEventListener('keydown', backspaceHandler.keydown);
103 + taskInput.addEventListener('keyup', backspaceHandler.keyup);
104
105 taskInput.addEventListener('input', () => {
106 task.text = taskInput.value;