diff --git a/src/components/tasks/partials/KanbanBucket.vue b/src/components/tasks/partials/KanbanBucket.vue new file mode 100644 index 000000000..4c924c9cd --- /dev/null +++ b/src/components/tasks/partials/KanbanBucket.vue @@ -0,0 +1,439 @@ + + + + + + + + + {{ bucket.title }} + + {{ bucket.tasks.length }}/{{ bucket.limit }} + + + + + + + + + + + + + + {{ $t('list.kanban.limit', { + limit: bucket.limit > 0 + ? bucket.limit + : $t('list.kanban.noLimit') + }) + }} + + + + + + {{ $t('list.kanban.doneBucket') }} + + + {{ $t('list.kanban.collapse') }} + + + + + + {{ $t('misc.delete') }} + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/tasks/partials/kanban-card.vue b/src/components/tasks/partials/KanbanCard.vue similarity index 100% rename from src/components/tasks/partials/kanban-card.vue rename to src/components/tasks/partials/KanbanCard.vue diff --git a/src/models/bucket.ts b/src/models/bucket.ts index 2e0552491..0514d5b9e 100644 --- a/src/models/bucket.ts +++ b/src/models/bucket.ts @@ -7,13 +7,13 @@ import type {ITask} from '@/modelTypes/ITask' import type {IUser} from '@/modelTypes/IUser' export default class BucketModel extends AbstractModel implements IBucket { - id = 0 - title = '' - listId = '' - limit = 0 + id: number = 0 + title: string = '' + listId: number = '' + limit: number = 0 tasks: ITask[] = [] - isDoneBucket = false - position = 0 + isDoneBucket: boolean = false + position: boolean = 0 createdBy: IUser = null created: Date = null @@ -24,7 +24,6 @@ export default class BucketModel extends AbstractModel implements IBuck this.assignData(data) this.tasks = this.tasks.map(t => new TaskModel(t)) - this.createdBy = new UserModel(this.createdBy) this.created = new Date(this.created) this.updated = new Date(this.updated) diff --git a/src/views/list/ListKanban.vue b/src/views/list/ListKanban.vue index 45fdc3d45..2a93fab00 100644 --- a/src/views/list/ListKanban.vue +++ b/src/views/list/ListKanban.vue @@ -1,7 +1,7 @@ - + - - dragBucket = true" - group="buckets" - :disabled="!canWrite" - tag="ul" - :item-key="({id}) => `bucket${id}`" - :component-data="bucketDraggableComponentData" - > - - - unCollapseBucket(bucket)"> - - - - {{ bucket.title }} - - {{ bucket.tasks.length }}/{{ bucket.limit }} - - showSetLimitInput = false" - > - - - - showSetLimitInput = false" - @keyup.enter="() => showSetLimitInput = false" - :value="bucket.limit" - @input="(event) => setBucketLimit(bucket.id, parseInt(event.target.value))" - class="input" - type="number" - min="0" - v-focus.always - /> - - - - - - - {{ - $t('list.kanban.limit', {limit: bucket.limit > 0 ? bucket.limit : $t('list.kanban.noLimit')}) - }} - - - - - - - {{ $t('list.kanban.doneBucket') }} - - collapseBucket(bucket)" - > - {{ $t('list.kanban.collapse') }} - - deleteBucketModal(bucket.id)" - class="has-text-danger" - v-tooltip="buckets.length <= 1 ? $t('list.kanban.deleteLast') : ''" - > - - - - {{ $t('misc.delete') }} - - - - - updateTasks(bucket.id, tasks)" - @start="() => dragstart(bucket)" - @end="updateTaskPosition" - :group="{name: 'tasks', put: shouldAcceptDrop(bucket) && !dragBucket}" - :disabled="!canWrite" - :data-bucket-index="bucketIndex" - tag="ul" - :item-key="(task) => `bucket${bucket.id}-task${task.id}`" - :component-data="getTaskDraggableTaskComponentData(bucket)" - > - - - - - - - - - - - - - - - - showNewBucketInput = false" - @keyup.enter="createNewBucket" - @keyup.esc="$event.target.blur()" - class="input" - :placeholder="$t('list.kanban.addBucketPlaceholder')" - type="text" - v-focus.always - v-if="showNewBucketInput" - v-model="newBucketTitle" - /> - showNewBucketInput = true" - :shadow="false" - class="is-transparent is-fullwidth has-text-centered" - variant="secondary" - icon="plus" + - {{ $t('list.kanban.addBucket') }} - + isDraggingBucket = true" + group="buckets" + :disabled="!canWrite" + tag="transition-group" + :item-key="(id: number) => `bucket${id}`" + :component-data="bucketDraggableComponentData" + > + + + + + + + + + {{ $t('list.kanban.addBucket') }} + + + + + + + {{ $t('list.kanban.deleteHeaderBucket') }} + + + {{ $t('list.kanban.deleteBucketText1') }} + {{ $t('list.kanban.deleteBucketText2') }} + + + - - - - - {{ $t('list.kanban.deleteHeaderBucket') }} - - - {{ $t('list.kanban.deleteBucketText1') }} - {{ $t('list.kanban.deleteBucketText2') }} - - - - - + + + + \ No newline at end of file
{{ $t('list.kanban.deleteBucketText1') }} + {{ $t('list.kanban.deleteBucketText2') }}
{{ $t('list.kanban.deleteBucketText1') }} - {{ $t('list.kanban.deleteBucketText2') }}