diff --git a/frontend/src/components/nav-menu.vue b/frontend/src/components/nav-menu.vue index 06a14653..e3e44cc0 100644 --- a/frontend/src/components/nav-menu.vue +++ b/frontend/src/components/nav-menu.vue @@ -64,6 +64,7 @@ const today = new Date().toLocaleDateString('en-US', { const toggleSidebar = (event) => { event.stopPropagation() + store.setIsOpenCard(false) isSidebarActive.value = !isSidebarActive.value if (isSidebarActive.value) { window.addEventListener('click', closeSidebar) @@ -187,7 +188,7 @@ onUnmounted(() => { border-style: solid; border-image: $border-gradient; border-image-slice: 1; - svg { + svg { color: #dadada; } } diff --git a/frontend/src/components/task-card.vue b/frontend/src/components/task-card.vue index 28633279..6be42f23 100644 --- a/frontend/src/components/task-card.vue +++ b/frontend/src/components/task-card.vue @@ -1,76 +1,6 @@ - - - - - - - - - - - - - - - - - - togglePopover()"> - {{ - store.selectedTask.date - }} - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + togglePopover()"> + {{ + store.selectedTask.date + }} + + + + + + + + + + + + diff --git a/frontend/src/stores/index.js b/frontend/src/stores/index.js index e0daa9d5..d55b9413 100644 --- a/frontend/src/stores/index.js +++ b/frontend/src/stores/index.js @@ -12,12 +12,15 @@ export const useStore = defineStore('storeId', { join: null }, isopencard: false, + isRepeatOpen: false, selectedTask: { id: null, title: '', date: null, time: '00:00', description: '', + repeatParameters: null, + repeatId: null, done: false, user: null }, @@ -30,6 +33,9 @@ export const useStore = defineStore('storeId', { setIsOpenCard(value) { this.isopencard = value }, + setIsRepeatOpen(value) { + this.isRepeatOpen = value + }, setSelectedTask(task) { this.selectedTask = task }, diff --git a/frontend/src/styles.scss b/frontend/src/styles.scss index 43c56936..846b44a5 100644 --- a/frontend/src/styles.scss +++ b/frontend/src/styles.scss @@ -49,3 +49,58 @@ body { --dp-range-between-dates-text-color: var(--dp-hover-text-color, #fff); --dp-range-between-border-color: var(--dp-hover-color, #fff); } + +input, +textarea, +select { + background-color: #333; + color: #fff; + border: 1px solid #444; +} + +input::placeholder, +textarea::placeholder { + color: #777; +} + +input:focus, +textarea:focus, +select:focus { + outline: none; + border-color: #555; +} + +select option { + background-color: #333; + color: #fff; +} + +::-webkit-scrollbar { + width: 12px; +} + +::-webkit-scrollbar-track { + background: #333; +} + +::-webkit-scrollbar-thumb { + background: #444; +} + +::-webkit-scrollbar-thumb:hover { + background: #555; +} + +input[type='number']::-webkit-inner-spin-button, +input[type='number']::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} + +input[type='number'] { + -moz-appearance: textfield; +} + +select:hover option:hover { + background-color: #555; +} diff --git a/frontend/src/views/CalendarView.vue b/frontend/src/views/CalendarView.vue index feed3afd..6a09d2e5 100644 --- a/frontend/src/views/CalendarView.vue +++ b/frontend/src/views/CalendarView.vue @@ -109,7 +109,6 @@ const getTasksForDate = (date) => { .sort((a, b) => (a.done === b.done ? 0 : a.done ? 1 : -1)) } - const handleResize = () => { isWideScreen.value = window.innerWidth >= 1075 || window.innerWidth <= 600 } @@ -169,6 +168,8 @@ const closeTaskCard = () => { title: '', date: null, time: null, + repeatParameters: null, + repeatId: null, description: '', done: false }) @@ -176,7 +177,7 @@ const closeTaskCard = () => { hours: 0, minutes: 0 } - window.removeEventListener('click', closeTaskCard) + document.removeEventListener('click', openTaskCard) } const saveTaskAndClose = async () => { @@ -222,8 +223,13 @@ const saveTaskAndClose = async () => { } const openTaskCard = (event, task, day) => { - if (event.target.closest('.task-card')) { + if ( + event.target.closest('.task-card') || + event.target.closest('.task-repeat') || + store.isRepeatOpen + ) { // Clicked inside the task card, don't trigger opening or closing + return } if (event.target.classList.contains('checkbox')) { @@ -232,21 +238,30 @@ const openTaskCard = (event, task, day) => { if (!task && !store.isopencard) { // create new task - store.setSelectedTask({ - id: null, - title: '', - date: day.date, - time: null, - description: '', - done: false, - user: localStorage.getItem('userId') || null - }) - store.setIsOpenCard(true) + setTimeout(() => { + store.setIsOpenCard(true) + store.setSelectedTask({ + id: null, + title: '', + date: day.date, + time: null, + description: '', + repeatParameters: null, + repeatId: null, + done: false, + user: localStorage.getItem('userId') || null + }) + }, 0) + + document.addEventListener('click', openTaskCard) } else if (!task && store.isopencard) { saveTaskAndClose() } else if (task && !store.isopencard) { //update existing task - store.setIsOpenCard(true) + + setTimeout(() => { + store.setIsOpenCard(true) + }, 0) store.setSelectedTask({ ...task }) if (store.selectedTask.time) { store.timepic = { @@ -254,16 +269,12 @@ const openTaskCard = (event, task, day) => { minutes: store.selectedTask.time.split(':')[1] } } + + document.addEventListener('click', openTaskCard) } else { saveTaskAndClose() } - if (!store.isopencard) { - window.addEventListener('click', closeTaskCard) - } else { - window.removeEventListener('click', closeTaskCard) - } } - window.addEventListener('resize', handleResize) handleResize() fetchData()