Skip to content

Commit 421030f

Browse files
committed
feat(docs): improve responsive App Bar
1 parent 58007ca commit 421030f

File tree

7 files changed

+53
-36
lines changed

7 files changed

+53
-36
lines changed

packages/docs/src/components/app/Btn.vue

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<template>
22
<v-btn
33
:icon="!!icon"
4-
:size="smAndUp ? 'default' : 'small'"
54
:variant="variant"
65
class="text-body-2 text-capitalize px-3 app-btn"
76
color="medium-emphasis"
@@ -30,6 +29,5 @@
3029
},
3130
})
3231
33-
const { smAndUp } = useDisplay()
3432
const { t } = useI18n()
3533
</script>

packages/docs/src/components/app/bar/Bar.vue

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,51 +5,69 @@
55
class="px-md-3"
66
logo="vuetify"
77
flat
8+
responsive
9+
v-model:mobile-menu="app.mobileMenu"
810
>
9-
<template #prepend>
10-
<div class="px-1" />
11-
11+
<template #menu-activator="activatorProps">
1212
<AppBtn
13-
v-if="route.meta.layout !== 'home' && mdAndDown"
14-
icon="mdi-menu"
15-
@click="app.drawer = !app.drawer"
13+
v-bind="activatorProps"
14+
icon="mdi-dots-vertical"
1615
/>
16+
</template>
1717

18+
<template #prepend>
1819
<AppSearchSearch />
1920
</template>
2021

22+
<template #prepend-fixed>
23+
<AppBtn
24+
v-if="route.meta.layout !== 'home'"
25+
icon="mdi-menu"
26+
class="ms-2"
27+
@click="app.drawer = !app.drawer"
28+
/>
29+
</template>
30+
2131
<template #append>
22-
<div v-if="mdAndUp" class="d-flex ga-1">
32+
<div class="d-flex ga-1 flex-wrap">
2333
<AppBarLearnMenu />
2434

2535
<AppBarSupportMenu />
2636

2737
<AppBarEcosystemMenu />
2838

29-
<AppBarPlaygroundLink v-if="lgAndUp" />
39+
<AppBarPlaygroundLink />
3040

3141
<AppBarSponsorLink />
3242
</div>
43+
44+
<AppVerticalDivider v-if="!mobile"/>
3345

34-
<AppVerticalDivider v-if="smAndUp" />
46+
<div class="d-flex ga-1" :class="{ 'mt-4': mobile }">
47+
<AppBarStoreLink />
3548

36-
<div class="d-flex ga-1">
37-
<AppBarStoreLink v-if="smAndUp" />
49+
<AppBarGitHubLink />
3850

39-
<AppBarGitHubLink v-if="smAndUp" />
51+
<template v-if="!mobile || xs">
52+
<AppBarLanguageMenu />
4053

41-
<AppBarLanguageMenu />
54+
<AppBarSettingsToggle />
55+
</template>
56+
</div>
57+
58+
</template>
4259

60+
<template v-if="mobile && !xs" #append-fixed>
61+
<AppBarLanguageMenu />
4362
<AppBarSettingsToggle />
44-
</div>
4563
</template>
64+
4665
</VoAppBar>
4766
</template>
4867

4968
<script setup>
5069
const app = useAppStore()
51-
const { smAndUp, lgAndUp, mdAndDown, width } = useDisplay()
5270
const route = useRoute()
5371
54-
const mdAndUp = computed(() => width.value >= 1077)
72+
const { mobile, xs } = useDisplay()
5573
</script>

packages/docs/src/components/app/bar/SettingsToggle.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
v-else
1818
id="settings-toggle"
1919
:icon="app.settings ? 'mdi-cog' : 'mdi-cog-outline'"
20-
class="me-n2"
2120
color="medium-emphasis"
2221
@click="onClick"
2322
/>
@@ -32,5 +31,6 @@
3231
sweClick('app-bar', 'settings-toggle', name)
3332
3433
app.settings = !app.settings
34+
app.mobileMenu = false
3535
}
3636
</script>

packages/docs/src/components/app/menu/Menu.vue

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
close-delay="100"
44
location="bottom end"
55
open-delay="60"
6-
open-on-hover
6+
:open-on-hover="!mobile"
7+
:open-on-click="mobile"
78
>
89
<template #activator="{ props }">
910
<slot name="activator" v-bind="{ props }" />
@@ -12,7 +13,7 @@
1213
<AppSheet>
1314
<slot v-if="$slots.default" />
1415

15-
<AppListList v-else :items="items" nav />
16+
<AppListList v-else :items="items" nav :max-height="mobile ? 400 : undefined" />
1617
</AppSheet>
1718
</v-menu>
1819
</template>
@@ -28,4 +29,6 @@
2829
default: () => ([]),
2930
},
3031
})
32+
33+
const { mobile } = useDisplay()
3134
</script>

packages/docs/src/components/app/search/Search.vue

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
11
<template>
22
<AppBtn
33
:active="model"
4-
:icon="xs ? 'mdi-magnify' : undefined"
54
:loading="loading ? 'primary' : undefined"
6-
:prepend-icon="smAndUp ? 'mdi-magnify' : undefined"
5+
prepend-icon="mdi-magnify"
6+
:block="mobile"
7+
:variant="mobile ? 'tonal' : undefined"
8+
:class="{'ms-2': !mobile}"
9+
size="default"
710
@click="shouldLoad = true"
811
>
9-
<span :class="mdAndUp && 'me-n1'">
10-
<span v-if="smAndUp">
11-
{{ t('search.label') }}
12-
</span>
12+
<span class="me-n1">
13+
<span> {{ t('search.label') }} </span>
1314

14-
<span
15-
:class="[
16-
smAndDown ? 'border-opacity-0' : 'py-1 px-2 ms-2',
17-
'border rounded text-disabled text-caption'
18-
]"
19-
>
20-
<span v-if="mdAndUp">
15+
<span v-if="!mobile" class="py-1 px-2 ms-2 border rounded text-disabled text-caption">
2116
{{ t(`search.key-hint${user.slashSearch ? '-slash' : platform.mac ? '-mac' : ''}`) }}
22-
</span>
2317
</span>
2418
</span>
2519

@@ -38,7 +32,7 @@
3832
const SearchDialog = defineAsyncComponent(() => import('@/components/app/search/SearchDialog.vue'))
3933
4034
const { t } = useI18n()
41-
const { smAndUp, smAndDown, mdAndUp, xs, platform } = useDisplay()
35+
const { platform, mobile } = useDisplay()
4236
const { query } = useRoute()
4337
const user = useUserStore()
4438

packages/docs/src/plugins/vuetify.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ import type { IconProps } from 'vuetify'
2525

2626
export function installVuetify (app: App) {
2727
const vuetify = createVuetify({
28+
display: {
29+
mobileBreakpoint: 'lg',
30+
},
2831
components: {
2932
VSnackbarQueue,
3033
},

packages/docs/src/stores/app.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export const useAppStore = defineStore('app', {
3737
items: Array.from(data),
3838
pages: getPages(data as NavItem[]),
3939
settings: false,
40+
mobileMenu: false,
4041
categories: {
4142
api: {
4243
icon: 'mdi-flask-outline',

0 commit comments

Comments
 (0)