From 8aff424798d508ab8b71e819abf1613a07577227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20LARIVIERE?= Date: Mon, 8 May 2023 14:20:43 +0200 Subject: [PATCH 1/5] Add NavigationSample with basic navigation --- Fabulous.MauiControls.sln | 7 ++ samples/NavigationSample/App.fs | 27 +++++ .../BasicNavigation/BasicNavigation.fs | 75 ++++++++++++ .../NavigationSample/BasicNavigation/PageA.fs | 34 ++++++ .../NavigationSample/BasicNavigation/PageB.fs | 34 ++++++ .../NavigationSample/BasicNavigation/PageC.fs | 34 ++++++ samples/NavigationSample/MauiProgram.fs | 16 +++ .../NavigationSample/NavigationSample.fsproj | 108 ++++++++++++++++++ .../Platforms/Android/AndroidManifest.xml | 6 + .../Platforms/Android/MainActivity.fs | 17 +++ .../Platforms/Android/MainApplication.fs | 12 ++ .../Android/Resources/values/colors.xml | 6 + .../Platforms/MacCatalyst/AppDelegate.fs | 10 ++ .../Platforms/MacCatalyst/Info.plist | 30 +++++ .../Platforms/MacCatalyst/Program.fs | 9 ++ .../NavigationSample/Platforms/Tizen/Main.fs | 16 +++ .../Platforms/Tizen/tizen-manifest.xml | 15 +++ .../NavigationSample/Platforms/Windows/App.fs | 9 ++ .../Platforms/Windows/Main.fs | 9 ++ .../Platforms/Windows/Package.appxmanifest | 43 +++++++ .../Platforms/Windows/app.manifest | 15 +++ .../Platforms/iOS/AppDelegate.fs | 10 ++ .../NavigationSample/Platforms/iOS/Info.plist | 32 ++++++ .../NavigationSample/Platforms/iOS/Program.fs | 9 ++ .../Properties/launchSettings.json | 8 ++ .../Resources/AppIcon/appicon.svg | 4 + .../Resources/AppIcon/appiconfg.svg | 8 ++ .../Resources/Fonts/OpenSans-Regular.ttf | Bin 0 -> 107140 bytes .../Resources/Fonts/OpenSans-Semibold.ttf | Bin 0 -> 111028 bytes .../Resources/Images/dotnet_bot.svg | 93 +++++++++++++++ .../Resources/Raw/AboutAssets.txt | 15 +++ .../Resources/Splash/splash.svg | 8 ++ 32 files changed, 719 insertions(+) create mode 100644 samples/NavigationSample/App.fs create mode 100644 samples/NavigationSample/BasicNavigation/BasicNavigation.fs create mode 100644 samples/NavigationSample/BasicNavigation/PageA.fs create mode 100644 samples/NavigationSample/BasicNavigation/PageB.fs create mode 100644 samples/NavigationSample/BasicNavigation/PageC.fs create mode 100644 samples/NavigationSample/MauiProgram.fs create mode 100644 samples/NavigationSample/NavigationSample.fsproj create mode 100644 samples/NavigationSample/Platforms/Android/AndroidManifest.xml create mode 100644 samples/NavigationSample/Platforms/Android/MainActivity.fs create mode 100644 samples/NavigationSample/Platforms/Android/MainApplication.fs create mode 100644 samples/NavigationSample/Platforms/Android/Resources/values/colors.xml create mode 100644 samples/NavigationSample/Platforms/MacCatalyst/AppDelegate.fs create mode 100644 samples/NavigationSample/Platforms/MacCatalyst/Info.plist create mode 100644 samples/NavigationSample/Platforms/MacCatalyst/Program.fs create mode 100644 samples/NavigationSample/Platforms/Tizen/Main.fs create mode 100644 samples/NavigationSample/Platforms/Tizen/tizen-manifest.xml create mode 100644 samples/NavigationSample/Platforms/Windows/App.fs create mode 100644 samples/NavigationSample/Platforms/Windows/Main.fs create mode 100644 samples/NavigationSample/Platforms/Windows/Package.appxmanifest create mode 100644 samples/NavigationSample/Platforms/Windows/app.manifest create mode 100644 samples/NavigationSample/Platforms/iOS/AppDelegate.fs create mode 100644 samples/NavigationSample/Platforms/iOS/Info.plist create mode 100644 samples/NavigationSample/Platforms/iOS/Program.fs create mode 100644 samples/NavigationSample/Properties/launchSettings.json create mode 100644 samples/NavigationSample/Resources/AppIcon/appicon.svg create mode 100644 samples/NavigationSample/Resources/AppIcon/appiconfg.svg create mode 100644 samples/NavigationSample/Resources/Fonts/OpenSans-Regular.ttf create mode 100644 samples/NavigationSample/Resources/Fonts/OpenSans-Semibold.ttf create mode 100644 samples/NavigationSample/Resources/Images/dotnet_bot.svg create mode 100644 samples/NavigationSample/Resources/Raw/AboutAssets.txt create mode 100644 samples/NavigationSample/Resources/Splash/splash.svg diff --git a/Fabulous.MauiControls.sln b/Fabulous.MauiControls.sln index 730e272..3ff9d3a 100644 --- a/Fabulous.MauiControls.sln +++ b/Fabulous.MauiControls.sln @@ -34,6 +34,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Solution Files", "_Solutio EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Gallery", "samples\Gallery\Gallery.fsproj", "{A28D6852-F21C-4A43-93AF-CC71050028A9}" EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "NavigationSample", "samples\NavigationSample\NavigationSample.fsproj", "{4E8D5F4A-424E-431E-9CE9-693C6577FCCB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -81,6 +83,10 @@ Global {A28D6852-F21C-4A43-93AF-CC71050028A9}.Release|Any CPU.Build.0 = Release|Any CPU {A28D6852-F21C-4A43-93AF-CC71050028A9}.Debug|Any CPU.Deploy.0 = Debug|Any CPU {A28D6852-F21C-4A43-93AF-CC71050028A9}.Release|Any CPU.Deploy.0 = Release|Any CPU + {4E8D5F4A-424E-431E-9CE9-693C6577FCCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4E8D5F4A-424E-431E-9CE9-693C6577FCCB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4E8D5F4A-424E-431E-9CE9-693C6577FCCB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4E8D5F4A-424E-431E-9CE9-693C6577FCCB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {67FB01A1-1A3E-4A3B-83DC-7D63B56FB1A1} = {35A6823C-8312-4F92-818A-5117BB31A569} @@ -90,5 +96,6 @@ Global {BD278E92-A806-4913-AB2D-59D59FE8E2AD} = {87C8E9E8-497E-46DB-90FE-4402E0CB230A} {97FE743C-512F-44BA-92CF-3EB3A7972E5D} = {87C8E9E8-497E-46DB-90FE-4402E0CB230A} {A28D6852-F21C-4A43-93AF-CC71050028A9} = {87C8E9E8-497E-46DB-90FE-4402E0CB230A} + {4E8D5F4A-424E-431E-9CE9-693C6577FCCB} = {87C8E9E8-497E-46DB-90FE-4402E0CB230A} EndGlobalSection EndGlobal diff --git a/samples/NavigationSample/App.fs b/samples/NavigationSample/App.fs new file mode 100644 index 0000000..ee04d54 --- /dev/null +++ b/samples/NavigationSample/App.fs @@ -0,0 +1,27 @@ +namespace NavigationSample + +open Fabulous +open Fabulous.Maui +open NavigationSample.BasicNavigation + +open type Fabulous.Maui.View + +module App = + type Model = + { BasicNavigationModel: BasicNavigation.Model } + + type Msg = BasicNavigationMsg of BasicNavigation.Msg + + let init () = + { BasicNavigationModel = BasicNavigation.init() } + + let update msg model = + match msg with + | BasicNavigationMsg m -> { BasicNavigationModel = BasicNavigation.update m model.BasicNavigationModel } + + let view model = + Application( + View.map BasicNavigationMsg (BasicNavigation.view model.BasicNavigationModel) + ) + + let program = Program.stateful init update view diff --git a/samples/NavigationSample/BasicNavigation/BasicNavigation.fs b/samples/NavigationSample/BasicNavigation/BasicNavigation.fs new file mode 100644 index 0000000..6e14581 --- /dev/null +++ b/samples/NavigationSample/BasicNavigation/BasicNavigation.fs @@ -0,0 +1,75 @@ +namespace NavigationSample.BasicNavigation + +open Fabulous +open Fabulous.Maui + +open type Fabulous.Maui.View + +/// The most basic navigation with Fabulous is done by swapping widgets. +/// +/// In this sample, we have three pages, and we swap between them by changing the "current step" (represented by a discriminated union). +/// All three pages' models are loaded at the same time, but only the current page is rendered. +/// +/// NOTE: This approach is not using any official navigation system. +/// Hence there is no back button, no navigation history, no animations, etc by default. +/// Fabulous will only give the illusion of navigation by swapping the pages. +module BasicNavigation = + [] + type Step = + | PageA + | PageB + | PageC + + type Model = + { CurrentStep: Step + PageAModel: PageA.Model + PageBModel: PageB.Model + PageCModel: PageC.Model } + + type Msg = + | PageAMsg of PageA.Msg + | PageBMsg of PageB.Msg + | PageCMsg of PageC.Msg + | GoToPageA + | GoToPageB + | GoToPageC + + let init () = + { CurrentStep = Step.PageA + PageAModel = PageA.init() + PageBModel = PageB.init() + PageCModel = PageC.init() } + + let update msg model = + match msg with + | PageAMsg msg -> { model with PageAModel = PageA.update msg model.PageAModel } + | PageBMsg msg -> { model with PageBModel = PageB.update msg model.PageBModel } + | PageCMsg msg -> { model with PageCModel = PageC.update msg model.PageCModel } + | GoToPageA -> { model with CurrentStep = Step.PageA } + | GoToPageB -> { model with CurrentStep = Step.PageB } + | GoToPageC -> { model with CurrentStep = Step.PageC } + + let view model = + ContentPage( + (Grid(coldefs = [Star; Star; Star], rowdefs = [Auto; Star]) { + Button("Page A", GoToPageA) + .gridColumn(0) + + Button("Page B", GoToPageB) + .gridColumn(1) + + Button("Page C", GoToPageC) + .gridColumn(2) + + + ( + match model.CurrentStep with + | Step.PageA -> View.map PageAMsg (PageA.view model.PageAModel) + | Step.PageB -> View.map PageBMsg (PageB.view model.PageBModel) + | Step.PageC -> View.map PageCMsg (PageC.view model.PageCModel) + ) + .gridRow(1) + .gridColumnSpan(3) + }) + .rowSpacing(30.) + ) \ No newline at end of file diff --git a/samples/NavigationSample/BasicNavigation/PageA.fs b/samples/NavigationSample/BasicNavigation/PageA.fs new file mode 100644 index 0000000..a48941c --- /dev/null +++ b/samples/NavigationSample/BasicNavigation/PageA.fs @@ -0,0 +1,34 @@ +namespace NavigationSample.BasicNavigation + +open Fabulous.Maui + +open type Fabulous.Maui.View + +module PageA = + type Model = + { Count: int } + + type Msg = + | Increment + | Decrement + + let init () = { Count = 0 } + + let update msg model = + match msg with + | Increment -> { model with Count = model.Count + 1 } + | Decrement -> { model with Count = model.Count - 1 } + + let view model = + VStack() { + Label("Page A") + .font(32.) + .centerTextHorizontal() + .margin(0., 0., 0., 30.) + + Label($"Count: {model.Count}") + .centerTextHorizontal() + + Button("Increment", Increment) + Button("Decrement", Decrement) + } \ No newline at end of file diff --git a/samples/NavigationSample/BasicNavigation/PageB.fs b/samples/NavigationSample/BasicNavigation/PageB.fs new file mode 100644 index 0000000..21759bc --- /dev/null +++ b/samples/NavigationSample/BasicNavigation/PageB.fs @@ -0,0 +1,34 @@ +namespace NavigationSample.BasicNavigation + +open Fabulous.Maui + +open type Fabulous.Maui.View + +module PageB = + type Model = + { Count: int } + + type Msg = + | Increment + | Decrement + + let init () = { Count = 0 } + + let update msg model = + match msg with + | Increment -> { model with Count = model.Count + 1 } + | Decrement -> { model with Count = model.Count - 1 } + + let view model = + VStack() { + Label("Page B") + .font(32.) + .centerTextHorizontal() + .margin(0., 0., 0., 30.) + + Label($"Count: {model.Count}") + .centerTextHorizontal() + + Button("Increment", Increment) + Button("Decrement", Decrement) + } \ No newline at end of file diff --git a/samples/NavigationSample/BasicNavigation/PageC.fs b/samples/NavigationSample/BasicNavigation/PageC.fs new file mode 100644 index 0000000..3a83e41 --- /dev/null +++ b/samples/NavigationSample/BasicNavigation/PageC.fs @@ -0,0 +1,34 @@ +namespace NavigationSample.BasicNavigation + +open Fabulous.Maui + +open type Fabulous.Maui.View + +module PageC = + type Model = + { Count: int } + + type Msg = + | Increment + | Decrement + + let init () = { Count = 0 } + + let update msg model = + match msg with + | Increment -> { model with Count = model.Count + 1 } + | Decrement -> { model with Count = model.Count - 1 } + + let view model = + VStack() { + Label("Page C") + .font(32.) + .centerTextHorizontal() + .margin(0., 0., 0., 30.) + + Label($"Count: {model.Count}") + .centerTextHorizontal() + + Button("Increment", Increment) + Button("Decrement", Decrement) + } \ No newline at end of file diff --git a/samples/NavigationSample/MauiProgram.fs b/samples/NavigationSample/MauiProgram.fs new file mode 100644 index 0000000..a58e9da --- /dev/null +++ b/samples/NavigationSample/MauiProgram.fs @@ -0,0 +1,16 @@ +namespace NavigationSample + +open Microsoft.Maui.Hosting +open Fabulous.Maui + +type MauiProgram = + static member CreateMauiApp() = + MauiApp + .CreateBuilder() + .UseFabulousApp(App.program) + .ConfigureFonts(fun fonts -> + fonts + .AddFont("OpenSans-Regular.ttf", "OpenSansRegular") + .AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold") + |> ignore) + .Build() diff --git a/samples/NavigationSample/NavigationSample.fsproj b/samples/NavigationSample/NavigationSample.fsproj new file mode 100644 index 0000000..a04fd8b --- /dev/null +++ b/samples/NavigationSample/NavigationSample.fsproj @@ -0,0 +1,108 @@ + + + + net7.0-android;net7.0-ios;net7.0-maccatalyst + $(TargetFrameworks);net7.0-windows10.0.19041.0 + + + Exe + NavigationSample + true + true + false + + + NavigationSample + + + org.fabulous.maui.navigationsample + c6c98ddf-a204-4a7e-be03-2829f110f396 + + + 1.0 + 1 + + $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) + + 14.2 + 14.0 + 21.0 + 10.0.17763.0 + 10.0.17763.0 + 6.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/NavigationSample/Platforms/Android/AndroidManifest.xml b/samples/NavigationSample/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..bdec9b5 --- /dev/null +++ b/samples/NavigationSample/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/samples/NavigationSample/Platforms/Android/MainActivity.fs b/samples/NavigationSample/Platforms/Android/MainActivity.fs new file mode 100644 index 0000000..85f15ab --- /dev/null +++ b/samples/NavigationSample/Platforms/Android/MainActivity.fs @@ -0,0 +1,17 @@ +namespace NavigationSample + +open Android.App +open Android.Content.PM +open Microsoft.Maui + +[] +type MainActivity() = + inherit MauiAppCompatActivity() diff --git a/samples/NavigationSample/Platforms/Android/MainApplication.fs b/samples/NavigationSample/Platforms/Android/MainApplication.fs new file mode 100644 index 0000000..d199a50 --- /dev/null +++ b/samples/NavigationSample/Platforms/Android/MainApplication.fs @@ -0,0 +1,12 @@ +namespace NavigationSample + +open Android.App +open Microsoft.Maui + +[] +type MainApplication(handle, ownership) = + inherit MauiApplication(handle, ownership) + + do NavigationSample.Resource.UpdateIdValues() + + override _.CreateMauiApp() = MauiProgram.CreateMauiApp() diff --git a/samples/NavigationSample/Platforms/Android/Resources/values/colors.xml b/samples/NavigationSample/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..5cd1604 --- /dev/null +++ b/samples/NavigationSample/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/samples/NavigationSample/Platforms/MacCatalyst/AppDelegate.fs b/samples/NavigationSample/Platforms/MacCatalyst/AppDelegate.fs new file mode 100644 index 0000000..90458e5 --- /dev/null +++ b/samples/NavigationSample/Platforms/MacCatalyst/AppDelegate.fs @@ -0,0 +1,10 @@ +namespace NavigationSample + +open Foundation +open Microsoft.Maui + +[] +type AppDelegate() = + inherit MauiUIApplicationDelegate() + + override this.CreateMauiApp() = MauiProgram.CreateMauiApp() diff --git a/samples/NavigationSample/Platforms/MacCatalyst/Info.plist b/samples/NavigationSample/Platforms/MacCatalyst/Info.plist new file mode 100644 index 0000000..0690e47 --- /dev/null +++ b/samples/NavigationSample/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,30 @@ + + + + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/samples/NavigationSample/Platforms/MacCatalyst/Program.fs b/samples/NavigationSample/Platforms/MacCatalyst/Program.fs new file mode 100644 index 0000000..26c87e7 --- /dev/null +++ b/samples/NavigationSample/Platforms/MacCatalyst/Program.fs @@ -0,0 +1,9 @@ +namespace NavigationSample + +open UIKit + +module Program = + [] + let main args = + UIApplication.Main(args, null, typeof) + 0 diff --git a/samples/NavigationSample/Platforms/Tizen/Main.fs b/samples/NavigationSample/Platforms/Tizen/Main.fs new file mode 100644 index 0000000..3d59efd --- /dev/null +++ b/samples/NavigationSample/Platforms/Tizen/Main.fs @@ -0,0 +1,16 @@ +namespace NavigationSample + +open System +open Microsoft.Maui +open Microsoft.Maui.Hosting + +type Program() = + inherit MauiApplication() + + override this.CreateMauiApp() = MauiProgram.CreateMauiApp() + +module Program = + [] + let main args = + let app = Program() + app.Run(args) diff --git a/samples/NavigationSample/Platforms/Tizen/tizen-manifest.xml b/samples/NavigationSample/Platforms/Tizen/tizen-manifest.xml new file mode 100644 index 0000000..83e2649 --- /dev/null +++ b/samples/NavigationSample/Platforms/Tizen/tizen-manifest.xml @@ -0,0 +1,15 @@ + + + + + + appicon.xhigh.png + + + + + http://tizen.org/privilege/internet + + + + \ No newline at end of file diff --git a/samples/NavigationSample/Platforms/Windows/App.fs b/samples/NavigationSample/Platforms/Windows/App.fs new file mode 100644 index 0000000..c2109da --- /dev/null +++ b/samples/NavigationSample/Platforms/Windows/App.fs @@ -0,0 +1,9 @@ +namespace NavigationSample.WinUI + +/// +/// Provides application-specific behavior to supplement the default Application class. +/// +type App() = + inherit FSharp.Maui.WinUICompat.App() + + override this.CreateMauiApp() = NavigationSample.MauiProgram.CreateMauiApp() diff --git a/samples/NavigationSample/Platforms/Windows/Main.fs b/samples/NavigationSample/Platforms/Windows/Main.fs new file mode 100644 index 0000000..501c15d --- /dev/null +++ b/samples/NavigationSample/Platforms/Windows/Main.fs @@ -0,0 +1,9 @@ +namespace NavigationSample.WinUI + +open System + +module Program = + [] + let main args = + do FSharp.Maui.WinUICompat.Program.Main(args, typeof) + 0 diff --git a/samples/NavigationSample/Platforms/Windows/Package.appxmanifest b/samples/NavigationSample/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..e98c6ed --- /dev/null +++ b/samples/NavigationSample/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,43 @@ + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/NavigationSample/Platforms/Windows/app.manifest b/samples/NavigationSample/Platforms/Windows/app.manifest new file mode 100644 index 0000000..c8a173c --- /dev/null +++ b/samples/NavigationSample/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/samples/NavigationSample/Platforms/iOS/AppDelegate.fs b/samples/NavigationSample/Platforms/iOS/AppDelegate.fs new file mode 100644 index 0000000..7418834 --- /dev/null +++ b/samples/NavigationSample/Platforms/iOS/AppDelegate.fs @@ -0,0 +1,10 @@ +namespace NavigationSample + +open Foundation +open Microsoft.Maui + +[] +type AppDelegate() = + inherit MauiUIApplicationDelegate() + + override _.CreateMauiApp() = MauiProgram.CreateMauiApp() diff --git a/samples/NavigationSample/Platforms/iOS/Info.plist b/samples/NavigationSample/Platforms/iOS/Info.plist new file mode 100644 index 0000000..358337b --- /dev/null +++ b/samples/NavigationSample/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/samples/NavigationSample/Platforms/iOS/Program.fs b/samples/NavigationSample/Platforms/iOS/Program.fs new file mode 100644 index 0000000..26c87e7 --- /dev/null +++ b/samples/NavigationSample/Platforms/iOS/Program.fs @@ -0,0 +1,9 @@ +namespace NavigationSample + +open UIKit + +module Program = + [] + let main args = + UIApplication.Main(args, null, typeof) + 0 diff --git a/samples/NavigationSample/Properties/launchSettings.json b/samples/NavigationSample/Properties/launchSettings.json new file mode 100644 index 0000000..c16206a --- /dev/null +++ b/samples/NavigationSample/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "MsixPackage", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/samples/NavigationSample/Resources/AppIcon/appicon.svg b/samples/NavigationSample/Resources/AppIcon/appicon.svg new file mode 100644 index 0000000..5f04fcf --- /dev/null +++ b/samples/NavigationSample/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/samples/NavigationSample/Resources/AppIcon/appiconfg.svg b/samples/NavigationSample/Resources/AppIcon/appiconfg.svg new file mode 100644 index 0000000..62d66d7 --- /dev/null +++ b/samples/NavigationSample/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/samples/NavigationSample/Resources/Fonts/OpenSans-Regular.ttf b/samples/NavigationSample/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..534d00947daa57442d17ad9080b06dbad940bcc2 GIT binary patch literal 107140 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

Grz`8e{0lK(`I^}3pWpk~V^2Q$_+vF< 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�FN=u`7aeLbfzV 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 L7yCvq>3shK)@ literal 0 HcmV?d00001 diff --git a/samples/NavigationSample/Resources/Fonts/OpenSans-Semibold.ttf b/samples/NavigationSample/Resources/Fonts/OpenSans-Semibold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f3331530101197399506bdbda5ac334a4e9adee0 GIT binary patch literal 111028 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 Ih7t(>2U?UXMgRZ+ literal 0 HcmV?d00001 diff --git a/samples/NavigationSample/Resources/Images/dotnet_bot.svg b/samples/NavigationSample/Resources/Images/dotnet_bot.svg new file mode 100644 index 0000000..51b1c33 --- /dev/null +++ b/samples/NavigationSample/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/NavigationSample/Resources/Raw/AboutAssets.txt b/samples/NavigationSample/Resources/Raw/AboutAssets.txt new file mode 100644 index 0000000..50b8a7b --- /dev/null +++ b/samples/NavigationSample/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with you package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/samples/NavigationSample/Resources/Splash/splash.svg b/samples/NavigationSample/Resources/Splash/splash.svg new file mode 100644 index 0000000..62d66d7 --- /dev/null +++ b/samples/NavigationSample/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file From 17d9c989f9a6adcb296e75001795e86ac7a56fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20LARIVIERE?= Date: Mon, 8 May 2023 15:25:29 +0200 Subject: [PATCH 2/5] Add Navigation path-based navigation system --- .gitignore | 3 +- samples/NavigationSample/App.fs | 16 ++--- .../{BasicNavigation.fs => Sample.fs} | 2 +- .../NavigationPath/NavigationState.fs | 50 ++++++++++++++++ .../NavigationPath/NavigationTypes.fs | 35 +++++++++++ .../NavigationSample/NavigationPath/PageA.fs | 52 +++++++++++++++++ .../NavigationSample/NavigationPath/PageB.fs | 55 ++++++++++++++++++ .../NavigationSample/NavigationPath/PageC.fs | 58 +++++++++++++++++++ .../NavigationSample/NavigationPath/Sample.fs | 52 +++++++++++++++++ .../NavigationSample/NavigationSample.fsproj | 8 ++- 10 files changed, 321 insertions(+), 10 deletions(-) rename samples/NavigationSample/BasicNavigation/{BasicNavigation.fs => Sample.fs} (99%) create mode 100644 samples/NavigationSample/NavigationPath/NavigationState.fs create mode 100644 samples/NavigationSample/NavigationPath/NavigationTypes.fs create mode 100644 samples/NavigationSample/NavigationPath/PageA.fs create mode 100644 samples/NavigationSample/NavigationPath/PageB.fs create mode 100644 samples/NavigationSample/NavigationPath/PageC.fs create mode 100644 samples/NavigationSample/NavigationPath/Sample.fs diff --git a/.gitignore b/.gitignore index ca54461..7451049 100644 --- a/.gitignore +++ b/.gitignore @@ -352,4 +352,5 @@ MigrationBackup/ .idea Resource.designer.cs -nupkgs/ \ No newline at end of file +nupkgs/ +.DS_Store diff --git a/samples/NavigationSample/App.fs b/samples/NavigationSample/App.fs index ee04d54..cb19aed 100644 --- a/samples/NavigationSample/App.fs +++ b/samples/NavigationSample/App.fs @@ -2,26 +2,28 @@ namespace NavigationSample open Fabulous open Fabulous.Maui -open NavigationSample.BasicNavigation open type Fabulous.Maui.View module App = type Model = - { BasicNavigationModel: BasicNavigation.Model } + { BasicNavigationModel: NavigationPath.Sample.Model } - type Msg = BasicNavigationMsg of BasicNavigation.Msg + type Msg = BasicNavigationMsg of NavigationPath.Sample.Msg let init () = - { BasicNavigationModel = BasicNavigation.init() } + let m, c = NavigationPath.Sample.init() + { BasicNavigationModel = m }, Cmd.map BasicNavigationMsg c let update msg model = match msg with - | BasicNavigationMsg m -> { BasicNavigationModel = BasicNavigation.update m model.BasicNavigationModel } + | BasicNavigationMsg msg -> + let m, c = NavigationPath.Sample.update msg model.BasicNavigationModel + { BasicNavigationModel = m }, Cmd.map BasicNavigationMsg c let view model = Application( - View.map BasicNavigationMsg (BasicNavigation.view model.BasicNavigationModel) + View.map BasicNavigationMsg (NavigationPath.Sample.view model.BasicNavigationModel) ) - let program = Program.stateful init update view + let program = Program.statefulWithCmd init update view diff --git a/samples/NavigationSample/BasicNavigation/BasicNavigation.fs b/samples/NavigationSample/BasicNavigation/Sample.fs similarity index 99% rename from samples/NavigationSample/BasicNavigation/BasicNavigation.fs rename to samples/NavigationSample/BasicNavigation/Sample.fs index 6e14581..46574a0 100644 --- a/samples/NavigationSample/BasicNavigation/BasicNavigation.fs +++ b/samples/NavigationSample/BasicNavigation/Sample.fs @@ -13,7 +13,7 @@ open type Fabulous.Maui.View /// NOTE: This approach is not using any official navigation system. /// Hence there is no back button, no navigation history, no animations, etc by default. /// Fabulous will only give the illusion of navigation by swapping the pages. -module BasicNavigation = +module Sample = [] type Step = | PageA diff --git a/samples/NavigationSample/NavigationPath/NavigationState.fs b/samples/NavigationSample/NavigationPath/NavigationState.fs new file mode 100644 index 0000000..536a1f2 --- /dev/null +++ b/samples/NavigationSample/NavigationPath/NavigationState.fs @@ -0,0 +1,50 @@ +namespace NavigationSample.NavigationPath + +open Fabulous +open Fabulous.Maui + +open type Fabulous.Maui.View + +module NavigationState = + type Model = + | PageAModel of PageA.Model + | PageBModel of PageB.Model + | PageCModel of PageC.Model + + type Msg = + | PageAMsg of PageA.Msg + | PageBMsg of PageB.Msg + | PageCMsg of PageC.Msg + + let init path = + match path with + | NavigationPath.PageA -> PageAModel (PageA.init ()) + | NavigationPath.PageB initialCount -> PageBModel (PageB.init initialCount) + | NavigationPath.PageC(someArgs, stepCount) -> PageCModel (PageC.init someArgs stepCount) + + let update nav (msg: Msg) (model: Model) = + match msg, model with + | PageAMsg msg, PageAModel model -> + let m, c = PageA.update nav msg model + PageAModel m, Cmd.map PageAMsg c + + | PageBMsg msg, PageBModel model -> + let m, c = PageB.update nav msg model + PageBModel m, Cmd.map PageBMsg c + + | PageCMsg msg, PageCModel model -> + let m, c = PageC.update nav msg model + PageCModel m, Cmd.map PageCMsg c + + | _ -> model, Cmd.none + + let view model = + match model with + | PageAModel model -> AnyPage(View.map PageAMsg (PageA.view model)) + | PageBModel model -> AnyPage(View.map PageBMsg (PageB.view model)) + | PageCModel model -> AnyPage(View.map PageCMsg (PageC.view model)) + + let updateBackButton nav model = + match model with + | PageAModel model -> update nav (PageAMsg PageA.BackButtonPressed) (PageAModel model) + | _ -> model, Cmd.none \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/NavigationTypes.fs b/samples/NavigationSample/NavigationPath/NavigationTypes.fs new file mode 100644 index 0000000..d11440f --- /dev/null +++ b/samples/NavigationSample/NavigationPath/NavigationTypes.fs @@ -0,0 +1,35 @@ +namespace NavigationSample.NavigationPath + +open Fabulous + +[] +type NavigationPath = + | PageA + | PageB of initialCount: int + | PageC of someArgs: string * stepCount: int + +type NavigationController() = + let navigated = Event() + let backNavigated = Event() + + member this.Navigated = navigated.Publish + member this.BackNavigated = backNavigated.Publish + + member this.NavigateTo(path: NavigationPath) = + navigated.Trigger(path) + + member this.NavigateBack() = + backNavigated.Trigger() + +module Navigation = + let private navigateTo (nav: NavigationController) path: Cmd<'msg> = + [ fun _ -> nav.NavigateTo(path) ] + + let private backNavigated (nav: NavigationController): Cmd<'msg> = + [ fun _ -> nav.NavigateBack() ] + + let navigateToPageA nav = navigateTo nav NavigationPath.PageA + + let navigateToPageB nav initialCount = navigateTo nav (NavigationPath.PageB initialCount) + + let navigateToPageC nav someArgs stepCount = navigateTo nav (NavigationPath.PageC(someArgs, stepCount)) \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/PageA.fs b/samples/NavigationSample/NavigationPath/PageA.fs new file mode 100644 index 0000000..89cf71f --- /dev/null +++ b/samples/NavigationSample/NavigationPath/PageA.fs @@ -0,0 +1,52 @@ +namespace NavigationSample.NavigationPath + +open Fabulous +open Fabulous.Maui + +open type Fabulous.Maui.View + +module PageA = + type Model = + { Count: int } + + type Msg = + | Increment + | Decrement + | GoToPageB + | GoToPageC + | BackButtonPressed + + let init () = { Count = 0 } + + let update (nav: NavigationController) msg model = + match msg with + | Increment -> { model with Count = model.Count + 1 }, Cmd.none + | Decrement -> { model with Count = model.Count - 1 }, Cmd.none + | GoToPageB -> model, Navigation.navigateToPageB nav model.Count + | GoToPageC -> model, Navigation.navigateToPageC nav "Hello from Page A!" model.Count + | BackButtonPressed -> { model with Count = model.Count - 1 }, Cmd.none + + let view model = + ContentPage( + Grid(coldefs = [Star], rowdefs = [Auto; Star; Auto]) { + Label("Page A") + .font(32.) + .centerTextHorizontal() + .margin(0., 0., 0., 30.) + + (VStack() { + Label($"Count: {model.Count}") + .centerTextHorizontal() + + Button("Increment", Increment) + Button("Decrement", Decrement) + }) + .gridRow(1) + + (VStack() { + Button("Go to Page B", GoToPageB) + Button("Go to Page C", GoToPageC) + }) + .gridRow(2) + } + ) \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/PageB.fs b/samples/NavigationSample/NavigationPath/PageB.fs new file mode 100644 index 0000000..c114667 --- /dev/null +++ b/samples/NavigationSample/NavigationPath/PageB.fs @@ -0,0 +1,55 @@ +namespace NavigationSample.NavigationPath + +open Fabulous +open Fabulous.Maui + +open type Fabulous.Maui.View + +module PageB = + type Model = + { InitialCount: int + Count: int } + + type Msg = + | Increment + | Decrement + | GoToPageA + | GoToPageC + + let init initialCount = + { InitialCount = initialCount + Count = initialCount } + + let update (nav: NavigationController) msg model = + match msg with + | Increment -> { model with Count = model.Count + 1 }, Cmd.none + | Decrement -> { model with Count = model.Count - 1 }, Cmd.none + | GoToPageA -> model, Navigation.navigateToPageB nav model.Count + | GoToPageC -> model, Navigation.navigateToPageC nav "Hello from Page A!" model.Count + + let view model = + ContentPage( + Grid(coldefs = [Star], rowdefs = [Auto; Star; Auto]) { + Label("Page B") + .font(32.) + .centerTextHorizontal() + .margin(0., 0., 0., 30.) + + (VStack() { + Label($"Initial count: {model.InitialCount}") + + Label($"Count: {model.Count}") + .centerTextHorizontal() + + Button("Increment", Increment) + Button("Decrement", Decrement) + }) + .gridRow(1) + + (VStack() { + Button("Go to Page A", GoToPageA) + Button("Go to Page C", GoToPageC) + }) + .gridRow(2) + } + ) \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/PageC.fs b/samples/NavigationSample/NavigationPath/PageC.fs new file mode 100644 index 0000000..012a252 --- /dev/null +++ b/samples/NavigationSample/NavigationPath/PageC.fs @@ -0,0 +1,58 @@ +namespace NavigationSample.NavigationPath + +open Fabulous +open Fabulous.Maui + +open type Fabulous.Maui.View + +module PageC = + type Model = + { Args: string + StepCount: int + Count: int } + + type Msg = + | Increment + | Decrement + | GoToPageA + | GoToPageB + + let init args stepCount = + { Args = args + StepCount = stepCount + Count = 0 } + + let update (nav: NavigationController) msg model = + match msg with + | Increment -> { model with Count = model.Count + model.StepCount }, Cmd.none + | Decrement -> { model with Count = model.Count - model.StepCount }, Cmd.none + | GoToPageA -> model, Navigation.navigateToPageB nav model.Count + | GoToPageB -> model, Navigation.navigateToPageC nav "Hello from Page A!" model.Count + + let view model = + ContentPage( + Grid(coldefs = [Star], rowdefs = [Auto; Star; Auto]) { + Label("Page C") + .font(32.) + .centerTextHorizontal() + .margin(0., 0., 0., 30.) + + (VStack() { + Label($"Args: {model.Args}") + Label($"StepCount: {model.StepCount}") + + Label($"Count: {model.Count}") + .centerTextHorizontal() + + Button("Increment", Increment) + Button("Decrement", Decrement) + }) + .gridRow(1) + + (VStack() { + Button("Go to Page A", GoToPageA) + Button("Go to Page B", GoToPageB) + }) + .gridRow(2) + } + ) \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/Sample.fs b/samples/NavigationSample/NavigationPath/Sample.fs new file mode 100644 index 0000000..2f48f50 --- /dev/null +++ b/samples/NavigationSample/NavigationPath/Sample.fs @@ -0,0 +1,52 @@ +namespace NavigationSample.NavigationPath + +open Fabulous +open Fabulous.Maui + +open type Fabulous.Maui.View + +module Sample = + let nav = NavigationController() + + type Model = + { Navigation: NavigationState.Model list } + + type Msg = + | NavigationPushed of NavigationPath + | BackNavigated + | NavigationMsg of NavigationState.Msg + | BackButtonPressed + + let navSubscription (): Cmd = + [ fun dispatch -> + nav.Navigated.Add(fun path -> dispatch (NavigationPushed path)) + nav.BackNavigated.Add(fun () -> dispatch BackNavigated) ] + + let init() = + { Navigation = [ NavigationState.init NavigationPath.PageA ] }, navSubscription() + + let update msg model = + match msg with + | NavigationPushed path -> + let newPage = NavigationState.init path + { model with Navigation = newPage :: model.Navigation }, Cmd.none + + | BackNavigated -> + { model with Navigation = model.Navigation.Tail }, Cmd.none + + | NavigationMsg navMsg -> + let m, navCmd = NavigationState.update nav navMsg model.Navigation.Head + { model with Navigation = m :: model.Navigation.Tail }, Cmd.map NavigationMsg navCmd + + | BackButtonPressed -> + let m, navCmd = NavigationState.updateBackButton nav model.Navigation.Head + { model with Navigation = m :: model.Navigation.Tail }, Cmd.map NavigationMsg navCmd + + let view model = + (NavigationPage() { + for navModel in List.rev model.Navigation do + (View.map NavigationMsg (NavigationState.view navModel)) + .hasBackButton(false) + .hasNavigationBar(false) + }) + .onBackButtonPressed(BackButtonPressed) diff --git a/samples/NavigationSample/NavigationSample.fsproj b/samples/NavigationSample/NavigationSample.fsproj index a04fd8b..3e252ee 100644 --- a/samples/NavigationSample/NavigationSample.fsproj +++ b/samples/NavigationSample/NavigationSample.fsproj @@ -36,7 +36,13 @@ - + + + + + + + From 693f9435d05f7b363fabe2f72ba7a3635a941ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20LARIVIERE?= Date: Tue, 9 May 2023 10:55:40 +0200 Subject: [PATCH 3/5] Add explanations --- .../NavigationPath/NavigationState.fs | 36 ++++++++++++++++- .../NavigationPath/NavigationTypes.fs | 8 +++- .../NavigationSample/NavigationPath/PageA.fs | 23 ++++++----- .../NavigationSample/NavigationPath/PageB.fs | 23 +++++------ .../NavigationSample/NavigationPath/PageC.fs | 24 +++++------ .../NavigationSample/NavigationPath/Sample.fs | 40 ++++++++++++++----- 6 files changed, 106 insertions(+), 48 deletions(-) diff --git a/samples/NavigationSample/NavigationPath/NavigationState.fs b/samples/NavigationSample/NavigationPath/NavigationState.fs index 536a1f2..4ae69b5 100644 --- a/samples/NavigationSample/NavigationPath/NavigationState.fs +++ b/samples/NavigationSample/NavigationPath/NavigationState.fs @@ -5,6 +5,12 @@ open Fabulous.Maui open type Fabulous.Maui.View +/// MVU is a very explicit but also very verbose pattern. +/// Everything needs to be explicitly written out. +/// +/// This NavigationState file acts as the glue between the different pages. +/// Relying on the NavigationPath DU, we call the init, update and view functions of the different pages. +/// Like this, everything is centralized and the root of the app doesn't have to know about the other pages. module NavigationState = type Model = | PageAModel of PageA.Model @@ -47,4 +53,32 @@ module NavigationState = let updateBackButton nav model = match model with | PageAModel model -> update nav (PageAMsg PageA.BackButtonPressed) (PageAModel model) - | _ -> model, Cmd.none \ No newline at end of file + | _ -> model, Cmd.none + +/// The NavigationStack represents the history of the navigation. +/// This is a simple stack of pages that the app will use to remember and display the pages needed. +type NavigationStack = + { BackStack: NavigationState.Model list + CurrentPage: NavigationState.Model + ForwardStack: NavigationState.Model list } + + static member Init(model: NavigationState.Model) = + { BackStack = [] + CurrentPage = model + ForwardStack = [] } + + member this.Push(model: NavigationState.Model) = + { BackStack = this.CurrentPage :: this.BackStack + CurrentPage = model + ForwardStack = [] } + + member this.Pop() = + match this.BackStack with + | [] -> this + | head :: tail -> + { BackStack = tail + CurrentPage = head + ForwardStack = [] } + + member this.UpdateCurrentPage(newPage: NavigationState.Model) = + { this with CurrentPage = newPage } \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/NavigationTypes.fs b/samples/NavigationSample/NavigationPath/NavigationTypes.fs index d11440f..ed5556a 100644 --- a/samples/NavigationSample/NavigationPath/NavigationTypes.fs +++ b/samples/NavigationSample/NavigationPath/NavigationTypes.fs @@ -2,12 +2,16 @@ namespace NavigationSample.NavigationPath open Fabulous +/// This is the centerpiece of navigating through paths: +/// A single enum regrouping all the navigation routes with their arguments [] type NavigationPath = | PageA | PageB of initialCount: int | PageC of someArgs: string * stepCount: int +/// The NavigationController is used to notify the intention to navigate to a new page (or go back). +/// We listen to it in a Cmd that will dispatch a message to the root of the application to trigger the actual navigation. type NavigationController() = let navigated = Event() let backNavigated = Event() @@ -21,11 +25,13 @@ type NavigationController() = member this.NavigateBack() = backNavigated.Trigger() +/// The Navigation module is a set of helper functions that will wrap the call to NavigationController into a Cmd. +/// We do that because navigation is a side-effect and we want to keep it in a Cmd. module Navigation = let private navigateTo (nav: NavigationController) path: Cmd<'msg> = [ fun _ -> nav.NavigateTo(path) ] - let private backNavigated (nav: NavigationController): Cmd<'msg> = + let navigateBack (nav: NavigationController): Cmd<'msg> = [ fun _ -> nav.NavigateBack() ] let navigateToPageA nav = navigateTo nav NavigationPath.PageA diff --git a/samples/NavigationSample/NavigationPath/PageA.fs b/samples/NavigationSample/NavigationPath/PageA.fs index 89cf71f..3dc4c7a 100644 --- a/samples/NavigationSample/NavigationPath/PageA.fs +++ b/samples/NavigationSample/NavigationPath/PageA.fs @@ -5,6 +5,8 @@ open Fabulous.Maui open type Fabulous.Maui.View +/// Each pages are "isolated". They have their own MVU loop and own types. +/// The only dependency they receive from outside is the NavigationController, which is passed to the update function. module PageA = type Model = { Count: int } @@ -12,41 +14,40 @@ module PageA = type Msg = | Increment | Decrement + | GoBack | GoToPageB | GoToPageC | BackButtonPressed + /// Since the NavigationPath.PageA doesn't take arguments, the init function excepts a unit parameter. let init () = { Count = 0 } let update (nav: NavigationController) msg model = match msg with | Increment -> { model with Count = model.Count + 1 }, Cmd.none | Decrement -> { model with Count = model.Count - 1 }, Cmd.none + | GoBack -> model, Navigation.navigateBack nav | GoToPageB -> model, Navigation.navigateToPageB nav model.Count | GoToPageC -> model, Navigation.navigateToPageC nav "Hello from Page A!" model.Count | BackButtonPressed -> { model with Count = model.Count - 1 }, Cmd.none let view model = ContentPage( - Grid(coldefs = [Star], rowdefs = [Auto; Star; Auto]) { - Label("Page A") - .font(32.) - .centerTextHorizontal() - .margin(0., 0., 0., 30.) - - (VStack() { + Grid(coldefs = [Star], rowdefs = [Star; Auto]) { + VStack() { Label($"Count: {model.Count}") .centerTextHorizontal() Button("Increment", Increment) Button("Decrement", Decrement) - }) - .gridRow(1) + } (VStack() { + Button("Go back", GoBack) Button("Go to Page B", GoToPageB) Button("Go to Page C", GoToPageC) }) - .gridRow(2) + .gridRow(1) } - ) \ No newline at end of file + ) + .title("Page A") \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/PageB.fs b/samples/NavigationSample/NavigationPath/PageB.fs index c114667..43931b5 100644 --- a/samples/NavigationSample/NavigationPath/PageB.fs +++ b/samples/NavigationSample/NavigationPath/PageB.fs @@ -13,9 +13,11 @@ module PageB = type Msg = | Increment | Decrement + | GoBack | GoToPageA | GoToPageC + /// Contrary to PageA, NavigationPath.PageB has a initialCount argument so the init function will receive it. let init initialCount = { InitialCount = initialCount Count = initialCount } @@ -24,18 +26,14 @@ module PageB = match msg with | Increment -> { model with Count = model.Count + 1 }, Cmd.none | Decrement -> { model with Count = model.Count - 1 }, Cmd.none - | GoToPageA -> model, Navigation.navigateToPageB nav model.Count + | GoBack -> model, Navigation.navigateBack nav + | GoToPageA -> model, Navigation.navigateToPageA nav | GoToPageC -> model, Navigation.navigateToPageC nav "Hello from Page A!" model.Count let view model = ContentPage( - Grid(coldefs = [Star], rowdefs = [Auto; Star; Auto]) { - Label("Page B") - .font(32.) - .centerTextHorizontal() - .margin(0., 0., 0., 30.) - - (VStack() { + Grid(coldefs = [Star], rowdefs = [Star; Auto]) { + VStack() { Label($"Initial count: {model.InitialCount}") Label($"Count: {model.Count}") @@ -43,13 +41,14 @@ module PageB = Button("Increment", Increment) Button("Decrement", Decrement) - }) - .gridRow(1) + } (VStack() { + Button("Go back", GoBack) Button("Go to Page A", GoToPageA) Button("Go to Page C", GoToPageC) }) - .gridRow(2) + .gridRow(1) } - ) \ No newline at end of file + ) + .title("Page B") \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/PageC.fs b/samples/NavigationSample/NavigationPath/PageC.fs index 012a252..15f3ee2 100644 --- a/samples/NavigationSample/NavigationPath/PageC.fs +++ b/samples/NavigationSample/NavigationPath/PageC.fs @@ -14,6 +14,7 @@ module PageC = type Msg = | Increment | Decrement + | GoBack | GoToPageA | GoToPageB @@ -26,18 +27,14 @@ module PageC = match msg with | Increment -> { model with Count = model.Count + model.StepCount }, Cmd.none | Decrement -> { model with Count = model.Count - model.StepCount }, Cmd.none - | GoToPageA -> model, Navigation.navigateToPageB nav model.Count - | GoToPageB -> model, Navigation.navigateToPageC nav "Hello from Page A!" model.Count + | GoBack -> model, Navigation.navigateBack nav + | GoToPageA -> model, Navigation.navigateToPageA nav + | GoToPageB -> model, Navigation.navigateToPageB nav model.Count let view model = ContentPage( - Grid(coldefs = [Star], rowdefs = [Auto; Star; Auto]) { - Label("Page C") - .font(32.) - .centerTextHorizontal() - .margin(0., 0., 0., 30.) - - (VStack() { + Grid(coldefs = [Star], rowdefs = [Star; Auto]) { + VStack() { Label($"Args: {model.Args}") Label($"StepCount: {model.StepCount}") @@ -46,13 +43,14 @@ module PageC = Button("Increment", Increment) Button("Decrement", Decrement) - }) - .gridRow(1) + } (VStack() { + Button("Go back", GoBack) Button("Go to Page A", GoToPageA) Button("Go to Page B", GoToPageB) }) - .gridRow(2) + .gridRow(1) } - ) \ No newline at end of file + ) + .title("Page C") \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/Sample.fs b/samples/NavigationSample/NavigationPath/Sample.fs index 2f48f50..0a0f33e 100644 --- a/samples/NavigationSample/NavigationPath/Sample.fs +++ b/samples/NavigationSample/NavigationPath/Sample.fs @@ -5,11 +5,14 @@ open Fabulous.Maui open type Fabulous.Maui.View +/// This is the root of the app module Sample = + /// We instantiate a single NavigationController that will be used for the lifetime of the app let nav = NavigationController() + /// The Model needs only to store the current navigation stack type Model = - { Navigation: NavigationState.Model list } + { Navigation: NavigationStack } type Msg = | NavigationPushed of NavigationPath @@ -17,36 +20,53 @@ module Sample = | NavigationMsg of NavigationState.Msg | BackButtonPressed + /// This is where we subscribe to the navigation events + /// If a navigation forward is requested, we dispatch the NavigationPushed message + /// If a navigation backward is requested, we dispatch the BackNavigated message let navSubscription (): Cmd = [ fun dispatch -> nav.Navigated.Add(fun path -> dispatch (NavigationPushed path)) nav.BackNavigated.Add(fun () -> dispatch BackNavigated) ] + /// In the init function, we initialize the NavigationStack and subscribe to the navigation events let init() = - { Navigation = [ NavigationState.init NavigationPath.PageA ] }, navSubscription() + let rootPage = NavigationState.init NavigationPath.PageA + { Navigation = NavigationStack.Init(rootPage) }, navSubscription() let update msg model = match msg with | NavigationPushed path -> + // When a new path is pushed, we create a new page and push it on the stack let newPage = NavigationState.init path - { model with Navigation = newPage :: model.Navigation }, Cmd.none + { model with Navigation = model.Navigation.Push(newPage) }, Cmd.none | BackNavigated -> - { model with Navigation = model.Navigation.Tail }, Cmd.none + // BackNavigated handles both the back button and the programmatic back navigation + // We simply pop the current page from the stack + { model with Navigation = model.Navigation.Pop() }, Cmd.none | NavigationMsg navMsg -> - let m, navCmd = NavigationState.update nav navMsg model.Navigation.Head - { model with Navigation = m :: model.Navigation.Tail }, Cmd.map NavigationMsg navCmd + let m, navCmd = NavigationState.update nav navMsg model.Navigation.CurrentPage + { model with Navigation = model.Navigation.UpdateCurrentPage(m) }, Cmd.map NavigationMsg navCmd | BackButtonPressed -> - let m, navCmd = NavigationState.updateBackButton nav model.Navigation.Head - { model with Navigation = m :: model.Navigation.Tail }, Cmd.map NavigationMsg navCmd + let m, navCmd = NavigationState.updateBackButton nav model.Navigation.CurrentPage + { model with Navigation = model.Navigation.UpdateCurrentPage(m) }, Cmd.map NavigationMsg navCmd + /// The view function contains the NavigationPage control that will display the different pages + /// and handle the navigation animations (push, pop) as well has displaying a back button by default + /// + /// Because of MVU, all the pages need to return the same Msg type but they all have their own. + /// To be able to wrap those Msgs into the app's root Msg type, we use the View.map helper function. let view model = (NavigationPage() { - for navModel in List.rev model.Navigation do + // We inject in the NavigationPage history the back stack of our navigation + for navModel in List.rev model.Navigation.BackStack do (View.map NavigationMsg (NavigationState.view navModel)) .hasBackButton(false) - .hasNavigationBar(false) + + // The page currently displayed is the one on top of the stack + (View.map NavigationMsg (NavigationState.view model.Navigation.CurrentPage)) + .hasBackButton(false) }) .onBackButtonPressed(BackButtonPressed) From fe972a4f4e7a78d9aa02fd4f3d67cf920e2f078b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20LARIVIERE?= Date: Tue, 9 May 2023 10:56:48 +0200 Subject: [PATCH 4/5] Format code --- samples/NavigationSample/App.fs | 4 +- .../NavigationSample/BasicNavigation/PageA.fs | 23 ++++----- .../NavigationSample/BasicNavigation/PageB.fs | 23 ++++----- .../NavigationSample/BasicNavigation/PageC.fs | 23 ++++----- .../BasicNavigation/Sample.fs | 47 ++++++++--------- .../NavigationPath/NavigationState.fs | 33 ++++++------ .../NavigationPath/NavigationTypes.fs | 32 ++++++------ .../NavigationSample/NavigationPath/PageA.fs | 20 ++++---- .../NavigationSample/NavigationPath/PageB.fs | 23 ++++----- .../NavigationSample/NavigationPath/PageC.fs | 31 ++++++----- .../NavigationSample/NavigationPath/Sample.fs | 51 +++++++++++-------- .../NavigationSample/Platforms/Windows/App.fs | 3 +- 12 files changed, 152 insertions(+), 161 deletions(-) diff --git a/samples/NavigationSample/App.fs b/samples/NavigationSample/App.fs index cb19aed..6867d34 100644 --- a/samples/NavigationSample/App.fs +++ b/samples/NavigationSample/App.fs @@ -22,8 +22,6 @@ module App = { BasicNavigationModel = m }, Cmd.map BasicNavigationMsg c let view model = - Application( - View.map BasicNavigationMsg (NavigationPath.Sample.view model.BasicNavigationModel) - ) + Application(View.map BasicNavigationMsg (NavigationPath.Sample.view model.BasicNavigationModel)) let program = Program.statefulWithCmd init update view diff --git a/samples/NavigationSample/BasicNavigation/PageA.fs b/samples/NavigationSample/BasicNavigation/PageA.fs index a48941c..0bad4ec 100644 --- a/samples/NavigationSample/BasicNavigation/PageA.fs +++ b/samples/NavigationSample/BasicNavigation/PageA.fs @@ -5,30 +5,25 @@ open Fabulous.Maui open type Fabulous.Maui.View module PageA = - type Model = - { Count: int } - + type Model = { Count: int } + type Msg = | Increment | Decrement - + let init () = { Count = 0 } let update msg model = match msg with | Increment -> { model with Count = model.Count + 1 } | Decrement -> { model with Count = model.Count - 1 } - + let view model = VStack() { - Label("Page A") - .font(32.) - .centerTextHorizontal() - .margin(0., 0., 0., 30.) - - Label($"Count: {model.Count}") - .centerTextHorizontal() - + Label("Page A").font(32.).centerTextHorizontal().margin(0., 0., 0., 30.) + + Label($"Count: {model.Count}").centerTextHorizontal() + Button("Increment", Increment) Button("Decrement", Decrement) - } \ No newline at end of file + } diff --git a/samples/NavigationSample/BasicNavigation/PageB.fs b/samples/NavigationSample/BasicNavigation/PageB.fs index 21759bc..6bb000f 100644 --- a/samples/NavigationSample/BasicNavigation/PageB.fs +++ b/samples/NavigationSample/BasicNavigation/PageB.fs @@ -5,30 +5,25 @@ open Fabulous.Maui open type Fabulous.Maui.View module PageB = - type Model = - { Count: int } - + type Model = { Count: int } + type Msg = | Increment | Decrement - + let init () = { Count = 0 } let update msg model = match msg with | Increment -> { model with Count = model.Count + 1 } | Decrement -> { model with Count = model.Count - 1 } - + let view model = VStack() { - Label("Page B") - .font(32.) - .centerTextHorizontal() - .margin(0., 0., 0., 30.) - - Label($"Count: {model.Count}") - .centerTextHorizontal() - + Label("Page B").font(32.).centerTextHorizontal().margin(0., 0., 0., 30.) + + Label($"Count: {model.Count}").centerTextHorizontal() + Button("Increment", Increment) Button("Decrement", Decrement) - } \ No newline at end of file + } diff --git a/samples/NavigationSample/BasicNavigation/PageC.fs b/samples/NavigationSample/BasicNavigation/PageC.fs index 3a83e41..9801f32 100644 --- a/samples/NavigationSample/BasicNavigation/PageC.fs +++ b/samples/NavigationSample/BasicNavigation/PageC.fs @@ -5,30 +5,25 @@ open Fabulous.Maui open type Fabulous.Maui.View module PageC = - type Model = - { Count: int } - + type Model = { Count: int } + type Msg = | Increment | Decrement - + let init () = { Count = 0 } let update msg model = match msg with | Increment -> { model with Count = model.Count + 1 } | Decrement -> { model with Count = model.Count - 1 } - + let view model = VStack() { - Label("Page C") - .font(32.) - .centerTextHorizontal() - .margin(0., 0., 0., 30.) - - Label($"Count: {model.Count}") - .centerTextHorizontal() - + Label("Page C").font(32.).centerTextHorizontal().margin(0., 0., 0., 30.) + + Label($"Count: {model.Count}").centerTextHorizontal() + Button("Increment", Increment) Button("Decrement", Decrement) - } \ No newline at end of file + } diff --git a/samples/NavigationSample/BasicNavigation/Sample.fs b/samples/NavigationSample/BasicNavigation/Sample.fs index 46574a0..25d5ff2 100644 --- a/samples/NavigationSample/BasicNavigation/Sample.fs +++ b/samples/NavigationSample/BasicNavigation/Sample.fs @@ -6,7 +6,7 @@ open Fabulous.Maui open type Fabulous.Maui.View /// The most basic navigation with Fabulous is done by swapping widgets. -/// +/// /// In this sample, we have three pages, and we swap between them by changing the "current step" (represented by a discriminated union). /// All three pages' models are loaded at the same time, but only the current page is rendered. /// @@ -19,7 +19,7 @@ module Sample = | PageA | PageB | PageC - + type Model = { CurrentStep: Step PageAModel: PageA.Model @@ -42,34 +42,35 @@ module Sample = let update msg model = match msg with - | PageAMsg msg -> { model with PageAModel = PageA.update msg model.PageAModel } - | PageBMsg msg -> { model with PageBModel = PageB.update msg model.PageBModel } - | PageCMsg msg -> { model with PageCModel = PageC.update msg model.PageCModel } + | PageAMsg msg -> + { model with + PageAModel = PageA.update msg model.PageAModel } + | PageBMsg msg -> + { model with + PageBModel = PageB.update msg model.PageBModel } + | PageCMsg msg -> + { model with + PageCModel = PageC.update msg model.PageCModel } | GoToPageA -> { model with CurrentStep = Step.PageA } | GoToPageB -> { model with CurrentStep = Step.PageB } | GoToPageC -> { model with CurrentStep = Step.PageC } let view model = ContentPage( - (Grid(coldefs = [Star; Star; Star], rowdefs = [Auto; Star]) { - Button("Page A", GoToPageA) - .gridColumn(0) - - Button("Page B", GoToPageB) - .gridColumn(1) - - Button("Page C", GoToPageC) - .gridColumn(2) - - - ( - match model.CurrentStep with - | Step.PageA -> View.map PageAMsg (PageA.view model.PageAModel) - | Step.PageB -> View.map PageBMsg (PageB.view model.PageBModel) - | Step.PageC -> View.map PageCMsg (PageC.view model.PageCModel) - ) + (Grid(coldefs = [ Star; Star; Star ], rowdefs = [ Auto; Star ]) { + Button("Page A", GoToPageA).gridColumn(0) + + Button("Page B", GoToPageB).gridColumn(1) + + Button("Page C", GoToPageC).gridColumn(2) + + + (match model.CurrentStep with + | Step.PageA -> View.map PageAMsg (PageA.view model.PageAModel) + | Step.PageB -> View.map PageBMsg (PageB.view model.PageBModel) + | Step.PageC -> View.map PageCMsg (PageC.view model.PageCModel)) .gridRow(1) .gridColumnSpan(3) }) .rowSpacing(30.) - ) \ No newline at end of file + ) diff --git a/samples/NavigationSample/NavigationPath/NavigationState.fs b/samples/NavigationSample/NavigationPath/NavigationState.fs index 4ae69b5..d9ede24 100644 --- a/samples/NavigationSample/NavigationPath/NavigationState.fs +++ b/samples/NavigationSample/NavigationPath/NavigationState.fs @@ -16,34 +16,34 @@ module NavigationState = | PageAModel of PageA.Model | PageBModel of PageB.Model | PageCModel of PageC.Model - + type Msg = | PageAMsg of PageA.Msg | PageBMsg of PageB.Msg | PageCMsg of PageC.Msg - + let init path = match path with - | NavigationPath.PageA -> PageAModel (PageA.init ()) - | NavigationPath.PageB initialCount -> PageBModel (PageB.init initialCount) - | NavigationPath.PageC(someArgs, stepCount) -> PageCModel (PageC.init someArgs stepCount) - + | NavigationPath.PageA -> PageAModel(PageA.init()) + | NavigationPath.PageB initialCount -> PageBModel(PageB.init initialCount) + | NavigationPath.PageC(someArgs, stepCount) -> PageCModel(PageC.init someArgs stepCount) + let update nav (msg: Msg) (model: Model) = match msg, model with | PageAMsg msg, PageAModel model -> let m, c = PageA.update nav msg model PageAModel m, Cmd.map PageAMsg c - + | PageBMsg msg, PageBModel model -> let m, c = PageB.update nav msg model PageBModel m, Cmd.map PageBMsg c - + | PageCMsg msg, PageCModel model -> let m, c = PageC.update nav msg model PageCModel m, Cmd.map PageCMsg c - + | _ -> model, Cmd.none - + let view model = match model with | PageAModel model -> AnyPage(View.map PageAMsg (PageA.view model)) @@ -54,24 +54,24 @@ module NavigationState = match model with | PageAModel model -> update nav (PageAMsg PageA.BackButtonPressed) (PageAModel model) | _ -> model, Cmd.none - + /// The NavigationStack represents the history of the navigation. /// This is a simple stack of pages that the app will use to remember and display the pages needed. type NavigationStack = { BackStack: NavigationState.Model list CurrentPage: NavigationState.Model ForwardStack: NavigationState.Model list } - + static member Init(model: NavigationState.Model) = { BackStack = [] CurrentPage = model ForwardStack = [] } - + member this.Push(model: NavigationState.Model) = { BackStack = this.CurrentPage :: this.BackStack CurrentPage = model ForwardStack = [] } - + member this.Pop() = match this.BackStack with | [] -> this @@ -79,6 +79,5 @@ type NavigationStack = { BackStack = tail CurrentPage = head ForwardStack = [] } - - member this.UpdateCurrentPage(newPage: NavigationState.Model) = - { this with CurrentPage = newPage } \ No newline at end of file + + member this.UpdateCurrentPage(newPage: NavigationState.Model) = { this with CurrentPage = newPage } diff --git a/samples/NavigationSample/NavigationPath/NavigationTypes.fs b/samples/NavigationSample/NavigationPath/NavigationTypes.fs index ed5556a..1fa66e2 100644 --- a/samples/NavigationSample/NavigationPath/NavigationTypes.fs +++ b/samples/NavigationSample/NavigationPath/NavigationTypes.fs @@ -15,27 +15,25 @@ type NavigationPath = type NavigationController() = let navigated = Event() let backNavigated = Event() - + member this.Navigated = navigated.Publish member this.BackNavigated = backNavigated.Publish - - member this.NavigateTo(path: NavigationPath) = - navigated.Trigger(path) - - member this.NavigateBack() = - backNavigated.Trigger() - + + member this.NavigateTo(path: NavigationPath) = navigated.Trigger(path) + + member this.NavigateBack() = backNavigated.Trigger() + /// The Navigation module is a set of helper functions that will wrap the call to NavigationController into a Cmd. /// We do that because navigation is a side-effect and we want to keep it in a Cmd. module Navigation = - let private navigateTo (nav: NavigationController) path: Cmd<'msg> = - [ fun _ -> nav.NavigateTo(path) ] + let private navigateTo (nav: NavigationController) path : Cmd<'msg> = [ fun _ -> nav.NavigateTo(path) ] + + let navigateBack (nav: NavigationController) : Cmd<'msg> = [ fun _ -> nav.NavigateBack() ] - let navigateBack (nav: NavigationController): Cmd<'msg> = - [ fun _ -> nav.NavigateBack() ] - let navigateToPageA nav = navigateTo nav NavigationPath.PageA - - let navigateToPageB nav initialCount = navigateTo nav (NavigationPath.PageB initialCount) - - let navigateToPageC nav someArgs stepCount = navigateTo nav (NavigationPath.PageC(someArgs, stepCount)) \ No newline at end of file + + let navigateToPageB nav initialCount = + navigateTo nav (NavigationPath.PageB initialCount) + + let navigateToPageC nav someArgs stepCount = + navigateTo nav (NavigationPath.PageC(someArgs, stepCount)) diff --git a/samples/NavigationSample/NavigationPath/PageA.fs b/samples/NavigationSample/NavigationPath/PageA.fs index 3dc4c7a..721184c 100644 --- a/samples/NavigationSample/NavigationPath/PageA.fs +++ b/samples/NavigationSample/NavigationPath/PageA.fs @@ -8,9 +8,8 @@ open type Fabulous.Maui.View /// Each pages are "isolated". They have their own MVU loop and own types. /// The only dependency they receive from outside is the NavigationController, which is passed to the update function. module PageA = - type Model = - { Count: int } - + type Model = { Count: int } + type Msg = | Increment | Decrement @@ -18,7 +17,7 @@ module PageA = | GoToPageB | GoToPageC | BackButtonPressed - + /// Since the NavigationPath.PageA doesn't take arguments, the init function excepts a unit parameter. let init () = { Count = 0 } @@ -30,18 +29,17 @@ module PageA = | GoToPageB -> model, Navigation.navigateToPageB nav model.Count | GoToPageC -> model, Navigation.navigateToPageC nav "Hello from Page A!" model.Count | BackButtonPressed -> { model with Count = model.Count - 1 }, Cmd.none - + let view model = ContentPage( - Grid(coldefs = [Star], rowdefs = [Star; Auto]) { + Grid(coldefs = [ Star ], rowdefs = [ Star; Auto ]) { VStack() { - Label($"Count: {model.Count}") - .centerTextHorizontal() - + Label($"Count: {model.Count}").centerTextHorizontal() + Button("Increment", Increment) Button("Decrement", Decrement) } - + (VStack() { Button("Go back", GoBack) Button("Go to Page B", GoToPageB) @@ -50,4 +48,4 @@ module PageA = .gridRow(1) } ) - .title("Page A") \ No newline at end of file + .title("Page A") diff --git a/samples/NavigationSample/NavigationPath/PageB.fs b/samples/NavigationSample/NavigationPath/PageB.fs index 43931b5..c000f66 100644 --- a/samples/NavigationSample/NavigationPath/PageB.fs +++ b/samples/NavigationSample/NavigationPath/PageB.fs @@ -6,17 +6,15 @@ open Fabulous.Maui open type Fabulous.Maui.View module PageB = - type Model = - { InitialCount: int - Count: int } - + type Model = { InitialCount: int; Count: int } + type Msg = | Increment | Decrement | GoBack | GoToPageA | GoToPageC - + /// Contrary to PageA, NavigationPath.PageB has a initialCount argument so the init function will receive it. let init initialCount = { InitialCount = initialCount @@ -29,20 +27,19 @@ module PageB = | GoBack -> model, Navigation.navigateBack nav | GoToPageA -> model, Navigation.navigateToPageA nav | GoToPageC -> model, Navigation.navigateToPageC nav "Hello from Page A!" model.Count - + let view model = ContentPage( - Grid(coldefs = [Star], rowdefs = [Star; Auto]) { + Grid(coldefs = [ Star ], rowdefs = [ Star; Auto ]) { VStack() { Label($"Initial count: {model.InitialCount}") - - Label($"Count: {model.Count}") - .centerTextHorizontal() - + + Label($"Count: {model.Count}").centerTextHorizontal() + Button("Increment", Increment) Button("Decrement", Decrement) } - + (VStack() { Button("Go back", GoBack) Button("Go to Page A", GoToPageA) @@ -51,4 +48,4 @@ module PageB = .gridRow(1) } ) - .title("Page B") \ No newline at end of file + .title("Page B") diff --git a/samples/NavigationSample/NavigationPath/PageC.fs b/samples/NavigationSample/NavigationPath/PageC.fs index 15f3ee2..7eefb21 100644 --- a/samples/NavigationSample/NavigationPath/PageC.fs +++ b/samples/NavigationSample/NavigationPath/PageC.fs @@ -10,41 +10,46 @@ module PageC = { Args: string StepCount: int Count: int } - + type Msg = | Increment | Decrement | GoBack | GoToPageA | GoToPageB - + let init args stepCount = { Args = args - StepCount = stepCount + StepCount = stepCount Count = 0 } let update (nav: NavigationController) msg model = match msg with - | Increment -> { model with Count = model.Count + model.StepCount }, Cmd.none - | Decrement -> { model with Count = model.Count - model.StepCount }, Cmd.none + | Increment -> + { model with + Count = model.Count + model.StepCount }, + Cmd.none + | Decrement -> + { model with + Count = model.Count - model.StepCount }, + Cmd.none | GoBack -> model, Navigation.navigateBack nav | GoToPageA -> model, Navigation.navigateToPageA nav | GoToPageB -> model, Navigation.navigateToPageB nav model.Count - + let view model = ContentPage( - Grid(coldefs = [Star], rowdefs = [Star; Auto]) { + Grid(coldefs = [ Star ], rowdefs = [ Star; Auto ]) { VStack() { Label($"Args: {model.Args}") Label($"StepCount: {model.StepCount}") - - Label($"Count: {model.Count}") - .centerTextHorizontal() - + + Label($"Count: {model.Count}").centerTextHorizontal() + Button("Increment", Increment) Button("Decrement", Decrement) } - + (VStack() { Button("Go back", GoBack) Button("Go to Page A", GoToPageA) @@ -53,4 +58,4 @@ module PageC = .gridRow(1) } ) - .title("Page C") \ No newline at end of file + .title("Page C") diff --git a/samples/NavigationSample/NavigationPath/Sample.fs b/samples/NavigationSample/NavigationPath/Sample.fs index 0a0f33e..41eae32 100644 --- a/samples/NavigationSample/NavigationPath/Sample.fs +++ b/samples/NavigationSample/NavigationPath/Sample.fs @@ -9,27 +9,26 @@ open type Fabulous.Maui.View module Sample = /// We instantiate a single NavigationController that will be used for the lifetime of the app let nav = NavigationController() - + /// The Model needs only to store the current navigation stack - type Model = - { Navigation: NavigationStack } - + type Model = { Navigation: NavigationStack } + type Msg = | NavigationPushed of NavigationPath | BackNavigated | NavigationMsg of NavigationState.Msg | BackButtonPressed - + /// This is where we subscribe to the navigation events /// If a navigation forward is requested, we dispatch the NavigationPushed message /// If a navigation backward is requested, we dispatch the BackNavigated message - let navSubscription (): Cmd = + let navSubscription () : Cmd = [ fun dispatch -> - nav.Navigated.Add(fun path -> dispatch (NavigationPushed path)) - nav.BackNavigated.Add(fun () -> dispatch BackNavigated) ] - + nav.Navigated.Add(fun path -> dispatch(NavigationPushed path)) + nav.BackNavigated.Add(fun () -> dispatch BackNavigated) ] + /// In the init function, we initialize the NavigationStack and subscribe to the navigation events - let init() = + let init () = let rootPage = NavigationState.init NavigationPath.PageA { Navigation = NavigationStack.Init(rootPage) }, navSubscription() @@ -38,21 +37,32 @@ module Sample = | NavigationPushed path -> // When a new path is pushed, we create a new page and push it on the stack let newPage = NavigationState.init path - { model with Navigation = model.Navigation.Push(newPage) }, Cmd.none - + + { model with + Navigation = model.Navigation.Push(newPage) }, + Cmd.none + | BackNavigated -> // BackNavigated handles both the back button and the programmatic back navigation // We simply pop the current page from the stack - { model with Navigation = model.Navigation.Pop() }, Cmd.none - + { model with + Navigation = model.Navigation.Pop() }, + Cmd.none + | NavigationMsg navMsg -> let m, navCmd = NavigationState.update nav navMsg model.Navigation.CurrentPage - { model with Navigation = model.Navigation.UpdateCurrentPage(m) }, Cmd.map NavigationMsg navCmd - + + { model with + Navigation = model.Navigation.UpdateCurrentPage(m) }, + Cmd.map NavigationMsg navCmd + | BackButtonPressed -> let m, navCmd = NavigationState.updateBackButton nav model.Navigation.CurrentPage - { model with Navigation = model.Navigation.UpdateCurrentPage(m) }, Cmd.map NavigationMsg navCmd - + + { model with + Navigation = model.Navigation.UpdateCurrentPage(m) }, + Cmd.map NavigationMsg navCmd + /// The view function contains the NavigationPage control that will display the different pages /// and handle the navigation animations (push, pop) as well has displaying a back button by default /// @@ -62,9 +72,8 @@ module Sample = (NavigationPage() { // We inject in the NavigationPage history the back stack of our navigation for navModel in List.rev model.Navigation.BackStack do - (View.map NavigationMsg (NavigationState.view navModel)) - .hasBackButton(false) - + (View.map NavigationMsg (NavigationState.view navModel)).hasBackButton(false) + // The page currently displayed is the one on top of the stack (View.map NavigationMsg (NavigationState.view model.Navigation.CurrentPage)) .hasBackButton(false) diff --git a/samples/NavigationSample/Platforms/Windows/App.fs b/samples/NavigationSample/Platforms/Windows/App.fs index c2109da..ebceb21 100644 --- a/samples/NavigationSample/Platforms/Windows/App.fs +++ b/samples/NavigationSample/Platforms/Windows/App.fs @@ -6,4 +6,5 @@ type App() = inherit FSharp.Maui.WinUICompat.App() - override this.CreateMauiApp() = NavigationSample.MauiProgram.CreateMauiApp() + override this.CreateMauiApp() = + NavigationSample.MauiProgram.CreateMauiApp() From de01b422b550862b5ffa74da25a71620075fa583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20Larivi=C3=A8re?= Date: Fri, 8 Mar 2024 17:09:41 +0100 Subject: [PATCH 5/5] Update code --- Fabulous.MauiControls.sln | 22 +++- .../BasicNavigation/BasicNavigation.fsproj} | 25 ++-- .../BasicNavigation}/MauiProgram.fs | 2 +- .../BasicNavigation/PageA.fs | 6 +- .../BasicNavigation/PageB.fs | 6 +- .../BasicNavigation/PageC.fs | 6 +- .../Platforms/Android/AndroidManifest.xml | 0 .../Platforms/Android/MainActivity.fs | 0 .../Platforms/Android/MainApplication.fs | 2 - .../Android/Resources/values/colors.xml | 0 .../Platforms/MacCatalyst/AppDelegate.fs | 0 .../Platforms/MacCatalyst/Info.plist | 0 .../Platforms/MacCatalyst/Program.fs | 0 .../BasicNavigation}/Platforms/Tizen/Main.fs | 0 .../Platforms/Tizen/tizen-manifest.xml | 0 .../BasicNavigation}/Platforms/Windows/App.fs | 0 .../Platforms/Windows/Main.fs | 0 .../Platforms/Windows/Package.appxmanifest | 0 .../Platforms/Windows/app.manifest | 0 .../Platforms/iOS/AppDelegate.fs | 0 .../BasicNavigation}/Platforms/iOS/Info.plist | 0 .../BasicNavigation}/Platforms/iOS/Program.fs | 0 .../Properties/launchSettings.json | 0 .../Resources/AppIcon/appicon.svg | 0 .../Resources/AppIcon/appiconfg.svg | 0 .../Resources/Fonts/OpenSans-Regular.ttf | Bin .../Resources/Fonts/OpenSans-Semibold.ttf | Bin .../Resources/Images/dotnet_bot.svg | 0 .../Resources/Raw/AboutAssets.txt | 0 .../Resources/Splash/splash.svg | 0 .../BasicNavigation/Sample.fs | 32 +++--- .../Navigation/NavigationPath/MauiProgram.fs | 16 +++ .../NavigationPath/NavigationPath.fsproj | 107 ++++++++++++++++++ .../NavigationPath/NavigationState.fs | 2 +- .../NavigationPath/NavigationTypes.fs | 2 +- .../NavigationPath/PageA.fs | 8 +- .../NavigationPath/PageB.fs | 2 +- .../NavigationPath/PageC.fs | 4 +- .../Platforms/Android/AndroidManifest.xml | 6 + .../Platforms/Android/MainActivity.fs | 17 +++ .../Platforms/Android/MainApplication.fs | 10 ++ .../Android/Resources/values/colors.xml | 6 + .../Platforms/MacCatalyst/AppDelegate.fs | 10 ++ .../Platforms/MacCatalyst/Info.plist | 30 +++++ .../Platforms/MacCatalyst/Program.fs | 9 ++ .../NavigationPath/Platforms/Tizen/Main.fs | 16 +++ .../Platforms/Tizen/tizen-manifest.xml | 15 +++ .../NavigationPath/Platforms/Windows/App.fs | 10 ++ .../NavigationPath/Platforms/Windows/Main.fs | 9 ++ .../Platforms/Windows/Package.appxmanifest | 43 +++++++ .../Platforms/Windows/app.manifest | 15 +++ .../Platforms/iOS/AppDelegate.fs | 10 ++ .../NavigationPath/Platforms/iOS/Info.plist | 32 ++++++ .../NavigationPath/Platforms/iOS/Program.fs | 9 ++ .../Properties/launchSettings.json | 8 ++ .../Resources/AppIcon/appicon.svg | 4 + .../Resources/AppIcon/appiconfg.svg | 8 ++ .../Resources/Fonts/OpenSans-Regular.ttf | Bin 0 -> 107140 bytes .../Resources/Fonts/OpenSans-Semibold.ttf | Bin 0 -> 111028 bytes .../Resources/Images/dotnet_bot.svg | 93 +++++++++++++++ .../Resources/Raw/AboutAssets.txt | 15 +++ .../Resources/Splash/splash.svg | 8 ++ .../NavigationPath/Sample.fs | 42 ++++--- samples/NavigationSample/App.fs | 27 ----- 64 files changed, 586 insertions(+), 108 deletions(-) rename samples/{NavigationSample/NavigationSample.fsproj => Navigation/BasicNavigation/BasicNavigation.fsproj} (81%) rename samples/{NavigationSample => Navigation/BasicNavigation}/MauiProgram.fs (90%) rename samples/{NavigationSample => Navigation}/BasicNavigation/PageA.fs (75%) rename samples/{NavigationSample => Navigation}/BasicNavigation/PageB.fs (75%) rename samples/{NavigationSample => Navigation}/BasicNavigation/PageC.fs (75%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Android/AndroidManifest.xml (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Android/MainActivity.fs (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Android/MainApplication.fs (82%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Android/Resources/values/colors.xml (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/MacCatalyst/AppDelegate.fs (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/MacCatalyst/Info.plist (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/MacCatalyst/Program.fs (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Tizen/Main.fs (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Tizen/tizen-manifest.xml (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Windows/App.fs (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Windows/Main.fs (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Windows/Package.appxmanifest (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/Windows/app.manifest (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/iOS/AppDelegate.fs (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/iOS/Info.plist (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Platforms/iOS/Program.fs (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Properties/launchSettings.json (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Resources/AppIcon/appicon.svg (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Resources/AppIcon/appiconfg.svg (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Resources/Fonts/OpenSans-Regular.ttf (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Resources/Fonts/OpenSans-Semibold.ttf (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Resources/Images/dotnet_bot.svg (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Resources/Raw/AboutAssets.txt (100%) rename samples/{NavigationSample => Navigation/BasicNavigation}/Resources/Splash/splash.svg (100%) rename samples/{NavigationSample => Navigation}/BasicNavigation/Sample.fs (68%) create mode 100644 samples/Navigation/NavigationPath/MauiProgram.fs create mode 100644 samples/Navigation/NavigationPath/NavigationPath.fsproj rename samples/{NavigationSample => Navigation}/NavigationPath/NavigationState.fs (98%) rename samples/{NavigationSample => Navigation}/NavigationPath/NavigationTypes.fs (97%) rename samples/{NavigationSample => Navigation}/NavigationPath/PageA.fs (84%) rename samples/{NavigationSample => Navigation}/NavigationPath/PageB.fs (97%) rename samples/{NavigationSample => Navigation}/NavigationPath/PageC.fs (93%) create mode 100644 samples/Navigation/NavigationPath/Platforms/Android/AndroidManifest.xml create mode 100644 samples/Navigation/NavigationPath/Platforms/Android/MainActivity.fs create mode 100644 samples/Navigation/NavigationPath/Platforms/Android/MainApplication.fs create mode 100644 samples/Navigation/NavigationPath/Platforms/Android/Resources/values/colors.xml create mode 100644 samples/Navigation/NavigationPath/Platforms/MacCatalyst/AppDelegate.fs create mode 100644 samples/Navigation/NavigationPath/Platforms/MacCatalyst/Info.plist create mode 100644 samples/Navigation/NavigationPath/Platforms/MacCatalyst/Program.fs create mode 100644 samples/Navigation/NavigationPath/Platforms/Tizen/Main.fs create mode 100644 samples/Navigation/NavigationPath/Platforms/Tizen/tizen-manifest.xml create mode 100644 samples/Navigation/NavigationPath/Platforms/Windows/App.fs create mode 100644 samples/Navigation/NavigationPath/Platforms/Windows/Main.fs create mode 100644 samples/Navigation/NavigationPath/Platforms/Windows/Package.appxmanifest create mode 100644 samples/Navigation/NavigationPath/Platforms/Windows/app.manifest create mode 100644 samples/Navigation/NavigationPath/Platforms/iOS/AppDelegate.fs create mode 100644 samples/Navigation/NavigationPath/Platforms/iOS/Info.plist create mode 100644 samples/Navigation/NavigationPath/Platforms/iOS/Program.fs create mode 100644 samples/Navigation/NavigationPath/Properties/launchSettings.json create mode 100644 samples/Navigation/NavigationPath/Resources/AppIcon/appicon.svg create mode 100644 samples/Navigation/NavigationPath/Resources/AppIcon/appiconfg.svg create mode 100644 samples/Navigation/NavigationPath/Resources/Fonts/OpenSans-Regular.ttf create mode 100644 samples/Navigation/NavigationPath/Resources/Fonts/OpenSans-Semibold.ttf create mode 100644 samples/Navigation/NavigationPath/Resources/Images/dotnet_bot.svg create mode 100644 samples/Navigation/NavigationPath/Resources/Raw/AboutAssets.txt create mode 100644 samples/Navigation/NavigationPath/Resources/Splash/splash.svg rename samples/{NavigationSample => Navigation}/NavigationPath/Sample.fs (68%) delete mode 100644 samples/NavigationSample/App.fs diff --git a/Fabulous.MauiControls.sln b/Fabulous.MauiControls.sln index 3ff9d3a..9f63990 100644 --- a/Fabulous.MauiControls.sln +++ b/Fabulous.MauiControls.sln @@ -34,7 +34,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Solution Files", "_Solutio EndProject Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Gallery", "samples\Gallery\Gallery.fsproj", "{A28D6852-F21C-4A43-93AF-CC71050028A9}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "NavigationSample", "samples\NavigationSample\NavigationSample.fsproj", "{4E8D5F4A-424E-431E-9CE9-693C6577FCCB}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Navigation", "Navigation", "{3A3581BD-4228-49B0-84D5-AF39D620BA34}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BasicNavigation", "samples\Navigation\BasicNavigation\BasicNavigation.fsproj", "{CE61493B-86CC-49CE-9443-F25F1ECB15C9}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "NavigationPath", "samples\Navigation\NavigationPath\NavigationPath.fsproj", "{5B3F6C4E-82CF-442F-BFB4-216C1CD85700}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -83,10 +87,14 @@ Global {A28D6852-F21C-4A43-93AF-CC71050028A9}.Release|Any CPU.Build.0 = Release|Any CPU {A28D6852-F21C-4A43-93AF-CC71050028A9}.Debug|Any CPU.Deploy.0 = Debug|Any CPU {A28D6852-F21C-4A43-93AF-CC71050028A9}.Release|Any CPU.Deploy.0 = Release|Any CPU - {4E8D5F4A-424E-431E-9CE9-693C6577FCCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4E8D5F4A-424E-431E-9CE9-693C6577FCCB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4E8D5F4A-424E-431E-9CE9-693C6577FCCB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4E8D5F4A-424E-431E-9CE9-693C6577FCCB}.Release|Any CPU.Build.0 = Release|Any CPU + {CE61493B-86CC-49CE-9443-F25F1ECB15C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CE61493B-86CC-49CE-9443-F25F1ECB15C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE61493B-86CC-49CE-9443-F25F1ECB15C9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CE61493B-86CC-49CE-9443-F25F1ECB15C9}.Release|Any CPU.Build.0 = Release|Any CPU + {5B3F6C4E-82CF-442F-BFB4-216C1CD85700}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B3F6C4E-82CF-442F-BFB4-216C1CD85700}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5B3F6C4E-82CF-442F-BFB4-216C1CD85700}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B3F6C4E-82CF-442F-BFB4-216C1CD85700}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {67FB01A1-1A3E-4A3B-83DC-7D63B56FB1A1} = {35A6823C-8312-4F92-818A-5117BB31A569} @@ -96,6 +104,8 @@ Global {BD278E92-A806-4913-AB2D-59D59FE8E2AD} = {87C8E9E8-497E-46DB-90FE-4402E0CB230A} {97FE743C-512F-44BA-92CF-3EB3A7972E5D} = {87C8E9E8-497E-46DB-90FE-4402E0CB230A} {A28D6852-F21C-4A43-93AF-CC71050028A9} = {87C8E9E8-497E-46DB-90FE-4402E0CB230A} - {4E8D5F4A-424E-431E-9CE9-693C6577FCCB} = {87C8E9E8-497E-46DB-90FE-4402E0CB230A} + {3A3581BD-4228-49B0-84D5-AF39D620BA34} = {87C8E9E8-497E-46DB-90FE-4402E0CB230A} + {CE61493B-86CC-49CE-9443-F25F1ECB15C9} = {3A3581BD-4228-49B0-84D5-AF39D620BA34} + {5B3F6C4E-82CF-442F-BFB4-216C1CD85700} = {3A3581BD-4228-49B0-84D5-AF39D620BA34} EndGlobalSection EndGlobal diff --git a/samples/NavigationSample/NavigationSample.fsproj b/samples/Navigation/BasicNavigation/BasicNavigation.fsproj similarity index 81% rename from samples/NavigationSample/NavigationSample.fsproj rename to samples/Navigation/BasicNavigation/BasicNavigation.fsproj index 3e252ee..3fd59ae 100644 --- a/samples/NavigationSample/NavigationSample.fsproj +++ b/samples/Navigation/BasicNavigation/BasicNavigation.fsproj @@ -1,8 +1,8 @@ - net7.0-android;net7.0-ios;net7.0-maccatalyst - $(TargetFrameworks);net7.0-windows10.0.19041.0 + net8.0-android;net8.0-ios;net8.0-maccatalyst + $(TargetFrameworks);net8.0-windows10.0.19041.0 Exe @@ -15,7 +15,7 @@ NavigationSample - org.fabulous.maui.navigationsample + org.fabulous.maui.basicnavigation c6c98ddf-a204-4a7e-be03-2829f110f396 @@ -33,17 +33,10 @@ - - - - - - - - - - - + + + + @@ -73,8 +66,6 @@ - - @@ -108,7 +99,7 @@ - + diff --git a/samples/NavigationSample/MauiProgram.fs b/samples/Navigation/BasicNavigation/MauiProgram.fs similarity index 90% rename from samples/NavigationSample/MauiProgram.fs rename to samples/Navigation/BasicNavigation/MauiProgram.fs index a58e9da..9365d83 100644 --- a/samples/NavigationSample/MauiProgram.fs +++ b/samples/Navigation/BasicNavigation/MauiProgram.fs @@ -7,7 +7,7 @@ type MauiProgram = static member CreateMauiApp() = MauiApp .CreateBuilder() - .UseFabulousApp(App.program) + .UseFabulousApp(Sample.program) .ConfigureFonts(fun fonts -> fonts .AddFont("OpenSans-Regular.ttf", "OpenSansRegular") diff --git a/samples/NavigationSample/BasicNavigation/PageA.fs b/samples/Navigation/BasicNavigation/PageA.fs similarity index 75% rename from samples/NavigationSample/BasicNavigation/PageA.fs rename to samples/Navigation/BasicNavigation/PageA.fs index 0bad4ec..05b2842 100644 --- a/samples/NavigationSample/BasicNavigation/PageA.fs +++ b/samples/Navigation/BasicNavigation/PageA.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.BasicNavigation +namespace NavigationSample open Fabulous.Maui @@ -15,8 +15,8 @@ module PageA = let update msg model = match msg with - | Increment -> { model with Count = model.Count + 1 } - | Decrement -> { model with Count = model.Count - 1 } + | Increment -> { Count = model.Count + 1 } + | Decrement -> { Count = model.Count - 1 } let view model = VStack() { diff --git a/samples/NavigationSample/BasicNavigation/PageB.fs b/samples/Navigation/BasicNavigation/PageB.fs similarity index 75% rename from samples/NavigationSample/BasicNavigation/PageB.fs rename to samples/Navigation/BasicNavigation/PageB.fs index 6bb000f..61a8f4f 100644 --- a/samples/NavigationSample/BasicNavigation/PageB.fs +++ b/samples/Navigation/BasicNavigation/PageB.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.BasicNavigation +namespace NavigationSample open Fabulous.Maui @@ -15,8 +15,8 @@ module PageB = let update msg model = match msg with - | Increment -> { model with Count = model.Count + 1 } - | Decrement -> { model with Count = model.Count - 1 } + | Increment -> { Count = model.Count + 1 } + | Decrement -> { Count = model.Count - 1 } let view model = VStack() { diff --git a/samples/NavigationSample/BasicNavigation/PageC.fs b/samples/Navigation/BasicNavigation/PageC.fs similarity index 75% rename from samples/NavigationSample/BasicNavigation/PageC.fs rename to samples/Navigation/BasicNavigation/PageC.fs index 9801f32..0503667 100644 --- a/samples/NavigationSample/BasicNavigation/PageC.fs +++ b/samples/Navigation/BasicNavigation/PageC.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.BasicNavigation +namespace NavigationSample open Fabulous.Maui @@ -15,8 +15,8 @@ module PageC = let update msg model = match msg with - | Increment -> { model with Count = model.Count + 1 } - | Decrement -> { model with Count = model.Count - 1 } + | Increment -> { Count = model.Count + 1 } + | Decrement -> { Count = model.Count - 1 } let view model = VStack() { diff --git a/samples/NavigationSample/Platforms/Android/AndroidManifest.xml b/samples/Navigation/BasicNavigation/Platforms/Android/AndroidManifest.xml similarity index 100% rename from samples/NavigationSample/Platforms/Android/AndroidManifest.xml rename to samples/Navigation/BasicNavigation/Platforms/Android/AndroidManifest.xml diff --git a/samples/NavigationSample/Platforms/Android/MainActivity.fs b/samples/Navigation/BasicNavigation/Platforms/Android/MainActivity.fs similarity index 100% rename from samples/NavigationSample/Platforms/Android/MainActivity.fs rename to samples/Navigation/BasicNavigation/Platforms/Android/MainActivity.fs diff --git a/samples/NavigationSample/Platforms/Android/MainApplication.fs b/samples/Navigation/BasicNavigation/Platforms/Android/MainApplication.fs similarity index 82% rename from samples/NavigationSample/Platforms/Android/MainApplication.fs rename to samples/Navigation/BasicNavigation/Platforms/Android/MainApplication.fs index d199a50..7910a54 100644 --- a/samples/NavigationSample/Platforms/Android/MainApplication.fs +++ b/samples/Navigation/BasicNavigation/Platforms/Android/MainApplication.fs @@ -7,6 +7,4 @@ open Microsoft.Maui type MainApplication(handle, ownership) = inherit MauiApplication(handle, ownership) - do NavigationSample.Resource.UpdateIdValues() - override _.CreateMauiApp() = MauiProgram.CreateMauiApp() diff --git a/samples/NavigationSample/Platforms/Android/Resources/values/colors.xml b/samples/Navigation/BasicNavigation/Platforms/Android/Resources/values/colors.xml similarity index 100% rename from samples/NavigationSample/Platforms/Android/Resources/values/colors.xml rename to samples/Navigation/BasicNavigation/Platforms/Android/Resources/values/colors.xml diff --git a/samples/NavigationSample/Platforms/MacCatalyst/AppDelegate.fs b/samples/Navigation/BasicNavigation/Platforms/MacCatalyst/AppDelegate.fs similarity index 100% rename from samples/NavigationSample/Platforms/MacCatalyst/AppDelegate.fs rename to samples/Navigation/BasicNavigation/Platforms/MacCatalyst/AppDelegate.fs diff --git a/samples/NavigationSample/Platforms/MacCatalyst/Info.plist b/samples/Navigation/BasicNavigation/Platforms/MacCatalyst/Info.plist similarity index 100% rename from samples/NavigationSample/Platforms/MacCatalyst/Info.plist rename to samples/Navigation/BasicNavigation/Platforms/MacCatalyst/Info.plist diff --git a/samples/NavigationSample/Platforms/MacCatalyst/Program.fs b/samples/Navigation/BasicNavigation/Platforms/MacCatalyst/Program.fs similarity index 100% rename from samples/NavigationSample/Platforms/MacCatalyst/Program.fs rename to samples/Navigation/BasicNavigation/Platforms/MacCatalyst/Program.fs diff --git a/samples/NavigationSample/Platforms/Tizen/Main.fs b/samples/Navigation/BasicNavigation/Platforms/Tizen/Main.fs similarity index 100% rename from samples/NavigationSample/Platforms/Tizen/Main.fs rename to samples/Navigation/BasicNavigation/Platforms/Tizen/Main.fs diff --git a/samples/NavigationSample/Platforms/Tizen/tizen-manifest.xml b/samples/Navigation/BasicNavigation/Platforms/Tizen/tizen-manifest.xml similarity index 100% rename from samples/NavigationSample/Platforms/Tizen/tizen-manifest.xml rename to samples/Navigation/BasicNavigation/Platforms/Tizen/tizen-manifest.xml diff --git a/samples/NavigationSample/Platforms/Windows/App.fs b/samples/Navigation/BasicNavigation/Platforms/Windows/App.fs similarity index 100% rename from samples/NavigationSample/Platforms/Windows/App.fs rename to samples/Navigation/BasicNavigation/Platforms/Windows/App.fs diff --git a/samples/NavigationSample/Platforms/Windows/Main.fs b/samples/Navigation/BasicNavigation/Platforms/Windows/Main.fs similarity index 100% rename from samples/NavigationSample/Platforms/Windows/Main.fs rename to samples/Navigation/BasicNavigation/Platforms/Windows/Main.fs diff --git a/samples/NavigationSample/Platforms/Windows/Package.appxmanifest b/samples/Navigation/BasicNavigation/Platforms/Windows/Package.appxmanifest similarity index 100% rename from samples/NavigationSample/Platforms/Windows/Package.appxmanifest rename to samples/Navigation/BasicNavigation/Platforms/Windows/Package.appxmanifest diff --git a/samples/NavigationSample/Platforms/Windows/app.manifest b/samples/Navigation/BasicNavigation/Platforms/Windows/app.manifest similarity index 100% rename from samples/NavigationSample/Platforms/Windows/app.manifest rename to samples/Navigation/BasicNavigation/Platforms/Windows/app.manifest diff --git a/samples/NavigationSample/Platforms/iOS/AppDelegate.fs b/samples/Navigation/BasicNavigation/Platforms/iOS/AppDelegate.fs similarity index 100% rename from samples/NavigationSample/Platforms/iOS/AppDelegate.fs rename to samples/Navigation/BasicNavigation/Platforms/iOS/AppDelegate.fs diff --git a/samples/NavigationSample/Platforms/iOS/Info.plist b/samples/Navigation/BasicNavigation/Platforms/iOS/Info.plist similarity index 100% rename from samples/NavigationSample/Platforms/iOS/Info.plist rename to samples/Navigation/BasicNavigation/Platforms/iOS/Info.plist diff --git a/samples/NavigationSample/Platforms/iOS/Program.fs b/samples/Navigation/BasicNavigation/Platforms/iOS/Program.fs similarity index 100% rename from samples/NavigationSample/Platforms/iOS/Program.fs rename to samples/Navigation/BasicNavigation/Platforms/iOS/Program.fs diff --git a/samples/NavigationSample/Properties/launchSettings.json b/samples/Navigation/BasicNavigation/Properties/launchSettings.json similarity index 100% rename from samples/NavigationSample/Properties/launchSettings.json rename to samples/Navigation/BasicNavigation/Properties/launchSettings.json diff --git a/samples/NavigationSample/Resources/AppIcon/appicon.svg b/samples/Navigation/BasicNavigation/Resources/AppIcon/appicon.svg similarity index 100% rename from samples/NavigationSample/Resources/AppIcon/appicon.svg rename to samples/Navigation/BasicNavigation/Resources/AppIcon/appicon.svg diff --git a/samples/NavigationSample/Resources/AppIcon/appiconfg.svg b/samples/Navigation/BasicNavigation/Resources/AppIcon/appiconfg.svg similarity index 100% rename from samples/NavigationSample/Resources/AppIcon/appiconfg.svg rename to samples/Navigation/BasicNavigation/Resources/AppIcon/appiconfg.svg diff --git a/samples/NavigationSample/Resources/Fonts/OpenSans-Regular.ttf b/samples/Navigation/BasicNavigation/Resources/Fonts/OpenSans-Regular.ttf similarity index 100% rename from samples/NavigationSample/Resources/Fonts/OpenSans-Regular.ttf rename to samples/Navigation/BasicNavigation/Resources/Fonts/OpenSans-Regular.ttf diff --git a/samples/NavigationSample/Resources/Fonts/OpenSans-Semibold.ttf b/samples/Navigation/BasicNavigation/Resources/Fonts/OpenSans-Semibold.ttf similarity index 100% rename from samples/NavigationSample/Resources/Fonts/OpenSans-Semibold.ttf rename to samples/Navigation/BasicNavigation/Resources/Fonts/OpenSans-Semibold.ttf diff --git a/samples/NavigationSample/Resources/Images/dotnet_bot.svg b/samples/Navigation/BasicNavigation/Resources/Images/dotnet_bot.svg similarity index 100% rename from samples/NavigationSample/Resources/Images/dotnet_bot.svg rename to samples/Navigation/BasicNavigation/Resources/Images/dotnet_bot.svg diff --git a/samples/NavigationSample/Resources/Raw/AboutAssets.txt b/samples/Navigation/BasicNavigation/Resources/Raw/AboutAssets.txt similarity index 100% rename from samples/NavigationSample/Resources/Raw/AboutAssets.txt rename to samples/Navigation/BasicNavigation/Resources/Raw/AboutAssets.txt diff --git a/samples/NavigationSample/Resources/Splash/splash.svg b/samples/Navigation/BasicNavigation/Resources/Splash/splash.svg similarity index 100% rename from samples/NavigationSample/Resources/Splash/splash.svg rename to samples/Navigation/BasicNavigation/Resources/Splash/splash.svg diff --git a/samples/NavigationSample/BasicNavigation/Sample.fs b/samples/Navigation/BasicNavigation/Sample.fs similarity index 68% rename from samples/NavigationSample/BasicNavigation/Sample.fs rename to samples/Navigation/BasicNavigation/Sample.fs index 25d5ff2..2b8ba96 100644 --- a/samples/NavigationSample/BasicNavigation/Sample.fs +++ b/samples/Navigation/BasicNavigation/Sample.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.BasicNavigation +namespace NavigationSample open Fabulous open Fabulous.Maui @@ -56,21 +56,25 @@ module Sample = | GoToPageC -> { model with CurrentStep = Step.PageC } let view model = - ContentPage( - (Grid(coldefs = [ Star; Star; Star ], rowdefs = [ Auto; Star ]) { - Button("Page A", GoToPageA).gridColumn(0) + Application( + ContentPage( + (Grid(coldefs = [ Star; Star; Star ], rowdefs = [ Auto; Star ]) { + Button("Page A", GoToPageA).gridColumn(0) - Button("Page B", GoToPageB).gridColumn(1) + Button("Page B", GoToPageB).gridColumn(1) - Button("Page C", GoToPageC).gridColumn(2) + Button("Page C", GoToPageC).gridColumn(2) - (match model.CurrentStep with - | Step.PageA -> View.map PageAMsg (PageA.view model.PageAModel) - | Step.PageB -> View.map PageBMsg (PageB.view model.PageBModel) - | Step.PageC -> View.map PageCMsg (PageC.view model.PageCModel)) - .gridRow(1) - .gridColumnSpan(3) - }) - .rowSpacing(30.) + (match model.CurrentStep with + | Step.PageA -> View.map PageAMsg (PageA.view model.PageAModel) + | Step.PageB -> View.map PageBMsg (PageB.view model.PageBModel) + | Step.PageC -> View.map PageCMsg (PageC.view model.PageCModel)) + .gridRow(1) + .gridColumnSpan(3) + }) + .rowSpacing(30.) + ) ) + + let program = Program.stateful init update view diff --git a/samples/Navigation/NavigationPath/MauiProgram.fs b/samples/Navigation/NavigationPath/MauiProgram.fs new file mode 100644 index 0000000..9365d83 --- /dev/null +++ b/samples/Navigation/NavigationPath/MauiProgram.fs @@ -0,0 +1,16 @@ +namespace NavigationSample + +open Microsoft.Maui.Hosting +open Fabulous.Maui + +type MauiProgram = + static member CreateMauiApp() = + MauiApp + .CreateBuilder() + .UseFabulousApp(Sample.program) + .ConfigureFonts(fun fonts -> + fonts + .AddFont("OpenSans-Regular.ttf", "OpenSansRegular") + .AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold") + |> ignore) + .Build() diff --git a/samples/Navigation/NavigationPath/NavigationPath.fsproj b/samples/Navigation/NavigationPath/NavigationPath.fsproj new file mode 100644 index 0000000..603c0a9 --- /dev/null +++ b/samples/Navigation/NavigationPath/NavigationPath.fsproj @@ -0,0 +1,107 @@ + + + + net8.0-android;net8.0-ios;net8.0-maccatalyst + $(TargetFrameworks);net8.0-windows10.0.19041.0 + + + Exe + NavigationSample + true + true + false + + + NavigationSample + + + org.fabulous.maui.basicnavigation + 95540b31-0bdf-4c31-a775-610721869c08 + + + 1.0 + 1 + + $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) + + 14.2 + 14.0 + 21.0 + 10.0.17763.0 + 10.0.17763.0 + 6.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/NavigationSample/NavigationPath/NavigationState.fs b/samples/Navigation/NavigationPath/NavigationState.fs similarity index 98% rename from samples/NavigationSample/NavigationPath/NavigationState.fs rename to samples/Navigation/NavigationPath/NavigationState.fs index d9ede24..2c237ff 100644 --- a/samples/NavigationSample/NavigationPath/NavigationState.fs +++ b/samples/Navigation/NavigationPath/NavigationState.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.NavigationPath +namespace NavigationSample open Fabulous open Fabulous.Maui diff --git a/samples/NavigationSample/NavigationPath/NavigationTypes.fs b/samples/Navigation/NavigationPath/NavigationTypes.fs similarity index 97% rename from samples/NavigationSample/NavigationPath/NavigationTypes.fs rename to samples/Navigation/NavigationPath/NavigationTypes.fs index 1fa66e2..241d6d8 100644 --- a/samples/NavigationSample/NavigationPath/NavigationTypes.fs +++ b/samples/Navigation/NavigationPath/NavigationTypes.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.NavigationPath +namespace NavigationSample open Fabulous diff --git a/samples/NavigationSample/NavigationPath/PageA.fs b/samples/Navigation/NavigationPath/PageA.fs similarity index 84% rename from samples/NavigationSample/NavigationPath/PageA.fs rename to samples/Navigation/NavigationPath/PageA.fs index 721184c..89bd3a5 100644 --- a/samples/NavigationSample/NavigationPath/PageA.fs +++ b/samples/Navigation/NavigationPath/PageA.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.NavigationPath +namespace NavigationSample open Fabulous open Fabulous.Maui @@ -23,12 +23,12 @@ module PageA = let update (nav: NavigationController) msg model = match msg with - | Increment -> { model with Count = model.Count + 1 }, Cmd.none - | Decrement -> { model with Count = model.Count - 1 }, Cmd.none + | Increment -> { Count = model.Count + 1 }, Cmd.none + | Decrement -> { Count = model.Count - 1 }, Cmd.none | GoBack -> model, Navigation.navigateBack nav | GoToPageB -> model, Navigation.navigateToPageB nav model.Count | GoToPageC -> model, Navigation.navigateToPageC nav "Hello from Page A!" model.Count - | BackButtonPressed -> { model with Count = model.Count - 1 }, Cmd.none + | BackButtonPressed -> { Count = model.Count - 1 }, Cmd.none let view model = ContentPage( diff --git a/samples/NavigationSample/NavigationPath/PageB.fs b/samples/Navigation/NavigationPath/PageB.fs similarity index 97% rename from samples/NavigationSample/NavigationPath/PageB.fs rename to samples/Navigation/NavigationPath/PageB.fs index c000f66..6ca5275 100644 --- a/samples/NavigationSample/NavigationPath/PageB.fs +++ b/samples/Navigation/NavigationPath/PageB.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.NavigationPath +namespace NavigationSample open Fabulous open Fabulous.Maui diff --git a/samples/NavigationSample/NavigationPath/PageC.fs b/samples/Navigation/NavigationPath/PageC.fs similarity index 93% rename from samples/NavigationSample/NavigationPath/PageC.fs rename to samples/Navigation/NavigationPath/PageC.fs index 7eefb21..2004ac0 100644 --- a/samples/NavigationSample/NavigationPath/PageC.fs +++ b/samples/Navigation/NavigationPath/PageC.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.NavigationPath +namespace NavigationSample open Fabulous open Fabulous.Maui @@ -42,7 +42,7 @@ module PageC = Grid(coldefs = [ Star ], rowdefs = [ Star; Auto ]) { VStack() { Label($"Args: {model.Args}") - Label($"StepCount: {model.StepCount}") + Label($"StepCount from Page B: {model.StepCount}") Label($"Count: {model.Count}").centerTextHorizontal() diff --git a/samples/Navigation/NavigationPath/Platforms/Android/AndroidManifest.xml b/samples/Navigation/NavigationPath/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..bdec9b5 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/samples/Navigation/NavigationPath/Platforms/Android/MainActivity.fs b/samples/Navigation/NavigationPath/Platforms/Android/MainActivity.fs new file mode 100644 index 0000000..85f15ab --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Android/MainActivity.fs @@ -0,0 +1,17 @@ +namespace NavigationSample + +open Android.App +open Android.Content.PM +open Microsoft.Maui + +[] +type MainActivity() = + inherit MauiAppCompatActivity() diff --git a/samples/Navigation/NavigationPath/Platforms/Android/MainApplication.fs b/samples/Navigation/NavigationPath/Platforms/Android/MainApplication.fs new file mode 100644 index 0000000..7910a54 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Android/MainApplication.fs @@ -0,0 +1,10 @@ +namespace NavigationSample + +open Android.App +open Microsoft.Maui + +[] +type MainApplication(handle, ownership) = + inherit MauiApplication(handle, ownership) + + override _.CreateMauiApp() = MauiProgram.CreateMauiApp() diff --git a/samples/Navigation/NavigationPath/Platforms/Android/Resources/values/colors.xml b/samples/Navigation/NavigationPath/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..5cd1604 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/samples/Navigation/NavigationPath/Platforms/MacCatalyst/AppDelegate.fs b/samples/Navigation/NavigationPath/Platforms/MacCatalyst/AppDelegate.fs new file mode 100644 index 0000000..90458e5 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/MacCatalyst/AppDelegate.fs @@ -0,0 +1,10 @@ +namespace NavigationSample + +open Foundation +open Microsoft.Maui + +[] +type AppDelegate() = + inherit MauiUIApplicationDelegate() + + override this.CreateMauiApp() = MauiProgram.CreateMauiApp() diff --git a/samples/Navigation/NavigationPath/Platforms/MacCatalyst/Info.plist b/samples/Navigation/NavigationPath/Platforms/MacCatalyst/Info.plist new file mode 100644 index 0000000..0690e47 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,30 @@ + + + + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/samples/Navigation/NavigationPath/Platforms/MacCatalyst/Program.fs b/samples/Navigation/NavigationPath/Platforms/MacCatalyst/Program.fs new file mode 100644 index 0000000..26c87e7 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/MacCatalyst/Program.fs @@ -0,0 +1,9 @@ +namespace NavigationSample + +open UIKit + +module Program = + [] + let main args = + UIApplication.Main(args, null, typeof) + 0 diff --git a/samples/Navigation/NavigationPath/Platforms/Tizen/Main.fs b/samples/Navigation/NavigationPath/Platforms/Tizen/Main.fs new file mode 100644 index 0000000..3d59efd --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Tizen/Main.fs @@ -0,0 +1,16 @@ +namespace NavigationSample + +open System +open Microsoft.Maui +open Microsoft.Maui.Hosting + +type Program() = + inherit MauiApplication() + + override this.CreateMauiApp() = MauiProgram.CreateMauiApp() + +module Program = + [] + let main args = + let app = Program() + app.Run(args) diff --git a/samples/Navigation/NavigationPath/Platforms/Tizen/tizen-manifest.xml b/samples/Navigation/NavigationPath/Platforms/Tizen/tizen-manifest.xml new file mode 100644 index 0000000..83e2649 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Tizen/tizen-manifest.xml @@ -0,0 +1,15 @@ + + + + + + appicon.xhigh.png + + + + + http://tizen.org/privilege/internet + + + + \ No newline at end of file diff --git a/samples/Navigation/NavigationPath/Platforms/Windows/App.fs b/samples/Navigation/NavigationPath/Platforms/Windows/App.fs new file mode 100644 index 0000000..ebceb21 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Windows/App.fs @@ -0,0 +1,10 @@ +namespace NavigationSample.WinUI + +///

+/// Provides application-specific behavior to supplement the default Application class. +/// +type App() = + inherit FSharp.Maui.WinUICompat.App() + + override this.CreateMauiApp() = + NavigationSample.MauiProgram.CreateMauiApp() diff --git a/samples/Navigation/NavigationPath/Platforms/Windows/Main.fs b/samples/Navigation/NavigationPath/Platforms/Windows/Main.fs new file mode 100644 index 0000000..501c15d --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Windows/Main.fs @@ -0,0 +1,9 @@ +namespace NavigationSample.WinUI + +open System + +module Program = + [] + let main args = + do FSharp.Maui.WinUICompat.Program.Main(args, typeof) + 0 diff --git a/samples/Navigation/NavigationPath/Platforms/Windows/Package.appxmanifest b/samples/Navigation/NavigationPath/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..e98c6ed --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,43 @@ + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/Navigation/NavigationPath/Platforms/Windows/app.manifest b/samples/Navigation/NavigationPath/Platforms/Windows/app.manifest new file mode 100644 index 0000000..c8a173c --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/samples/Navigation/NavigationPath/Platforms/iOS/AppDelegate.fs b/samples/Navigation/NavigationPath/Platforms/iOS/AppDelegate.fs new file mode 100644 index 0000000..7418834 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/iOS/AppDelegate.fs @@ -0,0 +1,10 @@ +namespace NavigationSample + +open Foundation +open Microsoft.Maui + +[] +type AppDelegate() = + inherit MauiUIApplicationDelegate() + + override _.CreateMauiApp() = MauiProgram.CreateMauiApp() diff --git a/samples/Navigation/NavigationPath/Platforms/iOS/Info.plist b/samples/Navigation/NavigationPath/Platforms/iOS/Info.plist new file mode 100644 index 0000000..358337b --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/samples/Navigation/NavigationPath/Platforms/iOS/Program.fs b/samples/Navigation/NavigationPath/Platforms/iOS/Program.fs new file mode 100644 index 0000000..26c87e7 --- /dev/null +++ b/samples/Navigation/NavigationPath/Platforms/iOS/Program.fs @@ -0,0 +1,9 @@ +namespace NavigationSample + +open UIKit + +module Program = + [] + let main args = + UIApplication.Main(args, null, typeof) + 0 diff --git a/samples/Navigation/NavigationPath/Properties/launchSettings.json b/samples/Navigation/NavigationPath/Properties/launchSettings.json new file mode 100644 index 0000000..c16206a --- /dev/null +++ b/samples/Navigation/NavigationPath/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "MsixPackage", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/samples/Navigation/NavigationPath/Resources/AppIcon/appicon.svg b/samples/Navigation/NavigationPath/Resources/AppIcon/appicon.svg new file mode 100644 index 0000000..5f04fcf --- /dev/null +++ b/samples/Navigation/NavigationPath/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/samples/Navigation/NavigationPath/Resources/AppIcon/appiconfg.svg b/samples/Navigation/NavigationPath/Resources/AppIcon/appiconfg.svg new file mode 100644 index 0000000..62d66d7 --- /dev/null +++ b/samples/Navigation/NavigationPath/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/samples/Navigation/NavigationPath/Resources/Fonts/OpenSans-Regular.ttf b/samples/Navigation/NavigationPath/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..534d00947daa57442d17ad9080b06dbad940bcc2 GIT binary patch literal 107140 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

Grz`8e{0lK(`I^}3pWpk~V^2Q$_+vF< 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�FN=u`7aeLbfzV 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 L7yCvq>3shK)@ literal 0 HcmV?d00001 diff --git a/samples/Navigation/NavigationPath/Resources/Fonts/OpenSans-Semibold.ttf b/samples/Navigation/NavigationPath/Resources/Fonts/OpenSans-Semibold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f3331530101197399506bdbda5ac334a4e9adee0 GIT binary patch literal 111028 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 Ih7t(>2U?UXMgRZ+ literal 0 HcmV?d00001 diff --git a/samples/Navigation/NavigationPath/Resources/Images/dotnet_bot.svg b/samples/Navigation/NavigationPath/Resources/Images/dotnet_bot.svg new file mode 100644 index 0000000..51b1c33 --- /dev/null +++ b/samples/Navigation/NavigationPath/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/Navigation/NavigationPath/Resources/Raw/AboutAssets.txt b/samples/Navigation/NavigationPath/Resources/Raw/AboutAssets.txt new file mode 100644 index 0000000..50b8a7b --- /dev/null +++ b/samples/Navigation/NavigationPath/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with you package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/samples/Navigation/NavigationPath/Resources/Splash/splash.svg b/samples/Navigation/NavigationPath/Resources/Splash/splash.svg new file mode 100644 index 0000000..62d66d7 --- /dev/null +++ b/samples/Navigation/NavigationPath/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/samples/NavigationSample/NavigationPath/Sample.fs b/samples/Navigation/NavigationPath/Sample.fs similarity index 68% rename from samples/NavigationSample/NavigationPath/Sample.fs rename to samples/Navigation/NavigationPath/Sample.fs index 41eae32..8cf08ba 100644 --- a/samples/NavigationSample/NavigationPath/Sample.fs +++ b/samples/Navigation/NavigationPath/Sample.fs @@ -1,4 +1,4 @@ -namespace NavigationSample.NavigationPath +namespace NavigationSample open Fabulous open Fabulous.Maui @@ -38,30 +38,22 @@ module Sample = // When a new path is pushed, we create a new page and push it on the stack let newPage = NavigationState.init path - { model with - Navigation = model.Navigation.Push(newPage) }, - Cmd.none + { Navigation = model.Navigation.Push(newPage) }, Cmd.none | BackNavigated -> // BackNavigated handles both the back button and the programmatic back navigation // We simply pop the current page from the stack - { model with - Navigation = model.Navigation.Pop() }, - Cmd.none + { Navigation = model.Navigation.Pop() }, Cmd.none | NavigationMsg navMsg -> let m, navCmd = NavigationState.update nav navMsg model.Navigation.CurrentPage - { model with - Navigation = model.Navigation.UpdateCurrentPage(m) }, - Cmd.map NavigationMsg navCmd + { Navigation = model.Navigation.UpdateCurrentPage(m) }, Cmd.map NavigationMsg navCmd | BackButtonPressed -> let m, navCmd = NavigationState.updateBackButton nav model.Navigation.CurrentPage - { model with - Navigation = model.Navigation.UpdateCurrentPage(m) }, - Cmd.map NavigationMsg navCmd + { Navigation = model.Navigation.UpdateCurrentPage(m) }, Cmd.map NavigationMsg navCmd /// The view function contains the NavigationPage control that will display the different pages /// and handle the navigation animations (push, pop) as well has displaying a back button by default @@ -69,13 +61,17 @@ module Sample = /// Because of MVU, all the pages need to return the same Msg type but they all have their own. /// To be able to wrap those Msgs into the app's root Msg type, we use the View.map helper function. let view model = - (NavigationPage() { - // We inject in the NavigationPage history the back stack of our navigation - for navModel in List.rev model.Navigation.BackStack do - (View.map NavigationMsg (NavigationState.view navModel)).hasBackButton(false) - - // The page currently displayed is the one on top of the stack - (View.map NavigationMsg (NavigationState.view model.Navigation.CurrentPage)) - .hasBackButton(false) - }) - .onBackButtonPressed(BackButtonPressed) + Application( + (NavigationPage() { + // We inject in the NavigationPage history the back stack of our navigation + for navModel in List.rev model.Navigation.BackStack do + (View.map NavigationMsg (NavigationState.view navModel)).hasBackButton(false) + + // The page currently displayed is the one on top of the stack + (View.map NavigationMsg (NavigationState.view model.Navigation.CurrentPage)) + .hasBackButton(false) + }) + .onBackButtonPressed(BackButtonPressed) + ) + + let program = Program.statefulWithCmd init update view diff --git a/samples/NavigationSample/App.fs b/samples/NavigationSample/App.fs deleted file mode 100644 index 6867d34..0000000 --- a/samples/NavigationSample/App.fs +++ /dev/null @@ -1,27 +0,0 @@ -namespace NavigationSample - -open Fabulous -open Fabulous.Maui - -open type Fabulous.Maui.View - -module App = - type Model = - { BasicNavigationModel: NavigationPath.Sample.Model } - - type Msg = BasicNavigationMsg of NavigationPath.Sample.Msg - - let init () = - let m, c = NavigationPath.Sample.init() - { BasicNavigationModel = m }, Cmd.map BasicNavigationMsg c - - let update msg model = - match msg with - | BasicNavigationMsg msg -> - let m, c = NavigationPath.Sample.update msg model.BasicNavigationModel - { BasicNavigationModel = m }, Cmd.map BasicNavigationMsg c - - let view model = - Application(View.map BasicNavigationMsg (NavigationPath.Sample.view model.BasicNavigationModel)) - - let program = Program.statefulWithCmd init update view