diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2023-05-31 16:00:55 +0000 |
|---|---|---|
| committer | tamaina <tamaina@hotmail.co.jp> | 2023-05-31 16:04:01 +0000 |
| commit | 1cc616b86cfd2293f20393e85429e31596ea2049 (patch) | |
| tree | 74d16643000ca9f7e8eb7d03f1ae19721da87606 /packages/frontend/src/components/MkContainer.vue | |
| parent | tweak ui (diff) | |
| download | sharkey-1cc616b86cfd2293f20393e85429e31596ea2049.tar.gz sharkey-1cc616b86cfd2293f20393e85429e31596ea2049.tar.bz2 sharkey-1cc616b86cfd2293f20393e85429e31596ea2049.zip | |
fix(frontend): disconnect ResizeObserver
Diffstat (limited to 'packages/frontend/src/components/MkContainer.vue')
| -rw-r--r-- | packages/frontend/src/components/MkContainer.vue | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/packages/frontend/src/components/MkContainer.vue b/packages/frontend/src/components/MkContainer.vue index d2d0fa3e4b..f7cc697d67 100644 --- a/packages/frontend/src/components/MkContainer.vue +++ b/packages/frontend/src/components/MkContainer.vue @@ -34,7 +34,7 @@ </template> <script lang="ts" setup> -import { onMounted, ref, shallowRef, watch } from 'vue'; +import { onMounted, onUnmounted, ref, shallowRef, watch } from 'vue'; import { defaultStore } from '@/store'; import { i18n } from '@/i18n'; @@ -83,13 +83,19 @@ function afterLeave(el) { const calcOmit = () => { if (omitted.value || ignoreOmit.value || props.maxHeight == null) return; + if (!contentEl.value) return; const height = contentEl.value.offsetHeight; omitted.value = height > props.maxHeight; }; +const omitObserver = new ResizeObserver((entries, observer) => { + calcOmit(); +}); + onMounted(() => { watch(showBody, v => { - const headerHeight = props.showHeader ? headerEl.value.offsetHeight : 0; + if (!rootEl.value) return; + const headerHeight = props.showHeader ? headerEl.value?.offsetHeight ?? 0 : 0; rootEl.value.style.minHeight = `${headerHeight}px`; if (v) { rootEl.value.style.flexBasis = 'auto'; @@ -100,13 +106,15 @@ onMounted(() => { immediate: true, }); - rootEl.value.style.setProperty('--maxHeight', props.maxHeight + 'px'); + if (rootEl.value) rootEl.value.style.setProperty('--maxHeight', props.maxHeight + 'px'); calcOmit(); - new ResizeObserver((entries, observer) => { - calcOmit(); - }).observe(contentEl.value); + if (contentEl.value) omitObserver.observe(contentEl.value); +}); + +onUnmounted(() => { + omitObserver.disconnect(); }); </script> |