feat: add edit gottesdienst button on card header for admin

This commit is contained in:
2026-07-14 22:15:41 +02:00
parent fe121795a0
commit 924b443bdc
3 changed files with 49 additions and 11 deletions
@@ -12,6 +12,7 @@ const props = defineProps<{
const emit = defineEmits<{ const emit = defineEmits<{
toggleMark: [gid: number, mid: number] toggleMark: [gid: number, mid: number]
editGottesdienst: [id: number]
}>() }>()
const isAdmin = computed(() => props.currentUsername === "admin") const isAdmin = computed(() => props.currentUsername === "admin")
@@ -159,6 +160,9 @@ function getOwnMarkHint(): string {
<i v-if="getOwnMarkIcon()" class="icon">{{ getOwnMarkIcon() }}</i> <i v-if="getOwnMarkIcon()" class="icon">{{ getOwnMarkIcon() }}</i>
</button> </button>
<span class="name">{{ gottesdienst.name !== "" ? gottesdienst.name : "Gottesdienst" }}</span> <span class="name">{{ gottesdienst.name !== "" ? gottesdienst.name : "Gottesdienst" }}</span>
<button v-if="isAdmin" class="edit-godi-btn" @click="emit('editGottesdienst', gottesdienst.id)" title="Gottesdienst bearbeiten">
<i class="icon">edit</i>
</button>
</div> </div>
<div class="info"> <div class="info">
<span class="date">am {{ formatWeekday(gottesdienst.date) }} {{ formatDay(gottesdienst.date) }}</span> <span class="date">am {{ formatWeekday(gottesdienst.date) }} {{ formatDay(gottesdienst.date) }}</span>
@@ -225,6 +229,34 @@ function getOwnMarkHint(): string {
.name { .name {
font-weight: 700; font-weight: 700;
font-size: 18px; font-size: 18px;
flex: 1;
}
.edit-godi-btn {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
padding: 0;
margin: 0;
border: none;
border-radius: 4px;
background: transparent;
color: #aaa;
cursor: pointer;
transition: 100ms;
flex-shrink: 0;
i {
font-size: 20px;
margin: 0;
}
&:hover {
background: #f0f0f0;
color: #555;
}
} }
} }
@@ -321,6 +353,7 @@ function getOwnMarkHint(): string {
gap: 6px; gap: 6px;
width: 100%; width: 100%;
padding: 6px 0; padding: 6px 0;
margin: 0;
border: none; border: none;
background: transparent; background: transparent;
font-size: 14px; font-size: 14px;
+2
View File
@@ -15,6 +15,7 @@ defineProps<{
const emit = defineEmits<{ const emit = defineEmits<{
toggleMark: [gid: number, mid: number] toggleMark: [gid: number, mid: number]
addGottesdienst: [] addGottesdienst: []
editGottesdienst: [id: number]
addMinistrant: [] addMinistrant: []
editMinistrant: [id: number] editMinistrant: [id: number]
importZelebrationsplan: [] importZelebrationsplan: []
@@ -48,6 +49,7 @@ const activeTab = ref<"gottesdienste" | "ministranten">("gottesdienste")
:editable="editable" :editable="editable"
:current-username="currentUsername" :current-username="currentUsername"
@toggle-mark="(gid, mid) => emit('toggleMark', gid, mid)" @toggle-mark="(gid, mid) => emit('toggleMark', gid, mid)"
@edit-gottesdienst="(id) => emit('editGottesdienst', id)"
/> />
<button v-if="admin" class="add-godi" @click="emit('addGottesdienst')"> <button v-if="admin" class="add-godi" @click="emit('addGottesdienst')">
<i class="icon">add</i> Gottesdienst <i class="icon">add</i> Gottesdienst
+14 -11
View File
@@ -324,17 +324,6 @@ async function importZelebrationsplan() {
<GroupView :groups="plan.groups" :admin="editPlanAdmin" <GroupView :groups="plan.groups" :admin="editPlanAdmin"
@new="createNewPlan" @delete="deletePlan" @edit="editPlan" class="no-print"/> @new="createNewPlan" @delete="deletePlan" @edit="editPlan" class="no-print"/>
<PlanActionBar
class="action-bar no-print"
:save="getDif().length > 0"
:plan="false"
:godi="true"
@save="saveChanges()"
@add-godi="createGottesdienst()"
@add-mini="createMinistrant()"
@import-zelebrationsplan="importZelebrationsplan()"
v-if="editPlanAdmin"
/>
<ListView <ListView
:gottesdienste="sortedGottesdienste" :gottesdienste="sortedGottesdienste"
@@ -347,6 +336,7 @@ async function importZelebrationsplan() {
@add-gottesdienst="createGottesdienst()" @add-gottesdienst="createGottesdienst()"
@add-ministrant="createMinistrant()" @add-ministrant="createMinistrant()"
@edit-ministrant="(id) => createMinistrant(id)" @edit-ministrant="(id) => createMinistrant(id)"
@edit-gottesdienst="(id) => createGottesdienst(id)"
@import-zelebrationsplan="importZelebrationsplan()" @import-zelebrationsplan="importZelebrationsplan()"
class="plan list" class="plan list"
v-if="viewMode === 'list'"> v-if="viewMode === 'list'">
@@ -354,6 +344,19 @@ async function importZelebrationsplan() {
</ListView> </ListView>
<template v-if="viewMode === 'table'"> <template v-if="viewMode === 'table'">
<PlanActionBar
class="action-bar no-print"
:save="getDif().length > 0"
:plan="false"
:godi="true"
@save="saveChanges()"
@add-godi="createGottesdienst()"
@add-mini="createMinistrant()"
@import-zelebrationsplan="importZelebrationsplan()"
v-if="editPlanAdmin"
/>
<TablePlan <TablePlan
:gottesdienste="sortedGottesdienste" :gottesdienste="sortedGottesdienste"
:ministranten="plan.ministranten" :ministranten="plan.ministranten"