use simpler onClickOutside implementation

pull/3671/head
Divyansh Singh 1 year ago
parent 25495d900a
commit 9ae100a635

@ -1,11 +1,10 @@
<script setup lang="ts"> <script setup lang="ts">
import { onClickOutside, onKeyStroke } from '@vueuse/core' import { onKeyStroke } from '@vueuse/core'
import { onContentUpdated } from 'vitepress' import { onContentUpdated } from 'vitepress'
import { nextTick, ref } from 'vue' import { nextTick, ref, watch } from 'vue'
import { useData } from '../composables/data' import { useData } from '../composables/data'
import { resolveTitle, type MenuItem } from '../composables/outline' import { resolveTitle, type MenuItem } from '../composables/outline'
import VPDocOutlineItem from './VPDocOutlineItem.vue' import VPDocOutlineItem from './VPDocOutlineItem.vue'
import { watch } from 'vue'
const props = defineProps<{ const props = defineProps<{
headers: MenuItem[] headers: MenuItem[]
@ -18,12 +17,18 @@ const vh = ref(0)
const main = ref<HTMLDivElement>() const main = ref<HTMLDivElement>()
const items = ref<HTMLDivElement>() const items = ref<HTMLDivElement>()
watch(open, () => { function closeOnClickOutside(e: Event) {
if (open.value){ if (!main.value?.contains(e.target as Node)) {
onClickOutside(main, () => { open.value = false
open.value = false }
}) }
watch(open, (value) => {
if (value) {
document.addEventListener('click', closeOnClickOutside)
return
} }
document.removeEventListener('click', closeOnClickOutside)
}) })
onKeyStroke('Escape', () => { onKeyStroke('Escape', () => {

Loading…
Cancel
Save