A simple to-do app focused on tasks that can be completed within a specific time span.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fixed floating error on reload

+16 -8
+1 -3
app/components/Utils/Sheet.vue
··· 22 22 const emit = defineEmits<{ close: [] }>(); 23 23 24 24 const useModal = useMediaQuery("(min-width: 40rem)"); 25 - 26 - const isPwa = useIsPwa(); 27 25 </script> 28 26 29 27 <template> ··· 37 35 <DrawerContent 38 36 class="bg-surface fixed bottom-0 z-30 flex h-106 w-dvw flex-col gap-2 rounded-t-lg drop-shadow-lg" 39 37 > 40 - <div class="h-full" :data-pwa="isPwa"> 38 + <div class="h-full"> 41 39 <VisuallyHidden> 42 40 <DrawerTitle>{{ title }}</DrawerTitle> 43 41 <DrawerDescription>{{ title }}</DrawerDescription>
+1 -1
app/composables/useIsPwa.ts
··· 10 10 onMounted(() => { 11 11 isPwa.value = 12 12 window.matchMedia("(display-mode: standalone)").matches || 13 - (window.navigator as NavigatorStandalone).standalone === true; 13 + (window.navigator as NavigatorStandalone).standalone!; 14 14 }); 15 15 16 16 return isPwa;
+6 -3
app/composables/useSettings.ts
··· 4 4 }; 5 5 6 6 export function useSettings() { 7 - const settings = useLocalStorage<Settings>("settings", { 8 - insertionPoint: "bottom", 9 - design: "classic", 7 + const settings = useCookie<Settings>("settings", { 8 + default: () => ({ 9 + insertionPoint: "bottom", 10 + design: "classic", 11 + }), 10 12 }); 13 + 11 14 return { settings }; 12 15 }
+8 -1
app/pages/index.vue
··· 39 39 40 40 const isPwa = useIsPwa(); 41 41 const { settings } = useSettings(); 42 + 43 + useHead({ 44 + htmlAttrs: { 45 + "data-design": computed(() => settings.value.design), 46 + "data-pwa": computed(() => isPwa.value), 47 + }, 48 + }); 42 49 </script> 43 50 <template> 44 - <div :data-design="settings.design" :data-pwa="isPwa"> 51 + <div> 45 52 <FilterSheet v-model:is-open="isFilterSheetOpen" /> 46 53 <SettingsSheet v-model:is-open="isSettingsSheetOpen" /> 47 54 <EditTodoSheet />