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({
|
export const inertControls = reactive({
|
||||||
isSidebarOpen: false,
|
|
||||||
isScreenOpen: false,
|
isScreenOpen: false,
|
||||||
|
isSidebarOpen: false,
|
||||||
isSidebarVisible: false
|
isSidebarVisible: false
|
||||||
})
|
})
|
||||||
|
|
||||||
export const inertState = reactive({
|
export function useInert() {
|
||||||
inertSkipLink: computed(
|
return clientComputed(() => ({
|
||||||
() => inertControls.isSidebarOpen || inertControls.isScreenOpen
|
skipLink: inertControls.isSidebarOpen || inertControls.isScreenOpen,
|
||||||
),
|
nav: inertControls.isSidebarOpen,
|
||||||
inertNav: computed(() => inertControls.isSidebarOpen),
|
localNav: inertControls.isSidebarOpen || inertControls.isScreenOpen,
|
||||||
inertLocalNav: computed(
|
sidebar: !inertControls.isSidebarVisible || inertControls.isScreenOpen,
|
||||||
() => inertControls.isSidebarOpen || inertControls.isScreenOpen
|
content: inertControls.isSidebarOpen || inertControls.isScreenOpen,
|
||||||
),
|
footer: inertControls.isSidebarOpen || inertControls.isScreenOpen
|
||||||
inertSidebar: computed(
|
}))
|
||||||
() => !inertControls.isSidebarVisible || inertControls.isScreenOpen
|
}
|
||||||
),
|
|
||||||
inertContent: computed(
|
|
||||||
() => inertControls.isSidebarOpen || inertControls.isScreenOpen
|
|
||||||
),
|
|
||||||
inertFooter: computed(
|
|
||||||
() => 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