Merge branch 'main' into feature/date-math
This commit is contained in:
commit
0af6d79eff
32 changed files with 1286 additions and 1150 deletions
70
package.json
70
package.json
|
@ -20,12 +20,12 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@github/hotkey": "2.0.0",
|
"@github/hotkey": "2.0.0",
|
||||||
"@kyvg/vue3-notification": "2.3.4",
|
"@kyvg/vue3-notification": "2.3.4",
|
||||||
"@sentry/tracing": "6.18.0",
|
"@sentry/tracing": "6.19.2",
|
||||||
"@sentry/vue": "6.18.0",
|
"@sentry/vue": "6.19.2",
|
||||||
"@types/is-touch-device": "1.0.0",
|
"@types/is-touch-device": "1.0.0",
|
||||||
"@vue/compat": "3.2.31",
|
"@vue/compat": "3.2.31",
|
||||||
"@vueuse/core": "7.7.0",
|
"@vueuse/core": "8.2.0",
|
||||||
"@vueuse/router": "7.7.0",
|
"@vueuse/router": "8.2.0",
|
||||||
"bulma-css-variables": "0.9.33",
|
"bulma-css-variables": "0.9.33",
|
||||||
"camel-case": "4.1.2",
|
"camel-case": "4.1.2",
|
||||||
"codemirror": "5.65.2",
|
"codemirror": "5.65.2",
|
||||||
|
@ -33,64 +33,64 @@
|
||||||
"date-fns": "2.28.0",
|
"date-fns": "2.28.0",
|
||||||
"dompurify": "2.3.6",
|
"dompurify": "2.3.6",
|
||||||
"easymde": "2.16.1",
|
"easymde": "2.16.1",
|
||||||
"flatpickr": "4.6.9",
|
"flatpickr": "4.6.11",
|
||||||
"flexsearch": "0.7.21",
|
"flexsearch": "0.7.21",
|
||||||
"highlight.js": "11.4.0",
|
"highlight.js": "11.5.0",
|
||||||
"is-touch-device": "1.0.1",
|
"is-touch-device": "1.0.1",
|
||||||
"lodash.clonedeep": "4.5.0",
|
"lodash.clonedeep": "4.5.0",
|
||||||
"lodash.debounce": "4.0.8",
|
"lodash.debounce": "4.0.8",
|
||||||
"marked": "4.0.12",
|
"marked": "4.0.12",
|
||||||
"register-service-worker": "1.7.2",
|
"register-service-worker": "1.7.2",
|
||||||
"snake-case": "3.0.4",
|
"snake-case": "3.0.4",
|
||||||
"ufo": "0.7.11",
|
"ufo": "0.8.1",
|
||||||
"v-tooltip": "4.0.0-beta.17",
|
"v-tooltip": "4.0.0-beta.17",
|
||||||
"vue": "3.2.31",
|
"vue": "3.2.31",
|
||||||
"vue-advanced-cropper": "2.8.1",
|
"vue-advanced-cropper": "2.8.1",
|
||||||
"vue-drag-resize": "2.0.3",
|
"vue-drag-resize": "2.0.3",
|
||||||
"vue-flatpickr-component": "9.0.5",
|
"vue-flatpickr-component": "9.0.5",
|
||||||
"vue-i18n": "9.2.0-beta.30",
|
"vue-i18n": "9.2.0-beta.30",
|
||||||
"vue-router": "4.0.12",
|
"vue-router": "4.0.14",
|
||||||
"vuedraggable": "4.1.0",
|
"vuedraggable": "4.1.0",
|
||||||
"vuex": "4.0.2",
|
"vuex": "4.0.2",
|
||||||
"workbox-precaching": "6.5.0"
|
"workbox-precaching": "6.5.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@4tw/cypress-drag-drop": "2.1.0",
|
"@4tw/cypress-drag-drop": "2.1.0",
|
||||||
"@faker-js/faker": "6.0.0-alpha.7",
|
"@faker-js/faker": "6.0.0",
|
||||||
"@fortawesome/fontawesome-svg-core": "1.3.0",
|
"@fortawesome/fontawesome-svg-core": "6.1.1",
|
||||||
"@fortawesome/free-regular-svg-icons": "5.15.4",
|
"@fortawesome/free-regular-svg-icons": "6.1.1",
|
||||||
"@fortawesome/free-solid-svg-icons": "5.15.4",
|
"@fortawesome/free-solid-svg-icons": "6.1.1",
|
||||||
"@fortawesome/vue-fontawesome": "3.0.0-5",
|
"@fortawesome/vue-fontawesome": "3.0.0-5",
|
||||||
"@types/flexsearch": "0.7.2",
|
"@types/flexsearch": "0.7.3",
|
||||||
"@typescript-eslint/eslint-plugin": "5.12.1",
|
"@typescript-eslint/eslint-plugin": "5.16.0",
|
||||||
"@typescript-eslint/parser": "5.12.1",
|
"@typescript-eslint/parser": "5.16.0",
|
||||||
"@vitejs/plugin-legacy": "1.7.1",
|
"@vitejs/plugin-legacy": "1.7.1",
|
||||||
"@vitejs/plugin-vue": "2.2.2",
|
"@vitejs/plugin-vue": "2.2.4",
|
||||||
"@vue/eslint-config-typescript": "10.0.0",
|
"@vue/eslint-config-typescript": "10.0.0",
|
||||||
"autoprefixer": "10.4.2",
|
"autoprefixer": "10.4.4",
|
||||||
"axios": "0.26.0",
|
"axios": "0.26.1",
|
||||||
"browserslist": "4.19.3",
|
"browserslist": "4.20.2",
|
||||||
"caniuse-lite": "1.0.30001312",
|
"caniuse-lite": "1.0.30001320",
|
||||||
"cypress": "9.5.0",
|
"cypress": "9.5.2",
|
||||||
"esbuild": "0.14.23",
|
"esbuild": "0.14.28",
|
||||||
"eslint": "8.10.0",
|
"eslint": "8.12.0",
|
||||||
"eslint-plugin-vue": "8.5.0",
|
"eslint-plugin-vue": "8.5.0",
|
||||||
"express": "4.17.3",
|
"express": "4.17.3",
|
||||||
"happy-dom": "2.41.0",
|
"happy-dom": "2.50.0",
|
||||||
"netlify-cli": "9.6.5",
|
"netlify-cli": "9.13.3",
|
||||||
"postcss": "8.4.7",
|
"postcss": "8.4.12",
|
||||||
"postcss-preset-env": "7.4.1",
|
"postcss-preset-env": "7.4.3",
|
||||||
"rollup": "2.68.0",
|
"rollup": "2.70.1",
|
||||||
"rollup-plugin-visualizer": "5.6.0",
|
"rollup-plugin-visualizer": "5.6.0",
|
||||||
"sass": "1.49.9",
|
"sass": "1.49.9",
|
||||||
"typescript": "4.5.5",
|
"typescript": "4.6.3",
|
||||||
"vite": "2.8.4",
|
"vite": "2.8.6",
|
||||||
"vite-plugin-pwa": "0.11.13",
|
"vite-plugin-pwa": "0.11.13",
|
||||||
"vite-svg-loader": "3.1.2",
|
"vite-svg-loader": "3.1.2",
|
||||||
"vitest": "0.5.7",
|
"vitest": "0.7.12",
|
||||||
"vue-tsc": "0.32.0",
|
"vue-tsc": "0.33.9",
|
||||||
"wait-on": "6.0.1",
|
"wait-on": "6.0.1",
|
||||||
"workbox-cli": "6.5.0"
|
"workbox-cli": "6.5.2"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"root": true,
|
"root": true,
|
||||||
|
@ -144,5 +144,5 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"packageManager": "yarn@1.22.17"
|
"packageManager": "yarn@1.22.18"
|
||||||
}
|
}
|
||||||
|
|
|
@ -236,6 +236,11 @@ store.dispatch('labels/loadAllLabels')
|
||||||
.app-content {
|
.app-content {
|
||||||
padding: $navbar-height + 1.5rem 1.5rem 1rem 1.5rem;
|
padding: $navbar-height + 1.5rem 1.5rem 1rem 1.5rem;
|
||||||
|
|
||||||
|
// Used to make sure the spinner is always in the middle while loading
|
||||||
|
> .loader-container {
|
||||||
|
min-height: calc(100vh - #{$navbar-height + 1.5rem + 1rem});
|
||||||
|
}
|
||||||
|
|
||||||
@media screen and (max-width: $tablet) {
|
@media screen and (max-width: $tablet) {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
padding-top: 1.5rem;
|
padding-top: 1.5rem;
|
||||||
|
@ -264,7 +269,9 @@ store.dispatch('labels/loadAllLabels')
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
background: rgba(250, 250, 250, 0.8);
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
background: hsla(var(--grey-100-hsl), 0.8);
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: all $transition;
|
transition: all $transition;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
</router-link>
|
</router-link>
|
||||||
<ul class="menu-list">
|
<ul class="menu-list">
|
||||||
<li>
|
<li>
|
||||||
<router-link :to="{ name: 'home'}">
|
<router-link :to="{ name: 'home'}" v-shortcut="'g o'">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<icon icon="calendar"/>
|
<icon icon="calendar"/>
|
||||||
</span>
|
</span>
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<router-link :to="{ name: 'tasks.range'}">
|
<router-link :to="{ name: 'tasks.range'}" v-shortcut="'g u'">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<icon :icon="['far', 'calendar-alt']"/>
|
<icon :icon="['far', 'calendar-alt']"/>
|
||||||
</span>
|
</span>
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<router-link :to="{ name: 'namespaces.index'}">
|
<router-link :to="{ name: 'namespaces.index'}" v-shortcut="'g n'">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<icon icon="layer-group"/>
|
<icon icon="layer-group"/>
|
||||||
</span>
|
</span>
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<router-link :to="{ name: 'labels.index'}">
|
<router-link :to="{ name: 'labels.index'}" v-shortcut="'g a'">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<icon icon="tags"/>
|
<icon icon="tags"/>
|
||||||
</span>
|
</span>
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<router-link :to="{ name: 'teams.index'}">
|
<router-link :to="{ name: 'teams.index'}" v-shortcut="'g m'">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<icon icon="users"/>
|
<icon icon="users"/>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -450,7 +450,6 @@ export default {
|
||||||
|
|
||||||
button {
|
button {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
display: block;
|
|
||||||
text-align: left;
|
text-align: left;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
@ -460,6 +459,7 @@ export default {
|
||||||
padding: .5rem;
|
padding: .5rem;
|
||||||
border: none;
|
border: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
color: var(--grey-800);
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<a
|
<a
|
||||||
@click="togglePasswordFieldType"
|
@click="togglePasswordFieldType"
|
||||||
class="password-field-type-toggle"
|
class="password-field-type-toggle"
|
||||||
aria-label="passwordFieldType === 'password' ? $t('user.auth.showPassword') : $t('user.auth.hidePassword')"
|
:aria-label="passwordFieldType === 'password' ? $t('user.auth.showPassword') : $t('user.auth.hidePassword')"
|
||||||
v-tooltip="passwordFieldType === 'password' ? $t('user.auth.showPassword') : $t('user.auth.hidePassword')">
|
v-tooltip="passwordFieldType === 'password' ? $t('user.auth.showPassword') : $t('user.auth.hidePassword')">
|
||||||
<icon :icon="passwordFieldType === 'password' ? 'eye' : 'eye-slash'"/>
|
<icon :icon="passwordFieldType === 'password' ? 'eye' : 'eye-slash'"/>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -6,9 +6,13 @@
|
||||||
|
|
||||||
<message class="mb-4" v-if="s.available">
|
<message class="mb-4" v-if="s.available">
|
||||||
{{
|
{{
|
||||||
|
typeof s.available === 'undefined' ?
|
||||||
|
$t('keyboardShortcuts.allPages') :
|
||||||
|
(
|
||||||
s.available($route)
|
s.available($route)
|
||||||
? $t('keyboardShortcuts.currentPageOnly')
|
? $t('keyboardShortcuts.currentPageOnly')
|
||||||
: $t('keyboardShortcuts.allPages')
|
: $t('keyboardShortcuts.somePagesOnly')
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
|
@ -38,6 +42,7 @@ import {KEYBOARD_SHORTCUTS_ACTIVE} from '@/store/mutation-types'
|
||||||
import {KEYBOARD_SHORTCUTS as shortcuts} from './shortcuts'
|
import {KEYBOARD_SHORTCUTS as shortcuts} from './shortcuts'
|
||||||
|
|
||||||
const store = useStore()
|
const store = useStore()
|
||||||
|
|
||||||
function close() {
|
function close() {
|
||||||
store.commit(KEYBOARD_SHORTCUTS_ACTIVE, false)
|
store.commit(KEYBOARD_SHORTCUTS_ACTIVE, false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,36 @@ export const KEYBOARD_SHORTCUTS : ShortcutGroup[] = [
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'keyboardShortcuts.navigation.title',
|
||||||
|
shortcuts: [
|
||||||
|
{
|
||||||
|
title: 'keyboardShortcuts.navigation.overview',
|
||||||
|
keys: ['g', 'o'],
|
||||||
|
combination: 'then',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'keyboardShortcuts.navigation.upcoming',
|
||||||
|
keys: ['g', 'u'],
|
||||||
|
combination: 'then',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'keyboardShortcuts.navigation.namespaces',
|
||||||
|
keys: ['g', 'n'],
|
||||||
|
combination: 'then',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'keyboardShortcuts.navigation.labels',
|
||||||
|
keys: ['g', 'a'],
|
||||||
|
combination: 'then',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'keyboardShortcuts.navigation.teams',
|
||||||
|
keys: ['g', 'm'],
|
||||||
|
combination: 'then',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: 'list.kanban.title',
|
title: 'list.kanban.title',
|
||||||
available: (route) => route.name === 'list.kanban',
|
available: (route) => route.name === 'list.kanban',
|
||||||
|
@ -70,6 +100,10 @@ export const KEYBOARD_SHORTCUTS : ShortcutGroup[] = [
|
||||||
title: 'keyboardShortcuts.task.title',
|
title: 'keyboardShortcuts.task.title',
|
||||||
available: (route) => route.name === 'task.detail',
|
available: (route) => route.name === 'task.detail',
|
||||||
shortcuts: [
|
shortcuts: [
|
||||||
|
{
|
||||||
|
title: 'keyboardShortcuts.task.done',
|
||||||
|
keys: ['t'],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: 'keyboardShortcuts.task.assign',
|
title: 'keyboardShortcuts.task.assign',
|
||||||
keys: ['a'],
|
keys: ['a'],
|
||||||
|
@ -90,6 +124,14 @@ export const KEYBOARD_SHORTCUTS : ShortcutGroup[] = [
|
||||||
title: 'keyboardShortcuts.task.related',
|
title: 'keyboardShortcuts.task.related',
|
||||||
keys: ['r'],
|
keys: ['r'],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'keyboardShortcuts.task.move',
|
||||||
|
keys: ['m'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'keyboardShortcuts.task.color',
|
||||||
|
keys: ['c'],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -210,14 +210,14 @@ export default {
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
|
|
||||||
@media screen and (max-width: $desktop) {
|
@media screen and (max-width: $desktop) {
|
||||||
color: var(--dark);
|
color: var(--grey-900);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
// Close icon SVG uses currentColor, change the color to keep it visible
|
// Close icon SVG uses currentColor, change the color to keep it visible
|
||||||
.dark .task-detail-view-modal .close {
|
.dark .close {
|
||||||
color: var(--grey-900);
|
color: var(--grey-900);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
|
@ -5,6 +5,7 @@
|
||||||
<textarea
|
<textarea
|
||||||
:disabled="taskService.loading || undefined"
|
:disabled="taskService.loading || undefined"
|
||||||
class="add-task-textarea input"
|
class="add-task-textarea input"
|
||||||
|
:class="{'textarea-empty': newTaskTitle === ''}"
|
||||||
:placeholder="$t('list.list.addPlaceholder')"
|
:placeholder="$t('list.list.addPlaceholder')"
|
||||||
rows="1"
|
rows="1"
|
||||||
v-focus
|
v-focus
|
||||||
|
@ -24,15 +25,18 @@
|
||||||
@click="addTask()"
|
@click="addTask()"
|
||||||
icon="plus"
|
icon="plus"
|
||||||
:loading="taskService.loading"
|
:loading="taskService.loading"
|
||||||
|
:aria-label="$t('list.list.add')"
|
||||||
>
|
>
|
||||||
|
<span class="button-text">
|
||||||
{{ $t('list.list.add') }}
|
{{ $t('list.list.add') }}
|
||||||
|
</span>
|
||||||
</x-button>
|
</x-button>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<p class="help is-danger" v-if="errorMessage !== ''">
|
<p class="help is-danger" v-if="errorMessage !== ''">
|
||||||
{{ errorMessage }}
|
{{ errorMessage }}
|
||||||
</p>
|
</p>
|
||||||
<quick-add-magic v-else />
|
<quick-add-magic v-else/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -40,7 +44,7 @@
|
||||||
import {ref, watch, unref, shallowReactive} from 'vue'
|
import {ref, watch, unref, shallowReactive} from 'vue'
|
||||||
import {useI18n} from 'vue-i18n'
|
import {useI18n} from 'vue-i18n'
|
||||||
import {useStore} from 'vuex'
|
import {useStore} from 'vuex'
|
||||||
import { tryOnMounted, debouncedWatch, useWindowSize, MaybeRef } from '@vueuse/core'
|
import {tryOnMounted, debouncedWatch, useWindowSize, MaybeRef} from '@vueuse/core'
|
||||||
|
|
||||||
import TaskService from '@/services/task'
|
import TaskService from '@/services/task'
|
||||||
import QuickAddMagic from '@/components/tasks/partials/quick-add-magic.vue'
|
import QuickAddMagic from '@/components/tasks/partials/quick-add-magic.vue'
|
||||||
|
@ -54,12 +58,12 @@ function useAutoHeightTextarea(value: MaybeRef<string>) {
|
||||||
const minHeight = ref(0)
|
const minHeight = ref(0)
|
||||||
|
|
||||||
// adapted from https://github.com/LeaVerou/stretchy/blob/47f5f065c733029acccb755cae793009645809e2/src/stretchy.js#L34
|
// adapted from https://github.com/LeaVerou/stretchy/blob/47f5f065c733029acccb755cae793009645809e2/src/stretchy.js#L34
|
||||||
function resize(textareaEl: HTMLInputElement|undefined) {
|
function resize(textareaEl: HTMLInputElement | undefined) {
|
||||||
if (!textareaEl) return
|
if (!textareaEl) return
|
||||||
|
|
||||||
let empty
|
let empty
|
||||||
|
|
||||||
// the value here is the the attribute value
|
// the value here is the attribute value
|
||||||
if (!textareaEl.value && textareaEl.placeholder) {
|
if (!textareaEl.value && textareaEl.placeholder) {
|
||||||
empty = true
|
empty = true
|
||||||
textareaEl.value = textareaEl.placeholder
|
textareaEl.value = textareaEl.placeholder
|
||||||
|
@ -95,12 +99,12 @@ function useAutoHeightTextarea(value: MaybeRef<string>) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const { width: windowWidth } = useWindowSize()
|
const {width: windowWidth} = useWindowSize()
|
||||||
|
|
||||||
debouncedWatch(
|
debouncedWatch(
|
||||||
windowWidth,
|
windowWidth,
|
||||||
() => resize(textarea.value),
|
() => resize(textarea.value),
|
||||||
{ debounce: 200 },
|
{debounce: 200},
|
||||||
)
|
)
|
||||||
|
|
||||||
// It is not possible to get notified of a change of the value attribute of a textarea without workarounds (setTimeout)
|
// It is not possible to get notified of a change of the value attribute of a textarea without workarounds (setTimeout)
|
||||||
|
@ -129,14 +133,14 @@ const emit = defineEmits(['taskAdded'])
|
||||||
const newTaskTitle = ref('')
|
const newTaskTitle = ref('')
|
||||||
const newTaskInput = useAutoHeightTextarea(newTaskTitle)
|
const newTaskInput = useAutoHeightTextarea(newTaskTitle)
|
||||||
|
|
||||||
const { t } = useI18n()
|
const {t} = useI18n()
|
||||||
const store = useStore()
|
const store = useStore()
|
||||||
|
|
||||||
const taskService = shallowReactive(new TaskService())
|
const taskService = shallowReactive(new TaskService())
|
||||||
const errorMessage = ref('')
|
const errorMessage = ref('')
|
||||||
|
|
||||||
function resetEmptyTitleError() {
|
function resetEmptyTitleError() {
|
||||||
if(newTaskTitle.value !== '') {
|
if (newTaskTitle.value !== '') {
|
||||||
errorMessage.value = ''
|
errorMessage.value = ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -200,9 +204,26 @@ function handleEnter(e: KeyboardEvent) {
|
||||||
|
|
||||||
.add-task-button {
|
.add-task-button {
|
||||||
height: 2.5rem;
|
height: 2.5rem;
|
||||||
|
|
||||||
|
@media screen and (max-width: $mobile) {
|
||||||
|
.button-text {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.icon) {
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.add-task-textarea {
|
.add-task-textarea {
|
||||||
transition: border-color $transition;
|
transition: border-color $transition;
|
||||||
resize: none;
|
resize: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adding this class when the textarea has no text prevents the textarea from wrapping the placeholder.
|
||||||
|
.textarea-empty {
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -83,7 +83,7 @@
|
||||||
<span class="title">{{ rts.title }}</span>
|
<span class="title">{{ rts.title }}</span>
|
||||||
<div class="tasks">
|
<div class="tasks">
|
||||||
<div :key="t.id" class="task" v-for="t in rts.tasks">
|
<div :key="t.id" class="task" v-for="t in rts.tasks">
|
||||||
<router-link :to="{ name: $route.name, params: { id: t.id } }" :class="{ 'done': t.done}">
|
<router-link :to="{ name: $route.name, params: { id: t.id } }" :class="{ 'is-strikethrough': t.done}">
|
||||||
<span
|
<span
|
||||||
class="different-list"
|
class="different-list"
|
||||||
v-if="t.listId !== listId"
|
v-if="t.listId !== listId"
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "Obecné",
|
"general": "Obecné",
|
||||||
"allPages": "Tyto zkratky fungují na všech stránkách.",
|
"allPages": "Tyto zkratky fungují na všech stránkách.",
|
||||||
"currentPageOnly": "Tyto zkratky fungují pouze na aktuální stránce.",
|
"currentPageOnly": "Tyto zkratky fungují pouze na aktuální stránce.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Přepnout nabídku",
|
"toggleMenu": "Přepnout nabídku",
|
||||||
"quickSearch": "Otevřít vyhledávání / panel rychlých akcí",
|
"quickSearch": "Otevřít vyhledávání / panel rychlých akcí",
|
||||||
"then": "potom",
|
"then": "potom",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Stránka úkolů",
|
"title": "Stránka úkolů",
|
||||||
"done": "Hotovo",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Přiřadit uživateli",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Přidat štítky k tomuto úkolu",
|
"labels": "Přidat štítky k tomuto úkolu",
|
||||||
"dueDate": "Změnit termín tohoto úkolu",
|
"dueDate": "Změnit termín tohoto úkolu",
|
||||||
"attachment": "Přidat přílohu k tomuto úkolu",
|
"attachment": "Přidat přílohu k tomuto úkolu",
|
||||||
"related": "Upravit související úkoly tohoto úkolu"
|
"related": "Upravit související úkoly tohoto úkolu",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "Zobrazení seznamů",
|
"title": "Zobrazení seznamů",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Přepnout na zobrazení gantt",
|
"switchToGanttView": "Přepnout na zobrazení gantt",
|
||||||
"switchToKanbanView": "Přepnout na zobrazení kanbanu",
|
"switchToKanbanView": "Přepnout na zobrazení kanbanu",
|
||||||
"switchToTableView": "Přepnout na zobrazení tabulky"
|
"switchToTableView": "Přepnout na zobrazení tabulky"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "Allgemein",
|
"general": "Allgemein",
|
||||||
"allPages": "Diese Tastenkürzel funktionieren auf allen Seiten.",
|
"allPages": "Diese Tastenkürzel funktionieren auf allen Seiten.",
|
||||||
"currentPageOnly": "Diese Tastenkürzel funktionieren nur auf der aktuellen Seite.",
|
"currentPageOnly": "Diese Tastenkürzel funktionieren nur auf der aktuellen Seite.",
|
||||||
|
"somePagesOnly": "Funktioniert nur auf manchen Seiten.",
|
||||||
"toggleMenu": "Das Menü umschalten",
|
"toggleMenu": "Das Menü umschalten",
|
||||||
"quickSearch": "Such-/Schnellaktionsleiste öffnen",
|
"quickSearch": "Such-/Schnellaktionsleiste öffnen",
|
||||||
"then": "dann",
|
"then": "dann",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Aufgabenseite",
|
"title": "Aufgabenseite",
|
||||||
"done": "Fertig",
|
"done": "Aufgabe als erledigt / unerledigt markieren",
|
||||||
"assign": "Benutzer:in zuweisen",
|
"assign": "Diese Aufgabe jemandem zuweisen",
|
||||||
"labels": "Dieser Aufgabe ein Label hinzufügen",
|
"labels": "Dieser Aufgabe ein Label hinzufügen",
|
||||||
"dueDate": "Ändere das Fälligkeitsdatum dieser Aufgabe",
|
"dueDate": "Ändere das Fälligkeitsdatum dieser Aufgabe",
|
||||||
"attachment": "Einen Anhang dieser Aufgabe hinzufügen",
|
"attachment": "Einen Anhang dieser Aufgabe hinzufügen",
|
||||||
"related": "Ändere die Abhängigen Aufgaben dieser Aufgabe"
|
"related": "Ändere die Abhängigen Aufgaben dieser Aufgabe",
|
||||||
|
"color": "Die Farbe dieser Aufgabe ändern",
|
||||||
|
"move": "Diese Aufgabe in eine andere Liste verschieben"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "Listenansicht",
|
"title": "Listenansicht",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Zur Ganttansicht wechseln",
|
"switchToGanttView": "Zur Ganttansicht wechseln",
|
||||||
"switchToKanbanView": "Zur Kanbanansicht wechseln",
|
"switchToKanbanView": "Zur Kanbanansicht wechseln",
|
||||||
"switchToTableView": "Zur Tabellenansicht wechseln"
|
"switchToTableView": "Zur Tabellenansicht wechseln"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Die Startseite aufrufen",
|
||||||
|
"upcoming": "Anstehende Aufgaben aufrufen",
|
||||||
|
"namespaces": "Namespaces & Listen aufrufen",
|
||||||
|
"labels": "Labels aufrufen",
|
||||||
|
"teams": "Teams aufrufen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "Allgemein",
|
"general": "Allgemein",
|
||||||
"allPages": "Die Chürzl funktioniered uf allne Siitene.",
|
"allPages": "Die Chürzl funktioniered uf allne Siitene.",
|
||||||
"currentPageOnly": "Die Chürzl funktioniered nur uf de momentane Siite.",
|
"currentPageOnly": "Die Chürzl funktioniered nur uf de momentane Siite.",
|
||||||
|
"somePagesOnly": "Funktioniert nur auf manchen Seiten.",
|
||||||
"toggleMenu": "Menü umschalte",
|
"toggleMenu": "Menü umschalte",
|
||||||
"quickSearch": "Suechi und Schnellaktionsliste öffne",
|
"quickSearch": "Suechi und Schnellaktionsliste öffne",
|
||||||
"then": "dann",
|
"then": "dann",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Uufgabesiite",
|
"title": "Uufgabesiite",
|
||||||
"done": "Fertig",
|
"done": "Aufgabe als erledigt / unerledigt markieren",
|
||||||
"assign": "Benutzer:in zuweisen",
|
"assign": "Diese Aufgabe jemandem zuweisen",
|
||||||
"labels": "Labels ennere Uufgab hinzuefüege",
|
"labels": "Labels ennere Uufgab hinzuefüege",
|
||||||
"dueDate": "S'Fälligkeitsdatum für die Uufgab ändere",
|
"dueDate": "S'Fälligkeitsdatum für die Uufgab ändere",
|
||||||
"attachment": "En Aahang dere Uufgab hinzuefüege",
|
"attachment": "En Aahang dere Uufgab hinzuefüege",
|
||||||
"related": "Beziehige vo dere Uufgab bearbeite"
|
"related": "Beziehige vo dere Uufgab bearbeite",
|
||||||
|
"color": "Die Farbe dieser Aufgabe ändern",
|
||||||
|
"move": "Diese Aufgabe in eine andere Liste verschieben"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "Listenansicht",
|
"title": "Listenansicht",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Zur Ganttansicht wechseln",
|
"switchToGanttView": "Zur Ganttansicht wechseln",
|
||||||
"switchToKanbanView": "Zur Kanbanansicht wechseln",
|
"switchToKanbanView": "Zur Kanbanansicht wechseln",
|
||||||
"switchToTableView": "Zur Tabellenansicht wechseln"
|
"switchToTableView": "Zur Tabellenansicht wechseln"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Die Startseite aufrufen",
|
||||||
|
"upcoming": "Anstehende Aufgaben aufrufen",
|
||||||
|
"namespaces": "Namespaces & Listen aufrufen",
|
||||||
|
"labels": "Labels aufrufen",
|
||||||
|
"teams": "Teams aufrufen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -837,17 +837,20 @@
|
||||||
"general": "General",
|
"general": "General",
|
||||||
"allPages": "These shortcuts work on all pages.",
|
"allPages": "These shortcuts work on all pages.",
|
||||||
"currentPageOnly": "These shortcuts work only on the current page.",
|
"currentPageOnly": "These shortcuts work only on the current page.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Toggle The Menu",
|
"toggleMenu": "Toggle The Menu",
|
||||||
"quickSearch": "Open the search/quick action bar",
|
"quickSearch": "Open the search/quick action bar",
|
||||||
"then": "then",
|
"then": "then",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Task Page",
|
"title": "Task Page",
|
||||||
"done": "Done",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Assign to a user",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Add labels to this task",
|
"labels": "Add labels to this task",
|
||||||
"dueDate": "Change the due date of this task",
|
"dueDate": "Change the due date of this task",
|
||||||
"attachment": "Add an attachment to this task",
|
"attachment": "Add an attachment to this task",
|
||||||
"related": "Modify related tasks of this task"
|
"related": "Modify related tasks of this task",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "List Views",
|
"title": "List Views",
|
||||||
|
@ -855,6 +858,14 @@
|
||||||
"switchToGanttView": "Switch to gantt view",
|
"switchToGanttView": "Switch to gantt view",
|
||||||
"switchToKanbanView": "Switch to kanban view",
|
"switchToKanbanView": "Switch to kanban view",
|
||||||
"switchToTableView": "Switch to table view"
|
"switchToTableView": "Switch to table view"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "General",
|
"general": "General",
|
||||||
"allPages": "These shortcuts work on all pages.",
|
"allPages": "These shortcuts work on all pages.",
|
||||||
"currentPageOnly": "These shortcuts work only on the current page.",
|
"currentPageOnly": "These shortcuts work only on the current page.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Toggle The Menu",
|
"toggleMenu": "Toggle The Menu",
|
||||||
"quickSearch": "Open the search/quick action bar",
|
"quickSearch": "Open the search/quick action bar",
|
||||||
"then": "then",
|
"then": "then",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Task Page",
|
"title": "Task Page",
|
||||||
"done": "Done",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Assign to a user",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Add labels to this task",
|
"labels": "Add labels to this task",
|
||||||
"dueDate": "Change the due date of this task",
|
"dueDate": "Change the due date of this task",
|
||||||
"attachment": "Add an attachment to this task",
|
"attachment": "Add an attachment to this task",
|
||||||
"related": "Modify related tasks of this task"
|
"related": "Modify related tasks of this task",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "List Views",
|
"title": "List Views",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Switch to gantt view",
|
"switchToGanttView": "Switch to gantt view",
|
||||||
"switchToKanbanView": "Switch to kanban view",
|
"switchToKanbanView": "Switch to kanban view",
|
||||||
"switchToTableView": "Switch to table view"
|
"switchToTableView": "Switch to table view"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -111,7 +111,7 @@
|
||||||
"title": "Avatar",
|
"title": "Avatar",
|
||||||
"initials": "Initiales",
|
"initials": "Initiales",
|
||||||
"gravatar": "Gravatar",
|
"gravatar": "Gravatar",
|
||||||
"marble": "Marble",
|
"marble": "Bille",
|
||||||
"upload": "Téléverser",
|
"upload": "Téléverser",
|
||||||
"uploadAvatar": "Téléverser l’avatar",
|
"uploadAvatar": "Téléverser l’avatar",
|
||||||
"statusUpdateSuccess": "Statut de l’avatar mis à jour.",
|
"statusUpdateSuccess": "Statut de l’avatar mis à jour.",
|
||||||
|
@ -385,7 +385,7 @@
|
||||||
"showDoneTasks": "Afficher les tâches terminées",
|
"showDoneTasks": "Afficher les tâches terminées",
|
||||||
"sortAlphabetically": "Trier par ordre alphabétique",
|
"sortAlphabetically": "Trier par ordre alphabétique",
|
||||||
"enablePriority": "Activer le filtre par priorité",
|
"enablePriority": "Activer le filtre par priorité",
|
||||||
"enablePercentDone": "Enable Filter By Progress",
|
"enablePercentDone": "Activer le filtre par progression",
|
||||||
"dueDateRange": "Plage de dates d’échéance",
|
"dueDateRange": "Plage de dates d’échéance",
|
||||||
"startDateRange": "Plage de dates de début",
|
"startDateRange": "Plage de dates de début",
|
||||||
"endDateRange": "Plage de dates de fin",
|
"endDateRange": "Plage de dates de fin",
|
||||||
|
@ -570,22 +570,22 @@
|
||||||
"text2": "Ceci supprimera également toutes les pièces jointes, les rappels et les relations associés à cette tâche et ne pourra pas être annulé !"
|
"text2": "Ceci supprimera également toutes les pièces jointes, les rappels et les relations associés à cette tâche et ne pourra pas être annulé !"
|
||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"assign": "Assign to User",
|
"assign": "Assigner à l'utilisateur",
|
||||||
"label": "Add Labels",
|
"label": "Ajouter des étiquettes",
|
||||||
"priority": "Définir la priorité",
|
"priority": "Définir la priorité",
|
||||||
"dueDate": "Définir l’échéance",
|
"dueDate": "Définir l’échéance",
|
||||||
"startDate": "Set Start Date",
|
"startDate": "Définir la date de début",
|
||||||
"endDate": "Set End Date",
|
"endDate": "Définir la date de fin",
|
||||||
"reminders": "Définir des rappels",
|
"reminders": "Définir des rappels",
|
||||||
"repeatAfter": "Set Repeating Interval",
|
"repeatAfter": "Définir un intervalle de répétition",
|
||||||
"percentDone": "Set Progress",
|
"percentDone": "Définir la progression",
|
||||||
"attachments": "Add Attachments",
|
"attachments": "Ajouter des pièces jointes",
|
||||||
"relatedTasks": "Add Relation",
|
"relatedTasks": "Ajouter une relation",
|
||||||
"moveList": "Move",
|
"moveList": "Déplacer",
|
||||||
"color": "Set Color",
|
"color": "Définir la couleur",
|
||||||
"delete": "Delete",
|
"delete": "Supprimer",
|
||||||
"favorite": "Add to Favorites",
|
"favorite": "Ajouter aux favoris",
|
||||||
"unfavorite": "Remove from Favorites"
|
"unfavorite": "Retirer des favoris"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"attributes": {
|
"attributes": {
|
||||||
|
@ -598,7 +598,7 @@
|
||||||
"dueDate": "Date d’échéance",
|
"dueDate": "Date d’échéance",
|
||||||
"endDate": "Date de fin",
|
"endDate": "Date de fin",
|
||||||
"labels": "Étiquettes",
|
"labels": "Étiquettes",
|
||||||
"percentDone": "Progress",
|
"percentDone": "Progression",
|
||||||
"priority": "Priorité",
|
"priority": "Priorité",
|
||||||
"relatedTasks": "Tâches connexes",
|
"relatedTasks": "Tâches connexes",
|
||||||
"reminders": "Rappels",
|
"reminders": "Rappels",
|
||||||
|
@ -785,17 +785,20 @@
|
||||||
"general": "Général",
|
"general": "Général",
|
||||||
"allPages": "Fonctionne sur toutes les pages.",
|
"allPages": "Fonctionne sur toutes les pages.",
|
||||||
"currentPageOnly": "Fonctionnent uniquement sur la page en cours.",
|
"currentPageOnly": "Fonctionnent uniquement sur la page en cours.",
|
||||||
|
"somePagesOnly": "Ces raccourcis fonctionnent seulement sur certaines pages.",
|
||||||
"toggleMenu": "Basculer le menu",
|
"toggleMenu": "Basculer le menu",
|
||||||
"quickSearch": "Ouvrir la barre de recherche/action rapide",
|
"quickSearch": "Ouvrir la barre de recherche/action rapide",
|
||||||
"then": "puis",
|
"then": "puis",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Page de tâche",
|
"title": "Page de tâche",
|
||||||
"done": "Terminé",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Attribuer à un utilisateur",
|
"assign": "Assigner cette tâche à un utilisateur",
|
||||||
"labels": "Ajouter des étiquettes à cette tâche",
|
"labels": "Ajouter des étiquettes à cette tâche",
|
||||||
"dueDate": "Modifier la date d’échéance de cette tâche",
|
"dueDate": "Modifier la date d’échéance de cette tâche",
|
||||||
"attachment": "Ajouter une pièce jointe à cette tâche",
|
"attachment": "Ajouter une pièce jointe à cette tâche",
|
||||||
"related": "Modifier les tâches connexes de cette tâche"
|
"related": "Modifier les tâches connexes de cette tâche",
|
||||||
|
"color": "Changer la couleur de cette tâche",
|
||||||
|
"move": "Déplacer cette tâche dans une autre liste"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "Vues en liste",
|
"title": "Vues en liste",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Passer en vue Gantt",
|
"switchToGanttView": "Passer en vue Gantt",
|
||||||
"switchToKanbanView": "Passer en vue kanban",
|
"switchToKanbanView": "Passer en vue kanban",
|
||||||
"switchToTableView": "Passer en vue tableau"
|
"switchToTableView": "Passer en vue tableau"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Accéder à la vue d'ensemble",
|
||||||
|
"upcoming": "Accéder aux prochaines tâches",
|
||||||
|
"namespaces": "Accéder aux espaces de noms et listes",
|
||||||
|
"labels": "Accéder aux étiquettes",
|
||||||
|
"teams": "Accéder aux équipes"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "Generali",
|
"general": "Generali",
|
||||||
"allPages": "Queste scorciatoie funzionano in tutte le pagine.",
|
"allPages": "Queste scorciatoie funzionano in tutte le pagine.",
|
||||||
"currentPageOnly": "Queste scorciatoie funzionano solo nella pagina attuale.",
|
"currentPageOnly": "Queste scorciatoie funzionano solo nella pagina attuale.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Attiva/Disattiva Menu",
|
"toggleMenu": "Attiva/Disattiva Menu",
|
||||||
"quickSearch": "Apri la barra di ricerca/azione rapida",
|
"quickSearch": "Apri la barra di ricerca/azione rapida",
|
||||||
"then": "e dopo",
|
"then": "e dopo",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Pagina Attività",
|
"title": "Pagina Attività",
|
||||||
"done": "Fatto",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Assegna a un utente",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Aggiungi etichette a questa attività",
|
"labels": "Aggiungi etichette a questa attività",
|
||||||
"dueDate": "Modifica la data di scadenza di questa attività",
|
"dueDate": "Modifica la data di scadenza di questa attività",
|
||||||
"attachment": "Aggiungi un allegato a questa attività",
|
"attachment": "Aggiungi un allegato a questa attività",
|
||||||
"related": "Modifica le attività collegate a questa"
|
"related": "Modifica le attività collegate a questa",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "Viste Liste",
|
"title": "Viste Liste",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Passa alla vista Gantt",
|
"switchToGanttView": "Passa alla vista Gantt",
|
||||||
"switchToKanbanView": "Passa alla vista Kanban",
|
"switchToKanbanView": "Passa alla vista Kanban",
|
||||||
"switchToTableView": "Passa alla vista Tabella"
|
"switchToTableView": "Passa alla vista Tabella"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "General",
|
"general": "General",
|
||||||
"allPages": "These shortcuts work on all pages.",
|
"allPages": "These shortcuts work on all pages.",
|
||||||
"currentPageOnly": "These shortcuts work only on the current page.",
|
"currentPageOnly": "These shortcuts work only on the current page.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Toggle The Menu",
|
"toggleMenu": "Toggle The Menu",
|
||||||
"quickSearch": "Open the search/quick action bar",
|
"quickSearch": "Open the search/quick action bar",
|
||||||
"then": "then",
|
"then": "then",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Task Page",
|
"title": "Task Page",
|
||||||
"done": "Done",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Assign to a user",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Add labels to this task",
|
"labels": "Add labels to this task",
|
||||||
"dueDate": "Change the due date of this task",
|
"dueDate": "Change the due date of this task",
|
||||||
"attachment": "Add an attachment to this task",
|
"attachment": "Add an attachment to this task",
|
||||||
"related": "Modify related tasks of this task"
|
"related": "Modify related tasks of this task",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "List Views",
|
"title": "List Views",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Switch to gantt view",
|
"switchToGanttView": "Switch to gantt view",
|
||||||
"switchToKanbanView": "Switch to kanban view",
|
"switchToKanbanView": "Switch to kanban view",
|
||||||
"switchToTableView": "Switch to table view"
|
"switchToTableView": "Switch to table view"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "Ogólne",
|
"general": "Ogólne",
|
||||||
"allPages": "Te skróty działają na wszystkich stronach.",
|
"allPages": "Te skróty działają na wszystkich stronach.",
|
||||||
"currentPageOnly": "Te skróty działają tylko na bieżącej stronie.",
|
"currentPageOnly": "Te skróty działają tylko na bieżącej stronie.",
|
||||||
|
"somePagesOnly": "Te skróty działają tylko na niektórych stronach.",
|
||||||
"toggleMenu": "Przełącz menu",
|
"toggleMenu": "Przełącz menu",
|
||||||
"quickSearch": "Otwórz pasek wyszukiwania/szybkiej akcji",
|
"quickSearch": "Otwórz pasek wyszukiwania/szybkiej akcji",
|
||||||
"then": "następnie",
|
"then": "następnie",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Widok zadań",
|
"title": "Widok zadań",
|
||||||
"done": "Ukończone",
|
"done": "Oznacz zadanie jako wykonane / niewykonane",
|
||||||
"assign": "Przypisz do użytkownika",
|
"assign": "Przypisz to zadanie do użytkownika",
|
||||||
"labels": "Dodaj etykiety do tego zadania",
|
"labels": "Dodaj etykiety do tego zadania",
|
||||||
"dueDate": "Zmień termin wykonania tego zadania",
|
"dueDate": "Zmień termin wykonania tego zadania",
|
||||||
"attachment": "Dodaj załącznik do tego zadania",
|
"attachment": "Dodaj załącznik do tego zadania",
|
||||||
"related": "Zmodyfikuj zadania powiązane z tym zadaniem"
|
"related": "Zmodyfikuj zadania powiązane z tym zadaniem",
|
||||||
|
"color": "Zmień kolor tego zadania",
|
||||||
|
"move": "Przenieś to zadanie do innej listy"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "Widoki listy",
|
"title": "Widoki listy",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Przełącz na widok Gantta",
|
"switchToGanttView": "Przełącz na widok Gantta",
|
||||||
"switchToKanbanView": "Przełącz na widok Kanban",
|
"switchToKanbanView": "Przełącz na widok Kanban",
|
||||||
"switchToTableView": "Przełącz na widok tabeli"
|
"switchToTableView": "Przełącz na widok tabeli"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Nawigacja",
|
||||||
|
"overview": "Przejdź do przeglądu",
|
||||||
|
"upcoming": "Przejdź do nadchodzących zadań",
|
||||||
|
"namespaces": "Przejdź do sekcji i list",
|
||||||
|
"labels": "Przejdź do etykiet",
|
||||||
|
"teams": "Przejdź do zespołów"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "General",
|
"general": "General",
|
||||||
"allPages": "These shortcuts work on all pages.",
|
"allPages": "These shortcuts work on all pages.",
|
||||||
"currentPageOnly": "These shortcuts work only on the current page.",
|
"currentPageOnly": "These shortcuts work only on the current page.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Toggle The Menu",
|
"toggleMenu": "Toggle The Menu",
|
||||||
"quickSearch": "Open the search/quick action bar",
|
"quickSearch": "Open the search/quick action bar",
|
||||||
"then": "then",
|
"then": "then",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Task Page",
|
"title": "Task Page",
|
||||||
"done": "Done",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Assign to a user",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Add labels to this task",
|
"labels": "Add labels to this task",
|
||||||
"dueDate": "Change the due date of this task",
|
"dueDate": "Change the due date of this task",
|
||||||
"attachment": "Add an attachment to this task",
|
"attachment": "Add an attachment to this task",
|
||||||
"related": "Modify related tasks of this task"
|
"related": "Modify related tasks of this task",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "List Views",
|
"title": "List Views",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Switch to gantt view",
|
"switchToGanttView": "Switch to gantt view",
|
||||||
"switchToKanbanView": "Switch to kanban view",
|
"switchToKanbanView": "Switch to kanban view",
|
||||||
"switchToTableView": "Switch to table view"
|
"switchToTableView": "Switch to table view"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "Geral",
|
"general": "Geral",
|
||||||
"allPages": "Estes atalhos funcionam em todas as páginas.",
|
"allPages": "Estes atalhos funcionam em todas as páginas.",
|
||||||
"currentPageOnly": "Estes atalhos funcionamente apenas na página atual.",
|
"currentPageOnly": "Estes atalhos funcionamente apenas na página atual.",
|
||||||
|
"somePagesOnly": "Estes atalhos funcionam apenas em algumas páginas.",
|
||||||
"toggleMenu": "Alternar o Menu",
|
"toggleMenu": "Alternar o Menu",
|
||||||
"quickSearch": "Abrir a pesquisa/barra de ação rápida",
|
"quickSearch": "Abrir a pesquisa/barra de ação rápida",
|
||||||
"then": "então",
|
"then": "então",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Página de Tarefa",
|
"title": "Página de Tarefa",
|
||||||
"done": "Concluído",
|
"done": "Marcar tarefa como concluída / não concluída",
|
||||||
"assign": "Atribuir a um utilizador",
|
"assign": "Atribuir esta tarefa a um utilizador",
|
||||||
"labels": "Adicionar etiquetas a esta tarefa",
|
"labels": "Adicionar etiquetas a esta tarefa",
|
||||||
"dueDate": "Alterar a data de vencimento desta tarefa",
|
"dueDate": "Alterar a data de vencimento desta tarefa",
|
||||||
"attachment": "Adicionar um anexo a esta tarefa",
|
"attachment": "Adicionar um anexo a esta tarefa",
|
||||||
"related": "Modificar as tarefas relacionadas desta tarefa"
|
"related": "Modificar as tarefas relacionadas desta tarefa",
|
||||||
|
"color": "Alterar a cor desta tarefa",
|
||||||
|
"move": "Mover esta tarefa para outra lista"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "Visualização em Lista",
|
"title": "Visualização em Lista",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Alternar para visualização em gráfico de Gantt",
|
"switchToGanttView": "Alternar para visualização em gráfico de Gantt",
|
||||||
"switchToKanbanView": "Alternar para visualização em método de Kanban",
|
"switchToKanbanView": "Alternar para visualização em método de Kanban",
|
||||||
"switchToTableView": "Alternar para visualização em tabela"
|
"switchToTableView": "Alternar para visualização em tabela"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navegação",
|
||||||
|
"overview": "Navegar para a vista geral",
|
||||||
|
"upcoming": "Navegar para próximas tarefas",
|
||||||
|
"namespaces": "Navegar para espaços e listas",
|
||||||
|
"labels": "Navegar para etiquetas",
|
||||||
|
"teams": "Navegar para equipas"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "General",
|
"general": "General",
|
||||||
"allPages": "These shortcuts work on all pages.",
|
"allPages": "These shortcuts work on all pages.",
|
||||||
"currentPageOnly": "These shortcuts work only on the current page.",
|
"currentPageOnly": "These shortcuts work only on the current page.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Toggle The Menu",
|
"toggleMenu": "Toggle The Menu",
|
||||||
"quickSearch": "Open the search/quick action bar",
|
"quickSearch": "Open the search/quick action bar",
|
||||||
"then": "then",
|
"then": "then",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Task Page",
|
"title": "Task Page",
|
||||||
"done": "Done",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Assign to a user",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Add labels to this task",
|
"labels": "Add labels to this task",
|
||||||
"dueDate": "Change the due date of this task",
|
"dueDate": "Change the due date of this task",
|
||||||
"attachment": "Add an attachment to this task",
|
"attachment": "Add an attachment to this task",
|
||||||
"related": "Modify related tasks of this task"
|
"related": "Modify related tasks of this task",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "List Views",
|
"title": "List Views",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Switch to gantt view",
|
"switchToGanttView": "Switch to gantt view",
|
||||||
"switchToKanbanView": "Switch to kanban view",
|
"switchToKanbanView": "Switch to kanban view",
|
||||||
"switchToTableView": "Switch to table view"
|
"switchToTableView": "Switch to table view"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "General",
|
"general": "General",
|
||||||
"allPages": "Работают на всех страницах.",
|
"allPages": "Работают на всех страницах.",
|
||||||
"currentPageOnly": "Работают только на текущей странице.",
|
"currentPageOnly": "Работают только на текущей странице.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Переключить меню",
|
"toggleMenu": "Переключить меню",
|
||||||
"quickSearch": "Открыть панель поиска/быстрых действий",
|
"quickSearch": "Открыть панель поиска/быстрых действий",
|
||||||
"then": "then",
|
"then": "then",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Страница задачи",
|
"title": "Страница задачи",
|
||||||
"done": "Done",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Assign to a user",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Добавить метки этой задаче",
|
"labels": "Добавить метки этой задаче",
|
||||||
"dueDate": "Изменить срок этой задачи",
|
"dueDate": "Изменить срок этой задачи",
|
||||||
"attachment": "Добавить вложение к задаче",
|
"attachment": "Добавить вложение к задаче",
|
||||||
"related": "Изменить связанные задачи"
|
"related": "Изменить связанные задачи",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "List Views",
|
"title": "List Views",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Switch to gantt view",
|
"switchToGanttView": "Switch to gantt view",
|
||||||
"switchToKanbanView": "Switch to kanban view",
|
"switchToKanbanView": "Switch to kanban view",
|
||||||
"switchToTableView": "Switch to table view"
|
"switchToTableView": "Switch to table view"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "General",
|
"general": "General",
|
||||||
"allPages": "These shortcuts work on all pages.",
|
"allPages": "These shortcuts work on all pages.",
|
||||||
"currentPageOnly": "These shortcuts work only on the current page.",
|
"currentPageOnly": "These shortcuts work only on the current page.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Toggle The Menu",
|
"toggleMenu": "Toggle The Menu",
|
||||||
"quickSearch": "Open the search/quick action bar",
|
"quickSearch": "Open the search/quick action bar",
|
||||||
"then": "then",
|
"then": "then",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Task Page",
|
"title": "Task Page",
|
||||||
"done": "Done",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Assign to a user",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Add labels to this task",
|
"labels": "Add labels to this task",
|
||||||
"dueDate": "Change the due date of this task",
|
"dueDate": "Change the due date of this task",
|
||||||
"attachment": "Add an attachment to this task",
|
"attachment": "Add an attachment to this task",
|
||||||
"related": "Modify related tasks of this task"
|
"related": "Modify related tasks of this task",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "List Views",
|
"title": "List Views",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Switch to gantt view",
|
"switchToGanttView": "Switch to gantt view",
|
||||||
"switchToKanbanView": "Switch to kanban view",
|
"switchToKanbanView": "Switch to kanban view",
|
||||||
"switchToTableView": "Switch to table view"
|
"switchToTableView": "Switch to table view"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "General",
|
"general": "General",
|
||||||
"allPages": "These shortcuts work on all pages.",
|
"allPages": "These shortcuts work on all pages.",
|
||||||
"currentPageOnly": "These shortcuts work only on the current page.",
|
"currentPageOnly": "These shortcuts work only on the current page.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Toggle The Menu",
|
"toggleMenu": "Toggle The Menu",
|
||||||
"quickSearch": "Open the search/quick action bar",
|
"quickSearch": "Open the search/quick action bar",
|
||||||
"then": "then",
|
"then": "then",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Task Page",
|
"title": "Task Page",
|
||||||
"done": "Done",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Assign to a user",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Add labels to this task",
|
"labels": "Add labels to this task",
|
||||||
"dueDate": "Change the due date of this task",
|
"dueDate": "Change the due date of this task",
|
||||||
"attachment": "Add an attachment to this task",
|
"attachment": "Add an attachment to this task",
|
||||||
"related": "Modify related tasks of this task"
|
"related": "Modify related tasks of this task",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "List Views",
|
"title": "List Views",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Switch to gantt view",
|
"switchToGanttView": "Switch to gantt view",
|
||||||
"switchToKanbanView": "Switch to kanban view",
|
"switchToKanbanView": "Switch to kanban view",
|
||||||
"switchToTableView": "Switch to table view"
|
"switchToTableView": "Switch to table view"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -785,17 +785,20 @@
|
||||||
"general": "Tổng quan",
|
"general": "Tổng quan",
|
||||||
"allPages": "Các phím tắt này hoạt động ở mọi nơi.",
|
"allPages": "Các phím tắt này hoạt động ở mọi nơi.",
|
||||||
"currentPageOnly": "Các phím tắt này chỉ hoạt động ở trang hiện tại.",
|
"currentPageOnly": "Các phím tắt này chỉ hoạt động ở trang hiện tại.",
|
||||||
|
"somePagesOnly": "These shortcuts work only on some pages.",
|
||||||
"toggleMenu": "Bật/tắt Menu",
|
"toggleMenu": "Bật/tắt Menu",
|
||||||
"quickSearch": "Mở thanh tìm kiếm/thao tác nhanh",
|
"quickSearch": "Mở thanh tìm kiếm/thao tác nhanh",
|
||||||
"then": "sau đó",
|
"then": "sau đó",
|
||||||
"task": {
|
"task": {
|
||||||
"title": "Trang công việc",
|
"title": "Trang công việc",
|
||||||
"done": "Done",
|
"done": "Mark task done / undone",
|
||||||
"assign": "Chỉ định một người",
|
"assign": "Assign this task to a user",
|
||||||
"labels": "Thêm nhãn cho công việc này",
|
"labels": "Thêm nhãn cho công việc này",
|
||||||
"dueDate": "Thay đổi ngày hết hạn của công việc này",
|
"dueDate": "Thay đổi ngày hết hạn của công việc này",
|
||||||
"attachment": "Thêm tệp đính kèm cho công việc này",
|
"attachment": "Thêm tệp đính kèm cho công việc này",
|
||||||
"related": "Sửa đổi các công việc liên kết"
|
"related": "Sửa đổi các công việc liên kết",
|
||||||
|
"color": "Change the color of this task",
|
||||||
|
"move": "Move this task to another list"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"title": "Xem danh sách",
|
"title": "Xem danh sách",
|
||||||
|
@ -803,6 +806,14 @@
|
||||||
"switchToGanttView": "Chuyển sang biểu đồ Gantt",
|
"switchToGanttView": "Chuyển sang biểu đồ Gantt",
|
||||||
"switchToKanbanView": "Chuyển sang Kanban",
|
"switchToKanbanView": "Chuyển sang Kanban",
|
||||||
"switchToTableView": "Chuyển qua xem Bảng"
|
"switchToTableView": "Chuyển qua xem Bảng"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"title": "Navigation",
|
||||||
|
"overview": "Navigato to overview",
|
||||||
|
"upcoming": "Navigato to upcoming taks",
|
||||||
|
"namespaces": "Navigate to namepaces & lists",
|
||||||
|
"labels": "Navigate to labels",
|
||||||
|
"teams": "Navigate to teams"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"update": {
|
"update": {
|
||||||
|
|
|
@ -1,9 +1,182 @@
|
||||||
// Vikunja colors as CSS custom properties
|
// Vikunja colors as CSS custom properties
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
|
// Core Bulma color variables
|
||||||
|
// Added (from bulma-css-variables/css/bulma.css) to fix issues with undefined variables
|
||||||
|
// This section should be removed once bulma/sass scoping issues are fixed
|
||||||
|
// see https://kolaente.dev/vikunja/frontend/issues/1064
|
||||||
|
// Variables overriden in Vikunja specific rules below are commented out
|
||||||
|
//--scheme-main: white;
|
||||||
|
--scheme-main-bis: #fafafa;
|
||||||
|
--scheme-main-ter: whitesmoke;
|
||||||
|
--scheme-invert: #0a0a0a;
|
||||||
|
--scheme-invert-rgb: 10.2, 10.2, 10.2;
|
||||||
|
--scheme-invert-bis: #121212;
|
||||||
|
--scheme-invert-ter: #242424;
|
||||||
|
--background: whitesmoke;
|
||||||
|
//--border: #dbdbdb;
|
||||||
|
--border-rgb: 219.3, 219.3, 219.3;
|
||||||
|
--border-hover: #b5b5b5;
|
||||||
|
--border-light: #ededed;
|
||||||
|
--border-light-hover: #b5b5b5;
|
||||||
|
--text: #4a4a4a;
|
||||||
|
--text-invert: #fff;
|
||||||
|
--text-light: #7a7a7a;
|
||||||
|
--text-strong: #363636;
|
||||||
|
--code: #da1039;
|
||||||
|
--code-background: var(--background, whitesmoke);
|
||||||
|
--pre: var(--text, #4a4a4a);
|
||||||
|
--pre-background: var(--background, whitesmoke);
|
||||||
|
--link-visited: #b86bff;
|
||||||
|
//--link-hover: #363636;
|
||||||
|
--link-hover-border: #b5b5b5;
|
||||||
|
--link-focus: #363636;
|
||||||
|
--link-focus-border: var(--link, #485fc7);
|
||||||
|
--link-active: #363636;
|
||||||
|
--link-active-border: #4a4a4a;
|
||||||
|
//--white-h: 0deg;
|
||||||
|
//--white-s: 0%;
|
||||||
|
//--white-l: 100%;
|
||||||
|
//--white-a: 1;
|
||||||
|
//--white: hsla(var(--white-h), var(--white-s), var(--white-l), var(--white-a));
|
||||||
|
--white-invert-l: 4%;
|
||||||
|
--white-invert: #0a0a0a;
|
||||||
|
--white-light-l: 100%;
|
||||||
|
--white-light: hsla(var(--white-h), var(--white-s), var(--white-light-l), var(--white-a));
|
||||||
|
--white-dark-l: 29%;
|
||||||
|
--white-dark: hsla(var(--white-h), var(--white-s), var(--white-dark-l), var(--white-a));
|
||||||
|
//--black-h: 0deg;
|
||||||
|
//--black-s: 0%;
|
||||||
|
//--black-l: 4%;
|
||||||
|
//--black-a: 1;
|
||||||
|
//--black: hsla(var(--black-h), var(--black-s), var(--black-l), var(--black-a));
|
||||||
|
--black-invert-l: 100%;
|
||||||
|
--black-invert: white;
|
||||||
|
--black-light-l: 96%;
|
||||||
|
--black-light: hsla(var(--black-h), var(--black-s), var(--black-light-l), var(--black-a));
|
||||||
|
--black-dark-l: 57%;
|
||||||
|
--black-dark: hsla(var(--black-h), var(--black-s), var(--black-dark-l), var(--black-a));
|
||||||
|
--light-h: 0deg;
|
||||||
|
--light-s: 0%;
|
||||||
|
--light-l: 96%;
|
||||||
|
--light-a: 1;
|
||||||
|
--light: hsla(var(--light-h), var(--light-s), var(--light-l), var(--light-a));
|
||||||
|
--light-invert-l: 0%;
|
||||||
|
--light-invert: rgba(0, 0, 0, 0.7);
|
||||||
|
--light-light-l: 96%;
|
||||||
|
--light-light: hsla(var(--light-h), var(--light-s), var(--light-light-l), var(--light-a));
|
||||||
|
--light-dark-l: 29%;
|
||||||
|
--light-dark: hsla(var(--light-h), var(--light-s), var(--light-dark-l), var(--light-a));
|
||||||
|
--dark-h: 0deg;
|
||||||
|
--dark-s: 0%;
|
||||||
|
--dark-l: 21%;
|
||||||
|
--dark-a: 1;
|
||||||
|
--dark: hsla(var(--dark-h), var(--dark-s), var(--dark-l), var(--dark-a));
|
||||||
|
--dark-invert-l: 100%;
|
||||||
|
--dark-invert: #fff;
|
||||||
|
--dark-light-l: 96%;
|
||||||
|
--dark-light: hsla(var(--dark-h), var(--dark-s), var(--dark-light-l), var(--dark-a));
|
||||||
|
--dark-dark-l: 54%;
|
||||||
|
--dark-dark: hsla(var(--dark-h), var(--dark-s), var(--dark-dark-l), var(--dark-a));
|
||||||
|
//--primary-h: 171deg;
|
||||||
|
//--primary-s: 100%;
|
||||||
|
//--primary-l: 41%;
|
||||||
|
//--primary-a: 1;
|
||||||
|
//--primary: hsla(var(--primary-h), var(--primary-s), var(--primary-l), var(--primary-a));
|
||||||
|
--primary-invert-l: 100%;
|
||||||
|
--primary-invert: #fff;
|
||||||
|
--primary-light-l: 96%;
|
||||||
|
--primary-light: hsla(var(--primary-h), var(--primary-s), var(--primary-light-l), var(--primary-a));
|
||||||
|
--primary-dark-l: 29%;
|
||||||
|
--primary-dark: hsla(var(--primary-h), var(--primary-s), var(--primary-dark-l), var(--primary-a));
|
||||||
|
--link-h: 229deg;
|
||||||
|
--link-s: 53%;
|
||||||
|
--link-l: 53%;
|
||||||
|
--link-a: 1;
|
||||||
|
//--link: hsla(var(--link-h), var(--link-s), var(--link-l), var(--link-a));
|
||||||
|
--link-invert-l: 100%;
|
||||||
|
--link-invert: #fff;
|
||||||
|
--link-light-l: 96%;
|
||||||
|
--link-light: hsla(var(--link-h), var(--link-s), var(--link-light-l), var(--link-a));
|
||||||
|
--link-dark-l: 47%;
|
||||||
|
--link-dark: hsla(var(--link-h), var(--link-s), var(--link-dark-l), var(--link-a));
|
||||||
|
--info-h: 207deg;
|
||||||
|
--info-s: 61%;
|
||||||
|
--info-l: 53%;
|
||||||
|
--info-a: 1;
|
||||||
|
--info: hsla(var(--info-h), var(--info-s), var(--info-l), var(--info-a));
|
||||||
|
--info-invert-l: 100%;
|
||||||
|
--info-invert: #fff;
|
||||||
|
--info-light-l: 96%;
|
||||||
|
--info-light: hsla(var(--info-h), var(--info-s), var(--info-light-l), var(--info-a));
|
||||||
|
--info-dark-l: 41%;
|
||||||
|
--info-dark: hsla(var(--info-h), var(--info-s), var(--info-dark-l), var(--info-a));
|
||||||
|
//--success-h: 153deg;
|
||||||
|
//--success-s: 53%;
|
||||||
|
//--success-l: 53%;
|
||||||
|
//--success-a: 1;
|
||||||
|
//--success: hsla(var(--success-h), var(--success-s), var(--success-l), var(--success-a));
|
||||||
|
--success-invert-l: 100%;
|
||||||
|
--success-invert: #fff;
|
||||||
|
--success-light-l: 96%;
|
||||||
|
--success-light: hsla(var(--success-h), var(--success-s), var(--success-light-l), var(--success-a));
|
||||||
|
--success-dark-l: 31%;
|
||||||
|
--success-dark: hsla(var(--success-h), var(--success-s), var(--success-dark-l), var(--success-a));
|
||||||
|
//--warning-h: 44deg;
|
||||||
|
//--warning-s: 100%;
|
||||||
|
//--warning-l: 77%;
|
||||||
|
//--warning-a: 1;
|
||||||
|
//--warning: hsla(var(--warning-h), var(--warning-s), var(--warning-l), var(--warning-a));
|
||||||
|
--warning-invert-l: 0%;
|
||||||
|
--warning-invert: rgba(0, 0, 0, 0.7);
|
||||||
|
--warning-light-l: 96%;
|
||||||
|
--warning-light: hsla(var(--warning-h), var(--warning-s), var(--warning-light-l), var(--warning-a));
|
||||||
|
--warning-dark-l: 29%;
|
||||||
|
--warning-dark: hsla(var(--warning-h), var(--warning-s), var(--warning-dark-l), var(--warning-a));
|
||||||
|
//--danger-h: 348deg;
|
||||||
|
//--danger-s: 86%;
|
||||||
|
//--danger-l: 61%;
|
||||||
|
//--danger-a: 1;
|
||||||
|
//--danger: hsla(var(--danger-h), var(--danger-s), var(--danger-l), var(--danger-a));
|
||||||
|
--danger-invert-l: 100%;
|
||||||
|
--danger-invert: #fff;
|
||||||
|
--danger-light-l: 96%;
|
||||||
|
--danger-light: hsla(var(--danger-h), var(--danger-s), var(--danger-light-l), var(--danger-a));
|
||||||
|
--danger-dark-l: 43%;
|
||||||
|
--danger-dark: hsla(var(--danger-h), var(--danger-s), var(--danger-dark-l), var(--danger-a));
|
||||||
|
--input-color: var(--text-strong, #363636);
|
||||||
|
--input-background-color: var(--scheme-main, white);
|
||||||
|
//--input-border-color: var(--border, #dbdbdb);
|
||||||
|
--input-shadow: inset 0 0.0625em 0.125em rgba(var(--scheme-invert-rgb, 10.2, 10.2, 10.2), 0.05);
|
||||||
|
--input-placeholder-color: rgba(54, 54, 54, 0.3);
|
||||||
|
--input-hover-color: var(--text-strong, #363636);
|
||||||
|
--input-hover-border-color: var(--border-hover, #b5b5b5);
|
||||||
|
--input-focus-color: var(--text-strong, #363636);
|
||||||
|
--input-focus-border-color: var(--link, #485fc7);
|
||||||
|
--input-focus-box-shadow-color: var(--input-focus-box-shadow-color-hsla, rgba(72, 95, 199, 0.25));
|
||||||
|
--input-disabled-color: var(--text-light, #7a7a7a);
|
||||||
|
//--input-disabled-background-color: var(--background, whitesmoke);
|
||||||
|
//--input-disabled-border-color: var(--background, whitesmoke);
|
||||||
|
--input-disabled-placeholder-color: rgba(122, 122, 122, 0.3);
|
||||||
|
--input-arrow: var(--link, #485fc7);
|
||||||
|
--input-icon-color: var(--border, #dbdbdb);
|
||||||
|
--input-icon-active-color: var(--text, #4a4a4a);
|
||||||
|
--black-bis: #121212;
|
||||||
|
--black-ter: #242424;
|
||||||
|
//--grey-darker: #363636;
|
||||||
|
//--grey-dark: #4a4a4a;
|
||||||
|
//--grey: #7a7a7a;
|
||||||
|
//--grey-light: #b5b5b5;
|
||||||
|
//--grey-lighter: #dbdbdb;
|
||||||
|
--white-ter: whitesmoke;
|
||||||
|
--white-bis: #fafafa;
|
||||||
|
// END core Bulma color variables
|
||||||
|
|
||||||
|
|
||||||
// Vikunja specific variables
|
// Vikunja specific variables
|
||||||
--grey-50: hsl(210, 20%, 98%);
|
--grey-50: hsl(210, 20%, 98%);
|
||||||
--grey-100: hsl(220, 14.3%, 95.9%);
|
--grey-100-hsl: 220, 14.3%, 95.9%;
|
||||||
|
--grey-100: hsl(var(--grey-100-hsl));
|
||||||
--grey-200: hsl(220, 13%, 91%);
|
--grey-200: hsl(220, 13%, 91%);
|
||||||
--grey-300: hsl(216, 12.2%, 83.9%);
|
--grey-300: hsl(216, 12.2%, 83.9%);
|
||||||
--grey-400: hsl(217.9, 10.6%, 64.9%);
|
--grey-400: hsl(217.9, 10.6%, 64.9%);
|
||||||
|
@ -14,9 +187,9 @@
|
||||||
--grey-800: hsl(215, 27.9%, 16.9%);
|
--grey-800: hsl(215, 27.9%, 16.9%);
|
||||||
--grey-900: hsl(220.9, 39.3%, 11%);
|
--grey-900: hsl(220.9, 39.3%, 11%);
|
||||||
--site-background: var(--grey-100);
|
--site-background: var(--grey-100);
|
||||||
--scheme-main: var(--white);
|
|
||||||
|
|
||||||
// Overrides of Bulma defaults
|
// Overrides of Bulma defaults
|
||||||
|
--scheme-main: var(--white);
|
||||||
--grey-darker: var(--grey-700);
|
--grey-darker: var(--grey-700);
|
||||||
--grey-dark: var(--grey-800);
|
--grey-dark: var(--grey-800);
|
||||||
--grey: var(--grey-500);
|
--grey: var(--grey-500);
|
||||||
|
@ -66,6 +239,12 @@
|
||||||
--primary-a: 1;
|
--primary-a: 1;
|
||||||
--primary-hsl: var(--primary-h), var(--primary-s), var(--primary-l);
|
--primary-hsl: var(--primary-h), var(--primary-s), var(--primary-l);
|
||||||
--primary: hsla(var(--primary-h), var(--primary-s), var(--primary-l), var(--primary-a));
|
--primary: hsla(var(--primary-h), var(--primary-s), var(--primary-l), var(--primary-a));
|
||||||
|
|
||||||
|
--link: var(--primary);
|
||||||
|
--link-hover: hsla(var(--primary-h), var(--primary-s), var(--primary-l), .75);
|
||||||
|
--border: var(--grey-200);
|
||||||
|
--input-disabled-background-color: var(--grey-100);
|
||||||
|
--input-disabled-border-color: var(--grey-300);
|
||||||
// END Overrides of Bulma defaults
|
// END Overrides of Bulma defaults
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,12 +255,6 @@
|
||||||
--card-border-color: var(--grey-200);
|
--card-border-color: var(--grey-200);
|
||||||
--logo-text-color: hsl(180, 1%, 15%);
|
--logo-text-color: hsl(180, 1%, 15%);
|
||||||
|
|
||||||
--link: var(--primary);
|
|
||||||
--link-hover: hsla(var(--primary-h), var(--primary-s), var(--primary-l), .75);
|
|
||||||
--border: var(--grey-200);
|
|
||||||
--input-disabled-background-color: var(--grey-100);
|
|
||||||
--input-disabled-border-color: var(--grey-300);
|
|
||||||
|
|
||||||
&.dark {
|
&.dark {
|
||||||
// Light mode colours reversed for dark mode
|
// Light mode colours reversed for dark mode
|
||||||
--grey-900-hsl: 210, 20%, 98%;
|
--grey-900-hsl: 210, 20%, 98%;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
/* eslint-disable no-undef */
|
/* eslint-disable no-undef */
|
||||||
|
|
||||||
const workboxVersion = 'v6.5.0'
|
const workboxVersion = 'v6.5.2'
|
||||||
importScripts( `/workbox-${workboxVersion}/workbox-sw.js`)
|
importScripts( `/workbox-${workboxVersion}/workbox-sw.js`)
|
||||||
workbox.setConfig({
|
workbox.setConfig({
|
||||||
modulePathPrefix: `/workbox-${workboxVersion}`,
|
modulePathPrefix: `/workbox-${workboxVersion}`,
|
||||||
|
|
|
@ -654,10 +654,6 @@ $filter-container-height: '1rem - #{$switch-view-height}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sortable-chosen .task {
|
|
||||||
transform: rotate(3deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bucket {
|
.bucket {
|
||||||
border-radius: $radius;
|
border-radius: $radius;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
|
@ -42,12 +42,12 @@
|
||||||
</Message>
|
</Message>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<slot />
|
<slot v-if="loadedListId"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ref, shallowRef, computed, watchEffect} from 'vue'
|
import {ref, computed, watchEffect} from 'vue'
|
||||||
import {useRoute} from 'vue-router'
|
import {useRoute} from 'vue-router'
|
||||||
|
|
||||||
import Message from '@/components/misc/message.vue'
|
import Message from '@/components/misc/message.vue'
|
||||||
|
@ -55,12 +55,12 @@ import Message from '@/components/misc/message.vue'
|
||||||
import ListModel from '@/models/list'
|
import ListModel from '@/models/list'
|
||||||
import ListService from '@/services/list'
|
import ListService from '@/services/list'
|
||||||
|
|
||||||
import {store} from '@/store'
|
import {BACKGROUND, CURRENT_LIST} from '@/store/mutation-types'
|
||||||
import {CURRENT_LIST} from '@/store/mutation-types'
|
|
||||||
|
|
||||||
import {getListTitle} from '@/helpers/getListTitle'
|
import {getListTitle} from '@/helpers/getListTitle'
|
||||||
import {saveListToHistory} from '@/modules/listHistory'
|
import {saveListToHistory} from '@/modules/listHistory'
|
||||||
import { useTitle } from '@/composables/useTitle'
|
import {useTitle} from '@/composables/useTitle'
|
||||||
|
import {useStore} from 'vuex'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
listId: {
|
listId: {
|
||||||
|
@ -74,8 +74,9 @@ const props = defineProps({
|
||||||
})
|
})
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
const store = useStore()
|
||||||
|
|
||||||
const listService = shallowRef(new ListService())
|
const listService = ref(new ListService())
|
||||||
const loadedListId = ref(0)
|
const loadedListId = ref(0)
|
||||||
|
|
||||||
const currentList = computed(() => {
|
const currentList = computed(() => {
|
||||||
|
@ -87,7 +88,7 @@ const currentList = computed(() => {
|
||||||
} : store.state.currentList
|
} : store.state.currentList
|
||||||
})
|
})
|
||||||
|
|
||||||
// call again the method if the listId changes
|
// call the method again if the listId changes
|
||||||
watchEffect(() => loadList(props.listId))
|
watchEffect(() => loadList(props.listId))
|
||||||
|
|
||||||
useTitle(() => currentList.value.id ? getListTitle(currentList.value) : '')
|
useTitle(() => currentList.value.id ? getListTitle(currentList.value) : '')
|
||||||
|
@ -123,6 +124,14 @@ async function loadList(listIdToLoad: number) {
|
||||||
|
|
||||||
console.debug(`Loading list, props.viewName = ${props.viewName}, $route.params =`, route.params, `, loadedListId = ${loadedListId.value}, currentList = `, currentList.value)
|
console.debug(`Loading list, props.viewName = ${props.viewName}, $route.params =`, route.params, `, loadedListId = ${loadedListId.value}, currentList = `, currentList.value)
|
||||||
|
|
||||||
|
// Put set the current list to the one we're about to load so that the title is already shown at the top
|
||||||
|
loadedListId.value = 0
|
||||||
|
const listFromStore = store.getters['lists/getListById'](listData.id)
|
||||||
|
if (listFromStore !== null) {
|
||||||
|
store.commit(BACKGROUND, null)
|
||||||
|
store.commit(CURRENT_LIST, listFromStore)
|
||||||
|
}
|
||||||
|
|
||||||
// We create an extra list object instead of creating it in list.value because that would trigger a ui update which would result in bad ux.
|
// We create an extra list object instead of creating it in list.value because that would trigger a ui update which would result in bad ux.
|
||||||
const list = new ListModel(listData)
|
const list = new ListModel(listData)
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -259,6 +259,7 @@
|
||||||
class="is-outlined has-no-border"
|
class="is-outlined has-no-border"
|
||||||
icon="check-double"
|
icon="check-double"
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
|
v-shortcut="'t'"
|
||||||
>
|
>
|
||||||
{{ task.done ? $t('task.detail.undone') : $t('task.detail.done') }}
|
{{ task.done ? $t('task.detail.undone') : $t('task.detail.done') }}
|
||||||
</x-button>
|
</x-button>
|
||||||
|
@ -356,6 +357,7 @@
|
||||||
@click="setFieldActive('moveList')"
|
@click="setFieldActive('moveList')"
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
icon="list"
|
icon="list"
|
||||||
|
v-shortcut="'m'"
|
||||||
>
|
>
|
||||||
{{ $t('task.detail.actions.moveList') }}
|
{{ $t('task.detail.actions.moveList') }}
|
||||||
</x-button>
|
</x-button>
|
||||||
|
@ -363,6 +365,7 @@
|
||||||
@click="setFieldActive('color')"
|
@click="setFieldActive('color')"
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
icon="fill-drip"
|
icon="fill-drip"
|
||||||
|
v-shortcut="'c'"
|
||||||
>
|
>
|
||||||
{{ $t('task.detail.actions.color') }}
|
{{ $t('task.detail.actions.color') }}
|
||||||
</x-button>
|
</x-button>
|
||||||
|
|
Loading…
Reference in a new issue