mirror of
https://gitea.smigz.com/smiggiddy/odin-codeprojects.git
synced 2024-12-27 06:40:42 -05:00
feat: styling for navbar
This commit is contained in:
parent
e4a5c24ff0
commit
5d8b54fe7f
5 changed files with 106 additions and 14 deletions
|
@ -22,7 +22,7 @@ function projectButtons(projects) {
|
||||||
|
|
||||||
projects.forEach(e => {
|
projects.forEach(e => {
|
||||||
let btn = document.createElement('button');
|
let btn = document.createElement('button');
|
||||||
btn.classList.add(['btn', 'project-btn']);
|
btn.classList.add('btn', 'project-btn');
|
||||||
btn.textContent = e.name;
|
btn.textContent = e.name;
|
||||||
btn.dataset.projectName = e.name;
|
btn.dataset.projectName = e.name;
|
||||||
// btn.addEventListener('click', e => console.log(e.target.dataset.projectName));
|
// btn.addEventListener('click', e => console.log(e.target.dataset.projectName));
|
||||||
|
@ -33,7 +33,7 @@ function projectButtons(projects) {
|
||||||
|
|
||||||
function addProject() {
|
function addProject() {
|
||||||
let btn = document.createElement('button');
|
let btn = document.createElement('button');
|
||||||
btn.classList.add(['btn', 'add-project']);
|
btn.classList.add('btn','add-project-btn');
|
||||||
btn.textContent = 'New Project';
|
btn.textContent = 'New Project';
|
||||||
return btn;
|
return btn;
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ class todoHandler {
|
||||||
if (!_titleExists) {
|
if (!_titleExists) {
|
||||||
this.projects[index].todos.push(new createTodo(title, description, dueDate, pomodoros));
|
this.projects[index].todos.push(new createTodo(title, description, dueDate, pomodoros));
|
||||||
} else {
|
} else {
|
||||||
console.log('unable to create duplicate note');
|
alert('unable to create duplicate note');
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ class todoHandler {
|
||||||
this.projects.push(createProject(name));
|
this.projects.push(createProject(name));
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
console.log(`Project ${name} already exists!`);
|
alert(`Project ${name} already exists!`);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
import { updateDisplay } from "..";
|
||||||
|
import { save } from "./storage";
|
||||||
|
|
||||||
function todoTableComponent(todos) {
|
function todoTableComponent(todos) {
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.classList.add('todos');
|
div.classList.add('todos');
|
||||||
|
@ -14,6 +17,8 @@ function todoTableComponent(todos) {
|
||||||
const tdPomodoro = document.createElement('td');
|
const tdPomodoro = document.createElement('td');
|
||||||
const tdCompleted = document.createElement('td');
|
const tdCompleted = document.createElement('td');
|
||||||
|
|
||||||
|
tr.classList.add('todo-row');
|
||||||
|
tr.dataset.todoId = element.title;
|
||||||
tdTitle.textContent = element.title;
|
tdTitle.textContent = element.title;
|
||||||
tdDesc.textContent = element.description;
|
tdDesc.textContent = element.description;
|
||||||
tdDueDate.textContent = element.dueDate;
|
tdDueDate.textContent = element.dueDate;
|
||||||
|
@ -36,8 +41,47 @@ function todoTableComponent(todos) {
|
||||||
return div;
|
return div;
|
||||||
}
|
}
|
||||||
|
|
||||||
function addTodo() {
|
function projectComponent() {
|
||||||
|
const div = document.createElement('div');
|
||||||
|
const input = document.createElement('input');
|
||||||
|
const cancelButton = document.createElement('button');
|
||||||
|
const submitButton = document.createElement('button');
|
||||||
|
|
||||||
|
div.classList.add('project-add');
|
||||||
|
input.classList.add('project-input-name');
|
||||||
|
cancelButton.classList.add('cancel-project-btn');
|
||||||
|
submitButton.classList.add('submit-project-btn');
|
||||||
|
|
||||||
|
input.placeholder = 'Project name...';
|
||||||
|
submitButton.textContent = 'Submit';
|
||||||
|
cancelButton.textContent = 'Cancel';
|
||||||
|
|
||||||
|
div.appendChild(input);
|
||||||
|
div.appendChild(submitButton);
|
||||||
|
div.appendChild(cancelButton);
|
||||||
|
|
||||||
|
return div;
|
||||||
}
|
}
|
||||||
|
|
||||||
export { todoTableComponent }
|
function addProject(proj) {
|
||||||
|
const button = document.querySelector('.add-project-btn');
|
||||||
|
const submitButton = document.querySelector('.submit-project-btn')
|
||||||
|
const cancelButton = document.querySelector('.cancel-project-btn');
|
||||||
|
const div = document.querySelector('.project-add');
|
||||||
|
const input = document.querySelector('.project-input-name');
|
||||||
|
|
||||||
|
button.addEventListener('click', () => div.classList.add('project-add-active'));
|
||||||
|
cancelButton.addEventListener('click', () => div.classList.remove('project-add-active'));
|
||||||
|
submitButton.addEventListener('click', () => {
|
||||||
|
let name = input.value;
|
||||||
|
|
||||||
|
// Add project via the global todos component
|
||||||
|
proj.addProject(name);
|
||||||
|
div.classList.remove('project-add-active');
|
||||||
|
updateDisplay();
|
||||||
|
save(proj.getEverything());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export { projectComponent, todoTableComponent, addProject };
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import { todoTableComponent } from "./components/todoComponent";
|
import { addProject, projectComponent, todoTableComponent } from "./components/todoComponent";
|
||||||
import { navbar } from "./components/navbar";
|
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";
|
||||||
|
import './style.css';
|
||||||
|
|
||||||
let todos;
|
let todos;
|
||||||
let data = load();
|
let data = load();
|
||||||
|
@ -15,27 +16,40 @@ if (data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
let projects = todos.getProjects();
|
let projects = todos.getProjects();
|
||||||
|
let selectedProject = todos.getTodosFromProject('default');
|
||||||
|
console.table(todos.getEverything());
|
||||||
// starter test data to remove
|
// starter test data to remove
|
||||||
todos.addProject('job');
|
// todos.addProject('job');
|
||||||
todos.addTodo('default', 'test default 3', 'some stuff', 'today', 5);
|
// todos.addTodo('default', 'test default 3', 'some stuff', 'today', 5);
|
||||||
todos.addTodo('job', 'default 5', 'some stuff', 'today', 5);
|
// todos.addTodo('job', 'default 5', 'some stuff', 'today', 5);
|
||||||
|
|
||||||
|
|
||||||
function website() {
|
function website() {
|
||||||
const currentProject = todos.getTodosFromProject('default');
|
|
||||||
const div = document.createElement('div');
|
const div = document.createElement('div');
|
||||||
div.classList.add('container');
|
div.classList.add('container');
|
||||||
|
document.body.appendChild(div);
|
||||||
|
|
||||||
|
updateDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateDisplay() {
|
||||||
|
const div = document.querySelector('.container');
|
||||||
|
if (div) div.innerHTML = '';
|
||||||
|
|
||||||
const _navbar = navbar(projects);
|
const _navbar = navbar(projects);
|
||||||
const _todos = todoTableComponent(currentProject);
|
const _todos = todoTableComponent(selectedProject);
|
||||||
|
const _addProject = projectComponent();
|
||||||
|
|
||||||
|
_navbar.appendChild(_addProject);
|
||||||
div.appendChild(_navbar);
|
div.appendChild(_navbar);
|
||||||
div.appendChild(_todos);
|
div.appendChild(_todos);
|
||||||
|
|
||||||
document.body.appendChild(div);
|
document.body.appendChild(div);
|
||||||
|
addProject(todos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
website();
|
website();
|
||||||
save(todos.getEverything());
|
save(todos.getEverything());
|
||||||
|
|
||||||
|
export { updateDisplay };
|
||||||
|
|
34
todo/src/style.css
Normal file
34
todo/src/style.css
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
:root {
|
||||||
|
--color: 1234;
|
||||||
|
}
|
||||||
|
|
||||||
|
body,
|
||||||
|
html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-width: 30vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-add {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-add-active {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 25px 0;
|
||||||
|
}
|
Loading…
Reference in a new issue