default sidebar collapse mobile

This commit is contained in:
2023-05-21 13:56:42 +02:00
parent 7eeedd0eeb
commit 6dd8c2d524
4 changed files with 24 additions and 6 deletions

View File

@@ -1,10 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { activeNote, updateNote } from '@/composables/useNotes' import { activeNote, updateNote } from '@/composables/useNotes'
import { viewModes, activeViewMode } from '@/composables/useViewMode' import { viewModes, activeViewMode } from '@/composables/useViewMode'
import { windowIsMobile } from '@/utils/helpers'
import { initialized } from '@/composables/useFirebase' import { initialized } from '@/composables/useFirebase'
import firebase from 'firebase/compat/app' import firebase from 'firebase/compat/app'
import * as firebaseui from 'firebaseui' import * as firebaseui from 'firebaseui'
const sideBarCollapsed = ref(true)
const sideBarCollapsed = ref(windowIsMobile())
const Note = defineAsyncComponent(() => import('@/components/ViewModes/Note.vue')) const Note = defineAsyncComponent(() => import('@/components/ViewModes/Note.vue'))
const ListView = defineAsyncComponent(() => import('@/components/ViewModes/ListView.vue')) const ListView = defineAsyncComponent(() => import('@/components/ViewModes/ListView.vue'))
@@ -33,11 +35,12 @@ provide('firebaseAuthUI', firebaseAuthUI)
:view-modes="viewModes" :view-modes="viewModes"
:active-view-mode="activeViewMode" :active-view-mode="activeViewMode"
@set-view-mode="(viewMode) => (activeViewMode = viewMode)" @set-view-mode="(viewMode) => (activeViewMode = viewMode)"
@collapse="(collapse) => (sideBarCollapsed = collapse)"
class="mt-[50px] px-3 py-6" class="mt-[50px] px-3 py-6"
/> />
<main <main
class="transition[margin-left] z-10 mt-[50px] w-full border-x-[1px] bg-white px-10 py-6 duration-200 ease-out" class="transition[margin-left] z-10 mt-[50px] w-full border-x-[1px] bg-white px-10 py-6 duration-200 ease-out"
:class="sideBarCollapsed ? 'ml-0' : 'ml-sidebar'" :class="sideBarCollapsed ? 'ml-0' : 'ml-sidebar max-sm:hidden'"
> >
<template v-if="initialized"> <template v-if="initialized">
<Note <Note

View File

@@ -1,6 +1,8 @@
<script setup lang="ts"> <script setup lang="ts">
import { rootNote, notes, setActiveNote } from '@/composables/useNotes' import { rootNote, notes, setActiveNote as baseSetActiveNote } from '@/composables/useNotes'
import { windowIsMobile } from '@/utils/helpers'
import { initialized } from '@/composables/useFirebase' import { initialized } from '@/composables/useFirebase'
import { activeViewMode } from '@/composables/useViewMode';
const props = defineProps<{ const props = defineProps<{
viewModes: ViewMode[] viewModes: ViewMode[]
@@ -9,12 +11,23 @@ const props = defineProps<{
const emit = defineEmits<{ const emit = defineEmits<{
setViewMode: [viewMode: ViewMode] setViewMode: [viewMode: ViewMode]
collapse: [collapse: boolean]
}>() }>()
const setActiveNote = (noteId: string | undefined) => {
emit('collapse', windowIsMobile())
baseSetActiveNote(noteId)
}
const setViewMode = (viewMode: ViewMode) => {
emit('collapse', windowIsMobile())
emit('setViewMode', viewMode)
}
</script> </script>
<template> <template>
<div <div
id="sidebar" id="sidebar"
class="fixed top-0 flex w-sidebar flex-col gap-4 overflow-y-auto px-2 py-3 text-[90%]" class="fixed top-0 flex w-sidebar flex-col gap-4 overflow-y-auto px-2 py-3 text-[90%] max-sm:w-full max-sm:text-[120%]"
> >
<SideBarMenu> <SideBarMenu>
<template #header>Root note</template> <template #header>Root note</template>
@@ -39,7 +52,7 @@ const emit = defineEmits<{
:key="viewMode.name" :key="viewMode.name"
:icon="viewMode.icon" :icon="viewMode.icon"
:active="viewMode.name === activeViewMode.name" :active="viewMode.name === activeViewMode.name"
@click="emit('setViewMode', viewMode)" @click="setViewMode(viewMode)"
> >
{{ viewMode.name }} {{ viewMode.name }}
</SideBarMenuItem> </SideBarMenuItem>

View File

@@ -29,7 +29,7 @@ const authModalInitialStateOpen = ref(authUI.isPendingRedirect())
<div class="mx-auto flex w-full max-w-app items-center py-2.5 text-white"> <div class="mx-auto flex w-full max-w-app items-center py-2.5 text-white">
<div <div
class="flex items-center pl-3 search-active-hide" class="flex items-center pl-3 search-active-hide"
:class="sideBarCollapsed ? 'w-fit' : 'w-sidebar pr-3'" :class="sideBarCollapsed ? 'w-fit' : 'max-sm:w-fit md:w-sidebar md:pr-3'"
> >
<Hamburger <Hamburger
:side-bar-collapsed="props.sideBarCollapsed" :side-bar-collapsed="props.sideBarCollapsed"

View File

@@ -19,3 +19,5 @@ export const getAllMatches = (regex: RegExp, input: string): RegExpExecArray[] =
} while (m) } while (m)
return matches return matches
} }
export const windowIsMobile = () => window.innerWidth < 640