From 90fe2e72b3d4c270ac67bfbdad7f954a0a556fac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9=20Larivi=C3=A8re?= Date: Wed, 22 Nov 2023 19:15:41 +0100 Subject: [PATCH] Update to Fabulous 2.4.0 --- .config/dotnet-tools.json | 2 +- .github/workflows/pull_request.yml | 2 +- .github/workflows/release.yml | 2 +- CHANGELOG.md | 8 ++++++- Directory.Packages.props | 22 +++++++++---------- Fabulous.XamarinForms.sln | 10 +++++---- src/Fabulous.XamarinForms/Attributes.fs | 8 ++++--- .../Fabulous.XamarinForms.fsproj | 2 +- .../Views/Application.fs | 6 ++--- .../Views/Cells/EntryCell.fs | 12 +++++----- .../Views/Cells/SwitchCell.fs | 2 +- .../Views/Cells/_Cell.fs | 6 ++--- .../Views/Collections/ListView.fs | 2 +- .../Views/Collections/_ItemsView.fs | 4 ++-- .../Views/Controls/Button.fs | 6 ++--- .../Views/Controls/CheckBox.fs | 2 +- .../Views/Controls/DatePicker.fs | 2 +- .../Views/Controls/Editor.fs | 6 ++--- .../Views/Controls/Entry.fs | 4 ++-- .../Views/Controls/ImageButton.fs | 10 ++++----- .../Views/Controls/Picker.fs | 5 ++++- .../Views/Controls/RadioButton.fs | 6 +++-- .../Views/Controls/SearchBar.fs | 8 +++---- .../Views/Controls/Slider.fs | 6 ++--- .../Views/Controls/Stepper.fs | 2 +- .../Views/Controls/Switch.fs | 2 +- .../Views/Controls/TimePicker.fs | 2 +- .../Views/Controls/WebView.fs | 2 +- .../TapGestureRecognizer.fs | 2 +- .../Views/Layouts/RefreshView.fs | 2 +- .../Views/Layouts/_Layout.fs | 4 ++-- .../Views/MenuItems/MenuItem.fs | 2 +- .../Views/MenuItems/ToolbarItem.fs | 2 +- .../Views/Pages/NavigationPage.fs | 4 ++-- .../Views/Pages/_MultiPageOfPage.fs | 2 +- .../Views/Pages/_Page.fs | 6 ++--- .../PathTransforms/CompositeTransform.fs | 8 +++---- .../Shapes/PathTransforms/MatrixTransform.fs | 2 +- .../Shapes/PathTransforms/ScaleTransform.fs | 2 +- .../Shapes/PathTransforms/SkewTransform.fs | 2 +- .../.template.config/template.json | 2 +- .../blank/.template.config/template.json | 10 ++++----- 42 files changed, 108 insertions(+), 93 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 4b075dd..81ed678 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "fantomas": { - "version": "5.2.0", + "version": "6.2.3", "commands": [ "fantomas" ] diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index b110826..eb793e3 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -18,7 +18,7 @@ jobs: - name: Check code formatting run: | dotnet tool restore - dotnet fantomas --check -r src samples templates + dotnet fantomas --check src samples templates - name: Restore run: dotnet restore ${SLN_FILE} - name: Build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2a92a13..7bd1b71 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,7 @@ name: Release on: push: - tags: ['[0-9]+.[0-9]+.[0-9]+', '[0-9]+.[0-9]+.[0-9]+-preview.[0-9]+'] + tags: ['[0-9]+.[0-9]+.[0-9]+', '[0-9]+.[0-9]+.[0-9]+-pre[0-9]+'] paths-ignore: [ 'docs/**' ] permissions: write-all diff --git a/CHANGELOG.md b/CHANGELOG.md index fb8c1ce..8f00ea0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 No unreleased changes. +## [2.4.0] - 2023-11-22 + +### Changed +- Updated to Fabulous 2.4.0 + ## [2.3.0] - 2023-06-30 ### Changed @@ -45,7 +50,8 @@ No unreleased changes. ### Changed - Fabulous.XamarinForms has moved from the Fabulous repository to its own repository: [https://github.com/fabulous-dev/Fabulous.XamarinForms](https://github.com/fabulous-dev/Fabulous.XamarinForms) -[unreleased]: https://github.com/fabulous-dev/Fabulous.XamarinForms/compare/2.3.0...HEAD +[unreleased]: https://github.com/fabulous-dev/Fabulous.XamarinForms/compare/2.4.0...HEAD +[2.4.0]: https://github.com/fabulous-dev/Fabulous.XamarinForms/releases/tag/2.4.0 [2.3.0]: https://github.com/fabulous-dev/Fabulous.XamarinForms/releases/tag/2.3.0 [2.2.0]: https://github.com/fabulous-dev/Fabulous.XamarinForms/releases/tag/2.2.0 [2.1.4]: https://github.com/fabulous-dev/Fabulous.XamarinForms/releases/tag/2.1.4 diff --git a/Directory.Packages.props b/Directory.Packages.props index 9ebb7dd..ad3a135 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -5,21 +5,21 @@ - - - - - - - - + + + + + + + + - - - + + + diff --git a/Fabulous.XamarinForms.sln b/Fabulous.XamarinForms.sln index 080735c..d369c8f 100644 --- a/Fabulous.XamarinForms.sln +++ b/Fabulous.XamarinForms.sln @@ -48,10 +48,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Solution Files", "_Solutio README.md = README.md CHANGELOG.md = CHANGELOG.md LICENSE.md = LICENSE.md - .gitignore = .gitignore - pull_request.yml = .github/workflows/pull_request.yml - build.yml = .github/workflows/build.yml - release.yml = .github/workflows/release.yml + .gitignore = .gitignore + pull_request.yml = .github/workflows/pull_request.yml + build.yml = .github/workflows/build.yml + release.yml = .github/workflows/release.yml + Directory.Packages.props = Directory.Packages.props + Directory.Build.props = Directory.Build.props EndProjectSection EndProject Global diff --git a/src/Fabulous.XamarinForms/Attributes.fs b/src/Fabulous.XamarinForms/Attributes.fs index e322da4..233db19 100644 --- a/src/Fabulous.XamarinForms/Attributes.fs +++ b/src/Fabulous.XamarinForms/Attributes.fs @@ -21,10 +21,12 @@ module AppTheme = [] type ValueEventData<'data, 'eventArgs> = { Value: 'data - Event: 'eventArgs -> obj } + Event: 'eventArgs -> MsgValue } module ValueEventData = - let create (value: 'data) (event: 'eventArgs -> obj) = { Value = value; Event = event } + let create (value: 'data) (event: 'eventArgs -> 'msg) = + { Value = value + Event = event >> box >> MsgValue } /// Xamarin Forms specific attributes that can be encoded as 8 bytes module SmallScalars = @@ -225,7 +227,7 @@ module Attributes = // Set the new event handler let handler = EventHandler<'args>(fun _ args -> - let r = curr.Event args + let (MsgValue r) = curr.Event args Dispatcher.dispatch node r) node.SetHandler(name, ValueSome handler) diff --git a/src/Fabulous.XamarinForms/Fabulous.XamarinForms.fsproj b/src/Fabulous.XamarinForms/Fabulous.XamarinForms.fsproj index d7245b8..d836639 100644 --- a/src/Fabulous.XamarinForms/Fabulous.XamarinForms.fsproj +++ b/src/Fabulous.XamarinForms/Fabulous.XamarinForms.fsproj @@ -140,7 +140,7 @@ --> - + \ No newline at end of file diff --git a/src/Fabulous.XamarinForms/Views/Application.fs b/src/Fabulous.XamarinForms/Views/Application.fs index 6f7ce0a..513ee0c 100644 --- a/src/Fabulous.XamarinForms/Views/Application.fs +++ b/src/Fabulous.XamarinForms/Views/Application.fs @@ -100,17 +100,17 @@ type ApplicationModifiers = /// Dispatch a message when the application starts [] static member inline onStart(this: WidgetBuilder<'msg, #IApplication>, onStart: 'msg) = - this.AddScalar(Application.Start.WithValue(onStart)) + this.AddScalar(Application.Start.WithValue(MsgValue onStart)) /// Dispatch a message when the application is paused by the OS [] static member inline onSleep(this: WidgetBuilder<'msg, #IApplication>, onSleep: 'msg) = - this.AddScalar(Application.Sleep.WithValue(onSleep)) + this.AddScalar(Application.Sleep.WithValue(MsgValue onSleep)) /// Dispatch a message when the application is resumed by the OS [] static member inline onResume(this: WidgetBuilder<'msg, #IApplication>, onResume: 'msg) = - this.AddScalar(Application.Resume.WithValue(onResume)) + this.AddScalar(Application.Resume.WithValue(MsgValue onResume)) /// Link a ViewRef to access the direct Application instance [] diff --git a/src/Fabulous.XamarinForms/Views/Cells/EntryCell.fs b/src/Fabulous.XamarinForms/Views/Cells/EntryCell.fs index c4fb79b..2067f34 100644 --- a/src/Fabulous.XamarinForms/Views/Cells/EntryCell.fs +++ b/src/Fabulous.XamarinForms/Views/Cells/EntryCell.fs @@ -41,7 +41,7 @@ module EntryCellBuilders = WidgetBuilder<'msg, IEntryCell>( EntryCell.WidgetKey, EntryCell.Label.WithValue(label), - EntryCell.TextWithEvent.WithValue(ValueEventData.create text (fun args -> onTextChanged args.NewTextValue |> box)) + EntryCell.TextWithEvent.WithValue(ValueEventData.create text (fun (args: TextChangedEventArgs) -> onTextChanged args.NewTextValue)) ) [] @@ -54,32 +54,32 @@ type EntryCellModifiers = this.AddScalar(EntryCell.LabelColor.WithValue(AppTheme.create light dark)) /// Set the horizontal text alignment - /// param name="alignment">The horizontal text alignment + /// The horizontal text alignment [] static member inline horizontalTextAlignment(this: WidgetBuilder<'msg, #IEntryCell>, alignment: TextAlignment) = this.AddScalar(EntryCell.HorizontalTextAlignment.WithValue(alignment)) /// Set the vertical text alignment - /// param name="alignment">The vertical text alignment + /// The vertical text alignment [] static member inline verticalTextAlignment(this: WidgetBuilder<'msg, #IEntryCell>, alignment: TextAlignment) = this.AddScalar(EntryCell.VerticalTextAlignment.WithValue(alignment)) /// Set the keyboard - /// param name="keyboard">The keyboard type + /// The keyboard type [] static member inline keyboard(this: WidgetBuilder<'msg, #IEntryCell>, keyboard: Keyboard) = this.AddScalar(EntryCell.Keyboard.WithValue(keyboard)) /// Set the placeholder text - /// param name="placeholder">The placeholder + /// The placeholder [] static member inline placeholder(this: WidgetBuilder<'msg, #IEntryCell>, placeholder: string) = this.AddScalar(EntryCell.Placeholder.WithValue(placeholder)) [] static member inline onCompleted(this: WidgetBuilder<'msg, #IEntryCell>, onCompleted: 'msg) = - this.AddScalar(EntryCell.OnCompleted.WithValue(onCompleted)) + this.AddScalar(EntryCell.OnCompleted.WithValue(MsgValue onCompleted)) /// Link a ViewRef to access the direct EntryCell control instance [] diff --git a/src/Fabulous.XamarinForms/Views/Cells/SwitchCell.fs b/src/Fabulous.XamarinForms/Views/Cells/SwitchCell.fs index 1c1df66..e64f897 100644 --- a/src/Fabulous.XamarinForms/Views/Cells/SwitchCell.fs +++ b/src/Fabulous.XamarinForms/Views/Cells/SwitchCell.fs @@ -24,7 +24,7 @@ module SwitchCellBuilders = static member inline SwitchCell<'msg>(text: string, value: bool, onChanged: bool -> 'msg) = WidgetBuilder<'msg, ISwitchCell>( SwitchCell.WidgetKey, - SwitchCell.OnWithEvent.WithValue(ValueEventData.create value (fun args -> onChanged args.Value |> box)), + SwitchCell.OnWithEvent.WithValue(ValueEventData.create value (fun (args: ToggledEventArgs) -> onChanged args.Value)), SwitchCell.Text.WithValue(text) ) diff --git a/src/Fabulous.XamarinForms/Views/Cells/_Cell.fs b/src/Fabulous.XamarinForms/Views/Cells/_Cell.fs index f314002..059b095 100644 --- a/src/Fabulous.XamarinForms/Views/Cells/_Cell.fs +++ b/src/Fabulous.XamarinForms/Views/Cells/_Cell.fs @@ -47,12 +47,12 @@ type CellModifiers = [] static member inline onAppearing(this: WidgetBuilder<'msg, #ICell>, onAppearing: 'msg) = - this.AddScalar(Cell.Appearing.WithValue(onAppearing)) + this.AddScalar(Cell.Appearing.WithValue(MsgValue onAppearing)) [] static member inline onDisappearing(this: WidgetBuilder<'msg, #ICell>, onDisappearing: 'msg) = - this.AddScalar(Cell.Disappearing.WithValue(onDisappearing)) + this.AddScalar(Cell.Disappearing.WithValue(MsgValue onDisappearing)) [] static member inline onTapped(this: WidgetBuilder<'msg, #ICell>, onTapped: 'msg) = - this.AddScalar(Cell.Tapped.WithValue(onTapped)) + this.AddScalar(Cell.Tapped.WithValue(MsgValue onTapped)) diff --git a/src/Fabulous.XamarinForms/Views/Collections/ListView.fs b/src/Fabulous.XamarinForms/Views/Collections/ListView.fs index ea122bb..424c9d8 100644 --- a/src/Fabulous.XamarinForms/Views/Collections/ListView.fs +++ b/src/Fabulous.XamarinForms/Views/Collections/ListView.fs @@ -184,7 +184,7 @@ type ListViewModifiers = [] static member inline onRefreshing(this: WidgetBuilder<'msg, #IListView>, onRefreshing: 'msg) = - this.AddScalar(ListView.Refreshing.WithValue(onRefreshing)) + this.AddScalar(ListView.Refreshing.WithValue(MsgValue onRefreshing)) [] static member inline onScrolled(this: WidgetBuilder<'msg, #IListView>, onScrolled: ScrolledEventArgs -> 'msg) = diff --git a/src/Fabulous.XamarinForms/Views/Collections/_ItemsView.fs b/src/Fabulous.XamarinForms/Views/Collections/_ItemsView.fs index 04a46c5..7d1c326 100644 --- a/src/Fabulous.XamarinForms/Views/Collections/_ItemsView.fs +++ b/src/Fabulous.XamarinForms/Views/Collections/_ItemsView.fs @@ -52,12 +52,12 @@ type ItemsViewModifiers = /// The threshold of items not yet visible in the list at which the RemainingItemsThresholdReached event will be fired. /// The threshold of items not yet visible in the list - /// Event executed when the RemainingItemsThreshold is reached + /// Event executed when the RemainingItemsThreshold is reached [] static member inline remainingItemsThreshold(this: WidgetBuilder<'msg, #IItemsView>, value: int, onThresholdReached: 'msg) = this .AddScalar(ItemsView.RemainingItemsThreshold.WithValue(value)) - .AddScalar(ItemsView.RemainingItemsThresholdReached.WithValue(onThresholdReached)) + .AddScalar(ItemsView.RemainingItemsThresholdReached.WithValue(MsgValue onThresholdReached)) /// Sets the visibility of the horizontal scroll bar. /// true if the horizontal scroll is enabled; otherwise, false. diff --git a/src/Fabulous.XamarinForms/Views/Controls/Button.fs b/src/Fabulous.XamarinForms/Views/Controls/Button.fs index f91c149..1ead2b1 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/Button.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/Button.fs @@ -59,7 +59,7 @@ module ButtonBuilders = type Fabulous.XamarinForms.View with static member inline Button<'msg>(text: string, onClicked: 'msg) = - WidgetBuilder<'msg, IButton>(Button.WidgetKey, Button.Text.WithValue(text), Button.Clicked.WithValue(onClicked)) + WidgetBuilder<'msg, IButton>(Button.WidgetKey, Button.Text.WithValue(text), Button.Clicked.WithValue(MsgValue onClicked)) [] type ButtonModifiers = @@ -165,11 +165,11 @@ type ButtonModifiers = [] static member inline onPressed(this: WidgetBuilder<'msg, #IButton>, onPressed: 'msg) = - this.AddScalar(Button.Pressed.WithValue(onPressed)) + this.AddScalar(Button.Pressed.WithValue(MsgValue onPressed)) [] static member inline onReleased(this: WidgetBuilder<'msg, #IButton>, onReleased: 'msg) = - this.AddScalar(Button.Released.WithValue(onReleased)) + this.AddScalar(Button.Released.WithValue(MsgValue onReleased)) /// Link a ViewRef to access the direct Button control instance [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/CheckBox.fs b/src/Fabulous.XamarinForms/Views/Controls/CheckBox.fs index c374c9e..7764703 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/CheckBox.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/CheckBox.fs @@ -23,7 +23,7 @@ module CheckBoxBuilders = static member inline CheckBox<'msg>(isChecked: bool, onCheckedChanged: bool -> 'msg) = WidgetBuilder<'msg, ICheckBox>( CheckBox.WidgetKey, - CheckBox.IsCheckedWithEvent.WithValue(ValueEventData.create isChecked (fun args -> onCheckedChanged args.Value |> box)) + CheckBox.IsCheckedWithEvent.WithValue(ValueEventData.create isChecked (fun (args: CheckedChangedEventArgs) -> onCheckedChanged args.Value)) ) [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/DatePicker.fs b/src/Fabulous.XamarinForms/Views/Controls/DatePicker.fs index 36f2024..9ff27a2 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/DatePicker.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/DatePicker.fs @@ -57,7 +57,7 @@ module DatePickerBuilders = static member inline DatePicker<'msg>(date: DateTime, onDateSelected: DateTime -> 'msg) = WidgetBuilder<'msg, IDatePicker>( DatePicker.WidgetKey, - DatePicker.DateWithEvent.WithValue(ValueEventData.create date (fun args -> onDateSelected args.NewDate |> box)) + DatePicker.DateWithEvent.WithValue(ValueEventData.create date (fun (args: DateChangedEventArgs) -> onDateSelected args.NewDate)) ) [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/Editor.fs b/src/Fabulous.XamarinForms/Views/Controls/Editor.fs index 811d03a..448e83c 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/Editor.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/Editor.fs @@ -34,7 +34,7 @@ module EditorBuilders = static member inline Editor<'msg>(text: string, onTextChanged: string -> 'msg) = WidgetBuilder<'msg, IEditor>( Editor.WidgetKey, - InputView.TextWithEvent.WithValue(ValueEventData.create text (fun args -> onTextChanged args.NewTextValue |> box)) + InputView.TextWithEvent.WithValue(ValueEventData.create text (fun (args: TextChangedEventArgs) -> onTextChanged args.NewTextValue)) ) [] @@ -69,7 +69,7 @@ type EditorModifiers = this.AddScalar(Editor.AutoSize.WithValue(value)) /// Sets a value that controls whether the editor will allow text prediction. - /// true will allow text prediction. otherwise false. [] static member inline isPredictionEnabled(this: WidgetBuilder<'msg, #IEditor>, value: bool) = this.AddScalar(Editor.IsTextPredictionEnabled.WithValue(value)) @@ -78,7 +78,7 @@ type EditorModifiers = /// Msg to dispatch when editing has completed. [] static member inline onCompleted(this: WidgetBuilder<'msg, #IEditor>, onCompleted: 'msg) = - this.AddScalar(Editor.Completed.WithValue(onCompleted)) + this.AddScalar(Editor.Completed.WithValue(MsgValue onCompleted)) /// Link a ViewRef to access the direct Editor control instance [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/Entry.fs b/src/Fabulous.XamarinForms/Views/Controls/Entry.fs index c01c21d..190467b 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/Entry.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/Entry.fs @@ -60,7 +60,7 @@ module EntryBuilders = static member inline Entry<'msg>(text: string, onTextChanged: string -> 'msg) = WidgetBuilder<'msg, IEntry>( Entry.WidgetKey, - InputView.TextWithEvent.WithValue(ValueEventData.create text (fun args -> onTextChanged args.NewTextValue |> box)) + InputView.TextWithEvent.WithValue(ValueEventData.create text (fun (args: TextChangedEventArgs) -> onTextChanged args.NewTextValue)) ) [] @@ -122,7 +122,7 @@ type EntryModifiers = [] static member inline onCompleted(this: WidgetBuilder<'msg, #IEntry>, onCompleted: 'msg) = - this.AddScalar(Entry.Completed.WithValue(onCompleted)) + this.AddScalar(Entry.Completed.WithValue(MsgValue onCompleted)) /// Link a ViewRef to access the direct Entry control instance [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/ImageButton.fs b/src/Fabulous.XamarinForms/Views/Controls/ImageButton.fs index a4e0aac..04e30af 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/ImageButton.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/ImageButton.fs @@ -51,7 +51,7 @@ module ImageButtonBuilders = WidgetBuilder<'msg, IImageButton>( ImageButton.WidgetKey, ImageButton.Aspect.WithValue(aspect), - ImageButton.Clicked.WithValue(onClicked), + ImageButton.Clicked.WithValue(MsgValue onClicked), ImageButton.Source.WithValue(AppTheme.create light dark) ) @@ -95,13 +95,13 @@ type ImageButtonModifiers = this.AddScalar(ImageButton.BorderColor.WithValue(AppTheme.create light dark)) /// Set the width of the image button border - /// The width of the image button border. + /// The width of the image button border. [] static member inline borderWidth(this: WidgetBuilder<'msg, #IImageButton>, value: float) = this.AddScalar(ImageButton.BorderWidth.WithValue(value)) /// Set the corner radius of the image button - /// The corner radius of the image button. + /// The corner radius of the image button. [] static member inline cornerRadius(this: WidgetBuilder<'msg, #IImageButton>, value: int) = this.AddScalar(ImageButton.CornerRadius.WithValue(value)) @@ -134,13 +134,13 @@ type ImageButtonModifiers = /// Msg to dispatch when image button is pressed [] static member inline onPressed(this: WidgetBuilder<'msg, #IImageButton>, onPressed: 'msg) = - this.AddScalar(ImageButton.Pressed.WithValue(onPressed)) + this.AddScalar(ImageButton.Pressed.WithValue(MsgValue onPressed)) /// Event that is fired when image button is released. /// Msg to dispatch when image button is released. [] static member inline onReleased(this: WidgetBuilder<'msg, #IImageButton>, onReleased: 'msg) = - this.AddScalar(ImageButton.Released.WithValue(onReleased)) + this.AddScalar(ImageButton.Released.WithValue(MsgValue onReleased)) /// Link a ViewRef to access the direct ImageButton control instance [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/Picker.fs b/src/Fabulous.XamarinForms/Views/Controls/Picker.fs index 44950dc..cb4447b 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/Picker.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/Picker.fs @@ -68,7 +68,10 @@ module PickerBuilders = WidgetBuilder<'msg, IPicker>( Picker.WidgetKey, Picker.ItemsSource.WithValue(Array.ofList items), - Picker.SelectedIndexWithEvent.WithValue(ValueEventData.create selectedIndex (fun args -> onSelectedIndexChanged args.CurrentPosition |> box)) + Picker.SelectedIndexWithEvent.WithValue( + ValueEventData.create selectedIndex (fun (args: Fabulous.XamarinForms.PositionChangedEventArgs) -> + onSelectedIndexChanged args.CurrentPosition) + ) ) [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/RadioButton.fs b/src/Fabulous.XamarinForms/Views/Controls/RadioButton.fs index 7f2a671..49205c0 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/RadioButton.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/RadioButton.fs @@ -56,7 +56,7 @@ module RadioButtonBuilders = static member inline RadioButton<'msg>(content: string, isChecked: bool, onChecked: bool -> 'msg) = WidgetBuilder<'msg, IRadioButton>( RadioButton.WidgetKey, - RadioButton.IsCheckedWithEvent.WithValue(ValueEventData.create isChecked (fun args -> onChecked args.Value |> box)), + RadioButton.IsCheckedWithEvent.WithValue(ValueEventData.create isChecked (fun (args: CheckedChangedEventArgs) -> onChecked args.Value)), RadioButton.ContentString.WithValue(content) ) @@ -64,7 +64,9 @@ module RadioButtonBuilders = WidgetBuilder<'msg, IRadioButton>( RadioButton.WidgetKey, AttributesBundle( - StackList.one(RadioButton.IsCheckedWithEvent.WithValue(ValueEventData.create isChecked (fun args -> onChecked args.Value |> box))), + StackList.one( + RadioButton.IsCheckedWithEvent.WithValue(ValueEventData.create isChecked (fun (args: CheckedChangedEventArgs) -> onChecked args.Value)) + ), ValueSome [| RadioButton.ContentWidget.WithValue(content.Compile()) |], ValueNone ) diff --git a/src/Fabulous.XamarinForms/Views/Controls/SearchBar.fs b/src/Fabulous.XamarinForms/Views/Controls/SearchBar.fs index 03e6847..81b2864 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/SearchBar.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/SearchBar.fs @@ -37,8 +37,8 @@ module SearchBarBuilders = static member inline SearchBar<'msg>(text: string, onTextChanged: string -> 'msg, onSearchButtonPressed: 'msg) = WidgetBuilder<'msg, ISearchBar>( SearchBar.WidgetKey, - InputView.TextWithEvent.WithValue(ValueEventData.create text (fun args -> onTextChanged args.NewTextValue |> box)), - SearchBar.SearchButtonPressed.WithValue(onSearchButtonPressed) + InputView.TextWithEvent.WithValue(ValueEventData.create text (fun (args: TextChangedEventArgs) -> onTextChanged args.NewTextValue)), + SearchBar.SearchButtonPressed.WithValue(MsgValue onSearchButtonPressed) ) [] @@ -74,13 +74,13 @@ type SearchBarModifiers = res /// Set the horizontal text alignment - /// param name="alignment">The horizontal text alignment + /// The horizontal text alignment [] static member inline horizontalTextAlignment(this: WidgetBuilder<'msg, #ISearchBar>, value: TextAlignment) = this.AddScalar(SearchBar.HorizontalTextAlignment.WithValue(value)) /// Set the vertical text alignment - /// param name="alignment">The vertical text alignment + /// The vertical text alignment [] static member inline verticalTextAlignment(this: WidgetBuilder<'msg, #ISearchBar>, value: TextAlignment) = this.AddScalar(SearchBar.VerticalTextAlignment.WithValue(value)) diff --git a/src/Fabulous.XamarinForms/Views/Controls/Slider.fs b/src/Fabulous.XamarinForms/Views/Controls/Slider.fs index 752f7ee..c31fe77 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/Slider.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/Slider.fs @@ -61,7 +61,7 @@ module SliderBuilders = WidgetBuilder<'msg, ISlider>( Slider.WidgetKey, Slider.MinimumMaximum.WithValue(struct (min, max)), - Slider.ValueWithEvent.WithValue(ValueEventData.create value (fun args -> onValueChanged args.NewValue |> box)) + Slider.ValueWithEvent.WithValue(ValueEventData.create value (fun (args: ValueChangedEventArgs) -> onValueChanged args.NewValue)) ) [] @@ -139,11 +139,11 @@ type SliderModifiers = [] static member inline onDragCompleted(this: WidgetBuilder<'msg, #ISlider>, onDragCompleted: 'msg) = - this.AddScalar(Slider.DragCompleted.WithValue(onDragCompleted)) + this.AddScalar(Slider.DragCompleted.WithValue(MsgValue onDragCompleted)) [] static member inline onDragStarted(this: WidgetBuilder<'msg, #ISlider>, onDragStarted: 'msg) = - this.AddScalar(Slider.DragStarted.WithValue(onDragStarted)) + this.AddScalar(Slider.DragStarted.WithValue(MsgValue onDragStarted)) /// Link a ViewRef to access the direct Slider control instance [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/Stepper.fs b/src/Fabulous.XamarinForms/Views/Controls/Stepper.fs index 9814fbc..79b8947 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/Stepper.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/Stepper.fs @@ -44,7 +44,7 @@ module StepperBuilders = WidgetBuilder<'msg, IStepper>( Stepper.WidgetKey, Stepper.MinimumMaximum.WithValue(struct (min, max)), - Stepper.ValueWithEvent.WithValue(ValueEventData.create value (fun args -> onValueChanged args.NewValue |> box)) + Stepper.ValueWithEvent.WithValue(ValueEventData.create value (fun (args: ValueChangedEventArgs) -> onValueChanged args.NewValue)) ) [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/Switch.fs b/src/Fabulous.XamarinForms/Views/Controls/Switch.fs index 8a28bd2..8ffab9a 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/Switch.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/Switch.fs @@ -24,7 +24,7 @@ module SwitchBuilders = static member inline Switch<'msg>(isToggled: bool, onToggled: bool -> 'msg) = WidgetBuilder<'msg, ISwitch>( Switch.WidgetKey, - Switch.IsToggledWithEvent.WithValue(ValueEventData.create isToggled (fun args -> onToggled args.Value |> box)) + Switch.IsToggledWithEvent.WithValue(ValueEventData.create isToggled (fun (args: ToggledEventArgs) -> onToggled args.Value)) ) [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/TimePicker.fs b/src/Fabulous.XamarinForms/Views/Controls/TimePicker.fs index e2f48dd..b39b696 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/TimePicker.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/TimePicker.fs @@ -50,7 +50,7 @@ module TimePickerBuilders = static member inline TimePicker<'msg>(time: System.TimeSpan, onTimeSelected: System.TimeSpan -> 'msg) = WidgetBuilder<'msg, ITimePicker>( TimePicker.WidgetKey, - TimePicker.TimeWithEvent.WithValue(ValueEventData.create time (fun args -> onTimeSelected args.NewTime |> box)) + TimePicker.TimeWithEvent.WithValue(ValueEventData.create time (fun (args: TimeSelectedEventArgs) -> onTimeSelected args.NewTime)) ) [] diff --git a/src/Fabulous.XamarinForms/Views/Controls/WebView.fs b/src/Fabulous.XamarinForms/Views/Controls/WebView.fs index 0c71258..333a94f 100644 --- a/src/Fabulous.XamarinForms/Views/Controls/WebView.fs +++ b/src/Fabulous.XamarinForms/Views/Controls/WebView.fs @@ -108,7 +108,7 @@ type WebViewModifiers() = [] static member inline onReloadRequested(this: WidgetBuilder<'msg, #IWebView>, onReloadRequested: 'msg) = - this.AddScalar(WebView.ReloadRequested.WithValue(onReloadRequested)) + this.AddScalar(WebView.ReloadRequested.WithValue(MsgValue onReloadRequested)) /// Link a ViewRef to access the direct WebView control instance [] diff --git a/src/Fabulous.XamarinForms/Views/GestureRecognizers/TapGestureRecognizer.fs b/src/Fabulous.XamarinForms/Views/GestureRecognizers/TapGestureRecognizer.fs index 500102f..f3fff4d 100644 --- a/src/Fabulous.XamarinForms/Views/GestureRecognizers/TapGestureRecognizer.fs +++ b/src/Fabulous.XamarinForms/Views/GestureRecognizers/TapGestureRecognizer.fs @@ -21,7 +21,7 @@ module TapGestureRecognizerBuilders = type Fabulous.XamarinForms.View with static member inline TapGestureRecognizer<'msg>(onTapped: 'msg) = - WidgetBuilder<'msg, ITapGestureRecognizer>(TapGestureRecognizer.WidgetKey, TapGestureRecognizer.Tapped.WithValue(onTapped)) + WidgetBuilder<'msg, ITapGestureRecognizer>(TapGestureRecognizer.WidgetKey, TapGestureRecognizer.Tapped.WithValue(MsgValue onTapped)) [] type TapGestureRecognizerModifiers = diff --git a/src/Fabulous.XamarinForms/Views/Layouts/RefreshView.fs b/src/Fabulous.XamarinForms/Views/Layouts/RefreshView.fs index 9a6c3b6..dbc3e51 100644 --- a/src/Fabulous.XamarinForms/Views/Layouts/RefreshView.fs +++ b/src/Fabulous.XamarinForms/Views/Layouts/RefreshView.fs @@ -27,7 +27,7 @@ module RefreshViewBuilders = WidgetBuilder<'msg, IRefreshView>( RefreshView.WidgetKey, AttributesBundle( - StackList.two(RefreshView.IsRefreshing.WithValue(isRefreshing), RefreshView.Refreshing.WithValue(onRefreshing)), + StackList.two(RefreshView.IsRefreshing.WithValue(isRefreshing), RefreshView.Refreshing.WithValue(MsgValue onRefreshing)), ValueSome [| ContentView.Content.WithValue(content.Compile()) |], ValueNone ) diff --git a/src/Fabulous.XamarinForms/Views/Layouts/_Layout.fs b/src/Fabulous.XamarinForms/Views/Layouts/_Layout.fs index 926ed96..abe3c1a 100644 --- a/src/Fabulous.XamarinForms/Views/Layouts/_Layout.fs +++ b/src/Fabulous.XamarinForms/Views/Layouts/_Layout.fs @@ -43,5 +43,5 @@ type LayoutModifiers = this.AddScalar(Layout.IsClippedToBounds.WithValue(value)) [] - static member inline onLayoutChanged(this: WidgetBuilder<'msg, #ILayout>, value: 'msg) = - this.AddScalar(Layout.LayoutChanged.WithValue(value)) + static member inline onLayoutChanged(this: WidgetBuilder<'msg, #ILayout>, onLayoutChanged: 'msg) = + this.AddScalar(Layout.LayoutChanged.WithValue(MsgValue onLayoutChanged)) diff --git a/src/Fabulous.XamarinForms/Views/MenuItems/MenuItem.fs b/src/Fabulous.XamarinForms/Views/MenuItems/MenuItem.fs index dd1044a..2acdbfd 100644 --- a/src/Fabulous.XamarinForms/Views/MenuItems/MenuItem.fs +++ b/src/Fabulous.XamarinForms/Views/MenuItems/MenuItem.fs @@ -32,7 +32,7 @@ module MenuItemBuilders = type Fabulous.XamarinForms.View with static member inline MenuItem<'msg>(text: string, onClicked: 'msg) = - WidgetBuilder<'msg, IMenuItem>(MenuItem.WidgetKey, MenuItem.Text.WithValue(text), MenuItem.Clicked.WithValue(onClicked)) + WidgetBuilder<'msg, IMenuItem>(MenuItem.WidgetKey, MenuItem.Text.WithValue(text), MenuItem.Clicked.WithValue(MsgValue onClicked)) [] type MenuItemModifiers = diff --git a/src/Fabulous.XamarinForms/Views/MenuItems/ToolbarItem.fs b/src/Fabulous.XamarinForms/Views/MenuItems/ToolbarItem.fs index 301ec61..d52a661 100644 --- a/src/Fabulous.XamarinForms/Views/MenuItems/ToolbarItem.fs +++ b/src/Fabulous.XamarinForms/Views/MenuItems/ToolbarItem.fs @@ -31,7 +31,7 @@ module ToolbarItemBuilders = type Fabulous.XamarinForms.View with static member inline ToolbarItem<'msg>(text: string, onClicked: 'msg) = - WidgetBuilder<'msg, IToolbarItem>(ToolbarItem.WidgetKey, MenuItem.Text.WithValue(text), MenuItem.Clicked.WithValue(onClicked)) + WidgetBuilder<'msg, IToolbarItem>(ToolbarItem.WidgetKey, MenuItem.Text.WithValue(text), MenuItem.Clicked.WithValue(MsgValue onClicked)) [] type ToolbarItemModifiers = diff --git a/src/Fabulous.XamarinForms/Views/Pages/NavigationPage.fs b/src/Fabulous.XamarinForms/Views/Pages/NavigationPage.fs index ae171ad..1e4474d 100644 --- a/src/Fabulous.XamarinForms/Views/Pages/NavigationPage.fs +++ b/src/Fabulous.XamarinForms/Views/Pages/NavigationPage.fs @@ -279,14 +279,14 @@ type NavigationPageModifiers = /// Msg to dispatch when the user back navigated. [] static member inline onBackNavigated(this: WidgetBuilder<'msg, #INavigationPage>, onBackNavigated: 'msg) = - this.AddScalar(NavigationPage.BackNavigated.WithValue(onBackNavigated)) + this.AddScalar(NavigationPage.BackNavigated.WithValue(MsgValue onBackNavigated)) /// Event that is fired when the user presses the system back button. Doesn't support the iOS back button /// Msg to dispatch when the user presses the system back button. /// Setting this modifier will prevent the default behavior of the system back button. It's up to you to update the navigation stack. [] static member inline onBackButtonPressed(this: WidgetBuilder<'msg, #INavigationPage>, onBackButtonPressed: 'msg) = - this.AddScalar(NavigationPage.BackButtonPressed.WithValue(onBackButtonPressed)) + this.AddScalar(NavigationPage.BackButtonPressed.WithValue(MsgValue onBackButtonPressed)) /// Event that is fired when the page is popped. /// Msg to dispatch when then page is popped. diff --git a/src/Fabulous.XamarinForms/Views/Pages/_MultiPageOfPage.fs b/src/Fabulous.XamarinForms/Views/Pages/_MultiPageOfPage.fs index 9d26cde..e84c62b 100644 --- a/src/Fabulous.XamarinForms/Views/Pages/_MultiPageOfPage.fs +++ b/src/Fabulous.XamarinForms/Views/Pages/_MultiPageOfPage.fs @@ -20,4 +20,4 @@ type MultiPageOfPageModifiers = /// The msg to invoke when the CurrentPage property changes. [] static member inline onCurrentPageChanged(this: WidgetBuilder<'msg, #IMultiPageOfPage>, onCurrentPageChanged: 'msg) = - this.AddScalar(MultiPageOfPage.CurrentPageChanged.WithValue(onCurrentPageChanged)) + this.AddScalar(MultiPageOfPage.CurrentPageChanged.WithValue(MsgValue onCurrentPageChanged)) diff --git a/src/Fabulous.XamarinForms/Views/Pages/_Page.fs b/src/Fabulous.XamarinForms/Views/Pages/_Page.fs index 84145e3..dd5c14b 100644 --- a/src/Fabulous.XamarinForms/Views/Pages/_Page.fs +++ b/src/Fabulous.XamarinForms/Views/Pages/_Page.fs @@ -155,19 +155,19 @@ type PageModifiers = /// Msg to dispatch when then page is appearing. [] static member inline onAppearing(this: WidgetBuilder<'msg, #IPage>, onAppearing: 'msg) = - this.AddScalar(Page.Appearing.WithValue(onAppearing)) + this.AddScalar(Page.Appearing.WithValue(MsgValue onAppearing)) /// Event that is fired when the page is disappearing. /// Msg to dispatch when then page is disappearing. [] static member inline onDisappearing(this: WidgetBuilder<'msg, #IPage>, onDisappearing: 'msg) = - this.AddScalar(Page.Disappearing.WithValue(onDisappearing)) + this.AddScalar(Page.Disappearing.WithValue(MsgValue onDisappearing)) /// Event that is fired when the page layout has Changed. /// Msg to dispatch when then page layout has Changed. [] static member inline onLayoutChanged(this: WidgetBuilder<'msg, #IPage>, onLayoutChanged: 'msg) = - this.AddScalar(Page.LayoutChanged.WithValue(onLayoutChanged)) + this.AddScalar(Page.LayoutChanged.WithValue(MsgValue onLayoutChanged)) [] static member inline toolbarItems<'msg, 'marker when 'marker :> IPage>(this: WidgetBuilder<'msg, 'marker>) = diff --git a/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/CompositeTransform.fs b/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/CompositeTransform.fs index 9591673..a376c4b 100644 --- a/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/CompositeTransform.fs +++ b/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/CompositeTransform.fs @@ -68,9 +68,9 @@ module CompositeTransformBuilders = static member inline CompositeTransform<'msg>(centerX: float, centerY: float, scaleX: float, scaleY: float, skewX: float, skewY: float) = WidgetBuilder<'msg, ICompositeTransform>( CompositeTransform.WidgetKey, - CompositeTransform.CenterXY.WithValue((centerX, centerY)), - CompositeTransform.ScaleXY.WithValue((scaleX, scaleY)), - CompositeTransform.SkewXY.WithValue((skewX, skewY)) + CompositeTransform.CenterXY.WithValue(struct (centerX, centerY)), + CompositeTransform.ScaleXY.WithValue(struct (scaleX, scaleY)), + CompositeTransform.SkewXY.WithValue(struct (skewX, skewY)) ) [] @@ -78,7 +78,7 @@ type CompositeTransformModifiers = [] static member inline translate(this: WidgetBuilder<'msg, #ICompositeTransform>, x: float, y: float) = - this.AddScalar(CompositeTransform.TranslateXY.WithValue((x, y))) + this.AddScalar(CompositeTransform.TranslateXY.WithValue(struct (x, y))) [] static member inline rotation(this: WidgetBuilder<'msg, #ICompositeTransform>, angle: float) = diff --git a/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/MatrixTransform.fs b/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/MatrixTransform.fs index 7fbf184..3e85354 100644 --- a/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/MatrixTransform.fs +++ b/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/MatrixTransform.fs @@ -30,4 +30,4 @@ module MatrixTransformBuilders = type Fabulous.XamarinForms.View with static member inline MatrixTransform<'msg>(m11: float, m12: float, m21: float, m22: float, offsetX: float, offsetY: float) = - WidgetBuilder<'msg, IMatrixTransform>(MatrixTransform.WidgetKey, MatrixTransform.Matrix.WithValue((m11, m12, m21, m22, offsetX, offsetY))) + WidgetBuilder<'msg, IMatrixTransform>(MatrixTransform.WidgetKey, MatrixTransform.Matrix.WithValue(struct (m11, m12, m21, m22, offsetX, offsetY))) diff --git a/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/ScaleTransform.fs b/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/ScaleTransform.fs index 1be59c6..ab14849 100644 --- a/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/ScaleTransform.fs +++ b/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/ScaleTransform.fs @@ -33,7 +33,7 @@ module ScaleTransformBuilders = static member inline ScaleTransform<'msg>(scaleX: float, scaleY: float, centerX: float, centerY: float) = WidgetBuilder<'msg, IScaleTransform>( ScaleTransform.WidgetKey, - ScaleTransform.ScaleXY.WithValue((scaleX, scaleY)), + ScaleTransform.ScaleXY.WithValue(struct (scaleX, scaleY)), ScaleTransform.CenterX.WithValue(centerX), ScaleTransform.CenterY.WithValue(centerY) ) diff --git a/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/SkewTransform.fs b/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/SkewTransform.fs index c95639e..d61545f 100644 --- a/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/SkewTransform.fs +++ b/src/Fabulous.XamarinForms/Views/Shapes/PathTransforms/SkewTransform.fs @@ -33,7 +33,7 @@ module SkewTransformBuilders = static member inline SkewTransform<'msg>(angleX: float, angleY: float, centerX: float, centerY: float) = WidgetBuilder<'msg, ISkewTransform>( SkewTransform.WidgetKey, - SkewTransform.AnglesXY.WithValue((angleX, angleY)), + SkewTransform.AnglesXY.WithValue(struct (angleX, angleY)), SkewTransform.CenterX.WithValue(centerX), SkewTransform.CenterY.WithValue(centerY) ) diff --git a/templates/content/blank-vswin/.template.config/template.json b/templates/content/blank-vswin/.template.config/template.json index b388aac..de0b1a8 100644 --- a/templates/content/blank-vswin/.template.config/template.json +++ b/templates/content/blank-vswin/.template.config/template.json @@ -55,7 +55,7 @@ "type": "parameter", "dataType": "string", "replaces": "FabulousPkgVersion", - "defaultValue": "2.3.0" + "defaultValue": "2.4.0" }, "FabulousXFPkgVersion": { "type": "parameter", diff --git a/templates/content/blank/.template.config/template.json b/templates/content/blank/.template.config/template.json index b416f6c..2ac1659 100644 --- a/templates/content/blank/.template.config/template.json +++ b/templates/content/blank/.template.config/template.json @@ -55,13 +55,13 @@ "type": "parameter", "dataType": "string", "replaces": "XamarinEssentialsSdk", - "defaultValue": "1.7.0" + "defaultValue": "1.8.0" }, "XamarinFormsSdk": { "type": "parameter", "dataType": "string", "replaces": "XamarinFormsSdk", - "defaultValue": "5.0.0.2515" + "defaultValue": "5.0.0.2622" }, "FabulousXFPkgVersion": { "type": "parameter", @@ -73,19 +73,19 @@ "type": "parameter", "dataType": "string", "replaces": "FSharpCorePkgVersion", - "defaultValue": "7.0.0" + "defaultValue": "8.0.100" }, "XamarinCommunityToolkitSdk": { "type": "parameter", "dataType": "string", "replaces": "XamarinCommunityToolkitSdk", - "defaultValue": "1.3.2" + "defaultValue": "2.0.6" }, "FSharpAndroidResourceSdk": { "type": "parameter", "dataType": "string", "replaces": "FSharpAndroidResourceSdk", - "defaultValue": "1.0.4" + "defaultValue": "1.1.1" } } } \ No newline at end of file