Compare commits

..

8 Commits

Author SHA1 Message Date
renovate 3795c925d8 chore(deps): update dependency vite to v5.0.9
continuous-integration/drone/pr Build is failing Details
2023-12-15 00:18:15 +00:00
kolaente 2541733c71
fix(tasks): prevent endless references
continuous-integration/drone/push Build is passing Details
This would lead to failing attempts when updating the task later on (for example marking it as favorite)
2023-12-13 19:27:35 +01:00
kolaente 4d6fd9ecc4
fix(tasks): favorited sub tasks are not shown in favorites pseudo list
continuous-integration/drone/push Build is passing Details
2023-12-13 19:22:28 +01:00
kolaente 818f31c220
fix(tasks): update sub task relations in list view after they were created
continuous-integration/drone/push Build is passing Details
Resolves #3853
2023-12-13 19:15:48 +01:00
kolaente 34e4862c88
fix(kanban): make sure kanban cards always have text color matching their background
continuous-integration/drone/push Build is passing Details
Resolves https://github.com/go-vikunja/frontend/issues/135
2023-12-13 18:54:48 +01:00
renovate 0d074113f1 chore(deps): update dev-dependencies (#3846)
continuous-integration/drone/push Build is passing Details
Reviewed-on: #3846
Reviewed-by: konrad <k@knt.li>
Co-authored-by: renovate <renovatebot@kolaente.de>
Co-committed-by: renovate <renovatebot@kolaente.de>
2023-12-13 17:45:31 +00:00
kolaente 0730955403
fix(sw): remove debug option via env as it would not be replaced correctly in prod builds
continuous-integration/drone/push Build is passing Details
2023-12-13 18:37:56 +01:00
kolaente 75035ec1f8
fix(navigation): show filter settings dropdown
continuous-integration/drone/push Build is passing Details
Resolves #3851
2023-12-13 18:30:10 +01:00
8 changed files with 37 additions and 13 deletions

View File

@ -6,7 +6,6 @@
# (2) Comment in and adjust the values as needed.
# VITE_IS_ONLINE=true
# VITE_WORKBOX_DEBUG=false
# SENTRY_AUTH_TOKEN=YOUR_TOKEN
# SENTRY_ORG=vikunja
# SENTRY_PROJECT=frontend-oss

1
env.d.ts vendored
View File

@ -25,7 +25,6 @@ interface ImportMetaEnv {
readonly SENTRY_ORG?: string
readonly SENTRY_PROJECT?: string
readonly VITE_WORKBOX_DEBUG?: boolean
readonly VITE_IS_ONLINE: boolean
}

View File

@ -167,7 +167,7 @@
"sass": "1.69.5",
"start-server-and-test": "2.0.3",
"typescript": "5.3.3",
"vite": "5.0.8",
"vite": "5.0.9",
"vite-plugin-inject-preload": "1.3.3",
"vite-plugin-pwa": "0.17.4",
"vite-plugin-sentry": "1.3.0",

View File

@ -47,7 +47,6 @@
<icon :icon="project.isFavorite ? 'star' : ['far', 'star']"/>
</BaseButton>
<ProjectSettingsDropdown
v-if="project.id > 0"
class="menu-list-dropdown"
:project="project"
:level="level"
@ -58,7 +57,6 @@
</BaseButton>
</template>
</ProjectSettingsDropdown>
<span class="list-setting-spacer" v-else></span>
</div>
<ProjectsNavigation
v-if="canNestDeeper && childProjectsOpen && canCollapse"

View File

@ -149,13 +149,15 @@ async function addTask() {
await Promise.all(newTasks)
const taskRelationService = new TaskRelationService()
const allParentTasks = tasksToCreate.filter(t => t.parent !== null).map(t => t.parent)
const relations = tasksToCreate.map(async t => {
const createdTask = createdTasks[t.title]
if (typeof createdTask === 'undefined') {
return
}
if (t.parent === null) {
const isParent = allParentTasks.includes(t.title)
if (t.parent === null && !isParent) {
emit('taskAdded', createdTask)
return
}
@ -171,10 +173,19 @@ async function addTask() {
relationKind: RELATION_KIND.PARENTTASK,
}))
createdTask.relatedTasks[RELATION_KIND.PARENTTASK] = [createdParentTask]
createdTask.relatedTasks[RELATION_KIND.PARENTTASK] = [{
...createdParentTask,
relatedTasks: {}, // To avoid endless references
}]
// we're only emitting here so that the relation shows up in the project
emit('taskAdded', createdTask)
createdParentTask.relatedTasks[RELATION_KIND.SUBTASK] = [{
...createdTask,
relatedTasks: {}, // To avoid endless references
}]
emit('taskAdded', createdParentTask)
return rel
})
await Promise.all(relations)

View File

@ -5,6 +5,7 @@
'is-loading': loadingInternal || loading,
'draggable': !(loadingInternal || loading),
'has-light-text': color !== TASK_DEFAULT_COLOR && !colorIsDark(color),
'has-custom-background-color': color !== TASK_DEFAULT_COLOR ? color : undefined,
}"
:style="{'background-color': color !== TASK_DEFAULT_COLOR ? color : undefined}"
@click.exact="openTaskDetail()"
@ -48,7 +49,10 @@
</progress>
<div class="footer">
<labels :labels="task.labels"/>
<priority-label :priority="task.priority" :done="task.done" class="is-inline-flex is-align-items-center"/>
<priority-label
:priority="task.priority"
:done="task.done"
class="is-inline-flex is-align-items-center"/>
<assignee-list
v-if="task.assignees.length > 0"
:assignees="task.assignees"
@ -114,7 +118,7 @@ async function toggleTaskDone(task: ITask) {
...task,
done: !task.done,
})
if (updatedTask.done && useAuthStore().settings.frontendSettings.playSoundWhenDone) {
playPopSound()
}
@ -280,6 +284,16 @@ $task-background: var(--white);
width: auto;
}
&.has-custom-background-color {
color: hsl(215, 27.9%, 16.9%); // copied from grey-800 to avoid different values in dark mode
.footer .icon,
.due-date,
.priority-label {
background: hsl(220, 13%, 91%);
}
}
&.has-light-text {
color: var(--white);

View File

@ -11,7 +11,6 @@ const workboxVersion = 'v7.0.0'
importScripts(`${fullBaseUrl}workbox-${workboxVersion}/workbox-sw.js`)
workbox.setConfig({
modulePathPrefix: `${fullBaseUrl}workbox-${workboxVersion}`,
debug: Boolean(import.meta.env.VITE_WORKBOX_DEBUG),
})
import { precacheAndRoute } from 'workbox-precaching'

View File

@ -175,7 +175,11 @@ const tasks = ref<ITask[]>([])
watch(
allTasks,
() => {
tasks.value = [...allTasks.value].filter(t => typeof t.relatedTasks?.parenttask === 'undefined')
tasks.value = [...allTasks.value]
if (projectId < 0) {
return
}
tasks.value = tasks.value.filter(t => typeof t.relatedTasks?.parenttask === 'undefined')
},
)
@ -241,9 +245,9 @@ function updateTaskList(task: ITask) {
loadTasks()
}
else {
tasks.value = [
allTasks.value = [
task,
...tasks.value,
...allTasks.value,
]
}