From 15215b30a0a0dd693d5ceb4a213f6d68e93b97e7 Mon Sep 17 00:00:00 2001 From: kolaente Date: Wed, 13 Mar 2024 17:19:15 +0100 Subject: [PATCH] fix(filters): rework filter popup button --- .../project/partials/filter-popup.vue | 7 - .../components/project/partials/filters.vue | 12 + frontend/src/styles/components/project.scss | 41 +-- frontend/src/views/project/ProjectKanban.vue | 48 +-- frontend/src/views/project/ProjectList.vue | 78 +--- frontend/src/views/project/ProjectTable.vue | 336 +++++++++--------- 6 files changed, 232 insertions(+), 290 deletions(-) diff --git a/frontend/src/components/project/partials/filter-popup.vue b/frontend/src/components/project/partials/filter-popup.vue index 4c4d3eb5c..eaef47288 100644 --- a/frontend/src/components/project/partials/filter-popup.vue +++ b/frontend/src/components/project/partials/filter-popup.vue @@ -1,11 +1,4 @@ @@ -290,7 +290,11 @@ import KanbanCard from '@/components/tasks/partials/kanban-card.vue' import Dropdown from '@/components/misc/dropdown.vue' import DropdownItem from '@/components/misc/dropdown-item.vue' -import {getCollapsedBucketState, saveCollapsedBucketState, type CollapsedBuckets} from '@/helpers/saveCollapsedBucketState' +import { + type CollapsedBuckets, + getCollapsedBucketState, + saveCollapsedBucketState, +} from '@/helpers/saveCollapsedBucketState' import {calculateItemPosition} from '@/helpers/calculateItemPosition' import {isSavedFilter} from '@/services/savedFilter' @@ -322,7 +326,7 @@ const kanbanStore = useKanbanStore() const taskStore = useTaskStore() const projectStore = useProjectStore() -const taskContainerRefs = ref<{[id: IBucket['id']]: HTMLElement}>({}) +const taskContainerRefs = ref<{ [id: IBucket['id']]: HTMLElement }>({}) const bucketLimitInputRef = ref(null) const drag = ref(false) @@ -334,18 +338,18 @@ const bucketToDelete = ref(0) const bucketTitleEditable = ref(false) const newTaskText = ref('') -const showNewTaskInput = ref<{[id: IBucket['id']]: boolean}>({}) +const showNewTaskInput = ref<{ [id: IBucket['id']]: boolean }>({}) const newBucketTitle = ref('') const showNewBucketInput = ref(false) -const newTaskError = ref<{[id: IBucket['id']]: boolean}>({}) +const newTaskError = ref<{ [id: IBucket['id']]: boolean }>({}) const newTaskInputFocused = ref(false) const showSetLimitInput = ref(false) const collapsedBuckets = ref({}) // We're using this to show the loading animation only at the task when updating it -const taskUpdating = ref<{[id: ITask['id']]: boolean}>({}) +const taskUpdating = ref<{ [id: ITask['id']]: boolean }>({}) const oneTaskUpdating = ref(false) const params = ref({ @@ -378,7 +382,7 @@ const bucketDraggableComponentData = computed(() => ({ ], })) const canWrite = computed(() => baseStore.currentProject?.maxRight > Rights.READ) -const project = computed(() => projectId ? projectStore.projects[projectId]: null) +const project = computed(() => projectId ? projectStore.projects[projectId] : null) const buckets = computed(() => kanbanStore.buckets) const loading = computed(() => kanbanStore.isLoading) @@ -497,7 +501,7 @@ async function updateTaskPosition(e) { await taskStore.update(newTask) // Make sure the first and second task don't both get position 0 assigned - if(newTaskIndex === 0 && taskAfter !== null && taskAfter.kanbanPosition === 0) { + if (newTaskIndex === 0 && taskAfter !== null && taskAfter.kanbanPosition === 0) { const taskAfterAfter = newBucket.tasks[newTaskIndex + 2] ?? null const newTaskAfter = klona(taskAfter) // cloning the task to avoid pinia store manipulation newTaskAfter.bucketId = newBucket.id @@ -602,7 +606,7 @@ function updateBuckets(value: IBucket[]) { } // TODO: fix type -function updateBucketPosition(e: {newIndex: number}) { +function updateBucketPosition(e: { newIndex: number }) { // (2) bucket positon is changed dragBucket.value = false @@ -631,19 +635,19 @@ async function saveBucketLimit(bucketId: IBucket['id'], limit: number) { success({message: t('project.kanban.bucketLimitSavedSuccess')}) } -const setBucketLimitCancel = ref(null) +const setBucketLimitCancel = ref(null) async function setBucketLimit(bucketId: IBucket['id'], now: boolean = false) { const limit = parseInt(bucketLimitInputRef.value?.value || '') - + if (setBucketLimitCancel.value !== null) { clearTimeout(setBucketLimitCancel.value) } - + if (now) { return saveBucketLimit(bucketId, limit) } - + setBucketLimitCancel.value = setTimeout(saveBucketLimit, 2500, bucketId, limit) } @@ -739,6 +743,7 @@ $filter-container-height: '1rem - #{$switch-view-height}'; * { opacity: 0; } + &::after { content: ''; position: absolute; @@ -780,6 +785,7 @@ $filter-container-height: '1rem - #{$switch-view-height}'; &:first-of-type { padding-top: .5rem; } + &:last-of-type { padding-bottom: .5rem; } diff --git a/frontend/src/views/project/ProjectList.vue b/frontend/src/views/project/ProjectList.vue index 060b734ca..399f217bf 100644 --- a/frontend/src/views/project/ProjectList.vue +++ b/frontend/src/views/project/ProjectList.vue @@ -5,52 +5,12 @@ view-name="project" > @@ -113,14 +73,14 @@ > - @@ -131,7 +91,7 @@