Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

Platform specific API #949

Merged
merged 9 commits into from
Mar 18, 2021
Merged

Platform specific API #949

merged 9 commits into from
Mar 18, 2021

Conversation

pictos
Copy link
Contributor

@pictos pictos commented Feb 20, 2021

This PR implements the Platform Specific APIs using Xamarin.Forms API. We need to agree with:

  1. Folder structure;
  2. Namespace structure;

With this implementation, we are able to implement platform-specific features in the same way that Forms does.

We can do it on C#

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.CommunityToolkit.PlatformConfiguration.iOSSpecific;
using Xamarin.CommunityToolkit.PlatformConfiguration.WindowsSpecific;

// API usage example
On<iOS>().UseArrowDirection(PopoverArrowDirection.Right);
On<Windows>().SetBorderColor(Xamarin.Forms.Color.Red);

And in XAML

xmlns:uwpXct="clr-namespace:Xamarin.CommunityToolkit.PlatformConfiguration.WindowsSpecific;assembly=Xamarin.CommunityToolkit"
xmlns:iosXct="clr-namespace:Xamarin.CommunityToolkit.PlatformConfiguration.iOSSpecific;assembly=Xamarin.CommunityToolkit"
iosXct:PopUp.ArrowDirection="Right"
uwpXct:PopUp.BorderColor="Blue"

Following the Forms implementation, the Xamarin.CommunityToolkit.PlatformConfiguration shouldn't be in our custom schema (http://xamarin.com/schemas/2020/toolkit).

Fixes #948

public static PopoverArrowDirection GetArrowDirection(BindableObject element) =>
(PopoverArrowDirection)element.GetValue(ArrowDirectionProperty);

public static IPlatformElementConfiguration<XFPC.iOS, XCTElement> UseArrowDirection(this IPlatformElementConfiguration<XFPC.iOS, XCTElement> config, PopoverArrowDirection value)
Copy link
Contributor Author

@pictos pictos Feb 20, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

need to use the XFPC.iOS because the compiler complains that iOS is a namespace, during the build.

@AndreiMisiukevich
Copy link
Contributor

Do we really want to handle it by "PlatformConfiguration" as Forms does?

Maybe, we might add properties to shared classes with some comment telling that a certain property is supported only by iOS, for example, or iOS and Android etc.
Or even add iOS or Android prefix/postfix.

IOSArrowDirection
ArrowDirectionPlatformSpecific

/// This propertu is iOS-specific
ArrowDirection

CC @jfversluis @pictos @sthewissen @jsuarezruiz

@pictos
Copy link
Contributor Author

pictos commented Feb 21, 2021

Maybe, we might add properties to shared classes with some comment telling that a certain property is supported only by iOS, for example, or iOS and Android etc.

@AndreiMisiukevich the problem that I see with this approach, is that isn't very clear/explicit. In that way at first glance looks like that feature is supported by all platforms. I'm ok to not use the Forms API and create our own but we need to make it in a way that will be explicitly and reusable.

Or even add iOS or Android prefix/postfix.

This may help, but I need to think a bit more about it, right now I can which can lead to some confusion for contributors.

Also, I can see a problem in how we will handle that in other platforms, like if that prop. is on shared code, all platforms will see it and we (us on XCT and users on their apps) need to treat it on all platforms, doing null checks or PlatformChecks

@Cfun1
Copy link
Contributor

Cfun1 commented Feb 21, 2021

As discussed with @pictos it could be problematic when for the same feature/functionality (at shared code level) some flags are only supported by specific platform, while in others it doesn't exist or with a different name, we could rename or map the flags internally but it won't be a nice approach I think. Not sure yet but I think this could be a solution to that problem.

@AndreiMisiukevich my concern is xaml platform specific flags like in this spec #718.

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Xamarin.CommunityToolkit.Sample.Pages.Views.Popups"
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
Size="{x:Static local:PopupSize.Tiny}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Totally unrelated, I think we can create an extension for this, right? I remember us doing it for something else, that will make this syntax better

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What kind of markup extension are you thinking? The PopupSize is a helper for the sample project to make it easier to specify size.

Are you thinking about making this something that consumers of XCT could use for their Popups? That may be a really useful API.

Left,
Right,
Any,
Unknown
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the use of Unknown? @ahoefling?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was added in #854 by @geskill and I approved the changes.

I am not 100% sure what Unknown or Any is used for. Looking at the code this maps 1:1 with the iOS implementation. Since this is iOS specific I think it is okay to leave both of them in. If we get to a point where we want to make this a shared API instead of attached property we would need to determine if it is still applicable.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jfversluis
Copy link
Member

Do we really want to handle it by "PlatformConfiguration" as Forms does?

Maybe, we might add properties to shared classes with some comment telling that a certain property is supported only by iOS, for example, or iOS and Android etc.
Or even add iOS or Android prefix/postfix.

IOSArrowDirection
ArrowDirectionPlatformSpecific

/// This propertu is iOS-specific
ArrowDirection

As already mentioned by the other people above there is some concerns with that too. Both ways have their up- and downsides for sure. Picking between these I think the best choice is to be consistent with Forms and use the platform-specific stuff. People know that approach and there is no confusion over what is implemented in what platform or clutter our property names with prefixes etc.

But I appreciate you trying to find an alternative Andrei! It would be easy to just copy what Forms does without thinking, we should stay sharp :)

@SkyeHoefling
Copy link
Contributor

@AndreiMisiukevich I requested the iOS specific arrows class be added in since it is not implemented in Android or UWP. If we get to a point where arrows are implemented in the 3 major platform iOS, Android and UWP I think we can remove that class and make it a shared class.

@pictos
Copy link
Contributor Author

pictos commented Feb 26, 2021

@AndreiMisiukevich @jsuarezruiz @jfversluis can you re-review it?

@pictos pictos linked an issue Mar 2, 2021 that may be closed by this pull request
@pictos
Copy link
Contributor Author

pictos commented Mar 16, 2021

@brminnick , @AndreiMisiukevich @jfversluis @jsuarezruiz can you re-review this API? That way we can merge it and unblock a couple of PRs

@jfversluis jfversluis merged commit b15c187 into develop Mar 18, 2021
@jfversluis jfversluis deleted the pj/platform-specific branch March 18, 2021 08:47
@jfversluis jfversluis added this to the v1.1 milestone Mar 18, 2021
jfversluis added a commit that referenced this pull request Mar 22, 2021
* Added new TextCaseType to TextCaseConverter (#763)

* Added new TextCaseType to TextCaseConverter

Added support for first char to upper rest to lower case.

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

* Added unit tests and fix bug for empty string

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

Co-authored-by: joacim wall <joacim.wall@evry.com>
Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Add LocalizedString class for automatic  ViewModel string updates (#750)

* Add LocalizedString

* Update test name

* Remove from NETSTANDARD1_0

* LangVersion latest

* Revert "LangVersion latest"

This reverts commit e22a4c1.

* Not using linq discard

* Fix test

* Fix test. Add constructor with localizationManager

* Add new feature to sample app

* Add Dispose() to unsubscribe from localizationManager.PropertyChanged

* Fix Sample localization resources generation

* Update sample app to change AppResources.Culture

* Update LocalizedString to use ObservableObject

* Return unsubscribing from localizationManager.PropertyChanged

* Add WeakSubscribe

* Refactor LocalizedString to use WeakSubscribe

* Add test to ensure instance of LocalizedString is disposed

* Dont create instance of LocalizationResourceManager

* Add null checks to WeakSubscribe

* Invoke action with less code

null check has already been done

* Replace spaces with tabs

* Revert "Use Single for getting culture"

* added one more unit test

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Add CommandFactory class (#797)

* Create CommandHelper.shared.cs

* Use CommandHelper in Sample app

* Rename to CommandFactory

* Replace "is null" with "== null"

* Update GravatarImageViewModel.cs

* Update SearchViewModel.cs

* Move CommandFactory to ObjectModel

* Update ConvertExecute and ConvertCanExecute to throw InvalidCommandParameterException

* Add tests

* Skip test in question

* Revert Xamarin.CommunityToolkit.csproj changes

* Fix tests

* Add tests for AsyncValueCommand

* Revert AsyncValueCommandSupport

* Revert "Revert AsyncValueCommandSupport"

This reverts commit 07a178c.

* Creating AsyncValueCommand using CreateValue

* Revert "Creating AsyncValueCommand using CreateValue"

This reverts commit 7b32561.

* Add Create overloads without optional parameters for Task to act as tiebreakers

* Add different names to "execute" parameters to provide another way to resolve ambiguity

* Updated CommandFactory

- Add XML Documentation
- Separated Command.Factory.Command.shared.cs, Command.Factory.IAsyncCommand.shared.cs and Command.Factory.IAsyncValueCommand.shared.cs
- Removed unnecessary CommandFactory.Create methods
- Added missing CommandFactory.Create methods
- Updated Unit Tests

* Updated XML Documentation

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Deprecate LocalizationResourceManager.SetCulture (#766)

* Deprecate SetCulture

* Add EditorBrowsableState.Never

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Helpers/LocalizationResourceManager.shared.cs

* Fix obsolete warning in tests

* Remove unneeded line

* Use new LocalizationResourceManager for tests

Tests were failing from time to time because the same instance of LRM was used for all of them. And since tests are executed in parallel, this caused some issues

* Siplify impicit conversion test to test only conversion itself

* Return Invalidate mathod

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* ShadowEffect (#725)

* #461

* Added mac support

* Added sample

* Updated shadows

* Fixed iOS crash

* removed pragma

* Remove effect when color if default

* cleaned code

* Implemented LazyView (#796)

* Created LazyView and implemented it on TabView

* Added Preserve attribute

* Update LazyTestView.xaml

* Adds Popup Control (#653)

* Ported Popup Control from xamarin/Xamarin.Forms#9616 to Xamarin Community Toolkit

* Added missing async/await api

* Added popup result sample and fixed uwp/android implementations

* Renamed View->Content

* Updated styles of sample popups

* Updated BorderColor to be a platform specific property for UWP

* Moved Android/iOS/UWP renderers to platform specific folders

* Changed PopupDismissedEventArgs so it is immutable

* Removed visual studio edits to sample android project

* Removed = false for isDisposed as it is default

* Normalized accessor properties for ios and uwp

* Removed performance apis since they are used internally at Xamarin.Forms

* Simplified OnElementChanged to use shared method ConfigureControl

* Removed iOS 9 code

* Updated NavigationExtensions to follow Xamarin Essentials style by adding netstandard impl that throws exception

* Added Control.Cleanup invocation to dispose method

* [iOS] Removed async/await from OnDismissed since it is an event the invocation doesn't need to know when it is complete

* Fixed comment

* Updated iOS to use WeakEventManager

* changed instantiation to use default(SizeRequest)

* ios - Changed WeakEventManager so it is a protected static object on the popup renderer. This will help create a weak reference to the popup delegate for the GC

* Moved sample popup code to new location

* Added WeakEventManager for BasePopup events (Opened, Dismissed)

* ios - changed popover delegate to use action

* Added PopOverDelegate.PopoverDismissed

* Updated accessor for LightDismiss to protected internal

* Updated comment in LightDismiss

* Removed stale iOS code

* Updated xml comments

* Removed obj dir from compilation in 'netstandard' projects and fixed debugger issues

* removed Init method and added code to get the Context

* changed accessor of ToolkitPlatform to internal

* Added new UI popup tests for Xaml binding vs C# binding

* Updated XCT xmlns to use uri instead of fully qualified namespace

* Added shared popup size across samples

* Fixed popup BindingContext not working when set in XAML

* Update Samples

- Capitalize x:Name variables
- Replace expression-bodied properties with read-only properties where applicable

* Add PopupDismissedEventArgs<T>

* Add Default Values for Color and Size

* Remove Unncessary `base` Keyword, per styling guide

* Optimize originX + originX, Add missing `await`

* Update PopupAnchorViewModel.cs

* Fix orignY

Copy/paste error

* Update PopupRenderer.ios.cs

* Update NavigationExtensions.netstandard.macos.tvos.watchos.tizen.wpf.gtk.cs

* Added NavigableElementExtension - This allows rendering popup from ContentPage and other children of NavigableElement

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update BaseGalleryViewModel.cs

* Merging is hard

* Fix Anchor Popup Sample NRE (#834)

* Changed LoadView to be Async (#828)

* Changed LoadView to ValueTask LoadViewAsync and added summaries

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/LazyView/LazyView.shared.cs

* Popup out of the screen horizontally in Android sample (#839)

* Fix popup out of horizontal bounds

#653 (comment)

* Device Size dependent

* Essentials namespace

* revert

* [Android] Converting dimensions to pixels in popup renderer (#856)

* [Android] Converting dimensions to pixels in popup renderer

* Add fixed and relative to screen sizes instead of platform specific sizes.

* Update ButtonPopup size.

* Update CsharpBindingPopup size.

* Update MultipleButtonPopup size.

* Update NoLightDismissPopup size.

* Update OpenedEventSimplePopup size.

* Update ReturnResultPopup size.

* Update SimplePopup size.

* Update ToggleSizePopup size.

* Update TransparentPopup size.

* Update XamlBindingPopup size.

* #704 [Bug] No padding around text in a Toast or Snackbar (#714)

* Make ShieldView more customizable (#874)

* Add SubjectBackgroundColor, SubjectTextColor/reorganization.

* Update sample.

* Obsolete message

* Correct typo in comment

Co-authored-by: Gerald Versluis <gerald@verslu.is>

* Drop UpdateTextColor()

Co-authored-by: Gerald Versluis <gerald@verslu.is>

* fixed csproj to produce sourcelink (#893)

* [iOS] Remove popup arrow if anchor isn't set (#854)

* Remove popup arrow if anchor isn't set

* Create PopoverArrowDirection.cs

* Create Popup.shared.cs

* Add arrow direction platform specific.

* Add arrow direction platform specific sample.

* Rename PopoverArrowDirection.cs to PopoverArrowDirection.shared.cs

* Change ArrowDirection to up

* Remove switch PopoverArrowDirection.None since default is already zero.

* Use div 2 instead of multiply by 0.5 for consistency.

Co-authored-by: Sebastian Klatte <sebastian.klatte@trust-communication.com>

* ProgressBar Attached Property to enable progress animation (#352)

* ProgressBar Attached Property to enable progress animation

* Fixes remarks on PR

* Fix remarks PR

* Changes need for new gallery viewmodel

* Correct version from before rebase

* Update AttachedPropertiesGalleryViewModel.cs

* Update ProgressBarAttachedProperties.shared.cs

* Update ProgressBarAttachedProperties.shared.cs

* Change Attached property to behavior

* Update samples/XCT.Sample/Xamarin.CommunityToolkit.Sample.csproj

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/ProgressBarAnimationBehavior.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Xamarin.CommunityToolkit.csproj

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/ProgressBarAnimationBehavior.cs

Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/AttachedProperties/ProgressBarAttachedProperties.shared.cs

Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>

* Remove old attached property and rename new behavior

Co-authored-by: Gerald Versluis <gerald@verslu.is>
Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>

* Merge main into dev (#913)

* [Android] Fix Long Press blocks CollectionView selection  (#764)

* #760

* Moved helper methods to VisualElementExtensions

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/VisualElementExtension.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/VisualElementExtension.shared.cs

Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* [Android] Fix SideMenuView + Slider issue (#824)

* [Android] Allow using slider inside SideMenu with disabled gestures

#810

* Refactored gesture default threshold
#810

* Cleaned code. Added linker safety code

* Fixed build

Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>

* Automated dotnet-format update (#837)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Remove `Device` dependency from command implementation (#825) (#830)

* Remove `Device` dependency from command implementation (#804)

* Move Xamarin.CommunityToolkit.ObjectModel.Internals classes to `Internals` folder

* Add Platform-Specific MainThread Implementations, Update Unit Tests to Acommidate Context Switching

* Update BaseCommand.uwp.cs

* Add BaseCommand.wpf.cs

* Finish BaseCommand.gtk.cs

* Update BaseCommand.shared.cs

Co-authored-by: Eugen Richter <eugen.richter@amcsgroup.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Automated dotnet-format update (#865)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fixes #859 (#864)

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* ValidationBehavior: Added IsNotValid property (#836)

* Added IsNotValid property to validators

* small fix

* Updated sample

* #822 (#877)

* Fixes AvatarView - Valid source images dont load for the first time they are created  (#849)

* #805

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/AvatarView/AvatarView.shared.cs

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* Fixed image loading

* Fixed null ref

* Fixes crashes

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Added inline docs (#882)

* Update ViewsGalleryViewModel.cs (#888)

removed duplicated text "used to"

* Document all behaviors and associated (#895)

* Housekeeping remove XamlCompilation from code-behind. (#897)

* Changed TabView SelectedIndex property to use TwoWay binding mode (#903)

* Add inline Docs/Comments to Converters (#907)

* Update azure-pipelines.yml

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eugen Richter <github@richter.consulting>
Co-authored-by: Eugen Richter <eugen.richter@amcsgroup.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>
Co-authored-by: WillAutioItrax <15933820+WillAutioItrax@users.noreply.github.com>
Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>

* Add "Add(IEnumerable<T> collection)" to ObservableRangeCollection<T> (#891)

* Create ObservableRangeCollectionEx.shared.cs

* Add test

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/ObjectModel/Extensions/ObservableRangeCollectionEx.shared.cs

* Resolve comments

* Add AddToNullCollection test

* Fix WeakSubscribe parameter type

* Revert "Fix WeakSubscribe parameter type"

This reverts commit 221ee0f.

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update INotifyPropertyChangedEx.shared.cs (#918)

* [Breaking Changes] ValidationBehavior Async checks support (#912)

* Refactored validation behavior

* Refactored to ValueTask

* added configure await false

* Fixed isRunning

* LifeCycleEvents (#674)

* Created LifeCycleEffect and platform implementations

* Added sample to LifeCycle effect

* refactor UnLoaded logic

* clean up csproj

* Fixed NRE for shell

* Code Review fixes

* code style

* improved the sample

* fixed tizen path

* Fixed iOS support

* Implemented WeakEventManager

* Added inline docs/comments

* changed to nameof

* Msbuild hotfix (#946)

* fixed msbuild instructions

* revert android sample csproj

* Add `Grouping` class from Refractored.MvvmHelpers (#957)

* Fix LocalizedString gets unsubscribed while still in use (#987)

* Fixed all the things

* Make PersistentObservableObject abstract

* Reverse the inheritance

* Commit to rerun tests

* Remove PersistentObservableObject

* Grammar

* Feature/371 enum boolean converter (#925)

* Implement EnumToBoolConverter (#371)

* Add example for EnumToBoolConverter

* Make it work with flagged enums (#371)

* Simplify code (#371)

* Make the method an local static method (#371)

* Cache enum type info (#371)

Co-authored-by: Eugen Richter <eugen.richter@amcsgroup.com>

* Add VSM to ValidationBehavior (#955)

* Add VSM to ValidationBehavior

* dumb commit: Re trigger CI

* Fix typo

* Fix typo

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Change string properties to public

* Apply Pascal Case Naming

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Fix Singleton Pattern for LocalizationResourceManager (#919)

* Update LocalizationResourceManager.shared.cs

* Implement Lazy Loading for Thread Safety

* Fix Namespace

* Removed changes from main branch

* Revert Commit

* Update LocalizationResourceManager.shared.cs

* Fix Unit Tests

* Add Collection to LocalizationResourceManagerTests

The `Collection` attribute prevents these tests from running in parallel https://xunit.net/docs/running-tests-in-parallel.html

* [Enhancement] Add Scale support for SideMenuView (#1011)

* SideMenu scaling #1007

* Added easing

* Update azure-pipelines.yml

* [iOS] Fix missing binding context for popup view (#1003)

* [iOS] Fix missing binding context for popup view

* Fix handle binding context changes.

* Enable Nullable (#1009)

* Enable Nullable on Unit Tests (#1008)

* Enable Nullability on Xamarin.CommunityToolkit.Markup (#1013)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullability on Xamarin.CommunityToolkit.Sample (#1014)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullability for Android, GTK, iOS, Tizen, UWP & WPF Sample Projects (#1015)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullable on Android, GTK, iOS and Tizen Samples

* Enable Nullable for UWP & WPF Sample Projects

* Enable Nullability on Xamarin.CommunityToolkit (#1016)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullable on Android, GTK, iOS and Tizen Samples

* Enable Nullable for UWP & WPF Sample Projects

* Add Nullability

* Enable Nullable on XamarinCommunityToolkit (#1023)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullable on Android, GTK, iOS and Tizen Samples

* Enable Nullable for UWP & WPF Sample Projects

* Add Nullability

* Resolve Possible Null References

* Removed Possible Null References

* Update AppResources.Designer.cs

* Handle Nullability

* Updated Nullabiltiy

* Update Converters & Unit Tests

* Resolve MediaSource Unit Tests

* Fix Unit Tests (#1036)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullable on Android, GTK, iOS and Tizen Samples

* Enable Nullable for UWP & WPF Sample Projects

* Add Nullability

* Resolve Possible Null References

* Removed Possible Null References

* Update AppResources.Designer.cs

* Handle Nullability

* Updated Nullabiltiy

* Update Converters & Unit Tests

* Resolve MediaSource Unit Tests

* Fix VariableMultiValueConverter

* Fixed ImpliedOrderGridBehavior

* Update NumericValidationBehavior.shared.cs

* Resolve Nullable in SideMenuView

* Move <Nullable>enable</Nullable> to Directory.Build.props

* Update Xamarin.CommunityToolkit.Sample.csproj

* Revert Designer.cs

* Update Xamarin.CommunityToolkit.Sample.csproj

* Update ItemSelectedEventArgsConverter_Tests.cs

* Update SearchViewModel.cs

* Update ItemTappedEventArgsConverter_Tests.cs

* Update Xamarin.CommunityToolkit.UnitTests.csproj

* Add Nullability

* Resolve Compiler Warnings

* Ignore Closing square brackets should be spaced correctly

With Nullable enabled, `byte[]?` is now valid, however SA1011 was still generating a warning

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/ImpliedOrderGridBehavior.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update CameraFragment.android.cs

* Update CameraFragment.android.cs

* Update ImpliedOrderGridBehavior.shared.cs

* Update MaskedBehavior.shared.cs

* Update PopupRenderer.uwp.cs

* Use .NET 5.0

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Add UWP to Release Build

* Update Nullability

* Update Nullablity

* Update TabView.shared.cs

* Update Nullability

* Revert "Update Nullability"

This reverts commit e391b9c.

* Resolved Nullable

* Update azure-pipelines.yml

* Revert UWP Build Properties

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit 0842280.

* Update azure-pipelines.yml

* Revert "Revert UWP Build Properties"

This reverts commit 77226bf.

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit 4eb36f4.

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit e41a477.

* Fix ValidationBehavior.ForceValidate and ValidationBehavior.DefaultForceValidateCommand

* Update SelectAllTextEffect.ios.cs

* Remove Nullabilty from LocalizedString.generator

* Update MediaElementRenderer.ios.cs

* Update PopupRenderer.uwp.cs

* Update PopupRenderer.ios.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/Helpers/iOS/SnackbarViews/BaseSnackBarView.ios.cs

Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>

* Update TranslateExtension.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.android.cs

Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>

* Update Logic

* Fix Failing ICommand Tests

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.tizen.cs

Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>

* Throw Faulted Task

* Use Cast instead of Pattern Matching

* Update RangeSlider.shared.cs

* Fix missing semi-colons

* Throw InvalidOperationException in LocalizationResourceManager

* Make TranslateExtension.StringFormat nullable

* Update UserStoppedTypingBehavior.shared.cs

* Update SearchPage.logic.cs

* Update TouchEffectCollectionViewPage.xaml.cs

* Update AppResources.Designer.cs

* Update AppResources.Designer.cs

* Update EnumToBoolConverterViewModel.cs

* Update EnumToBoolConverter_Tests.cs

* Update IntToBoolConverter_Tests.cs

* Update InvertedBoolConverter_Tests.cs

* Update IsNotNullOrEmptyConverter_Tests.cs

* Update MultiConverter_Tests.cs

* Update NotEqualConverter_Tests.cs

* Update TextCaseConverter_Tests.cs

* Update MockPlatformServices.cs

* Update MockPlatformServices.cs

* Update Namespace_Tests.cs

* Update ObservableRangeCollection_Tests.cs

* Update ObservableRangeCollection_Tests.cs

* Use `async Task` instead of `async void`

* Update MultiValidationBehavior.shared.cs

* Update EnumToBoolConverter.shared.cs

* Update EnumToBoolConverter.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/NotEqualConverter.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/StateToBooleanConverter.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update IconTintColorEffectRouter.android.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Effects/SelectAllText/SelectAllTextEffect.android.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update SelectAllTextEffect.android.cs

* Update SelectAllTextEffect.ios.cs

* Update PlatformTouchEffect.ios.cs

* Update PlatformTouchEffect.uwp.cs

* Update PlatformTouchEffect.uwp.cs

* Update PlatformTouchEffect.macos.cs

* Update PlatformTouchEffect.uwp.cs

* Update PlatformTouchEffect.uwp.cs

* Ensure nullable results from BindableProperties are still resolved

* Update ImageResourceExtension.shared.cs

* Update BaseCommand.android.cs

* Use protected private constructor for BaseCommand

* Update BadgeView.shared.cs

* Update CameraFragment.android.cs

* Fix Android Media Bugs

* Update async/await

* Update CameraView_Tests.cs

* Update CameraView

* Update UriTypeConverter.shared.cs

* Update PopupRenderer.uwp.cs

* Update PopoverArrowDirection.shared.cs

* Update PopoverArrowDirection.shared.cs

* Update TabView.shared.cs

* Improve AsyncCommand Tests

* Ensure Context is non nullable

* Remove Missing Translations

* Fix async/await in TouchEffect.shared.cs

* Make Easing Nullable

* Update Samples

* Fix Null Exception

* Resolve NullReferenceExceptions

* Make IBadgeAnimation Nullable

* Add ShutterCommandValueCreator null check

* Add Timeout to prevent race conditions from stalling tests

* Unsubscribe Event Handlers for AsyncCommand Tests

* Update azure-pipelines.yml

* For WPF, Use Cross-Platform Implementation for `BaseCommand.IsMainThread` and `BaseCommand.BeginInvokeOnMainThread` (#965)

* Add Non-WPF Support to .NET Core 3.1

* Update comments

* Merge .NET Standard and WPF Functionality

* Fix Null Reference

* Update ICommand_AsyncValueCommand_Tests.cs

* Add volatile keyword

* Update AsyncValueCommand_Tests.cs

* Remove Timeouts

* Fix Event Unsubscription

* Add .ConfigureAwait(false);

* Run dotnet test serially

* Use SemaphoreSlim to prevent Race Conditions

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>
Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>

* add SetFocusOnEntryCompleted (#841) (#911)

* add SetFocusOnEntryCompleted (#841)

* prevent SetFocusOnEntryCompleted memory leak (#841)

also force exception if used on non-Entry

* cleanup (reuse variable) (#841)

* change to attached behavior SetFocusOnEntryCompletedBehavior

* remove AttachedBehaviors sub-namespace

* fix SetFocusOnEntryCompleted_Tests

* simplify SetFocusOnEntryCompletedBehaviorPage

* fixed code to be nullable safe

* code style

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* #1046 (#1052)

* #1025 (#1042)

* Merge fixing

* Implement SafeFireAndForgetExtensions (#1054)

* Implement Safe-Fire-And-Forget

* Change `public` to `internal`

* Update PlatformTouchEffect.android.cs

* Regression #853 (#1063)

* [iOS] Fix popup default color and dark mode (#1041)

* [iOS] Fix popup default color and dark mode

* [Android] Set correct background for default color

* [Android] GetWindowColor() for popup background color

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/Android/PopupRenderer.android.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/Android/PopupRenderer.android.cs

* Update BasePopup.shared.cs

* Update PopupRenderer.android.cs

* Update PopupRenderer.android.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/BasePopup.shared.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Add remove border effect implementation for uwp (#1048)

Co-authored-by: Alexander Witkowski <alexander.witkowski@develappers.de>

* Added long press event #851 (#1064)

* Update LocalizedString.shared.cs (#1071)

* Image resource converter (#1068)

* Implement ImageResourceConverter

* Add a sample for ImageResource extension

* Fix nullable errors

* Rename converter file to be compiled.

* Better exception message

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update samples/XCT.Sample/ViewModels/Converters/ImageResourceConverterViewModel.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/ImageResourceConverter.shared.cs

* Update samples/XCT.Sample/ViewModels/Converters/ImageResourceConverterViewModel.cs

* Update samples/XCT.Sample/ViewModels/Converters/ImageResourceConverterViewModel.cs

* Update samples/XCT.Sample/ViewModels/Converters/ImageResourceConverterViewModel.cs

* Fix GalleryPage and VM

* Update samples/XCT.Sample/ViewModels/Extensions/ExtensionsGalleryViewModel.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update samples/XCT.Sample/ViewModels/Extensions/ExtensionsGalleryViewModel.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Replace Exception approach by extension used by XF (#1028)

* Replace Exception approach by extension used by XF

* Simplified syntax as requested

* Add a missing namespace

* Resolve `IAsyncCommand` / `IAsyncValueValueCommand` Unit Test Race Condition (#1076)

* Add Unit Test Timeouts

* Add macOS Unit Tests

* Build 'samples/XCT.Sample.sln' on macOS

* Restore Unit Test NuGet Packages

* Fix YAML formatting

* Add xunit.runner.console

* Use latest stable version of Microsoft.NET.Test.Sdk

* Fix Unit Tests on macos

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Add SemaphoreSlim

* Add `dotnet restore`

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Revert "Add SemaphoreSlim"

This reverts commit 6875865.

* Revert BaseCommand.semaphoreSlim

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Add ConfigureAwait(false) to ValueTaskDelay(int)

* Change Platform from NetCore to macOS

* Passthrough ValueTask

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit d7b2842.

* Use ConfigureAwait(false)

* Rename Task

* Remove `static`

* Remove `static`

* Revert p:BuildInParallel=false

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit bf93f0c.

* Revert "Revert "Update azure-pipelines.yml""

This reverts commit 031121a.

* Revert "Revert "Revert "Update azure-pipelines.yml"""

This reverts commit 458feb2.

* #1066 (#1078)

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* fix badge background color (#1080) (#1081)

Co-authored-by: Matthew S <sattew@yandex.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* allow TextCaseConverter to handle any value type (#1053)

* allow TextCaseConverter to handle any value type

* remove duplicate Convert method

* fix nullability

* update TextCaseConverter tests

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* #850 (#1056)

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Platform specific API (#949)

* added iOS platformSpecific

* added UWP platform specific

* Changed the sample

* code clean up

* added null check for Element

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* Add some null checks (#1033)

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* Migrate Unit Tests to NUnit (#1090)

* Migrate to NUnit

* Update Tests

* Update Azure Pipelines

* Update TextCaseConverter_Tests.cs

* Update DateTimeOffsetConverter_Tests.cs

* Increase Timeout

* Increase Timeout

* Add `const int defaultTimeoutThreshold`

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* Enable Nullable for Xamarin.CommunityToolkit.Markup.UnitTests (#1086)

* Add Markup Unit Tests

* Add Nullable to Xamarin.CommunityToolkit.Markdown.UnitTests

* Update BindingHelpers.cs

* Fix Failing Unit Tests

* Don't capture XUnit's Synchronization Context

* Re-order Unit Tests

* Revert "Don't capture XUnit's Synchronization Context"

This reverts commit b8b3f16.

Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>

* Implement a generic version of the EventToCommandBehavior (#1010)

* created ECBGeneric

* Added Generic implemention to the EventToCommandBehavior

* make EventToCommandBehavior<TType> sealed

* Fixed for value types

* added nullable notations

* update the comment

* fixed unit test

* Migrate Unit Tests to NUnit

* Fixed unitTest

* changed to use C#9 features

* removed Convert method

* Add Inheritance Test

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* [UWP] TouchEffect OnPointerReleased crash (#1088)

* Fixed TouchEffect UWP crash

* Touch Effect more nullRef fixes

* fixed build

* fix build

Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

Co-authored-by: Joacim Wall <joacim.wall@gmail.com>
Co-authored-by: joacim wall <joacim.wall@evry.com>
Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>
Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Andrew Hoefling <andrew@hoefling.me>
Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>
Co-authored-by: Sebastian Klatte <sebastian.klatte@posteo.de>
Co-authored-by: Vladislav Antonyuk <33021114+VladislavAntonyuk@users.noreply.github.com>
Co-authored-by: Sebastian Klatte <sebastian.klatte@trust-communication.com>
Co-authored-by: Glenn Versweyveld <Depechie@users.noreply.github.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eugen Richter <github@richter.consulting>
Co-authored-by: Eugen Richter <eugen.richter@amcsgroup.com>
Co-authored-by: WillAutioItrax <15933820+WillAutioItrax@users.noreply.github.com>
Co-authored-by: tranb3r <tranb3r@gmail.com>
Co-authored-by: Jacob Egner <jmegner@gmail.com>
Co-authored-by: Alexander Witkowski <alexanderwitkowski@gmail.com>
Co-authored-by: Alexander Witkowski <alexander.witkowski@develappers.de>
Co-authored-by: Matthew S <sattew@protonmail.com>
Co-authored-by: Matthew S <sattew@yandex.com>
Co-authored-by: Dan Siegel <me@dansiegel.net>
brminnick added a commit that referenced this pull request Apr 9, 2021
* Develop to Main for 1.1 (#1108)

* Added new TextCaseType to TextCaseConverter (#763)

* Added new TextCaseType to TextCaseConverter

Added support for first char to upper rest to lower case.

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

* Added unit tests and fix bug for empty string

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

Co-authored-by: joacim wall <joacim.wall@evry.com>
Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Add LocalizedString class for automatic  ViewModel string updates (#750)

* Add LocalizedString

* Update test name

* Remove from NETSTANDARD1_0

* LangVersion latest

* Revert "LangVersion latest"

This reverts commit e22a4c1.

* Not using linq discard

* Fix test

* Fix test. Add constructor with localizationManager

* Add new feature to sample app

* Add Dispose() to unsubscribe from localizationManager.PropertyChanged

* Fix Sample localization resources generation

* Update sample app to change AppResources.Culture

* Update LocalizedString to use ObservableObject

* Return unsubscribing from localizationManager.PropertyChanged

* Add WeakSubscribe

* Refactor LocalizedString to use WeakSubscribe

* Add test to ensure instance of LocalizedString is disposed

* Dont create instance of LocalizationResourceManager

* Add null checks to WeakSubscribe

* Invoke action with less code

null check has already been done

* Replace spaces with tabs

* Revert "Use Single for getting culture"

* added one more unit test

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Add CommandFactory class (#797)

* Create CommandHelper.shared.cs

* Use CommandHelper in Sample app

* Rename to CommandFactory

* Replace "is null" with "== null"

* Update GravatarImageViewModel.cs

* Update SearchViewModel.cs

* Move CommandFactory to ObjectModel

* Update ConvertExecute and ConvertCanExecute to throw InvalidCommandParameterException

* Add tests

* Skip test in question

* Revert Xamarin.CommunityToolkit.csproj changes

* Fix tests

* Add tests for AsyncValueCommand

* Revert AsyncValueCommandSupport

* Revert "Revert AsyncValueCommandSupport"

This reverts commit 07a178c.

* Creating AsyncValueCommand using CreateValue

* Revert "Creating AsyncValueCommand using CreateValue"

This reverts commit 7b32561.

* Add Create overloads without optional parameters for Task to act as tiebreakers

* Add different names to "execute" parameters to provide another way to resolve ambiguity

* Updated CommandFactory

- Add XML Documentation
- Separated Command.Factory.Command.shared.cs, Command.Factory.IAsyncCommand.shared.cs and Command.Factory.IAsyncValueCommand.shared.cs
- Removed unnecessary CommandFactory.Create methods
- Added missing CommandFactory.Create methods
- Updated Unit Tests

* Updated XML Documentation

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Deprecate LocalizationResourceManager.SetCulture (#766)

* Deprecate SetCulture

* Add EditorBrowsableState.Never

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Helpers/LocalizationResourceManager.shared.cs

* Fix obsolete warning in tests

* Remove unneeded line

* Use new LocalizationResourceManager for tests

Tests were failing from time to time because the same instance of LRM was used for all of them. And since tests are executed in parallel, this caused some issues

* Siplify impicit conversion test to test only conversion itself

* Return Invalidate mathod

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* ShadowEffect (#725)

* #461

* Added mac support

* Added sample

* Updated shadows

* Fixed iOS crash

* removed pragma

* Remove effect when color if default

* cleaned code

* Implemented LazyView (#796)

* Created LazyView and implemented it on TabView

* Added Preserve attribute

* Update LazyTestView.xaml

* Adds Popup Control (#653)

* Ported Popup Control from xamarin/Xamarin.Forms#9616 to Xamarin Community Toolkit

* Added missing async/await api

* Added popup result sample and fixed uwp/android implementations

* Renamed View->Content

* Updated styles of sample popups

* Updated BorderColor to be a platform specific property for UWP

* Moved Android/iOS/UWP renderers to platform specific folders

* Changed PopupDismissedEventArgs so it is immutable

* Removed visual studio edits to sample android project

* Removed = false for isDisposed as it is default

* Normalized accessor properties for ios and uwp

* Removed performance apis since they are used internally at Xamarin.Forms

* Simplified OnElementChanged to use shared method ConfigureControl

* Removed iOS 9 code

* Updated NavigationExtensions to follow Xamarin Essentials style by adding netstandard impl that throws exception

* Added Control.Cleanup invocation to dispose method

* [iOS] Removed async/await from OnDismissed since it is an event the invocation doesn't need to know when it is complete

* Fixed comment

* Updated iOS to use WeakEventManager

* changed instantiation to use default(SizeRequest)

* ios - Changed WeakEventManager so it is a protected static object on the popup renderer. This will help create a weak reference to the popup delegate for the GC

* Moved sample popup code to new location

* Added WeakEventManager for BasePopup events (Opened, Dismissed)

* ios - changed popover delegate to use action

* Added PopOverDelegate.PopoverDismissed

* Updated accessor for LightDismiss to protected internal

* Updated comment in LightDismiss

* Removed stale iOS code

* Updated xml comments

* Removed obj dir from compilation in 'netstandard' projects and fixed debugger issues

* removed Init method and added code to get the Context

* changed accessor of ToolkitPlatform to internal

* Added new UI popup tests for Xaml binding vs C# binding

* Updated XCT xmlns to use uri instead of fully qualified namespace

* Added shared popup size across samples

* Fixed popup BindingContext not working when set in XAML

* Update Samples

- Capitalize x:Name variables
- Replace expression-bodied properties with read-only properties where applicable

* Add PopupDismissedEventArgs<T>

* Add Default Values for Color and Size

* Remove Unncessary `base` Keyword, per styling guide

* Optimize originX + originX, Add missing `await`

* Update PopupAnchorViewModel.cs

* Fix orignY

Copy/paste error

* Update PopupRenderer.ios.cs

* Update NavigationExtensions.netstandard.macos.tvos.watchos.tizen.wpf.gtk.cs

* Added NavigableElementExtension - This allows rendering popup from ContentPage and other children of NavigableElement

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update BaseGalleryViewModel.cs

* Merging is hard

* Fix Anchor Popup Sample NRE (#834)

* Changed LoadView to be Async (#828)

* Changed LoadView to ValueTask LoadViewAsync and added summaries

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/LazyView/LazyView.shared.cs

* Popup out of the screen horizontally in Android sample (#839)

* Fix popup out of horizontal bounds

#653 (comment)

* Device Size dependent

* Essentials namespace

* revert

* [Android] Converting dimensions to pixels in popup renderer (#856)

* [Android] Converting dimensions to pixels in popup renderer

* Add fixed and relative to screen sizes instead of platform specific sizes.

* Update ButtonPopup size.

* Update CsharpBindingPopup size.

* Update MultipleButtonPopup size.

* Update NoLightDismissPopup size.

* Update OpenedEventSimplePopup size.

* Update ReturnResultPopup size.

* Update SimplePopup size.

* Update ToggleSizePopup size.

* Update TransparentPopup size.

* Update XamlBindingPopup size.

* #704 [Bug] No padding around text in a Toast or Snackbar (#714)

* Make ShieldView more customizable (#874)

* Add SubjectBackgroundColor, SubjectTextColor/reorganization.

* Update sample.

* Obsolete message

* Correct typo in comment

Co-authored-by: Gerald Versluis <gerald@verslu.is>

* Drop UpdateTextColor()

Co-authored-by: Gerald Versluis <gerald@verslu.is>

* fixed csproj to produce sourcelink (#893)

* [iOS] Remove popup arrow if anchor isn't set (#854)

* Remove popup arrow if anchor isn't set

* Create PopoverArrowDirection.cs

* Create Popup.shared.cs

* Add arrow direction platform specific.

* Add arrow direction platform specific sample.

* Rename PopoverArrowDirection.cs to PopoverArrowDirection.shared.cs

* Change ArrowDirection to up

* Remove switch PopoverArrowDirection.None since default is already zero.

* Use div 2 instead of multiply by 0.5 for consistency.

Co-authored-by: Sebastian Klatte <sebastian.klatte@trust-communication.com>

* ProgressBar Attached Property to enable progress animation (#352)

* ProgressBar Attached Property to enable progress animation

* Fixes remarks on PR

* Fix remarks PR

* Changes need for new gallery viewmodel

* Correct version from before rebase

* Update AttachedPropertiesGalleryViewModel.cs

* Update ProgressBarAttachedProperties.shared.cs

* Update ProgressBarAttachedProperties.shared.cs

* Change Attached property to behavior

* Update samples/XCT.Sample/Xamarin.CommunityToolkit.Sample.csproj

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/ProgressBarAnimationBehavior.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Xamarin.CommunityToolkit.csproj

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/ProgressBarAnimationBehavior.cs

Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/AttachedProperties/ProgressBarAttachedProperties.shared.cs

Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>

* Remove old attached property and rename new behavior

Co-authored-by: Gerald Versluis <gerald@verslu.is>
Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>

* Merge main into dev (#913)

* [Android] Fix Long Press blocks CollectionView selection  (#764)

* #760

* Moved helper methods to VisualElementExtensions

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/VisualElementExtension.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/VisualElementExtension.shared.cs

Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* [Android] Fix SideMenuView + Slider issue (#824)

* [Android] Allow using slider inside SideMenu with disabled gestures

#810

* Refactored gesture default threshold
#810

* Cleaned code. Added linker safety code

* Fixed build

Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>

* Automated dotnet-format update (#837)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Remove `Device` dependency from command implementation (#825) (#830)

* Remove `Device` dependency from command implementation (#804)

* Move Xamarin.CommunityToolkit.ObjectModel.Internals classes to `Internals` folder

* Add Platform-Specific MainThread Implementations, Update Unit Tests to Acommidate Context Switching

* Update BaseCommand.uwp.cs

* Add BaseCommand.wpf.cs

* Finish BaseCommand.gtk.cs

* Update BaseCommand.shared.cs

Co-authored-by: Eugen Richter <eugen.richter@amcsgroup.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Automated dotnet-format update (#865)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fixes #859 (#864)

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* ValidationBehavior: Added IsNotValid property (#836)

* Added IsNotValid property to validators

* small fix

* Updated sample

* #822 (#877)

* Fixes AvatarView - Valid source images dont load for the first time they are created  (#849)

* #805

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/AvatarView/AvatarView.shared.cs

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* Fixed image loading

* Fixed null ref

* Fixes crashes

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Added inline docs (#882)

* Update ViewsGalleryViewModel.cs (#888)

removed duplicated text "used to"

* Document all behaviors and associated (#895)

* Housekeeping remove XamlCompilation from code-behind. (#897)

* Changed TabView SelectedIndex property to use TwoWay binding mode (#903)

* Add inline Docs/Comments to Converters (#907)

* Update azure-pipelines.yml

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eugen Richter <github@richter.consulting>
Co-authored-by: Eugen Richter <eugen.richter@amcsgroup.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>
Co-authored-by: WillAutioItrax <15933820+WillAutioItrax@users.noreply.github.com>
Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>

* Add "Add(IEnumerable<T> collection)" to ObservableRangeCollection<T> (#891)

* Create ObservableRangeCollectionEx.shared.cs

* Add test

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/ObjectModel/Extensions/ObservableRangeCollectionEx.shared.cs

* Resolve comments

* Add AddToNullCollection test

* Fix WeakSubscribe parameter type

* Revert "Fix WeakSubscribe parameter type"

This reverts commit 221ee0f.

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update INotifyPropertyChangedEx.shared.cs (#918)

* [Breaking Changes] ValidationBehavior Async checks support (#912)

* Refactored validation behavior

* Refactored to ValueTask

* added configure await false

* Fixed isRunning

* LifeCycleEvents (#674)

* Created LifeCycleEffect and platform implementations

* Added sample to LifeCycle effect

* refactor UnLoaded logic

* clean up csproj

* Fixed NRE for shell

* Code Review fixes

* code style

* improved the sample

* fixed tizen path

* Fixed iOS support

* Implemented WeakEventManager

* Added inline docs/comments

* changed to nameof

* Msbuild hotfix (#946)

* fixed msbuild instructions

* revert android sample csproj

* Add `Grouping` class from Refractored.MvvmHelpers (#957)

* Fix LocalizedString gets unsubscribed while still in use (#987)

* Fixed all the things

* Make PersistentObservableObject abstract

* Reverse the inheritance

* Commit to rerun tests

* Remove PersistentObservableObject

* Grammar

* Feature/371 enum boolean converter (#925)

* Implement EnumToBoolConverter (#371)

* Add example for EnumToBoolConverter

* Make it work with flagged enums (#371)

* Simplify code (#371)

* Make the method an local static method (#371)

* Cache enum type info (#371)

Co-authored-by: Eugen Richter <eugen.richter@amcsgroup.com>

* Add VSM to ValidationBehavior (#955)

* Add VSM to ValidationBehavior

* dumb commit: Re trigger CI

* Fix typo

* Fix typo

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Change string properties to public

* Apply Pascal Case Naming

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/Validators/ValidationBehavior.shared.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Fix Singleton Pattern for LocalizationResourceManager (#919)

* Update LocalizationResourceManager.shared.cs

* Implement Lazy Loading for Thread Safety

* Fix Namespace

* Removed changes from main branch

* Revert Commit

* Update LocalizationResourceManager.shared.cs

* Fix Unit Tests

* Add Collection to LocalizationResourceManagerTests

The `Collection` attribute prevents these tests from running in parallel https://xunit.net/docs/running-tests-in-parallel.html

* [Enhancement] Add Scale support for SideMenuView (#1011)

* SideMenu scaling #1007

* Added easing

* Update azure-pipelines.yml

* [iOS] Fix missing binding context for popup view (#1003)

* [iOS] Fix missing binding context for popup view

* Fix handle binding context changes.

* Enable Nullable (#1009)

* Enable Nullable on Unit Tests (#1008)

* Enable Nullability on Xamarin.CommunityToolkit.Markup (#1013)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullability on Xamarin.CommunityToolkit.Sample (#1014)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullability for Android, GTK, iOS, Tizen, UWP & WPF Sample Projects (#1015)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullable on Android, GTK, iOS and Tizen Samples

* Enable Nullable for UWP & WPF Sample Projects

* Enable Nullability on Xamarin.CommunityToolkit (#1016)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullable on Android, GTK, iOS and Tizen Samples

* Enable Nullable for UWP & WPF Sample Projects

* Add Nullability

* Enable Nullable on XamarinCommunityToolkit (#1023)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullable on Android, GTK, iOS and Tizen Samples

* Enable Nullable for UWP & WPF Sample Projects

* Add Nullability

* Resolve Possible Null References

* Removed Possible Null References

* Update AppResources.Designer.cs

* Handle Nullability

* Updated Nullabiltiy

* Update Converters & Unit Tests

* Resolve MediaSource Unit Tests

* Fix Unit Tests (#1036)

* Enable Nullable on Unit Tests

* Enable Nullable on Xamarin.CommunityToolkit.Markup

* Enable Nullable on Xamarin.CommunityToolkit.Sample

* Enable Nullable on Android, GTK, iOS and Tizen Samples

* Enable Nullable for UWP & WPF Sample Projects

* Add Nullability

* Resolve Possible Null References

* Removed Possible Null References

* Update AppResources.Designer.cs

* Handle Nullability

* Updated Nullabiltiy

* Update Converters & Unit Tests

* Resolve MediaSource Unit Tests

* Fix VariableMultiValueConverter

* Fixed ImpliedOrderGridBehavior

* Update NumericValidationBehavior.shared.cs

* Resolve Nullable in SideMenuView

* Move <Nullable>enable</Nullable> to Directory.Build.props

* Update Xamarin.CommunityToolkit.Sample.csproj

* Revert Designer.cs

* Update Xamarin.CommunityToolkit.Sample.csproj

* Update ItemSelectedEventArgsConverter_Tests.cs

* Update SearchViewModel.cs

* Update ItemTappedEventArgsConverter_Tests.cs

* Update Xamarin.CommunityToolkit.UnitTests.csproj

* Add Nullability

* Resolve Compiler Warnings

* Ignore Closing square brackets should be spaced correctly

With Nullable enabled, `byte[]?` is now valid, however SA1011 was still generating a warning

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Behaviors/ImpliedOrderGridBehavior.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update CameraFragment.android.cs

* Update CameraFragment.android.cs

* Update ImpliedOrderGridBehavior.shared.cs

* Update MaskedBehavior.shared.cs

* Update PopupRenderer.uwp.cs

* Use .NET 5.0

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Add UWP to Release Build

* Update Nullability

* Update Nullablity

* Update TabView.shared.cs

* Update Nullability

* Revert "Update Nullability"

This reverts commit e391b9c.

* Resolved Nullable

* Update azure-pipelines.yml

* Revert UWP Build Properties

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit 0842280.

* Update azure-pipelines.yml

* Revert "Revert UWP Build Properties"

This reverts commit 77226bf.

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit 4eb36f4.

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit e41a477.

* Fix ValidationBehavior.ForceValidate and ValidationBehavior.DefaultForceValidateCommand

* Update SelectAllTextEffect.ios.cs

* Remove Nullabilty from LocalizedString.generator

* Update MediaElementRenderer.ios.cs

* Update PopupRenderer.uwp.cs

* Update PopupRenderer.ios.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/Helpers/iOS/SnackbarViews/BaseSnackBarView.ios.cs

Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>

* Update TranslateExtension.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.android.cs

Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>

* Update Logic

* Fix Failing ICommand Tests

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Snackbar/SnackBar.tizen.cs

Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>

* Throw Faulted Task

* Use Cast instead of Pattern Matching

* Update RangeSlider.shared.cs

* Fix missing semi-colons

* Throw InvalidOperationException in LocalizationResourceManager

* Make TranslateExtension.StringFormat nullable

* Update UserStoppedTypingBehavior.shared.cs

* Update SearchPage.logic.cs

* Update TouchEffectCollectionViewPage.xaml.cs

* Update AppResources.Designer.cs

* Update AppResources.Designer.cs

* Update EnumToBoolConverterViewModel.cs

* Update EnumToBoolConverter_Tests.cs

* Update IntToBoolConverter_Tests.cs

* Update InvertedBoolConverter_Tests.cs

* Update IsNotNullOrEmptyConverter_Tests.cs

* Update MultiConverter_Tests.cs

* Update NotEqualConverter_Tests.cs

* Update TextCaseConverter_Tests.cs

* Update MockPlatformServices.cs

* Update MockPlatformServices.cs

* Update Namespace_Tests.cs

* Update ObservableRangeCollection_Tests.cs

* Update ObservableRangeCollection_Tests.cs

* Use `async Task` instead of `async void`

* Update MultiValidationBehavior.shared.cs

* Update EnumToBoolConverter.shared.cs

* Update EnumToBoolConverter.shared.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/NotEqualConverter.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/StateToBooleanConverter.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update IconTintColorEffectRouter.android.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Effects/SelectAllText/SelectAllTextEffect.android.cs

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Update SelectAllTextEffect.android.cs

* Update SelectAllTextEffect.ios.cs

* Update PlatformTouchEffect.ios.cs

* Update PlatformTouchEffect.uwp.cs

* Update PlatformTouchEffect.uwp.cs

* Update PlatformTouchEffect.macos.cs

* Update PlatformTouchEffect.uwp.cs

* Update PlatformTouchEffect.uwp.cs

* Ensure nullable results from BindableProperties are still resolved

* Update ImageResourceExtension.shared.cs

* Update BaseCommand.android.cs

* Use protected private constructor for BaseCommand

* Update BadgeView.shared.cs

* Update CameraFragment.android.cs

* Fix Android Media Bugs

* Update async/await

* Update CameraView_Tests.cs

* Update CameraView

* Update UriTypeConverter.shared.cs

* Update PopupRenderer.uwp.cs

* Update PopoverArrowDirection.shared.cs

* Update PopoverArrowDirection.shared.cs

* Update TabView.shared.cs

* Improve AsyncCommand Tests

* Ensure Context is non nullable

* Remove Missing Translations

* Fix async/await in TouchEffect.shared.cs

* Make Easing Nullable

* Update Samples

* Fix Null Exception

* Resolve NullReferenceExceptions

* Make IBadgeAnimation Nullable

* Add ShutterCommandValueCreator null check

* Add Timeout to prevent race conditions from stalling tests

* Unsubscribe Event Handlers for AsyncCommand Tests

* Update azure-pipelines.yml

* For WPF, Use Cross-Platform Implementation for `BaseCommand.IsMainThread` and `BaseCommand.BeginInvokeOnMainThread` (#965)

* Add Non-WPF Support to .NET Core 3.1

* Update comments

* Merge .NET Standard and WPF Functionality

* Fix Null Reference

* Update ICommand_AsyncValueCommand_Tests.cs

* Add volatile keyword

* Update AsyncValueCommand_Tests.cs

* Remove Timeouts

* Fix Event Unsubscription

* Add .ConfigureAwait(false);

* Run dotnet test serially

* Use SemaphoreSlim to prevent Race Conditions

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>
Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>

* add SetFocusOnEntryCompleted (#841) (#911)

* add SetFocusOnEntryCompleted (#841)

* prevent SetFocusOnEntryCompleted memory leak (#841)

also force exception if used on non-Entry

* cleanup (reuse variable) (#841)

* change to attached behavior SetFocusOnEntryCompletedBehavior

* remove AttachedBehaviors sub-namespace

* fix SetFocusOnEntryCompleted_Tests

* simplify SetFocusOnEntryCompletedBehaviorPage

* fixed code to be nullable safe

* code style

Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* #1046 (#1052)

* #1025 (#1042)

* Merge fixing

* Implement SafeFireAndForgetExtensions (#1054)

* Implement Safe-Fire-And-Forget

* Change `public` to `internal`

* Update PlatformTouchEffect.android.cs

* Regression #853 (#1063)

* [iOS] Fix popup default color and dark mode (#1041)

* [iOS] Fix popup default color and dark mode

* [Android] Set correct background for default color

* [Android] GetWindowColor() for popup background color

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/Android/PopupRenderer.android.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/Android/PopupRenderer.android.cs

* Update BasePopup.shared.cs

* Update PopupRenderer.android.cs

* Update PopupRenderer.android.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/BasePopup.shared.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Add remove border effect implementation for uwp (#1048)

Co-authored-by: Alexander Witkowski <alexander.witkowski@develappers.de>

* Added long press event #851 (#1064)

* Update LocalizedString.shared.cs (#1071)

* Image resource converter (#1068)

* Implement ImageResourceConverter

* Add a sample for ImageResource extension

* Fix nullable errors

* Rename converter file to be compiled.

* Better exception message

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update samples/XCT.Sample/ViewModels/Converters/ImageResourceConverterViewModel.cs

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/ImageResourceConverter.shared.cs

* Update samples/XCT.Sample/ViewModels/Converters/ImageResourceConverterViewModel.cs

* Update samples/XCT.Sample/ViewModels/Converters/ImageResourceConverterViewModel.cs

* Update samples/XCT.Sample/ViewModels/Converters/ImageResourceConverterViewModel.cs

* Fix GalleryPage and VM

* Update samples/XCT.Sample/ViewModels/Extensions/ExtensionsGalleryViewModel.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Update samples/XCT.Sample/ViewModels/Extensions/ExtensionsGalleryViewModel.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>

* Replace Exception approach by extension used by XF (#1028)

* Replace Exception approach by extension used by XF

* Simplified syntax as requested

* Add a missing namespace

* Resolve `IAsyncCommand` / `IAsyncValueValueCommand` Unit Test Race Condition (#1076)

* Add Unit Test Timeouts

* Add macOS Unit Tests

* Build 'samples/XCT.Sample.sln' on macOS

* Restore Unit Test NuGet Packages

* Fix YAML formatting

* Add xunit.runner.console

* Use latest stable version of Microsoft.NET.Test.Sdk

* Fix Unit Tests on macos

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Add SemaphoreSlim

* Add `dotnet restore`

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Revert "Add SemaphoreSlim"

This reverts commit 6875865.

* Revert BaseCommand.semaphoreSlim

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Add ConfigureAwait(false) to ValueTaskDelay(int)

* Change Platform from NetCore to macOS

* Passthrough ValueTask

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit d7b2842.

* Use ConfigureAwait(false)

* Rename Task

* Remove `static`

* Remove `static`

* Revert p:BuildInParallel=false

* Update azure-pipelines.yml

* Revert "Update azure-pipelines.yml"

This reverts commit bf93f0c.

* Revert "Revert "Update azure-pipelines.yml""

This reverts commit 031121a.

* Revert "Revert "Revert "Update azure-pipelines.yml"""

This reverts commit 458feb2.

* #1066 (#1078)

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* fix badge background color (#1080) (#1081)

Co-authored-by: Matthew S <sattew@yandex.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* allow TextCaseConverter to handle any value type (#1053)

* allow TextCaseConverter to handle any value type

* remove duplicate Convert method

* fix nullability

* update TextCaseConverter tests

* Update src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/TextCaseConverter.shared.cs

Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* #850 (#1056)

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>

* Platform specific API (#949)

* added iOS platformSpecific

* added UWP platform specific

* Changed the sample

* code clean up

* added null check for Element

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* Add some null checks (#1033)

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* Migrate Unit Tests to NUnit (#1090)

* Migrate to NUnit

* Update Tests

* Update Azure Pipelines

* Update TextCaseConverter_Tests.cs

* Update DateTimeOffsetConverter_Tests.cs

* Increase Timeout

* Increase Timeout

* Add `const int defaultTimeoutThreshold`

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>

* Enable Nullable for Xamarin.CommunityToolkit.Markup.UnitTests (#1086)

* Add Markup Unit Tests

* Add Nullable to Xamarin.CommunityToolkit.Markdown.UnitTests

* Update BindingHelpers.cs

* Fix Failing Unit Tests

* Don't capture XUnit's Synchronization Context

* Re-order Unit Tests

* Revert "Don't capture XUnit's Synchronization Context"

This reverts commit b8b3f16.

Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>

* Implement a generic version of the EventToCommandBehavior (#1010)

* created ECBGeneric

* Added Generic implemention to the EventToCommandBehavior

* make EventToCommandBehavior<TType> sealed

* Fixed for value types

* added nullable notations

* update the comment

* fixed unit test

* Migrate Unit Tests to NUnit

* Fixed unitTest

* changed to use C#9 features

* removed Convert method

* Add Inheritance Test

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* [UWP] TouchEffect OnPointerReleased crash (#1088)

* Fixed TouchEffect UWP crash

* Touch Effect more nullRef fixes

* fixed build

* fix build

Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

Co-authored-by: Joacim Wall <joacim.wall@gmail.com>
Co-authored-by: joacim wall <joacim.wall@evry.com>
Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Pedro Jesus <pedrojesus.cefet@gmail.com>
Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Andrew Hoefling <andrew@hoefling.me>
Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>
Co-authored-by: Sebastian Klatte <sebastian.klatte@posteo.de>
Co-authored-by: Vladislav Antonyuk <33021114+VladislavAntonyuk@users.noreply.github.com>
Co-authored-by: Sebastian Klatte <sebastian.klatte@trust-communication.com>
Co-authored-by: Glenn Versweyveld <Depechie@users.noreply.github.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eugen Richter <github@richter.consulting>
Co-authored-by: Eugen Richter <eugen.richter@amcsgroup.com>
Co-authored-by: WillAutioItrax <15933820+WillAutioItrax@users.noreply.github.com>
Co-authored-by: tranb3r <tranb3r@gmail.com>
Co-authored-by: Jacob Egner <jmegner@gmail.com>
Co-authored-by: Alexander Witkowski <alexanderwitkowski@gmail.com>
Co-authored-by: Alexander Witkowski <alexander.witkowski@develappers.de>
Co-authored-by: Matthew S <sattew@protonmail.com>
Co-authored-by: Matthew S <sattew@yandex.com>
Co-authored-by: Dan Siegel <me@dansiegel.net>

* Generate Mdoc documentation files (#932)

* First bits

* frameworks

* Try some more

* Fix

* Update to monikers

* Update targets

* Last fixes I swear

* Cleanup comments

* Fix path

* API Docs fixes

* Prevent mdoc from becoming dep

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Show initials if stream is empty (#1125)

#1120

* Init previousState field with LayoutState.None (#1122)

* Init previousState field with LayoutState.None

* make previousState non nullable

* Fix Expander crash when Direction changed (#1147)

#1144

* #1059 a photoOutput != null check taken off. Rebased to develop (#1119)

Co-authored-by: Janis Paraschidis <jp@recy-systems.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>

* Update PULL_REQUEST_TEMPLATE.md

* Fix animation behavior fires command twice (#1162)

* #1099

* Added unit tests

* Fix MultiValidationBehavior overwrites external BindingContext bindings (#1163)

* #1153

* Update methods to adhere to the `bool Try...` pattern

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Fix CI Build Errors on Build Windows Samples job (#1173)

* Update azure-pipelines.yml

* Clean + Build

* Revert "Clean + Build"

This reverts commit e93ca82.

* Add `dotnet clean`

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Update azure-pipelines.yml

* Add link

* Automated dotnet-format update (#1082)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Remove Invalid Documentation

* Update dependencies (#1174)

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Fix XCT fails build in F# projects (#1133)

* Add "shared" to file name

* Revert "Add "shared" to file name"

This reverts commit 8760ddd.

* Include PreserveXamarinCommunityToolkit only in csproj

* Add PreserveXamarinCommunityToolkit.fs

* Resolve comments

* Revert "Resolve comments"

This reverts commit 7be495f.

* Revert "Add PreserveXamarinCommunityToolkit.fs"

This reverts commit 403f20c.

Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>

* Add F# Project (#1181)

* fixed merge

* Remove Duplicate `netstandard` configuration

* Add Missing `[Obsolete]` and Nullable

* fixed unit test

* Fix `dotnet test` Release Configuration

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
Co-authored-by: Joacim Wall <joacim.wall@gmail.com>
Co-authored-by: joacim wall <joacim.wall@evry.com>
Co-authored-by: Andrei <andrei.misiukevich@gmail.com>
Co-authored-by: Maksym Koshovyi <maximkoshevoi61@gmail.com>
Co-authored-by: Brandon Minnick <13558917+brminnick@users.noreply.github.com>
Co-authored-by: Andrew Hoefling <andrew@hoefling.me>
Co-authored-by: Cfun <15718354+Cfun1@users.noreply.github.com>
Co-authored-by: Sebastian Klatte <sebastian.klatte@posteo.de>
Co-authored-by: Vladislav Antonyuk <33021114+VladislavAntonyuk@users.noreply.github.com>
Co-authored-by: Sebastian Klatte <sebastian.klatte@trust-communication.com>
Co-authored-by: Glenn Versweyveld <Depechie@users.noreply.github.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eugen Richter <github@richter.consulting>
Co-authored-by: Eugen Richter <eugen.richter@amcsgroup.com>
Co-authored-by: WillAutioItrax <15933820+WillAutioItrax@users.noreply.github.com>
Co-authored-by: tranb3r <tranb3r@gmail.com>
Co-authored-by: Jacob Egner <jmegner@gmail.com>
Co-authored-by: Alexander Witkowski <alexanderwitkowski@gmail.com>
Co-authored-by: Alexander Witkowski <alexander.witkowski@develappers.de>
Co-authored-by: Matthew S <sattew@protonmail.com>
Co-authored-by: Matthew S <sattew@yandex.com>
Co-authored-by: Dan Siegel <me@dansiegel.net>
Co-authored-by: Janis Paraschidis <jp@recy-systems.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

♻ Provide the base implementation for PlatformSpecific APIs
6 participants