-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
100 lines (95 loc) · 3.05 KB
/
main.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
const tabItems = document.querySelectorAll(".tab-item");
const tabContentItems = document.querySelectorAll(".tab-content-item");
function selectItem(e) {
removeBorder();
removeShow();
this.classList.add("tab-border");
const tabContentItem = document.querySelector(`#${this.id}-content`);
tabContentItem.classList.add("show");
}
function removeBorder() {
tabItems.forEach((item) => item.classList.remove("tab-border"));
}
function removeShow() {
tabContentItems.forEach((item) => item.classList.remove("show"));
}
//Listen for tab click
tabItems.forEach((item) => item.addEventListener("click", selectItem));
var currentMonth = document.querySelector(".current-month");
var calendarDays = document.querySelector(".calendar-days");
var today = new Date();
var date = new Date();
currentMonth.textContent = date.toLocaleDateString("en-US", {
month: "long",
year: "numeric",
});
today.setHours(0, 0, 0, 0);
renderCalendar();
function renderCalendar() {
const prevLastDay = new Date(
date.getFullYear(),
date.getMonth(),
0
).getDate();
const totalMonthDay = new Date(
date.getFullYear(),
date.getMonth() + 1,
0
).getDate();
const startWeekDay = new Date(
date.getFullYear(),
date.getMonth(),
1
).getDay();
calendarDays.innerHTML = "";
let totalCalendarDay = 6 * 7;
for (let i = 0; i < totalCalendarDay; i++) {
let day = i - startWeekDay;
if (i <= startWeekDay) {
// adding previous month days
calendarDays.innerHTML += `<div class='padding-day'>${
prevLastDay - i
}</div>`;
} else if (i <= startWeekDay + totalMonthDay) {
// adding this month days
date.setDate(day);
date.setHours(0, 0, 0, 0);
let dayClass =
date.getTime() === today.getTime() ? "current-day" : "month-day";
calendarDays.innerHTML += `<div class='${dayClass}'>${day}</div>`;
} else {
// adding next month days
calendarDays.innerHTML += `<div class='padding-day'>${
day - totalMonthDay
}</div>`;
}
}
}
document.querySelectorAll(".soft-btn").forEach(function (element) {
element.addEventListener("click", function () {
date = new Date(currentMonth.textContent);
date.setMonth(
date.getMonth() + (element.classList.contains("prev") ? -1 : 1)
);
currentMonth.textContent = date.toLocaleDateString("en-US", {
month: "long",
year: "numeric",
});
renderCalendar();
});
});
document.querySelectorAll(".btn").forEach(function (element) {
element.addEventListener("click", function () {
let btnClass = element.classList;
date = new Date(currentMonth.textContent);
if (btnClass.contains("today")) date = new Date();
else if (btnClass.contains("prev-year"))
date = new Date(date.getFullYear() - 1, 0, 1);
else date = new Date(date.getFullYear() + 1, 0, 1);
currentMonth.textContent = date.toLocaleDateString("en-US", {
month: "long",
year: "numeric",
});
renderCalendar();
});
});