From 197d9db8e6f638247460b8c7a2dadbedafd80f66 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Thu, 29 May 2025 12:39:37 -0400 Subject: [PATCH 1/6] implement SkTransitionGroup to dynamically switch between TransitionGroup or a native element based on the user's animation preference --- .../src/components/SkTransitionGroup.vue | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 packages/frontend/src/components/SkTransitionGroup.vue diff --git a/packages/frontend/src/components/SkTransitionGroup.vue b/packages/frontend/src/components/SkTransitionGroup.vue new file mode 100644 index 0000000000..1c07186501 --- /dev/null +++ b/packages/frontend/src/components/SkTransitionGroup.vue @@ -0,0 +1,43 @@ + + + + + From 7a003dec73b79cbfed2ca4586f7a77652b55371d Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Thu, 29 May 2025 12:41:36 -0400 Subject: [PATCH 2/6] use SkTransitionGroup for all dynamic TransitionGroup components --- packages/frontend/src/components/MkDateSeparatedList.vue | 5 ++--- packages/frontend/src/components/MkNotifications.vue | 7 ++++--- packages/frontend/src/components/MkReactionsViewer.vue | 6 +++--- packages/frontend/src/components/MkTimeline.vue | 6 +++--- packages/frontend/src/ui/_common_/common.vue | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/frontend/src/components/MkDateSeparatedList.vue b/packages/frontend/src/components/MkDateSeparatedList.vue index 63e6b74154..8cf4e5fa2d 100644 --- a/packages/frontend/src/components/MkDateSeparatedList.vue +++ b/packages/frontend/src/components/MkDateSeparatedList.vue @@ -16,6 +16,7 @@ import { instance } from '@/instance.js'; import { prefer } from '@/preferences.js'; import { getDateText } from '@/utility/timeline-date-separate.js'; import { $i } from '@/i.js'; +import SkTransitionGroup from '@/components/SkTransitionGroup.vue'; export default defineComponent({ props: { @@ -146,14 +147,12 @@ export default defineComponent({ [$style['direction-up']]: props.direction === 'up', }; - return () => prefer.s.animation ? h(TransitionGroup, { + return () => h(SkTransitionGroup, { class: classes, name: 'list', tag: 'div', onBeforeLeave, onLeaveCancelled, - }, { default: renderChildren }) : h('div', { - class: classes, }, { default: renderChildren }); }, }); diff --git a/packages/frontend/src/components/MkNotifications.vue b/packages/frontend/src/components/MkNotifications.vue index 54edf771ed..46e98462dc 100644 --- a/packages/frontend/src/components/MkNotifications.vue +++ b/packages/frontend/src/components/MkNotifications.vue @@ -14,8 +14,8 @@ SPDX-License-Identifier: AGPL-3.0-only @@ -45,6 +45,7 @@ import { i18n } from '@/i18n.js'; import { infoImageUrl } from '@/instance.js'; import MkPullToRefresh from '@/components/MkPullToRefresh.vue'; import { prefer } from '@/preferences.js'; +import SkTransitionGroup from '@/components/SkTransitionGroup.vue'; const props = defineProps<{ excludeTypes?: typeof notificationTypes[number][]; diff --git a/packages/frontend/src/components/MkReactionsViewer.vue b/packages/frontend/src/components/MkReactionsViewer.vue index 945640ab41..30264f5e5b 100644 --- a/packages/frontend/src/components/MkReactionsViewer.vue +++ b/packages/frontend/src/components/MkReactionsViewer.vue @@ -4,8 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only -->