Skip to content

Commit 774c430

Browse files
committed
feat: mobile search
1 parent f646c7e commit 774c430

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

packages/nimiq-vitepress-theme/src/layout/MobileNav.vue

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22
import { watchDebounced } from '@vueuse/core'
33
import { DrawerContent, DrawerOverlay, DrawerPortal, DrawerRoot, DrawerTrigger } from 'vaul-vue'
44
import { useRouter, withBase } from 'vitepress'
5-
import { ref, watch } from 'vue'
5+
import { defineAsyncComponent, ref, watch } from 'vue'
66
import { useSecondarySidebar } from '../composables/useSecondarySidebar'
7-
import SecondarySidebar from './SecondarySidebar.vue'
8-
import Sidebar from './Sidebar.vue'
97
108
const open = ref(false)
119
const openSecondarySidebar = ref(false)
1210
11+
const SearchCommandBox = defineAsyncComponent(() => import('./SearchCommandBox.vue'))
12+
const SecondarySidebar = defineAsyncComponent(() => import('./SecondarySidebar.vue'))
13+
const Sidebar = defineAsyncComponent(() => import('./Sidebar.vue'))
14+
1315
const shouldTeleport = ref(false)
1416
watchDebounced(
1517
() => openSecondarySidebar.value,
@@ -33,8 +35,11 @@ const { showWidget } = useSecondarySidebar()
3335

3436
<template>
3537
<div>
36-
<div v-if="showWidget" id="widget" fixed bottom-64 rounded-4 bg-neutral-50 shadow w="[calc(100vw-16px)]" inset-x-8 />
37-
<nav w-screen border="t neutral-300" nq-raw bg-neutral-0 z-10 :data-sidebar="open ? '' : undefined">
38+
<div
39+
v-if="showWidget" id="widget" fixed bottom-64 rounded-4 bg-neutral-50 shadow w="[calc(100vw-16px)]"
40+
inset-x-8
41+
/>
42+
<nav w-screen border="t neutral-300" nq-raw bg-neutral-0 z-50 :data-sidebar="open ? '' : undefined">
3843
<ul grid="~ items-center" :class="showSecondarySidebar ? 'cols-4' : 'cols-3'" children:children:h-56>
3944
<li>
4045
<a :href="withBase('')" stack>
@@ -49,27 +54,36 @@ const { showWidget } = useSecondarySidebar()
4954
</DrawerTrigger>
5055
<DrawerPortal>
5156
<DrawerOverlay fixed inset-0 bg-neutral bg-opacity-20 />
52-
<DrawerContent mt-24 max-h="96%" h-80vh fixed bottom-56 left-0 right-0>
57+
<DrawerContent mt-24 max-h="96%" h-80vh fixed bottom-0 left-0 right-0>
5358
<SecondarySidebar :with-widget="false" bg-neutral-100 w-screen f-pt-sm rounded-t-12 />
5459
</DrawerContent>
5560
</DrawerPortal>
5661
</DrawerRoot>
5762
</li>
5863

5964
<li px-8>
60-
<a :href="withBase('')" nq-pill-blue nq-pill-lg h-48="!" w-full outline="~ 1.5 offset--1.5 white/8">
61-
<div i-nimiq:magnifying-glass />
62-
</a>
65+
<DrawerRoot v-model:open="open">
66+
<DrawerTrigger stack nq-pill-blue nq-pill-lg h-48="!" w-full outline="~ 1.5 offset--1.5 white/8">
67+
<div i-nimiq:magnifying-glass />
68+
</DrawerTrigger>
69+
<DrawerPortal>
70+
<DrawerOverlay fixed inset-0 bg-neutral bg-opacity-20 />
71+
<DrawerContent mt-24 max-h="96%" h-80vh fixed bottom-0 left-0 right-0 bg-neutral-100 rounded-t-12 f-pt-sm>
72+
<!-- <Sidebar :search="false" w-screen f-pt-sm rounded-t-12 /> -->
73+
<SearchCommandBox @close="handleClose" />
74+
</DrawerContent>
75+
</DrawerPortal>
76+
</DrawerRoot>
6377
</li>
6478

6579
<li>
66-
<DrawerRoot v-model:open="open">
80+
<DrawerRoot>
6781
<DrawerTrigger stack bg-transparent>
6882
<div i-tabler:menu-2 text-20 />
6983
</DrawerTrigger>
7084
<DrawerPortal>
7185
<DrawerOverlay fixed inset-0 bg-neutral bg-opacity-20 />
72-
<DrawerContent mt-24 max-h="96%" h-80vh fixed bottom-56 left-0 right-0>
86+
<DrawerContent mt-24 max-h="96%" h-80vh bottom-0 fixed left-0 right-0>
7387
<Sidebar :search="false" w-screen f-pt-sm rounded-t-12 />
7488
</DrawerContent>
7589
</DrawerPortal>

packages/nimiq-vitepress-theme/src/layout/SearchCommandBox.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ function formMarkRegex(terms: Set<string>) {
141141

142142
<ListboxContent
143143
:ref="(node) => { if (node && '$el' in node){ resultsEl = node.$el } }"
144-
as="ul" max-h-55vh of-auto empty="hidden md:block"
144+
as="ul" md:max-h-55vh of-auto empty="hidden md:block"
145145
>
146146
<ListboxItem
147147
v-for="p in results" :key="p.id" :value="p.id"

0 commit comments

Comments
 (0)