From 3d1741e7032bbd68226a11ea9df21f7d25dc01de Mon Sep 17 00:00:00 2001 From: Kevin Ruscoe Date: Fri, 29 May 2026 17:31:54 +0100 Subject: [PATCH 1/2] feat: add a "parent" modifier that mounts the Observer to the parent, rather than the default of window. --- packages/intersect/src/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/intersect/src/index.js b/packages/intersect/src/index.js index f955c4fce..b1f845cfd 100644 --- a/packages/intersect/src/index.js +++ b/packages/intersect/src/index.js @@ -5,6 +5,7 @@ export default function (Alpine) { let options = { rootMargin: getRootMargin(modifiers), threshold: getThreshold(modifiers), + root: modifiers.includes('parent') ? el.parentElement : null } let observer = new IntersectionObserver(entries => { From 3530bf12578ffdffb4a43dcde04c1db71ec48b26 Mon Sep 17 00:00:00 2001 From: Kevin Ruscoe Date: Fri, 29 May 2026 17:37:21 +0100 Subject: [PATCH 2/2] feat: add docs for .parent modifier on x-intersect --- packages/docs/src/en/plugins/intersect.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/docs/src/en/plugins/intersect.md b/packages/docs/src/en/plugins/intersect.md index 3176e549f..7f3dcc182 100644 --- a/packages/docs/src/en/plugins/intersect.md +++ b/packages/docs/src/en/plugins/intersect.md @@ -170,3 +170,12 @@ get a pixel value. ```alpine
...
// Mark as visible when element is more than 100 pixels into the viewport. ``` + + +### .parent + +Allows for the underlying `IntersectionObserver` to use the viewport of the parent element, rather than the default, which is the browser. + +```alpine +
...
// Mark as shown when element is moves inside it's parents viewport. +```