├── InputKit.sln.vsext.disable
├── _config.yml
├── test
└── InputKit.Maui.Test
│ ├── Usings.cs
│ ├── TestClasses
│ ├── MockApplication.cs
│ ├── ButtonHandlerStub.cs
│ ├── BlockingTicker.cs
│ ├── ApplicationHandlerStub.cs
│ ├── HandlersContextStub.cs
│ ├── ApplicationExtensions.cs
│ ├── AsyncTicker.cs
│ ├── TestWindow.cs
│ ├── WindowHandlerStub.cs
│ ├── ApplicationStub.cs
│ ├── TestApp.cs
│ ├── HandlerStub.cs
│ ├── FontElementHandlerStub.cs
│ └── TestAnimationManager.cs
│ ├── InputKitBindableObject.cs
│ ├── InputKit.Maui.Test.csproj
│ └── AdvancedEntry_Tests.cs
├── art
├── icon512.png
├── icon1024.png.png
└── InputKit artwork.ai.ai
├── docs
├── en
│ ├── images
│ │ ├── icon512.png
│ │ ├── formview-demo.gif
│ │ ├── checkbox-usage-01.gif
│ │ ├── radiobutton-usage-01.gif
│ │ ├── checkbox-custom-content.gif
│ │ ├── checkbox-dark-windows.gif
│ │ ├── checkbox-light-android.gif
│ │ ├── checkbox-visual-states.gif
│ │ ├── predefined-shapes-all.png
│ │ ├── radiobutton-dark-windows.gif
│ │ ├── radiobutton-light-android.gif
│ │ ├── radiobutton-custom-content.gif
│ │ ├── selectionview-columnnumber.gif
│ │ ├── selectionview-dark-windows.gif
│ │ ├── selectionview-light-android.gif
│ │ ├── checkbox-customization-colors.gif
│ │ ├── migration-guide-icon-selection.gif
│ │ ├── radiobutton-customization-colors.gif
│ │ ├── checkbox-customization-icons-square.gif
│ │ ├── checkbox-customization-types-filled.gif
│ │ ├── checkbox-customization-colors-material.gif
│ │ ├── checkbox-customization-icons-custom-x.gif
│ │ ├── checkbox-customization-labelposition.gif
│ │ ├── checkbox-customization-types-material.gif
│ │ ├── checkbox-customization-types-regular.gif
│ │ ├── selectionview-isdisabledpropertyname.gif
│ │ ├── radiobutton-customization-labelposition.gif
│ │ ├── radiobutton-customization-icon-checkcircle.gif
│ │ └── radiobutton-customization-icon-custom-thumbsup.gif
│ ├── components
│ │ └── controls
│ │ │ ├── AdvancedSlider.md
│ │ │ ├── AutoCompleteEntry.md
│ │ │ ├── Dropdown.md
│ │ │ └── AdvancedEntry.md
│ ├── Options.md
│ ├── getting-started
│ │ └── getting-started-maui.md
│ ├── PredefinedShapes.md
│ ├── examples
│ │ └── Community-Contents.md
│ └── migration-guides
│ │ └── migrating-to-v4.1.md
└── docs-langs.json
├── src
├── InputKit.Maui
│ ├── icon512.png
│ ├── Shared
│ │ ├── Resources
│ │ │ └── arrow_down.png
│ │ ├── Validations
│ │ │ ├── IValidation.cs
│ │ │ ├── RequiredValidation.cs
│ │ │ ├── DigitsOnlyValidation.cs
│ │ │ ├── NumericValidation.cs
│ │ │ ├── MaxLengthValidation.cs
│ │ │ ├── MinLengthValidation.cs
│ │ │ ├── RegexValidation.cs
│ │ │ ├── LettersOnlyValidation.cs
│ │ │ ├── MinValueValidation.cs
│ │ │ ├── MaxValueValidation.cs
│ │ │ └── ComparableTypeConverter.cs
│ │ ├── InputKitOptions.cs
│ │ ├── Abstraction
│ │ │ ├── ISelection.cs
│ │ │ └── IValidatable.cs
│ │ ├── Utils
│ │ │ └── SelectedItemChangedArgs.cs
│ │ ├── Helpers
│ │ │ ├── GeometryConverter.cs
│ │ │ └── ColorExtensions.cs
│ │ ├── Enums.cs
│ │ ├── Layouts
│ │ │ ├── StatefulStackLayout.cs
│ │ │ └── StatefulGrid.cs
│ │ ├── Controls
│ │ │ ├── AutoCompleteEntry.cs
│ │ │ └── PredefinedShapes.cs
│ │ └── Configuration
│ │ │ └── GlobalSetting.cs
│ ├── Resources
│ │ └── values
│ │ │ └── input_styles.xml
│ ├── Handlers
│ │ ├── StatefulGridHandler.cs
│ │ ├── StatefulStackLayoutHandler.cs
│ │ └── InputKitHandlersCollectionExtension.cs
│ └── Platforms
│ │ ├── Android
│ │ └── Handlers
│ │ │ ├── StatefulStackLayoutHandler.Android.cs
│ │ │ └── StatefulGridHandler.Android.cs
│ │ ├── iOS
│ │ └── Handlers
│ │ │ └── StatefulGridHandler.iOS.cs
│ │ └── MacCatalyst
│ │ └── Handlers
│ │ └── StatefulGridHandler.MacCatalyst.cs
└── Xamarin.Forms.InputKit
│ ├── icon.png
│ ├── Shared
│ ├── Resources
│ │ ├── dot.png
│ │ ├── star.png
│ │ ├── check.png
│ │ ├── circle.png
│ │ ├── cross.png
│ │ └── arrow_down.png
│ ├── Controls
│ │ ├── EmptyEntry.cs
│ │ ├── IconView.cs
│ │ ├── AutoCompleteEntry.cs
│ │ └── PredefinedShapes.cs
│ ├── IInputKit.cs
│ ├── Validations
│ │ ├── IValidation.cs
│ │ ├── RequiredValidation.cs
│ │ ├── NumericValidation.cs
│ │ ├── MaxLengthValidation.cs
│ │ ├── RegexValidation.cs
│ │ ├── MinLengthValidation.cs
│ │ ├── DigitsOnlyValidation.cs
│ │ ├── LettersOnlyValidation.cs
│ │ ├── MaxValueValidation.cs
│ │ └── MinValueValidation.cs
│ ├── InputKitOptions.cs
│ ├── Abstraction
│ │ ├── ISelection.cs
│ │ └── IValidatable.cs
│ ├── Helpers
│ │ ├── GeometryConverter.cs
│ │ └── ColorExtensions.cs
│ ├── Layouts
│ │ └── StatefulStackLayout.cs
│ ├── Utils
│ │ └── SelectedItemChangedArgs.cs
│ ├── CrossInputKit.cs
│ └── Configuration
│ │ └── GlobalSetting.cs
│ ├── Resources
│ └── values
│ │ └── input_styles.xml
│ └── Platforms
│ ├── Droid
│ ├── InputKitImplementation.cs
│ ├── EmptyEntryRenderer.cs
│ ├── StatefulStackLayoutRenderer.cs
│ └── Config.cs
│ ├── TVOS
│ └── InputKitImplementation.cs
│ ├── UWP
│ ├── InputKitImplementation.cs
│ ├── Config.cs
│ ├── EmptyEntryRenderer.cs
│ ├── IconViewRenderer.cs
│ └── StatefulStackLayoutRenderer.cs
│ ├── iOS
│ ├── InputKitImplementation.cs
│ ├── EmptyEntryRenderer.cs
│ ├── Controls
│ │ └── AutoCompleteTableView.cs
│ ├── Helpers
│ │ ├── AutoCompleteDefaultDataSource.cs
│ │ └── AutoCompleteViewSource.cs
│ ├── Config.cs
│ └── StatefulStackLayoutRenderer.cs
│ ├── macOS
│ └── InputKitImplementation.cs
│ └── WatchOS
│ └── InputKitImplementation.cs
├── shreenshots
├── checkboxes_ios.png
├── radiobuttons_ios.png
├── checkboxes_android.gif
├── checkboxes_android.png
├── radiobuttons_android.gif
├── radiobuttons_android.png
├── autocompleteentries_ios.png
├── autocompleteentries_android.gif
└── autocompleteentries_android.png
├── sandbox
├── SandboxXF
│ ├── SandboxXF
│ │ ├── AssemblyInfo.cs
│ │ ├── App.xaml
│ │ ├── SampleClass.cs
│ │ ├── Views
│ │ │ ├── DropdownsPage.xaml.cs
│ │ │ ├── AdvancedEntriesPage.xaml.cs
│ │ │ ├── AdvancedSlidersPage.xaml.cs
│ │ │ ├── AdvancedSlidersPage.xaml
│ │ │ ├── AutoCompleteEntriesPage.xaml
│ │ │ ├── CheckBoxesPage.xaml.cs
│ │ │ ├── SelectionViewPage.xaml
│ │ │ ├── SelectionViewPage.xaml.cs
│ │ │ ├── RadioButtonsPage.xaml.cs
│ │ │ ├── RadioButtonsPage.xaml
│ │ │ ├── AutoCompleteEntriesPage.xaml.cs
│ │ │ ├── DropdownsPage.xaml
│ │ │ └── CheckBoxesPage.xaml
│ │ ├── App.xaml.cs
│ │ ├── SandboxXF.csproj
│ │ ├── MainPage.xaml
│ │ ├── MainViewModel.cs
│ │ ├── ViewModels
│ │ │ ├── RadioButtonsViewModel.cs
│ │ │ └── AdvancedEntriesPageViewModel.cs
│ │ └── MainPage.xaml.cs
│ ├── SandboxXF.iOS
│ │ ├── Resources
│ │ │ ├── Default.png
│ │ │ ├── Default@2x.png
│ │ │ ├── arrow_down.png
│ │ │ ├── arrow_down@2x.png
│ │ │ ├── arrow_down@3x.png
│ │ │ ├── circle_check.png
│ │ │ ├── Default-568h@2x.png
│ │ │ ├── Default-Portrait.png
│ │ │ ├── circle_check@2x.png
│ │ │ ├── circle_check@3x.png
│ │ │ ├── Default-Portrait@2x.png
│ │ │ ├── ic_account_balance_black.png
│ │ │ ├── ic_account_balance_black@2x.png
│ │ │ └── ic_account_balance_black@3x.png
│ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Icon20.png
│ │ │ │ ├── Icon29.png
│ │ │ │ ├── Icon40.png
│ │ │ │ ├── Icon58.png
│ │ │ │ ├── Icon60.png
│ │ │ │ ├── Icon76.png
│ │ │ │ ├── Icon80.png
│ │ │ │ ├── Icon87.png
│ │ │ │ ├── Icon1024.png
│ │ │ │ ├── Icon120.png
│ │ │ │ ├── Icon152.png
│ │ │ │ ├── Icon167.png
│ │ │ │ └── Icon180.png
│ │ ├── Entitlements.plist
│ │ ├── Main.cs
│ │ ├── AppDelegate.cs
│ │ ├── Info.plist
│ │ └── Properties
│ │ │ └── AssemblyInfo.cs
│ └── SandboxXF.Android
│ │ ├── Resources
│ │ ├── mipmap-hdpi
│ │ │ ├── icon.png
│ │ │ ├── circle_check.png
│ │ │ ├── launcher_foreground.png
│ │ │ └── ic_account_balance_black.png
│ │ ├── mipmap-mdpi
│ │ │ ├── icon.png
│ │ │ └── launcher_foreground.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── icon.png
│ │ │ └── launcher_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── icon.png
│ │ │ └── launcher_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── icon.png
│ │ │ └── launcher_foreground.png
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── icon.xml
│ │ │ └── icon_round.xml
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ ├── drawable
│ │ │ ├── ic_account_balance_black.xml
│ │ │ └── circle_check.xml
│ │ └── AboutResources.txt
│ │ ├── Properties
│ │ ├── AndroidManifest.xml
│ │ └── AssemblyInfo.cs
│ │ ├── Assets
│ │ └── AboutAssets.txt
│ │ └── MainActivity.cs
└── SandboxMAUI
│ ├── Resources
│ ├── Images
│ │ ├── email.png
│ │ ├── phone.png
│ │ ├── account.png
│ │ ├── circle_check.png
│ │ └── ic_account_balance_black.png
│ ├── Fonts
│ │ ├── OpenSansRegular.ttf
│ │ └── OpenSansSemibold.ttf
│ ├── appicon.svg
│ ├── Raw
│ │ └── AboutAssets.txt
│ ├── appiconfg.svg
│ └── Styles
│ │ └── Colors.xaml
│ ├── Properties
│ └── launchSettings.json
│ ├── AppShell.xaml.cs
│ ├── App.xaml.cs
│ ├── Pages
│ ├── AdvancedEntryPage.xaml.cs
│ ├── AdvancedSliderPage.xaml.cs
│ ├── CheckBoxPage.xaml.cs
│ ├── RadioButtonPage.xaml.cs
│ ├── AdvancedSliderPage.xaml
│ ├── SelectionViewPage.xaml.cs
│ └── SelectionViewPage.xaml
│ ├── Platforms
│ ├── Android
│ │ ├── Resources
│ │ │ └── values
│ │ │ │ └── colors.xml
│ │ ├── MainApplication.cs
│ │ ├── AndroidManifest.xml
│ │ └── MainActivity.cs
│ ├── iOS
│ │ ├── AppDelegate.cs
│ │ ├── Program.cs
│ │ └── Info.plist
│ ├── MacCatalyst
│ │ ├── AppDelegate.cs
│ │ ├── Program.cs
│ │ └── Info.plist
│ ├── Windows
│ │ ├── App.xaml
│ │ ├── app.manifest
│ │ ├── App.xaml.cs
│ │ └── Package.appxmanifest
│ └── Tizen
│ │ ├── Main.cs
│ │ └── tizen-manifest.xml
│ ├── ViewModels
│ ├── SampleItem.cs
│ ├── SampleClassViewModel.cs
│ └── AdvancedEntryPageViewModel.cs
│ ├── AppShell.xaml
│ ├── App.xaml
│ ├── MauiProgram.cs
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ └── SandboxMAUI.sln
├── .github
└── ISSUE_TEMPLATE
│ ├── feature_request.md
│ ├── question.md
│ └── bug_report.md
├── DropdownColoring.md
└── LICENSE
/InputKit.sln.vsext.disable:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-minimal
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/Usings.cs:
--------------------------------------------------------------------------------
1 | global using Xunit;
--------------------------------------------------------------------------------
/art/icon512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/art/icon512.png
--------------------------------------------------------------------------------
/art/icon1024.png.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/art/icon1024.png.png
--------------------------------------------------------------------------------
/art/InputKit artwork.ai.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/art/InputKit artwork.ai.ai
--------------------------------------------------------------------------------
/docs/en/images/icon512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/icon512.png
--------------------------------------------------------------------------------
/src/InputKit.Maui/icon512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/src/InputKit.Maui/icon512.png
--------------------------------------------------------------------------------
/docs/en/images/formview-demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/formview-demo.gif
--------------------------------------------------------------------------------
/shreenshots/checkboxes_ios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/shreenshots/checkboxes_ios.png
--------------------------------------------------------------------------------
/shreenshots/radiobuttons_ios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/shreenshots/radiobuttons_ios.png
--------------------------------------------------------------------------------
/shreenshots/checkboxes_android.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/shreenshots/checkboxes_android.gif
--------------------------------------------------------------------------------
/shreenshots/checkboxes_android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/shreenshots/checkboxes_android.png
--------------------------------------------------------------------------------
/docs/en/images/checkbox-usage-01.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-usage-01.gif
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms.Xaml;
2 |
3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
--------------------------------------------------------------------------------
/shreenshots/radiobuttons_android.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/shreenshots/radiobuttons_android.gif
--------------------------------------------------------------------------------
/shreenshots/radiobuttons_android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/shreenshots/radiobuttons_android.png
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/src/Xamarin.Forms.InputKit/icon.png
--------------------------------------------------------------------------------
/docs/en/images/radiobutton-usage-01.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/radiobutton-usage-01.gif
--------------------------------------------------------------------------------
/shreenshots/autocompleteentries_ios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/shreenshots/autocompleteentries_ios.png
--------------------------------------------------------------------------------
/docs/en/images/checkbox-custom-content.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-custom-content.gif
--------------------------------------------------------------------------------
/docs/en/images/checkbox-dark-windows.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-dark-windows.gif
--------------------------------------------------------------------------------
/docs/en/images/checkbox-light-android.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-light-android.gif
--------------------------------------------------------------------------------
/docs/en/images/checkbox-visual-states.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-visual-states.gif
--------------------------------------------------------------------------------
/docs/en/images/predefined-shapes-all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/predefined-shapes-all.png
--------------------------------------------------------------------------------
/docs/en/images/radiobutton-dark-windows.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/radiobutton-dark-windows.gif
--------------------------------------------------------------------------------
/docs/en/images/radiobutton-light-android.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/radiobutton-light-android.gif
--------------------------------------------------------------------------------
/shreenshots/autocompleteentries_android.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/shreenshots/autocompleteentries_android.gif
--------------------------------------------------------------------------------
/shreenshots/autocompleteentries_android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/shreenshots/autocompleteentries_android.png
--------------------------------------------------------------------------------
/docs/en/images/radiobutton-custom-content.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/radiobutton-custom-content.gif
--------------------------------------------------------------------------------
/docs/en/images/selectionview-columnnumber.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/selectionview-columnnumber.gif
--------------------------------------------------------------------------------
/docs/en/images/selectionview-dark-windows.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/selectionview-dark-windows.gif
--------------------------------------------------------------------------------
/docs/en/images/selectionview-light-android.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/selectionview-light-android.gif
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Resources/Images/email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxMAUI/Resources/Images/email.png
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Resources/Images/phone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxMAUI/Resources/Images/phone.png
--------------------------------------------------------------------------------
/docs/en/images/checkbox-customization-colors.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-customization-colors.gif
--------------------------------------------------------------------------------
/docs/en/images/migration-guide-icon-selection.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/migration-guide-icon-selection.gif
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Resources/Images/account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxMAUI/Resources/Images/account.png
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Resources/arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/src/InputKit.Maui/Shared/Resources/arrow_down.png
--------------------------------------------------------------------------------
/docs/en/images/radiobutton-customization-colors.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/radiobutton-customization-colors.gif
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Resources/dot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/src/Xamarin.Forms.InputKit/Shared/Resources/dot.png
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Resources/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/src/Xamarin.Forms.InputKit/Shared/Resources/star.png
--------------------------------------------------------------------------------
/docs/en/images/checkbox-customization-icons-square.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-customization-icons-square.gif
--------------------------------------------------------------------------------
/docs/en/images/checkbox-customization-types-filled.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-customization-types-filled.gif
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Resources/Images/circle_check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxMAUI/Resources/Images/circle_check.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Resources/check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/src/Xamarin.Forms.InputKit/Shared/Resources/check.png
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Resources/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/src/Xamarin.Forms.InputKit/Shared/Resources/circle.png
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Resources/cross.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/src/Xamarin.Forms.InputKit/Shared/Resources/cross.png
--------------------------------------------------------------------------------
/docs/en/images/checkbox-customization-colors-material.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-customization-colors-material.gif
--------------------------------------------------------------------------------
/docs/en/images/checkbox-customization-icons-custom-x.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-customization-icons-custom-x.gif
--------------------------------------------------------------------------------
/docs/en/images/checkbox-customization-labelposition.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-customization-labelposition.gif
--------------------------------------------------------------------------------
/docs/en/images/checkbox-customization-types-material.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-customization-types-material.gif
--------------------------------------------------------------------------------
/docs/en/images/checkbox-customization-types-regular.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/checkbox-customization-types-regular.gif
--------------------------------------------------------------------------------
/docs/en/images/selectionview-isdisabledpropertyname.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/selectionview-isdisabledpropertyname.gif
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Resources/Fonts/OpenSansRegular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxMAUI/Resources/Fonts/OpenSansRegular.ttf
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Resources/Fonts/OpenSansSemibold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxMAUI/Resources/Fonts/OpenSansSemibold.ttf
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/arrow_down.png
--------------------------------------------------------------------------------
/docs/docs-langs.json:
--------------------------------------------------------------------------------
1 | {
2 | "Languages":[
3 | {
4 | "DisplayName" : "English",
5 | "Code" : "en",
6 | "IsDefault": true
7 | }
8 | ]
9 | }
--------------------------------------------------------------------------------
/docs/en/images/radiobutton-customization-labelposition.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/radiobutton-customization-labelposition.gif
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/arrow_down@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/arrow_down@2x.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/arrow_down@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/arrow_down@3x.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/circle_check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/circle_check.png
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Resources/arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/src/Xamarin.Forms.InputKit/Shared/Resources/arrow_down.png
--------------------------------------------------------------------------------
/docs/en/images/radiobutton-customization-icon-checkcircle.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/radiobutton-customization-icon-checkcircle.gif
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/circle_check@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/circle_check@2x.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/circle_check@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/circle_check@3x.png
--------------------------------------------------------------------------------
/docs/en/images/radiobutton-customization-icon-custom-thumbsup.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/docs/en/images/radiobutton-customization-icon-custom-thumbsup.gif
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Resources/Images/ic_account_balance_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxMAUI/Resources/Images/ic_account_balance_black.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-hdpi/icon.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xhdpi/icon.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "profiles": {
3 | "Windows Machine": {
4 | "commandName": "MsixPackage",
5 | "nativeDebugging": false
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xxhdpi/icon.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/ic_account_balance_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/ic_account_balance_black.png
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Controls/EmptyEntry.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms;
2 |
3 | namespace Plugin.InputKit.Shared.Controls
4 | {
5 | internal class EmptyEntry : Entry
6 | {
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/AppShell.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace SandboxMAUI;
2 |
3 | public partial class AppShell : Shell
4 | {
5 | public AppShell()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-hdpi/circle_check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-hdpi/circle_check.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/ic_account_balance_black@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/ic_account_balance_black@2x.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Resources/ic_account_balance_black@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Resources/ic_account_balance_black@3x.png
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Validations/IValidation.cs:
--------------------------------------------------------------------------------
1 | namespace InputKit.Shared.Validations;
2 |
3 | public interface IValidation
4 | {
5 | string Message { get; }
6 | bool Validate(object value);
7 | }
8 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-hdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-hdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-mdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-mdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/InputKit.Maui/Resources/values/input_styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/App.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace SandboxMAUI;
2 |
3 | public partial class App : Application
4 | {
5 | public App()
6 | {
7 | InitializeComponent();
8 |
9 | MainPage = new AppShell();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-hdpi/ic_account_balance_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/enisn/Xamarin.Forms.InputKit/HEAD/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-hdpi/ic_account_balance_black.png
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Resources/values/input_styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/IInputKit.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Plugin.InputKit
6 | {
7 | public interface IInputKit
8 | {
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Validations/IValidation.cs:
--------------------------------------------------------------------------------
1 | namespace Plugin.InputKit.Shared.Validations
2 | {
3 | public interface IValidation
4 | {
5 | string Message { get; }
6 | bool Validate(object value);
7 | }
8 | }
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Pages/AdvancedEntryPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Controls;
2 |
3 | namespace SandboxMAUI.Pages;
4 |
5 | public partial class AdvancedEntryPage : ContentPage
6 | {
7 | public AdvancedEntryPage()
8 | {
9 | InitializeComponent();
10 | }
11 | }
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Pages/AdvancedSliderPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Controls;
2 |
3 | namespace SandboxMAUI.Pages;
4 |
5 | public partial class AdvancedSliderPage : ContentPage
6 | {
7 | public AdvancedSliderPage()
8 | {
9 | InitializeComponent();
10 | }
11 | }
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Resources/appicon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #512BD4
4 | #2B0B98
5 | #2B0B98
6 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/InputKitOptions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Graphics;
2 | using System;
3 |
4 | namespace InputKit.Shared;
5 |
6 | public class InputKitOptions
7 | {
8 | public static Func GetAccentColor { get; set; } = () => Color.FromArgb("#512bdf");
9 | }
10 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using Foundation;
2 |
3 | namespace SandboxMAUI;
4 |
5 | [Register("AppDelegate")]
6 | public class AppDelegate : MauiUIApplicationDelegate
7 | {
8 | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
9 | }
10 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/MacCatalyst/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using Foundation;
2 |
3 | namespace SandboxMAUI;
4 |
5 | [Register("AppDelegate")]
6 | public class AppDelegate : MauiUIApplicationDelegate
7 | {
8 | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
9 | }
10 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/InputKitOptions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Xamarin.Forms;
3 |
4 | namespace Plugin.InputKit.Shared
5 | {
6 | public class InputKitOptions
7 | {
8 | public static Func GetAccentColor { get; set; } = () => Color.Accent;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/ViewModels/SampleItem.cs:
--------------------------------------------------------------------------------
1 | namespace SandboxMAUI.ViewModels;
2 |
3 | public class SampleItem
4 | {
5 | public int Id { get; set; }
6 | public string Name { get; set; }
7 |
8 | public bool IsDisabled { get; set; }
9 |
10 | public override string ToString() => Name;
11 | }
12 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Abstraction/ISelection.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace InputKit.Shared.Abstraction;
4 |
5 | public interface ISelection
6 | {
7 | bool IsSelected { get; set; }
8 |
9 | object Value { get; set; }
10 |
11 | bool IsDisabled { get; set; }
12 |
13 | event EventHandler Clicked;
14 | }
15 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
8 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Handlers/StatefulGridHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using Microsoft.Maui.Handlers;
7 |
8 | namespace InputKit.Handlers
9 | {
10 | public partial class StatefulGridHandler : LayoutHandler
11 | {
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF/SampleClass.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace SandboxXF
6 | {
7 | public class SampleClass
8 | {
9 | public int Id { get; set; }
10 | public string Name { get; set; }
11 | public override string ToString() => Name;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/Droid/InputKitImplementation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Plugin.InputKit
6 | {
7 | ///
8 | /// Interface for $safeprojectgroupname$
9 | ///
10 | public class InputKitImplementation : IInputKit
11 | {
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/TVOS/InputKitImplementation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Plugin.InputKit
6 | {
7 | ///
8 | /// Interface for $safeprojectgroupname$
9 | ///
10 | public class InputKitImplementation : IInputKit
11 | {
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/UWP/InputKitImplementation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Plugin.InputKit
6 | {
7 | ///
8 | /// Interface for $safeprojectgroupname$
9 | ///
10 | public class InputKitImplementation : IInputKit
11 | {
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/iOS/InputKitImplementation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Plugin.InputKit
6 | {
7 | ///
8 | /// Interface for $safeprojectgroupname$
9 | ///
10 | public class InputKitImplementation : IInputKit
11 | {
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/macOS/InputKitImplementation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Plugin.InputKit
6 | {
7 | ///
8 | /// Interface for $safeprojectgroupname$
9 | ///
10 | public class InputKitImplementation : IInputKit
11 | {
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Abstraction/ISelection.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Plugin.InputKit.Shared.Abstraction
4 | {
5 | public interface ISelection
6 | {
7 | bool IsSelected { get; set; }
8 | object Value { get; set; }
9 | bool IsDisabled { get; set; }
10 | event EventHandler Clicked;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/Windows/App.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/WatchOS/InputKitImplementation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Plugin.InputKit
6 | {
7 | ///
8 | /// Interface for $safeprojectgroupname$
9 | ///
10 | public class InputKitImplementation : IInputKit
11 | {
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/MockApplication.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Animations;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace InputKit.Maui.Test.TestClasses;
9 | public class MockApplication : Application
10 | {
11 | public MockApplication()
12 | {
13 | }
14 | }
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/Tizen/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.Maui;
3 | using Microsoft.Maui.Hosting;
4 |
5 | namespace SandboxMAUI;
6 |
7 | class Program : MauiApplication
8 | {
9 | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
10 |
11 | static void Main(string[] args)
12 | {
13 | var app = new Program();
14 | app.Run(args);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/drawable/ic_account_balance_black.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/drawable/circle_check.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/ButtonHandlerStub.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.Maui.Handlers;
3 |
4 | namespace InputKit.Maui.Test.TestClasses;
5 |
6 | class ButtonHandlerStub : ViewHandler
7 | {
8 | protected override object CreatePlatformView() => throw new NotImplementedException();
9 | public ButtonHandlerStub() : base(new PropertyMapper())
10 | {
11 | }
12 | }
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/Android/MainApplication.cs:
--------------------------------------------------------------------------------
1 | using Android.App;
2 | using Android.Runtime;
3 |
4 | namespace SandboxMAUI;
5 |
6 | [Application]
7 | public class MainApplication : MauiApplication
8 | {
9 | public MainApplication(IntPtr handle, JniHandleOwnership ownership)
10 | : base(handle, ownership)
11 | {
12 | }
13 |
14 | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
15 | }
16 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Abstraction/IValidatable.cs:
--------------------------------------------------------------------------------
1 | using InputKit.Shared.Validations;
2 | using System;
3 | using System.ComponentModel;
4 |
5 | namespace InputKit.Shared.Abstraction;
6 |
7 | public interface IValidatable : INotifyPropertyChanged
8 | {
9 | public List Validations { get; }
10 |
11 | bool IsValid { get; }
12 |
13 | void DisplayValidation();
14 |
15 | void ResetValidation();
16 | }
17 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Handlers/StatefulStackLayoutHandler.cs:
--------------------------------------------------------------------------------
1 | using InputKit.Shared.Layouts;
2 | using Microsoft.Maui.Controls;
3 | using Microsoft.Maui.Handlers;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 |
10 | namespace InputKit.Handlers
11 | {
12 | public partial class StatefulStackLayoutHandler : LayoutHandler
13 | {
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/iOS/Program.cs:
--------------------------------------------------------------------------------
1 | using ObjCRuntime;
2 | using UIKit;
3 |
4 | namespace SandboxMAUI;
5 |
6 | public class Program
7 | {
8 | // This is the main entry point of the application.
9 | static void Main(string[] args)
10 | {
11 | // if you want to use a different Application Delegate class from "AppDelegate"
12 | // you can specify it here.
13 | UIApplication.Main(args, null, typeof(AppDelegate));
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Utils/SelectedItemChangedArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace InputKit.Shared.Utils;
4 |
5 | public class SelectedItemChangedArgs : EventArgs
6 | {
7 | public SelectedItemChangedArgs(object newItem, int newItemIndex)
8 | {
9 | NewItem = newItem;
10 | NewItemIndex = newItemIndex;
11 | }
12 |
13 | public object NewItem { get; set; }
14 | public int NewItemIndex { get; set; }
15 | }
16 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/MacCatalyst/Program.cs:
--------------------------------------------------------------------------------
1 | using ObjCRuntime;
2 | using UIKit;
3 |
4 | namespace SandboxMAUI;
5 |
6 | public class Program
7 | {
8 | // This is the main entry point of the application.
9 | static void Main(string[] args)
10 | {
11 | // if you want to use a different Application Delegate class from "AppDelegate"
12 | // you can specify it here.
13 | UIApplication.Main(args, null, typeof(AppDelegate));
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Helpers/GeometryConverter.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Controls.Shapes;
2 |
3 | namespace InputKit.Shared.Helpers;
4 | public static class GeometryConverter
5 | {
6 | private static PathGeometryConverter PathGeometryConverter { get; } = new PathGeometryConverter();
7 | public static Geometry FromPath(string path)
8 | {
9 | return (Geometry)PathGeometryConverter.ConvertFromInvariantString(path);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Abstraction/IValidatable.cs:
--------------------------------------------------------------------------------
1 | using Plugin.InputKit.Shared.Validations;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 |
5 | namespace Plugin.InputKit.Shared.Abstraction
6 | {
7 | public interface IValidatable : INotifyPropertyChanged
8 | {
9 | List Validations { get; }
10 |
11 | bool IsValid { get; }
12 |
13 | void DisplayValidation();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/Android/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using Android.App;
2 | using Android.Content.PM;
3 | using Android.OS;
4 |
5 | namespace SandboxMAUI;
6 |
7 | [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
8 | public class MainActivity : MauiAppCompatActivity
9 | {
10 | }
11 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF/Views/DropdownsPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 |
10 | namespace SandboxXF.Views
11 | {
12 | [XamlCompilation(XamlCompilationOptions.Compile)]
13 | public partial class DropdownsPage : ContentPage
14 | {
15 | public DropdownsPage ()
16 | {
17 | InitializeComponent ();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/AppShell.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Enums.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace InputKit.Shared;
6 |
7 | public enum LabelPosition
8 | {
9 | After,
10 | Before
11 | }
12 |
13 | ///
14 | /// Types of selectionlist
15 | ///
16 | public enum SelectionType
17 | {
18 | Button = 1,
19 | RadioButton = 3,
20 | CheckBox = 2,
21 | MultipleButton = 4,
22 | SingleCheckBox = 5,
23 | MultipleRadioButton = 6,
24 | }
25 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Helpers/GeometryConverter.cs:
--------------------------------------------------------------------------------
1 |
2 | using Xamarin.Forms.Shapes;
3 |
4 | namespace Plugin.InputKit.Shared.Helpers
5 | {
6 | public static class GeometryConverter
7 | {
8 | private static PathGeometryConverter PathGeometryConverter { get; } = new PathGeometryConverter();
9 | public static Geometry FromPath(string path)
10 | {
11 | return (Geometry)PathGeometryConverter.ConvertFromInvariantString(path);
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF/Views/AdvancedEntriesPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 |
10 | namespace SandboxXF.Views
11 | {
12 | [XamlCompilation(XamlCompilationOptions.Compile)]
13 | public partial class AdvancedEntriesPage : ContentPage
14 | {
15 | public AdvancedEntriesPage ()
16 | {
17 | InitializeComponent ();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Layouts/StatefulStackLayout.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using Xamarin.Forms;
5 |
6 | namespace Plugin.InputKit.Shared.Layouts
7 | {
8 |
9 | ///
10 | /// This class generated for prevent future errors with VisualStates of StackLayout. This StackLayout has VisaulStates like 'Pressed', 'Normal' etc.
11 | ///
12 | public class StatefulStackLayout : StackLayout
13 | {
14 |
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Validations/RequiredValidation.cs:
--------------------------------------------------------------------------------
1 | namespace Plugin.InputKit.Shared.Validations
2 | {
3 | public class RequiredValidation : IValidation
4 | {
5 | public string Message { get; set; } = "This field is required";
6 |
7 | public bool Validate(object value)
8 | {
9 | if (value is string text)
10 | {
11 | return !string.IsNullOrEmpty(text);
12 | }
13 |
14 | return value != null;
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/BlockingTicker.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Animations;
2 |
3 | namespace InputKit.Maui.Test.TestClasses;
4 | class BlockingTicker : Ticker
5 | {
6 | bool _enabled;
7 |
8 | public override void Start()
9 | {
10 | _enabled = true;
11 |
12 | while (_enabled)
13 | {
14 | Fire?.Invoke();
15 | Task.Delay(16).Wait();
16 | }
17 | }
18 |
19 | public override void Stop()
20 | {
21 | _enabled = false;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF/Views/AdvancedSlidersPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 |
10 | namespace SandboxXF.Views
11 | {
12 | [XamlCompilation(XamlCompilationOptions.Compile)]
13 | public partial class AdvancedSlidersPage : ContentPage
14 | {
15 | public AdvancedSlidersPage()
16 | {
17 | InitializeComponent();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/ApplicationHandlerStub.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Handlers;
2 |
3 | namespace InputKit.Maui.Test.TestClasses;
4 |
5 | class ApplicationHandlerStub : ElementHandler
6 | {
7 | public static IPropertyMapper Mapper = new PropertyMapper(ElementMapper)
8 | {
9 | };
10 | public ApplicationHandlerStub()
11 | : base(Mapper)
12 | {
13 | }
14 |
15 |
16 | protected override object CreatePlatformElement() => default;
17 | }
18 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Utils/SelectedItemChangedArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Plugin.InputKit.Shared.Utils
6 | {
7 | public class SelectedItemChangedArgs : EventArgs
8 | {
9 | public SelectedItemChangedArgs(object newItem, int newItemIndex)
10 | {
11 | NewItem = newItem;
12 | NewItemIndex = newItemIndex;
13 | }
14 |
15 | public object NewItem { get; set; }
16 | public int NewItemIndex { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/InputKitBindableObject.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 |
3 | namespace InputKit.Maui.Test;
4 | public class InputKitBindableObject : BindableObject
5 | {
6 | public void SetProperty(ref T field, T value, Action doAfter = null, [CallerMemberName] string propertyName = null)
7 | {
8 | if (EqualityComparer.Default.Equals(field, value))
9 | {
10 | return;
11 | }
12 |
13 | field = value;
14 | OnPropertyChanged(propertyName);
15 | doAfter?.Invoke(value);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/UWP/Config.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace Plugin.InputKit.Platforms.UWP
6 | {
7 | public static class Config
8 | {
9 | public static void Init()
10 | {
11 | Console.WriteLine($"[{typeof(EmptyEntryRenderer).FullName}] Initialized.");
12 | Console.WriteLine($"[{typeof(IconViewRenderer).FullName}] Initialized.");
13 | Console.WriteLine($"[{typeof(InputKitImplementation).FullName}] Initialized.");
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace SandboxXF.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, typeof(AppDelegate));
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Handlers/InputKitHandlersCollectionExtension.cs:
--------------------------------------------------------------------------------
1 | using InputKit.Shared.Layouts;
2 |
3 | namespace InputKit.Handlers
4 | {
5 | public static class InputKitHandlersCollectionExtension
6 | {
7 | public static IMauiHandlersCollection AddInputKitHandlers(this IMauiHandlersCollection collection)
8 | {
9 | return collection
10 | .AddHandler(typeof(StatefulGrid), typeof(InputKit.Handlers.StatefulGridHandler))
11 | .AddHandler(typeof(StatefulStackLayout), typeof(InputKit.Handlers.StatefulStackLayoutHandler));
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Xamarin.Forms;
3 | using Xamarin.Forms.Xaml;
4 |
5 | namespace SandboxXF
6 | {
7 | public partial class App : Application
8 | {
9 | public App()
10 | {
11 | InitializeComponent();
12 |
13 | MainPage = new NavigationPage(new MainPage());
14 | }
15 |
16 | protected override void OnStart()
17 | {
18 | }
19 |
20 | protected override void OnSleep()
21 | {
22 | }
23 |
24 | protected override void OnResume()
25 | {
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Validations/NumericValidation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Plugin.InputKit.Shared.Validations
8 | {
9 | public class NumericValidation : IValidation
10 | {
11 | public string Message { get; }
12 |
13 | public bool Validate(object value)
14 | {
15 | if (value is string text)
16 | {
17 | return double.TryParse(text, out _);
18 | }
19 |
20 | return false;
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Helpers/ColorExtensions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Graphics;
2 |
3 | namespace InputKit.Shared.Helpers;
4 |
5 | public static class ColorExtensions
6 | {
7 | ///
8 | /// Defines a surface color will be black or white.
9 | ///
10 | /// Background color
11 | /// Surface color on background color
12 | public static Color ToSurfaceColor(this Color color)
13 | {
14 | if (color.Red + color.Green + color.Blue >= 1.8)
15 | return Colors.Black;
16 | else
17 | return Colors.White;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 |
5 | ---
6 |
7 | **Is your feature request related to a problem? Please describe.**
8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
9 |
10 | **Describe the solution you'd like**
11 | A clear and concise description of what you want to happen.
12 |
13 | **Describe alternatives you've considered**
14 | A clear and concise description of any alternative solutions or features you've considered.
15 |
16 | **Additional context**
17 | Add any other context or screenshots about the feature request here.
18 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Validations/MaxLengthValidation.cs:
--------------------------------------------------------------------------------
1 | namespace Plugin.InputKit.Shared.Validations
2 | {
3 | public class MaxLengthValidation : IValidation
4 | {
5 | private string message;
6 | public string Message { get => message ?? $"The field should contain maxium {MaxLength} character."; set => message = value; }
7 | public int MaxLength { get; set; }
8 |
9 | public bool Validate(object value)
10 | {
11 | if (value is string text)
12 | {
13 | return text.Length <= MaxLength;
14 | }
15 |
16 | return true;
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Validations/RegexValidation.cs:
--------------------------------------------------------------------------------
1 | using System.Text.RegularExpressions;
2 |
3 | namespace Plugin.InputKit.Shared.Validations
4 | {
5 | public class RegexValidation : IValidation
6 | {
7 | public string Pattern { get; set; }
8 | public string Message { get; set; } = "The field isn't valid.";
9 |
10 | public bool Validate(object value)
11 | {
12 | if (value is string text)
13 | {
14 | var result = Regex.Match(text, Pattern);
15 |
16 | return result.Success;
17 | }
18 |
19 | return true;
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Validations/MinLengthValidation.cs:
--------------------------------------------------------------------------------
1 | namespace Plugin.InputKit.Shared.Validations
2 | {
3 | public class MinLengthValidation : IValidation
4 | {
5 | private string message;
6 |
7 | public string Message { get => message ?? $"The field should contain at least {MinLength} character."; set => message = value; }
8 | public int MinLength { get; set; }
9 |
10 | public bool Validate(object value)
11 | {
12 | if (value is string text)
13 | {
14 | return text.Length >= MinLength;
15 | }
16 |
17 | return true;
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Validations/DigitsOnlyValidation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Plugin.InputKit.Shared.Validations
8 | {
9 | public class DigitsOnlyValidation : IValidation
10 | {
11 | public string Message { get; set; } = "The field should contain only digits.";
12 |
13 | public bool Validate(object value)
14 | {
15 | if (value is string text)
16 | {
17 | return text.All(char.IsDigit);
18 | }
19 |
20 | return false;
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/HandlersContextStub.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.Extensions.DependencyInjection;
3 | using Microsoft.Maui.Animations;
4 |
5 | namespace InputKit.Maui.Test.TestClasses;
6 |
7 | class HandlersContextStub : IMauiContext
8 | {
9 | public HandlersContextStub(IServiceProvider services)
10 | {
11 | Services = services;
12 | Handlers = Services.GetRequiredService();
13 | AnimationManager = Services.GetRequiredService();
14 | }
15 |
16 | public IServiceProvider Services { get; }
17 |
18 | public IMauiHandlersFactory Handlers { get; }
19 |
20 | public IAnimationManager AnimationManager { get; }
21 | }
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Resources/Raw/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories). Deployment of the asset to your application
3 | is automatically handled by the following `MauiAsset` Build Action within your `.csproj`.
4 |
5 |
6 |
7 | These files will be deployed with you package and will be accessible using Essentials:
8 |
9 | async Task LoadMauiAsset()
10 | {
11 | using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt");
12 | using var reader = new StreamReader(stream);
13 |
14 | var contents = reader.ReadToEnd();
15 | }
16 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/UWP/EmptyEntryRenderer.cs:
--------------------------------------------------------------------------------
1 | using Plugin.InputKit.Platforms.UWP;
2 | using Plugin.InputKit.Shared.Controls;
3 | using System;
4 | using Xamarin.Forms;
5 | using Xamarin.Forms.Platform.UWP;
6 |
7 | [assembly:ExportRenderer(typeof(EmptyEntry),typeof(EmptyEntryRenderer))]
8 | namespace Plugin.InputKit.Platforms.UWP
9 | {
10 | public class EmptyEntryRenderer : EntryRenderer
11 | {
12 | protected override void OnElementChanged(ElementChangedEventArgs e)
13 | {
14 | if (Control != null)
15 | {
16 | Control.BorderThickness = new Windows.UI.Xaml.Thickness(0);
17 | }
18 | base.OnElementChanged(e);
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with your package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/ApplicationExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace InputKit.Maui.Test.TestClasses;
2 |
3 | static class ApplicationExtensions
4 | {
5 | public static Window LoadPage(this Application app, Page page)
6 | {
7 | app.MainPage = page;
8 |
9 | return ((IApplication)app).CreateWindow(null) as Window;
10 | }
11 |
12 | public static void CreateAndSetMockApplication()
13 | {
14 | var appBuilder = MauiApp.CreateBuilder()
15 | .UseMauiApp();
16 | var mauiApp = appBuilder.Build();
17 | var application = mauiApp.Services.GetRequiredService();
18 | application.Handler = new ApplicationHandlerStub();
19 | application.Handler.SetMauiContext(new HandlersContextStub(mauiApp.Services));
20 | }
21 |
22 | }
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/MauiProgram.cs:
--------------------------------------------------------------------------------
1 | using InputKit.Handlers;
2 | using InputKit.Shared.Controls;
3 | using UraniumUI;
4 |
5 | namespace SandboxMAUI;
6 |
7 | public static class MauiProgram
8 | {
9 | public static MauiApp CreateMauiApp()
10 | {
11 | var builder = MauiApp.CreateBuilder();
12 | builder
13 | .UseMauiApp()
14 | .ConfigureFonts(fonts =>
15 | {
16 | fonts.AddFont("OpenSansRegular.ttf", "OpenSansRegular");
17 | fonts.AddFont("OpenSansSemibold.ttf", "OpenSansSemibold");
18 | fonts.AddMaterialIconFonts();
19 | });
20 |
21 | builder.ConfigureMauiHandlers(handlers =>
22 | {
23 | handlers.AddInputKitHandlers();
24 | });
25 |
26 | SelectionView.GlobalSetting.CornerRadius = 0;
27 |
28 | return builder.Build();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/AsyncTicker.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Animations;
2 |
3 | namespace InputKit.Maui.Test.TestClasses;
4 | class AsyncTicker : Ticker
5 | {
6 | bool _enabled;
7 | bool _systemEnabled = true;
8 |
9 | public override bool SystemEnabled => _systemEnabled;
10 |
11 | public void SetEnabled(bool enabled)
12 | {
13 | _systemEnabled = enabled;
14 | _enabled = enabled;
15 | }
16 |
17 | public override async void Start()
18 | {
19 | _enabled = true;
20 |
21 | while (_enabled)
22 | {
23 | Fire?.Invoke();
24 | await Task.Delay(16);
25 | }
26 | }
27 |
28 | public override void Stop()
29 | {
30 | _enabled = false;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/TestWindow.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Runtime.CompilerServices;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace InputKit.Maui.Test.TestClasses;
9 |
10 | public class TestWindow : Window
11 | {
12 | public TestWindow()
13 | {
14 |
15 | }
16 |
17 | public TestWindow(Page page) : base(page)
18 | {
19 | }
20 |
21 | protected override void OnPropertyChanged([CallerMemberName] string propertyName = null)
22 | {
23 | base.OnPropertyChanged(propertyName);
24 | if (propertyName == PageProperty.PropertyName &&
25 | Parent == null)
26 | {
27 | var app = new TestApp(this);
28 | _ = (app as IApplication).CreateWindow(null);
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Validations/RequiredValidation.cs:
--------------------------------------------------------------------------------
1 | namespace InputKit.Shared.Validations;
2 | public class RequiredValidation : BindableObject, IValidation
3 | {
4 | public string Message
5 | {
6 | get => (string)GetValue(MessageProperty);
7 | set => SetValue(MessageProperty, value);
8 | }
9 |
10 | public static readonly BindableProperty MessageProperty = BindableProperty.Create(
11 | nameof(Message),
12 | typeof(string),
13 | typeof(RequiredValidation),
14 | "This field is required");
15 |
16 | public bool Validate(object value)
17 | {
18 | if (value is string text)
19 | {
20 | return !string.IsNullOrEmpty(text);
21 | }
22 |
23 | return value != null;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/Tizen/tizen-manifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | appicon.xhigh.png
7 |
8 |
9 |
10 |
11 | http://tizen.org/privilege/internet
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/WindowHandlerStub.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Handlers;
2 |
3 | namespace InputKit.Maui.Test.TestClasses;
4 |
5 | class WindowHandlerStub : ElementHandler
6 | {
7 | public static IPropertyMapper Mapper =
8 | new PropertyMapper(ElementMapper)
9 | {
10 | };
11 |
12 | public static CommandMapper CommandMapper =
13 | new CommandMapper(ElementCommandMapper)
14 | {
15 | };
16 |
17 | public WindowHandlerStub(IPropertyMapper mapper = null, CommandMapper commandMapper = null)
18 | : base(mapper ?? Mapper, commandMapper ?? CommandMapper)
19 | {
20 | }
21 |
22 | protected override object CreatePlatformElement() => default;
23 | }
24 |
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Validations/DigitsOnlyValidation.cs:
--------------------------------------------------------------------------------
1 | namespace InputKit.Shared.Validations;
2 |
3 | public class DigitsOnlyValidation : BindableObject, IValidation
4 | {
5 | public string Message
6 | {
7 | get => (string)GetValue(MessageProperty);
8 | set => SetValue(MessageProperty, value);
9 | }
10 |
11 | public static readonly BindableProperty MessageProperty = BindableProperty.Create(
12 | nameof(Message),
13 | typeof(string),
14 | typeof(DigitsOnlyValidation),
15 | "The field should contain only digits.");
16 |
17 | public bool Validate(object value)
18 | {
19 | if (value is string text)
20 | {
21 | return text.All(char.IsDigit);
22 | }
23 |
24 | return false;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/question.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Question
3 | about: Ask your questions and help other people too
4 |
5 | ---
6 |
7 | ## My Question Here ?
8 | Ad sit ut blandit dolore rebum dolore erat velit gubergren invidunt rebum ipsum stet amet takimata voluptua facilisi magna aliquyam kasd est et et eirmod diam sea invidunt sea duo ipsum illum
9 |
10 | ### Also I tried that:
11 | Ad sit ut blandit dolore rebum dolore erat velit gubergren invidunt rebum ipsum stet amet takimata voluptua facilisi magna aliquyam kasd est et et eirmod diam sea invidunt sea duo ipsum illum invidun.
12 |
13 |
14 | ```xml
15 |
16 | ```
17 |
18 |
19 | ```csharp
20 | var myButton = new Button();
21 | myButton.Color = Color.Blue;
22 | ```
23 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Validations/LettersOnlyValidation.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 |
3 | namespace Plugin.InputKit.Shared.Validations
4 | {
5 | public class LettersOnlyValidation : IValidation
6 | {
7 | public string Message { get; set; } = "The field should contain only letters.";
8 |
9 | public bool AllowSpaces { get; set; } = true;
10 |
11 | public bool Validate(object value)
12 | {
13 | if (value is string text)
14 | {
15 | if (AllowSpaces)
16 | {
17 | return text.All(x => char.IsLetter(x) || char.IsWhiteSpace(x));
18 | }
19 |
20 | return text.All(x => char.IsLetter(x));
21 | }
22 |
23 | return false;
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/Windows/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 | true/PM
12 | PerMonitorV2, PerMonitor
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF/SandboxXF.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 | false
7 |
8 |
9 |
10 | portable
11 | true
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/iOS/EmptyEntryRenderer.cs:
--------------------------------------------------------------------------------
1 | using Plugin.InputKit.Platforms.iOS;
2 | using Plugin.InputKit.Shared.Controls;
3 | using UIKit;
4 | using Xamarin.Forms;
5 | using Xamarin.Forms.Platform.iOS;
6 | [assembly: ExportRenderer(typeof(EmptyEntry), typeof(EmptyEntryRenderer))]
7 |
8 | namespace Plugin.InputKit.Platforms.iOS
9 | {
10 | public class EmptyEntryRenderer : EntryRenderer
11 | {
12 | protected override void OnElementChanged(ElementChangedEventArgs e)
13 | {
14 | base.OnElementChanged(e);
15 | if (Control != null && e.NewElement != null)
16 | {
17 | Control.BorderStyle = UITextBorderStyle.None;
18 | Control.TextColor = Element.TextColor.ToUIColor();
19 | }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Shared/Helpers/ColorExtensions.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms;
2 |
3 | namespace Plugin.InputKit.Shared.Helpers
4 | {
5 | public static class ColorExtensions
6 | {
7 | ///
8 | /// Defines a surface color will be black or white.
9 | ///
10 | /// Background color
11 | /// Surface color on background color
12 | public static Color ToSurfaceColor(this Color color)
13 | {
14 | if ((color.R + color.G + color.B) >= 1.8)
15 | return Color.Black;
16 | else
17 | return Color.White;
18 | }
19 |
20 | public static Brush ToBrush(this Color color)
21 | {
22 | return new SolidColorBrush(color);
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Platforms/Windows/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.UI.Xaml;
2 |
3 | // To learn more about WinUI, the WinUI project structure,
4 | // and more about our project templates, see: http://aka.ms/winui-project-info.
5 |
6 | namespace SandboxMAUI.WinUI;
7 |
8 | ///
9 | /// Provides application-specific behavior to supplement the default Application class.
10 | ///
11 | public partial class App : MauiWinUIApplication
12 | {
13 | ///
14 | /// Initializes the singleton application object. This is the first line of authored code
15 | /// executed, and as such is the logical equivalent of main() or WinMain().
16 | ///
17 | public App()
18 | {
19 | this.InitializeComponent();
20 | }
21 |
22 | protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/src/Xamarin.Forms.InputKit/Platforms/iOS/Controls/AutoCompleteTableView.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using UIKit;
5 |
6 | namespace Plugin.InputKit.Platforms.iOS.Controls
7 | {
8 | internal class AutoCompleteTableView : UITableView
9 | {
10 | private readonly UIScrollView _parentScrollView;
11 |
12 | public AutoCompleteTableView(UIScrollView parentScrollView)
13 | {
14 | _parentScrollView = parentScrollView;
15 | }
16 |
17 | public override bool Hidden
18 | {
19 | get { return base.Hidden; }
20 | set
21 | {
22 | base.Hidden = value;
23 | if (_parentScrollView == null) return;
24 | _parentScrollView.DelaysContentTouches = !value;
25 | }
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/ApplicationStub.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace InputKit.Maui.Test.TestClasses;
4 |
5 | class ApplicationStub : IApplication
6 | {
7 | readonly List _windows = new List();
8 |
9 | public IElementHandler Handler { get; set; }
10 |
11 | public IElement Parent { get; set; }
12 |
13 | public IReadOnlyList Windows => _windows.AsReadOnly();
14 |
15 | public string Property { get; set; } = "Default";
16 | public AppTheme UserAppTheme { get; }
17 |
18 | public IWindow CreateWindow(IActivationState activationState)
19 | {
20 | throw new NotImplementedException();
21 | }
22 |
23 | public void OpenWindow(IWindow window)
24 | {
25 | _windows.Add(window);
26 | }
27 |
28 | public void CloseWindow(IWindow window)
29 | {
30 | _windows.Remove(window);
31 | }
32 |
33 | public void ThemeChanged() { }
34 | }
--------------------------------------------------------------------------------
/docs/en/components/controls/AdvancedSlider.md:
--------------------------------------------------------------------------------
1 | # InputKit: AdvancedSlider
2 | This is an enhanced version of regular slider. It includes a title, min-max value text label, sticky text that shows current value.
3 |
4 | 
5 |
6 | ### Properties
7 | - **Value**: (double) Current Selected Value, (this can be used TwoWayBinding)
8 | - **Title**: (string) Title of slider
9 | - **ValueSuffix**: (string) Suffix to be displayed near Value on Floating Label
10 | - **ValuePrefix**: (string) Prefix to be displayed near Value on Floating Label
11 | - **MinValue**: (double) Sliders' minimum value
12 | - **MaxValue**: (double) Sliders' maximum value
13 | - **StepValue**: (double) Sliders' increment value
14 | - **TextColor**: (Color) Color of Texts
15 | - **DisplayMinMaxValue**: (bool) Visibility of Minimum and Maximum value
16 |
17 | ---
18 |
19 | _Work in progress_
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Layouts/StatefulStackLayout.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Controls;
2 |
3 | namespace InputKit.Shared.Layouts
4 | {
5 |
6 | ///
7 | /// This class generated for prevent future errors with VisualStates of StackLayout. This StackLayout has VisaulStates like 'Pressed', 'Normal' etc.
8 | ///
9 | public class StatefulStackLayout : StackLayout
10 | {
11 | public string DefaultVisualState { get; set; } = VisualStateManager.CommonStates.Normal;
12 |
13 | ///
14 | /// Applies pressed effect. You can set another to make custom pressed effects.
15 | ///
16 | public Action ApplyIsPressedAction { get; set; }
17 |
18 | public void GoDefaultVisualState()
19 | {
20 | VisualStateManager.GoToState(this, DefaultVisualState);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/sandbox/SandboxXF/SandboxXF.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
18 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/TestApp.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace InputKit.Maui.Test.TestClasses;
8 |
9 | public class TestApp : Application
10 | {
11 | ContentPage _withPage;
12 | TestWindow _window;
13 |
14 | public TestApp() : base()
15 | {
16 |
17 | }
18 |
19 | public TestApp(TestWindow window)
20 | {
21 | _window = window;
22 | }
23 |
24 | public TestWindow CreateWindow() =>
25 | (TestWindow)(this as IApplication).CreateWindow(null);
26 |
27 | protected override Window CreateWindow(IActivationState activationState)
28 | {
29 | return _window ?? new TestWindow(_withPage ?? new ContentPage());
30 | }
31 |
32 | public TestWindow CreateWindow(ContentPage withPage)
33 | {
34 | _withPage = withPage;
35 | return (TestWindow)(this as IApplication).CreateWindow(null);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/sandbox/SandboxMAUI/Pages/CheckBoxPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using InputKit.Shared.Helpers;
2 | using CheckBox = InputKit.Shared.Controls.CheckBox;
3 |
4 | namespace SandboxMAUI.Pages;
5 |
6 | public partial class CheckBoxPage : ContentPage
7 | {
8 | public CheckBoxPage()
9 | {
10 | InitializeComponent();
11 | }
12 | Random rnd = new Random();
13 | private void Button_Clicked(object sender, EventArgs e)
14 | {
15 | var colors = typeof(Colors).GetFields();
16 | var color = (Color)colors[rnd.Next(colors.Length)].GetValue(null);
17 | foreach (var view in mainLayout.Children)
18 | {
19 | if (view is CheckBox chk)
20 | {
21 | chk.Color = color;
22 | }
23 | }
24 |
25 | if(sender is Button button)
26 | {
27 | button.BackgroundColor = color;
28 | button.TextColor = color.ToSurfaceColor();
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/src/InputKit.Maui/Shared/Validations/NumericValidation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace InputKit.Shared.Validations;
8 | public class NumericValidation : BindableObject, IValidation
9 | {
10 | public string Message
11 | {
12 | get => (string)GetValue(MessageProperty);
13 | set => SetValue(MessageProperty, value);
14 | }
15 |
16 | public static readonly BindableProperty MessageProperty = BindableProperty.Create(
17 | nameof(Message),
18 | typeof(string),
19 | typeof(NumericValidation),
20 | "The field should contain only numeric values.");
21 |
22 | public bool Validate(object value)
23 | {
24 | if (value is string text)
25 | {
26 | return double.TryParse(text, out _);
27 | }
28 |
29 | return false;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/test/InputKit.Maui.Test/TestClasses/HandlerStub.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Maui.Handlers;
2 | namespace InputKit.Maui.Test.TestClasses;
3 |
4 | public class HandlerStub : ViewHandler