mirror of https://github.com/vuejs/vitepress
parent
2a38b78974
commit
b86f82eeac
@ -1,26 +1,19 @@
|
||||
import { computed, reactive } from 'vue'
|
||||
import { reactive } from 'vue'
|
||||
import { clientComputed } from '../support/reactivity'
|
||||
|
||||
export const inertControls = reactive({
|
||||
isSidebarOpen: false,
|
||||
isScreenOpen: false,
|
||||
isSidebarOpen: false,
|
||||
isSidebarVisible: false
|
||||
})
|
||||
|
||||
export const inertState = reactive({
|
||||
inertSkipLink: computed(
|
||||
() => inertControls.isSidebarOpen || inertControls.isScreenOpen
|
||||
),
|
||||
inertNav: computed(() => inertControls.isSidebarOpen),
|
||||
inertLocalNav: computed(
|
||||
() => inertControls.isSidebarOpen || inertControls.isScreenOpen
|
||||
),
|
||||
inertSidebar: computed(
|
||||
() => !inertControls.isSidebarVisible || inertControls.isScreenOpen
|
||||
),
|
||||
inertContent: computed(
|
||||
() => inertControls.isSidebarOpen || inertControls.isScreenOpen
|
||||
),
|
||||
inertFooter: computed(
|
||||
() => inertControls.isSidebarOpen || inertControls.isScreenOpen
|
||||
)
|
||||
})
|
||||
export function useInert() {
|
||||
return clientComputed(() => ({
|
||||
skipLink: inertControls.isSidebarOpen || inertControls.isScreenOpen,
|
||||
nav: inertControls.isSidebarOpen,
|
||||
localNav: inertControls.isSidebarOpen || inertControls.isScreenOpen,
|
||||
sidebar: !inertControls.isSidebarVisible || inertControls.isScreenOpen,
|
||||
content: inertControls.isSidebarOpen || inertControls.isScreenOpen,
|
||||
footer: inertControls.isSidebarOpen || inertControls.isScreenOpen
|
||||
}))
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
import {
|
||||
onMounted,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
toValue,
|
||||
watchEffect,
|
||||
type ShallowRef
|
||||
} from 'vue'
|
||||
|
||||
export function clientComputed<T extends {}>(
|
||||
fn: () => T,
|
||||
defaultValue: any = {},
|
||||
options?: { flush?: 'pre' | 'post' | 'sync' }
|
||||
): Readonly<ShallowRef<T>> {
|
||||
const data = shallowRef<T>(toValue(defaultValue))
|
||||
|
||||
onMounted(() => {
|
||||
watchEffect(() => {
|
||||
data.value = toValue(fn)
|
||||
}, options)
|
||||
})
|
||||
|
||||
return shallowReadonly(data)
|
||||
}
|
Loading…
Reference in new issue