diff --git a/src/components/quick-actions/quick-actions.vue b/src/components/quick-actions/quick-actions.vue index 4ffee13d5..480d31f99 100644 --- a/src/components/quick-actions/quick-actions.vue +++ b/src/components/quick-actions/quick-actions.vue @@ -44,10 +44,18 @@ @keyup.prevent.enter="doAction(r.type, i)" @keyup.prevent.esc="searchInput?.focus()" > - - {{ i.identifier }} - - {{ i.title }} + + + + + + + + {{ i.title }} + @@ -69,6 +77,8 @@ import ProjectModel from '@/models/project' import BaseButton from '@/components/base/BaseButton.vue' import QuickAddMagic from '@/components/tasks/partials/quick-add-magic.vue' +import XLabel from '@/components/tasks/partials/label.vue' +import SingleTaskInlineReadonly from '@/components/tasks/partials/singleTaskInlineReadonly.vue' import {useBaseStore} from '@/stores/base' import {useProjectStore} from '@/stores/projects' @@ -83,7 +93,6 @@ import {success} from '@/message' import type {ITeam} from '@/modelTypes/ITeam' import type {ITask} from '@/modelTypes/ITask' import type {IProject} from '@/modelTypes/IProject' -import type {ILabel} from '@/modelTypes/ILabel' const {t} = useI18n({useScope: 'global'}) const router = useRouter() @@ -159,11 +168,11 @@ const foundLabels = computed(() => { if (text === '' && labels.length === 0) { return [] } - + if (labels.length > 0) { return labelStore.filterLabelsByQuery([], labels[0]) } - + return labelStore.filterLabelsByQuery([], text) }) @@ -393,10 +402,6 @@ function searchTasks() { const r = await taskService.getAll({}, params) as DoAction[] foundTasks.value = r.map((t) => { t.type = ACTION_TYPE.TASK - const project = projectStore.projects[t.projectId] - if (project !== null) { - t.title = `${t.title} (${project.title})` - } return t }) }, 150) @@ -468,7 +473,7 @@ async function doAction(type: ACTION_TYPE, item: DoAction) { searchInput.value?.focus() break case ACTION_TYPE.LABELS: - query.value = '*'+item.title + query.value = '*' + item.title searchInput.value?.focus() searchTasks() break diff --git a/src/components/tasks/partials/label.vue b/src/components/tasks/partials/label.vue new file mode 100644 index 000000000..d8f515a0e --- /dev/null +++ b/src/components/tasks/partials/label.vue @@ -0,0 +1,25 @@ + + + + + {{ label.title }} + + + + \ No newline at end of file diff --git a/src/components/tasks/partials/labels.vue b/src/components/tasks/partials/labels.vue index 8727695a9..e80d06798 100644 --- a/src/components/tasks/partials/labels.vue +++ b/src/components/tasks/partials/labels.vue @@ -1,12 +1,10 @@ - - {{ label.title }} - + /> @@ -14,6 +12,8 @@ import type {PropType} from 'vue' import type {ILabel} from '@/modelTypes/ILabel' +import XLabel from '@/components/tasks/partials/label.vue' + defineProps({ labels: { type: Array as PropType, @@ -26,10 +26,4 @@ defineProps({ .label-wrapper { display: inline; } - -.tag { - & + & { - margin-left: 0.5rem; - } -} \ No newline at end of file diff --git a/src/components/tasks/partials/singleTaskInlineReadonly.vue b/src/components/tasks/partials/singleTaskInlineReadonly.vue new file mode 100644 index 000000000..6c16f1b09 --- /dev/null +++ b/src/components/tasks/partials/singleTaskInlineReadonly.vue @@ -0,0 +1,196 @@ + + + + + + {{ project.title }} + + + + + + + + {{ pt.title }}, + + › + + {{ task.title }} + + + + + + + + + – {{ $t('task.detail.due', {at: formatDateSince(task.dueDate)}) }} + + + + + + + + + + + + + + + + + + + + + {{ task.percentDone * 100 }}% + + + + + + +