@apexnative/navigation 1.0.0-alpha.1 → 1.0.0-alpha.10
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.
- package/ApexNavigation.podspec +2 -1
- package/CHANGELOG.md +120 -0
- package/README.md +147 -51
- package/android/CLAUDE.md +78 -25
- package/android/CORE.md +49 -25
- package/android/RECIPES.md +13 -6
- package/android/consumer-rules.pro +6 -0
- package/android/src/main/java/dev/apexnative/navigation/NavigationActivity.kt +85 -10
- package/android/src/main/java/dev/apexnative/navigation/NavigationApplication.kt +34 -13
- package/android/src/main/java/dev/apexnative/navigation/layout/LayoutChecks.kt +5 -1
- package/android/src/main/java/dev/apexnative/navigation/layout/LayoutNode.kt +6 -2
- package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenContext.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/options/AnimationsOptions.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/options/BottomTabOptions.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/options/BottomTabsOptions.kt +13 -8
- package/android/src/main/java/dev/apexnative/navigation/options/ButtonMenuOptions.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/options/ButtonOptions.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/options/HardwareBackButtonOptions.kt +9 -1
- package/android/src/main/java/dev/apexnative/navigation/options/LargeTitleOptions.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/options/LayoutAnimation.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/options/OptionKey.kt +18 -0
- package/android/src/main/java/dev/apexnative/navigation/options/OptionPaths.kt +91 -0
- package/android/src/main/java/dev/apexnative/navigation/options/OptionsCache.kt +8 -4
- package/android/src/main/java/dev/apexnative/navigation/options/SheetOptions.kt +7 -4
- package/android/src/main/java/dev/apexnative/navigation/options/SideMenuOptions.kt +6 -1
- package/android/src/main/java/dev/apexnative/navigation/options/StackAnimationOptions.kt +40 -2
- package/android/src/main/java/dev/apexnative/navigation/options/StatusBarOptions.kt +7 -3
- package/android/src/main/java/dev/apexnative/navigation/options/TitleOptions.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/options/TopBarAppearanceOptions.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/options/TopBarOptions.kt +16 -7
- package/android/src/main/java/dev/apexnative/navigation/options/UserChoices.kt +159 -0
- package/android/src/main/java/dev/apexnative/navigation/react/CommandAnswer.kt +29 -36
- package/android/src/main/java/dev/apexnative/navigation/react/CommandContract.kt +59 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ContentHeights.kt +95 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ContentMounts.kt +66 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ErrorTexts.kt +75 -60
- package/android/src/main/java/dev/apexnative/navigation/react/Hinge.kt +35 -23
- package/android/src/main/java/dev/apexnative/navigation/react/NavigationTurboModule.kt +12 -7
- package/android/src/main/java/dev/apexnative/navigation/react/OptionsCommands.kt +42 -4
- package/android/src/main/java/dev/apexnative/navigation/react/PendingCalls.kt +48 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ReactView.kt +54 -20
- package/android/src/main/java/dev/apexnative/navigation/react/ReloadCoordinator.kt +7 -6
- package/android/src/main/java/dev/apexnative/navigation/react/ScreenEnvironment.kt +177 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ScreenRegions.kt +19 -50
- package/android/src/main/java/dev/apexnative/navigation/react/ScrollEvents.kt +49 -128
- package/android/src/main/java/dev/apexnative/navigation/react/events/AppearanceDispatcher.kt +50 -81
- package/android/src/main/java/dev/apexnative/navigation/react/events/EventContract.kt +226 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/EventEmitter.kt +135 -94
- package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationState.kt +154 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/ScreenAppearance.kt +0 -6
- package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaView.kt +12 -10
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotContainers.kt +10 -7
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotScreenView.kt +39 -19
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotView.kt +16 -4
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotViews.kt +40 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ImageKey.kt +66 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ImageLoader.kt +7 -89
- package/android/src/main/java/dev/apexnative/navigation/utils/ImageRequests.kt +76 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/MaterialTheme.kt +5 -6
- package/android/src/main/java/dev/apexnative/navigation/utils/OptionImages.kt +262 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/SystemAnimations.kt +36 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/UiUtils.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/utils/ViewController.kt +3 -1
- package/android/src/main/java/dev/apexnative/navigation/utils/ViewExtensions.kt +0 -13
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementController.kt +10 -7
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/SecondaryScreenPresenter.kt +13 -5
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/AppliedTabCalls.kt +49 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsCollapseBehavior.kt +5 -3
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsController.kt +108 -34
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsPresenter.kt +25 -24
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowGeometry.kt +22 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabItems.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsRoom.kt +0 -5
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentPresenter.kt +28 -7
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentViewController.kt +12 -9
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ContentReadiness.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RenderWait.kt +27 -7
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFrame.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenReadiness.kt +103 -56
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenSafeArea.kt +29 -11
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentViewController.kt +2 -6
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalAnimations.kt +22 -24
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalCoordinator.kt +109 -21
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalRecord.kt +21 -6
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalSheet.kt +476 -73
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalViews.kt +57 -25
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/SheetBack.kt +42 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/SheetStops.kt +83 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackCheck.kt +50 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackState.kt +49 -14
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigator.kt +71 -12
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/RootCoordinator.kt +37 -11
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayCoordinator.kt +10 -8
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/Capabilities.kt +11 -4
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ContainerBackground.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ParentController.kt +6 -6
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuController.kt +42 -9
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuMotion.kt +19 -8
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuPresenter.kt +16 -7
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuRules.kt +43 -4
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitPanes.kt +23 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewController.kt +77 -17
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/BackPreview.kt +315 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedFrame.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackCommands.kt +30 -20
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackController.kt +216 -18
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackDisplay.kt +26 -1
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackQueue.kt +149 -41
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackTransitions.kt +26 -8
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackViews.kt +115 -6
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabMotion.kt +142 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPresenter.kt +222 -48
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/ScreenSearch.kt +3 -5
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/StackSearchPresenter.kt +30 -34
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarComponents.kt +5 -51
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarRowTransition.kt +3 -2
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonPlaces.kt +11 -5
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/MenuChecks.kt +13 -56
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarPresenter.kt +219 -54
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarVisibility.kt +9 -2
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ScrollEventListener.kt +6 -9
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ViewController.kt +75 -21
- package/android/src/main/java/dev/apexnative/navigation/views/animations/AnimationLayer.kt +73 -0
- package/android/src/main/java/dev/apexnative/navigation/views/animations/Curves.kt +29 -11
- package/android/src/main/java/dev/apexnative/navigation/views/animations/ValueInterpolation.kt +14 -0
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabs.kt +9 -7
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsLayout.kt +61 -2
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomBottomTabItemView.kt +0 -5
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomTabRow.kt +72 -10
- package/android/src/main/java/dev/apexnative/navigation/views/element/ElementStep.kt +31 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/ElementTransitions.kt +143 -135
- package/android/src/main/java/dev/apexnative/navigation/views/element/TargetsWait.kt +13 -5
- package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionLayer.kt +37 -112
- package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionTargets.kt +9 -6
- package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionViews.kt +100 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ElementPictures.kt +112 -4
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/FlightGeometry.kt +346 -36
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ImageMorph.kt +199 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/SharedAnimatorFactory.kt +56 -41
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/TextMorph.kt +176 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ViewMorph.kt +108 -0
- package/android/src/main/java/dev/apexnative/navigation/views/sidemenu/SideMenuView.kt +12 -3
- package/android/src/main/java/dev/apexnative/navigation/views/stack/ScreenEdge.kt +45 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/StackLayout.kt +140 -1
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/Fab.kt +14 -10
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabCopy.kt +85 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabMenu.kt +13 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TitleBar.kt +5 -17
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBar.kt +73 -34
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarButtonComponentCell.kt +6 -6
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarButtonView.kt +113 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarMenu.kt +219 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonBar.kt +125 -178
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonMenus.kt +34 -64
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonRow.kt +216 -0
- package/android/src/main/jni/ANNContentHeights.cpp +82 -0
- package/android/src/main/res/drawable/apex_navigation_ic_arrow_right.xml +14 -0
- package/android/src/main/res/layout/apex_navigation_menu_header.xml +19 -0
- package/android/src/main/res/layout/apex_navigation_menu_item.xml +68 -0
- package/android/src/main/res/values/styles.xml +1 -1
- package/android/src/main/res/values-night/styles.xml +1 -1
- package/cli/app.js +1 -1
- package/cli/doctor/checks/app.js +77 -14
- package/cli/doctor/checks/splash.js +4 -22
- package/cli/migrate/native.js +18 -0
- package/cli/project.js +10 -2
- package/cli/setup/index.js +18 -0
- package/cli/setup/source.js +2 -1
- package/cli/setup/steps/appDelegate.js +66 -11
- package/cli/setup/steps/mainApplication.js +134 -19
- package/cli/setup/steps/metro.js +46 -0
- package/cli/setup/steps/sceneDelegate.js +108 -0
- package/cli/splash/index.js +3 -1
- package/docs-md/architecture/native-screens.md +4 -0
- package/docs-md/architecture/theme-and-context.md +131 -12
- package/docs-md/architecture/transitions.md +58 -12
- package/docs-md/containers/modals.md +8 -4
- package/docs-md/containers/overlays.md +3 -1
- package/docs-md/containers/side-menu.md +19 -2
- package/docs-md/containers/tabs.md +5 -1
- package/docs-md/flows/bottom-sheets.md +4 -2
- package/docs-md/flows/forms-in-a-modal.md +1 -1
- package/docs-md/fundamentals/screens-and-props.md +9 -1
- package/docs-md/fundamentals/starting-the-app.md +1 -1
- package/docs-md/guides/cli.md +4 -3
- package/docs-md/guides/deep-links.md +15 -33
- package/docs-md/help/glossary.md +4 -4
- package/docs-md/help/troubleshooting.md +44 -6
- package/docs-md/index.json +57 -1
- package/docs-md/migration/from-expo-router.md +1 -1
- package/docs-md/migration/from-react-native-navigation.md +9 -3
- package/docs-md/migration/from-react-navigation.md +2 -2
- package/docs-md/screen-ui/back-and-gestures.md +46 -2
- package/docs-md/screen-ui/bar-buttons.md +5 -5
- package/docs-md/screen-ui/search.md +1 -1
- package/docs-md/screen-ui/system-ui.md +17 -12
- package/docs-md/screen-ui/toolbar-and-fab.md +4 -2
- package/docs-md/screen-ui/top-bar.md +8 -4
- package/docs-md/start/installation.md +21 -3
- package/ios/Animations/ANNFrameDriver.h +55 -15
- package/ios/Animations/ANNFrameDriver.mm +216 -60
- package/ios/Animations/ANNTransitionAnimator.h +26 -5
- package/ios/Animations/ANNTransitionAnimator.mm +61 -13
- package/ios/Animations/ANNTransitionPlan.h +2 -2
- package/ios/Animations/ANNTransitionPlan.mm +10 -0
- package/ios/Animations/ANNTransitionWait.mm +6 -7
- package/ios/Animations/Elements/ANNElementFinder.h +57 -0
- package/ios/Animations/Elements/ANNElementFinder.mm +174 -2
- package/ios/Animations/Elements/ANNElementTransition.h +10 -8
- package/ios/Animations/Elements/ANNElementTransition.mm +19 -21
- package/ios/Animations/Elements/ANNSharedElementFlight.h +16 -11
- package/ios/Animations/Elements/ANNSharedElementFlight.mm +308 -69
- package/ios/Animations/Interpolators/ANNInterpolate.h +2 -30
- package/ios/Animations/Interpolators/ANNTransformParts.h +48 -0
- package/ios/Animations/Interpolators/ANNTransformParts.mm +507 -0
- package/ios/Animations/Interpolators/ANNViewTracks.h +9 -6
- package/ios/Animations/Interpolators/ANNViewTracks.mm +100 -30
- package/ios/CLAUDE.md +60 -24
- package/ios/CORE.md +44 -34
- package/ios/Contract/ANNCommandAnswer.h +13 -5
- package/ios/Contract/ANNCommandAnswer.mm +40 -32
- package/ios/Contract/ANNCommandContract.h +15 -0
- package/ios/Contract/ANNCommandContract.mm +78 -0
- package/ios/Contract/ANNCommandRunner.h +10 -9
- package/ios/Contract/ANNCommandRunner.mm +22 -28
- package/ios/Contract/ANNErrorTexts.h +6 -2
- package/ios/Contract/ANNErrorTexts.mm +18 -10
- package/ios/Contract/ANNLayoutNode.h +3 -3
- package/ios/Contract/ANNLayoutReader.h +3 -3
- package/ios/Core/ANNAppDelegate.mm +0 -2
- package/ios/Core/ANNAppearanceDispatcher.h +5 -4
- package/ios/Core/ANNAppearanceDispatcher.mm +12 -1
- package/ios/Core/ANNDeepLinkQueue.h +22 -2
- package/ios/Core/ANNDeepLinkQueue.mm +121 -14
- package/ios/Core/ANNErrorHandler.h +9 -4
- package/ios/Core/ANNErrorHandler.mm +20 -2
- package/ios/Core/ANNEventContract.h +246 -0
- package/ios/Core/ANNEventContract.mm +225 -0
- package/ios/Core/ANNEventEmitter.h +6 -2
- package/ios/Core/ANNEventEmitter.mm +117 -80
- package/ios/Core/ANNHinge.h +6 -0
- package/ios/Core/ANNHinge.mm +15 -4
- package/ios/Core/ANNJavaScriptCalls.h +33 -0
- package/ios/Core/ANNJavaScriptCalls.mm +52 -0
- package/ios/Core/ANNLayoutProtocol.h +5 -5
- package/ios/Core/ANNNavigationState.h +7 -5
- package/ios/Core/ANNNavigationState.mm +8 -7
- package/ios/Core/ANNNodeHelper.h +32 -12
- package/ios/Core/ANNNodeHelper.mm +100 -3
- package/ios/Core/ANNParking.h +5 -4
- package/ios/Core/ANNReloadCoordinator.mm +5 -12
- package/ios/Core/ANNRenderWait.h +20 -6
- package/ios/Core/ANNRenderWait.mm +143 -56
- package/ios/Core/ANNSceneDelegate.mm +25 -15
- package/ios/Core/ANNSystemUI.h +3 -2
- package/ios/Core/ANNSystemUI.mm +7 -0
- package/ios/Core/ANNUtils.h +7 -0
- package/ios/Core/ANNUtils.mm +10 -0
- package/ios/Core/ApexNavigation+Internal.h +1 -1
- package/ios/Core/ApexNavigation.mm +7 -6
- package/ios/Core/UIViewController+LayoutProtocol.h +9 -2
- package/ios/Core/UIViewController+LayoutProtocol.mm +8 -0
- package/ios/Layouts/Arrangement/ANNArrangementState.h +2 -17
- package/ios/Layouts/Arrangement/ANNArrangementState.mm +0 -38
- package/ios/Layouts/Arrangement/ANNArrangementViewController.mm +10 -8
- package/ios/Layouts/Modal/ANNModalCoordinator.h +1 -1
- package/ios/Layouts/Modal/ANNModalCoordinator.mm +57 -16
- package/ios/Layouts/Modal/ANNModalPresentation.h +8 -5
- package/ios/Layouts/Modal/ANNModalPresentation.mm +12 -12
- package/ios/Layouts/Modal/ANNSheetPresenter.mm +83 -1
- package/ios/Layouts/Overlay/ANNOverlayCoordinator.mm +2 -8
- package/ios/Layouts/Root/ANNRootCoordinator.mm +58 -19
- package/ios/Layouts/Root/ANNSplashViewController.h +5 -3
- package/ios/Layouts/Root/ANNSplashViewController.mm +147 -0
- package/ios/Layouts/Screen/ANNComponentPresenter.h +11 -3
- package/ios/Layouts/Screen/ANNComponentPresenter.mm +34 -6
- package/ios/Layouts/Screen/ANNComponentViewController.h +15 -13
- package/ios/Layouts/Screen/ANNComponentViewController.mm +130 -75
- package/ios/Layouts/Screen/ANNNativeScreenContext.mm +7 -5
- package/ios/Layouts/Screen/ANNPreviewInteraction.h +7 -4
- package/ios/Layouts/Screen/ANNPreviewInteraction.mm +72 -10
- package/ios/Layouts/Screen/ANNScreenEnvironment.h +63 -0
- package/ios/Layouts/Screen/ANNScreenEnvironment.mm +181 -0
- package/ios/Layouts/Screen/ANNScreenPlace.h +53 -0
- package/ios/Layouts/Screen/ANNScreenPlace.mm +205 -0
- package/ios/Layouts/Screen/ANNScreenRegions.h +3 -18
- package/ios/Layouts/Screen/ANNScreenRegions.mm +9 -44
- package/ios/Layouts/Screen/ANNScreenSafeArea.h +4 -9
- package/ios/Layouts/Screen/ANNScreenSafeArea.mm +14 -16
- package/ios/Layouts/Screen/ANNScreenSettling.h +32 -0
- package/ios/Layouts/Screen/ANNScreenSettling.mm +137 -0
- package/ios/Layouts/SideMenu/ANNSideMenuTypes.h +8 -0
- package/ios/Layouts/SideMenu/ANNSideMenuViewController.mm +83 -14
- package/ios/Layouts/SplitView/ANNSplitViewCommands.h +3 -2
- package/ios/Layouts/SplitView/ANNSplitViewCommands.mm +105 -39
- package/ios/Layouts/SplitView/ANNSplitViewController.mm +7 -8
- package/ios/Layouts/Stack/ANNPreviewPush.h +7 -6
- package/ios/Layouts/Stack/ANNPreviewPush.mm +142 -27
- package/ios/Layouts/Stack/ANNStackAnimatingDelegate.h +11 -2
- package/ios/Layouts/Stack/ANNStackAnimatingDelegate.mm +14 -7
- package/ios/Layouts/Stack/ANNStackCommands.mm +1 -0
- package/ios/Layouts/Stack/ANNStackController.h +8 -0
- package/ios/Layouts/Stack/ANNStackController.mm +184 -16
- package/ios/Layouts/Stack/ANNStackQueue.h +5 -2
- package/ios/Layouts/Stack/ANNStackQueue.mm +56 -43
- package/ios/Layouts/Stack/ANNSwipePopInteraction.h +26 -0
- package/ios/Layouts/Stack/ANNSwipePopInteraction.mm +185 -0
- package/ios/Layouts/Stack/InteractivePopGestureDelegate.mm +28 -4
- package/ios/Layouts/Stack/UINavigationController+ANNCommands.h +4 -2
- package/ios/Layouts/Stack/UINavigationController+ANNCommands.mm +2 -3
- package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.h +4 -0
- package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.mm +11 -0
- package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.h +12 -1
- package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.mm +23 -0
- package/ios/Layouts/Tabs/ANNBottomTabsController.h +3 -0
- package/ios/Layouts/Tabs/ANNBottomTabsController.mm +237 -57
- package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.mm +8 -3
- package/ios/Layouts/Tabs/ANNBottomTabsPresenter.h +6 -2
- package/ios/Layouts/Tabs/ANNBottomTabsPresenter.mm +232 -43
- package/ios/Layouts/Tabs/ANNTabsDesign.h +6 -5
- package/ios/Layouts/Tabs/ANNTabsDesign.mm +9 -1
- package/ios/Layouts/Tabs/UITabBar+utils.h +5 -5
- package/ios/Layouts/Tabs/UITabBar+utils.mm +32 -13
- package/ios/Options/ANNAnimationOptions.h +2 -1
- package/ios/Options/ANNAnimationOptions.mm +1 -1
- package/ios/Options/ANNBottomTabsOptions.h +2 -0
- package/ios/Options/ANNBottomTabsOptions.mm +1 -0
- package/ios/Options/ANNOptions.h +25 -0
- package/ios/Options/ANNOptions.mm +157 -1
- package/ios/Options/ANNOptionsCache.h +7 -6
- package/ios/Options/ANNOptionsReader.mm +108 -0
- package/ios/Options/ANNSearchBarOptions.h +4 -3
- package/ios/Options/ANNSheetOptions.h +4 -1
- package/ios/Options/ANNSideMenuOptions.h +2 -0
- package/ios/Options/ANNSideMenuOptions.mm +2 -0
- package/ios/Options/ANNStackPopAnimationOptions.h +13 -0
- package/ios/Options/ANNStackPopAnimationOptions.mm +11 -0
- package/ios/Options/ANNUserChoice.h +57 -0
- package/ios/Options/ANNUserChoice.mm +44 -0
- package/ios/Options/Params/ANNImageSource.h +61 -0
- package/ios/Options/Params/ANNImageSource.mm +101 -0
- package/ios/Options/Params/ANNOptionImages.h +37 -0
- package/ios/Options/Params/ANNOptionImages.mm +284 -0
- package/ios/Options/Params/ANNParam.h +15 -0
- package/ios/Options/Params/ANNParam.mm +61 -0
- package/ios/Options/Params/Color.h +3 -0
- package/ios/Options/Params/Color.mm +21 -0
- package/ios/Options/Params/ColorParser.h +4 -3
- package/ios/Options/Params/ColorParser.mm +22 -4
- package/ios/Options/Params/Image.h +15 -2
- package/ios/Options/Params/Image.mm +35 -2
- package/ios/Options/Params/ImageParser.h +5 -5
- package/ios/Options/Params/ImageParser.mm +28 -46
- package/ios/Public/ApexNavigation/ANNSceneDelegate.h +3 -0
- package/ios/Public/ApexNavigation/ApexNavigation.h +1 -1
- package/ios/RECIPES.md +13 -6
- package/ios/React/ANNReactView.mm +6 -25
- package/ios/React/ANNSafeAreaViewComponentView.mm +28 -17
- package/ios/React/ANNSurfaceHostingView.h +14 -0
- package/ios/React/ANNSurfaceHostingView.mm +144 -1
- package/ios/React/Slots/ANNSlotComponentView.mm +24 -17
- package/ios/React/Slots/ANNSlotContainers.h +14 -6
- package/ios/React/Slots/ANNSlotContainers.mm +75 -2
- package/ios/React/Slots/ANNSlotHost.mm +1 -3
- package/ios/React/Slots/ANNSlotScreenView.mm +8 -2
- package/ios/TopBar/ANNBackButtonPresenter.mm +6 -5
- package/ios/TopBar/ANNBarAppearance.h +2 -1
- package/ios/TopBar/ANNBarAppearance.mm +111 -30
- package/ios/TopBar/ANNBarBackgroundComponent.mm +16 -0
- package/ios/TopBar/ANNBarButtonComponentView.h +4 -4
- package/ios/TopBar/ANNBarButtonComponentView.mm +1 -1
- package/ios/TopBar/ANNBarButtons.h +14 -8
- package/ios/TopBar/ANNBarButtons.mm +397 -80
- package/ios/TopBar/ANNIconButtonImage.h +1 -0
- package/ios/TopBar/ANNIconButtonImage.mm +34 -1
- package/ios/TopBar/ANNLargeTitlePresenter.h +13 -0
- package/ios/TopBar/ANNLargeTitlePresenter.mm +50 -7
- package/ios/TopBar/ANNMainList.h +3 -0
- package/ios/TopBar/ANNMainList.mm +4 -0
- package/ios/TopBar/ANNScrollEdgeEffects.h +22 -6
- package/ios/TopBar/ANNScrollEdgeEffects.mm +123 -16
- package/ios/TopBar/ANNSearchPresenter.mm +172 -21
- package/ios/TopBar/ANNSearchResultsViewController.mm +29 -6
- package/ios/TopBar/ANNTopBarPresenter.h +8 -2
- package/ios/TopBar/ANNTopBarPresenter.mm +155 -33
- package/ios/TurboModules/ANNTurboEventEmitter.mm +4 -35
- package/ios/TurboModules/ANNTurboModule.mm +104 -33
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotState.cpp +20 -0
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotState.h +5 -14
- package/lib/module/ARCHITECTURE.md +40 -27
- package/lib/module/adapters/NativeANNTurboModule.js.map +1 -1
- package/lib/module/api/app/AppRegistry.js +14 -2
- package/lib/module/api/app/AppRegistry.js.map +1 -1
- package/lib/module/api/app/createNavigation.js +190 -66
- package/lib/module/api/app/createNavigation.js.map +1 -1
- package/lib/module/api/commands/commands.js +54 -6
- package/lib/module/api/commands/commands.js.map +1 -1
- package/lib/module/api/events/navigationEvents.js +6 -2
- package/lib/module/api/events/navigationEvents.js.map +1 -1
- package/lib/module/api/hooks/useNavigation.js +8 -3
- package/lib/module/api/hooks/useNavigation.js.map +1 -1
- package/lib/module/api/hooks/useSafeAreaInsets.js +4 -3
- package/lib/module/api/hooks/useSafeAreaInsets.js.map +1 -1
- package/lib/module/api/linking/dispatchedLinks.js +23 -0
- package/lib/module/api/linking/dispatchedLinks.js.map +1 -0
- package/lib/module/api/linking/linking.js +11 -0
- package/lib/module/api/linking/linking.js.map +1 -1
- package/lib/module/api/navigation.js.map +1 -1
- package/lib/module/api/options/OptionsChain.js +2 -2
- package/lib/module/api/screens/defineScreen.js +45 -3
- package/lib/module/api/screens/defineScreen.js.map +1 -1
- package/lib/module/api/screens/nativeScreens.js +31 -6
- package/lib/module/api/screens/nativeScreens.js.map +1 -1
- package/lib/module/api/screens/registerScreens.js +193 -35
- package/lib/module/api/screens/registerScreens.js.map +1 -1
- package/lib/module/api/theme/theme.js +5 -0
- package/lib/module/api/theme/theme.js.map +1 -1
- package/lib/module/engine/commands.js +51 -9
- package/lib/module/engine/commands.js.map +1 -1
- package/lib/module/engine/layout.js +20 -11
- package/lib/module/engine/layout.js.map +1 -1
- package/lib/module/engine/nativeScreens.js +9 -0
- package/lib/module/engine/nativeScreens.js.map +1 -1
- package/lib/module/engine/options.js +49 -15
- package/lib/module/engine/options.js.map +1 -1
- package/lib/module/engine/optionsChange.js +102 -0
- package/lib/module/engine/optionsChange.js.map +1 -0
- package/lib/module/engine/places.js +52 -7
- package/lib/module/engine/places.js.map +1 -1
- package/lib/module/engine/props.js +30 -1
- package/lib/module/engine/props.js.map +1 -1
- package/lib/module/engine/refresh.js +85 -0
- package/lib/module/engine/refresh.js.map +1 -0
- package/lib/module/engine/rememberedOptions.js +61 -1
- package/lib/module/engine/rememberedOptions.js.map +1 -1
- package/lib/module/engine/screens.js +77 -16
- package/lib/module/engine/screens.js.map +1 -1
- package/lib/module/interfaces/contract/commands.json +101 -0
- package/lib/module/interfaces/contract/errors.json +275 -0
- package/lib/typescript/adapters/NativeANNTurboModule.d.ts +12 -2
- package/lib/typescript/adapters/NativeANNTurboModule.d.ts.map +1 -1
- package/lib/typescript/api/app/AppRegistry.d.ts.map +1 -1
- package/lib/typescript/api/app/createNavigation.d.ts +8 -3
- package/lib/typescript/api/app/createNavigation.d.ts.map +1 -1
- package/lib/typescript/api/commands/commands.d.ts.map +1 -1
- package/lib/typescript/api/commands/presentation.d.ts +4 -3
- package/lib/typescript/api/commands/presentation.d.ts.map +1 -1
- package/lib/typescript/api/events/navigationEvents.d.ts +3 -3
- package/lib/typescript/api/events/navigationEvents.d.ts.map +1 -1
- package/lib/typescript/api/hooks/useNavigation.d.ts +1 -1
- package/lib/typescript/api/hooks/useNavigation.d.ts.map +1 -1
- package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts +4 -3
- package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts.map +1 -1
- package/lib/typescript/api/index.d.ts +1 -1
- package/lib/typescript/api/index.d.ts.map +1 -1
- package/lib/typescript/api/linking/dispatchedLinks.d.ts +7 -0
- package/lib/typescript/api/linking/dispatchedLinks.d.ts.map +1 -0
- package/lib/typescript/api/linking/linking.d.ts +8 -0
- package/lib/typescript/api/linking/linking.d.ts.map +1 -1
- package/lib/typescript/api/navigation.d.ts +4 -1
- package/lib/typescript/api/navigation.d.ts.map +1 -1
- package/lib/typescript/api/options/OptionsChain.d.ts +2 -2
- package/lib/typescript/api/screens/defineScreen.d.ts +23 -4
- package/lib/typescript/api/screens/defineScreen.d.ts.map +1 -1
- package/lib/typescript/api/screens/nativeScreens.d.ts +8 -1
- package/lib/typescript/api/screens/nativeScreens.d.ts.map +1 -1
- package/lib/typescript/api/screens/registerScreens.d.ts.map +1 -1
- package/lib/typescript/api/theme/theme.d.ts +2 -0
- package/lib/typescript/api/theme/theme.d.ts.map +1 -1
- package/lib/typescript/engine/commands.d.ts +5 -0
- package/lib/typescript/engine/commands.d.ts.map +1 -1
- package/lib/typescript/engine/layout.d.ts.map +1 -1
- package/lib/typescript/engine/nativeScreens.d.ts +5 -0
- package/lib/typescript/engine/nativeScreens.d.ts.map +1 -1
- package/lib/typescript/engine/options.d.ts +5 -2
- package/lib/typescript/engine/options.d.ts.map +1 -1
- package/lib/typescript/engine/optionsChange.d.ts +28 -0
- package/lib/typescript/engine/optionsChange.d.ts.map +1 -0
- package/lib/typescript/engine/places.d.ts +7 -2
- package/lib/typescript/engine/places.d.ts.map +1 -1
- package/lib/typescript/engine/props.d.ts +8 -1
- package/lib/typescript/engine/props.d.ts.map +1 -1
- package/lib/typescript/engine/refresh.d.ts +35 -0
- package/lib/typescript/engine/refresh.d.ts.map +1 -0
- package/lib/typescript/engine/rememberedOptions.d.ts +13 -0
- package/lib/typescript/engine/rememberedOptions.d.ts.map +1 -1
- package/lib/typescript/engine/screens.d.ts +27 -6
- package/lib/typescript/engine/screens.d.ts.map +1 -1
- package/lib/typescript/interfaces/ComponentEvents.d.ts +4 -4
- package/lib/typescript/interfaces/ComponentEvents.d.ts.map +1 -1
- package/lib/typescript/interfaces/Events.d.ts +28 -10
- package/lib/typescript/interfaces/Events.d.ts.map +1 -1
- package/lib/typescript/interfaces/Options.d.ts +1 -1
- package/lib/typescript/interfaces/Options.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/animations.d.ts +80 -22
- package/lib/typescript/interfaces/options/animations.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/bottomTabs.d.ts +21 -7
- package/lib/typescript/interfaces/options/bottomTabs.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/buttons.d.ts +23 -15
- package/lib/typescript/interfaces/options/buttons.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/modals.d.ts +34 -26
- package/lib/typescript/interfaces/options/modals.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/sideMenu.d.ts +23 -6
- package/lib/typescript/interfaces/options/sideMenu.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/stack.d.ts +17 -3
- package/lib/typescript/interfaces/options/stack.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/system.d.ts +18 -11
- package/lib/typescript/interfaces/options/system.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/toolbar.d.ts +2 -2
- package/lib/typescript/interfaces/options/topBar.d.ts +68 -38
- package/lib/typescript/interfaces/options/topBar.d.ts.map +1 -1
- package/metro/acceptPlugin.js +57 -0
- package/metro/babelTransformer.js +45 -0
- package/metro/index.js +36 -0
- package/package.json +3 -1
- package/src/ARCHITECTURE.md +40 -27
- package/src/adapters/NativeANNTurboModule.ts +12 -2
- package/src/api/app/AppRegistry.ts +16 -2
- package/src/api/app/createNavigation.ts +203 -69
- package/src/api/commands/commands.ts +48 -7
- package/src/api/commands/presentation.ts +4 -3
- package/src/api/events/navigationEvents.ts +10 -4
- package/src/api/hooks/useNavigation.ts +9 -4
- package/src/api/hooks/useSafeAreaInsets.ts +4 -3
- package/src/api/index.ts +1 -0
- package/src/api/linking/dispatchedLinks.ts +18 -0
- package/src/api/linking/linking.ts +22 -1
- package/src/api/navigation.ts +4 -1
- package/src/api/options/OptionsChain.ts +2 -2
- package/src/api/screens/defineScreen.ts +49 -5
- package/src/api/screens/nativeScreens.ts +40 -4
- package/src/api/screens/registerScreens.tsx +185 -42
- package/src/api/theme/theme.ts +5 -0
- package/src/engine/commands.ts +70 -13
- package/src/engine/layout.ts +27 -11
- package/src/engine/nativeScreens.ts +10 -1
- package/src/engine/options.ts +45 -19
- package/src/engine/optionsChange.ts +107 -0
- package/src/engine/places.ts +65 -7
- package/src/engine/props.ts +30 -1
- package/src/engine/refresh.ts +97 -0
- package/src/engine/rememberedOptions.ts +74 -1
- package/src/engine/screens.tsx +76 -21
- package/src/interfaces/ComponentEvents.ts +4 -4
- package/src/interfaces/Events.ts +29 -10
- package/src/interfaces/Options.ts +1 -0
- package/src/interfaces/contract/commands.json +101 -0
- package/src/interfaces/contract/errors.json +275 -0
- package/src/interfaces/options/animations.ts +81 -22
- package/src/interfaces/options/bottomTabs.ts +21 -7
- package/src/interfaces/options/buttons.ts +23 -15
- package/src/interfaces/options/modals.ts +34 -26
- package/src/interfaces/options/sideMenu.ts +24 -6
- package/src/interfaces/options/stack.ts +17 -3
- package/src/interfaces/options/system.ts +18 -11
- package/src/interfaces/options/toolbar.ts +2 -2
- package/src/interfaces/options/topBar.ts +68 -38
- package/android/src/main/java/dev/apexnative/navigation/react/ArrangementStates.kt +0 -41
- package/android/src/main/java/dev/apexnative/navigation/react/ScreenInsets.kt +0 -69
- package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationStateReporter.kt +0 -62
- package/android/src/main/java/dev/apexnative/navigation/react/events/StateHold.kt +0 -62
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowPlacer.kt +0 -223
- package/android/src/main/java/dev/apexnative/navigation/views/element/ElementStub.kt +0 -31
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ImageMatrixAnimator.kt +0 -138
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PlainViewAnimator.kt +0 -88
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PropertyAnimatorCreator.kt +0 -33
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ReactImageAnimator.kt +0 -66
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/TextChangeAnimator.kt +0 -179
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ViewChangeAnimator.kt +0 -139
- package/ios/Layouts/Screen/ANNScreenInsets.h +0 -30
- package/ios/Layouts/Screen/ANNScreenInsets.mm +0 -68
- package/ios/Layouts/Tabs/ANNTabsPreloadWindow.h +0 -27
- package/ios/Layouts/Tabs/ANNTabsPreloadWindow.mm +0 -55
|
@@ -3,30 +3,36 @@
|
|
|
3
3
|
* `'overCurrentContext'`, `'currentContext'` or `'popover'`. It is read once, when the modal shows, from the modal's
|
|
4
4
|
* final options; `mergeOptions` afterwards doesn't change it, and neither does a change of theme or a rotation. Without
|
|
5
5
|
* it the platform decides: on iOS the automatic style of UIKit (a sheet on iPhone, a card on iPad), on Android the
|
|
6
|
-
* whole screen. An unknown string shows a full-screen modal on
|
|
6
|
+
* whole screen, or the Material bottom sheet when `modal.sheet` is set. An unknown string shows a full-screen modal on
|
|
7
|
+
* iOS and counts as not set on Android.
|
|
7
8
|
*
|
|
8
|
-
* - `'pageSheet'`:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
9
|
+
* - `'pageSheet'`: a sheet that leaves the screen below visible. On iOS the screen below is pushed back, and on iPad
|
|
10
|
+
* the sheet is a wide card. On Android it is the Material modal bottom sheet over a dimmed screen, at the full height
|
|
11
|
+
* under the status bar (`modal.sheet` changes its stops), at most 640 dp wide and in the middle of a wider window.
|
|
12
|
+
* - `'formSheet'`: on iOS a sheet on iPhone, a card in the middle on iPad whose size is `modal.contentSize`. On Android
|
|
13
|
+
* the same bottom sheet as `'pageSheet'`; `modal.contentSize` does nothing there.
|
|
14
|
+
* - `'fullScreen'`, `'currentContext'`: the whole screen; the screen below is taken off once the modal has come in.
|
|
15
|
+
* Both platforms treat the two alike. The modal comes up from the bottom: on Android with the system's motion of a
|
|
16
|
+
* window over another (300 ms up, 250 ms down), without a fade.
|
|
17
|
+
* - `'overFullScreen'`, `'overCurrentContext'`: the same, with the screen below kept in place under the modal. It
|
|
18
|
+
* shows through only where the modal screen is transparent (`layout.backgroundColor` and
|
|
19
|
+
* `layout.componentBackgroundColor` both `'transparent'`); the style does not make anything transparent by itself.
|
|
17
20
|
* - `'popover'`: (iOS) a popover with an arrow on iPad, a sheet on iPhone unless `modal.popover.adaptive` is `false`.
|
|
18
|
-
* Android has no popovers and shows the
|
|
21
|
+
* Android has no popovers and shows the bottom sheet of `'pageSheet'`.
|
|
19
22
|
*
|
|
20
|
-
* The options of the sheet (`modal.sheet`) apply with `'pageSheet'`, `'formSheet'` and without a style
|
|
23
|
+
* The options of the sheet (`modal.sheet`) apply with `'pageSheet'`, `'formSheet'` and without a style, and on
|
|
24
|
+
* Android with `'popover'` too.
|
|
21
25
|
*/
|
|
22
26
|
export type OptionsModalPresentationStyle = 'pageSheet' | 'formSheet' | 'fullScreen' | 'overFullScreen' | 'overCurrentContext' | 'currentContext' | 'popover';
|
|
23
27
|
/**
|
|
24
28
|
* (iOS) The system transition a modal comes and goes with: `'coverVertical'` (from below), `'crossDissolve'` (a fade),
|
|
25
29
|
* `'flipHorizontal'` (a flip) or `'partialCurl'`. It is read when the modal shows and doesn't change afterwards;
|
|
26
30
|
* `animations.showModal` with values of its own, and the zoom of iOS 18, go over it. UIKit flips only a modal over the
|
|
27
|
-
* whole screen (`'fullScreen'`, `'overFullScreen'`): a sheet comes in as usual and flips only on its way out
|
|
28
|
-
* `'
|
|
29
|
-
* doesn't
|
|
31
|
+
* whole screen (`'fullScreen'`, `'overFullScreen'`): a sheet comes in as usual and flips only on its way out. UIKit
|
|
32
|
+
* curls only a `'fullScreen'` modal over a screen that fills the window, so `'partialCurl'` with any other
|
|
33
|
+
* `modalPresentationStyle` (or without one), or over a modal that doesn't fill the screen, shows as `'coverVertical'`.
|
|
34
|
+
* A modal shown with `'partialCurl'` can't show another modal over it: that `showModal` rejects. An unknown string
|
|
35
|
+
* means `'coverVertical'`. Android doesn't read it.
|
|
30
36
|
*/
|
|
31
37
|
export type OptionsModalTransitionStyle = 'coverVertical' | 'crossDissolve' | 'flipHorizontal' | 'partialCurl';
|
|
32
38
|
/**
|
|
@@ -35,31 +41,33 @@ export type OptionsModalTransitionStyle = 'coverVertical' | 'crossDissolve' | 'f
|
|
|
35
41
|
*
|
|
36
42
|
* On iOS `'medium'` and `'large'` are the system stops; a number and `'content'` need iOS 16 and are left out below it
|
|
37
43
|
* with a warning in the log. On Android `'medium'` is half of the window, `'large'` the full height under the status
|
|
38
|
-
* bar, a number is capped at `'large'`, and `'content'`
|
|
39
|
-
* height by content.
|
|
44
|
+
* bar, a number is capped at `'large'`, and `'content'` is the height of the content, measured as on iOS.
|
|
40
45
|
*/
|
|
41
46
|
export type OptionsModalSheetDetent = 'medium' | 'large' | 'content' | number;
|
|
42
47
|
/**
|
|
43
48
|
* The settings of a sheet: a modal that comes from below and rests on one of several heights, its stops (detents). On
|
|
44
49
|
* iOS they configure the system sheet of a modal presented as `'pageSheet'`, `'formSheet'` or without a style. On
|
|
45
|
-
* Android
|
|
50
|
+
* Android they configure the Material bottom sheet of `'pageSheet'`, `'formSheet'` and `'popover'`, and without a style
|
|
51
|
+
* any one of them turns the modal into that sheet. They are read when
|
|
46
52
|
* the modal shows, and a `mergeOptions` on any screen of the modal changes them while it is shown, with an animation.
|
|
47
53
|
* Objects merge key by key; `detents` is replaced as a whole.
|
|
48
54
|
*/
|
|
49
55
|
export interface OptionsModalSheet {
|
|
50
56
|
/**
|
|
51
|
-
* The stops the sheet can rest on, and the user drags it between
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
57
|
+
* The stops the sheet can rest on, and the user drags it between, in any order: on both platforms they are sorted by
|
|
58
|
+
* height and repeats dropped. On iOS `'medium'` counts as half of `'large'` there, and on both `'content'` takes its
|
|
59
|
+
* place by the height of the content, again whenever that changes; on iOS a list left empty by unsupported values
|
|
60
|
+
* gives `['large']`. On Android the Material sheet has three resting places at most: the lowest stop of the list, the
|
|
61
|
+
* highest, and one between them, `selectedDetent` when it stands there, else the lowest of the others; the rest are
|
|
62
|
+
* dropped. Stops of the same height there are one.
|
|
56
63
|
* @default ['large']
|
|
57
64
|
*/
|
|
58
65
|
detents?: OptionsModalSheetDetent[];
|
|
59
66
|
/**
|
|
60
|
-
* The stop the sheet opens on; a
|
|
61
|
-
* send `sheetDetentChanged`.
|
|
62
|
-
*
|
|
67
|
+
* The stop the sheet opens on; a `mergeOptions` that names it moves the sheet there with an animation, and doesn't
|
|
68
|
+
* send `sheetDetentChanged`. Nothing else moves the sheet off the stop it stands at, the one the user dragged it to
|
|
69
|
+
* included: a `mergeOptions` without it, a new layout or new content. A value that isn't among `detents` opens on
|
|
70
|
+
* the lowest stop on iOS and is ignored on Android.
|
|
63
71
|
* Without it, the lowest stop.
|
|
64
72
|
*/
|
|
65
73
|
selectedDetent?: OptionsModalSheetDetent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modals.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/modals.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"modals.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/modals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,6BAA6B,GACrC,WAAW,GACX,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,oBAAoB,GACpB,gBAAgB,GAChB,SAAS,CAAC;AAEd;;;;;;;;;GASG;AACH,MAAM,MAAM,2BAA2B,GACrC,eAAe,GAAG,eAAe,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACpC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACvD;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,mCAAmC;AACnC,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAErE;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,mEAAmE;IACnE,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,mDAAmD;IACnD,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -18,8 +18,8 @@ export interface SideMenuSide {
|
|
|
18
18
|
visible?: boolean;
|
|
19
19
|
/**
|
|
20
20
|
* Whether the opening or closing that `visible` asks for is animated. With `false` it happens at once and the
|
|
21
|
-
* screens of the menu get the same appearance events in the same order,
|
|
22
|
-
*
|
|
21
|
+
* screens of the menu get the same appearance events in the same order: WillAppear, then DidAppear. It acts only
|
|
22
|
+
* together with `visible` in the same merge.
|
|
23
23
|
* @default true
|
|
24
24
|
*/
|
|
25
25
|
animate?: boolean;
|
|
@@ -32,15 +32,16 @@ export interface SideMenuSide {
|
|
|
32
32
|
enabled?: boolean;
|
|
33
33
|
/**
|
|
34
34
|
* The width of the menu, in points on iOS and dp on Android. It is capped at the width of the side menu (iOS) and at
|
|
35
|
-
* that width less 64 dp (Android).
|
|
36
|
-
*
|
|
35
|
+
* that width less 64 dp (Android). A change in `mergeOptions` applies at once, also to an open menu. A width set by
|
|
36
|
+
* a screen of the center acts while that screen shows.
|
|
37
37
|
* Without it, 280 points on iOS and the width of the side menu less 64 dp on Android (the least gap the Material
|
|
38
38
|
* drawer leaves).
|
|
39
39
|
*/
|
|
40
40
|
width?: number;
|
|
41
41
|
/**
|
|
42
|
-
* (Android) The height of the menu in dp; a menu lower than the container is pinned to the top.
|
|
43
|
-
*
|
|
42
|
+
* (Android) The height of the menu in dp; a menu lower than the container is pinned to the top. A change in
|
|
43
|
+
* `mergeOptions` applies at once, also to an open menu. Without it, the menu takes the full height under the status
|
|
44
|
+
* bar. iOS doesn't read it.
|
|
44
45
|
*/
|
|
45
46
|
height?: number;
|
|
46
47
|
/**
|
|
@@ -91,6 +92,8 @@ export type SideMenuOpenGestureMode = 'bezel' | 'entireScreen';
|
|
|
91
92
|
* the center.
|
|
92
93
|
*/
|
|
93
94
|
export type SideMenuAnimationType = 'parallax' | 'slide' | 'slide-and-scale' | 'door';
|
|
95
|
+
/** When the screens of the menus of a side menu are created: see `sideMenu.menusAttachMode`. */
|
|
96
|
+
export type SideMenuAttachMode = 'together' | 'afterCenter' | 'onOpen';
|
|
94
97
|
/**
|
|
95
98
|
* The options of a side menu: a center with a menu on the left, on the right or on both sides. They are set in the
|
|
96
99
|
* options of the side menu, in the options of the screens inside it (through `mergeOptions` or the screen definition)
|
|
@@ -118,6 +121,20 @@ export interface OptionsSideMenu {
|
|
|
118
121
|
* the center moves. It does nothing in `'aboveContent'` mode. A change applies at once. Android doesn't read it.
|
|
119
122
|
*/
|
|
120
123
|
animationType?: SideMenuAnimationType;
|
|
124
|
+
/**
|
|
125
|
+
* When the screens of the menus are created, together with their React content: `'together'` creates them with the
|
|
126
|
+
* center; `'afterCenter'` creates them right after the center first appears, so they don't compete with its first
|
|
127
|
+
* render and still show at once on the first open; `'onOpen'` creates a menu the first time it starts to open — from
|
|
128
|
+
* a swipe, from `visible: true` or from `visible` in the layout — and until React draws its screen the menu shows its
|
|
129
|
+
* background. A command to a screen of a menu not created yet works: a push into its stack and `mergeOptions` wait
|
|
130
|
+
* for the menu like a tab not yet selected. The screens of a menu get appear events only when it opens, in every
|
|
131
|
+
* mode. With `appProvider` the screens render in the app's React tree at once in every mode, and the mode delays only
|
|
132
|
+
* their native containers. On iOS a menu's test identifier (`<testID>.left`, `<testID>.right`) is there once the menu
|
|
133
|
+
* is created; on Android from the start. It applies when the side menu is created, from its own options or the default options;
|
|
134
|
+
* `mergeOptions` does not change it.
|
|
135
|
+
* @default 'together'
|
|
136
|
+
*/
|
|
137
|
+
menusAttachMode?: SideMenuAttachMode;
|
|
121
138
|
/**
|
|
122
139
|
* The test identifier of the side menu's container (on iOS its view, on Android the drawer). The parts derive from
|
|
123
140
|
* it: `<testID>.center`, `<testID>.left`, `<testID>.right`, and on iOS `<testID>.scrim` for the dimming over the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sideMenu.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/sideMenu.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf
|
|
1
|
+
{"version":3,"file":"sideMenu.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/sideMenu.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC;IAC1C;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,cAAc,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,OAAO,GAAG,iBAAiB,GAAG,MAAM,CAAC;AAEtF,gGAAgG;AAChG,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,sBAAsB;IACtB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C;;;OAGG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -25,16 +25,30 @@ export interface HardwareBackButtonOptions {
|
|
|
25
25
|
* @internal
|
|
26
26
|
*/
|
|
27
27
|
dismissModalOnPress?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* (Android) Whether back on the first screen of the app, with nothing left to go back to, plays the system's
|
|
30
|
+
* animation of going home. The system decides it as the gesture starts, so with `false` the navigation keeps the
|
|
31
|
+
* back on that screen too: the gesture shows no animation, and on release the press goes to `BackHandler` listeners,
|
|
32
|
+
* then to the activity's own back (`invokeDefaultOnBackPressed` of the app's activity, such as `moveTaskToBack`).
|
|
33
|
+
* Read from the screen back acts on; set it in the default options for the whole app. iOS ignores it.
|
|
34
|
+
* @default true
|
|
35
|
+
*/
|
|
36
|
+
systemAnimation?: boolean;
|
|
28
37
|
}
|
|
29
38
|
/**
|
|
30
39
|
* (Android) A floating action button over the screen, or an entry of its menu. The button shows while its screen is
|
|
31
|
-
* on top of the stack; without the option there is none.
|
|
32
|
-
* the
|
|
40
|
+
* on top of the stack; without the option there is none. It changes as a push or a pop starts and moves with its
|
|
41
|
+
* screen, as the tab bar does: the new screen's button comes in with it, the old one goes out with the screen it
|
|
42
|
+
* belongs to, and an open menu closes. With an animation of the screens' own the old button shrinks away and the new
|
|
43
|
+
* one grows as it starts; during the back gesture the button of the screen under the top shows with that screen.
|
|
44
|
+
* `mergeOptions` and the default options of the app apply, and the colors of the theme are read again when the theme
|
|
45
|
+
* changes.
|
|
33
46
|
*/
|
|
34
47
|
export interface OptionsFab {
|
|
35
48
|
/**
|
|
36
49
|
* The identifier of the button. A press reports it, and the app finds the `onPress` of the button by it. A button
|
|
37
|
-
* without an `id` doesn't show. The same `id` on a later show or merge updates the button
|
|
50
|
+
* without an `id` doesn't show. The same `id` on a later show or merge updates the button, which stays in place
|
|
51
|
+
* while the screens move; another `id` replaces it.
|
|
38
52
|
* For an entry of `actions` it is the id of that entry's own press.
|
|
39
53
|
*/
|
|
40
54
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,aAAU,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAClD;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,aAAU,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAClD;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,kHAAkH;IAClH,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB"}
|
|
@@ -23,20 +23,24 @@ export interface OptionsLayout {
|
|
|
23
23
|
* indicator or navigation bar, the camera cutout. `[]` lets the content reach every edge. The array replaces the
|
|
24
24
|
* one from a lower layer. The screen adds the padding itself; `useSafeAreaInsets()` returns what is still covered,
|
|
25
25
|
* which is 0 on an edge the screen keeps and the whole covered size on an edge where the content goes under a bar.
|
|
26
|
-
* Edges listed here
|
|
26
|
+
* Edges listed here win, but the top under a large title: there the list keeps its first rows clear of the bar
|
|
27
|
+
* itself and scrolls under it, which collapses the title, so a `'top'` listed here counts for nothing.
|
|
27
28
|
*
|
|
28
|
-
* Without it
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* Without it the screen keeps the top and the sides, and its content goes down to the bottom: under the home
|
|
30
|
+
* indicator or the navigation bar, and under a tab bar or toolbar it goes under. A list keeps its last rows clear
|
|
31
|
+
* with `useSafeAreaInsets().bottom`. The top is free where the content goes under a top bar: on iOS under a bar
|
|
32
|
+
* that shows, on Android under a bar that hides on scroll; on both under a large title, so the list scrolls under
|
|
33
|
+
* the bar. On iOS the side of a vertical bar is free too. To have the screen keep the bottom, list every edge it
|
|
34
|
+
* keeps: listed edges replace the default.
|
|
32
35
|
*/
|
|
33
36
|
safeAreaEdges?: SafeAreaEdge[];
|
|
34
37
|
/**
|
|
35
38
|
* The color of the screen, also under its React content. On iOS it is the background of the screen's view (the
|
|
36
39
|
* system background without it); stacks, tabs and side menus paint their view with the color of the screen that
|
|
37
40
|
* shows, seen behind transparent bars and around screens during transitions. On Android it fills the screen and
|
|
38
|
-
* its containers but leaves room at the top for the status bar while it shows
|
|
39
|
-
*
|
|
41
|
+
* its containers but leaves room at the top for the status bar while it shows; without it a React screen takes
|
|
42
|
+
* `android:colorBackground` of the app's theme (in a sheet it shows the sheet's surface, and a native screen paints
|
|
43
|
+
* its own view), so the screen below never shows through. `null` makes the background transparent.
|
|
40
44
|
*/
|
|
41
45
|
backgroundColor?: Color;
|
|
42
46
|
/**
|
|
@@ -140,7 +144,9 @@ export interface OptionsStatusBar {
|
|
|
140
144
|
* and buttons sits below the bar), and a screen without a top bar starts below the bar. `true` lets a screen without
|
|
141
145
|
* a top bar start at the top of the window, with its safe area keeping content below. `false` starts the top bar
|
|
142
146
|
* below the status bar, which keeps its own color. A sheet modal has no status bar above it, so this does not apply
|
|
143
|
-
* there.
|
|
147
|
+
* there. An overlay covers the whole window, so its screens go under the status bar without it (a dimmed backdrop
|
|
148
|
+
* dims the status bar too), and `false`, in its options or in the default options, starts them below. On iOS the
|
|
149
|
+
* screen is always under the status bar and the safe area keeps the content below.
|
|
144
150
|
*/
|
|
145
151
|
drawBehind?: boolean;
|
|
146
152
|
/**
|
|
@@ -165,9 +171,10 @@ export interface OptionsStatusBar {
|
|
|
165
171
|
*/
|
|
166
172
|
hideWithTopBar?: boolean;
|
|
167
173
|
/**
|
|
168
|
-
* (iOS) Whether a blur shows under the status bar, drawn over the screen in the
|
|
169
|
-
*
|
|
170
|
-
*
|
|
174
|
+
* (iOS) Whether a blur shows under the status bar, drawn over the screen in the status bar's frame. It applies when
|
|
175
|
+
* the screen appears and through `mergeOptions`; `false` removes it. The blur follows the status bar's frame as it
|
|
176
|
+
* changes: a rotation, a new window size, the status bar hidden or shown. Android has no blur under the status bar,
|
|
177
|
+
* so it does nothing there.
|
|
171
178
|
* @default false
|
|
172
179
|
*/
|
|
173
180
|
blur?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAU,CAAC;AAEtC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,SAAS,GACT,UAAU,GACV,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,iBAAiB,GACjB,gBAAgB,CAAC;AAErB;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/options/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAU,CAAC;AAEtC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,SAAS,GACT,UAAU,GACV,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,iBAAiB,GACjB,gBAAgB,CAAC;AAErB;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB;;;OAGG;IACH,wBAAwB,CAAC,EAAE,KAAK,CAAC;IACjC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,YAAY,EAAE,CAAC;IACrC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qHAAqH;AACrH,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAEjG;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,+GAA+G;IAC/G,SAAS,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACxC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -3,7 +3,7 @@ import type { OptionsTopBarButton } from './buttons.js';
|
|
|
3
3
|
export interface OptionsToolbarSpace {
|
|
4
4
|
/**
|
|
5
5
|
* `'flexibleSpace'` takes the free width and pushes the next buttons to the far edge; `'fixedSpace'` is a gap of zero
|
|
6
|
-
* width that starts a new capsule
|
|
6
|
+
* width that starts a new capsule with the glass design (iOS 26+).
|
|
7
7
|
*/
|
|
8
8
|
systemItem: 'flexibleSpace' | 'fixedSpace';
|
|
9
9
|
}
|
|
@@ -33,7 +33,7 @@ export interface OptionsToolbar {
|
|
|
33
33
|
* The buttons from the leading edge, in the format of the bar buttons: text, icon, SF Symbol, `systemItem`, a
|
|
34
34
|
* component (drawn before the screen shows), `enabled`, `color`, `style`, `menu` (it opens upward), `toggle`,
|
|
35
35
|
* `showText`, `group`; also spaces and the search field. A press sends a button press. The color of a side doesn't
|
|
36
|
-
* apply to them, and badges are not drawn.
|
|
36
|
+
* apply to them, and badges are not drawn. With the glass design (iOS 26+, see `UIDesignRequiresCompatibility`) each button has its own capsule, neighbor icons with the same
|
|
37
37
|
* `group` share one (the toolbar has no real groups, so text buttons never share), and a zero-width space is put
|
|
38
38
|
* between neighbors of different groups unless an explicit space is there. The list is replaced as a whole;
|
|
39
39
|
* `mergeOptions` animates it.
|
|
@@ -6,7 +6,11 @@ import type { Color, FontFamily, FontStyle, FontWeight, ImageResource } from './
|
|
|
6
6
|
* `name` replaces it.
|
|
7
7
|
*/
|
|
8
8
|
export interface OptionsTopBarTitleComponent {
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* The id of the component. Without it, the library gives one made of the screen, the component's place in the
|
|
11
|
+
* options and its `name`: it stays the same for every `mergeOptions` of the screen, so the mounted component stays
|
|
12
|
+
* and only its props change. The same `name` and `id` mean the same component.
|
|
13
|
+
*/
|
|
10
14
|
id?: string;
|
|
11
15
|
/** The name of the registered component. */
|
|
12
16
|
name: string;
|
|
@@ -39,7 +43,7 @@ export interface OptionsTopBarTitleDocument {
|
|
|
39
43
|
export interface OptionsTopBarTitle {
|
|
40
44
|
/**
|
|
41
45
|
* The text of the title. Setting it removes a React title. On iOS it is the title of the screen's navigation item,
|
|
42
|
-
* the label the system shows on the next screen's back button
|
|
46
|
+
* the label the system shows on the next screen's back button without the glass design, and what Rename edits. On Android it
|
|
43
47
|
* is one line cut with an ellipsis, and also the text of the large title; a title component set together with the
|
|
44
48
|
* text drops the text and the subtitle (with a warning in development).
|
|
45
49
|
*/
|
|
@@ -83,9 +87,9 @@ export interface OptionsTopBarTitle {
|
|
|
83
87
|
*/
|
|
84
88
|
document?: OptionsTopBarTitleDocument;
|
|
85
89
|
/**
|
|
86
|
-
* (iOS 26
|
|
90
|
+
* (iOS 26+, glass design) Puts the title on a Liquid Glass capsule like the buttons: `'regular'` or `'clear'`; `'none'` and any
|
|
87
91
|
* other value mean no capsule. A text title and the subtitle are two lines on the capsule; a component title sits on
|
|
88
|
-
* it as it is, the capsule taking its size.
|
|
92
|
+
* it as it is, the capsule taking its size. Without the glass design (see `UIDesignRequiresCompatibility`) and on Android it does nothing.
|
|
89
93
|
*/
|
|
90
94
|
glass?: 'regular' | 'clear' | 'none';
|
|
91
95
|
/** (Android) The height of the row of title and buttons, in dp. By default 64, regardless of `topBar.height`. */
|
|
@@ -106,15 +110,15 @@ export interface OptionsTopBarTitle {
|
|
|
106
110
|
/** The subtitle: a second line under the title. */
|
|
107
111
|
export interface OptionsTopBarSubtitle {
|
|
108
112
|
/**
|
|
109
|
-
* The text of the second line. An empty text removes it.
|
|
110
|
-
* large title and the collapsed bar, and on the capsule when the title has `glass`; a React title hides it.
|
|
111
|
-
*
|
|
113
|
+
* The text of the second line. An empty text removes it. With the glass design (iOS 26+, see `UIDesignRequiresCompatibility`) it is the system subtitle, under the title, the
|
|
114
|
+
* large title and the collapsed bar, and on the capsule when the title has `glass`; a React title hides it. Without
|
|
115
|
+
* it, it makes a two-line title view, only without a large title or a React title. On Android it is the line under
|
|
112
116
|
* the title, hidden when empty and dropped when the title is a component.
|
|
113
117
|
*/
|
|
114
118
|
text?: string;
|
|
115
119
|
/**
|
|
116
|
-
* The size of the font.
|
|
117
|
-
* font;
|
|
120
|
+
* The size of the font. With the glass design only what is set goes to the system subtitle, and any font option sets the whole
|
|
121
|
+
* font; without it the size is 12. On Android it is in sp, 14 by default.
|
|
118
122
|
*/
|
|
119
123
|
fontSize?: number;
|
|
120
124
|
/** The color of the subtitle. On Android the theme's on-surface-variant color by default. */
|
|
@@ -164,14 +168,14 @@ export interface OptionsTopBarBackButton {
|
|
|
164
168
|
*/
|
|
165
169
|
visible?: boolean;
|
|
166
170
|
/**
|
|
167
|
-
* (iOS) The text of the back button.
|
|
168
|
-
* the screen below is never shown;
|
|
171
|
+
* (iOS) The text of the back button. With the glass design (iOS 26+, see `UIDesignRequiresCompatibility`) the system button without it is an arrow alone,
|
|
172
|
+
* since the title of the screen below is never shown; without it, it is that title while it fits. It is set on the screen below, as
|
|
169
173
|
* its back button title.
|
|
170
174
|
*/
|
|
171
175
|
title?: string;
|
|
172
176
|
/**
|
|
173
177
|
* (iOS) `true` shows the title of the screen below (or `title`), `false` shows an arrow alone (the minimal mode).
|
|
174
|
-
* Without it the system decides;
|
|
178
|
+
* Without it the system decides; with the glass design that is the arrow.
|
|
175
179
|
*/
|
|
176
180
|
showTitle?: boolean;
|
|
177
181
|
/**
|
|
@@ -194,7 +198,7 @@ export interface OptionsTopBarBackButton {
|
|
|
194
198
|
/**
|
|
195
199
|
* A shape behind the icon, as for a button. It takes effect with a `color` of the shape. On iOS the icon (the
|
|
196
200
|
* chevron by default) is drawn on it and the back button becomes an own button that keeps the history menu unless
|
|
197
|
-
* `enableMenu` is `false`; without a capsule
|
|
201
|
+
* `enableMenu` is `false`; without a capsule with the glass design by default. On Android the arrow sits on the shape.
|
|
198
202
|
*/
|
|
199
203
|
iconBackground?: IconBackgroundOptions;
|
|
200
204
|
/**
|
|
@@ -215,7 +219,7 @@ export interface OptionsTopBarBackButton {
|
|
|
215
219
|
*/
|
|
216
220
|
displayMode?: 'default' | 'generic' | 'minimal';
|
|
217
221
|
/**
|
|
218
|
-
* (iOS 26
|
|
222
|
+
* (iOS 26+, glass design) Whether the Liquid Glass capsule under the back button is hidden. It works only for an own button with
|
|
219
223
|
* an `iconBackground`, where the shape is already drawn into the icon; the system button ignores it.
|
|
220
224
|
* @default true
|
|
221
225
|
*/
|
|
@@ -231,9 +235,9 @@ export interface OptionsTopBarBackButton {
|
|
|
231
235
|
/** The background of the bar: a color, a component, translucency and blur. */
|
|
232
236
|
export interface OptionsTopBarBackground {
|
|
233
237
|
/**
|
|
234
|
-
* The color of the bar. On iOS it fills both the standard look and the one at the scroll edge;
|
|
235
|
-
* then solid in this color instead of glass. A transparent color makes a transparent bar. It beats `blur` and
|
|
236
|
-
* `translucent`. With a large title
|
|
238
|
+
* The color of the bar. On iOS it fills both the standard look and the one at the scroll edge; with the glass design the bar is
|
|
239
|
+
* then solid in this color instead of glass; without it (`UIDesignRequiresCompatibility`) it is the opaque bar of before iOS 26. A transparent color makes a transparent bar. It beats `blur` and
|
|
240
|
+
* `translucent`. With a large title and the glass design the color is drawn into the list under the title, and the collapsed bar
|
|
237
241
|
* paints itself. On Android it is the background of the bar with the status bar strip, by default the theme's
|
|
238
242
|
* surface color, changing at once on push and pop. Together with `component` the color lies under the component.
|
|
239
243
|
*/
|
|
@@ -252,8 +256,8 @@ export interface OptionsTopBarBackground {
|
|
|
252
256
|
*/
|
|
253
257
|
component?: OptionsTopBarBackgroundComponent;
|
|
254
258
|
/**
|
|
255
|
-
* (iOS) Whether content shows through the bar. By default `true`
|
|
256
|
-
* the bar is glass
|
|
259
|
+
* (iOS) Whether content shows through the bar. By default `true` with the glass design (iOS 26+, see `UIDesignRequiresCompatibility`) and `false` without it. With `true`
|
|
260
|
+
* the bar is glass with the glass design and the system translucent bar without it; with `false` it is solid in the system color.
|
|
257
261
|
* `color` and `blur` beat it. Only an explicit `true` puts the screen under the bar.
|
|
258
262
|
*/
|
|
259
263
|
translucent?: boolean;
|
|
@@ -265,7 +269,11 @@ export interface OptionsTopBarBackground {
|
|
|
265
269
|
}
|
|
266
270
|
/** The React component that is the background of the bar. */
|
|
267
271
|
export interface OptionsTopBarBackgroundComponent {
|
|
268
|
-
/**
|
|
272
|
+
/**
|
|
273
|
+
* The id of the component. Without it, the library gives one made of the screen, the component's place in the
|
|
274
|
+
* options and its `name`: it stays the same for every `mergeOptions` of the screen, so the mounted component stays
|
|
275
|
+
* and only its props change. The same `name` and `id` mean the same component.
|
|
276
|
+
*/
|
|
269
277
|
id?: string;
|
|
270
278
|
/** The name of the registered component. */
|
|
271
279
|
name: string;
|
|
@@ -281,7 +289,7 @@ export interface OptionsTopBarBackgroundComponent {
|
|
|
281
289
|
export interface OptionsTopBarScrollEdgeAppearanceTitle {
|
|
282
290
|
/** The size of the font, handled like `topBar.title.fontSize`. */
|
|
283
291
|
fontSize?: number;
|
|
284
|
-
/** The color of the title at the edge.
|
|
292
|
+
/** The color of the title at the edge. With the glass design it is fixed during a push, like the usual title color. */
|
|
285
293
|
color?: Color;
|
|
286
294
|
/** The font family, handled like `topBar.title.fontFamily`. */
|
|
287
295
|
fontFamily?: FontFamily;
|
|
@@ -305,7 +313,7 @@ export interface OptionsTopBarScrollEdgeAppearanceBackground {
|
|
|
305
313
|
}
|
|
306
314
|
/**
|
|
307
315
|
* (iOS) How the bar looks while the list is at its top edge. Without `active` the edge looks as the usual bar, except
|
|
308
|
-
* for the transparency under a large title
|
|
316
|
+
* for the transparency under a large title with the glass design; the title and the border at the edge still come from the fields
|
|
309
317
|
* here or from the usual ones. Android doesn't read it.
|
|
310
318
|
*/
|
|
311
319
|
export interface OptionsTopBarScrollEdgeAppearance {
|
|
@@ -315,7 +323,7 @@ export interface OptionsTopBarScrollEdgeAppearance {
|
|
|
315
323
|
background?: OptionsTopBarScrollEdgeAppearanceBackground;
|
|
316
324
|
/**
|
|
317
325
|
* Whether the bar has a background of its own at the edge (`background`). With it the edge isn't made transparent
|
|
318
|
-
* under a large title, and
|
|
326
|
+
* under a large title, and with the glass design an opaque color covers the large title. A change by `mergeOptions` applies at
|
|
319
327
|
* once.
|
|
320
328
|
* @default false
|
|
321
329
|
*/
|
|
@@ -350,7 +358,7 @@ export interface OptionsTopBarLargeTitle {
|
|
|
350
358
|
* Whether the large title collapses into the bar as the list scrolls. With `false` on iOS the bar follows an empty
|
|
351
359
|
* scroll view instead of the list, so the title stays as at the top of the list; under the row it then needs a
|
|
352
360
|
* background (`background.color`, else a system blur), and `searchBar.hideOnScroll` doesn't work. On Android `false`
|
|
353
|
-
* leaves the bar as it is and stops listening to the list.
|
|
361
|
+
* leaves the bar as it is and stops listening to the list. With the glass design in a right-to-left layout nothing collapses.
|
|
354
362
|
* @default true
|
|
355
363
|
*/
|
|
356
364
|
collapseOnScroll?: boolean;
|
|
@@ -413,7 +421,11 @@ export interface OptionsSearchBarSuggestion {
|
|
|
413
421
|
* component; a different `id` or `name` replaces the component, and so the search.
|
|
414
422
|
*/
|
|
415
423
|
export interface OptionsSearchBarResultsComponent {
|
|
416
|
-
/**
|
|
424
|
+
/**
|
|
425
|
+
* The id of the component. Without it, the library gives one made of the screen, the component's place in the
|
|
426
|
+
* options and its `name`: it stays the same for every `mergeOptions` of the screen, so the mounted component stays
|
|
427
|
+
* and only its props change. The same `name` and `id` mean the same component.
|
|
428
|
+
*/
|
|
417
429
|
id?: string;
|
|
418
430
|
/** The name of the registered component. */
|
|
419
431
|
name: string;
|
|
@@ -498,8 +510,9 @@ export interface OptionsSearchBar {
|
|
|
498
510
|
*/
|
|
499
511
|
scopes?: OptionsSearchBarScope[];
|
|
500
512
|
/**
|
|
501
|
-
* The id of the selected scope; without it, or with an unknown id, the first. The user's pick
|
|
502
|
-
*
|
|
513
|
+
* The id of the selected scope; without it, or with an unknown id, the first. The user's pick stays with the screen,
|
|
514
|
+
* after coming back, through a `mergeOptions` that sends the same value again and `setDefaultOptions`. A
|
|
515
|
+
* `mergeOptions` into the screen with another value switches the scope without an event.
|
|
503
516
|
*/
|
|
504
517
|
selectedScope?: string;
|
|
505
518
|
/**
|
|
@@ -511,15 +524,15 @@ export interface OptionsSearchBar {
|
|
|
511
524
|
scopeBarActivation?: 'automatic' | 'onTextEntry' | 'onSearchActivation';
|
|
512
525
|
/**
|
|
513
526
|
* (iOS) Tokens in front of the text of the field. The search events carry the ids of the tokens in the field as
|
|
514
|
-
* `tokens`; deleting a token sends a search-updated event, and the deleted
|
|
515
|
-
*
|
|
527
|
+
* `tokens`; deleting a token sends a search-updated event, and what the user deleted (or brought back with Undo)
|
|
528
|
+
* stays with the screen until a `mergeOptions` gives other tokens. Closing the search clears the field and its tokens. An empty list removes
|
|
516
529
|
* them all.
|
|
517
530
|
*/
|
|
518
531
|
tokens?: OptionsSearchBarToken[];
|
|
519
532
|
/**
|
|
520
533
|
* (iOS 16+, Android) The suggestions shown while searching. Picking one sends a suggestion-picked event with its id
|
|
521
|
-
* to the screen; the text stays and the list goes. They also go when the user types on
|
|
522
|
-
*
|
|
534
|
+
* to the screen; the text stays and the list goes. They also go when the user types on; the list a `mergeOptions`
|
|
535
|
+
* gives shows again, the same one too, usually on a search-updated event. An empty list removes them.
|
|
523
536
|
*/
|
|
524
537
|
suggestions?: OptionsSearchBarSuggestion[];
|
|
525
538
|
/**
|
|
@@ -603,7 +616,7 @@ export interface OptionsTopBar {
|
|
|
603
616
|
/**
|
|
604
617
|
* The shape color behind the icons of the left buttons that have an `icon` image and no `iconBackground.color`; the
|
|
605
618
|
* size and corners come from the button's `iconBackground`, or the icon's size without corners. On iOS only image
|
|
606
|
-
* buttons, not SF Symbols, and without a capsule
|
|
619
|
+
* buttons, not SF Symbols, and without a capsule with the glass design. A color sent by `mergeOptions` repaints all the side's
|
|
607
620
|
* image buttons, those with their own shape color too.
|
|
608
621
|
*/
|
|
609
622
|
leftButtonBackgroundColor?: Color;
|
|
@@ -620,6 +633,20 @@ export interface OptionsTopBar {
|
|
|
620
633
|
centerButtonColor?: Color;
|
|
621
634
|
/** (iOS 16+) The color of the disabled center buttons that have no `disabledColor` of their own. */
|
|
622
635
|
centerButtonDisabledColor?: Color;
|
|
636
|
+
/**
|
|
637
|
+
* (Android) The background of the bar's menus: "⋮" and the menus of the buttons, their submenus too. Without it the
|
|
638
|
+
* bar's color (`background.color`, else the theme's surface), unless the bar lets something through; then the
|
|
639
|
+
* theme's surface container color. It follows light and dark mode; an open menu closes as the mode switches. iOS
|
|
640
|
+
* draws its system menus in the system's colors.
|
|
641
|
+
*/
|
|
642
|
+
menuBackgroundColor?: Color;
|
|
643
|
+
/**
|
|
644
|
+
* (Android) The color of the text and the icons of the items of the bar's menus, and of the titles of their
|
|
645
|
+
* submenus. Without it the title's color (`title.color`) when the menu takes the bar's color, else the theme's
|
|
646
|
+
* colors. A destructive item stays red, and a button moved into "⋮" keeps its own color or the side's
|
|
647
|
+
* (`rightButtonColor`). A disabled item is dimmed. An open menu closes when either menu color is merged.
|
|
648
|
+
*/
|
|
649
|
+
menuTextColor?: Color;
|
|
623
650
|
/**
|
|
624
651
|
* Whether the content of the screen goes under the bar, starting at the top of the screen. The screen goes under the
|
|
625
652
|
* bar by itself in some cases (a large title that may show, `hideOnScroll`, a hidden bar, an explicit translucent
|
|
@@ -777,12 +804,15 @@ export interface OptionsScrollEdge {
|
|
|
777
804
|
}
|
|
778
805
|
/**
|
|
779
806
|
* (iOS 26+) The scroll edge effect of the scroll views of a screen: how the content fades or blurs where it scrolls
|
|
780
|
-
* under a bar. The scroll views draw it, and only where content goes under a bar.
|
|
781
|
-
*
|
|
782
|
-
* `
|
|
783
|
-
*
|
|
784
|
-
*
|
|
785
|
-
*
|
|
807
|
+
* under a bar. The scroll views draw it, and only where content goes under a bar. When the screen appears, it applies
|
|
808
|
+
* to the vertical lists and text views (a multi-line `TextInput`) in the view of the screen, except in hidden views
|
|
809
|
+
* (`display: none`). A list inside another vertical list gets none (UIKit draws no edge effect there); a scroll view
|
|
810
|
+
* that doesn't scroll vertically, like a pager, is searched for its lists. A list nested very deep in the screen's
|
|
811
|
+
* views may not get it. After React mounts, the main list of the screen gets it; a list mounted later gets it at the
|
|
812
|
+
* next appearance, or at a `mergeOptions` of `scrollEdgeEffect` or of the bar's background. The lists get the system
|
|
813
|
+
* effect back when the screen leaves or is destroyed, and a list React removes from the screen gets it back too. Under
|
|
814
|
+
* a bar with `background.color` or `background.component` there is no effect at the top unless the screen sets one for
|
|
815
|
+
* the top or for all edges. Before iOS 26 and on Android it does nothing.
|
|
786
816
|
*/
|
|
787
817
|
export interface OptionsScrollEdgeEffect {
|
|
788
818
|
/** Whether the effect is hidden on all four edges. The value of an edge beats it. */
|