diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj b/framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj index 65b07f1579..e23d96950e 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj +++ b/framework/src/Volo.Abp.UI.Navigation/Volo.Abp.UI.Navigation.csproj @@ -5,6 +5,8 @@ netstandard2.0;netstandard2.1;net7.0 + enable + Nullable Volo.Abp.UI.Navigation Volo.Abp.UI.Navigation $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs index 9f48aebf97..d38279b1cd 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenu.cs @@ -26,7 +26,7 @@ public class ApplicationMenu : IHasMenuItems, IHasMenuGroups _displayName = value; } } - private string _displayName; + private string _displayName = default!; /// [NotNull] @@ -44,7 +44,7 @@ public class ApplicationMenu : IHasMenuItems, IHasMenuGroups public ApplicationMenu( [NotNull] string name, - string displayName = null) + string? displayName = null) { Check.NotNullOrWhiteSpace(name, nameof(name)); diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs index 624abde425..59814ff3be 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs @@ -29,8 +29,7 @@ public static class ApplicationMenuExtensions return menuItem; } - [CanBeNull] - public static ApplicationMenuItem GetMenuItemOrNull( + public static ApplicationMenuItem? GetMenuItemOrNull( [NotNull] this IHasMenuItems menuWithItems, string menuItemName) { @@ -79,8 +78,7 @@ public static class ApplicationMenuExtensions return menuGroup; } - [CanBeNull] - public static ApplicationMenuGroup GetMenuGroupOrNull( + public static ApplicationMenuGroup? GetMenuGroupOrNull( [NotNull] this IHasMenuGroups menuWithGroups, string menuGroupName) { diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuGroup.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuGroup.cs index 8d29e99552..ab76c1c337 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuGroup.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuGroup.cs @@ -4,8 +4,8 @@ namespace Volo.Abp.UI.Navigation; public class ApplicationMenuGroup { - private string _displayName; - private string _elementId; + private string _displayName = default!; + private string? _elementId; /// /// Default value of a group item. @@ -33,7 +33,7 @@ public class ApplicationMenuGroup /// /// Can be used to render the element with a specific Id for DOM selections. /// - public string ElementId { + public string? ElementId { get { return _elementId; } set { _elementId = NormalizeElementId(value); @@ -49,7 +49,7 @@ public class ApplicationMenuGroup public ApplicationMenuGroup( [NotNull] string name, [NotNull] string displayName, - string elementId = null, + string? elementId = null, int order = DefaultOrder) { Check.NotNullOrWhiteSpace(name, nameof(name)); @@ -57,7 +57,7 @@ public class ApplicationMenuGroup Name = name; DisplayName = displayName; - ElementId = elementId; + ElementId = elementId ?? GetDefaultElementId(); Order = order; } @@ -66,7 +66,7 @@ public class ApplicationMenuGroup return "MenuGroup_" + Name; } - private string NormalizeElementId(string elementId) + private string? NormalizeElementId(string? elementId) { return elementId?.Replace(".", "_"); } diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs index 54bd591469..0c42a15c5e 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuItem.cs @@ -7,8 +7,8 @@ namespace Volo.Abp.UI.Navigation; public class ApplicationMenuItem : IHasMenuItems, IHasSimpleStateCheckers { - private string _displayName; - private string _elementId; + private string _displayName = default!; + private string? _elementId; /// /// Default value of a menu item. @@ -42,14 +42,12 @@ public class ApplicationMenuItem : IHasMenuItems, IHasSimpleStateCheckers /// The URL to navigate when this menu item is selected. /// - [CanBeNull] - public string Url { get; set; } + public string? Url { get; set; } /// /// Icon of the menu item if exists. /// - [CanBeNull] - public string Icon { get; set; } + public string? Icon { get; set; } /// /// Returns true if this menu item has no child . @@ -59,8 +57,7 @@ public class ApplicationMenuItem : IHasMenuItems, IHasSimpleStateCheckers /// Target of the menu item. Can be null, "_blank", "_self", "_parent", "_top" or a frame name for web applications. /// - [CanBeNull] - public string Target { get; set; } + public string? Target { get; set; } /// /// Can be used to disable this menu item. @@ -71,9 +68,8 @@ public class ApplicationMenuItem : IHasMenuItems, IHasSimpleStateCheckers> StateCheckers { get; } @@ -86,7 +82,7 @@ public class ApplicationMenuItem : IHasMenuItems, IHasSimpleStateCheckers /// Can be used to render the element with a specific Id for DOM selections. /// - public string ElementId { + public string? ElementId { get { return _elementId; } set { _elementId = NormalizeElementId(value); @@ -96,24 +92,24 @@ public class ApplicationMenuItem : IHasMenuItems, IHasSimpleStateCheckers /// Can be used to render the element with extra CSS classes. /// - public string CssClass { get; set; } + public string? CssClass { get; set; } /// /// Can be used to group menu items. /// - public string GroupName { get; set; } + public string? GroupName { get; set; } public ApplicationMenuItem( [NotNull] string name, [NotNull] string displayName, - string url = null, - string icon = null, + string? url = null, + string? icon = null, int order = DefaultOrder, - string target = null, - string elementId = null, - string cssClass = null, - string groupName = null, - string requiredPermissionName = null) + string? target = null, + string? elementId = null, + string? cssClass = null, + string? groupName = null, + string? requiredPermissionName = null) { Check.NotNullOrWhiteSpace(name, nameof(name)); Check.NotNullOrWhiteSpace(displayName, nameof(displayName)); @@ -158,7 +154,7 @@ public class ApplicationMenuItem : IHasMenuItems, IHasSimpleStateCheckers !x.GroupName.IsNullOrWhiteSpace()).GroupBy(x => x.GroupName)) { - var group = applicationMenu.GetMenuGroupOrNull(menuGroup.First().GroupName); + var group = applicationMenu.GetMenuGroupOrNull(menuGroup.First().GroupName!); if (group != null) { continue; diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs index ff1db3a772..17a4e684e9 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs @@ -33,7 +33,7 @@ public class AppUrlProvider : IAppUrlProvider, ITransientDependency Logger = NullLogger.Instance; } - public virtual async Task GetUrlAsync(string appName, string urlName = null) + public virtual async Task GetUrlAsync(string appName, string? urlName = null) { return await ReplacePlaceHoldersAsync( await GetConfiguredUrl( @@ -53,12 +53,12 @@ public class AppUrlProvider : IAppUrlProvider, ITransientDependency return allow; } - protected virtual async Task GetConfiguredUrl(string appName, string urlName) + protected virtual async Task GetConfiguredUrl(string appName, string? urlName) { var url = await GetUrlOrNullAsync(appName, urlName); if (!url.IsNullOrEmpty()) { - return url; + return url!; } if (!urlName.IsNullOrEmpty()) @@ -115,10 +115,10 @@ public class AppUrlProvider : IAppUrlProvider, ITransientDependency return tenantConfiguration.Name; } - return CurrentTenant.Name; + return CurrentTenant.Name!; } - public Task GetUrlOrNullAsync([NotNull] string appName, [CanBeNull] string urlName = null) + public Task GetUrlOrNullAsync([NotNull] string appName, string? urlName = null) { var app = Options.Applications[appName]; @@ -127,13 +127,13 @@ public class AppUrlProvider : IAppUrlProvider, ITransientDependency return Task.FromResult(app.RootUrl); } - var url = app.Urls.GetOrDefault(urlName); + var url = app.Urls.GetOrDefault(urlName!); if (app.RootUrl == null) { return Task.FromResult(url); } - return Task.FromResult(app.RootUrl.EnsureEndsWith('/') + url); + return Task.FromResult(app.RootUrl.EnsureEndsWith('/') + url); } } diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/ApplicationUrlInfo.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/ApplicationUrlInfo.cs index 3e57fadcae..0e00c8039c 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/ApplicationUrlInfo.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/ApplicationUrlInfo.cs @@ -4,7 +4,7 @@ namespace Volo.Abp.UI.Navigation.Urls; public class ApplicationUrlInfo { - public string RootUrl { get; set; } + public string? RootUrl { get; set; } public IDictionary Urls { get; } diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/IAppUrlProvider.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/IAppUrlProvider.cs index 51f6a56afa..9241c5f428 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/IAppUrlProvider.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/IAppUrlProvider.cs @@ -5,9 +5,9 @@ namespace Volo.Abp.UI.Navigation.Urls; public interface IAppUrlProvider { - Task GetUrlAsync([NotNull] string appName, [CanBeNull] string urlName = null); + Task GetUrlAsync([NotNull] string appName, string? urlName = null); - Task GetUrlOrNullAsync([NotNull] string appName, [CanBeNull] string urlName = null); + Task GetUrlOrNullAsync([NotNull] string appName, string? urlName = null); bool IsRedirectAllowedUrl(string url); }