A simple to-do app focused on tasks that can be completed within a specific time span. taskline.tobinio.dev/
1
fork

Configure Feed

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

Mobile styling fixes #6

open opened by benni043.tngl.sh targeting main from benni043.tngl.sh/task-line: mobile-style-fixes

This PR:

  • Adds a background to the navbar
  • Fixes an issue where todos were hidden behind the navbar
  • Fixes a reload issue where the selected navigation style was not persisted correctly
Labels

None yet.

assignee

None yet.

Participants 1
AT URI
at://did:plc:4d7tshmkdmu3kss6q2v5tzka/sh.tangled.repo.pull/3ml6fpi6zzh22
+22 -19
Interdiff #0 #1
app/components/Nav/HorizontalNav.vue

This file has not been changed.

app/components/Todo/Todos.vue

This file has not been changed.

+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 > 38 + <div class="h-full"> 40 - <div class="h-full" :data-pwa="isPwa"> 41 39 <VisuallyHidden> 42 40 <DrawerTitle>{{ title }}</DrawerTitle> 43 41 <DrawerDescription>{{ title }}</DrawerDescription>
+5 -13
app/composables/useSettings.ts
··· 1 - 2 - 3 - 1 + type Settings = { 2 + insertionPoint: "top" | "bottom"; 4 3 }; 5 4 6 5 export function useSettings() { 7 - const settings = useLocalStorage<Settings>( 8 - "settings", 9 - { 10 - insertionPoint: "bottom", 11 - design: "classic", 12 - }, 13 - { 14 - initOnMounted: true, 15 - }, 16 - ); 6 + const settings = useLocalStorage<Settings>("settings", { 7 + insertionPoint: "bottom", 8 + }); 17 9 return { settings }; 18 10 }
+5 -1
app/components/Settings/SettingsSheet.vue
··· 10 10 11 11 const config = useRuntimeConfig(); 12 12 13 + const cookie = useCookie<string>("navStyle", { 14 + default: () => "classic", 15 + }); 16 + 13 17 function close() { 14 18 isOpen.value = false; 15 19 } ··· 92 96 <div> 93 97 <h2 class="text-muted-text text-lg">{{ t("design") }}</h2> 94 98 <select 95 - v-model="settings.design" 99 + v-model="cookie" 96 100 class="bg-surface border-secondary h-8 cursor-pointer rounded border px-2 text-white" 97 101 > 98 102 <option value="classic">{{ t(`classic`) }}</option>
+11 -2
app/pages/index.vue
··· 36 36 }); 37 37 38 38 const { isMobile } = useDevice(); 39 + const cookie = useCookie("navStyle"); 39 40 40 41 const isPwa = useIsPwa(); 41 - const { settings } = useSettings(); 42 + 43 + let design = computed(() => cookie.value); 44 + 45 + useHead({ 46 + htmlAttrs: { 47 + "data-design": design, 48 + "data-pwa": isPwa, 49 + }, 50 + }); 42 51 </script> 43 52 <template> 44 - <div :data-design="settings.design" :data-pwa="isPwa"> 53 + <div> 45 54 <FilterSheet v-model:is-open="isFilterSheetOpen" /> 46 55 <SettingsSheet v-model:is-open="isSettingsSheetOpen" /> 47 56 <EditTodoSheet />

History

3 rounds 0 comments
sign up or login to add to the discussion
3 commits
expand
fixed navbar
fixed sheet padding bottom
fixed floating error on reload
merge conflicts detected
expand
  • app/components/Nav/HorizontalNav.vue:23
  • app/components/Todo/Todos.vue:18
expand 0 comments
4 commits
expand
fixed navbar
fixed sheet padding bottom
fixed floating error onreload
changes
expand 0 comments
3 commits
expand
fixed navbar
fixed sheet padding bottom
fixed floating error onreload
expand 0 comments