@@ -4,6 +4,7 @@ import TodoItem from './TodoItem';
44export default class UI {
55 constructor ( ) {
66 this . app = new TodoApp ( ) ; // Store the TodoApp instance in the UI class
7+ this . selectedProject = 'Default' ;
78 this . newProjectPopup = document . querySelector ( ".add-project-popup" ) ;
89 this . newProjectPopupAddBtn = document . querySelector ( ".button-add-project-popup" ) ;
910 this . newProjectNameInput = document . querySelector ( ".input-add-project-popup" ) ;
@@ -24,15 +25,17 @@ export default class UI {
2425
2526 let projectNames = this . app . listProjects ( ) ;
2627 projectNames . forEach ( ( projectName ) => {
27- UI . createProjectTab ( projectName , ProjectsDiv ) ;
28+ UI . createProjectTab ( projectName , ProjectsDiv , projectName === this . selectedProject ) ;
2829 } ) ;
2930 this . initProjectButtons ( ) ;
3031 }
3132
32- static createProjectTab ( name , ProjectsDiv ) {
33- console . log ( name ) ;
33+ static createProjectTab ( name , ProjectsDiv , isSelected ) {
3434 const userProject = document . createElement ( "div" ) ;
3535 userProject . classList . add ( "project-item" ) ;
36+ if ( isSelected ) {
37+ userProject . classList . add ( "selected-project" ) ;
38+ }
3639 userProject . innerHTML = `
3740 <span class="left-project-panel">
3841 <button class="button-project" data-project-name="${ name } ">
@@ -73,7 +76,9 @@ export default class UI {
7376 const selectedprojectItem = document . querySelector ( '.selected-project' ) ;
7477 if ( newProjectName && ! exisitingProjects . includes ( newProjectName ) ) {
7578 this . app . addProject ( newProjectName ) ;
79+ this . selectedProject = newProjectName ; // Set the new project as selected and opens it
7680 this . loadProjects ( ) ;
81+ this . OpenProject ( newProjectName ) ;
7782 }
7883 else {
7984 alert ( "Project Name cannot be duplicate or null!" )
@@ -83,13 +88,13 @@ export default class UI {
8388
8489 onProjectButtonClick ( event ) {
8590 const project = event . currentTarget ; // The clicked button
86- const allprojectItems = document . querySelectorAll ( '.project-item' ) ;
87- allprojectItems . forEach ( item => item . classList . remove ( "selected-project" ) ) ;
88- const selectedprojectItem = project . closest ( '.project-item' ) ;
89- selectedprojectItem . classList . add ( "selected-project" ) ;
9091 let projectName = project . getAttribute ( "data-project-name" ) ;
9192 console . log ( projectName ) ;
9293 this . OpenProject ( projectName ) ;
94+
95+ // Update the selected project
96+ this . selectedProject = projectName ;
97+ this . loadProjects ( ) ;
9398 }
9499
95100 OpenProject ( projectName ) {
@@ -142,7 +147,12 @@ export default class UI {
142147 if ( confirm ( `Are you sure you want to delete the project "${ projectName } "?` ) ) {
143148 this . app . removeProject ( projectName ) ;
144149 console . log ( `${ projectName } deleted` ) ;
150+ // If the deleted project was the selected one, select the default project
151+ if ( this . selectedProject === projectName ) {
152+ this . selectedProject = 'Default' ; // Or the first available project
153+ }
145154 this . loadProjects ( ) ; // Refresh the project list
155+ this . OpenProject ( this . selectedProject ) ;
146156 }
147157 } catch ( error ) {
148158 console . error ( 'Error deleting project:' , error . message ) ;
0 commit comments