Skip to content

Commit 03b1c97

Browse files
authored
.NET 8 Support (#344)
1 parent 1fd4097 commit 03b1c97

12 files changed

Lines changed: 140 additions & 49 deletions

File tree

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
22

33
<PropertyGroup>
4-
<TargetFramework>net7.0</TargetFramework>
4+
<TargetFramework>net8.0</TargetFramework>
55
<Nullable>disable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
77
</PropertyGroup>
@@ -11,9 +11,9 @@
1111
</ItemGroup>
1212

1313
<ItemGroup>
14-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.1" />
15-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.1" PrivateAssets="all" />
16-
<PackageReference Include="System.Net.Http.Json" Version="7.0.0" />
14+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.0" />
15+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.0" PrivateAssets="all" />
16+
<PackageReference Include="System.Net.Http.Json" Version="8.0.0" />
1717
</ItemGroup>
1818

1919
</Project>

CodeBeam.MudBlazor.Extensions.UnitTests/CodeBeam.MudBlazor.Extensions.UnitTests.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net7.0</TargetFramework>
4+
<TargetFramework>net8.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>disable</Nullable>
77

88
<!--<IsPackable>false</IsPackable>-->
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="bunit" Version="1.16.2" />
12+
<PackageReference Include="bunit" Version="1.26.64" />
1313
<PackageReference Include="CodecovUploader" Version="0.3.2" />
14-
<PackageReference Include="FluentAssertions" Version="6.9.0" />
15-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
14+
<PackageReference Include="FluentAssertions" Version="6.12.0" />
15+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
1616
<PackageReference Include="Moq" Version="4.18.4" />
1717
<PackageReference Include="NUnit" Version="3.13.3" />
1818
<PackageReference Include="NUnit3TestAdapter" Version="4.3.1" />

CodeBeam.MudBlazor.Extensions.UnitTests/Mocks/MockBreakpointService.cs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace MudExtensions.UnitTests.Mocks
77
{
88
#pragma warning disable CS1998 // Justification - Implementing IResizeListenerService
9+
[Obsolete("Replaced by IBrowserViewportService. Remove in v7.")]
910
public class MockBreakpointService : IBreakpointService
1011
{
1112
private int _width, _height;
@@ -43,6 +44,9 @@ public async Task<bool> IsMediaSize(Breakpoint breakpoint)
4344
if (breakpoint == Breakpoint.None)
4445
return false;
4546

47+
if (breakpoint == Breakpoint.Always)
48+
return true;
49+
4650
return IsMediaSize(breakpoint, await GetBreakpoint());
4751
}
4852

@@ -51,6 +55,9 @@ public bool IsMediaSize(Breakpoint breakpoint, Breakpoint reference)
5155
if (breakpoint == Breakpoint.None)
5256
return false;
5357

58+
if (breakpoint == Breakpoint.Always)
59+
return true;
60+
5461
return breakpoint switch
5562
{
5663
Breakpoint.Xs => reference == Breakpoint.Xs,
@@ -72,19 +79,30 @@ public bool IsMediaSize(Breakpoint breakpoint, Breakpoint reference)
7279

7380
public async Task<Breakpoint> GetBreakpoint() => GetBreakpointInternal();
7481

75-
public Task<BreakpointServiceSubscribeResult> Subscribe(Action<Breakpoint> callback) => Task.FromResult(new BreakpointServiceSubscribeResult(Guid.NewGuid(),Breakpoint.Sm));
76-
public Task<BreakpointServiceSubscribeResult> Subscribe(Action<Breakpoint> callback, ResizeOptions options) => Task.FromResult(new BreakpointServiceSubscribeResult(Guid.NewGuid(), Breakpoint.Sm));
77-
public Task<bool> Unsubscribe(Guid subscriptionId) => Task.FromResult(true);
82+
[Obsolete($"Use {nameof(SubscribeAsync)} instead. This will be removed in v7.")]
83+
public Task<BreakpointServiceSubscribeResult> Subscribe(Action<Breakpoint> callback) => SubscribeAsync(callback);
84+
85+
public Task<BreakpointServiceSubscribeResult> SubscribeAsync(Action<Breakpoint> callback) => Task.FromResult(new BreakpointServiceSubscribeResult(Guid.NewGuid(), Breakpoint.Sm));
86+
87+
[Obsolete($"Use {nameof(SubscribeAsync)} instead. This will be removed in v7.")]
88+
public Task<BreakpointServiceSubscribeResult> Subscribe(Action<Breakpoint> callback, ResizeOptions options) => SubscribeAsync(callback, options);
89+
90+
public Task<BreakpointServiceSubscribeResult> SubscribeAsync(Action<Breakpoint> callback, ResizeOptions options) => Task.FromResult(new BreakpointServiceSubscribeResult(Guid.NewGuid(), Breakpoint.Sm));
91+
92+
[Obsolete($"Use {nameof(UnsubscribeAsync)} instead. This will be removed in v7.")]
93+
public Task<bool> Unsubscribe(Guid subscriptionId) => UnsubscribeAsync(subscriptionId);
94+
95+
public Task<bool> UnsubscribeAsync(Guid subscriptionId) => Task.FromResult(true);
7896

7997
private Breakpoint GetBreakpointInternal()
8098
{
81-
if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Xl])
99+
if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Xl])
82100
return Breakpoint.Xl;
83-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Lg])
101+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Lg])
84102
return Breakpoint.Lg;
85-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Md])
103+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Md])
86104
return Breakpoint.Md;
87-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Sm])
105+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Sm])
88106
return Breakpoint.Sm;
89107
else
90108
return Breakpoint.Xs;

CodeBeam.MudBlazor.Extensions.UnitTests/Mocks/MockJsApiServices.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ namespace MudExtensions.UnitTests.Mocks
66
/// <summary>
77
/// Mock for scroll listener
88
/// </summary>
9-
public class MockJsApiServices : IJsApiService
10-
{
11-
public ValueTask CopyToClipboardAsync(string text) => ValueTask.CompletedTask;
9+
//public class MockJsApiService : IJsApiService
10+
//{
11+
// public ValueTask CopyToClipboardAsync(string text) => ValueTask.CompletedTask;
1212

13-
public ValueTask Open(string link, string target) => ValueTask.CompletedTask;
13+
// public ValueTask Open(string link, string target) => ValueTask.CompletedTask;
1414

15-
public ValueTask OpenInNewTabAsync(string url) => ValueTask.CompletedTask;
16-
}
15+
// public ValueTask UpdateStyleProperty(string elementId, string propertyName, object value) => ValueTask.CompletedTask;
16+
17+
// public ValueTask OpenInNewTabAsync(string url) => ValueTask.CompletedTask;
18+
//}
1719
}

CodeBeam.MudBlazor.Extensions.UnitTests/Mocks/MockResizeListenerService.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace MudExtensions.UnitTests.Mocks
77
{
88
#pragma warning disable CS1998 // Justification - Implementing IResizeListenerService
9+
[Obsolete("Replaced by IBrowserViewportService. Remove in v7.")]
910
public class MockResizeListenerService : IResizeListenerService
1011
{
1112
private int _width, _height;
@@ -83,15 +84,15 @@ public bool IsMediaSize(Breakpoint breakpoint, Breakpoint reference)
8384

8485
private Breakpoint GetBreakpointInternal()
8586
{
86-
if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Xxl])
87+
if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Xxl])
8788
return Breakpoint.Xxl;
88-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Xl])
89+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Xl])
8990
return Breakpoint.Xl;
90-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Lg])
91+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Lg])
9192
return Breakpoint.Lg;
92-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Md])
93+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Md])
9394
return Breakpoint.Md;
94-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Sm])
95+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Sm])
9596
return Breakpoint.Sm;
9697
else
9798
return Breakpoint.Xs;

CodeBeam.MudBlazor.Extensions.UnitTests/Mocks/MockResizeService.cs

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace MudExtensions.UnitTests.Mocks
77
{
88
#pragma warning disable CS1998 // Justification - Implementing IResizeListenerService
9+
[Obsolete("Replaced by IBrowserViewportService. Remove in v7.")]
910
public class MockResizeService : IResizeService
1011
{
1112
private int _width, _height;
@@ -72,19 +73,30 @@ public bool IsMediaSize(Breakpoint breakpoint, Breakpoint reference)
7273

7374
public async Task<Breakpoint> GetBreakpoint() => GetBreakpointInternal();
7475

75-
public Task<Guid> Subscribe(Action<BrowserWindowSize> callback) => Task.FromResult(new Guid());
76-
public Task<Guid> Subscribe(Action<BrowserWindowSize> callback, ResizeOptions options) => Task.FromResult(new Guid());
77-
public Task<bool> Unsubscribe(Guid subscriptionId) => Task.FromResult(true);
76+
[Obsolete($"Use {nameof(SubscribeAsync)} instead. This will be removed in v7.")]
77+
public Task<Guid> Subscribe(Action<BrowserWindowSize> callback) => SubscribeAsync(callback);
78+
79+
public Task<Guid> SubscribeAsync(Action<BrowserWindowSize> callback) => Task.FromResult(new Guid());
80+
81+
[Obsolete($"Use {nameof(SubscribeAsync)} instead. This will be removed in v7.")]
82+
public Task<Guid> Subscribe(Action<BrowserWindowSize> callback, ResizeOptions options) => SubscribeAsync(callback, options);
83+
84+
public Task<Guid> SubscribeAsync(Action<BrowserWindowSize> callback, ResizeOptions options) => Task.FromResult(new Guid());
85+
86+
[Obsolete($"Use {nameof(UnsubscribeAsync)} instead. This will be removed in v7.")]
87+
public Task<bool> Unsubscribe(Guid subscriptionId) => UnsubscribeAsync(subscriptionId);
88+
89+
public Task<bool> UnsubscribeAsync(Guid subscriptionId) => Task.FromResult(true);
7890

7991
private Breakpoint GetBreakpointInternal()
8092
{
81-
if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Xl])
93+
if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Xl])
8294
return Breakpoint.Xl;
83-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Lg])
95+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Lg])
8496
return Breakpoint.Lg;
85-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Md])
97+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Md])
8698
return Breakpoint.Md;
87-
else if (_width >= ResizeListenerService.BreakpointDefinitions[Breakpoint.Sm])
99+
else if (_width >= BreakpointGlobalOptions.DefaultBreakpointDefinitions[Breakpoint.Sm])
88100
return Breakpoint.Sm;
89101
else
90102
return Breakpoint.Xs;
@@ -98,4 +110,39 @@ public ValueTask DisposeAsync()
98110
}
99111
}
100112
#pragma warning restore CS1998
113+
114+
internal class BreakpointGlobalOptions
115+
{
116+
/// <summary>
117+
/// Default breakpoint definitions
118+
/// </summary>
119+
internal static Dictionary<Breakpoint, int> DefaultBreakpointDefinitions { get; set; } = new()
120+
{
121+
[Breakpoint.Xxl] = 2560,
122+
[Breakpoint.Xl] = 1920,
123+
[Breakpoint.Lg] = 1280,
124+
[Breakpoint.Md] = 960,
125+
[Breakpoint.Sm] = 600,
126+
[Breakpoint.Xs] = 0,
127+
};
128+
129+
/// <summary>
130+
/// Retrieves the default or user-defined breakpoint definitions based on the provided <paramref name="options"/>.
131+
/// If user-defined breakpoint definitions are available in the <paramref name="options"/>, a copy is returned to prevent unintended modifications.
132+
/// Otherwise, the default <see cref="DefaultBreakpointDefinitions"/> breakpoint definitions are returned.
133+
/// </summary>
134+
/// <param name="options">The resize options containing breakpoint definitions, if any.</param>
135+
/// <returns>A dictionary containing the breakpoint definitions.</returns>
136+
internal static Dictionary<Breakpoint, int> GetDefaultOrUserDefinedBreakpointDefinition(ResizeOptions options)
137+
{
138+
if (options.BreakpointDefinitions is not null && options.BreakpointDefinitions.Count != 0)
139+
{
140+
// Copy as we don't want any unexpected modification
141+
return options.BreakpointDefinitions.ToDictionary(entry => entry.Key, entry => entry.Value);
142+
}
143+
144+
return DefaultBreakpointDefinitions.ToDictionary(entry => entry.Key, entry => entry.Value);
145+
}
146+
}
147+
101148
}

CodeBeam.MudBlazor.Extensions/CodeBeam.MudBlazor.Extensions.csproj

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net6.0;net7.0</TargetFrameworks>
4+
<TargetFrameworks>net6.0;net7.0;net8.0</TargetFrameworks>
55
<Nullable>disable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<PackageLicenseExpression>MIT</PackageLicenseExpression>
@@ -25,18 +25,23 @@
2525
<ItemGroup>
2626
<PackageReference Include="BuildBundlerMinifier" Version="3.2.449" />
2727
<PackageReference Include="CsvHelper" Version="30.0.1" />
28-
<PackageReference Include="MudBlazor" Version="6.2.1" />
28+
<PackageReference Include="MudBlazor" Version="6.12.0" />
2929
<PackageReference Include="ZXing.Net" Version="0.16.9" />
3030
</ItemGroup>
3131

3232
<ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' ">
33-
<PackageReference Include="Microsoft.AspNetCore.Components" Version="6.0.11" />
34-
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="6.0.11" />
33+
<PackageReference Include="Microsoft.AspNetCore.Components" Version="6.0.*" />
34+
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="6.0.*" />
3535
</ItemGroup>
3636

3737
<ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' ">
38-
<PackageReference Include="Microsoft.AspNetCore.Components" Version="7.0.1.*" />
39-
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="7.0.1.*" />
38+
<PackageReference Include="Microsoft.AspNetCore.Components" Version="7.0.*" />
39+
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="7.0.*" />
40+
</ItemGroup>
41+
42+
<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
43+
<PackageReference Include="Microsoft.AspNetCore.Components" Version="8.0.*" />
44+
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.*" />
4045
</ItemGroup>
4146

4247
<!--Uncomment it on development and debug to compile scss and generate min.css on rebuild-->

ComponentViewer.Docs/ComponentViewer.Docs.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<TargetFramework>net7.0</TargetFramework>
4+
<TargetFramework>net8.0</TargetFramework>
55
<Nullable>disable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
77
</PropertyGroup>
@@ -12,8 +12,8 @@
1212
</ItemGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="7.0.1" />
16-
<PackageReference Include="MudBlazor" Version="6.2.1" />
15+
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.*" />
16+
<PackageReference Include="MudBlazor" Version="6.12.0" />
1717
</ItemGroup>
1818

1919
<ItemGroup>

ComponentViewer.Docs/Pages/Index.razor

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
@namespace ComponentViewer.Docs.Pages
33
@using MudExtensions.Enums
44
@using ComponentViewer.Docs.Shared
5+
@using System.Runtime.Versioning
56

67
@inject IScrollManager ScrollManager
78

@@ -127,6 +128,14 @@
127128

128129
</MudGrid>
129130
}
131+
132+
<MudContainer Class="mt-16" MaxWidth="MaxWidth.Large">
133+
<MudToolBar DisableGutters="true" Dense="true">
134+
<MudText Typo="Typo.body1"><b>Copyright © 2022-@DateTime.Now.Year CodeBeam.</b> @Version</MudText>
135+
<MudSpacer />
136+
<MudText Typo="Typo.body1">Running on <b>.NET</b> @Environment.Version.ToString()</MudText>
137+
</MudToolBar>
138+
</MudContainer>
130139
</MudContainer>
131140

132141
<style>
@@ -207,6 +216,15 @@
207216
return true;
208217
}
209218

219+
private string Version
220+
{
221+
get
222+
{
223+
var v = typeof(MudAnimate).Assembly.GetName().Version;
224+
return $"v {v.Major}.{v.Minor}.{v.Build}";
225+
}
226+
}
227+
210228
List<Tuple<string, string>> _extendedComponents = new()
211229
{
212230
new("MudListExtended", "The extended MudList component."),

ComponentViewer.Docs/Shared/MainLayout.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<MudIconButton Class="white-text" Icon="@Icons.Material.Filled.Menu" OnClick="@(() => _drawerOpen = !_drawerOpen)"></MudIconButton>
1313
<MudIconButton Class="white-text" Icon="@Icons.Custom.Brands.MudBlazor" Href="https://mudblazor.com/" Target="_blank" />
1414
<MudSpacer />
15-
<MudText Style="font-weight: 900; color: white">CodeBeam MudExtensions @Version</MudText>
15+
<MudText Style="font-weight: 900; color: white">CodeBeam MudExtensions</MudText>
1616
<MudSpacer />
1717
<div class="d-flex">
1818
<MudToggleIconButton @bind-Toggled="IsDarkMode" Class="white-text" Icon="@Icons.Material.Filled.DarkMode" ToggledIcon="@Icons.Material.Filled.LightMode"/>

0 commit comments

Comments
 (0)