Skip to content

Commit dea6cfa

Browse files
authoredJan 31, 2023
fix(theme): infer collapsible from collapsed (#1865)
BREAKING CHANGE: `collapsible` is dropped from sidebar, use `collapsed` instead
1 parent 8f7d35f commit dea6cfa

File tree

7 files changed

+18
-34
lines changed

7 files changed

+18
-34
lines changed
 

‎__tests__/e2e/.vitepress/config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const sidebar: DefaultTheme.Config['sidebar'] = {
44
'/': [
55
{
66
text: 'Frontmatter',
7-
collapsible: true,
7+
collapsed: false,
88
items: [
99
{
1010
text: 'Multiple Levels Outline',

‎docs/.vitepress/config.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ function sidebarGuide() {
7979
return [
8080
{
8181
text: 'Introduction',
82-
collapsible: true,
82+
collapsed: false,
8383
items: [
8484
{ text: 'What is VitePress?', link: '/guide/what-is-vitepress' },
8585
{ text: 'Getting Started', link: '/guide/getting-started' },
@@ -91,7 +91,7 @@ function sidebarGuide() {
9191
},
9292
{
9393
text: 'Writing',
94-
collapsible: true,
94+
collapsed: false,
9595
items: [
9696
{ text: 'Markdown', link: '/guide/markdown' },
9797
{ text: 'Asset Handling', link: '/guide/asset-handling' },
@@ -102,7 +102,7 @@ function sidebarGuide() {
102102
},
103103
{
104104
text: 'Theme',
105-
collapsible: true,
105+
collapsed: false,
106106
items: [
107107
{ text: 'Introduction', link: '/guide/theme-introduction' },
108108
{ text: 'Nav', link: '/guide/theme-nav' },
@@ -121,7 +121,7 @@ function sidebarGuide() {
121121
},
122122
{
123123
text: 'Migrations',
124-
collapsible: true,
124+
collapsed: false,
125125
items: [
126126
{
127127
text: 'Migration from VuePress',

‎docs/config/theme-configs.md

+3-8
Original file line numberDiff line numberDiff line change
@@ -147,16 +147,11 @@ export type SidebarItem = {
147147
items?: SidebarItem[]
148148

149149
/**
150-
* If `true`, toggle button is shown.
150+
* If not specified, group is not collapsible.
151151
*
152-
* @default false
153-
*/
154-
collapsible?: boolean
155-
156-
/**
157-
* If `true`, collapsible group is collapsed by default.
152+
* If `true`, group is collapsible and collapsed by default
158153
*
159-
* @default false
154+
* If `false`, group is collapsible but expanded by default
160155
*/
161156
collapsed?: boolean
162157
}

‎docs/guide/theme-sidebar.md

+2-8
Original file line numberDiff line numberDiff line change
@@ -149,20 +149,15 @@ export default {
149149

150150
## Collapsible Sidebar Groups
151151

152-
By adding `collapsible` option to the sidebar group, it shows a toggle button to hide/show each section.
152+
By adding `collapsed` option to the sidebar group, it shows a toggle button to hide/show each section.
153153

154154
```js
155155
export default {
156156
themeConfig: {
157157
sidebar: [
158158
{
159159
text: 'Section Title A',
160-
collapsible: true,
161-
items: [...]
162-
},
163-
{
164-
text: 'Section Title B',
165-
collapsible: true,
160+
collapsed: false,
166161
items: [...]
167162
}
168163
]
@@ -178,7 +173,6 @@ export default {
178173
sidebar: [
179174
{
180175
text: 'Section Title A',
181-
collapsible: true,
182176
collapsed: true,
183177
items: [...]
184178
}

‎src/client/theme-default/components/VPSidebarItem.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ function onCaretClick() {
5959
<component :is="textTag" class="text" v-html="item.text" />
6060
</VPLink>
6161

62-
<div class="caret" role="button" @click="onCaretClick">
63-
<VPIconChevronRight v-if="item.collapsible" class="caret-icon" />
62+
<div v-if="item.collapsed != null" class="caret" role="button" @click="onCaretClick">
63+
<VPIconChevronRight class="caret-icon" />
6464
</div>
6565
</div>
6666

‎src/client/theme-default/composables/sidebar.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ export function useSidebarControl(
126126
const collapsed = ref(false)
127127

128128
const collapsible = computed(() => {
129-
return !!item.value.collapsible
129+
return item.value.collapsed != null
130130
})
131131

132132
const isLink = computed(() => {
@@ -152,15 +152,15 @@ export function useSidebarControl(
152152
})
153153

154154
watchEffect(() => {
155-
collapsed.value = !!(item.value.collapsible && item.value.collapsed)
155+
collapsed.value = !!(collapsible.value && item.value.collapsed)
156156
})
157157

158158
watchEffect(() => {
159159
;(isActiveLink.value || hasActiveLink.value) && (collapsed.value = false)
160160
})
161161

162162
function toggle() {
163-
if (item.value.collapsible) {
163+
if (collapsible.value) {
164164
collapsed.value = !collapsed.value
165165
}
166166
}

‎types/default-theme.d.ts

+3-8
Original file line numberDiff line numberDiff line change
@@ -183,16 +183,11 @@ export namespace DefaultTheme {
183183
items?: SidebarItem[]
184184

185185
/**
186-
* If `true`, toggle button is shown.
186+
* If not specified, group is not collapsible.
187187
*
188-
* @default false
189-
*/
190-
collapsible?: boolean
191-
192-
/**
193-
* If `true`, collapsible group is collapsed by default.
188+
* If `true`, group is collapsible and collapsed by default
194189
*
195-
* @default false
190+
* If `false`, group is collapsible but expanded by default
196191
*/
197192
collapsed?: boolean
198193
}

0 commit comments

Comments
 (0)
Please sign in to comment.