@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="section-details">
|
<div v-if="activeTab === 'attachment'" class="section-details">
|
||||||
<AttachmentList
|
<AttachmentList
|
||||||
:card-id="card.id"
|
:card-id="card.id"
|
||||||
:removable="true"
|
:removable="true"
|
||||||
@@ -18,6 +18,10 @@ export default {
|
|||||||
type: Object,
|
type: Object,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
activeTab: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -21,56 +21,61 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div v-if="currentCard" class="container">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<h1 class="top-title">
|
<h1 class="top-title">
|
||||||
Example task 3
|
{{ currentCard.title }}
|
||||||
</h1>
|
</h1>
|
||||||
<p class="top-modified">
|
<p class="top-modified">
|
||||||
Modified: 2 days go. Created 3 days ago
|
{{ t('deck', 'Modified') }}: {{ currentCard.lastModified | fromNow }}. {{ t('deck', 'Created') }} {{ currentCard.createdAt | fromNow }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="tabs">
|
<div class="tabs">
|
||||||
<div class="tab members" :class="{active: activeTab === 'default'}" @click="activeTab = 'default'">
|
<div class="tab members" :class="{active: activeTab === 'members'}" @click="activeTab = 'members'">
|
||||||
<i class="icon-user icon" />
|
<i class="icon-user icon" />
|
||||||
Members
|
{{ t('deck', 'Members') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab tags" :class="{active: activeTab === 'default'}" @click="activeTab = 'default'">
|
<div class="tab tags" :class="{active: activeTab === 'tags'}" @click="activeTab = 'tags'">
|
||||||
<i class="icon icon-tag" />
|
<i class="icon icon-tag" />
|
||||||
Tags
|
{{ t('deck', 'Tags') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab due-date" :class="{active: activeTab === 'default'}" @click="activeTab = 'default'">
|
<div class="tab due-date" :class="{active: activeTab === 'duedate'}" @click="activeTab = 'duedate'">
|
||||||
<i class="icon icon-calendar-dark" />
|
<i class="icon icon-calendar-dark" />
|
||||||
Due date
|
{{ t('deck', 'Due date') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab project" :class="{active: activeTab === 'project'}" @click="activeTab = 'project'">
|
<div class="tab project" :class="{active: activeTab === 'project'}" @click="activeTab = 'project'">
|
||||||
<i class="icon icon-deck" />
|
<i class="icon icon-deck" />
|
||||||
Project
|
{{ t('deck', 'Project') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab attachments" :class="{active: activeTab === 'attachment'}" @click="activeTab = 'attachment'">
|
<div class="tab attachments" :class="{active: activeTab === 'attachment'}" @click="activeTab = 'attachment'">
|
||||||
<i class="icon-attach icon icon-attach-dark" />
|
<i class="icon-attach icon icon-attach-dark" />
|
||||||
Attachments
|
{{ t('deck', 'Attachments') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="content-tabs">
|
<div class="content-tabs">
|
||||||
<MembersTab v-if="activeTab === 'default'"
|
<MembersTab
|
||||||
:card="currentCard"
|
:card="currentCard"
|
||||||
@click="activeTab = 'default'"
|
:active-tab="activeTab"
|
||||||
|
@click="activeTab = 'members'"
|
||||||
@active-tab="changeActiveTab" />
|
@active-tab="changeActiveTab" />
|
||||||
<TagsTab v-if="activeTab === 'default'"
|
<TagsTab
|
||||||
|
:active-tab="activeTab"
|
||||||
:card="currentCard"
|
:card="currentCard"
|
||||||
@click="activeTab = 'default'"
|
@click="activeTab = 'tags'"
|
||||||
@active-tab="changeActiveTab" />
|
@active-tab="changeActiveTab" />
|
||||||
<DueDateTab v-if="activeTab === 'default'"
|
<DueDateTab
|
||||||
|
:active-tab="activeTab"
|
||||||
:card="currentCard"
|
:card="currentCard"
|
||||||
@click="activeTab = 'default'"
|
@click="activeTab = 'duedate'"
|
||||||
@active-tab="changeActiveTab" />
|
@active-tab="changeActiveTab" />
|
||||||
<ProjectTab v-if="activeTab === 'project'"
|
<ProjectTab
|
||||||
|
:active-tab="activeTab"
|
||||||
:card="currentCard"
|
:card="currentCard"
|
||||||
@click="activeTab = 'project'"
|
@click="activeTab = 'project'"
|
||||||
@active-tab="changeActiveTab" />
|
@active-tab="changeActiveTab" />
|
||||||
<AttachmentsTab v-if="activeTab === 'attachment'"
|
<AttachmentsTab
|
||||||
|
:active-tab="activeTab"
|
||||||
:card="currentCard"
|
:card="currentCard"
|
||||||
@click="activeTab = 'attachment'"
|
@click="activeTab = 'attachment'"
|
||||||
@active-tab="changeActiveTab" />
|
@active-tab="changeActiveTab" />
|
||||||
@@ -79,7 +84,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="activities">
|
<div class="activities">
|
||||||
<h2 class="activities-title">
|
<h2 class="activities-title">
|
||||||
<div class="icon-flash-black" /> Activity
|
<div class="icon-activity" /> {{ t('deck', 'Activity') }}
|
||||||
</h2>
|
</h2>
|
||||||
<div class="comments">
|
<div class="comments">
|
||||||
<Avatar :user="currentUser.uid" />
|
<Avatar :user="currentUser.uid" />
|
||||||
@@ -117,6 +122,7 @@ import ProjectTab from './ProjectTab.vue'
|
|||||||
import AttachmentsTab from './AttachmentsTab.vue'
|
import AttachmentsTab from './AttachmentsTab.vue'
|
||||||
import CommentForm from './CommentForm'
|
import CommentForm from './CommentForm'
|
||||||
import CommentItem from './CommentItem'
|
import CommentItem from './CommentItem'
|
||||||
|
import moment from '@nextcloud/moment'
|
||||||
|
|
||||||
const capabilities = window.OC.getCapabilities()
|
const capabilities = window.OC.getCapabilities()
|
||||||
|
|
||||||
@@ -133,6 +139,11 @@ export default {
|
|||||||
CommentForm,
|
CommentForm,
|
||||||
CommentItem,
|
CommentItem,
|
||||||
},
|
},
|
||||||
|
filters: {
|
||||||
|
fromNow(value) {
|
||||||
|
return moment.unix(value).fromNow()
|
||||||
|
},
|
||||||
|
},
|
||||||
mixins: [relativeDate],
|
mixins: [relativeDate],
|
||||||
props: {
|
props: {
|
||||||
id: {
|
id: {
|
||||||
@@ -158,7 +169,7 @@ export default {
|
|||||||
hasActivity: capabilities && capabilities.activity,
|
hasActivity: capabilities && capabilities.activity,
|
||||||
currentUser: getCurrentUser(),
|
currentUser: getCurrentUser(),
|
||||||
comment: '',
|
comment: '',
|
||||||
activeTab: 'default',
|
activeTab: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -278,7 +289,7 @@ export default {
|
|||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon-flash-black {
|
.icon-activity {
|
||||||
background-image: url(../../../img/flash-black.svg);
|
background-image: url(../../../img/flash-black.svg);
|
||||||
width: 15px;
|
width: 15px;
|
||||||
height: 15px;
|
height: 15px;
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="copiedCard" class="section-details">
|
<div v-if="activeTab === 'duedate' || (copiedCard && copiedCard.duedate)"
|
||||||
<div @click="$emit('active-tab', 'default')">
|
v-show="!['project', 'attachment'].includes(activeTab)"
|
||||||
|
class="section-details">
|
||||||
|
<div @click="$emit('active-tab', 'duedate')">
|
||||||
<DatetimePicker v-model="duedate"
|
<DatetimePicker v-model="duedate"
|
||||||
:placeholder="t('deck', 'Set a due date')"
|
:placeholder="t('deck', 'Set a due date')"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
@@ -39,6 +41,10 @@ export default {
|
|||||||
type: Object,
|
type: Object,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
activeTab: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -152,6 +158,17 @@ export default {
|
|||||||
.section-details {
|
.section-details {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.section-details .mx-input {
|
||||||
|
height: 36px !important;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-details .action-item {
|
||||||
|
height: 30px !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="section-details">
|
<div v-show="!['project', 'attachment'].includes(activeTab)"
|
||||||
|
v-if="activeTab === 'members' || (assignedUsers && assignedUsers.length > 0)"
|
||||||
|
class="section-details">
|
||||||
<div v-if="showSelelectMembers" @mouseleave="showSelelectMembers = false">
|
<div v-if="showSelelectMembers" @mouseleave="showSelelectMembers = false">
|
||||||
<Multiselect v-if="canEdit"
|
<Multiselect v-if="canEdit"
|
||||||
v-model="assignedUsers"
|
v-model="assignedUsers"
|
||||||
@@ -63,6 +65,10 @@ export default {
|
|||||||
type: Object,
|
type: Object,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
activeTab: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -161,7 +167,7 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style lang="scss" scoped>
|
||||||
.select-member-btn {
|
.select-member-btn {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -182,3 +188,9 @@ export default {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.members .multiselect__tags{
|
||||||
|
height: 34px !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="section-details">
|
<div v-if="activeTab === 'project'" class="section-details">
|
||||||
<div class="section-wrapper" @click="$emit('active-tab', 'default')">
|
<div class="section-wrapper" @click="$emit('active-tab', 'project')">
|
||||||
<CollectionList v-if="card.id"
|
<CollectionList v-if="card.id"
|
||||||
:id="`${card.id}`"
|
:id="`${card.id}`"
|
||||||
:name="card.title"
|
:name="card.title"
|
||||||
@@ -19,6 +19,10 @@ export default {
|
|||||||
type: Object,
|
type: Object,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
activeTab: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="section-details">
|
<div v-show="!['project', 'attachment'].includes(activeTab)"
|
||||||
|
v-if="activeTab === 'tags' || card.labels.length > 0"
|
||||||
|
class="section-details">
|
||||||
<div v-if="showSelelectTags || card.labels.length <= 0" @mouseleave="showSelelectTags = false">
|
<div v-if="showSelelectTags || card.labels.length <= 0" @mouseleave="showSelelectTags = false">
|
||||||
<Multiselect v-model="assignedLabels"
|
<Multiselect v-model="assignedLabels"
|
||||||
:multiple="true"
|
:multiple="true"
|
||||||
@@ -51,6 +53,10 @@ export default {
|
|||||||
type: Object,
|
type: Object,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
activeTab: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -74,7 +80,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
add() {
|
add() {
|
||||||
this.showSelelectTags = true
|
this.showSelelectTags = true
|
||||||
this.$emit('active-tab', 'default')
|
this.$emit('active-tab', 'tags')
|
||||||
},
|
},
|
||||||
async initialize() {
|
async initialize() {
|
||||||
if (!this.card) {
|
if (!this.card) {
|
||||||
|
|||||||
Reference in New Issue
Block a user