-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathproject-modal.js
81 lines (66 loc) · 2.52 KB
/
project-modal.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { Project } from './project.js';
import { ProjectButton } from './project-button.js';
import { Storage } from './storage.js';
import { TaskModal } from './task-modal.js';
import { Editor } from './editor.js';
const NewProjectModal = (() => {
const addProjectButton = document.querySelector('.add-project-button');
const newProjectModal = document.querySelector('.add-project-modal');
const newProjectForm = document.querySelector('#add-project-form');
const projectNameInput = document.querySelector('#project_name');
const modalCancelButton = document.querySelector(
'.add-project-modal .cancel-button'
);
const submitButton = document.querySelector('.add-project-submit-button');
const newProjectModalOverlay = document.querySelector(
'.add-project-modal-overlay '
);
// Modal
const toggleNewProjectModal = () =>
newProjectModal.classList.toggle('visible');
const toggleModalOverlay = () =>
newProjectModalOverlay.classList.toggle('visible');
const resetForm = () => newProjectForm.reset();
const focusInput = () => projectNameInput.focus();
// Submit Button
const enableSubmitButton = () => (submitButton.disabled = false);
const disableSubmitButton = () => (submitButton.disabled = true);
const toggleModal = () => {
toggleModalOverlay();
toggleNewProjectModal();
resetForm();
disableSubmitButton();
focusInput();
};
const addProjectOnSubmit = () => {
const projectName = projectNameInput.value;
const projectId = Storage.getNewProjectId();
const tasks = [];
const project = new Project(projectId, projectName, tasks);
TaskModal.addProjectSelectorOption(projectName);
Storage.addProject(project);
ProjectButton.addProjectButton(projectName);
const newButton = document.querySelector(
`.project-button[data-project-id="${projectId}"]`
);
Editor.changeContent(newButton, projectName);
toggleModal();
};
// Event Listeners
addProjectButton.addEventListener('mouseup', () => toggleModal());
modalCancelButton.addEventListener('click', () => toggleModal());
projectNameInput.addEventListener('input', () => {
const isProjectNameInputFilled = projectNameInput.value.replace(/\s/g, '');
if (isProjectNameInputFilled) {
enableSubmitButton();
return;
}
disableSubmitButton();
});
submitButton.addEventListener('click', () => addProjectOnSubmit());
newProjectForm.addEventListener('submit', (e) => {
e.preventDefault();
addProjectOnSubmit();
});
})(Project);
export { NewProjectModal };