From 9e814e319f65c7736ed1bf289fdc96f1375560e5 Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Fri, 14 Mar 2025 15:38:19 +0100 Subject: [PATCH 1/5] Set initial focus event creation --- components/calendar/form/CreateEvent.vue | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/components/calendar/form/CreateEvent.vue b/components/calendar/form/CreateEvent.vue index bc2396e..a7a82a9 100644 --- a/components/calendar/form/CreateEvent.vue +++ b/components/calendar/form/CreateEvent.vue @@ -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() +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() {
Date: Fri, 14 Mar 2025 15:49:36 +0100 Subject: [PATCH 2/5] Set initial focus for event search --- components/calendar/search/CalendarSearch.vue | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/calendar/search/CalendarSearch.vue b/components/calendar/search/CalendarSearch.vue index 25f3376..92e4b80 100644 --- a/components/calendar/search/CalendarSearch.vue +++ b/components/calendar/search/CalendarSearch.vue @@ -29,6 +29,9 @@ import type { Category } from "~/models/Category" const { isAdvancedSearchOpen, allEvents } = storeToRefs(useCalendar()) const { characters } = storeToRefs(useCharacters()) +const searchInput = shallowRef() +useFocus(searchInput, { initialValue: true }) + const searchQuery = ref("") // const searchEnough = computed(() => searchQuery.value.length >= 2) @@ -281,6 +284,7 @@ function handleCategoryUnselect(e: Category) {
From f94c688baad9a9d1733ddaf9686a41105b436319 Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Fri, 14 Mar 2025 16:47:43 +0100 Subject: [PATCH 3/5] Accessible event button styles --- assets/main.css | 78 +++++++++---------- components/calendar/CalendarEvent.vue | 2 +- .../calendar/search/lists/EventCallout.vue | 4 +- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/assets/main.css b/assets/main.css index 17dd7bd..a480816 100644 --- a/assets/main.css +++ b/assets/main.css @@ -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 { diff --git a/components/calendar/CalendarEvent.vue b/components/calendar/CalendarEvent.vue index bbda399..9c9c94a 100644 --- a/components/calendar/CalendarEvent.vue +++ b/components/calendar/CalendarEvent.vue @@ -55,7 +55,7 @@ onMounted(() => {
diff --git a/pages/explore.vue b/pages/explore.vue index b9663d4..b487220 100644 --- a/pages/explore.vue +++ b/pages/explore.vue @@ -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") diff --git a/pages/my/worlds/[id].vue b/pages/my/worlds/[id].vue index c26464d..bc29762 100644 --- a/pages/my/worlds/[id].vue +++ b/pages/my/worlds/[id].vue @@ -251,10 +251,10 @@ function hideEditModal() { - - - - + + + +