From 8fe75604df27b6e4758e0aa02cf6076e14933f6c Mon Sep 17 00:00:00 2001 From: Martin Trapp <94928215+martrapp@users.noreply.github.com> Date: Wed, 14 Aug 2024 15:23:33 +0200 Subject: [PATCH 1/8] extend virtual module astro:transitions/client to exports swapFunctions --- .changeset/new-monkeys-sit.md | 5 +++++ packages/astro/client.d.ts | 2 ++ packages/astro/src/transitions/swap-functions.ts | 9 +++++++++ .../astro/src/transitions/vite-plugin-transitions.ts | 1 + .../src/virtual-modules/transitions-swap-functions.ts | 1 + 5 files changed, 18 insertions(+) create mode 100644 .changeset/new-monkeys-sit.md create mode 100644 packages/astro/src/virtual-modules/transitions-swap-functions.ts diff --git a/.changeset/new-monkeys-sit.md b/.changeset/new-monkeys-sit.md new file mode 100644 index 000000000000..911ebfaa29ea --- /dev/null +++ b/.changeset/new-monkeys-sit.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Extends `astro:transitions/client` with `swapFunctions`, which provides building blocks for custom swap functions. diff --git a/packages/astro/client.d.ts b/packages/astro/client.d.ts index ed5c1b894d28..11bb35cd783a 100644 --- a/packages/astro/client.d.ts +++ b/packages/astro/client.d.ts @@ -150,6 +150,8 @@ declare module 'astro:transitions/client' { import('./dist/virtual-modules/transitions-events.js').TransitionBeforeSwapEvent; export const isTransitionBeforePreparationEvent: EventModule['isTransitionBeforePreparationEvent']; export const isTransitionBeforeSwapEvent: EventModule['isTransitionBeforeSwapEvent']; + type TransitionSwapFunctionModule = typeof import('./dist/virtual-modules/transitions-swap-functions.js'); + export const swapFunctions: TransitionSwapFunctionModule['swapFunctions'] } declare module 'astro:prefetch' { diff --git a/packages/astro/src/transitions/swap-functions.ts b/packages/astro/src/transitions/swap-functions.ts index 4c8db82eef90..e69842fa1a3f 100644 --- a/packages/astro/src/transitions/swap-functions.ts +++ b/packages/astro/src/transitions/swap-functions.ts @@ -133,6 +133,15 @@ const shouldCopyProps = (el: HTMLElement): boolean => { return persistProps == null || persistProps === 'false'; }; +export const swapFunctions = { + deselectScripts, + swapRootAttributes, + swapHeadElements, + swapBodyElement, + saveFocus, + restoreFocus, +}; + export const swap = (doc: Document) => { deselectScripts(doc); swapRootAttributes(doc); diff --git a/packages/astro/src/transitions/vite-plugin-transitions.ts b/packages/astro/src/transitions/vite-plugin-transitions.ts index d88c96f8919f..547ef3f38af0 100644 --- a/packages/astro/src/transitions/vite-plugin-transitions.ts +++ b/packages/astro/src/transitions/vite-plugin-transitions.ts @@ -42,6 +42,7 @@ export default function astroTransitions({ settings }: { settings: AstroSettings TRANSITION_BEFORE_SWAP, isTransitionBeforeSwapEvent, TransitionBeforeSwapEvent, TRANSITION_AFTER_SWAP, TRANSITION_PAGE_LOAD } from "astro/virtual-modules/transitions-events.js"; + export { swapFunctions } from "astro/virtual-modules/transitions-swap-functions.js"; `; } }, diff --git a/packages/astro/src/virtual-modules/transitions-swap-functions.ts b/packages/astro/src/virtual-modules/transitions-swap-functions.ts new file mode 100644 index 000000000000..5947533e3d02 --- /dev/null +++ b/packages/astro/src/virtual-modules/transitions-swap-functions.ts @@ -0,0 +1 @@ +export * from '../transitions/swap-functions.js'; From b9c5c8e4264bb382db03b49bc732066d0ad473d8 Mon Sep 17 00:00:00 2001 From: Martin Trapp <94928215+martrapp@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:53:20 +0200 Subject: [PATCH 2/8] use virtual module in e2e tests --- .../src/pages/keep-style-one.astro | 12 ++++++------ .../src/pages/keep-theme-one.astro | 12 ++++++------ .../src/pages/replace-main-one.astro | 14 +++++++------- packages/astro/e2e/view-transitions.test.js | 2 +- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/astro/e2e/fixtures/view-transitions/src/pages/keep-style-one.astro b/packages/astro/e2e/fixtures/view-transitions/src/pages/keep-style-one.astro index 413a404d76fe..f71898d8153f 100644 --- a/packages/astro/e2e/fixtures/view-transitions/src/pages/keep-style-one.astro +++ b/packages/astro/e2e/fixtures/view-transitions/src/pages/keep-style-one.astro @@ -7,22 +7,22 @@ import Layout from '../components/Layout.astro'; diff --git a/packages/astro/e2e/fixtures/view-transitions/src/pages/keep-theme-one.astro b/packages/astro/e2e/fixtures/view-transitions/src/pages/keep-theme-one.astro index a4c942d587f2..18ae0221fc65 100644 --- a/packages/astro/e2e/fixtures/view-transitions/src/pages/keep-theme-one.astro +++ b/packages/astro/e2e/fixtures/view-transitions/src/pages/keep-theme-one.astro @@ -6,18 +6,18 @@ import Layout from '../components/Layout.astro'; go to next page