diff --git a/samples/MADE.Samples/MADE.Samples.Droid/MADE.Samples.Droid.csproj b/samples/MADE.Samples/MADE.Samples.Droid/MADE.Samples.Droid.csproj
index 375059f..b352abd 100644
--- a/samples/MADE.Samples/MADE.Samples.Droid/MADE.Samples.Droid.csproj
+++ b/samples/MADE.Samples/MADE.Samples.Droid/MADE.Samples.Droid.csproj
@@ -63,14 +63,20 @@
7.1.2
-
-
-
-
-
-
-
-
+
+ 10.4.0
+
+
+
+
+
+ 1.6.0-preview1
+
+
+
+
+
+
5.0.2
diff --git a/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Assets/InputValidator/InputValidatorFluentValidationCode.txt b/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Assets/InputValidator/InputValidatorFluentValidationCode.txt
new file mode 100644
index 0000000..4b1fa37
--- /dev/null
+++ b/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Assets/InputValidator/InputValidatorFluentValidationCode.txt
@@ -0,0 +1,24 @@
+public FluentValidatorCollection FluentValidationValidators { get; } = new(GetFluentValidators());
+
+public string FluentValidationInputText
+{
+ get => fluentValidationInputText;
+ set => this.SetProperty(ref fluentValidationInputText, value);
+}
+
+private static IEnumerable> GetFluentValidators()
+{
+ var requiredValidator = new InlineValidator();
+ requiredValidator
+ .RuleFor(x => x)
+ .NotEmpty()
+ .WithMessage("A value is required.");
+
+ var maxLengthValidator = new InlineValidator();
+ maxLengthValidator
+ .RuleFor(x => x.Length)
+ .LessThanOrEqualTo(16)
+ .WithMessage("The length of the value must be less than or equal to 16 characters.");
+
+ return new[] { requiredValidator, maxLengthValidator };
+}
\ No newline at end of file
diff --git a/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Assets/InputValidator/InputValidatorFluentValidationXaml.txt b/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Assets/InputValidator/InputValidatorFluentValidationXaml.txt
new file mode 100644
index 0000000..46e3429
--- /dev/null
+++ b/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Assets/InputValidator/InputValidatorFluentValidationXaml.txt
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
diff --git a/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Pages/InputValidatorPage.xaml b/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Pages/InputValidatorPage.xaml
index 24213c7..bdfe428 100644
--- a/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Pages/InputValidatorPage.xaml
+++ b/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Pages/InputValidatorPage.xaml
@@ -50,6 +50,7 @@
+
@@ -75,6 +76,7 @@
@@ -90,6 +92,25 @@
+
+
+
+
+
+
+
+
diff --git a/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/ViewModels/InputValidatorPageViewModel.cs b/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/ViewModels/InputValidatorPageViewModel.cs
index e33d637..e3ba28f 100644
--- a/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/ViewModels/InputValidatorPageViewModel.cs
+++ b/samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/ViewModels/InputValidatorPageViewModel.cs
@@ -1,7 +1,9 @@
namespace MADE.Samples.Features.Samples.ViewModels
{
using System;
+ using System.Collections.Generic;
using CommunityToolkit.Mvvm.Messaging;
+ using FluentValidation;
using MADE.Data.Validation;
using MADE.Data.Validation.Validators;
using MADE.UI.Views.Navigation;
@@ -11,13 +13,15 @@ public class InputValidatorPageViewModel : PageViewModel
{
private string inputText;
private DateTimeOffset? inputDate;
+ private string fluentValidationInputText;
public InputValidatorPageViewModel(INavigationService navigationService, IMessenger messenger)
: base(navigationService, messenger)
{
}
- public ValidatorCollection InputTextValidators { get; } = new ValidatorCollection { new RequiredValidator(), new MaxLengthValidator(16) };
+ public ValidatorCollection InputTextValidators { get; } =
+ new ValidatorCollection { new RequiredValidator(), new MaxLengthValidator(16) };
public string InputText
{
@@ -25,12 +29,41 @@ public string InputText
set => this.SetProperty(ref inputText, value);
}
- public ValidatorCollection InputDateValidators { get; } = new ValidatorCollection { new RequiredValidator(), new BetweenValidator(DateTimeOffset.Now.AddDays(-7), DateTimeOffset.Now.AddDays(7)) };
+ public ValidatorCollection InputDateValidators { get; } = new ValidatorCollection
+ {
+ new RequiredValidator(),
+ new BetweenValidator(DateTimeOffset.Now.AddDays(-7), DateTimeOffset.Now.AddDays(7))
+ };
public DateTimeOffset? InputDate
{
get => inputDate;
set => this.SetProperty(ref inputDate, value);
}
+
+ public FluentValidatorCollection FluentValidationValidators { get; } = new(GetFluentValidators());
+
+ public string FluentValidationInputText
+ {
+ get => fluentValidationInputText;
+ set => this.SetProperty(ref fluentValidationInputText, value);
+ }
+
+ private static IEnumerable> GetFluentValidators()
+ {
+ var requiredValidator = new InlineValidator();
+ requiredValidator
+ .RuleFor(x => x)
+ .NotEmpty()
+ .WithMessage("A value is required.");
+
+ var maxLengthValidator = new InlineValidator();
+ maxLengthValidator
+ .RuleFor(x => x.Length)
+ .LessThanOrEqualTo(16)
+ .WithMessage("The length of the value must be less than or equal to 16 characters.");
+
+ return new[] { requiredValidator, maxLengthValidator };
+ }
}
}
\ No newline at end of file
diff --git a/samples/MADE.Samples/MADE.Samples.Shared/MADE.Samples.Shared.projitems b/samples/MADE.Samples/MADE.Samples.Shared/MADE.Samples.Shared.projitems
index 7187f7c..e448a0a 100644
--- a/samples/MADE.Samples/MADE.Samples.Shared/MADE.Samples.Shared.projitems
+++ b/samples/MADE.Samples/MADE.Samples.Shared/MADE.Samples.Shared.projitems
@@ -101,6 +101,11 @@
+
+ Designer
+
+
+
Designer
@@ -111,6 +116,11 @@
+
+ Designer
+
+
+
Designer
diff --git a/samples/MADE.Samples/MADE.Samples.UWP/MADE.Samples.UWP.csproj b/samples/MADE.Samples/MADE.Samples.UWP/MADE.Samples.UWP.csproj
index b773ac4..50c1e70 100644
--- a/samples/MADE.Samples/MADE.Samples.UWP/MADE.Samples.UWP.csproj
+++ b/samples/MADE.Samples/MADE.Samples.UWP/MADE.Samples.UWP.csproj
@@ -8,14 +8,20 @@
7.1.2
-
-
-
-
-
-
-
-
+
+ 10.4.0
+
+
+
+
+
+ 1.6.0-preview1
+
+
+
+
+
+
5.0.2
diff --git a/samples/MADE.Samples/MADE.Samples.Wasm/MADE.Samples.Wasm.csproj b/samples/MADE.Samples/MADE.Samples.Wasm/MADE.Samples.Wasm.csproj
index ffd0fa2..534d297 100644
--- a/samples/MADE.Samples/MADE.Samples.Wasm/MADE.Samples.Wasm.csproj
+++ b/samples/MADE.Samples/MADE.Samples.Wasm/MADE.Samples.Wasm.csproj
@@ -42,14 +42,16 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/MADE.Samples/MADE.Samples.iOS/MADE.Samples.iOS.csproj b/samples/MADE.Samples/MADE.Samples.iOS/MADE.Samples.iOS.csproj
index 868dcd0..3231da0 100644
--- a/samples/MADE.Samples/MADE.Samples.iOS/MADE.Samples.iOS.csproj
+++ b/samples/MADE.Samples/MADE.Samples.iOS/MADE.Samples.iOS.csproj
@@ -118,14 +118,20 @@
7.1.2
-
-
-
-
-
-
-
-
+
+ 10.4.0
+
+
+
+
+
+ 1.6.0-preview1
+
+
+
+
+
+
5.0.2
diff --git a/src/MADE.UI.Controls.DropDownList/MADE.UI.Controls.DropDownList.csproj b/src/MADE.UI.Controls.DropDownList/MADE.UI.Controls.DropDownList.csproj
index 7b1e40c..8239fd0 100644
--- a/src/MADE.UI.Controls.DropDownList/MADE.UI.Controls.DropDownList.csproj
+++ b/src/MADE.UI.Controls.DropDownList/MADE.UI.Controls.DropDownList.csproj
@@ -18,8 +18,8 @@
-
-
+
+
diff --git a/src/MADE.UI.Controls.FilePicker/MADE.UI.Controls.FilePicker.csproj b/src/MADE.UI.Controls.FilePicker/MADE.UI.Controls.FilePicker.csproj
index 7ee998a..c986a85 100644
--- a/src/MADE.UI.Controls.FilePicker/MADE.UI.Controls.FilePicker.csproj
+++ b/src/MADE.UI.Controls.FilePicker/MADE.UI.Controls.FilePicker.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/src/MADE.UI.Controls.Validator/IInputValidator.cs b/src/MADE.UI.Controls.Validator/IInputValidator.cs
index 7a27dc1..c990205 100644
--- a/src/MADE.UI.Controls.Validator/IInputValidator.cs
+++ b/src/MADE.UI.Controls.Validator/IInputValidator.cs
@@ -29,6 +29,6 @@ public interface IInputValidator
///
/// Gets or sets the validators to run on the input.
///
- ValidatorCollection Validators { get; set; }
+ IValidatorCollection Validators { get; set; }
}
}
diff --git a/src/MADE.UI.Controls.Validator/InputValidator.cs b/src/MADE.UI.Controls.Validator/InputValidator.cs
index fd9d321..dfcaa7a 100644
--- a/src/MADE.UI.Controls.Validator/InputValidator.cs
+++ b/src/MADE.UI.Controls.Validator/InputValidator.cs
@@ -30,9 +30,9 @@ public partial class InputValidator : ContentControl, IInputValidator
///
public static readonly DependencyProperty ValidatorsProperty = DependencyProperty.Register(
nameof(Validators),
- typeof(ValidatorCollection),
+ typeof(IValidatorCollection),
typeof(InputValidator),
- new PropertyMetadata(default(ValidatorCollection), (o, args) => ((InputValidator)o).InvokeValidators()));
+ new PropertyMetadata(default(IValidatorCollection), (o, args) => ((InputValidator)o).InvokeValidators()));
///
/// Identifies the dependency property.
@@ -79,9 +79,9 @@ public object Input
///
/// Gets or sets the validators to run on the input.
///
- public ValidatorCollection Validators
+ public IValidatorCollection Validators
{
- get => (ValidatorCollection)this.GetValue(ValidatorsProperty);
+ get => (IValidatorCollection)this.GetValue(ValidatorsProperty);
set => this.SetValue(ValidatorsProperty, value);
}
diff --git a/src/MADE.UI.Controls.Validator/MADE.UI.Controls.Validator.csproj b/src/MADE.UI.Controls.Validator/MADE.UI.Controls.Validator.csproj
index 9aaa7d0..2c6f74f 100644
--- a/src/MADE.UI.Controls.Validator/MADE.UI.Controls.Validator.csproj
+++ b/src/MADE.UI.Controls.Validator/MADE.UI.Controls.Validator.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/src/MADE.UI.Data.Converters/MADE.UI.Data.Converters.csproj b/src/MADE.UI.Data.Converters/MADE.UI.Data.Converters.csproj
index 38b3c73..68ecd7e 100644
--- a/src/MADE.UI.Data.Converters/MADE.UI.Data.Converters.csproj
+++ b/src/MADE.UI.Data.Converters/MADE.UI.Data.Converters.csproj
@@ -19,7 +19,7 @@
-
+
diff --git a/src/MADE.UI.Styling/MADE.UI.Styling.csproj b/src/MADE.UI.Styling/MADE.UI.Styling.csproj
index 00fcbe9..15ece31 100644
--- a/src/MADE.UI.Styling/MADE.UI.Styling.csproj
+++ b/src/MADE.UI.Styling/MADE.UI.Styling.csproj
@@ -26,7 +26,7 @@
-
+
diff --git a/src/MADE.UI.ViewManagement/MADE.UI.ViewManagement.csproj b/src/MADE.UI.ViewManagement/MADE.UI.ViewManagement.csproj
index 16cd4ee..bda99c0 100644
--- a/src/MADE.UI.ViewManagement/MADE.UI.ViewManagement.csproj
+++ b/src/MADE.UI.ViewManagement/MADE.UI.ViewManagement.csproj
@@ -18,7 +18,7 @@
-
+