浏览代码

Make x-trap more friendly with transitions

Caleb Porzio 1 年之前
父节点
当前提交
61714ffe64
共有 1 个文件被更改,包括 8 次插入5 次删除
  1. 8 5
      packages/focus/src/index.js

+ 8 - 5
packages/focus/src/index.js

@@ -134,12 +134,15 @@ export default function (Alpine) {
 
 
                 // Start trapping.
                 // Start trapping.
                 if (value && ! oldValue) {
                 if (value && ! oldValue) {
-                    setTimeout(() => {
-                        if (modifiers.includes('inert')) undoInert = setInert(el)
-                        if (modifiers.includes('noscroll')) undoDisableScrolling = disableScrolling()
+                    if (modifiers.includes('noscroll')) undoDisableScrolling = disableScrolling()
+                    if (modifiers.includes('inert')) undoInert = setInert(el)
 
 
-                        trap.activate()
-                    });
+                    // Activate the trap after two ticks. (Needed to play nice with transitions...)
+                    setTimeout(() => {
+                        setTimeout(() => {
+                            trap.activate()
+                        })
+                    })
                 }
                 }
 
 
                 // Stop trapping.
                 // Stop trapping.