summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkContainer.vue
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2023-05-31 16:00:55 +0000
committertamaina <tamaina@hotmail.co.jp>2023-05-31 16:04:01 +0000
commit1cc616b86cfd2293f20393e85429e31596ea2049 (patch)
tree74d16643000ca9f7e8eb7d03f1ae19721da87606 /packages/frontend/src/components/MkContainer.vue
parenttweak ui (diff)
downloadsharkey-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.vue20
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>