Merge branch 'code/cleanup' into dev
This commit is contained in:
@@ -87,123 +87,123 @@
|
||||
|
||||
/* Colors */
|
||||
.event-red:not(.is-hidden) {
|
||||
@apply text-slate-900 bg-red-500 hover:bg-red-600
|
||||
@apply text-slate-900 bg-red-500 hover:bg-red-600 focus-visible:bg-red-600
|
||||
}
|
||||
.event-orange:not(.is-hidden) {
|
||||
@apply text-slate-900 bg-orange-500 hover:bg-orange-600
|
||||
@apply text-slate-900 bg-orange-500 hover:bg-orange-600 focus-visible:bg-orange-600
|
||||
}
|
||||
.event-amber:not(.is-hidden) {
|
||||
@apply text-slate-900 bg-amber-500 hover:bg-amber-600
|
||||
@apply text-slate-900 bg-amber-500 hover:bg-amber-600 focus-visible:bg-amber-600
|
||||
}
|
||||
.event-yellow:not(.is-hidden) {
|
||||
@apply text-slate-900 bg-yellow-600 hover:bg-yellow-700
|
||||
@apply text-slate-900 bg-yellow-600 hover:bg-yellow-700 focus-visible:bg-yellow-700
|
||||
}
|
||||
.event-lime:not(.is-hidden) {
|
||||
@apply text-slate-900 bg-lime-500 hover:bg-lime-600
|
||||
@apply text-slate-900 bg-lime-500 hover:bg-lime-600 focus-visible:bg-lime-600
|
||||
}
|
||||
.event-green:not(.is-hidden) {
|
||||
@apply text-white bg-green-600 hover:bg-green-700
|
||||
@apply text-white bg-green-600 hover:bg-green-700 focus-visible:bg-green-700
|
||||
}
|
||||
.event-emerald:not(.is-hidden) {
|
||||
@apply text-white bg-emerald-600 hover:bg-emerald-700
|
||||
@apply text-white bg-emerald-600 hover:bg-emerald-700 focus-visible:bg-emerald-700
|
||||
}
|
||||
.event-teal:not(.is-hidden) {
|
||||
@apply text-white bg-teal-600 hover:bg-teal-700
|
||||
@apply text-white bg-teal-600 hover:bg-teal-700 focus-visible:bg-teal-700
|
||||
}
|
||||
.event-cyan:not(.is-hidden) {
|
||||
@apply text-white bg-cyan-600 hover:bg-cyan-700
|
||||
@apply text-white bg-cyan-600 hover:bg-cyan-700 focus-visible:bg-cyan-700
|
||||
}
|
||||
.event-sky:not(.is-hidden) {
|
||||
@apply text-white bg-sky-600 hover:bg-sky-700
|
||||
@apply text-white bg-sky-600 hover:bg-sky-700 focus-visible:bg-sky-700
|
||||
}
|
||||
.event-blue:not(.is-hidden) {
|
||||
@apply text-white bg-blue-600 hover:bg-blue-700
|
||||
@apply text-white bg-blue-600 hover:bg-blue-700 focus-visible:bg-blue-700
|
||||
}
|
||||
.event-indigo:not(.is-hidden) {
|
||||
@apply text-white bg-indigo-600 hover:bg-indigo-700
|
||||
@apply text-white bg-indigo-600 hover:bg-indigo-700 focus-visible:bg-indigo-700
|
||||
}
|
||||
.event-violet:not(.is-hidden) {
|
||||
@apply text-white bg-violet-600 hover:bg-violet-700
|
||||
@apply text-white bg-violet-600 hover:bg-violet-700 focus-visible:bg-violet-700
|
||||
}
|
||||
.event-purple:not(.is-hidden) {
|
||||
@apply text-white bg-purple-600 hover:bg-purple-700
|
||||
@apply text-white bg-purple-600 hover:bg-purple-700 focus-visible:bg-purple-700
|
||||
}
|
||||
.event-fuchsia:not(.is-hidden) {
|
||||
@apply text-white bg-fuchsia-600 hover:bg-fuchsia-700
|
||||
@apply text-white bg-fuchsia-600 hover:bg-fuchsia-700 focus-visible:bg-fuchsia-700
|
||||
}
|
||||
.event-pink:not(.is-hidden) {
|
||||
@apply text-white bg-pink-700 hover:bg-pink-800
|
||||
@apply text-white bg-pink-700 hover:bg-pink-800 focus-visible:bg-pink-800
|
||||
}
|
||||
.event-rose:not(.is-hidden) {
|
||||
@apply text-white bg-rose-700 hover:bg-rose-800
|
||||
@apply text-white bg-rose-700 hover:bg-rose-800 focus-visible:bg-rose-800
|
||||
}
|
||||
.event-black:not(.is-hidden) {
|
||||
@apply text-white bg-stone-500 hover:bg-stone-700
|
||||
@apply text-white bg-stone-500 hover:bg-stone-700 focus-visible:bg-stone-700
|
||||
}
|
||||
.event-white:not(.is-hidden) {
|
||||
@apply text-slate-900 bg-white hover:bg-yellow-200 border-[1px] border-slate-300
|
||||
@apply text-slate-900 bg-white hover:bg-yellow-200 focus-visible:bg-yellow-200 border-[1px] border-slate-300
|
||||
}
|
||||
|
||||
.event.is-hidden {
|
||||
border: 1px solid transparent;
|
||||
border: 1px dashed transparent;
|
||||
}
|
||||
|
||||
.event-red.is-hidden {
|
||||
@apply text-red-500 hover:text-white dark:hover:text-slate-900 border-red-500 hover:bg-red-600 dark:text-white
|
||||
@apply text-red-600 border-red-600 hover:bg-red-100 focus-visible:bg-red-100 dark:text-white dark:hover:bg-red-950 dark:focus-visible:bg-red-950
|
||||
}
|
||||
.event-orange.is-hidden {
|
||||
@apply text-orange-500 hover:text-white dark:hover:text-slate-900 border-orange-500 hover:bg-orange-600 dark:text-white
|
||||
@apply text-orange-600 border-orange-600 hover:bg-orange-100 focus-visible:bg-orange-100 dark:text-white dark:hover:bg-orange-950 dark:focus-visible:bg-orange-950
|
||||
}
|
||||
.event-amber.is-hidden {
|
||||
@apply text-amber-500 hover:text-white dark:hover:text-slate-900 border-amber-500 hover:bg-amber-600 dark:text-white
|
||||
@apply text-red-600 border-red-600 hover:bg-red-100 focus-visible:bg-red-100 dark:text-white dark:hover:bg-red-950 dark:focus-visible:bg-red-950
|
||||
}
|
||||
.event-yellow.is-hidden {
|
||||
@apply text-yellow-600 hover:text-white dark:hover:text-slate-900 border-yellow-600 hover:bg-yellow-700 dark:text-white
|
||||
@apply text-yellow-600 border-yellow-600 hover:bg-yellow-100 focus-visible:bg-yellow-100 dark:text-white dark:hover:bg-yellow-950 dark:focus-visible:bg-yellow-950
|
||||
}
|
||||
.event-lime.is-hidden {
|
||||
@apply text-lime-500 hover:text-white dark:hover:text-slate-900 border-lime-500 hover:bg-lime-600 dark:text-white
|
||||
@apply text-lime-600 border-lime-600 hover:bg-lime-100 focus-visible:bg-lime-100 dark:text-white dark:hover:bg-lime-950 dark:focus-visible:bg-lime-950
|
||||
}
|
||||
.event-green.is-hidden {
|
||||
@apply text-green-600 hover:text-white border-green-600 hover:bg-green-700 dark:text-white
|
||||
@apply text-green-600 border-green-600 hover:bg-green-700 focus-visible:bg-green-700 dark:text-white dark:hover:bg-green-950 dark:focus-visible:bg-green-950
|
||||
}
|
||||
.event-emerald.is-hidden {
|
||||
@apply text-emerald-600 hover:text-white border-emerald-600 hover:bg-emerald-700 dark:text-white
|
||||
@apply text-emerald-600 border-emerald-600 hover:bg-emerald-700 focus-visible:bg-emerald-700 dark:text-white dark:hover:bg-emerald-950 dark:focus-visible:bg-emerald-950
|
||||
}
|
||||
.event-teal.is-hidden {
|
||||
@apply text-teal-700 hover:text-white border-teal-600 hover:bg-teal-700 dark:text-white
|
||||
@apply text-teal-700 border-teal-600 hover:bg-teal-700 focus-visible:bg-teal-700 dark:text-white dark:hover:bg-teal-950 dark:focus-visible:bg-teal-950
|
||||
}
|
||||
.event-cyan.is-hidden {
|
||||
@apply text-cyan-600 hover:text-white border-cyan-600 hover:bg-cyan-700 dark:text-white
|
||||
@apply text-cyan-600 border-cyan-600 hover:bg-cyan-100 focus-visible:bg-cyan-100 dark:text-white dark:hover:bg-cyan-950 dark:focus-visible:bg-cyan-950
|
||||
}
|
||||
.event-sky.is-hidden {
|
||||
@apply text-sky-600 hover:text-white border-sky-600 hover:bg-sky-700 dark:text-white
|
||||
@apply text-sky-600 border-sky-600 hover:bg-sky-100 focus-visible:bg-sky-100 dark:text-white dark:hover:bg-sky-950 dark:focus-visible:bg-sky-950
|
||||
}
|
||||
.event-blue.is-hidden {
|
||||
@apply text-blue-600 hover:text-white border-blue-600 hover:bg-blue-700 dark:text-white
|
||||
@apply text-blue-600 border-blue-600 hover:bg-blue-100 focus-visible:bg-blue-100 dark:text-white dark:hover:bg-blue-950 dark:focus-visible:bg-blue-950
|
||||
}
|
||||
.event-indigo.is-hidden {
|
||||
@apply text-indigo-600 hover:text-white border-indigo-600 hover:bg-indigo-700 dark:text-white
|
||||
@apply text-indigo-600 border-indigo-600 hover:bg-indigo-100 focus-visible:bg-indigo-100 dark:text-white dark:hover:bg-indigo-950 dark:focus-visible:bg-indigo-950
|
||||
}
|
||||
.event-violet.is-hidden {
|
||||
@apply text-violet-600 hover:text-white border-violet-600 hover:bg-violet-700 dark:text-white
|
||||
@apply text-violet-600 border-violet-600 hover:bg-violet-100 focus-visible:bg-violet-100 dark:text-white dark:hover:bg-violet-950 dark:focus-visible:bg-violet-950
|
||||
}
|
||||
.event-purple.is-hidden {
|
||||
@apply text-purple-600 hover:text-white border-purple-600 hover:bg-purple-700 dark:text-white
|
||||
@apply text-purple-600 border-purple-600 hover:bg-purple-100 focus-visible:bg-purple-100 dark:text-white dark:hover:bg-purple-950 dark:focus-visible:bg-purple-950
|
||||
}
|
||||
.event-fuchsia.is-hidden {
|
||||
@apply text-fuchsia-600 hover:text-white border-fuchsia-600 hover:bg-fuchsia-700 dark:text-white
|
||||
@apply text-fuchsia-600 border-fuchsia-600 hover:bg-fuchsia-100 focus-visible:bg-fuchsia-100 dark:text-white dark:hover:bg-fuchsia-950 dark:focus-visible:bg-fuchsia-950
|
||||
}
|
||||
.event-pink.is-hidden {
|
||||
@apply text-pink-700 hover:text-white border-pink-700 hover:bg-pink-800 dark:text-white
|
||||
@apply text-pink-700 border-pink-700 hover:bg-pink-100 focus-visible:bg-pink-100 dark:text-white dark:hover:bg-pink-950 dark:focus-visible:bg-pink-950
|
||||
}
|
||||
.event-rose.is-hidden {
|
||||
@apply text-rose-700 hover:text-white border-rose-700 hover:bg-rose-800 dark:text-white
|
||||
@apply text-rose-700 border-rose-700 hover:bg-rose-100 focus-visible:bg-rose-100 dark:text-white dark:hover:bg-rose-950 dark:focus-visible:bg-rose-950
|
||||
}
|
||||
.event-black.is-hidden {
|
||||
@apply text-stone-700 hover:text-white border-stone-500 hover:bg-stone-700 dark:text-white
|
||||
@apply text-stone-700 border-stone-500 hover:bg-stone-100 focus-visible:bg-stone-100 dark:text-white dark:hover:bg-stone-950 dark:focus-visible:bg-stone-950
|
||||
}
|
||||
.event-white.is-hidden {
|
||||
@apply text-slate-900 border-neutral-400 hover:bg-yellow-200 dark:bg-neutral-800 dark:text-white dark:hover:bg-neutral-300 dark:hover:text-slate-900
|
||||
@apply text-slate-900 border-neutral-400 hover:bg-yellow-200 focus-visible:bg-yellow-200 dark:bg-neutral-900 dark:text-white dark:hover:bg-neutral-700 dark:focus-visible:bg-neutral-300
|
||||
}
|
||||
|
||||
.dark .event-details-red {
|
||||
|
||||
@@ -51,9 +51,9 @@ onMounted(() => {
|
||||
|
||||
<component :is="currentViewComponent" />
|
||||
|
||||
<CalendarSearch />
|
||||
<CalendarDialogUpdateEvent v-if="!isReadOnly" />
|
||||
<CalendarDialogDeleteEvent v-if="!isReadOnly" />
|
||||
<LazyCalendarSearch />
|
||||
<LazyCalendarDialogUpdateEvent v-if="!isReadOnly" />
|
||||
<LazyCalendarDialogDeleteEvent v-if="!isReadOnly" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -55,7 +55,7 @@ onMounted(() => {
|
||||
<UiPopover v-model:open="isPopoverDetailsOpen">
|
||||
<UiPopoverTrigger as-child>
|
||||
<button
|
||||
class="event text-xs px-2 py-1 block w-full text-left rounded-sm focus-visible:bg-red-200 transition-colors"
|
||||
class="event text-xs px-2 py-1 block w-full text-left rounded-sm transition-colors outline-offset-1"
|
||||
:class="
|
||||
cn(
|
||||
event.category ? `event-${event.category.color}` : '',
|
||||
|
||||
@@ -2,12 +2,20 @@
|
||||
import type { RPGDate } from "~/models/Date";
|
||||
import { PhAlarm, PhCircleNotch, PhEye, PhEyeClosed, PhMapPinArea, PhTag } from "@phosphor-icons/vue"
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const emit = defineEmits(["event-created"])
|
||||
|
||||
const props = defineProps<{
|
||||
date?: RPGDate
|
||||
btnClass?: string
|
||||
}>()
|
||||
|
||||
const { eventSkeleton } = storeToRefs(useCalendar())
|
||||
const { submitSkeleton, cancelLatestRequest } = useCalendar()
|
||||
|
||||
const { t } = useI18n()
|
||||
const newEventTitle = shallowRef<HTMLInputElement>()
|
||||
useFocus(newEventTitle, { initialValue: true })
|
||||
|
||||
const isLoading = ref(false)
|
||||
|
||||
@@ -15,11 +23,6 @@ const formErrors = reactive<{ message: string | null }>({
|
||||
message: null
|
||||
})
|
||||
|
||||
const props = defineProps<{
|
||||
date?: RPGDate
|
||||
btnClass?: string
|
||||
}>()
|
||||
|
||||
async function handleSubmit() {
|
||||
// Prevent form submission if already loading
|
||||
if (isLoading.value) return
|
||||
@@ -56,6 +59,7 @@ function handleCancel() {
|
||||
<div class="col-span-2 pl-8">
|
||||
<input
|
||||
id="new-event-title"
|
||||
ref="newEventTitle"
|
||||
v-model="eventSkeleton.title"
|
||||
type="text"
|
||||
name="new-event-title"
|
||||
|
||||
@@ -29,6 +29,9 @@ import type { Category } from "~/models/Category"
|
||||
const { isAdvancedSearchOpen, allEvents } = storeToRefs(useCalendar())
|
||||
const { characters } = storeToRefs(useCharacters())
|
||||
|
||||
const searchInput = shallowRef<HTMLInputElement>()
|
||||
useFocus(searchInput, { initialValue: true })
|
||||
|
||||
const searchQuery = ref<string>("")
|
||||
// const searchEnough = computed<boolean>(() => searchQuery.value.length >= 2)
|
||||
|
||||
@@ -281,6 +284,7 @@ function handleCategoryUnselect(e: Category) {
|
||||
<div class="relative w-full h-fit">
|
||||
<UiInput
|
||||
id="search"
|
||||
ref="searchInput"
|
||||
v-model:model-value="searchQuery"
|
||||
type="text"
|
||||
:placeholder="$t('entity.advancedSearch.ctaPlaceholder')"
|
||||
@@ -321,7 +325,7 @@ function handleCategoryUnselect(e: Category) {
|
||||
<ComboboxRoot
|
||||
v-model="selectedCategories"
|
||||
v-model:open="categoryFilterOpened"
|
||||
v-model:searchTerm="searchCategory"
|
||||
v-model:search-term="searchCategory"
|
||||
class="grow flex items-center gap-y-1 pr-2"
|
||||
>
|
||||
<ComboboxAnchor as-child>
|
||||
|
||||
@@ -21,7 +21,7 @@ const dateDuration = computed<string | null>(() => props.event.endDate ? getRela
|
||||
|
||||
<template>
|
||||
<button
|
||||
class="event relative block w-full text-left py-3 px-4 rounded-sm transition-colors"
|
||||
class="event group relative block w-full text-left py-3 px-4 rounded-sm transition-colors"
|
||||
:class="cn(
|
||||
event.category ? `event-${event.category.color}` : '',
|
||||
{
|
||||
@@ -30,7 +30,7 @@ const dateDuration = computed<string | null>(() => props.event.endDate ? getRela
|
||||
@click="$emit('query:date-jump', event.startDate)"
|
||||
>
|
||||
<div class="flex gap-2 items-center mb-1">
|
||||
<h2 class="font-bold text-lg">
|
||||
<h2 class="font-bold text-lg underline-offset-4 group-hover:underline">
|
||||
{{ event.title }}
|
||||
</h2>
|
||||
<div v-if="event.wiki">
|
||||
|
||||
21
components/global/LoadingCard.vue
Normal file
21
components/global/LoadingCard.vue
Normal file
@@ -0,0 +1,21 @@
|
||||
<script lang="ts" setup>
|
||||
const { lineNb = 3 } = defineProps<{
|
||||
lineNb?: number
|
||||
}>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<UiCard class="w-full h-full flex flex-col">
|
||||
<UiCardHeader>
|
||||
<UiCardTitle>
|
||||
<UiSkeleton class="w-2/3 max-w-full h-8" />
|
||||
</UiCardTitle>
|
||||
</UiCardHeader>
|
||||
<UiCardContent class="grow grid gap-2">
|
||||
<UiSkeleton class="w-full max-w-full h-6" />
|
||||
<template v-for="(l, i) in lineNb" :key="i">
|
||||
<UiSkeleton class="max-w-full h-6" :style="`width: ${Math.floor(Math.random() * 100) + 1}%`" />
|
||||
</template>
|
||||
</UiCardContent>
|
||||
</UiCard>
|
||||
</template>
|
||||
@@ -52,7 +52,7 @@ watch(user, () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-else-if="calendar?.data && categories?.data" class="h-full w-full">
|
||||
<div v-else-if="calendar?.data && categories?.data" class="h-full w-full pt-8">
|
||||
<Head>
|
||||
<Title>{{ calendar.data.name }}</Title>
|
||||
</Head>
|
||||
@@ -68,21 +68,21 @@ watch(user, () => {
|
||||
<div class="grid justify-items-center opacity-80">
|
||||
<PhCalendarX size="75" class="opacity-60" />
|
||||
|
||||
<Heading level="h1">
|
||||
<LazyHeading level="h1">
|
||||
{{ $t("entity.calendar.notFound") }}
|
||||
</Heading>
|
||||
</LazyHeading>
|
||||
|
||||
<p>
|
||||
{{ $t('entity.calendar.notFoundDescription') }}
|
||||
</p>
|
||||
|
||||
<UiButton variant="default" class="mt-4 gap-2" as-child>
|
||||
<LazyUiButton variant="default" class="mt-4 gap-2" as-child>
|
||||
<RouterLink to="/explore">
|
||||
<PhArrowBendDoubleUpLeft size="24" />
|
||||
|
||||
{{ $t('entity.calendar.backToList') }}
|
||||
</RouterLink>
|
||||
</UiButton>
|
||||
</LazyUiButton>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -5,7 +5,9 @@ definePageMeta({
|
||||
middleware: ["reset-menu"]
|
||||
})
|
||||
|
||||
const { data: availableCalendars } = await useLazyFetch<{ data: Calendar[] }>("/api/calendars/query", { key: "explore-calendars", query: { full: true } })
|
||||
const { data: availableCalendars, status: calendarStatus } = await useLazyFetch<{ data: Calendar[] }>("/api/calendars/query", { key: "explore-calendars", query: { full: true } })
|
||||
|
||||
const isLoading = computed(() => calendarStatus.value === "pending")
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -24,11 +26,14 @@ const { data: availableCalendars } = await useLazyFetch<{ data: Calendar[] }>("/
|
||||
{{ $t("entity.calendar.namePublicPlural") }}
|
||||
</Heading>
|
||||
|
||||
<ul v-if="availableCalendars?.data" class="grid md:grid-cols-3 gap-2">
|
||||
<li v-for="calendar in availableCalendars.data" :key="calendar.shortId">
|
||||
<CalendarPreviewCard :calendar="calendar" :gm-id="calendar.world?.gmId" />
|
||||
</li>
|
||||
</ul>
|
||||
<div v-if="isLoading" class="grid md:grid-cols-3 gap-2">
|
||||
<LoadingCard />
|
||||
</div>
|
||||
<ul v-else-if="availableCalendars?.data" class="grid md:grid-cols-3 gap-2">
|
||||
<li v-for="calendar in availableCalendars.data" :key="calendar.shortId">
|
||||
<CalendarPreviewCard :calendar="calendar" :gm-id="calendar.world?.gmId" />
|
||||
</li>
|
||||
</ul>
|
||||
</Spacing>
|
||||
</Spacing>
|
||||
</main>
|
||||
|
||||
@@ -153,8 +153,8 @@ function hideEditModal() {
|
||||
</Spacing>
|
||||
</section>
|
||||
|
||||
<WorldDialogCreate :modal-state="isCreateWorldModalOpen" @on-close="hideCreateDialog" />
|
||||
<WorldDialogEdit :world="markedWorld" :modal-state="isEditWorldModalOpen" @on-close="hideEditModal" />
|
||||
<WorldDialogDelete :world="markedWorld" :modal-state="isDeleteWorldModalOpen" @on-close="hideDeleteModal" />
|
||||
<LazyWorldDialogCreate :modal-state="isCreateWorldModalOpen" @on-close="hideCreateDialog" />
|
||||
<LazyWorldDialogEdit :world="markedWorld" :modal-state="isEditWorldModalOpen" @on-close="hideEditModal" />
|
||||
<LazyWorldDialogDelete :world="markedWorld" :modal-state="isDeleteWorldModalOpen" @on-close="hideDeleteModal" />
|
||||
</main>
|
||||
</template>
|
||||
|
||||
@@ -251,10 +251,10 @@ function hideEditModal() {
|
||||
</Spacing>
|
||||
</section>
|
||||
|
||||
<WorldDialogEdit :world="world.data" :modal-state="isEditWorldModalOpen" @on-close="hideEditModal" />
|
||||
<CalendarDialogCreate :world="world.data" :modal-state="isCreateCalendarModalOpen" @on-close="hideCreateDialog" />
|
||||
<CalendarDialogUpdate v-if="markedCalendar?.id" :world="world.data" :calendar="markedCalendar" :modal-state="isUpdateCalendarModalOpen" @on-close="hideUpdateDialog" />
|
||||
<CalendarDialogDelete :calendar="markedCalendar" :modal-state="isDeleteCalendarModalOpen" @on-close="hideDeleteCalendarModal"/>
|
||||
<LazyWorldDialogEdit :world="world.data" :modal-state="isEditWorldModalOpen" @on-close="hideEditModal" />
|
||||
<LazyCalendarDialogCreate :world="world.data" :modal-state="isCreateCalendarModalOpen" @on-close="hideCreateDialog" />
|
||||
<LazyCalendarDialogUpdate v-if="markedCalendar?.id" :world="world.data" :calendar="markedCalendar" :modal-state="isUpdateCalendarModalOpen" @on-close="hideUpdateDialog" />
|
||||
<LazyCalendarDialogDelete :calendar="markedCalendar" :modal-state="isDeleteCalendarModalOpen" @on-close="hideDeleteCalendarModal"/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="h-full w-full grid place-items-center">
|
||||
|
||||
Reference in New Issue
Block a user