diff --git a/packages/frontend/src/components/MkModal.vue b/packages/frontend/src/components/MkModal.vue index 660d5a26be..8be70373dc 100644 --- a/packages/frontend/src/components/MkModal.vue +++ b/packages/frontend/src/components/MkModal.vue @@ -30,7 +30,7 @@ SPDX-License-Identifier: AGPL-3.0-only [$style.transition_modal_leaveTo]: transitionName === 'modal', [$style.transition_send_leaveTo]: transitionName === 'send', })" - :duration="transitionDuration" appear @afterLeave="onClosed" @enter="emit('opening')" @afterEnter="onOpened" + :duration="transitionDuration" appear @afterLeave="onClosed" @enter="onOpening" @afterEnter="onOpened" >
@@ -97,6 +97,14 @@ const emit = defineEmits<{ provide(DI.inModal, true); +const isTransitioning = ref((() => { + if (!prefer.s.animation) return false; + if (props.manualShowing === false) return false; + return true; +})()); + +provide(DI.modalTransitioning, isTransitioning); + const maxHeight = ref(); const fixed = ref(false); const transformOrigin = ref('center'); @@ -285,8 +293,14 @@ const align = () => { content.value.style.top = top + 'px'; }; +const onOpening = () => { + emit('opening'); + isTransitioning.value = true; +}; + const onOpened = () => { emit('opened'); + isTransitioning.value = false; // contentの子要素にアクセスするためレンダリングの完了を待つ必要がある(nextTickが必要) nextTick(() => { diff --git a/packages/frontend/src/components/MkTabs.vue b/packages/frontend/src/components/MkTabs.vue index 57fb6548ba..1d45a401c3 100644 --- a/packages/frontend/src/components/MkTabs.vue +++ b/packages/frontend/src/components/MkTabs.vue @@ -7,9 +7,16 @@ SPDX-License-Identifier: AGPL-3.0-only