Skip to content

Commit a9e34e5

Browse files
committed
feat: delete project feature
1 parent 2edb748 commit a9e34e5

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

src/scripts/Modules/UI.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ export default class UI {
5555

5656
const newProjectBtn = document.querySelector(".button-add-project");
5757
newProjectBtn.addEventListener('click', (event) => this.openAddProjectPopup(event));
58+
59+
const deleteBtns = document.querySelectorAll('.right-project-panel');
60+
deleteBtns.forEach((btn) => {
61+
btn.addEventListener('click', (event) => this.onProjectDelete(event));//arrow function binds this context to button
62+
});
5863
}
5964

6065
openAddProjectPopup(event) {
@@ -123,6 +128,27 @@ export default class UI {
123128
createNewTodoBtn.addEventListener('click', () => this.onCreateNewTodo(projectName));
124129
}
125130

131+
onProjectDelete(event) {
132+
try {
133+
const projectItem = event.currentTarget.closest('.project-item');
134+
const projectButton = projectItem.querySelector('.button-project');
135+
const projectName = projectButton.getAttribute('data-project-name');
136+
137+
if (!projectName) {
138+
throw new Error('Could not find project name');
139+
}
140+
141+
// Confirm before deleting
142+
if (confirm(`Are you sure you want to delete the project "${projectName}"?`)) {
143+
this.app.removeProject(projectName);
144+
console.log(`${projectName} deleted`);
145+
this.loadProjects(); // Refresh the project list
146+
}
147+
} catch (error) {
148+
console.error('Error deleting project:', error.message);
149+
}
150+
}
151+
126152
handleTodoCompletion(event, todotitle, projectName) {
127153
this.app.updateTodoCompletion(todotitle, projectName);
128154
}

0 commit comments

Comments
 (0)