diff --git a/Directory.Packages.props b/Directory.Packages.props
index 67c100c20b..a6d8cfdc4f 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -140,6 +140,9 @@
+
+
+
diff --git a/docs/en/Community-Articles/2023-11-05-EF-Core-8-Complex-Types/POST.MD b/docs/en/Community-Articles/2023-11-05-EF-Core-8-Complex-Types/POST.MD
index 06289387e5..696bbaf07c 100644
--- a/docs/en/Community-Articles/2023-11-05-EF-Core-8-Complex-Types/POST.MD
+++ b/docs/en/Community-Articles/2023-11-05-EF-Core-8-Complex-Types/POST.MD
@@ -105,7 +105,7 @@ And update the database:
dotnet ef database update
````
-If you check the fields of the `Customers` table in your dayabase, you will see the following fields:
+If you check the fields of the `Customers` table in your database, you will see the following fields:
* `Id`
* `Name`
diff --git a/docs/en/Community-Articles/2023-11-06-Blazor-Fullstack-Web-Ui/Post.md b/docs/en/Community-Articles/2023-11-06-Blazor-Fullstack-Web-Ui/Post.md
index a346b6f084..c3203d481d 100644
--- a/docs/en/Community-Articles/2023-11-06-Blazor-Fullstack-Web-Ui/Post.md
+++ b/docs/en/Community-Articles/2023-11-06-Blazor-Fullstack-Web-Ui/Post.md
@@ -1,6 +1,9 @@
# Blazor's History and Full-stack Web UI
-Blazor is a web framework that allows developers to build interactive web applications using .NET instead of JavaScript. The first version of Blazor was **released on May 14, 2020**. Since its initial release, Blazor has evolved with the new versions. Until now, six different versions have been declared. Sometimes, it can be not very clear to see the differences between these approaches. First, let's try to understand these.
+
+
+
+Blazor is a web framework that allows developers to build interactive web applications using .NET instead of JavaScript. The first version of Blazor was released on May 14, 2020. Since its initial release, Blazor has evolved with the new versions. Until now, six different versions have been declared. Sometimes, it can be not very clear to see the differences between these approaches. First, let's try to understand these.
* **Blazor-Server**: >> *Loads fast at first* >> In this version, heavy things are done in the server. Browsers are thin clients and download a small page for the first load. The page updates are done via SignalR connection. This was released with .NET Core 3.
* **Blazor WebAssembly (WASM):** >> *Loads slow at first* >> In this version, some binary files are being downloaded to the browser. This approach takes longer initialization time than the "Server" approach. The hard work is done on the browser.
@@ -40,7 +43,7 @@ You can switch between two rendering modes and even mix them on the same page. W
- ## How it works?
+## How it works?
### Rendering on Server
@@ -50,25 +53,27 @@ You can add `WebComponentRenderMode.Server` to your Blazor components so that th
-And sure you can add `WebComponentRenderMode.Server` to your page level, and the complete page will be rendered as a server component. All inputs on this page can work as an interactive server component like SPA mode.
+And sure, you can add `WebComponentRenderMode.Server` to your page level, and the complete page will be rendered as a server component. All inputs on this page can work as an interactive server component like SPA mode.

-### Rendering on client
+### Rendering on Client
You can switch to WebAssembly mode by writing `WebComponentRenderMode.WebAssembly` attribute to your page. By doing so, the whole page should run interactively using WebAssembly. This time there's no server connection anymore because it loads the binaries (WebAssembly runtimes) at the page load.

-## How it works?
+
+## Enabling the Blazor Fullstack UI?
To enable Blazor Full-stack Web UI, you need to write `net8.0;net7.0-browser` into the `TargetFrameworks` area of your `csproj` file. These two keywords change your app like this; `net8.0` framework renders on the server, and `net7.0-browser` framework renders on the browser.

-## Let the System decide on WebAssembly or Server approach
+
+## Let the System Decide WebAssembly or Server Approach
You can let the system decide whether it uses `WebAssembly` or `Server`. This can be done with the `Auto` mode of the `WebComponentRenderMode`. In this case, it will not load binary files (WebAssembly files) for the initial page that has `WebComponentRenderMode.Server` attribute, but whenever the user navigates to a page that has `WebComponentRenderMode.WebAssembly`, it will download the runtimes. This will allow us to load the initial page very fast, and when we need interactivity, we can switch to `WebAssembly` and wait for the binaries to download. But this download will be done one time because it will be cached.
@@ -80,10 +85,10 @@ You can let the system decide whether it uses `WebAssembly` or `Server`. This ca
I summarized the new generation Blazor in a very simple way. This architecture will be useful to everyone who uses Blazor.
-
+---
*Resources:*
-* You can check out Dan Roth's GitHub issue 👉 [github.com/dotnet/aspnetcore/issues/46636](https://github.com/dotnet/aspnetcore/issues/46636).
+* You can check Dan Roth's GitHub issue 👉 [github.com/dotnet/aspnetcore/issues/46636](https://github.com/dotnet/aspnetcore/issues/46636).
* Steven Sanderson's YouTube video is very good for understanding these concepts 👉 [Blazor United Prototype Video](https://youtu.be/48G_CEGXZZM).
diff --git a/docs/en/Community-Articles/2023-11-06-Blazor-Fullstack-Web-Ui/cover-image.png b/docs/en/Community-Articles/2023-11-06-Blazor-Fullstack-Web-Ui/cover-image.png
new file mode 100644
index 0000000000..b3f1d6920e
Binary files /dev/null and b/docs/en/Community-Articles/2023-11-06-Blazor-Fullstack-Web-Ui/cover-image.png differ
diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln
index cd003b7f07..42339a60ac 100644
--- a/framework/Volo.Abp.sln
+++ b/framework/Volo.Abp.sln
@@ -459,6 +459,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Imaging.AspNetCore
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Maui.Client", "src\Volo.Abp.Maui.Client\Volo.Abp.Maui.Client.csproj", "{F19A6E0C-F719-4ED9-A024-14E4B8D40883}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Imaging.SkiaSharp", "src\Volo.Abp.Imaging.SkiaSharp\Volo.Abp.Imaging.SkiaSharp.csproj", "{198683D0-7DC6-40F2-B81B-8E446E70A9DE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Imaging.SkiaSharp.Tests", "test\Volo.Abp.Imaging.SkiaSharp.Tests\Volo.Abp.Imaging.SkiaSharp.Tests.csproj", "{DFAF8763-D1D6-4EB4-B459-20E31007FE2F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -1369,6 +1373,14 @@ Global
{F19A6E0C-F719-4ED9-A024-14E4B8D40883}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F19A6E0C-F719-4ED9-A024-14E4B8D40883}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F19A6E0C-F719-4ED9-A024-14E4B8D40883}.Release|Any CPU.Build.0 = Release|Any CPU
+ {198683D0-7DC6-40F2-B81B-8E446E70A9DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {198683D0-7DC6-40F2-B81B-8E446E70A9DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {198683D0-7DC6-40F2-B81B-8E446E70A9DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {198683D0-7DC6-40F2-B81B-8E446E70A9DE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DFAF8763-D1D6-4EB4-B459-20E31007FE2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DFAF8763-D1D6-4EB4-B459-20E31007FE2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DFAF8763-D1D6-4EB4-B459-20E31007FE2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DFAF8763-D1D6-4EB4-B459-20E31007FE2F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1600,6 +1612,8 @@ Global
{62B2B8C9-8F24-4D31-894F-C1F0728D32AB} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{983B0136-384B-4439-B374-31111FFAA286} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{F19A6E0C-F719-4ED9-A024-14E4B8D40883} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
+ {198683D0-7DC6-40F2-B81B-8E446E70A9DE} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
+ {DFAF8763-D1D6-4EB4-B459-20E31007FE2F} = {447C8A77-E5F0-4538-8687-7383196D04EA}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}
diff --git a/framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpAspNetCoreSignalRModule.cs b/framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpAspNetCoreSignalRModule.cs
index 90795891f9..541b36aa14 100644
--- a/framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpAspNetCoreSignalRModule.cs
+++ b/framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpAspNetCoreSignalRModule.cs
@@ -78,7 +78,7 @@ public class AbpAspNetCoreSignalRModule : AbpModule
{
foreach (var routePattern in routePatterns)
{
- options.IgnoredUrls.AddIfNotContains(x => routePattern.StartsWith(x), () => routePattern);
+ options.IgnoredUrls.AddIfNotContains(x => routePattern.StartsWith(x, StringComparison.OrdinalIgnoreCase), () => routePattern);
}
});
diff --git a/framework/src/Volo.Abp.AspNetCore/Microsoft/Extensions/DependencyInjection/CookieAuthenticationOptionsExtensions.cs b/framework/src/Volo.Abp.AspNetCore/Microsoft/Extensions/DependencyInjection/CookieAuthenticationOptionsExtensions.cs
index 28537f5179..15e353431e 100644
--- a/framework/src/Volo.Abp.AspNetCore/Microsoft/Extensions/DependencyInjection/CookieAuthenticationOptionsExtensions.cs
+++ b/framework/src/Volo.Abp.AspNetCore/Microsoft/Extensions/DependencyInjection/CookieAuthenticationOptionsExtensions.cs
@@ -28,8 +28,8 @@ public static class CookieAuthenticationOptionsExtensions
var logger = principalContext.HttpContext.RequestServices.GetRequiredService>();
- var tokenExpiresAt = principalContext.Properties.Items[".Token.expires_at"];
- if (DateTimeOffset.TryParseExact(tokenExpiresAt, "o", null, DateTimeStyles.RoundtripKind, out var expiresAt) &&
+ var tokenExpiresAt = principalContext.Properties.GetString(".Token.expires_at");
+ if (!tokenExpiresAt.IsNullOrWhiteSpace() && DateTimeOffset.TryParseExact(tokenExpiresAt, "o", null, DateTimeStyles.RoundtripKind, out var expiresAt) &&
expiresAt < DateTimeOffset.UtcNow.Subtract(advance.Value))
{
logger.LogInformation("The access_token is expired.");
diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs
index 0c797a8dc2..0987a8fd8f 100644
--- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs
+++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs
@@ -100,12 +100,12 @@ public class AbpAuditingMiddleware : IMiddleware, ITransientDependency
}
if (!AuditingOptions.IsEnabledForIntegrationServices &&
- context.Request.Path.Value.StartsWith($"/{AbpAspNetCoreConsts.DefaultIntegrationServiceApiPrefix}/"))
+ context.Request.Path.Value.StartsWith($"/{AbpAspNetCoreConsts.DefaultIntegrationServiceApiPrefix}/", StringComparison.OrdinalIgnoreCase))
{
return true;
}
- if (AspNetCoreAuditingOptions.IgnoredUrls.Any(x => context.Request.Path.Value.StartsWith(x)))
+ if (AspNetCoreAuditingOptions.IgnoredUrls.Any(x => context.Request.Path.Value.StartsWith(x, StringComparison.OrdinalIgnoreCase)))
{
return true;
}
diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/AbpSecurityHeadersMiddleware.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/AbpSecurityHeadersMiddleware.cs
index aea345159a..ae2e3b173b 100644
--- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/AbpSecurityHeadersMiddleware.cs
+++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/AbpSecurityHeadersMiddleware.cs
@@ -33,7 +33,7 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
var requestAcceptTypeHtml = context.Request.Headers["Accept"].Any(x =>
x!.Contains("text/html") || x.Contains("*/*") || x.Contains("application/xhtml+xml"));
-
+
var endpoint = context.GetEndpoint();
if (endpoint?.Metadata.GetMetadata() != null)
@@ -42,11 +42,11 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
return;
}
- if (!requestAcceptTypeHtml
- || !Options.Value.UseContentSecurityPolicyHeader
- || await AlwaysIgnoreContentTypes(context)
+ if (!requestAcceptTypeHtml
+ || !Options.Value.UseContentSecurityPolicyHeader
+ || await AlwaysIgnoreContentTypes(context)
|| endpoint == null
- || Options.Value.IgnoredScriptNoncePaths.Any(x => context.Request.Path.StartsWithSegments(x.EnsureStartsWith('/'))))
+ || Options.Value.IgnoredScriptNoncePaths.Any(x => context.Request.Path.StartsWithSegments(x.EnsureStartsWith('/'), StringComparison.OrdinalIgnoreCase)))
{
AddOtherHeaders(context);
await next.Invoke(context);
@@ -71,7 +71,7 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
{
return Task.CompletedTask;
}
-
+
if (context.Response.StatusCode is < 200 or > 299)
{
return Task.CompletedTask;
@@ -85,7 +85,7 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
AddOtherHeaders(context);
await next.Invoke(context);
}
-
+
private async Task AlwaysIgnoreContentTypes(HttpContext context)
{
foreach (var selector in Options.Value.IgnoredScriptNonceSelectors)
@@ -95,7 +95,7 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
return true;
}
}
-
+
return false;
}
@@ -130,7 +130,7 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
var newScriptSrcValue = scriptSrcValue + nonceStr;
return Options.Value.ContentSecurityPolicyValue!.Replace(scriptSrcValue!, newScriptSrcValue);
}
-
+
protected virtual void AddHeader(HttpContext context, string key, string value, bool overrideIfExists = false)
{
@@ -142,4 +142,4 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
context.Response.Headers.AddIfNotContains(new KeyValuePair(key, value));
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AbpUnitOfWorkMiddleware.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AbpUnitOfWorkMiddleware.cs
index 894595e2b7..186501b4ac 100644
--- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AbpUnitOfWorkMiddleware.cs
+++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AbpUnitOfWorkMiddleware.cs
@@ -1,4 +1,5 @@
-using System.Linq;
+using System;
+using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Options;
@@ -38,6 +39,6 @@ public class AbpUnitOfWorkMiddleware : IMiddleware, ITransientDependency
private bool IsIgnoredUrl(HttpContext context)
{
return context.Request.Path.Value != null &&
- _options.IgnoredUrls.Any(x => context.Request.Path.Value.StartsWith(x));
+ _options.IgnoredUrls.Any(x => context.Request.Path.Value.StartsWith(x, StringComparison.OrdinalIgnoreCase));
}
}
diff --git a/framework/src/Volo.Abp.Imaging.SkiaSharp/FodyWeavers.xml b/framework/src/Volo.Abp.Imaging.SkiaSharp/FodyWeavers.xml
new file mode 100644
index 0000000000..1715698ccd
--- /dev/null
+++ b/framework/src/Volo.Abp.Imaging.SkiaSharp/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Imaging.SkiaSharp/FodyWeavers.xsd b/framework/src/Volo.Abp.Imaging.SkiaSharp/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/framework/src/Volo.Abp.Imaging.SkiaSharp/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo.Abp.Imaging.SkiaSharp.csproj b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo.Abp.Imaging.SkiaSharp.csproj
new file mode 100644
index 0000000000..857cb0f92f
--- /dev/null
+++ b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo.Abp.Imaging.SkiaSharp.csproj
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ netstandard2.0;netstandard2.1;net8.0
+ enable
+ Nullable
+ Volo.Abp.Imaging.SkiaSharp
+ $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/AbpImagingSkiaSharpModule.cs b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/AbpImagingSkiaSharpModule.cs
new file mode 100644
index 0000000000..79fc4314aa
--- /dev/null
+++ b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/AbpImagingSkiaSharpModule.cs
@@ -0,0 +1,8 @@
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Imaging;
+
+[DependsOn(typeof(AbpImagingAbstractionsModule))]
+public class AbpImagingSkiaSharpModule : AbpModule
+{
+}
diff --git a/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpImageResizerContributor.cs b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpImageResizerContributor.cs
new file mode 100644
index 0000000000..760acd0916
--- /dev/null
+++ b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpImageResizerContributor.cs
@@ -0,0 +1,98 @@
+using System;
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Options;
+using SkiaSharp;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Http;
+
+namespace Volo.Abp.Imaging;
+
+public class SkiaSharpImageResizerContributor : IImageResizerContributor, ITransientDependency
+{
+ protected SkiaSharpResizerOptions Options { get; }
+
+ public SkiaSharpImageResizerContributor(IOptions options)
+ {
+ Options = options.Value;
+ }
+
+ public virtual async Task> TryResizeAsync(byte[] bytes, ImageResizeArgs resizeArgs, string? mimeType = null, CancellationToken cancellationToken = default)
+ {
+ if (!mimeType.IsNullOrWhiteSpace() && !CanResize(mimeType))
+ {
+ return new ImageResizeResult(bytes, ImageProcessState.Unsupported);
+ }
+
+ using (var memoryStream = new MemoryStream(bytes))
+ {
+ var result = await TryResizeAsync(memoryStream, resizeArgs, mimeType, cancellationToken);
+
+ if (result.State != ImageProcessState.Done)
+ {
+ return new ImageResizeResult(bytes, result.State);
+ }
+
+ var newBytes = await result.Result.GetAllBytesAsync(cancellationToken);
+
+ result.Result.Dispose();
+
+ return new ImageResizeResult(newBytes, result.State);
+ }
+ }
+
+ public virtual async Task> TryResizeAsync(Stream stream, ImageResizeArgs resizeArgs, string? mimeType = null, CancellationToken cancellationToken = default)
+ {
+ if (!mimeType.IsNullOrWhiteSpace() && !CanResize(mimeType))
+ {
+ return new ImageResizeResult(stream, ImageProcessState.Unsupported);
+ }
+
+ var (memoryBitmapStream, memorySkCodecStream) = await CreateMemoryStream(stream);
+
+ using (var original = SKBitmap.Decode(memoryBitmapStream))
+ {
+ using (var resized = original.Resize(new SKImageInfo(resizeArgs.Width, resizeArgs.Height), Options.SKFilterQuality))
+ {
+ using (var image = SKImage.FromBitmap(resized))
+ {
+ using (var codec = SKCodec.Create(memorySkCodecStream))
+ {
+ var memoryStream = new MemoryStream();
+ image.Encode(codec.EncodedFormat, Options.Quality).SaveTo(memoryStream);
+ return new ImageResizeResult(memoryStream, ImageProcessState.Done);
+ }
+ }
+ }
+ }
+ }
+
+ protected virtual async Task<(MemoryStream, MemoryStream)> CreateMemoryStream(Stream stream)
+ {
+ var streamPosition = stream.Position;
+
+ var memoryBitmapStream = new MemoryStream();
+ var memorySkCodecStream = new MemoryStream();
+
+ await stream.CopyToAsync(memoryBitmapStream);
+ stream.Position = streamPosition;
+ await stream.CopyToAsync(memorySkCodecStream);
+ stream.Position = streamPosition;
+
+ memoryBitmapStream.Position = 0;
+ memorySkCodecStream.Position = 0;
+
+ return (memoryBitmapStream, memorySkCodecStream);
+ }
+
+ protected virtual bool CanResize(string? mimeType)
+ {
+ return mimeType switch {
+ MimeTypes.Image.Jpeg => true,
+ MimeTypes.Image.Png => true,
+ MimeTypes.Image.Webp => true,
+ _ => false
+ };
+ }
+}
diff --git a/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpResizerOptions.cs b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpResizerOptions.cs
new file mode 100644
index 0000000000..6bc220feb1
--- /dev/null
+++ b/framework/src/Volo.Abp.Imaging.SkiaSharp/Volo/Abp/Imaging/SkiaSharpResizerOptions.cs
@@ -0,0 +1,16 @@
+using SkiaSharp;
+
+namespace Volo.Abp.Imaging;
+
+public class SkiaSharpResizerOptions
+{
+ public SKFilterQuality SKFilterQuality { get; set; }
+
+ public int Quality { get; set; }
+
+ public SkiaSharpResizerOptions()
+ {
+ SKFilterQuality = SKFilterQuality.None;
+ Quality = 75;
+ }
+}
diff --git a/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo.Abp.Imaging.SkiaSharp.Tests.csproj b/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo.Abp.Imaging.SkiaSharp.Tests.csproj
new file mode 100644
index 0000000000..3272fc325a
--- /dev/null
+++ b/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo.Abp.Imaging.SkiaSharp.Tests.csproj
@@ -0,0 +1,19 @@
+
+
+
+
+
+ net8.0
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs b/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs
new file mode 100644
index 0000000000..7fce00d3ac
--- /dev/null
+++ b/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs
@@ -0,0 +1,14 @@
+using Volo.Abp.Autofac;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Imaging;
+
+[DependsOn(
+ typeof(AbpAutofacModule),
+ typeof(AbpImagingSkiaSharpModule),
+ typeof(AbpTestBaseModule)
+)]
+public class AbpImagingSkiaSharpTestModule : AbpModule
+{
+
+}
diff --git a/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo/Abp/Imaging/AbpImagingSkiaSharpTestModule.cs b/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo/Abp/Imaging/AbpImagingSkiaSharpTestModule.cs
new file mode 100644
index 0000000000..953e8c4b3a
--- /dev/null
+++ b/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo/Abp/Imaging/AbpImagingSkiaSharpTestModule.cs
@@ -0,0 +1,11 @@
+using Volo.Abp.Testing;
+
+namespace Volo.Abp.Imaging;
+
+public abstract class AbpImagingSkiaSharpTestBase : AbpIntegratedTest
+{
+ protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
+ {
+ options.UseAutofac();
+ }
+}
diff --git a/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo/Abp/Imaging/SkiaSharpImageResizerTests.cs b/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo/Abp/Imaging/SkiaSharpImageResizerTests.cs
new file mode 100644
index 0000000000..460c83bf5b
--- /dev/null
+++ b/framework/test/Volo.Abp.Imaging.SkiaSharp.Tests/Volo/Abp/Imaging/SkiaSharpImageResizerTests.cs
@@ -0,0 +1,75 @@
+using System.IO;
+using System.Threading.Tasks;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.Imaging;
+
+public class SkiaSharpImageResizerTests : AbpImagingSkiaSharpTestBase
+{
+ public IImageResizer ImageResizer { get; }
+
+ public SkiaSharpImageResizerTests()
+ {
+ ImageResizer = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task Should_Resize_Jpg()
+ {
+ await using var jpegImage = ImageFileHelper.GetJpgTestFileStream();
+ var resizedImage = await ImageResizer.ResizeAsync(jpegImage, new ImageResizeArgs(100, 100));
+
+ resizedImage.ShouldNotBeNull();
+ resizedImage.State.ShouldBe(ImageProcessState.Done);
+ resizedImage.Result.Length.ShouldBeLessThan(jpegImage.Length);
+
+ resizedImage.Result.Dispose();
+ }
+
+ [Fact]
+ public async Task Should_Resize_Png()
+ {
+ await using var pngImage = ImageFileHelper.GetPngTestFileStream();
+ var resizedImage = await ImageResizer.ResizeAsync(pngImage, new ImageResizeArgs(100, 100));
+
+ resizedImage.ShouldNotBeNull();
+ resizedImage.State.ShouldBe(ImageProcessState.Done);
+ resizedImage.Result.Length.ShouldBeLessThan(pngImage.Length);
+
+ resizedImage.Result.Dispose();
+ }
+
+ [Fact]
+ public async Task Should_Resize_Webp()
+ {
+ await using var webpImage = ImageFileHelper.GetWebpTestFileStream();
+ var resizedImage = await ImageResizer.ResizeAsync(webpImage, new ImageResizeArgs(100, 100));
+
+ resizedImage.ShouldNotBeNull();
+ resizedImage.State.ShouldBe(ImageProcessState.Done);
+ resizedImage.Result.Length.ShouldBeLessThan(webpImage.Length);
+
+ resizedImage.Result.Dispose();
+ }
+
+ [Fact]
+ public async Task Should_Resize_Stream_And_Byte_Array_The_Same()
+ {
+ await using var jpegImage = ImageFileHelper.GetJpgTestFileStream();
+ var resizedImage1 = await ImageResizer.ResizeAsync(jpegImage, new ImageResizeArgs(100, 100));
+ var resizedImage2 = await ImageResizer.ResizeAsync(await jpegImage.GetAllBytesAsync(), new ImageResizeArgs(100, 100));
+
+ resizedImage1.ShouldNotBeNull();
+ resizedImage1.State.ShouldBe(ImageProcessState.Done);
+ resizedImage1.Result.Length.ShouldBeLessThan(jpegImage.Length);
+
+ resizedImage2.ShouldNotBeNull();
+ resizedImage2.State.ShouldBe(ImageProcessState.Done);
+ resizedImage2.Result.LongLength.ShouldBeLessThan(jpegImage.Length);
+
+ resizedImage1.Result.Length.ShouldBe(resizedImage2.Result.LongLength);
+
+ resizedImage1.Result.Dispose();
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Web/Bundling/PrismjsStyleBundleContributorDocsExtension.cs b/modules/docs/src/Volo.Docs.Web/Bundling/PrismjsStyleBundleContributorDocsExtension.cs
index eb0436c5ff..f23f4bb803 100644
--- a/modules/docs/src/Volo.Docs.Web/Bundling/PrismjsStyleBundleContributorDocsExtension.cs
+++ b/modules/docs/src/Volo.Docs.Web/Bundling/PrismjsStyleBundleContributorDocsExtension.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Linq;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
namespace Volo.Docs.Bundling
@@ -7,7 +8,11 @@ namespace Volo.Docs.Bundling
{
public override void ConfigureBundle(BundleConfigurationContext context)
{
- context.Files.ReplaceOne("/libs/prismjs/themes/prism.css","/libs/prismjs/themes/prism-okaidia.css");
+ var prismCss = context.Files.FirstOrDefault(x => x.FileName == "/libs/prismjs/themes/prism.css");
+ if (prismCss != null)
+ {
+ prismCss.FileName = "/libs/prismjs/themes/prism-okaidia.css";
+ }
context.Files.AddIfNotContains("/libs/prismjs/plugins/line-highlight/prism-line-highlight.css");
context.Files.AddIfNotContains("/libs/prismjs/plugins/toolbar/prism-toolbar.css");
context.Files.AddIfNotContains("/libs/prismjs/plugins/diff-highlight/prism-diff-highlight.css");
diff --git a/npm/ng-packs/.eslintrc.json b/npm/ng-packs/.eslintrc.json
index 3a15786c57..8649f90b2d 100644
--- a/npm/ng-packs/.eslintrc.json
+++ b/npm/ng-packs/.eslintrc.json
@@ -2,6 +2,9 @@
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nx"],
+ "rules": {
+ "@typescript-eslint/no-explicit-any": "off"
+ },
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
@@ -25,9 +28,11 @@
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nx/typescript"],
"rules": {
+ "@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-namespace": "off",
"@typescript-eslint/no-empty-function": ["warn"],
"@typescript-eslint/no-empty-interface": ["warn"]
+
}
},
{
diff --git a/npm/ng-packs/.gitignore b/npm/ng-packs/.gitignore
index b542c2b12d..a13172ed2f 100644
--- a/npm/ng-packs/.gitignore
+++ b/npm/ng-packs/.gitignore
@@ -56,3 +56,6 @@ Thumbs.db
*.internal.*
.angular
+
+.nx/
+.nx/cache
\ No newline at end of file
diff --git a/npm/ng-packs/packages/account/src/lib/account.module.ts b/npm/ng-packs/packages/account/src/lib/account.module.ts
index 304cc31242..58df433232 100644
--- a/npm/ng-packs/packages/account/src/lib/account.module.ts
+++ b/npm/ng-packs/packages/account/src/lib/account.module.ts
@@ -16,10 +16,11 @@ import { AuthenticationFlowGuard } from './guards/authentication-flow.guard';
import { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';
import { ResetPasswordComponent } from './components/reset-password/reset-password.component';
import { RE_LOGIN_CONFIRMATION_TOKEN } from './tokens';
-import { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';
+
import { ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS } from './tokens/extensions.token';
import { AccountExtensionsGuard } from './guards/extensions.guard';
import { PersonalSettingsHalfRowComponent } from './components/personal-settings/personal-settings-half-row.component';
+import { ExtensibleModule } from "@abp/ng.components/extensible";
const declarations = [
LoginComponent,
@@ -40,7 +41,7 @@ const declarations = [
ThemeSharedModule,
NgbDropdownModule,
NgxValidateCoreModule,
- UiExtensionsModule,
+ ExtensibleModule,
],
exports: [...declarations],
})
diff --git a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings-half-row.component.ts b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings-half-row.component.ts
index d7920984ce..2515983e48 100644
--- a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings-half-row.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings-half-row.component.ts
@@ -3,7 +3,7 @@ import {
EXTENSIONS_FORM_PROP,
FormProp,
EXTENSIBLE_FORM_VIEW_PROVIDER,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { UntypedFormGroup } from '@angular/forms';
@Component({
diff --git a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts
index f41058d06c..a40041551a 100644
--- a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts
+++ b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts
@@ -11,7 +11,7 @@ import {
EXTENSIONS_IDENTIFIER,
FormPropData,
generateFormFromProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { eAccountComponents } from '../../enums';
@Component({
diff --git a/npm/ng-packs/packages/account/src/lib/defaults/default-personal-settings-form-props.ts b/npm/ng-packs/packages/account/src/lib/defaults/default-personal-settings-form-props.ts
index 59c196f2bd..b9463ae336 100644
--- a/npm/ng-packs/packages/account/src/lib/defaults/default-personal-settings-form-props.ts
+++ b/npm/ng-packs/packages/account/src/lib/defaults/default-personal-settings-form-props.ts
@@ -1,4 +1,4 @@
-import { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';
+import { ePropType, FormProp } from '@abp/ng.components/extensible';
import { UpdateProfileDto } from '@abp/ng.account.core/proxy';
import { Validators } from '@angular/forms';
import { PersonalSettingsHalfRowComponent } from '../components/personal-settings/personal-settings-half-row.component';
diff --git a/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts b/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts
index 43345bffc3..ebeae81a67 100644
--- a/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts
+++ b/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts
@@ -9,7 +9,7 @@ import {
getObjectExtensionEntitiesFromStore,
mapEntitiesToContributors,
mergeWithDefaultProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import {
ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS,
diff --git a/npm/ng-packs/packages/account/src/lib/models/config-options.ts b/npm/ng-packs/packages/account/src/lib/models/config-options.ts
index c45389492f..11964f8da8 100644
--- a/npm/ng-packs/packages/account/src/lib/models/config-options.ts
+++ b/npm/ng-packs/packages/account/src/lib/models/config-options.ts
@@ -1,5 +1,5 @@
import { eAccountComponents } from '../enums';
-import { EditFormPropContributorCallback } from '@abp/ng.theme.shared/extensions';
+import { EditFormPropContributorCallback } from '@abp/ng.components/extensible';
import { UpdateProfileDto } from '@abp/ng.account.core/proxy';
export interface AccountConfigOptions {
@@ -9,4 +9,4 @@ export interface AccountConfigOptions {
}
export type AccountEditFormPropContributors = Partial<{
[eAccountComponents.PersonalSettings]: EditFormPropContributorCallback[];
-}>;
\ No newline at end of file
+}>;
diff --git a/npm/ng-packs/packages/account/src/lib/resolvers/extensions.resolver.ts b/npm/ng-packs/packages/account/src/lib/resolvers/extensions.resolver.ts
index 19e29b1e54..b3aec858b8 100644
--- a/npm/ng-packs/packages/account/src/lib/resolvers/extensions.resolver.ts
+++ b/npm/ng-packs/packages/account/src/lib/resolvers/extensions.resolver.ts
@@ -6,7 +6,7 @@ import {
getObjectExtensionEntitiesFromStore,
mapEntitiesToContributors,
mergeWithDefaultProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { eAccountComponents } from '../enums';
import { ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS, DEFAULT_ACCOUNT_FORM_PROPS } from '../tokens';
import { ResolveFn } from '@angular/router';
diff --git a/npm/ng-packs/packages/account/src/lib/tokens/extensions.token.ts b/npm/ng-packs/packages/account/src/lib/tokens/extensions.token.ts
index 78acb7feaa..d8baf6f623 100644
--- a/npm/ng-packs/packages/account/src/lib/tokens/extensions.token.ts
+++ b/npm/ng-packs/packages/account/src/lib/tokens/extensions.token.ts
@@ -1,7 +1,7 @@
import { eAccountComponents } from '../enums';
import { DEFAULT_PERSONAL_SETTINGS_UPDATE_FORM_PROPS } from '../defaults/default-personal-settings-form-props';
import { InjectionToken } from '@angular/core';
-import { EditFormPropContributorCallback } from '@abp/ng.theme.shared/extensions';
+import { EditFormPropContributorCallback } from '@abp/ng.components/extensible';
import { UpdateProfileDto } from '@abp/ng.account.core/proxy';
export const DEFAULT_ACCOUNT_FORM_PROPS = {
diff --git a/npm/ng-packs/packages/components/extensible/README.md b/npm/ng-packs/packages/components/extensible/README.md
new file mode 100644
index 0000000000..7a14a85f7c
--- /dev/null
+++ b/npm/ng-packs/packages/components/extensible/README.md
@@ -0,0 +1,3 @@
+# @abp/ng.components/extensible
+
+Secondary entry point of `@abp/ng.components`. It can be used by importing from `@abp/ng.components/extensible`.
diff --git a/npm/ng-packs/packages/components/extensible/ng-package.json b/npm/ng-packs/packages/components/extensible/ng-package.json
new file mode 100644
index 0000000000..fbafcc4448
--- /dev/null
+++ b/npm/ng-packs/packages/components/extensible/ng-package.json
@@ -0,0 +1,5 @@
+{
+ "lib": {
+ "entryFile": "src/public-api.ts"
+ }
+}
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/abstract-actions/abstract-actions.component.ts
similarity index 95%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/components/abstract-actions/abstract-actions.component.ts
index a7710d16a0..394e125798 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/abstract-actions/abstract-actions.component.ts
@@ -16,9 +16,8 @@ export abstract class AbstractActionsComponent<
@Input() record!: InferredData['record'];
- constructor(injector: Injector) {
+ protected constructor(injector: Injector) {
super();
-
this.getInjected = injector.get.bind(injector);
const extensions = injector.get(ExtensionsService);
const name = injector.get(EXTENSIONS_IDENTIFIER);
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/date-time-picker/date-time-picker.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts
similarity index 82%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/date-time-picker/date-time-picker.component.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts
index 60a2d16f34..55b73581c9 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/date-time-picker/date-time-picker.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts
@@ -14,13 +14,13 @@ import {
NgbTimeAdapter,
NgbTimepicker,
} from '@ng-bootstrap/ng-bootstrap';
-import { DateTimeAdapter } from '../../adapters/date-time.adapter';
import { FormProp } from '../../models/form-props';
import { selfFactory } from '../../utils/factory.util';
+import { DateTimeAdapter } from '@abp/ng.theme.shared';
@Component({
- exportAs: 'abpDateTimePicker',
- selector: 'abp-date-time-picker',
+ exportAs: 'abpExtensibleDateTimePicker',
+ selector: 'abp-extensible-date-time-picker',
template: `
-
+
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts
similarity index 97%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts
index 679afe3b04..2689e09a33 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts
@@ -24,15 +24,14 @@ import {
import { NgbDateAdapter, NgbTimeAdapter } from '@ng-bootstrap/ng-bootstrap';
import { Observable, of } from 'rxjs';
import { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';
-import { DateAdapter } from '../../adapters/date.adapter';
-import { TimeAdapter } from '../../adapters/time.adapter';
+import { DateAdapter, TimeAdapter } from '@abp/ng.theme.shared';
import { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';
import { ePropType } from '../../enums/props.enum';
import { FormProp } from '../../models/form-props';
import { PropData } from '../../models/props';
import { selfFactory } from '../../utils/factory.util';
import { addTypeaheadTextSuffix } from '../../utils/typeahead.util';
-import { eThemeSharedComponents } from '../../enums/components';
+import { eThemeSharedComponents } from "../../enums/components";
@Component({
selector: 'abp-extensible-form-prop',
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.html
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.html
rename to npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.html
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html
rename to npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts
similarity index 95%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts
index aa264385be..af146e2367 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts
@@ -13,8 +13,6 @@ import {
Component,
EventEmitter,
Inject,
- InjectFlags,
- InjectionToken,
Injector,
Input,
LOCALE_ID,
@@ -23,7 +21,6 @@ import {
SimpleChanges,
TemplateRef,
TrackByFunction,
- Type,
} from '@angular/core';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@@ -41,7 +38,7 @@ import {
const DEFAULT_ACTIONS_COLUMN_WIDTH = 150;
-@Component({
+ @Component({
exportAs: 'abpExtensibleTable',
selector: 'abp-extensible-table',
templateUrl: './extensible-table.component.html',
@@ -67,7 +64,7 @@ export class ExtensibleTableComponent implements OnChanges {
@Output() tableActivate = new EventEmitter();
- getInjected: (token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags) => T;
+ getInjected: typeof this.injector.get
hasAtLeastOnePermittedAction: boolean;
@@ -150,7 +147,7 @@ export class ExtensibleTableComponent implements OnChanges {
ngOnChanges({ data }: SimpleChanges) {
if (!data?.currentValue) return;
-
+
if (data.currentValue.length < 1) {
this.list.totalCount = this.recordsTotal
}
@@ -166,7 +163,7 @@ export class ExtensibleTableComponent implements OnChanges {
value,
};
if (prop.value.component) {
- const injector = Injector.create({
+ record[propKey].injector = Injector.create({
providers: [
{
provide: PROP_DATA_STREAM,
@@ -175,7 +172,6 @@ export class ExtensibleTableComponent implements OnChanges {
],
parent: this.injector,
});
- record[propKey].injector = injector;
record[propKey].component = prop.value.component;
}
});
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/grid-actions/grid-actions.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/grid-actions/grid-actions.component.html
rename to npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/grid-actions/grid-actions.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/grid-actions/grid-actions.component.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts
diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/index.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/index.ts
new file mode 100644
index 0000000000..17f1c380d1
--- /dev/null
+++ b/npm/ng-packs/packages/components/extensible/src/lib/components/index.ts
@@ -0,0 +1,7 @@
+export * from './abstract-actions/abstract-actions.component';
+export * from './extensible-form/extensible-form.component';
+export * from './extensible-form/extensible-form-prop.component';
+export * from './extensible-table/extensible-table.component';
+export * from './date-time-picker/extensible-date-time-picker.component';
+export * from './grid-actions/grid-actions.component';
+export * from './page-toolbar/page-toolbar.component';
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.html
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.html
rename to npm/ng-packs/packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.html
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/constants/extra-properties.ts b/npm/ng-packs/packages/components/extensible/src/lib/constants/extra-properties.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/constants/extra-properties.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/constants/extra-properties.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/directives/prop-data.directive.ts b/npm/ng-packs/packages/components/extensible/src/lib/directives/prop-data.directive.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/directives/prop-data.directive.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/directives/prop-data.directive.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/enums/components.ts b/npm/ng-packs/packages/components/extensible/src/lib/enums/components.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/enums/components.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/enums/components.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/enums/props.enum.ts b/npm/ng-packs/packages/components/extensible/src/lib/enums/props.enum.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/enums/props.enum.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/enums/props.enum.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts b/npm/ng-packs/packages/components/extensible/src/lib/extensible.module.ts
similarity index 54%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/extensible.module.ts
index 33882fbd43..334909a7e2 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/extensible.module.ts
@@ -1,6 +1,7 @@
+import { NgModule } from '@angular/core';
import { CoreModule } from '@abp/ng.core';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
-import { NgModule } from '@angular/core';
+import { NgxValidateCoreModule } from '@ngx-validate/core';
import {
NgbDatepickerModule,
NgbDropdownModule,
@@ -8,37 +9,27 @@ import {
NgbTooltipModule,
NgbTypeaheadModule,
} from '@ng-bootstrap/ng-bootstrap';
-import { NgxValidateCoreModule } from '@ngx-validate/core';
-import { DateTimePickerComponent } from './components/date-time-picker/date-time-picker.component';
-import { ExtensibleFormPropComponent } from './components/extensible-form/extensible-form-prop.component';
-import { ExtensibleFormComponent } from './components/extensible-form/extensible-form.component';
-import { ExtensibleTableComponent } from './components/extensible-table/extensible-table.component';
-import { GridActionsComponent } from './components/grid-actions/grid-actions.component';
-import { PageToolbarComponent } from './components/page-toolbar/page-toolbar.component';
-import { DisabledDirective } from './directives/disabled.directive';
+import {
+ ExtensibleFormComponent,
+ ExtensibleFormPropComponent,
+ ExtensibleTableComponent,
+ GridActionsComponent,
+ PageToolbarComponent,
+ ExtensibleDateTimePickerComponent
+} from './components';
import { PropDataDirective } from './directives/prop-data.directive';
import { CreateInjectorPipe } from './pipes/create-injector.pipe';
+import { DisabledDirective } from '@abp/ng.theme.shared';
@NgModule({
- exports: [
- DateTimePickerComponent,
- PageToolbarComponent,
- GridActionsComponent,
- ExtensibleFormComponent,
- ExtensibleTableComponent,
- PropDataDirective,
- DisabledDirective,
- CreateInjectorPipe,
- ],
declarations: [
- DateTimePickerComponent,
+ ExtensibleDateTimePickerComponent,
PageToolbarComponent,
GridActionsComponent,
ExtensibleFormPropComponent,
ExtensibleFormComponent,
ExtensibleTableComponent,
PropDataDirective,
- DisabledDirective,
CreateInjectorPipe,
],
imports: [
@@ -49,13 +40,16 @@ import { CreateInjectorPipe } from './pipes/create-injector.pipe';
NgbDropdownModule,
NgbTimepickerModule,
NgbTypeaheadModule,
- NgbTooltipModule
+ NgbTooltipModule,
+ DisabledDirective,
+ ],
+ exports: [
+ PageToolbarComponent,
+ GridActionsComponent,
+ ExtensibleFormComponent,
+ ExtensibleTableComponent,
+ PropDataDirective,
+ CreateInjectorPipe,
],
})
-export class BaseUiExtensionsModule {}
-
-@NgModule({
- exports: [BaseUiExtensionsModule],
- imports: [BaseUiExtensionsModule],
-})
-export class UiExtensionsModule {}
+export class ExtensibleModule {}
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/actions.ts b/npm/ng-packs/packages/components/extensible/src/lib/models/actions.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/models/actions.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/models/actions.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-actions.ts b/npm/ng-packs/packages/components/extensible/src/lib/models/entity-actions.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-actions.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/models/entity-actions.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts b/npm/ng-packs/packages/components/extensible/src/lib/models/entity-props.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/models/entity-props.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/form-props.ts b/npm/ng-packs/packages/components/extensible/src/lib/models/form-props.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/models/form-props.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/models/form-props.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/internal/object-extensions.ts b/npm/ng-packs/packages/components/extensible/src/lib/models/internal/object-extensions.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/models/internal/object-extensions.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/models/internal/object-extensions.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/object-extensions.ts b/npm/ng-packs/packages/components/extensible/src/lib/models/object-extensions.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/models/object-extensions.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/models/object-extensions.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts b/npm/ng-packs/packages/components/extensible/src/lib/models/props.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/models/props.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/toolbar-actions.ts b/npm/ng-packs/packages/components/extensible/src/lib/models/toolbar-actions.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/models/toolbar-actions.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/models/toolbar-actions.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts b/npm/ng-packs/packages/components/extensible/src/lib/pipes/create-injector.pipe.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/pipes/create-injector.pipe.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/services/extensions.service.ts b/npm/ng-packs/packages/components/extensible/src/lib/services/extensions.service.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/services/extensions.service.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/services/extensions.service.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/tokens/extensible-form-view-provider.token.ts b/npm/ng-packs/packages/components/extensible/src/lib/tokens/extensible-form-view-provider.token.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/tokens/extensible-form-view-provider.token.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/tokens/extensible-form-view-provider.token.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/tokens/extensions.token.ts b/npm/ng-packs/packages/components/extensible/src/lib/tokens/extensions.token.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/tokens/extensions.token.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/tokens/extensions.token.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/actions.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/actions.util.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/actions.util.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/utils/actions.util.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/enum.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/enum.util.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/enum.util.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/utils/enum.util.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/factory.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/factory.util.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/factory.util.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/utils/factory.util.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/form-props.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/form-props.util.ts
similarity index 87%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/form-props.util.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/utils/form-props.util.ts
index c1295f21fa..ab7c669d47 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/form-props.util.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/utils/form-props.util.ts
@@ -1,11 +1,10 @@
import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
-import { DateTimeAdapter } from '../adapters/date-time.adapter';
-import { DateAdapter } from '../adapters/date.adapter';
-import { TimeAdapter } from '../adapters/time.adapter';
+import { DateTimeAdapter,DateAdapter,TimeAdapter } from '@abp/ng.theme.shared';
+
import { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';
import { ePropType } from '../enums/props.enum';
-import { FormProp, FormPropList } from "../models/form-props";
-import { InferredProp, PropData } from "../models/props";
+import { FormPropList } from "../models/form-props";
+import { PropData } from "../models/props";
import { ExtensionsService } from '../services/extensions.service';
import { EXTENSIONS_IDENTIFIER } from '../tokens/extensions.token';
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/localization.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/localization.util.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/localization.util.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/utils/localization.util.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/props.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/props.util.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/props.util.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/utils/props.util.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/state.util.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/utils/state.util.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/typeahead.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/typeahead.util.ts
similarity index 93%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/typeahead.util.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/utils/typeahead.util.ts
index b8038b7a69..eec592ad0c 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/typeahead.util.ts
+++ b/npm/ng-packs/packages/components/extensible/src/lib/utils/typeahead.util.ts
@@ -39,11 +39,11 @@ export function createTypeaheadOptions(
}
export function getTypeaheadType(lookup: ExtensionPropertyUiLookupDto, name: string) {
- return Boolean(lookup.url)
- ? ePropType.Typeahead
- : name.endsWith(TYPEAHEAD_TEXT_SUFFIX)
- ? ePropType.Hidden
- : undefined;
+ if (!!lookup.url) {
+ return ePropType.Typeahead;
+ } else {
+ return name.endsWith(TYPEAHEAD_TEXT_SUFFIX) ? ePropType.Hidden : undefined;
+ }
}
export function createTypeaheadDisplayNameGenerator(
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/validation.util.ts b/npm/ng-packs/packages/components/extensible/src/lib/utils/validation.util.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/validation.util.ts
rename to npm/ng-packs/packages/components/extensible/src/lib/utils/validation.util.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/public-api.ts b/npm/ng-packs/packages/components/extensible/src/public-api.ts
similarity index 84%
rename from npm/ng-packs/packages/theme-shared/extensions/src/public-api.ts
rename to npm/ng-packs/packages/components/extensible/src/public-api.ts
index 7268be4395..abcc3a1a0c 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/public-api.ts
+++ b/npm/ng-packs/packages/components/extensible/src/public-api.ts
@@ -1,14 +1,10 @@
-export * from './lib/adapters/date-time.adapter';
-export * from './lib/adapters/date.adapter';
-export * from './lib/adapters/time.adapter';
-export * from './lib/components/date-time-picker/date-time-picker.component';
+export * from './lib/components/date-time-picker/extensible-date-time-picker.component';
export * from './lib/components/extensible-form/extensible-form-prop.component';
export * from './lib/components/extensible-form/extensible-form.component';
export * from './lib/components/extensible-table/extensible-table.component';
export * from './lib/components/grid-actions/grid-actions.component';
export * from './lib/components/page-toolbar/page-toolbar.component';
export * from './lib/constants/extra-properties';
-export * from './lib/directives/disabled.directive';
export * from './lib/directives/prop-data.directive';
export * from './lib/enums/props.enum';
export * from './lib/enums/components';
@@ -66,8 +62,8 @@ export * from './lib/pipes/create-injector.pipe';
export * from './lib/services/extensions.service';
export * from './lib/tokens/extensions.token';
export * from './lib/tokens/extensible-form-view-provider.token';
-export * from './lib/ui-extensions.module';
-export * from './lib/utils/actions.util';
+ export * from './lib/utils/actions.util';
export * from './lib/utils/form-props.util';
export * from './lib/utils/props.util';
export * from './lib/utils/state.util';
+export * from './lib/extensible.module';
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/actions.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/actions.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/actions.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/actions.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/actions.util.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/actions.util.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/actions.util.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/actions.util.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/date-time.adapter.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/date-time.adapter.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/date-time.adapter.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/date-time.adapter.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/date.adapter.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/date.adapter.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/date.adapter.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/date.adapter.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/entity-actions.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/entity-actions.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/entity-actions.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/entity-actions.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/entity-props.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/entity-props.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/entity-props.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/entity-props.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/enum.util.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/enum.util.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/enum.util.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/enum.util.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/extensions.service.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/extensions.service.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/extensions.service.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/extensions.service.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/factory.util.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/factory.util.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/factory.util.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/factory.util.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/form-props.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/form-props.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/form-props.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/form-props.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/form-props.util.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/form-props.util.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/form-props.util.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/form-props.util.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/localization.util.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/localization.util.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/localization.util.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/localization.util.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/props.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/props.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/props.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/props.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/props.util.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/props.util.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/props.util.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/props.util.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/state.util.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/state.util.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/time.adapter.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/time.adapter.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/time.adapter.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/time.adapter.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/toolbar-actions.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/toolbar-actions.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/toolbar-actions.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/toolbar-actions.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/typeahead.util.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/typeahead.util.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/typeahead.util.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/typeahead.util.spec.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/validation.util.spec.ts b/npm/ng-packs/packages/components/extensible/src/tests/validation.util.spec.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/tests/validation.util.spec.ts
rename to npm/ng-packs/packages/components/extensible/src/tests/validation.util.spec.ts
diff --git a/npm/ng-packs/packages/components/page/src/page.module.ts b/npm/ng-packs/packages/components/page/src/page.module.ts
index d9d237cbdb..5bb27fbc66 100644
--- a/npm/ng-packs/packages/components/page/src/page.module.ts
+++ b/npm/ng-packs/packages/components/page/src/page.module.ts
@@ -1,7 +1,6 @@
import { CoreModule } from '@abp/ng.core';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
-import { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';
-import { CommonModule } from '@angular/common';
+ import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { PagePartDirective } from './page-part.directive';
import {
@@ -10,6 +9,7 @@ import {
PageToolbarContainerComponent,
} from './page-parts.component';
import { PageComponent } from './page.component';
+import {ExtensibleModule} from "@abp/ng.components/extensible";
const exportedDeclarations = [
PageComponent,
@@ -21,7 +21,7 @@ const exportedDeclarations = [
@NgModule({
declarations: [...exportedDeclarations],
- imports: [CommonModule, UiExtensionsModule, CoreModule, ThemeSharedModule],
- exports: [...exportedDeclarations, UiExtensionsModule],
+ imports: [CommonModule, CoreModule, ThemeSharedModule, ExtensibleModule],
+ exports: [...exportedDeclarations],
})
export class PageModule {}
diff --git a/npm/ng-packs/packages/components/project.json b/npm/ng-packs/packages/components/project.json
index 12a03b4ad1..fc73649c65 100644
--- a/npm/ng-packs/packages/components/project.json
+++ b/npm/ng-packs/packages/components/project.json
@@ -32,7 +32,12 @@
"lint": {
"executor": "@nx/linter:eslint",
"options": {
- "lintFilePatterns": ["packages/components/src/**/*.ts", "packages/components/src/**/*.html"]
+ "lintFilePatterns": [
+ "packages/components/src/**/*.ts",
+ "packages/components/src/**/*.html",
+ "packages/components/extensible/**/*.ts",
+ "packages/components/extensible/**/*.html"
+ ]
},
"outputs": ["{options.outputFile}"]
}
diff --git a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts
index 5e2a0e866a..fd8b3670f8 100644
--- a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts
+++ b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts
@@ -6,7 +6,7 @@ import {
EXTENSIONS_IDENTIFIER,
FormPropData,
generateFormFromProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { Component, Injector, OnInit } from '@angular/core';
import { UntypedFormGroup } from '@angular/forms';
import { finalize } from 'rxjs/operators';
diff --git a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts
index 6dd1ab9f17..f8802de304 100644
--- a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts
+++ b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts
@@ -11,7 +11,7 @@ import {
EXTENSIONS_IDENTIFIER,
FormPropData,
generateFormFromProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import {
Component,
Injector,
@@ -60,7 +60,7 @@ export class UsersComponent implements OnInit {
permissionManagementKey = ePermissionManagementComponents.PermissionManagement;
entityDisplayName: string;
-
+
inputKey=eFormComponets.FormCheckboxComponent
trackByFn: TrackByFunction = (index, item) => Object.keys(item)[0] || index;
diff --git a/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-entity-actions.ts b/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-entity-actions.ts
index fe6e0661d5..11a1b967e0 100644
--- a/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-entity-actions.ts
+++ b/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-entity-actions.ts
@@ -1,5 +1,5 @@
import { IdentityRoleDto } from '@abp/ng.identity/proxy';
-import { EntityAction } from '@abp/ng.theme.shared/extensions';
+import { EntityAction } from '@abp/ng.components/extensible';
import { RolesComponent } from '../components/roles/roles.component';
export const DEFAULT_ROLES_ENTITY_ACTIONS = EntityAction.createMany([
diff --git a/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-entity-props.ts b/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-entity-props.ts
index c26124c531..6c3e473ae9 100644
--- a/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-entity-props.ts
+++ b/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-entity-props.ts
@@ -1,6 +1,6 @@
import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';
import { IdentityRoleDto } from '@abp/ng.identity/proxy';
-import { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';
+import { EntityProp, ePropType } from '@abp/ng.components/extensible';
import { of } from 'rxjs';
export const DEFAULT_ROLES_ENTITY_PROPS = EntityProp.createMany([
diff --git a/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-form-props.ts b/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-form-props.ts
index 129a095a02..d09b8755f2 100644
--- a/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-form-props.ts
+++ b/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-form-props.ts
@@ -1,5 +1,5 @@
import { IdentityRoleDto } from '@abp/ng.identity/proxy';
-import { ePropType, FormProp, PropData, PropPredicate } from "@abp/ng.theme.shared/extensions";
+import { ePropType, FormProp, PropData, PropPredicate } from "@abp/ng.components/extensible";
import { Validators } from '@angular/forms';
export const DEFAULT_ROLES_CREATE_FORM_PROPS = FormProp.createMany([
diff --git a/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-toolbar-actions.ts b/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-toolbar-actions.ts
index e31e444669..e938342d8f 100644
--- a/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-toolbar-actions.ts
+++ b/npm/ng-packs/packages/identity/src/lib/defaults/default-roles-toolbar-actions.ts
@@ -1,5 +1,5 @@
import { IdentityRoleDto } from '@abp/ng.identity/proxy';
-import { ToolbarAction } from '@abp/ng.theme.shared/extensions';
+import { ToolbarAction } from '@abp/ng.components/extensible';
import { RolesComponent } from '../components/roles/roles.component';
export const DEFAULT_ROLES_TOOLBAR_ACTIONS = ToolbarAction.createMany([
diff --git a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-entity-actions.ts b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-entity-actions.ts
index ca0a2edcad..bc7c2dd8e6 100644
--- a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-entity-actions.ts
+++ b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-entity-actions.ts
@@ -1,5 +1,5 @@
import { IdentityUserDto } from '@abp/ng.identity/proxy';
-import { EntityAction } from '@abp/ng.theme.shared/extensions';
+import { EntityAction } from '@abp/ng.components/extensible';
import { UsersComponent } from '../components/users/users.component';
import { ConfigStateService, CurrentUserDto } from '@abp/ng.core';
diff --git a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-entity-props.ts b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-entity-props.ts
index da277acd6c..a90a0d7458 100644
--- a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-entity-props.ts
+++ b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-entity-props.ts
@@ -1,6 +1,6 @@
import { escapeHtmlChars, LocalizationService } from '@abp/ng.core';
import { IdentityUserDto } from '@abp/ng.identity/proxy';
-import { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';
+import { EntityProp, ePropType } from '@abp/ng.components/extensible';
import { of } from 'rxjs';
export const DEFAULT_USERS_ENTITY_PROPS = EntityProp.createMany([
diff --git a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-form-props.ts b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-form-props.ts
index 3c1a3e4c82..9f802c8283 100644
--- a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-form-props.ts
+++ b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-form-props.ts
@@ -1,7 +1,7 @@
import { Validators } from '@angular/forms';
import { ConfigStateService, CurrentUserDto } from '@abp/ng.core';
import { getPasswordValidators } from '@abp/ng.theme.shared';
-import { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';
+import { ePropType, FormProp } from '@abp/ng.components/extensible';
import { IdentityUserDto } from '@abp/ng.identity/proxy';
export const DEFAULT_USERS_CREATE_FORM_PROPS = FormProp.createMany([
diff --git a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-toolbar-actions.ts b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-toolbar-actions.ts
index 72092cbb1a..75053fcaa9 100644
--- a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-toolbar-actions.ts
+++ b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-toolbar-actions.ts
@@ -1,5 +1,5 @@
import { IdentityUserDto } from '@abp/ng.identity/proxy';
-import { ToolbarAction } from '@abp/ng.theme.shared/extensions';
+import { ToolbarAction } from '@abp/ng.components/extensible';
import { UsersComponent } from '../components/users/users.component';
export const DEFAULT_USERS_TOOLBAR_ACTIONS = ToolbarAction.createMany([
diff --git a/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts b/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts
index 74dab0745a..c78e03b6af 100644
--- a/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts
+++ b/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts
@@ -10,7 +10,7 @@ import {
mapEntitiesToContributors,
mergeWithDefaultActions,
mergeWithDefaultProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { eIdentityComponents } from '../enums/components';
import {
diff --git a/npm/ng-packs/packages/identity/src/lib/identity.module.ts b/npm/ng-packs/packages/identity/src/lib/identity.module.ts
index e6c11d195e..ea07602f7c 100644
--- a/npm/ng-packs/packages/identity/src/lib/identity.module.ts
+++ b/npm/ng-packs/packages/identity/src/lib/identity.module.ts
@@ -1,7 +1,7 @@
import { CoreModule, LazyModuleFactory } from '@abp/ng.core';
import { PermissionManagementModule } from '@abp/ng.permission-management';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
-import { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';
+import { ExtensibleModule } from '@abp/ng.components/extensible';
import { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';
import { NgbDropdownModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap';
import { NgxValidateCoreModule } from '@ngx-validate/core';
@@ -27,7 +27,7 @@ import { PageModule } from '@abp/ng.components/page';
IdentityRoutingModule,
NgbNavModule,
ThemeSharedModule,
- UiExtensionsModule,
+ ExtensibleModule,
NgbDropdownModule,
PermissionManagementModule,
NgxValidateCoreModule,
diff --git a/npm/ng-packs/packages/identity/src/lib/models/config-options.ts b/npm/ng-packs/packages/identity/src/lib/models/config-options.ts
index b244a1a51a..56abbd11e6 100644
--- a/npm/ng-packs/packages/identity/src/lib/models/config-options.ts
+++ b/npm/ng-packs/packages/identity/src/lib/models/config-options.ts
@@ -5,7 +5,7 @@ import {
EntityActionContributorCallback,
EntityPropContributorCallback,
ToolbarActionContributorCallback,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { eIdentityComponents } from '../enums/components';
export type IdentityEntityActionContributors = Partial<{
diff --git a/npm/ng-packs/packages/identity/src/lib/resolvers/extensions.resolver.ts b/npm/ng-packs/packages/identity/src/lib/resolvers/extensions.resolver.ts
index 1a303e50c4..45856046d8 100644
--- a/npm/ng-packs/packages/identity/src/lib/resolvers/extensions.resolver.ts
+++ b/npm/ng-packs/packages/identity/src/lib/resolvers/extensions.resolver.ts
@@ -7,7 +7,7 @@ import {
mapEntitiesToContributors,
mergeWithDefaultActions,
mergeWithDefaultProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { eIdentityComponents } from '../enums';
import {
IDENTITY_ENTITY_ACTION_CONTRIBUTORS,
diff --git a/npm/ng-packs/packages/identity/src/lib/tokens/extensions.token.ts b/npm/ng-packs/packages/identity/src/lib/tokens/extensions.token.ts
index 3a91d38c27..ec3af0649d 100644
--- a/npm/ng-packs/packages/identity/src/lib/tokens/extensions.token.ts
+++ b/npm/ng-packs/packages/identity/src/lib/tokens/extensions.token.ts
@@ -5,7 +5,7 @@ import {
EntityActionContributorCallback,
EntityPropContributorCallback,
ToolbarActionContributorCallback,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { InjectionToken } from '@angular/core';
import { DEFAULT_ROLES_ENTITY_ACTIONS } from '../defaults/default-roles-entity-actions';
import { DEFAULT_ROLES_ENTITY_PROPS } from '../defaults/default-roles-entity-props';
diff --git a/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts b/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts
index a222b6327b..3ee3741d04 100644
--- a/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts
+++ b/npm/ng-packs/packages/oauth/src/lib/oauth.module.ts
@@ -4,6 +4,7 @@ import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';
import {
AbpLocalStorageService,
ApiInterceptor,
+ AuthGuard,
authGuard,
AuthService,
CHECK_AUTHENTICATION_STATE_FN_KEY,
@@ -14,7 +15,7 @@ import { AbpOAuthService } from './services';
import { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { OAuthApiInterceptor } from './interceptors/api.interceptor';
-import { abpOAuthGuard } from './guards/oauth.guard';
+import { AbpOAuthGuard, abpOAuthGuard } from './guards/oauth.guard';
import { NavigateToManageProfileProvider } from './providers';
import { checkAccessToken, pipeToLogin } from './utils';
@@ -30,6 +31,10 @@ export class AbpOAuthModule {
provide: AuthService,
useClass: AbpOAuthService,
},
+ {
+ provide: AuthGuard,
+ useClass: AbpOAuthGuard,
+ },
{
provide: authGuard,
useValue: abpOAuthGuard,
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts
index 51c98a53e2..b759947b32 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts
@@ -6,7 +6,7 @@ import {
EXTENSIONS_IDENTIFIER,
FormPropData,
generateFormFromProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { Component, Injector, OnInit } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { finalize } from 'rxjs/operators';
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-entity-actions.ts b/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-entity-actions.ts
index 6cb5fe7d26..23848b8582 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-entity-actions.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-entity-actions.ts
@@ -1,5 +1,5 @@
import { TenantDto } from '@abp/ng.tenant-management/proxy';
-import { EntityAction } from '@abp/ng.theme.shared/extensions';
+import { EntityAction } from '@abp/ng.components/extensible';
import { TenantsComponent } from '../components/tenants/tenants.component';
export const DEFAULT_TENANTS_ENTITY_ACTIONS = EntityAction.createMany([
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-entity-props.ts b/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-entity-props.ts
index 8eacec5623..a893453e71 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-entity-props.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-entity-props.ts
@@ -1,5 +1,5 @@
import { TenantDto } from '@abp/ng.tenant-management/proxy';
-import { EntityProp, ePropType } from '@abp/ng.theme.shared/extensions';
+import { EntityProp, ePropType } from '@abp/ng.components/extensible';
export const DEFAULT_TENANTS_ENTITY_PROPS = EntityProp.createMany([
{
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-form-props.ts b/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-form-props.ts
index a3956e87d5..2c6482f78f 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-form-props.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-form-props.ts
@@ -1,6 +1,6 @@
import { TenantCreateDto, TenantUpdateDto } from '@abp/ng.tenant-management/proxy';
import { getPasswordValidators } from '@abp/ng.theme.shared';
-import { ePropType, FormProp } from '@abp/ng.theme.shared/extensions';
+import { ePropType, FormProp } from '@abp/ng.components/extensible';
import { Validators } from '@angular/forms';
export const DEFAULT_TENANTS_CREATE_FORM_PROPS = FormProp.createMany<
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-toolbar-actions.ts b/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-toolbar-actions.ts
index 5621a81aac..f1b3bce9d5 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-toolbar-actions.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-toolbar-actions.ts
@@ -1,5 +1,5 @@
import { TenantDto } from '@abp/ng.tenant-management/proxy';
-import { ToolbarAction } from '@abp/ng.theme.shared/extensions';
+import { ToolbarAction } from '@abp/ng.components/extensible';
import { TenantsComponent } from '../components/tenants/tenants.component';
export const DEFAULT_TENANTS_TOOLBAR_ACTIONS = ToolbarAction.createMany([
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts b/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts
index 42e0b50d75..d37d735453 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts
@@ -10,7 +10,7 @@ import {
mapEntitiesToContributors,
mergeWithDefaultActions,
mergeWithDefaultProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { eTenantManagementComponents } from '../enums/components';
import {
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/models/config-options.ts b/npm/ng-packs/packages/tenant-management/src/lib/models/config-options.ts
index 684d7c49ea..c9f4d62e44 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/models/config-options.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/models/config-options.ts
@@ -5,7 +5,7 @@ import {
EntityActionContributorCallback,
EntityPropContributorCallback,
ToolbarActionContributorCallback,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { eTenantManagementComponents } from '../enums/components';
export type TenantManagementEntityActionContributors = Partial<{
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/resolvers/extensions.resolver.ts b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/extensions.resolver.ts
index 609f048465..d3c224aba2 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/resolvers/extensions.resolver.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/extensions.resolver.ts
@@ -7,7 +7,7 @@ import {
mapEntitiesToContributors,
mergeWithDefaultActions,
mergeWithDefaultProps,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { eTenantManagementComponents } from '../enums';
import {
TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS,
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts
index 535ee38aaa..4b44814bce 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts
@@ -1,7 +1,7 @@
import { CoreModule, LazyModuleFactory } from '@abp/ng.core';
import { FeatureManagementModule } from '@abp/ng.feature-management';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
-import { UiExtensionsModule } from '@abp/ng.theme.shared/extensions';
+import { ExtensibleModule } from '@abp/ng.components/extensible';
import { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
import { NgxValidateCoreModule } from '@ngx-validate/core';
@@ -28,7 +28,7 @@ import { PageModule } from '@abp/ng.components/page';
ThemeSharedModule,
NgbDropdownModule,
FeatureManagementModule,
- UiExtensionsModule,
+ ExtensibleModule,
PageModule,
],
})
diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tokens/extensions.token.ts b/npm/ng-packs/packages/tenant-management/src/lib/tokens/extensions.token.ts
index 666183fbaa..8215a0cc8f 100644
--- a/npm/ng-packs/packages/tenant-management/src/lib/tokens/extensions.token.ts
+++ b/npm/ng-packs/packages/tenant-management/src/lib/tokens/extensions.token.ts
@@ -5,7 +5,7 @@ import {
EntityActionContributorCallback,
EntityPropContributorCallback,
ToolbarActionContributorCallback,
-} from '@abp/ng.theme.shared/extensions';
+} from '@abp/ng.components/extensible';
import { InjectionToken } from '@angular/core';
import { DEFAULT_TENANTS_ENTITY_ACTIONS } from '../defaults/default-tenants-entity-actions';
import { DEFAULT_TENANTS_ENTITY_PROPS } from '../defaults/default-tenants-entity-props';
diff --git a/npm/ng-packs/packages/theme-shared/extensions/ng-package.json b/npm/ng-packs/packages/theme-shared/extensions/ng-package.json
deleted file mode 100644
index 3244b2e39b..0000000000
--- a/npm/ng-packs/packages/theme-shared/extensions/ng-package.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
- "dest": "../../../dist/packages/theme-shared/extensions",
- "lib": {
- "entryFile": "src/public-api.ts"
- }
-}
diff --git a/npm/ng-packs/packages/theme-shared/extensions/testing/src/lib/ui-extensions-testing.module.ts b/npm/ng-packs/packages/theme-shared/extensions/testing/src/lib/ui-extensions-testing.module.ts
deleted file mode 100644
index 593cce3733..0000000000
--- a/npm/ng-packs/packages/theme-shared/extensions/testing/src/lib/ui-extensions-testing.module.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { BaseUiExtensionsModule } from '@abp/ng.theme.shared/extensions';
-import { NgModule } from '@angular/core';
-
-@NgModule({
- exports: [BaseUiExtensionsModule],
- imports: [BaseUiExtensionsModule],
-})
-export class UiExtensionsTestingModule {}
diff --git a/npm/ng-packs/packages/theme-shared/extensions/testing/src/public-api.ts b/npm/ng-packs/packages/theme-shared/extensions/testing/src/public-api.ts
deleted file mode 100644
index d524c9cd0c..0000000000
--- a/npm/ng-packs/packages/theme-shared/extensions/testing/src/public-api.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './lib/ui-extensions-testing.module';
diff --git a/npm/ng-packs/packages/theme-shared/extensions/testing/ssng-package.json b/npm/ng-packs/packages/theme-shared/extensions/testing/ssng-package.json
deleted file mode 100644
index 10757e7f04..0000000000
--- a/npm/ng-packs/packages/theme-shared/extensions/testing/ssng-package.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json",
- "dest": "../../dist/theme-shared/extensions/testing",
- "lib": {
- "entryFile": "src/public-api.ts"
- }
-}
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/date-time.adapter.ts b/npm/ng-packs/packages/theme-shared/src/lib/adapters/date-time.adapter.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/date-time.adapter.ts
rename to npm/ng-packs/packages/theme-shared/src/lib/adapters/date-time.adapter.ts
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/date.adapter.ts b/npm/ng-packs/packages/theme-shared/src/lib/adapters/date.adapter.ts
similarity index 100%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/date.adapter.ts
rename to npm/ng-packs/packages/theme-shared/src/lib/adapters/date.adapter.ts
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/adapters/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/adapters/index.ts
new file mode 100644
index 0000000000..a8e37ee1d3
--- /dev/null
+++ b/npm/ng-packs/packages/theme-shared/src/lib/adapters/index.ts
@@ -0,0 +1,3 @@
+export * from './date-time.adapter';
+export * from './date.adapter';
+export * from './time.adapter';
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/time.adapter.ts b/npm/ng-packs/packages/theme-shared/src/lib/adapters/time.adapter.ts
similarity index 92%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/time.adapter.ts
rename to npm/ng-packs/packages/theme-shared/src/lib/adapters/time.adapter.ts
index c51650b8dd..de2c47b349 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/time.adapter.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/adapters/time.adapter.ts
@@ -31,5 +31,5 @@ export class TimeAdapter extends NgbTimeAdapter {
}
function isTimeStr(value: string | Date): value is string {
- return /^((2[123])|[01][0-9])(\:[0-5][0-9]){1,2}$/.test(String(value));
+ return /^((2[123])|[01][0-9])(:[0-5][0-9]){1,2}$/.test(String(value));
}
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/directives/disabled.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/disabled.directive.ts
similarity index 96%
rename from npm/ng-packs/packages/theme-shared/extensions/src/lib/directives/disabled.directive.ts
rename to npm/ng-packs/packages/theme-shared/src/lib/directives/disabled.directive.ts
index c0a1a74995..8832280dee 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/directives/disabled.directive.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/disabled.directive.ts
@@ -3,6 +3,7 @@ import { NgControl } from '@angular/forms';
@Directive({
selector: '[abpDisabled]',
+ standalone:true,
})
export class DisabledDirective implements OnChanges {
@Input()
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/index.ts
index 3f22a36f1b..1047bc67e6 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/directives/index.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/index.ts
@@ -3,3 +3,4 @@ export * from './loading.directive';
export * from './ngx-datatable-default.directive';
export * from './ngx-datatable-list.directive';
export * from './visible.directive';
+export * from './disabled.directive';
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/nav-item.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/nav-item.ts
index 3afce94a0c..dc98726624 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/models/nav-item.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/models/nav-item.ts
@@ -1,5 +1,5 @@
import { Injector, Type } from '@angular/core';
-import { Observable, of } from 'rxjs';
+import { Observable } from 'rxjs';
export interface Badge {
count?: number | Observable;
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/services/page-alert.service.ts b/npm/ng-packs/packages/theme-shared/src/lib/services/page-alert.service.ts
index c66d02c004..22346ab78c 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/services/page-alert.service.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/services/page-alert.service.ts
@@ -16,8 +16,6 @@ export class PageAlertService {
alerts$ = this.alerts.sliceState(state => state);
- constructor() {}
-
show(alert: PageAlert) {
const newAlert: PageAlert = {
...alert,
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/form-input.component.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/form-input.component.spec.ts
index 660cb72165..cf4eb4aac3 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/tests/form-input.component.spec.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/form-input.component.spec.ts
@@ -1,4 +1,3 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
import { createHostFactory, SpectatorHost } from '@ngneat/spectator/jest';
import { FormInputComponent } from '../components/form-input/form-input.component';
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/loader-bar.component.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/loader-bar.component.spec.ts
index 60b9130ece..db468c4a6d 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/tests/loader-bar.component.spec.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/loader-bar.component.spec.ts
@@ -7,7 +7,6 @@ import { LoaderBarComponent } from '../components/loader-bar/loader-bar.componen
describe('LoaderBarComponent', () => {
let spectator: Spectator;
- let router: SpyObject;
const events$ = new Subject();
const createComponent = createComponentFactory({
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts
index ce1d5b40fe..71c081c9b2 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts
@@ -37,7 +37,7 @@ import { DateParserFormatter } from './utils/date-parser-formatter';
import { CONFIRMATION_ICONS, DEFAULT_CONFIRMATION_ICONS } from './tokens/confirmation-icons.token';
import { PasswordComponent } from './components/password/password.component';
import { CardModule } from './components/card/card.module';
-import { AbpVisibleDirective } from './directives';
+import { AbpVisibleDirective, DisabledDirective } from './directives';
import { FormInputComponent } from './components/form-input/form-input.component';
import { FormCheckboxComponent } from './components/checkbox/checkbox.component';
import { tenantNotFoundProvider } from './providers/tenant-not-found.provider';
@@ -70,6 +70,7 @@ const declarationsWithExports = [
NgbPaginationModule,
EllipsisModule,
CardModule,
+ DisabledDirective
],
declarations: [...declarationsWithExports, HttpErrorWrapperComponent],
exports: [
@@ -77,6 +78,9 @@ const declarationsWithExports = [
EllipsisModule,
NgxValidateCoreModule,
CardModule,
+ DisabledDirective,
+ NgxDatatableListDirective,
+ NgxDatatableDefaultDirective,
...declarationsWithExports,
],
providers: [DatePipe],
diff --git a/npm/ng-packs/packages/theme-shared/src/public-api.ts b/npm/ng-packs/packages/theme-shared/src/public-api.ts
index 22661e3855..659e59e490 100644
--- a/npm/ng-packs/packages/theme-shared/src/public-api.ts
+++ b/npm/ng-packs/packages/theme-shared/src/public-api.ts
@@ -2,6 +2,7 @@
* Public API Surface of theme-shared
*/
+export * from './lib/adapters'
export * from './lib/animations';
export * from './lib/components';
export * from './lib/constants/validation';
diff --git a/npm/ng-packs/tsconfig.base.json b/npm/ng-packs/tsconfig.base.json
index 3b4de4eb67..d24de94706 100644
--- a/npm/ng-packs/tsconfig.base.json
+++ b/npm/ng-packs/tsconfig.base.json
@@ -20,6 +20,7 @@
"@abp/ng.account/config": ["packages/account/config/src/public-api.ts"],
"@abp/ng.components": ["packages/components/src/public-api.ts"],
"@abp/ng.components/chart.js": ["packages/components/chart.js/src/public-api.ts"],
+ "@abp/ng.components/extensible": ["packages/components/extensible/src/public-api.ts"],
"@abp/ng.components/page": ["packages/components/page/src/public-api.ts"],
"@abp/ng.components/tree": ["packages/components/tree/src/public-api.ts"],
"@abp/ng.core": ["packages/core/src/public-api.ts"],
@@ -44,7 +45,6 @@
"@abp/ng.theme.basic": ["packages/theme-basic/src/public-api.ts"],
"@abp/ng.theme.basic/testing": ["packages/theme-basic/testing/src/public-api.ts"],
"@abp/ng.theme.shared": ["packages/theme-shared/src/public-api.ts"],
- "@abp/ng.theme.shared/extensions": ["packages/theme-shared/extensions/src/public-api.ts"],
"@abp/ng.theme.shared/testing": ["packages/theme-shared/testing/src/public-api.ts"],
"@abp/nx.generators": ["packages/generators/src/index.ts"]
}
diff --git a/nupkg/common.ps1 b/nupkg/common.ps1
index 96d61dc74d..78de2aef44 100644
--- a/nupkg/common.ps1
+++ b/nupkg/common.ps1
@@ -204,6 +204,7 @@ $projects = (
"framework/src/Volo.Abp.Imaging.AspNetCore",
"framework/src/Volo.Abp.Imaging.ImageSharp",
"framework/src/Volo.Abp.Imaging.MagickNet",
+ "framework/src/Volo.Abp.Imaging.SkiaSharp",
"framework/src/Volo.Abp.Json",
"framework/src/Volo.Abp.Json.Abstractions",
"framework/src/Volo.Abp.Json.Newtonsoft",
diff --git a/templates/NuGet.Config b/templates/NuGet.Config
index 554c2f634b..25cf8cc86f 100644
--- a/templates/NuGet.Config
+++ b/templates/NuGet.Config
@@ -2,5 +2,6 @@
+
-
\ No newline at end of file
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj
index 5d17e0ba7c..8458da78e2 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
index e3b54d23e0..fc58cb48a9 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj
index dc984ee426..78cefa8230 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client/MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj
@@ -21,7 +21,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj
index 102dd98170..85262239d9 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo.csproj
@@ -74,7 +74,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj
index 5c39ce6677..06e58454e4 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.csproj
@@ -75,7 +75,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj
index 96d14d106b..2376ece313 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/MyCompanyName.MyProjectName.Host.Mongo.csproj
@@ -70,7 +70,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj
index 933b134e88..b54fc9be23 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj
@@ -71,7 +71,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj
index c89281a1b3..4ffd445303 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/MyCompanyName.MyProjectName.Mvc.Mongo.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj
index 2b5d5f43cb..e0e3e7c0ee 100644
--- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj
+++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj
index 4b4cde037a..980c8f4289 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj
@@ -51,7 +51,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj
index 3cd676ba96..e0b60ea62a 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj
@@ -30,8 +30,8 @@
-
-
+
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
index 3575382c4c..875dcef886 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
@@ -28,8 +28,8 @@
-
-
+
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj
index 5ec1d4d889..9babd3b127 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj
@@ -24,7 +24,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj
index c590ef232c..3a738e0f76 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj
@@ -26,7 +26,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
index 55a5a4cfdb..e5e7865683 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
@@ -29,7 +29,7 @@
-
+
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj
index dd0e555b9e..495aa54824 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj
@@ -49,7 +49,7 @@
-
+