@apexnative/navigation 1.0.0-alpha.2 → 1.0.0-alpha.3

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/android/CLAUDE.md +21 -2
  3. package/android/CORE.md +3 -1
  4. package/android/src/main/java/dev/apexnative/navigation/NavigationActivity.kt +29 -1
  5. package/android/src/main/java/dev/apexnative/navigation/options/StatusBarOptions.kt +7 -3
  6. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/SecondaryScreenPresenter.kt +13 -5
  7. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsController.kt +76 -13
  8. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentPresenter.kt +28 -7
  9. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFrame.kt +1 -1
  10. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalAnimations.kt +22 -24
  11. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalCoordinator.kt +74 -8
  12. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalRecord.kt +21 -6
  13. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalSheet.kt +29 -12
  14. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalViews.kt +22 -18
  15. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackState.kt +4 -0
  16. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigator.kt +41 -3
  17. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/RootCoordinator.kt +29 -6
  18. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayCoordinator.kt +2 -0
  19. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ContainerBackground.kt +3 -3
  20. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ParentController.kt +3 -0
  21. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuController.kt +4 -0
  22. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewController.kt +14 -1
  23. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/BackPreview.kt +287 -0
  24. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackController.kt +148 -6
  25. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackDisplay.kt +24 -0
  26. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackQueue.kt +51 -11
  27. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackTransitions.kt +26 -8
  28. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackViews.kt +105 -2
  29. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarPresenter.kt +121 -7
  30. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ViewController.kt +19 -0
  31. package/android/src/main/java/dev/apexnative/navigation/views/animations/Curves.kt +29 -11
  32. package/android/src/main/java/dev/apexnative/navigation/views/stack/ScreenEdge.kt +15 -0
  33. package/android/src/main/java/dev/apexnative/navigation/views/stack/StackLayout.kt +137 -1
  34. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TitleBar.kt +8 -1
  35. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBar.kt +26 -4
  36. package/docs-md/architecture/transitions.md +6 -0
  37. package/docs-md/containers/modals.md +4 -2
  38. package/docs-md/containers/overlays.md +3 -1
  39. package/docs-md/containers/side-menu.md +4 -2
  40. package/docs-md/containers/tabs.md +2 -0
  41. package/docs-md/flows/forms-in-a-modal.md +1 -1
  42. package/docs-md/help/glossary.md +1 -1
  43. package/docs-md/index.json +8 -0
  44. package/docs-md/screen-ui/back-and-gestures.md +6 -0
  45. package/docs-md/screen-ui/system-ui.md +1 -1
  46. package/lib/module/api/hooks/useNavigation.js +8 -3
  47. package/lib/module/api/hooks/useNavigation.js.map +1 -1
  48. package/lib/typescript/api/hooks/useNavigation.d.ts.map +1 -1
  49. package/lib/typescript/interfaces/options/animations.d.ts +10 -5
  50. package/lib/typescript/interfaces/options/animations.d.ts.map +1 -1
  51. package/lib/typescript/interfaces/options/modals.d.ts +18 -13
  52. package/lib/typescript/interfaces/options/modals.d.ts.map +1 -1
  53. package/lib/typescript/interfaces/options/system.d.ts +6 -3
  54. package/lib/typescript/interfaces/options/system.d.ts.map +1 -1
  55. package/package.json +1 -1
  56. package/src/api/hooks/useNavigation.ts +8 -3
  57. package/src/interfaces/options/animations.ts +10 -5
  58. package/src/interfaces/options/modals.ts +18 -13
  59. package/src/interfaces/options/system.ts +6 -3
@@ -96,6 +96,9 @@ internal object Curves {
96
96
  * linear between them — the values of AndroidX's `FastOutSlowInInterpolator`, computed here.
97
97
  */
98
98
  object FastOutSlowIn : Curve() {
99
+ // Before the table, which is made from it.
100
+ private val curve = CubicBezier(0.4, 0.0, 0.2, 1.0)
101
+
99
102
  /** The 201 values. */
100
103
  val table: DoubleArray = DoubleArray(TABLE_STEPS + 1) {
101
104
  round(bezierAt(it.toDouble() / TABLE_STEPS) * DECIMALS) / DECIMALS
@@ -109,7 +112,25 @@ internal object Curves {
109
112
  }
110
113
 
111
114
  /** y of the Bézier at its x = [x], exactly (to 1e-12). */
112
- fun bezierAt(x: Double): Double {
115
+ fun bezierAt(x: Double): Double = curve.yAt(x)
116
+
117
+ private const val DECIMALS = 1e4
118
+ }
119
+
120
+ /**
121
+ * A cubic Bézier from (0, 0) to (1, 1) with the control points ([x1], [y1]) and ([x2], [y2]), as the framework's
122
+ * `PathInterpolator` draws it, computed exactly: the system's curves without a framework class.
123
+ */
124
+ class CubicBezier(
125
+ private val x1: Double,
126
+ private val y1: Double,
127
+ private val x2: Double,
128
+ private val y2: Double,
129
+ ) : Curve() {
130
+ override fun at(p: Double): Double = yAt(p)
131
+
132
+ /** y of the curve at its x = [x], exactly (to 1e-12). */
133
+ fun yAt(x: Double): Double {
113
134
  if (x <= 0.0) return 0.0
114
135
  if (x >= 1.0) return 1.0
115
136
  // x(t) only grows with t: a bisection finds t, then y(t).
@@ -118,23 +139,20 @@ internal object Curves {
118
139
  var t = x
119
140
  repeat(BISECTION_STEPS) {
120
141
  t = (low + high) / 2
121
- if (bezier(t, X1, X2) < x) low = t else high = t
142
+ if (coordinate(t, x1, x2) < x) low = t else high = t
122
143
  }
123
- return bezier(t, Y1, Y2)
144
+ return coordinate(t, y1, y2)
124
145
  }
125
146
 
126
- // One coordinate of the curve from (0, 0) to (1, 1) with the control points' coordinates [c1], [c2].
127
- private fun bezier(t: Double, c1: Double, c2: Double): Double {
147
+ // One coordinate of the curve with the control points' coordinates [c1], [c2].
148
+ private fun coordinate(t: Double, c1: Double, c2: Double): Double {
128
149
  val u = 1 - t
129
150
  return 3 * u * u * t * c1 + 3 * u * t * t * c2 + t * t * t
130
151
  }
131
152
 
132
- private const val X1 = 0.4
133
- private const val Y1 = 0.0
134
- private const val X2 = 0.2
135
- private const val Y2 = 1.0
136
- private const val BISECTION_STEPS = 60
137
- private const val DECIMALS = 1e4
153
+ private companion object {
154
+ const val BISECTION_STEPS = 60
155
+ }
138
156
  }
139
157
 
140
158
  /**
@@ -0,0 +1,15 @@
1
+ package dev.apexnative.navigation.views.stack
2
+
3
+ import android.graphics.drawable.Drawable
4
+ import android.view.View
5
+
6
+ /**
7
+ * What fills the room beside a moving screen in a transition (`StackLayout.extendEdge`), where the system's
8
+ * transitions between activities stretch a window's edge (`<extend>` of `activity_open_*` and `activity_close_*`): the
9
+ * screen's own background, which is what its edge shows unless its content covers it. Taken without drawing the
10
+ * screen, at the start of every push and pop. Main thread only.
11
+ */
12
+ internal object ScreenEdge {
13
+ /** A copy of [view]'s background, stretched across the room; none without one. */
14
+ fun pictureOf(view: View): Drawable? = view.background?.constantState?.newDrawable(view.resources)?.mutate()
15
+ }
@@ -2,6 +2,8 @@ package dev.apexnative.navigation.views.stack
2
2
 
3
3
  import android.annotation.SuppressLint
4
4
  import android.content.Context
5
+ import android.graphics.Canvas
6
+ import android.graphics.drawable.Drawable
5
7
  import android.view.Gravity
6
8
  import android.view.View
7
9
  import android.view.ViewGroup
@@ -18,7 +20,8 @@ import java.util.WeakHashMap
18
20
  * moves between its places without leaving it, so it doesn't leave and join the window again; a covered screen that
19
21
  * comes back gets the last window insets the stack got before it joins, and nothing asks the window to send them again
20
22
  * (CoordinatorLayout asks for insets only as it joins the window itself and only with `fitsSystemWindows`, which this
21
- * view doesn't set). Main thread only.
23
+ * view doesn't set). In a transition of the stack's own the bar is drawn with the screen it goes with
24
+ * ([barTravels]). Main thread only.
22
25
  */
23
26
  @SuppressLint("ViewConstructor")
24
27
  class StackLayout(context: Context) : CoordinatorLayout(context) {
@@ -134,4 +137,137 @@ class StackLayout(context: Context) : CoordinatorLayout(context) {
134
137
  requestLayout()
135
138
  invalidate()
136
139
  }
140
+
141
+ // The edges of the screens in a transition: drawn beside each, under it, where it moves and as transparent as it.
142
+ private val edges = HashMap<View, Edge>()
143
+
144
+ private class Edge(val picture: Drawable, val width: Int, val atStart: Boolean)
145
+
146
+ /**
147
+ * [view] extends its start edge ([atStart]) or its end edge by [width] pixels while it moves, as the system's
148
+ * transitions between activities extend a window: its background fills the room it moves away from, so the screen
149
+ * under it never shows at its edge. [dropEdge] ends it. Each frame of the move calls [edgesMoved].
150
+ */
151
+ fun extendEdge(view: View, atStart: Boolean, width: Int) {
152
+ val left = atStart != (layoutDirection == LAYOUT_DIRECTION_RTL)
153
+ val picture = ScreenEdge.pictureOf(view) ?: return
154
+ edges[view] = Edge(picture, width, left)
155
+ invalidate()
156
+ }
157
+
158
+ /** [view] moves no more: its edge goes. */
159
+ fun dropEdge(view: View) {
160
+ if (edges.remove(view) != null) invalidate()
161
+ }
162
+
163
+ /** A screen with an extended edge moved: the edges are drawn again where the screens are now. */
164
+ fun edgesMoved() {
165
+ if (edges.isNotEmpty()) invalidate()
166
+ }
167
+
168
+ // The bar's travel in a transition of the stack's own: the screen the bar goes with, the screen that leaves with the
169
+ // picture of the bar as it was, and whether that one lies over the bar (a pop).
170
+ private var barScreen: View? = null
171
+ private var barLeaving: View? = null
172
+ private var barPicture: Drawable? = null
173
+ private var leavingOver = false
174
+
175
+ /**
176
+ * The bar goes with [screen] in a transition of the stack's own: it is drawn as [screen] moves (its translation,
177
+ * scale and rotation around its pivot, its alpha). [picture], laid where the bar is, goes the same way with
178
+ * [leaving]: it is drawn right over that screen, outside its bounds too (a screen laid out under the bar). With
179
+ * [over] the leaving screen and its picture lie over the bar (a pop), else under it. Only the drawing moves: the
180
+ * bar's views and touches stay in place. [endBarTravel] ends it.
181
+ */
182
+ fun barTravels(screen: View, leaving: View?, picture: Drawable?, over: Boolean) {
183
+ barScreen = screen
184
+ barLeaving = leaving
185
+ barPicture = picture
186
+ leavingOver = over && leaving != null
187
+ invalidate()
188
+ }
189
+
190
+ /** The bar is drawn in its place again, over the screens; the picture goes. */
191
+ fun endBarTravel() {
192
+ if (barScreen == null) return
193
+ barScreen = null
194
+ barLeaving = null
195
+ barPicture = null
196
+ leavingOver = false
197
+ invalidate()
198
+ }
199
+
200
+ override fun dispatchDraw(canvas: Canvas) {
201
+ super.dispatchDraw(canvas)
202
+ // The screens' animators change only their own properties, which don't draw this view again: each frame of
203
+ // the bar's travel asks for the next.
204
+ if (barScreen != null) postInvalidateOnAnimation()
205
+ }
206
+
207
+ override fun drawChild(canvas: Canvas, child: View, drawingTime: Long): Boolean {
208
+ edges[child]?.let { drawEdge(canvas, child, it) }
209
+ val screen = barScreen ?: return super.drawChild(canvas, child, drawingTime)
210
+ // The leaving screen, while it is still here, and its picture; on a pop the bar right under them.
211
+ val leaving = barLeaving?.takeIf(::holds)
212
+ val under = leaving.takeIf { leavingOver }
213
+ if (child === topBar) {
214
+ if (under != null) return false
215
+ return drawWith(canvas, screen, topBar.left.toFloat(), topBar.top + topBar.translationY,
216
+ topBar.right.toFloat(), topBar.bottom + topBar.translationY) {
217
+ super.drawChild(canvas, topBar, drawingTime)
218
+ }
219
+ }
220
+ if (child === under && topBar.visibility == VISIBLE) {
221
+ drawWith(canvas, screen, topBar.left.toFloat(), topBar.top + topBar.translationY,
222
+ topBar.right.toFloat(), topBar.bottom + topBar.translationY) {
223
+ super.drawChild(canvas, topBar, drawingTime)
224
+ }
225
+ }
226
+ val drawn = super.drawChild(canvas, child, drawingTime)
227
+ val picture = barPicture
228
+ if (child === leaving && picture != null) {
229
+ val bounds = picture.bounds
230
+ drawWith(canvas, child, bounds.left.toFloat(), bounds.top.toFloat(), bounds.right.toFloat(),
231
+ bounds.bottom.toFloat()) {
232
+ picture.draw(canvas)
233
+ false
234
+ }
235
+ }
236
+ return drawn
237
+ }
238
+
239
+ // Draws with [screen]'s transform and alpha what [draw] draws within the bounds given, in this view's coordinates.
240
+ private fun drawWith(
241
+ canvas: Canvas,
242
+ screen: View,
243
+ left: Float,
244
+ top: Float,
245
+ right: Float,
246
+ bottom: Float,
247
+ draw: () -> Boolean,
248
+ ): Boolean {
249
+ val alpha = if (screen.visibility == VISIBLE) screen.alpha else 0f
250
+ if (alpha <= 0f) return false
251
+ val saved = canvas.save()
252
+ canvas.translate(screen.left.toFloat(), screen.top.toFloat())
253
+ canvas.concat(screen.matrix)
254
+ canvas.translate(-screen.left.toFloat(), -screen.top.toFloat())
255
+ if (alpha < 1f) canvas.saveLayerAlpha(left, top, right, bottom, (alpha * 255).toInt())
256
+ val drawn = draw()
257
+ canvas.restoreToCount(saved)
258
+ return drawn
259
+ }
260
+
261
+ // At the child's place to the fraction of a pixel, as its own translation draws it, and one pixel under it: no seam
262
+ // of the screen below shows between them.
263
+ private fun drawEdge(canvas: Canvas, child: View, edge: Edge) {
264
+ if (child.visibility != VISIBLE || child.alpha <= 0f) return
265
+ val x = if (edge.atStart) child.left + child.translationX - edge.width else child.right + child.translationX - 1f
266
+ val saved = canvas.save()
267
+ canvas.translate(x, child.top + child.translationY)
268
+ edge.picture.setBounds(0, 0, edge.width + 1, child.height)
269
+ edge.picture.alpha = (child.alpha * 255).toInt()
270
+ edge.picture.draw(canvas)
271
+ canvas.restoreToCount(saved)
272
+ }
137
273
  }
@@ -118,6 +118,8 @@ class TitleBar(context: Context) : ViewGroup(context) {
118
118
  val height = MeasureSpec.getSize(heightMeasureSpec)
119
119
  val inner = max(width - sideInsetsBox[0] - sideInsetsBox[1], 0)
120
120
  val exactHeight = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
121
+ alignButtons(leftButtonBar, height)
122
+ alignButtons(rightButtonBar, height)
121
123
  leftButtonBar.measure(MeasureSpec.makeMeasureSpec(inner, MeasureSpec.AT_MOST), exactHeight)
122
124
  val rightRoom = max(inner - leftButtonBar.measuredWidth, 0)
123
125
  rightButtonBar.measure(MeasureSpec.makeMeasureSpec(rightRoom, MeasureSpec.AT_MOST), exactHeight)
@@ -192,6 +194,12 @@ class TitleBar(context: Context) : ViewGroup(context) {
192
194
  return min(max(middle, startBar), max(inner - endBar - width, startBar))
193
195
  }
194
196
 
197
+ // A toolbar stands its back button and its menu at the top of its minimum height, centered in it (`buttonGravity`
198
+ // is top): with the row's height as that minimum, they stand in the middle of the row, as the title does.
199
+ private fun alignButtons(toolbar: MaterialToolbar, height: Int) {
200
+ if (toolbar.minimumHeight != height) toolbar.minimumHeight = height
201
+ }
202
+
195
203
  // A toolbar that holds only buttons: no insets of its own around them (the row places them).
196
204
  private fun plain(toolbar: MaterialToolbar) {
197
205
  // Before the toolbar makes its menu, which takes the popup theme once: "⋮" in the current mode.
@@ -200,7 +208,6 @@ class TitleBar(context: Context) : ViewGroup(context) {
200
208
  toolbar.contentInsetStartWithNavigation = 0
201
209
  toolbar.contentInsetEndWithActions = 0
202
210
  toolbar.setPadding(0, 0, 0, 0)
203
- toolbar.minimumHeight = 0
204
211
  }
205
212
 
206
213
  private companion object {
@@ -55,6 +55,8 @@ class TopBar(context: Context) : FrameLayout(themed(context)) {
55
55
  private var heightChanged = false
56
56
  // How far the large title is collapsed, in pixels.
57
57
  private var largeTitleShift = 0
58
+ // `topBar.elevation`, in pixels: the bar's elevation unless it is flat.
59
+ private var shadow = 0f
58
60
 
59
61
  /** The toolbar of the right buttons: its menu holds them, the overflow items and the search's magnifier. */
60
62
  val rightButtonBar: MaterialToolbar
@@ -187,14 +189,27 @@ class TopBar(context: Context) : FrameLayout(themed(context)) {
187
189
  * The shadow of `topBar.elevation`, in pixels: its colors are black (Android 9 and later read them), none at 0.
188
190
  */
189
191
  fun setShadow(elevation: Float) {
190
- if (this.elevation == elevation) return
191
- this.elevation = elevation
192
+ if (shadow == elevation) return
193
+ shadow = elevation
194
+ if (!isFlat) this.elevation = elevation
192
195
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
193
196
  outlineAmbientShadowColor = Color.BLACK
194
197
  outlineSpotShadowColor = Color.BLACK
195
198
  }
196
199
  }
197
200
 
201
+ /**
202
+ * The bar draws without its shadow, at the level of the screens, in a transition that draws it with a screen: a
203
+ * screen drawn after it covers it, and an alpha layer around it fades it (with an elevation the renderer would draw
204
+ * the bar over every screen and out of the layer).
205
+ */
206
+ var isFlat = false
207
+ set(value) {
208
+ if (field == value) return
209
+ field = value
210
+ elevation = if (value) 0f else shadow
211
+ }
212
+
198
213
  /** The line under the bar: [height] pixels of [color]. */
199
214
  fun setBorder(color: Int, height: Int) {
200
215
  border.setBackgroundColor(color)
@@ -335,8 +350,15 @@ class TopBar(context: Context) : FrameLayout(themed(context)) {
335
350
  * A picture of the bar under its row — the background, the large title, the search, the line — and where it starts
336
351
  * in the bar, for a push to a screen without a large title; none when the bar can't be drawn in software.
337
352
  */
338
- fun pictureUnderRow(): Pair<Bitmap, Int>? {
339
- val top = content.top + rowArea.bottom
353
+ fun pictureUnderRow(): Pair<Bitmap, Int>? = pictureFrom(content.top + rowArea.bottom)
354
+
355
+ /**
356
+ * A picture of the whole bar, for the screen it leaves with in a transition of the stack's own; none when the bar
357
+ * can't be drawn in software.
358
+ */
359
+ fun picture(): Bitmap? = pictureFrom(0)?.first
360
+
361
+ private fun pictureFrom(top: Int): Pair<Bitmap, Int>? {
340
362
  val width = width
341
363
  val height = height - top
342
364
  if (width <= 0 || height <= 0) return null
@@ -46,6 +46,8 @@ navigation.showModal('Player', {
46
46
  });
47
47
  ```
48
48
 
49
+ The top bar of a pushed screen goes with the screen on Android and stays in place on iOS: see [the bar in a transition of your own](#custom-bar).
50
+
49
51
  `presentation` of `createNavigation` gives every push or modal of the app its transition: see [Defaults for the whole app](../fundamentals/moving-between-screens#presentation). New roots have presets of their own: see [How a new root comes in](../fundamentals/switching-roots#transitions).
50
52
 
51
53
  ## Transitions out of a view
@@ -146,6 +148,10 @@ Details rises 300 points as it fades in. Each property animates from a value to
146
148
 
147
149
  The same goes for `pop`, `showModal`, `dismissModal`, `setStackRoot` and `setRoot`. The swipe back is the exception: (iOS) it always follows the finger with the system's slide, so a custom `pop` plays for the back button and `pop()` only.
148
150
 
151
+ ### The top bar
152
+
153
+ The top bar goes its platform's way in a preset or an animation of your own. (Android) It goes with its screen, as if it were part of it: with `slideUp` the new screen comes up with its bar over the old one and its bar, and on the way back it goes down with its bar, uncovering the bar below. With `fade` or `scale` the bar fades or grows with its screen. (iOS) UIKit keeps the bar in place and changes its title and buttons as the transition starts; only the screens under it move.
154
+
149
155
  ## Which to pick
150
156
 
151
157
  | The move | Pick | What it costs |
@@ -70,6 +70,8 @@ navigation.showModal('Compose', { style: 'fullScreen' });
70
70
 
71
71
  Without `style`, a modal is a sheet on (iOS) and covers the whole screen on (Android).
72
72
 
73
+ `'pageSheet'` and `'formSheet'` are sheets on both platforms: on (Android) the Material bottom sheet over the dimmed screen, at the full height under the status bar and at most 640 dp wide. `'fullScreen'` and `'overFullScreen'` come up from the bottom over the whole screen; on Android with the system's motion of a window opening over another, without a fade.
74
+
73
75
  `'overFullScreen'` keeps the screen under the modal in place, so it shows through wherever the modal draws nothing: a dialog of your own, a card over a dimmed app. Give the modal's screen `backgroundColor('transparent')` in its options, so its own background doesn't hide the screen under it.
74
76
 
75
77
  ### A form on iPad
@@ -83,7 +85,7 @@ navigation.showModal('EditProfile', {
83
85
  });
84
86
  ```
85
87
 
86
- On iPhone a form sheet is a sheet, and `contentSize` does nothing.
88
+ On iPhone and on Android a form sheet is a sheet, and `contentSize` does nothing.
87
89
 
88
90
  ### A popover
89
91
 
@@ -95,7 +97,7 @@ navigation.showModal('Filters', {
95
97
  });
96
98
  ```
97
99
 
98
- On iPhone it becomes a sheet, unless `adaptive: false` keeps it a popover. (Android) has no popovers: the modal covers the whole screen, as without `style`.
100
+ On iPhone it becomes a sheet, unless `adaptive: false` keeps it a popover. (Android) has no popovers: the modal is the bottom sheet of `'pageSheet'`.
99
101
 
100
102
  ## Sheets
101
103
 
@@ -24,7 +24,9 @@ This page answers:
24
24
 
25
25
  A push or a modal moves the user somewhere. An overlay doesn't move anyone: it puts a screen **on top of everything**, and the app goes on under it.
26
26
 
27
- An overlay is a screen of `screens` like any other: a component, its props, its options. It shows above the tabs, the bars and the modals; on (iOS) it is in a window of its own. Its background is transparent, so the app shows wherever the overlay draws nothing. What overlays are for:
27
+ An overlay is a screen of `screens` like any other: a component, its props, its options. It shows above the tabs, the bars and the modals; on (iOS) it is in a window of its own. Its background is transparent, so the app shows wherever the overlay draws nothing.
28
+
29
+ An overlay covers the whole window, **the status bar included**: a dialog's dimmed backdrop dims the status bar too, as a system dialog does. Its safe area keeps the content off the bars, so a toast at the top of the overlay sits below the status bar. On (Android) a status bar with a color of its own (`statusBar.backgroundColor`) stays over the backdrop, and `statusBar.drawBehind: false` starts the overlay below the status bar. What overlays are for:
28
30
 
29
31
  ## Showing and closing
30
32
 
@@ -74,7 +74,7 @@ A tap on the button opens the menu. A button of the options gets the navigation
74
74
 
75
75
  ## A pick in the menu
76
76
 
77
- A menu is a screen without a stack, so **its commands act on the center**, and the menu closes once the center has changed. A pick usually switches the section, so the center starts over with it:
77
+ A menu is a screen without a stack, so **its commands act on the center**, and the menu closes as the center changes: it starts to slide away at the tap, and a push slides in as it goes. The command resolves once both are done. A pick usually switches the section, so the center starts over with it:
78
78
 
79
79
  ```tsx
80
80
  import { Button, View } from 'react-native';
@@ -94,7 +94,7 @@ function Menu() {
94
94
  }
95
95
  ```
96
96
 
97
- A tap on Settings shows Settings in the center, and the menu closes. Which command to use depends on the way back:
97
+ A tap on Settings closes the menu and shows Settings in the center as it goes. Which command to use depends on the way back:
98
98
 
99
99
  | From the menu | The center |
100
100
  | --- | --- |
@@ -108,6 +108,8 @@ A tap on Settings shows Settings in the center, and the menu closes. Which comma
108
108
  | (iOS) | Over the content, which dims: `openMode: 'aboveContent'` of the side, the default. Or under it, with the content moved aside: `'pushContent'`. Then `animation(…)` says how the menu appears: `'parallax'`, `'slide'`, `'slide-and-scale'` or `'door'`. |
109
109
  | (Android) | The drawer of the platform: over the content, which dims. |
110
110
 
111
+ The menu's color is its screen's `layout.backgroundColor`: it fills the whole height of the menu, behind the status bar and the navigation bar, while the menu's content keeps clear of them. A background on the React content stops at the safe area.
112
+
111
113
  `.ios()` keeps the settings that only iOS has apart from the others:
112
114
 
113
115
  ```ts
@@ -90,6 +90,8 @@ This is the app's `navigation`: its `push` goes to the stack the user sees, now
90
90
 
91
91
  Inbox shows, and Chat comes in over it, in the stack of the Inbox tab.
92
92
 
93
+ On (Android) the content changes with Material's fade through, as in the system's Phone app: the tab that goes fades out, then the new one fades in and grows to its size, in 300 ms; the tab bar stays. On (iOS) the new tab shows at once, as the system's tab bar does.
94
+
93
95
  ### A press on a tab
94
96
 
95
97
  A second tap on the selected tab is a convention of both platforms: **back to the start of the tab**. The navigation does it without code:
@@ -299,7 +299,7 @@ navigation.showModal('EditProfile', {
299
299
  });
300
300
  ```
301
301
 
302
- On iPhone a form sheet is the same sheet as before, and on Android the modal is unchanged.
302
+ On iPhone a form sheet is the same sheet as before. On Android it is the Material bottom sheet, where the modal without a style covered the whole screen.
303
303
 
304
304
  ## The whole code
305
305
 
@@ -266,7 +266,7 @@ Two screens shown as one entry of a stack: the primary, whose bar shows, and the
266
266
 
267
267
  ### Popover
268
268
 
269
- (iPadOS) A modal that points at the bar button or the view that opened it. On iPhone it becomes a sheet; on Android the modal covers the screen. More: [A popover](../containers/modals#popover).
269
+ (iPadOS) A modal that points at the bar button or the view that opened it. On iPhone and on Android it becomes a sheet. More: [A popover](../containers/modals#popover).
270
270
 
271
271
  ### Presentation
272
272
 
@@ -974,6 +974,10 @@
974
974
  "heading": "The system back of Android",
975
975
  "anchor": "system-back"
976
976
  },
977
+ {
978
+ "heading": "The preview of a pop",
979
+ "anchor": "pop-preview"
980
+ },
977
981
  {
978
982
  "heading": "Back to the home screen",
979
983
  "anchor": "system-animation"
@@ -1323,6 +1327,10 @@
1323
1327
  "heading": "Animations of your own",
1324
1328
  "anchor": "custom"
1325
1329
  },
1330
+ {
1331
+ "heading": "The top bar",
1332
+ "anchor": "custom-bar"
1333
+ },
1326
1334
  {
1327
1335
  "heading": "Which to pick",
1328
1336
  "anchor": "which"
@@ -100,6 +100,12 @@ export const MapScreen = defineScreen({
100
100
  | The first screen of a tab | What `Tabs().backBehavior(…)` says: leave the app, go to the first tab, or to the tab before. See [Back on Android](../containers/tabs#back). |
101
101
  | The first screen of the app | Leaves the app, as every Android app does, with the system's own animation ([below](#system-animation)). `usePreventLeave` doesn't hold it; to ask first, see [Asking before the user leaves the app](/api/back-and-gestures/usePreventLeave#leaving-the-app). |
102
102
 
103
+ ### The preview of a pop
104
+
105
+ (Android) 14+ The back gesture on a pushed screen shows where it goes before the user lets go, as the system does between apps' screens: the screen shrinks toward the side of the swipe with rounded corners and follows the finger, and the screen under it shows behind it, dimmed, with its own bar. Letting go pops the screen; swiping back cancels, and the screen grows back into place.
106
+
107
+ The preview shows when back pops the screen with the default transition. It doesn't when back does something else first, or when the app takes it: a menu or a search that closes, a screen that holds back (`hardwareBackButton.popStackOnPress: false`, a [`BackHandler` listener](#back-handler), `usePreventLeave`), or a pop with an animation of its own (`animations.pop`). On Android 13 and older the screen pops when the swipe ends.
108
+
103
109
  ### Back to the home screen
104
110
 
105
111
  (Android) On the first screen of the app, with nothing left to go back to, the navigation leaves the back to the system. The system then plays its predictive back animation: as the user swipes, the app shrinks and the home screen shows behind it, and the user can still change their mind halfway. The system decides this as the swipe starts, so the navigation takes the back only while it has something to do with it: a screen to pop, a modal, a menu or a search to close, a tab to go to (`backBehavior`), or a [`BackHandler` listener](#back-handler) of the app.
@@ -249,7 +249,7 @@ iPhone Duo decides by itself too: folded, the outer display shows the app in por
249
249
 
250
250
  ## Backgrounds
251
251
 
252
- `backgroundColor` colors the screen, behind its React content. Without it, the screen has the background of the [theme](../architecture/theme-and-context).
252
+ `backgroundColor` colors the screen, behind its React content. Without it, the screen has the background of the [theme](../architecture/theme-and-context), or the system's when the theme has none: `systemBackground` on (iOS), `android:colorBackground` of the app's theme on (Android) (a screen in a sheet shows the sheet's surface; a native screen paints its own view). So a React screen is never see-through by accident; `'transparent'` makes it so on purpose, as overlays are.
253
253
 
254
254
  ```ts
255
255
  s.backgroundColor('#F3E9D2');
@@ -47,12 +47,17 @@ function stackCommands(id) {
47
47
  };
48
48
  }
49
49
 
50
- /** The commands of the center for a menu screen: the menu closes once the center has changed. */
50
+ /**
51
+ * The commands of the center for a menu screen: the menu closes as the center changes, and the command resolves once
52
+ * both are done.
53
+ */
51
54
  function fromCenter(center, menuScreen) {
52
55
  const centerCommands = stackCommands(center);
56
+ // As in the system's apps, the menu starts to close at the pick and the center changes as it goes, so a push is seen
57
+ // sliding in. The command settles after both, so the next one acts from the center; either one's error rejects it.
53
58
  const closing = run => async (...args) => {
54
- const result = await run(...args);
55
- await closeMenu(menuScreen);
59
+ const closed = closeMenu(menuScreen);
60
+ const [result] = await Promise.all([run(...args), closed]);
56
61
  return result;
57
62
  };
58
63
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","useMemo","setPressEvent","commands","command","navigation","ScreenContext","whenTabShows","placeOf","centerOf","closeMenu","openMenu","useNavigation","screen","Error","screenNavigation","stackCommands","id","push","name","config","pop","popToRoot","replace","setStack","entries","showInColumn","selectTab","tab","shown","setTabBadge","badge","fromCenter","center","menuScreen","centerCommands","closing","run","args","result","own","stack","place","container","menu","part","popTo","screenId","showModal","dismiss","canPop","canDismiss","goBack","canGoBack","showOverlay","setOptions","options","showColumn","column","setColumnShown","hideColumn","side","event"],"sourceRoot":"../../../../src","sources":["api/hooks/useNavigation.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useContext","useMemo","setPressEvent","commands","command","navigation","ScreenContext","whenTabShows","placeOf","centerOf","closeMenu","openMenu","useNavigation","screen","Error","screenNavigation","stackCommands","id","push","name","config","pop","popToRoot","replace","setStack","entries","showInColumn","selectTab","tab","shown","setTabBadge","badge","fromCenter","center","menuScreen","centerCommands","closing","run","args","closed","result","Promise","all","own","stack","place","container","menu","part","popTo","screenId","showModal","dismiss","canPop","canDismiss","goBack","canGoBack","showOverlay","setOptions","options","showColumn","column","setColumnShown","hideColumn","side","event"],"sourceRoot":"../../../../src","sources":["api/hooks/useNavigation.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigation.d.ts","sourceRoot":"","sources":["../../../../src/api/hooks/useNavigation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAsB,CAAC;AAExD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACX,MAAM,6BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,aAAa,EAAc,KAAK,cAAc,EAAE,MAAM,kBAAe,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAAyB,CAAC;AAClE,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,+BAA4B,CAAC;AAI5E,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAU,CAAC;AAErD,kEAAkE;AAClE,UAAU,cAAc;IACtB,wCAAwC;IACxC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,2FAA2F;IAC3F,IAAI,CAAC,IAAI,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChG;;;OAGG;IACH,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACvB,sDAAsD;IACtD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,mDAAmD;IACnD,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B;;;;OAIG;IACH,OAAO,CAAC,IAAI,SAAS,UAAU,EAC7B,IAAI,EAAE,IAAI,EACV,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,GAClC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,UAAU,EAAE,EAClD,GAAG,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,GAClC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,IAAI,SAAS,UAAU,EAClC,IAAI,EAAE,IAAI,EACV,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,GACpC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,mFAAmF;IACnF,SAAS,CAAC,IAAI,SAAS,UAAU,EAC/B,IAAI,EAAE,IAAI,EACV,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,GACnC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,+EAA+E;IAC/E,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC;IAClB,iGAAiG;IACjG,UAAU,IAAI,OAAO,CAAC;IACtB;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,qFAAqF;IACrF,SAAS,IAAI,OAAO,CAAC;IACrB,uEAAuE;IACvE,WAAW,CAAC,IAAI,SAAS,UAAU,EACjC,IAAI,EAAE,IAAI,EACV,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,yGAAyG;IACzG,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,mHAAmH;IACnH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,0CAA0C;IAC1C,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACtD;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,yGAAyG;IACzG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED;;;;GAIG;AACH,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,cAAc,CAAC,EAAE,cAAc;CAAG;AAEtE,wDAAwD;AACxD,wBAAgB,aAAa,IAAI,gBAAgB,CAQhD;AAqED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAqDrE"}
1
+ {"version":3,"file":"useNavigation.d.ts","sourceRoot":"","sources":["../../../../src/api/hooks/useNavigation.ts"],"names":[],"mappings":"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"}
@@ -336,15 +336,18 @@ export interface StackAnimationOptions {
336
336
  /**
337
337
  * The animation of the screens: `enter` for the screen that comes (on a pop, the one that was below), `exit` for the
338
338
  * one that goes. A property with a `from` or a `to` makes it an animation of its own, which replaces the platform's
339
- * transition; the side left out stays still. (Android) With one of its own, the title and buttons of the bar and the
340
- * tab bar don't travel with the screens. (Android) When the transition has elements, a push plays only `enter` and a
339
+ * transition; the side left out stays still. With one of its own, (Android) the top bar goes with its screen: the
340
+ * bar of the screen that goes leaves with it, and the bar of the screen that comes moves, scales and fades with it;
341
+ * (iOS) UIKit keeps the bar in place and changes its title and buttons at once. (Android) The tab bar doesn't travel
342
+ * with the screens. (Android) When the transition has elements, a push plays only `enter` and a
341
343
  * pop only `exit`, and only when that side is a single `alpha`; any other side is not played, and the screen fades in
342
344
  * or out in 300 ms around the elements instead. iOS plays the sides as they are set.
343
345
  */
344
346
  content?: EnterExitAnimationOptions;
345
347
  /**
346
348
  * (Android) The animation of the top bar when it shows or hides because the screens differ in `topBar.visible`.
347
- * Without it, the bar slides up by its height and back in 300 ms. iOS animates the bar with UIKit.
349
+ * Without it, the bar slides up by its height and back in 300 ms; with a `content` of its own it shows or hides
350
+ * with its screen. iOS animates the bar with UIKit.
348
351
  */
349
352
  topBar?: EnterExitAnimationOptions<TopBarAnimationOptions>;
350
353
  /**
@@ -392,8 +395,10 @@ export interface SetStackRootAnimationOptions extends StackAnimationOptions {
392
395
  * screen under it. The screen under a modal takes part (iOS) only under a modal that covers the full screen.
393
396
  *
394
397
  * A sheet keeps the system's sheet motion on both platforms: (iOS) a modal shown as `'pageSheet'`, `'formSheet'` or
395
- * without a style, (Android) a Material bottom sheet. The sides `enter` and `exit` and the lists of elements set here
396
- * don't apply to it.
398
+ * without a style, (Android) the Material bottom sheet of `'pageSheet'`, `'formSheet'`, `'popover'`, or of
399
+ * `modal.sheet` without a style. The sides `enter` and `exit` and the lists of elements set here don't apply to it.
400
+ * Without them a modal over the whole screen comes up from the bottom: on iOS by UIKit's `modalTransitionStyle`, on
401
+ * Android with the system's motion of a window over another, 300 ms up and 250 ms down, without a fade.
397
402
  *
398
403
  * (Android) When the modal has elements, `enter` of a show and `exit` of a dismiss play only when that side is a single
399
404
  * `alpha`; any other side is not played, and the modal fades in or out in 300 ms around the elements instead.
@@ -1 +1 @@
1
- {"version":3,"file":"animations.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/animations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animations.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/animations.ts"],"names":[],"mappings":"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"}