@onekeyfe/react-native-native-overlay 3.0.162-alpha.270 → 3.0.162-alpha.272

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,6 +60,10 @@ android {
60
60
  ]
61
61
  }
62
62
  }
63
+
64
+ testOptions {
65
+ unitTests.includeAndroidResources = true
66
+ }
63
67
  }
64
68
 
65
69
  repositories {
@@ -73,6 +77,8 @@ dependencies {
73
77
  implementation "com.facebook.react:react-android"
74
78
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
75
79
  implementation "com.google.android.material:material:1.14.0-alpha05"
80
+ testImplementation "junit:junit:4.13.2"
81
+ testImplementation "org.robolectric:robolectric:4.17"
76
82
  }
77
83
 
78
84
  react {
@@ -0,0 +1,37 @@
1
+ package com.onekey.nativeoverlay
2
+
3
+ import android.view.View
4
+ import android.view.ViewGroup
5
+
6
+ /** Restores the caller's flags when a blocking overlay no longer covers it. */
7
+ internal class NativeOverlayAccessibilityIsolation {
8
+ private val hidden = mutableMapOf<View, Int>()
9
+
10
+ fun update(
11
+ root: ViewGroup,
12
+ activeContainer: View?,
13
+ entriesBelow: List<View>,
14
+ globalHost: View,
15
+ ) {
16
+ val below = mutableSetOf<View>()
17
+ if (activeContainer != null) {
18
+ var node: View = activeContainer
19
+ while (node !== root && node.parent is ViewGroup) {
20
+ val parent = node.parent as ViewGroup
21
+ for (index in 0 until parent.childCount) {
22
+ val sibling = parent.getChildAt(index)
23
+ if (sibling !== node && sibling !== globalHost) below.add(sibling)
24
+ }
25
+ node = parent
26
+ }
27
+ if (node === root) below.addAll(entriesBelow) else below.clear()
28
+ }
29
+ hidden.keys.filter { it !in below }.forEach { view ->
30
+ view.importantForAccessibility = hidden.remove(view) ?: View.IMPORTANT_FOR_ACCESSIBILITY_AUTO
31
+ }
32
+ below.forEach { view ->
33
+ if (view !in hidden) hidden[view] = view.importantForAccessibility
34
+ view.importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
35
+ }
36
+ }
37
+ }
@@ -2,7 +2,6 @@ package com.onekey.nativeoverlay
2
2
 
3
3
  import android.app.Activity
4
4
  import android.view.KeyEvent
5
- import android.view.View
6
5
  import android.view.ViewGroup
7
6
  import android.view.Window
8
7
  import android.widget.FrameLayout
@@ -54,7 +53,7 @@ internal class NativeOverlayHost private constructor(
54
53
  }
55
54
  }
56
55
  }
57
- private val hiddenForAccessibility = mutableMapOf<View, Int>()
56
+ private val accessibilityIsolation = NativeOverlayAccessibilityIsolation()
58
57
 
59
58
  init {
60
59
  clipChildren = false
@@ -136,33 +135,28 @@ internal class NativeOverlayHost private constructor(
136
135
  /** Global overlays win; otherwise the topmost visible page overlay. */
137
136
  private fun topBlockingEntry(): NativeOverlayEntryRootView? =
138
137
  orderedEntries().lastOrNull { it.blocking && it.isShownForInput }
139
- ?: NativeOverlayPageHostView.allHosts()
140
- .filter { it.isAttachedToWindow && it.isShown }
138
+ ?: shownPageHosts()
141
139
  .flatMap { it.shownEntries() }
142
140
  .lastOrNull { it.blocking }
143
141
 
142
+ private fun shownPageHosts(): List<NativeOverlayPageHostView> =
143
+ NativeOverlayPageHostView.allHosts().filter {
144
+ it.isAttachedToWindow && it.isShown && it.rootView === activity.window.decorView
145
+ }
146
+
144
147
  /** TalkBack only reads the topmost blocking overlay and what is above it. */
145
148
  private fun updateAccessibility() {
146
149
  val entries = orderedEntries()
147
150
  val topIndex = entries.indexOfLast { it.blocking && it.isShownForInput }
148
- val content = parent as? ViewGroup
149
- val below = mutableListOf<View>()
151
+ val content = activity.findViewById<ViewGroup>(android.R.id.content) ?: return
150
152
  if (topIndex >= 0) {
151
- content?.let { group ->
152
- (0 until group.childCount).map(group::getChildAt).filter { it !== this }.forEach(below::add)
153
- }
154
- below.addAll(entries.subList(0, topIndex))
155
- }
156
- val restore = hiddenForAccessibility.keys.filter { it !in below }
157
- restore.forEach { view ->
158
- view.importantForAccessibility = hiddenForAccessibility.remove(view) ?: IMPORTANT_FOR_ACCESSIBILITY_AUTO
159
- }
160
- below.forEach { view ->
161
- if (view !in hiddenForAccessibility) {
162
- hiddenForAccessibility[view] = view.importantForAccessibility
163
- view.importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
164
- }
153
+ accessibilityIsolation.update(content, this, entries.take(topIndex), this)
154
+ return
165
155
  }
156
+ val pageEntry = shownPageHosts().flatMap { it.shownEntries() }.lastOrNull { it.blocking }
157
+ val pageHost = pageEntry?.parent as? NativeOverlayPageHostView
158
+ val below = pageHost?.shownEntries()?.takeWhile { it !== pageEntry }.orEmpty()
159
+ accessibilityIsolation.update(content, pageHost, below, this)
166
160
  }
167
161
 
168
162
  companion object {
@@ -3,6 +3,7 @@ package com.onekey.nativeoverlay
3
3
  import android.annotation.SuppressLint
4
4
  import android.content.Context
5
5
  import android.view.ViewGroup
6
+ import com.facebook.react.bridge.ReactContext
6
7
  import com.facebook.react.uimanager.PointerEvents
7
8
  import com.facebook.react.uimanager.ReactPointerEventsView
8
9
  import java.lang.ref.WeakReference
@@ -33,6 +34,7 @@ class NativeOverlayPageHostView(context: Context) : ViewGroup(context), ReactPoi
33
34
  if (owners == suspendedOwners) return
34
35
  suspendedOwners = owners
35
36
  entries().forEach(::applySuspension)
37
+ onEntriesChanged()
36
38
  }
37
39
 
38
40
  internal fun attach(entry: NativeOverlayEntryRootView) {
@@ -44,10 +46,12 @@ class NativeOverlayPageHostView(context: Context) : ViewGroup(context), ReactPoi
44
46
  }
45
47
  layoutEntries()
46
48
  applySuspension(entry)
49
+ onEntriesChanged()
47
50
  }
48
51
 
49
52
  internal fun detach(entry: NativeOverlayEntryRootView) {
50
53
  removeView(entry)
54
+ onEntriesChanged()
51
55
  }
52
56
 
53
57
  /** Visible, input-ready entries in bottom-to-top order. */
@@ -56,6 +60,23 @@ class NativeOverlayPageHostView(context: Context) : ViewGroup(context), ReactPoi
56
60
 
57
61
  fun invalidateHost() {
58
62
  if (hostKey.isNotEmpty() && registry[hostKey]?.get() === this) registry.remove(hostKey)
63
+ onEntriesChanged()
64
+ }
65
+
66
+ override fun onAttachedToWindow() {
67
+ super.onAttachedToWindow()
68
+ onEntriesChanged()
69
+ }
70
+
71
+ override fun onDetachedFromWindow() {
72
+ super.onDetachedFromWindow()
73
+ onEntriesChanged()
74
+ }
75
+
76
+ private fun onEntriesChanged() {
77
+ (context as? ReactContext)?.currentActivity?.let {
78
+ NativeOverlayHost.of(it).onEntriesChanged()
79
+ }
59
80
  }
60
81
 
61
82
  private var layoutScheduled = false
@@ -135,6 +135,7 @@ class NativeOverlayView(
135
135
  config = OverlayAnimationConfig.parse(animationConfig)
136
136
  }
137
137
  entry?.let(::applyEntryConfiguration)
138
+ notifyHostEntriesChanged()
138
139
  if (visible) {
139
140
  cycleOpen = true
140
141
  if (phase == Phase.HIDDEN || phase == Phase.EXITING) present()
@@ -200,7 +201,7 @@ class NativeOverlayView(
200
201
  cancelAnimators()
201
202
  phase = Phase.ENTERING
202
203
  target.isShownForInput = true
203
- host?.onEntriesChanged()
204
+ notifyHostEntriesChanged()
204
205
  if (blocking) {
205
206
  target.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED)
206
207
  }
@@ -226,7 +227,7 @@ class NativeOverlayView(
226
227
  cancelAnimators()
227
228
  phase = Phase.EXITING
228
229
  target.isShownForInput = false
229
- host?.onEntriesChanged()
230
+ notifyHostEntriesChanged()
230
231
  val transition = config.exit.reduceMotionAdjusted(isReduceMotionEnabled())
231
232
  if (transition.kind == "none") return finishDismiss("programmatic")
232
233
  animate(target, hiddenState(target, transition), 0f, transition.motion) {
@@ -389,6 +390,10 @@ class NativeOverlayView(
389
390
  }
390
391
  }
391
392
 
393
+ private fun notifyHostEntriesChanged() {
394
+ reactContext.currentActivity?.let { NativeOverlayHost.of(it).onEntriesChanged() }
395
+ }
396
+
392
397
  /**
393
398
  * While hidden, keep the React child inside this invisible view. Fabric only
394
399
  * reports onLayout for attached views, and fitted sheets size themselves
@@ -0,0 +1,112 @@
1
+ package com.onekey.nativeoverlay
2
+
3
+ import android.view.View
4
+ import android.widget.FrameLayout
5
+ import org.junit.Assert.assertEquals
6
+ import org.junit.Test
7
+ import org.junit.runner.RunWith
8
+ import org.robolectric.RobolectricTestRunner
9
+ import org.robolectric.RuntimeEnvironment
10
+ import org.robolectric.annotation.Config
11
+
12
+ @RunWith(RobolectricTestRunner::class)
13
+ @Config(sdk = [34])
14
+ class NativeOverlayAccessibilityIsolationTest {
15
+ private val context get() = RuntimeEnvironment.getApplication()
16
+
17
+ private class Tree(context: android.content.Context) {
18
+ val root = FrameLayout(context)
19
+ val reactRoot = FrameLayout(context)
20
+ val card = FrameLayout(context)
21
+ val content = View(context).apply { importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_YES }
22
+ val chrome = View(context)
23
+ val pageHost = FrameLayout(context)
24
+ val lower = View(context)
25
+ val blocker = View(context)
26
+ val above = View(context)
27
+ val globalHost = FrameLayout(context)
28
+
29
+ init {
30
+ root.addView(reactRoot)
31
+ root.addView(globalHost)
32
+ reactRoot.addView(card)
33
+ reactRoot.addView(chrome)
34
+ card.addView(content)
35
+ card.addView(pageHost)
36
+ pageHost.addView(lower)
37
+ pageHost.addView(blocker)
38
+ pageHost.addView(above)
39
+ }
40
+ }
41
+
42
+ @Test
43
+ fun pageBlockerHidesPageAndNavigationWithoutHidingTheHost() {
44
+ val tree = Tree(context)
45
+ val isolation = NativeOverlayAccessibilityIsolation()
46
+ isolation.update(tree.root, tree.pageHost, listOf(tree.lower), tree.globalHost)
47
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, tree.content.importantForAccessibility)
48
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, tree.chrome.importantForAccessibility)
49
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, tree.pageHost.importantForAccessibility)
50
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, tree.blocker.importantForAccessibility)
51
+ }
52
+
53
+ @Test
54
+ fun entriesAbovePageBlockerAndGlobalHostStayAccessible() {
55
+ val tree = Tree(context)
56
+ NativeOverlayAccessibilityIsolation().update(tree.root, tree.pageHost, listOf(tree.lower), tree.globalHost)
57
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, tree.lower.importantForAccessibility)
58
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, tree.above.importantForAccessibility)
59
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, tree.globalHost.importantForAccessibility)
60
+ }
61
+
62
+ @Test
63
+ fun dismissalOrSuspensionRestoresOriginalFlags() {
64
+ val tree = Tree(context)
65
+ tree.lower.importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_NO
66
+ val isolation = NativeOverlayAccessibilityIsolation()
67
+ isolation.update(tree.root, tree.pageHost, listOf(tree.lower), tree.globalHost)
68
+ isolation.update(tree.root, null, emptyList(), tree.globalHost)
69
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_YES, tree.content.importantForAccessibility)
70
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO, tree.lower.importantForAccessibility)
71
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, tree.chrome.importantForAccessibility)
72
+ }
73
+
74
+ @Test
75
+ fun globalBlockerHidesReactRootThenPageIsolationReturns() {
76
+ val tree = Tree(context)
77
+ val globalLower = View(context)
78
+ tree.globalHost.addView(globalLower)
79
+ val isolation = NativeOverlayAccessibilityIsolation()
80
+ isolation.update(tree.root, tree.pageHost, listOf(tree.lower), tree.globalHost)
81
+ isolation.update(tree.root, tree.globalHost, listOf(globalLower), tree.globalHost)
82
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, tree.reactRoot.importantForAccessibility)
83
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, globalLower.importantForAccessibility)
84
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_YES, tree.content.importantForAccessibility)
85
+ isolation.update(tree.root, tree.pageHost, listOf(tree.lower), tree.globalHost)
86
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, tree.reactRoot.importantForAccessibility)
87
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, globalLower.importantForAccessibility)
88
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, tree.content.importantForAccessibility)
89
+ }
90
+
91
+ @Test
92
+ fun detachedHostRestoresIsolationInsteadOfHidingAnotherTree() {
93
+ val tree = Tree(context)
94
+ val isolation = NativeOverlayAccessibilityIsolation()
95
+ isolation.update(tree.root, tree.pageHost, listOf(tree.lower), tree.globalHost)
96
+ tree.card.removeView(tree.pageHost)
97
+ isolation.update(tree.root, tree.pageHost, listOf(tree.lower), tree.globalHost)
98
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_YES, tree.content.importantForAccessibility)
99
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, tree.lower.importantForAccessibility)
100
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, tree.chrome.importantForAccessibility)
101
+ }
102
+
103
+ @Test
104
+ fun changingTheBlockingEntryRestoresEntriesNoLongerBelowIt() {
105
+ val tree = Tree(context)
106
+ val isolation = NativeOverlayAccessibilityIsolation()
107
+ isolation.update(tree.root, tree.pageHost, listOf(tree.lower, tree.blocker), tree.globalHost)
108
+ isolation.update(tree.root, tree.pageHost, listOf(tree.lower), tree.globalHost)
109
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO, tree.blocker.importantForAccessibility)
110
+ assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS, tree.lower.importantForAccessibility)
111
+ }
112
+ }
package/docs/SPEC.md CHANGED
@@ -35,7 +35,7 @@ retains its original implementation attribution in source comments.
35
35
 
36
36
  ### Release boundary
37
37
 
38
- This branch aligns all 42 publishable workspaces to `3.0.162-alpha.270`.
38
+ This branch aligns all 42 publishable workspaces to `3.0.162-alpha.272`.
39
39
  Publish with the existing `package-publish` workflow dispatch, `npm_dist_tag=next`
40
40
  and an empty `only_workspace`, which publishes and registry-verifies all 42.
41
41
  Do not merge either repository PR or change the `latest` tag. The app-monorepo
@@ -273,10 +273,37 @@ Known divergences:
273
273
  such as the DatePicker month-row interpolation, are clipped inside the
274
274
  content.
275
275
 
276
+ ### Page interaction and accessibility isolation (review correction)
277
+
278
+ The existing ordering and suspension contract also applies when a page entry
279
+ mounts after its owner was suspended. Such entries MUST remain hidden and inert
280
+ until that owner resumes. Resuming an owner MUST NOT clear isolation imposed by
281
+ a higher blocking entry. Web page isolation compares level first, then request
282
+ order within that level; dismissal restores entries no longer below a blocker.
283
+
284
+ On Android, a blocking page entry MUST hide underlying page/navigation siblings
285
+ from accessibility while preserving the page host and the blocking entry. Entries
286
+ above it, including non-blocking global overlays, remain accessible. Global
287
+ blockers still win over page entries. Attachment, detachment, suspension,
288
+ resumption, input-readiness and blocking changes MUST refresh isolation and
289
+ restore each view's original accessibility flag when it is no longer covered.
290
+
291
+ These are corrections within the existing contract, not new public props. DOM
292
+ and Robolectric tests will verify lifecycle and native flags; manual TalkBack
293
+ navigation remains a separate runtime acceptance item.
294
+
276
295
  ## 5.9 Conformance and acceptance
277
296
 
278
297
  Automated (P0):
279
298
 
299
+ - `src/__tests__/pageIsolation.web.test.ts` mounts a real React portal in a
300
+ DOM host and verifies late suspension, level ordering and restoration after
301
+ the blocking entry is removed.
302
+ - `NativeOverlayAccessibilityIsolationTest` runs six Robolectric cases against
303
+ Android views: page/navigation siblings, entries above the blocker, original
304
+ flags, global/page transitions, detached hosts and changing blockers. These
305
+ tests do not replace manual TalkBack navigation.
306
+
280
307
  - `src/__tests__/OverlayStore.test.ts` covers:
281
308
  - level ordering regardless of request order;
282
309
  - page below global;
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { useEffect, useRef } from 'react';
4
4
  import { useSuspendedPageOwners } from "./useSuspendedPageOwners.js";
5
- import { registerOverlayPageHost } from "./web/overlayLayers.js";
5
+ import { registerOverlayPageHost, syncOverlayInert } from "./web/overlayLayers.js";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  const OWNER_ATTRIBUTE = 'data-overlay-owner';
8
8
 
@@ -29,12 +29,25 @@ export function OverlayPageHost({
29
29
  return;
30
30
  }
31
31
  const suspended = new Set(suspendedOwners);
32
- element.querySelectorAll(`[${OWNER_ATTRIBUTE}]`).forEach(node => {
33
- const hidden = suspended.has(node.getAttribute(OWNER_ATTRIBUTE) ?? '');
34
- node.style.visibility = hidden ? 'hidden' : '';
35
- node.inert = hidden;
32
+ const applySuspension = () => {
33
+ element.querySelectorAll(`[${OWNER_ATTRIBUTE}]`).forEach(node => {
34
+ const hidden = suspended.has(node.getAttribute(OWNER_ATTRIBUTE) ?? '') || node.getAttribute('aria-hidden') === 'true';
35
+ node.style.visibility = hidden ? 'hidden' : '';
36
+ });
37
+ // Combine suspension with blocking-level isolation; resuming an owner
38
+ // must not make an entry below a blocker interactive.
39
+ syncOverlayInert();
40
+ };
41
+ applySuspension();
42
+ const observer = new MutationObserver(applySuspension);
43
+ observer.observe(element, {
44
+ childList: true,
45
+ subtree: true,
46
+ attributes: true,
47
+ attributeFilter: [OWNER_ATTRIBUTE, 'aria-hidden']
36
48
  });
37
- }, [suspendedOwners]);
49
+ return () => observer.disconnect();
50
+ }, [hostKey, suspendedOwners]);
38
51
  return /*#__PURE__*/_jsx("div", {
39
52
  ref: ref,
40
53
  style: {
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useSuspendedPageOwners","registerOverlayPageHost","jsx","_jsx","OWNER_ATTRIBUTE","OverlayPageHost","hostKey","ref","suspendedOwners","element","current","suspended","Set","querySelectorAll","forEach","node","hidden","has","getAttribute","style","visibility","inert","position","inset","pointerEvents","zIndex","OVERLAY_OWNER_ATTRIBUTE"],"sourceRoot":"../../src","sources":["OverlayPageHost.web.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEzC,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,uBAAuB,QAAQ,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE9D,MAAMC,eAAe,GAAG,oBAAoB;;AAE5C;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAAC;EAAEC;AAA6B,CAAC,EAAE;EAChE,MAAMC,GAAG,GAAGR,MAAM,CAAiB,IAAI,CAAC;EACxC,MAAMS,eAAe,GAAGR,sBAAsB,CAACM,OAAO,CAAC;EAEvDR,SAAS,CAAC,MAAM;IACd,MAAMW,OAAO,GAAGF,GAAG,CAACG,OAAO;IAC3B,IAAI,CAACD,OAAO,EAAE;MACZ;IACF;IACA,OAAOR,uBAAuB,CAACK,OAAO,EAAEG,OAAO,CAAC;EAClD,CAAC,EAAE,CAACH,OAAO,CAAC,CAAC;EAEbR,SAAS,CAAC,MAAM;IACd,MAAMW,OAAO,GAAGF,GAAG,CAACG,OAAO;IAC3B,IAAI,CAACD,OAAO,EAAE;MACZ;IACF;IACA,MAAME,SAAS,GAAG,IAAIC,GAAG,CAACJ,eAAe,CAAC;IAC1CC,OAAO,CACJI,gBAAgB,CAAc,IAAIT,eAAe,GAAG,CAAC,CACrDU,OAAO,CAAEC,IAAI,IAAK;MACjB,MAAMC,MAAM,GAAGL,SAAS,CAACM,GAAG,CAACF,IAAI,CAACG,YAAY,CAACd,eAAe,CAAC,IAAI,EAAE,CAAC;MACtEW,IAAI,CAACI,KAAK,CAACC,UAAU,GAAGJ,MAAM,GAAG,QAAQ,GAAG,EAAE;MAC9CD,IAAI,CAACM,KAAK,GAAGL,MAAM;IACrB,CAAC,CAAC;EACN,CAAC,EAAE,CAACR,eAAe,CAAC,CAAC;EAErB,oBACEL,IAAA;IACEI,GAAG,EAAEA,GAAI;IACTY,KAAK,EAAE;MACLG,QAAQ,EAAE,UAAU;MACpBC,KAAK,EAAE,CAAC;MACRC,aAAa,EAAE,MAAM;MACrBC,MAAM,EAAE;IACV;EAAE,CACH,CAAC;AAEN;AAEA,SAASrB,eAAe,IAAIsB,uBAAuB","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useSuspendedPageOwners","registerOverlayPageHost","syncOverlayInert","jsx","_jsx","OWNER_ATTRIBUTE","OverlayPageHost","hostKey","ref","suspendedOwners","element","current","suspended","Set","applySuspension","querySelectorAll","forEach","node","hidden","has","getAttribute","style","visibility","observer","MutationObserver","observe","childList","subtree","attributes","attributeFilter","disconnect","position","inset","pointerEvents","zIndex","OVERLAY_OWNER_ATTRIBUTE"],"sourceRoot":"../../src","sources":["OverlayPageHost.web.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEzC,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,uBAAuB,EAAEC,gBAAgB,QAAQ,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEhF,MAAMC,eAAe,GAAG,oBAAoB;;AAE5C;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAAC;EAAEC;AAA6B,CAAC,EAAE;EAChE,MAAMC,GAAG,GAAGT,MAAM,CAAiB,IAAI,CAAC;EACxC,MAAMU,eAAe,GAAGT,sBAAsB,CAACO,OAAO,CAAC;EAEvDT,SAAS,CAAC,MAAM;IACd,MAAMY,OAAO,GAAGF,GAAG,CAACG,OAAO;IAC3B,IAAI,CAACD,OAAO,EAAE;MACZ;IACF;IACA,OAAOT,uBAAuB,CAACM,OAAO,EAAEG,OAAO,CAAC;EAClD,CAAC,EAAE,CAACH,OAAO,CAAC,CAAC;EAEbT,SAAS,CAAC,MAAM;IACd,MAAMY,OAAO,GAAGF,GAAG,CAACG,OAAO;IAC3B,IAAI,CAACD,OAAO,EAAE;MACZ;IACF;IACA,MAAME,SAAS,GAAG,IAAIC,GAAG,CAACJ,eAAe,CAAC;IAC1C,MAAMK,eAAe,GAAGA,CAAA,KAAM;MAC5BJ,OAAO,CACJK,gBAAgB,CAAc,IAAIV,eAAe,GAAG,CAAC,CACrDW,OAAO,CAAEC,IAAI,IAAK;QACjB,MAAMC,MAAM,GACVN,SAAS,CAACO,GAAG,CAACF,IAAI,CAACG,YAAY,CAACf,eAAe,CAAC,IAAI,EAAE,CAAC,IACvDY,IAAI,CAACG,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM;QAC7CH,IAAI,CAACI,KAAK,CAACC,UAAU,GAAGJ,MAAM,GAAG,QAAQ,GAAG,EAAE;MAChD,CAAC,CAAC;MACJ;MACA;MACAhB,gBAAgB,CAAC,CAAC;IACpB,CAAC;IACDY,eAAe,CAAC,CAAC;IACjB,MAAMS,QAAQ,GAAG,IAAIC,gBAAgB,CAACV,eAAe,CAAC;IACtDS,QAAQ,CAACE,OAAO,CAACf,OAAO,EAAE;MACxBgB,SAAS,EAAE,IAAI;MACfC,OAAO,EAAE,IAAI;MACbC,UAAU,EAAE,IAAI;MAChBC,eAAe,EAAE,CAACxB,eAAe,EAAE,aAAa;IAClD,CAAC,CAAC;IACF,OAAO,MAAMkB,QAAQ,CAACO,UAAU,CAAC,CAAC;EACpC,CAAC,EAAE,CAACvB,OAAO,EAAEE,eAAe,CAAC,CAAC;EAE9B,oBACEL,IAAA;IACEI,GAAG,EAAEA,GAAI;IACTa,KAAK,EAAE;MACLU,QAAQ,EAAE,UAAU;MACpBC,KAAK,EAAE,CAAC;MACRC,aAAa,EAAE,MAAM;MACrBC,MAAM,EAAE;IACV;EAAE,CACH,CAAC;AAEN;AAEA,SAAS7B,eAAe,IAAI8B,uBAAuB","ignoreList":[]}
@@ -32,6 +32,7 @@ function WebOverlayEntry({
32
32
  entryId,
33
33
  parked = false,
34
34
  stackOrder,
35
+ levelOrder,
35
36
  presented,
36
37
  animation,
37
38
  blocking,
@@ -148,6 +149,7 @@ function WebOverlayEntry({
148
149
  [OVERLAY_OWNER_ATTRIBUTE]: ownerKey
149
150
  } : {}),
150
151
  "data-stack-order": stackOrder,
152
+ "data-overlay-level-order": levelOrder,
151
153
  "data-testid": testID,
152
154
  role: blocking ? 'dialog' : undefined,
153
155
  "aria-modal": blocking || undefined,
@@ -267,6 +269,7 @@ export function OverlayView(props) {
267
269
  parked: parked,
268
270
  entryId: entry?.id ?? parkedId,
269
271
  stackOrder: entry?.seq ?? 0,
272
+ levelOrder: OVERLAY_LEVEL_ORDER[level],
270
273
  presented: !parked && presented,
271
274
  animation: animation,
272
275
  blocking: blocking ?? isBlockingLevel(level),
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useId","useLayoutEffect","useRef","createPortal","StyleSheet","View","OverlayLevelProvider","OVERLAY_LEVEL_ORDER","isBlockingLevel","OVERLAY_OWNER_ATTRIBUTE","useOverlayController","animateBackdrop","animateTransition","ENTRY_ATTRIBUTE","getOverlayLayerRoot","getOverlayPageHost","registerOverlayDismissRequester","scheduleOverlayInertSync","useKeyboardShift","useSheetDrag","jsx","_jsx","jsxs","_jsxs","DEFAULT_BACKDROP_COLOR","DEFAULT_SHEET_MAX_HEIGHT","DEFAULT_SHEET_CORNER_RADIUS","stopPropagation","event","ISOLATED_EVENT_HANDLERS","onClick","onPointerDown","onPointerUp","onKeyDown","WebOverlayEntry","entryId","parked","stackOrder","presented","animation","blocking","backdropColor","dismissOnBackdropPress","onPresented","onDismissed","onRequestDismiss","sheet","zIndex","ownerKey","testID","children","sheetRef","pannedAwayRef","isSheet","entryRef","contentRef","keyboardLayerRef","backdropRef","directionRef","undefined","restoreFocusRef","callbacksRef","current","content","direction","neverEntered","document","activeElement","focus","preventScroll","getAnimations","forEach","running","cancel","contentRoot","firstElementChild","transition","enter","exit","backdrop","motion","filter","item","Promise","all","map","finished","then","catch","backdropNode","onBackdropClick","addEventListener","removeEventListener","layerRef","enabled","dismissOnPanDown","onDismissByPan","showBackdrop","cornerRadius","ref","role","tabIndex","inert","style","position","inset","pointerEvents","outline","visibility","opacity","background","left","right","bottom","height","maxHeight","display","flexDirection","overflow","touchAction","backgroundColor","String","borderTopLeftRadius","borderTopRightRadius","showHandle","alignSelf","width","marginTop","borderRadius","flexShrink","absoluteFill","OverlayView","props","level","presentation","keepContentMounted","parkedId","entry","mounted","onHostPresented","onHostDismissed","onHostRequestDismiss","scope","hostKey","pageHost","id","seq","color","dismissOnPress","value"],"sourceRoot":"../../src","sources":["OverlayView.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useId","useLayoutEffect","useRef","createPortal","StyleSheet","View","OverlayLevelProvider","OVERLAY_LEVEL_ORDER","isBlockingLevel","OVERLAY_OWNER_ATTRIBUTE","useOverlayController","animateBackdrop","animateTransition","ENTRY_ATTRIBUTE","getOverlayLayerRoot","getOverlayPageHost","registerOverlayDismissRequester","scheduleOverlayInertSync","useKeyboardShift","useSheetDrag","jsx","_jsx","jsxs","_jsxs","DEFAULT_BACKDROP_COLOR","DEFAULT_SHEET_MAX_HEIGHT","DEFAULT_SHEET_CORNER_RADIUS","stopPropagation","event","ISOLATED_EVENT_HANDLERS","onClick","onPointerDown","onPointerUp","onKeyDown","WebOverlayEntry","entryId","parked","stackOrder","levelOrder","presented","animation","blocking","backdropColor","dismissOnBackdropPress","onPresented","onDismissed","onRequestDismiss","sheet","zIndex","ownerKey","testID","children","sheetRef","pannedAwayRef","isSheet","entryRef","contentRef","keyboardLayerRef","backdropRef","directionRef","undefined","restoreFocusRef","callbacksRef","current","content","direction","neverEntered","document","activeElement","focus","preventScroll","getAnimations","forEach","running","cancel","contentRoot","firstElementChild","transition","enter","exit","backdrop","motion","filter","item","Promise","all","map","finished","then","catch","backdropNode","onBackdropClick","addEventListener","removeEventListener","layerRef","enabled","dismissOnPanDown","onDismissByPan","showBackdrop","cornerRadius","ref","role","tabIndex","inert","style","position","inset","pointerEvents","outline","visibility","opacity","background","left","right","bottom","height","maxHeight","display","flexDirection","overflow","touchAction","backgroundColor","String","borderTopLeftRadius","borderTopRightRadius","showHandle","alignSelf","width","marginTop","borderRadius","flexShrink","absoluteFill","OverlayView","props","level","presentation","keepContentMounted","parkedId","entry","mounted","onHostPresented","onHostDismissed","onHostRequestDismiss","scope","hostKey","pageHost","id","seq","color","dismissOnPress","value"],"sourceRoot":"../../src","sources":["OverlayView.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -52,14 +52,16 @@ function siblingsOutside(host, root) {
52
52
  }
53
53
  return siblings;
54
54
  }
55
- function inertEntriesBelow(container, seq) {
55
+ function inertEntriesBelow(container, top) {
56
56
  container.querySelectorAll(`[${ENTRY_ATTRIBUTE}]`).forEach(node => {
57
- setInert(node, Number(node.dataset.stackOrder) < seq);
57
+ const level = Number(node.dataset.overlayLevelOrder);
58
+ const below = !!top && (level < OVERLAY_LEVEL_ORDER[top.level] || level === OVERLAY_LEVEL_ORDER[top.level] && Number(node.dataset.stackOrder) < top.seq);
59
+ setInert(node, below || node.style.visibility === 'hidden' || node.getAttribute('aria-hidden') === 'true');
58
60
  });
59
61
  }
60
62
 
61
63
  /** Everything rendered below the topmost blocking entry becomes inert. */
62
- function syncInert() {
64
+ export function syncOverlayInert() {
63
65
  const top = overlayStore.getBlockingTop();
64
66
  const appRoot = document.getElementById(APP_ROOT_ID);
65
67
  let nextPageInert = new Set();
@@ -67,7 +69,6 @@ function syncInert() {
67
69
  if (top && pageHost && appRoot?.contains(pageHost)) {
68
70
  setInert(appRoot, false);
69
71
  nextPageInert = siblingsOutside(pageHost, appRoot);
70
- inertEntriesBelow(pageHost, top.seq);
71
72
  } else {
72
73
  setInert(appRoot, !!top);
73
74
  }
@@ -78,13 +79,14 @@ function syncInert() {
78
79
  });
79
80
  nextPageInert.forEach(element => setInert(element, true));
80
81
  pageInertElements = nextPageInert;
82
+ for (const [hostKey, host] of pageHosts) {
83
+ inertEntriesBelow(host, top?.scope === 'page' && top.hostKey === hostKey ? top : undefined);
84
+ }
81
85
  for (const [level, root] of layerRoots) {
82
86
  // Global layers render above every page overlay.
83
87
  const below = top?.scope === 'global' && OVERLAY_LEVEL_ORDER[level] < OVERLAY_LEVEL_ORDER[top.level];
84
88
  setInert(root, below);
85
- if (top?.scope === 'global' && level === top.level) {
86
- inertEntriesBelow(root, top.seq);
87
- }
89
+ inertEntriesBelow(root, top?.scope === 'global' && level === top.level ? top : undefined);
88
90
  }
89
91
  }
90
92
  function onKeyDown(event) {
@@ -107,7 +109,7 @@ function installOverlayWebManager() {
107
109
  return;
108
110
  }
109
111
  installed = true;
110
- overlayStore.subscribe(syncInert);
112
+ overlayStore.subscribe(syncOverlayInert);
111
113
  document.addEventListener('keydown', onKeyDown, true);
112
114
  }
113
115
  export function getOverlayLayerRoot(level) {
@@ -130,7 +132,7 @@ export function registerOverlayDismissRequester(id, requester) {
130
132
 
131
133
  /** Re-run after entry DOM nodes mount, since the store emits before commit. */
132
134
  export function scheduleOverlayInertSync() {
133
- requestAnimationFrame(syncInert);
135
+ requestAnimationFrame(syncOverlayInert);
134
136
  }
135
137
  export function registerOverlayPageHost(hostKey, element) {
136
138
  installOverlayWebManager();
@@ -1 +1 @@
1
- {"version":3,"names":["OVERLAY_LEVELS","OVERLAY_LEVEL_ORDER","OVERLAY_WEB_Z_INDEX_BASE","overlayStore","LAYER_ATTRIBUTE","ENTRY_ATTRIBUTE","APP_ROOT_ID","layerRoots","Map","pageHosts","dismissRequesters","installed","createLayerRoot","level","root","document","createElement","setAttribute","Object","assign","style","position","inset","pointerEvents","zIndex","String","isolation","next","slice","indexOf","map","l","get","find","Boolean","body","insertBefore","setInert","element","inert","pageInertElements","Set","siblingsOutside","host","siblings","node","parentElement","parent","sibling","Array","from","children","HTMLElement","add","inertEntriesBelow","container","seq","querySelectorAll","forEach","Number","dataset","stackOrder","syncInert","top","getBlockingTop","appRoot","getElementById","nextPageInert","pageHost","scope","getOverlayPageHost","hostKey","undefined","contains","has","below","onKeyDown","event","key","isComposing","keyCode","resolution","resolveBack","kind","stopPropagation","preventDefault","id","installOverlayWebManager","subscribe","addEventListener","getOverlayLayerRoot","isConnected","set","registerOverlayDismissRequester","requester","delete","scheduleOverlayInertSync","requestAnimationFrame","registerOverlayPageHost"],"sourceRoot":"../../../src","sources":["web/overlayLayers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["OVERLAY_LEVELS","OVERLAY_LEVEL_ORDER","OVERLAY_WEB_Z_INDEX_BASE","overlayStore","LAYER_ATTRIBUTE","ENTRY_ATTRIBUTE","APP_ROOT_ID","layerRoots","Map","pageHosts","dismissRequesters","installed","createLayerRoot","level","root","document","createElement","setAttribute","Object","assign","style","position","inset","pointerEvents","zIndex","String","isolation","next","slice","indexOf","map","l","get","find","Boolean","body","insertBefore","setInert","element","inert","pageInertElements","Set","siblingsOutside","host","siblings","node","parentElement","parent","sibling","Array","from","children","HTMLElement","add","inertEntriesBelow","container","top","querySelectorAll","forEach","Number","dataset","overlayLevelOrder","below","stackOrder","seq","visibility","getAttribute","syncOverlayInert","getBlockingTop","appRoot","getElementById","nextPageInert","pageHost","scope","getOverlayPageHost","hostKey","undefined","contains","has","onKeyDown","event","key","isComposing","keyCode","resolution","resolveBack","kind","stopPropagation","preventDefault","id","installOverlayWebManager","subscribe","addEventListener","getOverlayLayerRoot","isConnected","set","registerOverlayDismissRequester","requester","delete","scheduleOverlayInertSync","requestAnimationFrame","registerOverlayPageHost"],"sourceRoot":"../../../src","sources":["web/overlayLayers.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayPageHost.web.d.ts","sourceRoot":"","sources":["../../../src/OverlayPageHost.web.tsx"],"names":[],"mappings":"AAKA,QAAA,MAAM,eAAe,uBAAuB,CAAC;AAE7C;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,2CAsC/D;AAED,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"OverlayPageHost.web.d.ts","sourceRoot":"","sources":["../../../src/OverlayPageHost.web.tsx"],"names":[],"mappings":"AAKA,QAAA,MAAM,eAAe,uBAAuB,CAAC;AAE7C;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,2CAqD/D;AAED,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayView.web.d.ts","sourceRoot":"","sources":["../../../src/OverlayView.web.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAyQ5B,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB,sCAgEnD"}
1
+ {"version":3,"file":"OverlayView.web.d.ts","sourceRoot":"","sources":["../../../src/OverlayView.web.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AA4Q5B,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB,sCAiEnD"}
@@ -1,6 +1,8 @@
1
1
  import type { IOverlayRequestDismissReason } from '../OverlayViewTypes';
2
2
  import type { IOverlayLevel } from '../types';
3
3
  export declare const ENTRY_ATTRIBUTE = "data-onekey-overlay-entry";
4
+ /** Everything rendered below the topmost blocking entry becomes inert. */
5
+ export declare function syncOverlayInert(): void;
4
6
  export declare function getOverlayLayerRoot(level: IOverlayLevel): HTMLDivElement;
5
7
  export declare function registerOverlayDismissRequester(id: string, requester: (reason: IOverlayRequestDismissReason) => void): () => void;
6
8
  /** Re-run after entry DOM nodes mount, since the store emits before commit. */
@@ -1 +1 @@
1
- {"version":3,"file":"overlayLayers.d.ts","sourceRoot":"","sources":["../../../../src/web/overlayLayers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,eAAO,MAAM,eAAe,8BAA8B,CAAC;AA8H3D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAQxE;AAED,wBAAgB,+BAA+B,CAC7C,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,IAAI,GACxD,MAAM,IAAI,CAOZ;AAED,+EAA+E;AAC/E,wBAAgB,wBAAwB,SAEvC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,GACtB,MAAM,IAAI,CAQZ;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,cAAc,GAAG,SAAS,CAE5B"}
1
+ {"version":3,"file":"overlayLayers.d.ts","sourceRoot":"","sources":["../../../../src/web/overlayLayers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,UAAU,CAAC;AAG7D,eAAO,MAAM,eAAe,8BAA8B,CAAC;AA8E3D,0EAA0E;AAC1E,wBAAgB,gBAAgB,SAsC/B;AA2BD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAQxE;AAED,wBAAgB,+BAA+B,CAC7C,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,IAAI,GACxD,MAAM,IAAI,CAOZ;AAED,+EAA+E;AAC/E,wBAAgB,wBAAwB,SAEvC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,cAAc,GACtB,MAAM,IAAI,CAQZ;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,cAAc,GAAG,SAAS,CAE5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/react-native-native-overlay",
3
- "version": "3.0.162-alpha.270",
3
+ "version": "3.0.162-alpha.272",
4
4
  "description": "Native and Web overlay hosts with ordered levels, page scope and Fabric measurement",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -77,6 +77,7 @@
77
77
  "eslint-config-prettier": "^10.1.8",
78
78
  "eslint-plugin-prettier": "^5.5.4",
79
79
  "jest": "^29.7.0",
80
+ "jest-environment-jsdom": "29.7.0",
80
81
  "lefthook": "^2.0.3",
81
82
  "prettier": "^2.8.8",
82
83
  "react": "19.2.3",
@@ -1,7 +1,7 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
 
3
3
  import { useSuspendedPageOwners } from './useSuspendedPageOwners';
4
- import { registerOverlayPageHost } from './web/overlayLayers';
4
+ import { registerOverlayPageHost, syncOverlayInert } from './web/overlayLayers';
5
5
 
6
6
  const OWNER_ATTRIBUTE = 'data-overlay-owner';
7
7
 
@@ -28,14 +28,29 @@ export function OverlayPageHost({ hostKey }: { hostKey: string }) {
28
28
  return;
29
29
  }
30
30
  const suspended = new Set(suspendedOwners);
31
- element
32
- .querySelectorAll<HTMLElement>(`[${OWNER_ATTRIBUTE}]`)
33
- .forEach((node) => {
34
- const hidden = suspended.has(node.getAttribute(OWNER_ATTRIBUTE) ?? '');
35
- node.style.visibility = hidden ? 'hidden' : '';
36
- node.inert = hidden;
37
- });
38
- }, [suspendedOwners]);
31
+ const applySuspension = () => {
32
+ element
33
+ .querySelectorAll<HTMLElement>(`[${OWNER_ATTRIBUTE}]`)
34
+ .forEach((node) => {
35
+ const hidden =
36
+ suspended.has(node.getAttribute(OWNER_ATTRIBUTE) ?? '') ||
37
+ node.getAttribute('aria-hidden') === 'true';
38
+ node.style.visibility = hidden ? 'hidden' : '';
39
+ });
40
+ // Combine suspension with blocking-level isolation; resuming an owner
41
+ // must not make an entry below a blocker interactive.
42
+ syncOverlayInert();
43
+ };
44
+ applySuspension();
45
+ const observer = new MutationObserver(applySuspension);
46
+ observer.observe(element, {
47
+ childList: true,
48
+ subtree: true,
49
+ attributes: true,
50
+ attributeFilter: [OWNER_ATTRIBUTE, 'aria-hidden'],
51
+ });
52
+ return () => observer.disconnect();
53
+ }, [hostKey, suspendedOwners]);
39
54
 
40
55
  return (
41
56
  <div
@@ -48,6 +48,7 @@ interface IWebOverlayEntryProps {
48
48
  /** Closed but kept mounted: hidden and inert. */
49
49
  parked?: boolean;
50
50
  stackOrder: number;
51
+ levelOrder: number;
51
52
  presented: boolean;
52
53
  animation: IResolvedOverlayAnimation;
53
54
  blocking: boolean;
@@ -69,6 +70,7 @@ function WebOverlayEntry({
69
70
  entryId,
70
71
  parked = false,
71
72
  stackOrder,
73
+ levelOrder,
72
74
  presented,
73
75
  animation,
74
76
  blocking,
@@ -196,6 +198,7 @@ function WebOverlayEntry({
196
198
  {...{ [ENTRY_ATTRIBUTE]: '' }}
197
199
  {...(ownerKey ? { [OVERLAY_OWNER_ATTRIBUTE]: ownerKey } : {})}
198
200
  data-stack-order={stackOrder}
201
+ data-overlay-level-order={levelOrder}
199
202
  data-testid={testID}
200
203
  role={blocking ? 'dialog' : undefined}
201
204
  aria-modal={blocking || undefined}
@@ -329,6 +332,7 @@ export function OverlayView(props: IOverlayViewProps) {
329
332
  parked={parked}
330
333
  entryId={entry?.id ?? parkedId}
331
334
  stackOrder={entry?.seq ?? 0}
335
+ levelOrder={OVERLAY_LEVEL_ORDER[level]}
332
336
  presented={!parked && presented}
333
337
  animation={animation}
334
338
  blocking={blocking ?? isBlockingLevel(level)}
@@ -6,7 +6,7 @@ import {
6
6
  import { overlayStore } from '../OverlayStore';
7
7
 
8
8
  import type { IOverlayRequestDismissReason } from '../OverlayViewTypes';
9
- import type { IOverlayLevel } from '../types';
9
+ import type { IOverlayEntry, IOverlayLevel } from '../types';
10
10
 
11
11
  const LAYER_ATTRIBUTE = 'data-onekey-overlay-layer';
12
12
  export const ENTRY_ATTRIBUTE = 'data-onekey-overlay-entry';
@@ -68,16 +68,27 @@ function siblingsOutside(host: HTMLElement, root: HTMLElement) {
68
68
  return siblings;
69
69
  }
70
70
 
71
- function inertEntriesBelow(container: ParentNode, seq: number) {
71
+ function inertEntriesBelow(container: ParentNode, top?: IOverlayEntry) {
72
72
  container
73
73
  .querySelectorAll<HTMLElement>(`[${ENTRY_ATTRIBUTE}]`)
74
74
  .forEach((node) => {
75
- setInert(node, Number(node.dataset.stackOrder) < seq);
75
+ const level = Number(node.dataset.overlayLevelOrder);
76
+ const below =
77
+ !!top &&
78
+ (level < OVERLAY_LEVEL_ORDER[top.level] ||
79
+ (level === OVERLAY_LEVEL_ORDER[top.level] &&
80
+ Number(node.dataset.stackOrder) < top.seq));
81
+ setInert(
82
+ node,
83
+ below ||
84
+ node.style.visibility === 'hidden' ||
85
+ node.getAttribute('aria-hidden') === 'true'
86
+ );
76
87
  });
77
88
  }
78
89
 
79
90
  /** Everything rendered below the topmost blocking entry becomes inert. */
80
- function syncInert() {
91
+ export function syncOverlayInert() {
81
92
  const top = overlayStore.getBlockingTop();
82
93
  const appRoot = document.getElementById(APP_ROOT_ID);
83
94
  let nextPageInert = new Set<HTMLElement>();
@@ -86,7 +97,6 @@ function syncInert() {
86
97
  if (top && pageHost && appRoot?.contains(pageHost)) {
87
98
  setInert(appRoot, false);
88
99
  nextPageInert = siblingsOutside(pageHost, appRoot);
89
- inertEntriesBelow(pageHost, top.seq);
90
100
  } else {
91
101
  setInert(appRoot, !!top);
92
102
  }
@@ -98,15 +108,23 @@ function syncInert() {
98
108
  nextPageInert.forEach((element) => setInert(element, true));
99
109
  pageInertElements = nextPageInert;
100
110
 
111
+ for (const [hostKey, host] of pageHosts) {
112
+ inertEntriesBelow(
113
+ host,
114
+ top?.scope === 'page' && top.hostKey === hostKey ? top : undefined
115
+ );
116
+ }
117
+
101
118
  for (const [level, root] of layerRoots) {
102
119
  // Global layers render above every page overlay.
103
120
  const below =
104
121
  top?.scope === 'global' &&
105
122
  OVERLAY_LEVEL_ORDER[level] < OVERLAY_LEVEL_ORDER[top.level];
106
123
  setInert(root, below);
107
- if (top?.scope === 'global' && level === top.level) {
108
- inertEntriesBelow(root, top.seq);
109
- }
124
+ inertEntriesBelow(
125
+ root,
126
+ top?.scope === 'global' && level === top.level ? top : undefined
127
+ );
110
128
  }
111
129
  }
112
130
 
@@ -131,7 +149,7 @@ function installOverlayWebManager() {
131
149
  return;
132
150
  }
133
151
  installed = true;
134
- overlayStore.subscribe(syncInert);
152
+ overlayStore.subscribe(syncOverlayInert);
135
153
  document.addEventListener('keydown', onKeyDown, true);
136
154
  }
137
155
 
@@ -159,7 +177,7 @@ export function registerOverlayDismissRequester(
159
177
 
160
178
  /** Re-run after entry DOM nodes mount, since the store emits before commit. */
161
179
  export function scheduleOverlayInertSync() {
162
- requestAnimationFrame(syncInert);
180
+ requestAnimationFrame(syncOverlayInert);
163
181
  }
164
182
 
165
183
  export function registerOverlayPageHost(