Skip to content

Commit 24fb06b

Browse files
authored
Merge pull request #46 from mrpmorris/release/2.0
- Add support for .NET 7 - Drop unsupported frameworks
2 parents 38068ad + 33b01a2 commit 24fb06b

File tree

81 files changed

+180
-130
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+180
-130
lines changed

README.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ Blazor-Validation is a validation agnostic library for validating forms in Blazo
77

88
## Installation
99
You can download the latest release / pre-release NuGet packages from the official NuGet pages:
10-
- [Blazor-Validation] [![NuGet version (PeterLeslieMorris.Blazor.Validation)](https://img.shields.io/nuget/v/PeterLeslieMorris.Blazor.Validation.svg?style=flat-square)](https://www.nuget.org/packages/PeterLeslieMorris.Blazor.Validation/)
11-
- [Blazor-FluentValidation] [![NuGet version (PeterLeslieMorris.Blazor.FluentValidation)](https://img.shields.io/nuget/v/PeterLeslieMorris.Blazor.FluentValidation.svg?style=flat-square)](https://www.nuget.org/packages/PeterLeslieMorris.Blazor.FluentValidation/)
10+
- [Blazor-Validation] [![NuGet version (Morris.Blazor.Validation)](https://img.shields.io/nuget/v/Morris.Blazor.Validation.svg?style=flat-square)](https://www.nuget.org/packages/Morris.Blazor.Validation/)
11+
- [Blazor-FluentValidation] [![NuGet version (Morris.Blazor.FluentValidation)](https://img.shields.io/nuget/v/Morris.Blazor.FluentValidation.svg?style=flat-square)](https://www.nuget.org/packages/Morris.Blazor.FluentValidation/)
1212

1313
## Getting started
14-
1. Add a reference to PeterLeslieMorris.Blazor.Validation
15-
2. Inside the `<EditForm>` in your razor files, add `<PeterLeslieMorris.Blazor.Validation.Validate/>`
16-
3. In startup.cs add `using PeterLeslieMorris.Blazor.Validation` and then add the relevant validation in the `ConfigureServices` method.
14+
1. Add a reference to Morris.Blazor.Validation
15+
2. Inside the `<EditForm>` in your razor files, add `<Morris.Blazor.Validation.Validate/>`
16+
3. In startup.cs add `using Morris.Blazor.Validation` and then add the relevant validation in the `ConfigureServices` method.
1717

1818
- `services.AddFormValidation(config => config.AddDataAnnotationsValidation());`
1919
- `services.AddFormValidation(config => config.AddFluentValidation(typeof(SomeValidator).Assembly));`
@@ -102,8 +102,8 @@ More sample projects will be added as the framework develops.
102102
- Initial public release
103103

104104
[Microsoft aspdotnet blazor project]: <https://github.com/aspnet/Blazor>
105-
[Blazor-Validation]: <https://www.nuget.org/packages/PeterLeslieMorris.Blazor.Validation/>
106-
[Blazor-FluentValidation]: <https://www.nuget.org/packages/PeterLeslieMorris.Blazor.FluentValidation/>
105+
[Blazor-Validation]: <https://www.nuget.org/packages/Morris.Blazor.Validation/>
106+
[Blazor-FluentValidation]: <https://www.nuget.org/packages/Morris.Blazor.FluentValidation/>
107107
[Data Annotations Sample]: <https://github.com/mrpmorris/blazor-validation/tree/master/samples/01-DataAnnotationsValidation/>
108108
[FluentValidation Sample]: <https://github.com/mrpmorris/blazor-validation/tree/master/samples/02-FluentValidation/>
109109
[Blazored FluentValidation]: <https://github.com/Blazored/FluentValidation>
File renamed without changes.

src/Directory.Build.props Source/Lib/Directory.Build.props

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
<PropertyGroup>
44

5-
<Version>1.8.0</Version>
6-
<AssemblyVersion>1.8.0.0</AssemblyVersion>
7-
<FileVersion>1.8.0.0</FileVersion>
5+
<Version>2.0.0</Version>
6+
<AssemblyVersion>2.0.0.0</AssemblyVersion>
7+
<FileVersion>2.0.0.0</FileVersion>
88

99
<Authors>Peter Morris</Authors>
1010
<Company />
1111
<Copyright>Peter Morris</Copyright>
1212
<PackageLicenseFile></PackageLicenseFile>
1313
<PackageLicenseExpression>MIT</PackageLicenseExpression>
14-
<TargetFrameworks>netstandard2.1;net5.0;net6.0</TargetFrameworks>
14+
<TargetFrameworks>net6.0;net7.0</TargetFrameworks>
1515

1616
<PackageProjectUrl>https://github.com/mrpmorris/blazor-validation</PackageProjectUrl>
1717
<PackageIconUrl />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using FluentValidation;
2+
using Morris.Blazor.Validation;
3+
4+
namespace Morris.Blazor.FluentValidation
5+
{
6+
public static class FluentValidationPropertiesExtensions
7+
{
8+
public const string FluentValidatorKey = "FluentValidatorKey";
9+
10+
public static ValidationProperties FluentValidator<T>(this ValidationProperties properties)
11+
where T : IValidator
12+
{
13+
return properties.Value("x", "y");
14+
}
15+
}
16+
}

src/PeterLeslieMorris.Blazor.FluentValidation/FluentValidationRepository.cs Source/Lib/Morris.Blazor.FluentValidation/FluentValidationRepository.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using System.Collections.ObjectModel;
44
using System.Linq;
55

6-
namespace PeterLeslieMorris.Blazor.FluentValidation
6+
namespace Morris.Blazor.FluentValidation
77
{
88
internal class FluentValidationRepository
99
{

src/PeterLeslieMorris.Blazor.FluentValidation/FluentValidationValidatorProvider.cs Source/Lib/Morris.Blazor.FluentValidation/FluentValidationValidatorProvider.cs

+9-7
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,33 @@
22
using FluentValidation.Internal;
33
using FluentValidation.Results;
44
using Microsoft.AspNetCore.Components.Forms;
5-
using PeterLeslieMorris.Blazor.Validation;
5+
using Morris.Blazor.Validation;
66
using System;
7-
using System.Collections;
87
using System.Collections.Generic;
98
using System.Linq;
109
using System.Reflection;
1110
using System.Threading.Tasks;
1211

13-
namespace PeterLeslieMorris.Blazor.FluentValidation
12+
namespace Morris.Blazor.FluentValidation
1413
{
1514
public class FluentValidationValidatorProvider : IValidationProvider
1615
{
1716
public void InitializeEditContext(
1817
EditContext editContext,
19-
IServiceProvider serviceProvider)
18+
IServiceProvider serviceProvider,
19+
ValidationProperties properties)
2020
{
2121
if (editContext == null)
2222
throw new ArgumentNullException(nameof(editContext));
2323
if (serviceProvider == null)
2424
throw new ArgumentNullException(nameof(serviceProvider));
25+
properties ??= ValidationProperties.Set;
2526

2627
var messages = new ValidationMessageStore(editContext);
2728
editContext.OnValidationRequested +=
2829
(sender, eventArgs) =>
2930
{
30-
_ = ValidateModel((EditContext)sender, messages, serviceProvider);
31+
_ = ValidateModel((EditContext)sender, messages, serviceProvider, properties);
3132
};
3233

3334
editContext.OnFieldChanged +=
@@ -40,7 +41,8 @@ public void InitializeEditContext(
4041
private async Task ValidateModel(
4142
EditContext editContext,
4243
ValidationMessageStore messages,
43-
IServiceProvider serviceProvider)
44+
IServiceProvider serviceProvider,
45+
ValidationProperties properties)
4446
{
4547
if (editContext == null)
4648
throw new ArgumentNullException(nameof(editContext));
@@ -89,7 +91,7 @@ private void GetParentObjectAndPropertyName(
8991
Type modelType = model.GetType();
9092
while (propertyPathParts.Count > 1)
9193
{
92-
var name = propertyPathParts.Dequeue();
94+
string name = propertyPathParts.Dequeue();
9395

9496
string propertyIndexString = null;
9597
int bracketIndex = name.IndexOf('[');

src/PeterLeslieMorris.Blazor.FluentValidation/PeterLeslieMorris.Blazor.FluentValidation.csproj Source/Lib/Morris.Blazor.FluentValidation/Morris.Blazor.FluentValidation.csproj

+10-6
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,22 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="FluentValidation" Version="11.0.0" />
11+
<SupportedPlatform Include="browser" />
1212
</ItemGroup>
1313

1414
<ItemGroup>
15-
<ProjectReference Include="..\PeterLeslieMorris.Blazor.Validation\PeterLeslieMorris.Blazor.Validation.csproj" />
15+
<PackageReference Include="FluentValidation" Version="11.4.0" />
1616
</ItemGroup>
1717

1818
<ItemGroup>
19-
<None Include="blazor-fluentvalidation.png">
20-
<Pack>True</Pack>
21-
<PackagePath></PackagePath>
22-
</None>
19+
<ProjectReference Include="..\Morris.Blazor.Validation\Morris.Blazor.Validation.csproj" />
20+
</ItemGroup>
21+
22+
<ItemGroup>
23+
<None Include="blazor-fluentvalidation.png">
24+
<Pack>True</Pack>
25+
<PackagePath></PackagePath>
26+
</None>
2327
</ItemGroup>
2428

2529
</Project>

src/PeterLeslieMorris.Blazor.FluentValidation/ValidationConfigurationFluentValidationExtensions.cs Source/Lib/Morris.Blazor.FluentValidation/ValidationConfigurationFluentValidationExtensions.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
using FluentValidation;
22
using Microsoft.Extensions.DependencyInjection;
33
using Microsoft.Extensions.DependencyInjection.Extensions;
4-
using PeterLeslieMorris.Blazor.FluentValidation;
4+
using Morris.Blazor.FluentValidation;
55
using System;
66
using System.Collections.Generic;
77
using System.Linq;
88
using System.Reflection;
99

10-
namespace PeterLeslieMorris.Blazor.Validation
10+
namespace Morris.Blazor.Validation
1111
{
1212
public static class ValidationConfigurationFluentValidationExtensions
1313
{

src/PeterLeslieMorris.Blazor.Validation/DataAnnotationsValidatorProvider.cs Source/Lib/Morris.Blazor.Validation/DataAnnotationsValidatorProvider.cs

+6-5
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@
22
using Microsoft.Extensions.DependencyInjection;
33
using System;
44

5-
namespace PeterLeslieMorris.Blazor.Validation
5+
namespace Morris.Blazor.Validation
66
{
77
public class DataAnnotationsValidatorProvider : IValidationProvider
88
{
99
public void InitializeEditContext(
1010
EditContext editContext,
11-
IServiceProvider serviceProvider)
11+
IServiceProvider serviceProvider,
12+
ValidationProperties properties)
1213
{
13-
#if NET6_0_OR_GREATER
14-
editContext.EnableDataAnnotationsValidation();
14+
#if NET7_0_OR_GREATER
15+
editContext.EnableDataAnnotationsValidation(serviceProvider);
1516
#else
16-
editContext.AddDataAnnotationsValidation();
17+
editContext.EnableDataAnnotationsValidation();
1718
#endif
1819
}
1920
}

src/PeterLeslieMorris.Blazor.Validation/Extensions/EditContextExtensions.cs Source/Lib/Morris.Blazor.Validation/Extensions/EditContextExtensions.cs

+3-11
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using System.Linq;
66
using System.Reflection;
77

8-
namespace PeterLeslieMorris.Blazor.Validation.Extensions
8+
namespace Morris.Blazor.Validation.Extensions
99
{
1010
public static class EditContextExtensions
1111
{
@@ -115,24 +115,16 @@ private static void NotifyPropertyChanged(
115115
IsModifiedProperty.SetValue(fieldState, originalIsModified);
116116
}
117117

118-
private static Object GetFieldState(EditContext editContext, FieldIdentifier fieldIdentifier)
118+
private static object GetFieldState(EditContext editContext, FieldIdentifier fieldIdentifier)
119119
{
120-
#if (NETSTANDARD2_0 || NETSTANDARD2_1)
121-
Object[] parameters = new object[] { fieldIdentifier, true };
122-
#elif (NET5_0_OR_GREATER)
123-
Object[] parameters = new object[] { fieldIdentifier };
124-
#endif
120+
var parameters = new object[] { fieldIdentifier };
125121
EnsureGetFieldStateMethod(editContext);
126122
return GetFieldStateMethod.Invoke(editContext, parameters);
127123
}
128124

129125
private static void EnsureGetFieldStateMethod(EditContext editContext)
130126
{
131-
#if (NETSTANDARD2_0 || NETSTANDARD2_1)
132-
var methodname = "GetFieldState";
133-
#elif (NET5_0_OR_GREATER)
134127
var methodname = "GetOrAddFieldState";
135-
#endif
136128

137129
if (GetFieldStateMethod == null)
138130
{
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
using Microsoft.AspNetCore.Components.Forms;
22
using System;
33

4-
namespace PeterLeslieMorris.Blazor.Validation
4+
namespace Morris.Blazor.Validation
55
{
66
public interface IValidationProvider
77
{
8-
void InitializeEditContext(EditContext editContext, IServiceProvider serviceProvider);
8+
void InitializeEditContext(EditContext editContext, IServiceProvider serviceProvider, ValidationProperties properties);
99
}
1010
}

src/PeterLeslieMorris.Blazor.Validation/IValidationProviderRepository.cs Source/Lib/Morris.Blazor.Validation/IValidationProviderRepository.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33

4-
namespace PeterLeslieMorris.Blazor.Validation
4+
namespace Morris.Blazor.Validation
55
{
66
public interface IValidationProviderRepository
77
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<Project Sdk="Microsoft.NET.Sdk.Razor">
2+
3+
<PropertyGroup>
4+
<IsPackable>true</IsPackable>
5+
<LangVersion>10</LangVersion>
6+
<RazorLangVersion>3.0</RazorLangVersion>
7+
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
8+
<PackageId>Morris.Blazor.Validation</PackageId>
9+
<Product>Morris.Blazor.Validation</Product>
10+
<Description>Validation for Blazor</Description>
11+
<PackageTags>Blazor Validation</PackageTags>
12+
<PackageIcon>blazor-validation.png</PackageIcon>
13+
</PropertyGroup>
14+
15+
<ItemGroup>
16+
<SupportedPlatform Include="browser" />
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.0" Condition="'$(TargetFramework)' == 'net7.0'"/>
21+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.0" Condition="'$(TargetFramework)' == 'net6.0'"/>
22+
</ItemGroup>
23+
24+
<ItemGroup>
25+
<None Include="blazor-validation.png">
26+
<Pack>True</Pack>
27+
<PackagePath></PackagePath>
28+
</None>
29+
</ItemGroup>
30+
31+
</Project>

src/PeterLeslieMorris.Blazor.Validation/Validate.cs Source/Lib/Morris.Blazor.Validation/Validate.cs

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using System;
44
using System.Threading.Tasks;
55

6-
namespace PeterLeslieMorris.Blazor.Validation
6+
namespace Morris.Blazor.Validation
77
{
88
public class Validate : ComponentBase
99
{
@@ -13,6 +13,9 @@ public class Validate : ComponentBase
1313
[Inject]
1414
IValidationProviderRepository Repository { get; set; }
1515

16+
[Parameter]
17+
public ValidationProperties ValidationProperties { get; set; }
18+
1619
[Inject]
1720
IServiceProvider ServiceProvider { get; set; }
1821

@@ -36,7 +39,7 @@ private void EditContextChanged()
3639
foreach (Type providerType in Repository.All)
3740
{
3841
var validationProvider = (IValidationProvider)ServiceProvider.GetService(providerType);
39-
validationProvider.InitializeEditContext(CurrentEditContext, ServiceProvider);
42+
validationProvider.InitializeEditContext(CurrentEditContext, ServiceProvider, ValidationProperties);
4043
}
4144
}
4245
}

src/PeterLeslieMorris.Blazor.Validation/ValidationConfiguration.cs Source/Lib/Morris.Blazor.Validation/ValidationConfiguration.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Microsoft.Extensions.DependencyInjection;
22
using System;
33

4-
namespace PeterLeslieMorris.Blazor.Validation
4+
namespace Morris.Blazor.Validation
55
{
66
public class ValidationConfiguration
77
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Collections.ObjectModel;
4+
5+
namespace Morris.Blazor.Validation
6+
{
7+
public class ValidationProperties
8+
{
9+
private readonly Dictionary<string, object> MutableValues = new Dictionary<string, object>();
10+
11+
public readonly IReadOnlyDictionary<string, object> Values;
12+
13+
private ValidationProperties()
14+
{
15+
Values = new ReadOnlyDictionary<string, object>(MutableValues);
16+
}
17+
18+
public static ValidationProperties Set => new ValidationProperties();
19+
20+
public ValidationProperties Value(string name, object value)
21+
{
22+
if (string.IsNullOrWhiteSpace(name))
23+
throw new ArgumentException(message: "Required", paramName: nameof(name));
24+
if (value is null)
25+
throw new ArgumentNullException(nameof(value));
26+
27+
MutableValues.Add(name, value);
28+
return this;
29+
}
30+
}
31+
32+
}

src/PeterLeslieMorris.Blazor.Validation/ValidationProviderRepository.cs Source/Lib/Morris.Blazor.Validation/ValidationProviderRepository.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Collections.Generic;
33
using System.Linq;
44

5-
namespace PeterLeslieMorris.Blazor.Validation
5+
namespace Morris.Blazor.Validation
66
{
77
public class ValidationProviderRepository : IValidationProviderRepository
88
{

src/PeterLeslieMorris.Blazor.Validation/ValidationServiceCollectionExtensions.cs Source/Lib/Morris.Blazor.Validation/ValidationServiceCollectionExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Microsoft.Extensions.DependencyInjection;
22
using System;
33

4-
namespace PeterLeslieMorris.Blazor.Validation
4+
namespace Morris.Blazor.Validation
55
{
66
public static class ValidationServiceCollectionExtensions
77
{

0 commit comments

Comments
 (0)