feat: added navbar

This commit is contained in:
Mike 2023-12-29 07:28:13 -05:00
parent f18b11a22b
commit 99a09a0f06
5 changed files with 62 additions and 3 deletions

12
todo/package-lock.json generated
View file

@ -8,6 +8,9 @@
"name": "todo", "name": "todo",
"version": "1.0.0", "version": "1.0.0",
"license": "ISC", "license": "ISC",
"dependencies": {
"date-fns": "^3.0.6"
},
"devDependencies": { "devDependencies": {
"css-loader": "^6.8.1", "css-loader": "^6.8.1",
"html-webpack-plugin": "^5.5.4", "html-webpack-plugin": "^5.5.4",
@ -1071,6 +1074,15 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/date-fns": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.0.6.tgz",
"integrity": "sha512-W+G99rycpKMMF2/YD064b2lE7jJGUe+EjOES7Q8BIGY8sbNdbgcs9XFTZwvzc9Jx1f3k7LB7gZaZa7f8Agzljg==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/kossnocorp"
}
},
"node_modules/debug": { "node_modules/debug": {
"version": "2.6.9", "version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",

View file

@ -20,5 +20,8 @@
"webpack": "^5.89.0", "webpack": "^5.89.0",
"webpack-cli": "^5.1.4", "webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1" "webpack-dev-server": "^4.15.1"
},
"dependencies": {
"date-fns": "^3.0.6"
} }
} }

View file

@ -0,0 +1,38 @@
function navbar(projects) {
let nav = document.createElement('nav');
nav.classList.add('nav');
let projectsDiv = projectButtons(projects);
let addProjectBtn = addProject();
nav.appendChild(projectsDiv);
nav.appendChild(addProjectBtn);
return nav;
}
function projectButtons(projects) {
let projectsDiv = document.createElement('div');
projectsDiv.classList.add(['projects']);
projects.forEach(e => {
if (e.name !== 'default') {
let btn = document.createElement('button');
btn.classList.add(['btn', 'project-btn']);
btn.textContent = e.name;
projectsDiv.append(btn);
};
});
return projectsDiv;
}
function addProject() {
let btn = document.createElement('button');
btn.classList.add(['btn', 'add-project']);
btn.textContent = 'New Project';
return btn;
}
export { navbar };

View file

@ -85,10 +85,10 @@ class todoHandler {
} }
getProjects () { getProjects () {
return this.projects.map(item => item.name); return this.projects;
} }
delProject = name => { delProject(name) {
let index = this.projects.findIndex(proj => proj.name === name); let index = this.projects.findIndex(proj => proj.name === name);
let tempArr = this.projects.filter(item => { let tempArr = this.projects.filter(item => {
if (item !== this.projects[index] || name === 'default' ){ if (item !== this.projects[index] || name === 'default' ){

View file

@ -1,7 +1,9 @@
import { navbar } from "./components/navbar";
import { todoHandler } from "./components/todo"; import { todoHandler } from "./components/todo";
import { save, load } from "./components/storage"; import { save, load } from "./components/storage";
let todos; let data = load(); let todos;
let data = load();
// if there's local data save it in the array // if there's local data save it in the array
if (data) { if (data) {
@ -15,6 +17,10 @@ if (data) {
todos.addProject('job'); todos.addProject('job');
todos.addTodo('default', 'test default 2', 'some stuff', 'today', 5); todos.addTodo('default', 'test default 2', 'some stuff', 'today', 5);
todos.addTodo('default', 'default 2', 'some stuff', 'today', 5); todos.addTodo('default', 'default 2', 'some stuff', 'today', 5);
document.body.appendChild(navbar(todos.getProjects()));
// todos.addTodo('chores', 'choretest', 'some stuff', 'today', 5); // todos.addTodo('chores', 'choretest', 'some stuff', 'today', 5);
// todos.delProject('de'); // todos.delProject('de');
// todos.editTodo('default', 'test', 'stuffing', 'tomorrow', 4); // todos.editTodo('default', 'test', 'stuffing', 'tomorrow', 4);