feat(kanban): add setting for default bucket
This commit is contained in:
parent
3373b5fc45
commit
c803020537
@ -1,6 +1,10 @@
|
||||
<template>
|
||||
<BaseButton class="dropdown-item">
|
||||
<span class="icon" v-if="icon">
|
||||
<span
|
||||
v-if="icon"
|
||||
class="icon is-small"
|
||||
:class="iconClass"
|
||||
>
|
||||
<Icon :icon="icon"/>
|
||||
</span>
|
||||
<span>
|
||||
@ -16,6 +20,7 @@ import type { IconProp } from '@fortawesome/fontawesome-svg-core'
|
||||
|
||||
export interface DropDownItemProps extends /* @vue-ignore */ BaseButtonProps {
|
||||
icon?: IconProp,
|
||||
iconClass?: object | string,
|
||||
}
|
||||
|
||||
defineProps<DropDownItemProps>()
|
||||
@ -24,7 +29,6 @@ defineProps<DropDownItemProps>()
|
||||
<style scoped lang="scss">
|
||||
.dropdown-item {
|
||||
color: var(--text);
|
||||
display: block;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.5;
|
||||
padding: $item-padding;
|
||||
@ -52,10 +56,7 @@ defineProps<DropDownItemProps>()
|
||||
|
||||
.icon {
|
||||
padding-right: .5rem;
|
||||
|
||||
&:not(.has-text-success) {
|
||||
color: var(--grey-300) !important;
|
||||
}
|
||||
color: var(--grey-300);
|
||||
}
|
||||
|
||||
.has-text-danger .icon {
|
||||
|
@ -334,6 +334,9 @@
|
||||
"doneBucketHint": "All tasks moved into this bucket will automatically marked as done.",
|
||||
"doneBucketHintExtended": "All tasks moved into the done bucket will be marked as done automatically. All tasks marked as done from elsewhere will be moved as well.",
|
||||
"doneBucketSavedSuccess": "The done bucket has been saved successfully.",
|
||||
"defaultBucket": "Default bucket",
|
||||
"defaultBucketHint": "When creating tasks without specifying a bucket, they will be added to this bucket.",
|
||||
"defaultBucketSavedSuccess": "The default bucket has been saved successfully.",
|
||||
"deleteLast": "You cannot remove the last bucket.",
|
||||
"addTaskPlaceholder": "Enter the new task title…",
|
||||
"addTask": "Add a task",
|
||||
|
@ -20,6 +20,7 @@ export interface IProject extends IAbstract {
|
||||
backgroundBlurHash: string
|
||||
parentProjectId: number
|
||||
doneBucketId: number
|
||||
defaultBucketId: number
|
||||
|
||||
created: Date
|
||||
updated: Date
|
||||
|
@ -24,6 +24,7 @@ export default class ProjectModel extends AbstractModel<IProject> implements IPr
|
||||
backgroundBlurHash = ''
|
||||
parentProjectId = 0
|
||||
doneBucketId = 0
|
||||
defaultBucketId = 0
|
||||
|
||||
created: Date = null
|
||||
updated: Date = null
|
||||
|
@ -97,12 +97,19 @@
|
||||
<dropdown-item
|
||||
@click.stop="toggleDoneBucket(bucket)"
|
||||
v-tooltip="$t('project.kanban.doneBucketHintExtended')"
|
||||
:icon-class="{'has-text-success': bucket.id === project.doneBucketId}"
|
||||
icon="check-double"
|
||||
>
|
||||
<span class="icon is-small" :class="{'has-text-success': bucket.id === project.doneBucketId}">
|
||||
<icon icon="check-double"/>
|
||||
</span>
|
||||
{{ $t('project.kanban.doneBucket') }}
|
||||
</dropdown-item>
|
||||
<dropdown-item
|
||||
@click.stop="toggleDefaultBucket(bucket)"
|
||||
v-tooltip="$t('project.kanban.defaultBucketHint')"
|
||||
:icon-class="{'has-text-primary': bucket.id === project.defaultBucketId}"
|
||||
icon="th"
|
||||
>
|
||||
{{ $t('project.kanban.defaultBucket') }}
|
||||
</dropdown-item>
|
||||
<dropdown-item
|
||||
@click.stop="() => collapseBucket(bucket)"
|
||||
>
|
||||
@ -111,12 +118,10 @@
|
||||
<dropdown-item
|
||||
:class="{'is-disabled': buckets.length <= 1}"
|
||||
@click.stop="() => deleteBucketModal(bucket.id)"
|
||||
class="has-text-danger"
|
||||
v-tooltip="buckets.length <= 1 ? $t('project.kanban.deleteLast') : ''"
|
||||
icon-class="has-text-danger"
|
||||
icon="trash-alt"
|
||||
>
|
||||
<span class="icon is-small">
|
||||
<icon icon="trash-alt"/>
|
||||
</span>
|
||||
{{ $t('misc.delete') }}
|
||||
</dropdown-item>
|
||||
</dropdown>
|
||||
@ -597,6 +602,18 @@ function dragstart(bucket: IBucket) {
|
||||
sourceBucket.value = bucket.id
|
||||
}
|
||||
|
||||
async function toggleDefaultBucket(bucket: IBucket) {
|
||||
const defaultBucketId = project.value.defaultBucketId === bucket.id
|
||||
? 0
|
||||
: bucket.id
|
||||
|
||||
await projectStore.updateProject({
|
||||
...project.value,
|
||||
defaultBucketId,
|
||||
})
|
||||
success({message: t('project.kanban.defaultBucketSavedSuccess')})
|
||||
}
|
||||
|
||||
async function toggleDoneBucket(bucket: IBucket) {
|
||||
const doneBucketId = project.value.doneBucketId === bucket.id
|
||||
? 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user