feat(tasks): make the whole task in list view clickable
Resolves https://kolaente.dev/vikunja/frontend/issues/3172 Closes https://kolaente.dev/vikunja/frontend/pulls/3176 Closes https://kolaente.dev/vikunja/frontend/pulls/3180
This commit is contained in:
parent
4d8c6622d2
commit
54c527c23f
@ -1,5 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div :class="{'is-loading': taskService.loading}" class="task loader-container">
|
<div
|
||||||
|
:class="{'is-loading': taskService.loading}"
|
||||||
|
class="task loader-container"
|
||||||
|
@click.stop.self="openTaskDetail"
|
||||||
|
>
|
||||||
<fancycheckbox
|
<fancycheckbox
|
||||||
:disabled="(isArchived || disabled) && !canMarkAsDone"
|
:disabled="(isArchived || disabled) && !canMarkAsDone"
|
||||||
@update:model-value="markAsDone"
|
@update:model-value="markAsDone"
|
||||||
@ -12,8 +16,7 @@
|
|||||||
class="mr-1"
|
class="mr-1"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<router-link
|
<div
|
||||||
:to="taskDetailRoute"
|
|
||||||
:class="{ 'done': task.done, 'show-project': showProject && project}"
|
:class="{ 'done': task.done, 'show-project': showProject && project}"
|
||||||
class="tasktext"
|
class="tasktext"
|
||||||
>
|
>
|
||||||
@ -23,7 +26,8 @@
|
|||||||
:to="{ name: 'project.list', params: { projectId: task.projectId } }"
|
:to="{ name: 'project.list', params: { projectId: task.projectId } }"
|
||||||
class="task-project"
|
class="task-project"
|
||||||
:class="{'mr-2': task.hexColor !== ''}"
|
:class="{'mr-2': task.hexColor !== ''}"
|
||||||
v-tooltip="$t('task.detail.belongsToProject', {project: project.title})">
|
v-tooltip="$t('task.detail.belongsToProject', {project: project.title})"
|
||||||
|
>
|
||||||
{{ project.title }}
|
{{ project.title }}
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
@ -42,7 +46,15 @@
|
|||||||
</template>
|
</template>
|
||||||
›
|
›
|
||||||
</span>
|
</span>
|
||||||
{{ task.title }}
|
|
||||||
|
<router-link
|
||||||
|
:to="taskDetailRoute"
|
||||||
|
class="task-link"
|
||||||
|
ref="taskLink"
|
||||||
|
tabindex="-1"
|
||||||
|
>
|
||||||
|
{{ task.title }}
|
||||||
|
</router-link>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<labels
|
<labels
|
||||||
@ -92,7 +104,7 @@
|
|||||||
</span>
|
</span>
|
||||||
|
|
||||||
<checklist-summary :task="task"/>
|
<checklist-summary :task="task"/>
|
||||||
</router-link>
|
</div>
|
||||||
|
|
||||||
<progress
|
<progress
|
||||||
class="progress is-small"
|
class="progress is-small"
|
||||||
@ -275,6 +287,14 @@ function hideDeferDueDatePopup(e) {
|
|||||||
showDefer.value = false
|
showDefer.value = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const taskLink = ref<HTMLElement | null>(null)
|
||||||
|
function openTaskDetail() {
|
||||||
|
const isTextSelected = window.getSelection().toString()
|
||||||
|
if (!isTextSelected) {
|
||||||
|
taskLink.value.$el.click()
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@ -292,6 +312,14 @@ function hideDeferDueDatePopup(e) {
|
|||||||
background-color: var(--grey-100);
|
background-color: var(--grey-100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&:focus-within, &:focus {
|
||||||
|
box-shadow: 0 0 0 2px hsla(var(--primary-hsl), 0.5);
|
||||||
|
|
||||||
|
a.task-link {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.tasktext,
|
.tasktext,
|
||||||
&.tasktext {
|
&.tasktext {
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
@ -382,8 +410,11 @@ function hideDeferDueDatePopup(e) {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.favorite:focus {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
:deep(.fancycheckbox) {
|
:deep(.fancycheckbox) {
|
||||||
height: 18px;
|
height: 18px;
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user