From 3d9451fd66105c140d9926579d4a1a235e2862c2 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 19 Apr 2023 19:53:45 +0800 Subject: [PATCH 01/65] Return JSON results for ajax requests. --- .../AbpAspNetCoreMultiTenancyOptions.cs | 69 +++++++++++++++- .../Internal/ResponseContentTypeHelper.cs | 78 +++++++++++++++++++ ...TenancyMiddlewareErrorPageBuilder_Tests.cs | 18 ++++- 3 files changed, 161 insertions(+), 4 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Internal/ResponseContentTypeHelper.cs diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs index 5956e4f7d3..b63518cc8e 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs @@ -1,14 +1,23 @@ using System; using System.Globalization; using System.Net; +using System.Runtime.ExceptionServices; +using System.Text; using System.Text.Encodings.Web; +using System.Text.Json; using System.Threading.Tasks; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.AspNetCore.Http.Json; +using Microsoft.AspNetCore.Internal; +using Microsoft.AspNetCore.Mvc.Formatters; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Microsoft.Net.Http.Headers; +using Volo.Abp.Http; +using Volo.Abp.Json; using Volo.Abp.MultiTenancy; namespace Volo.Abp.AspNetCore.MultiTenancy; @@ -58,14 +67,70 @@ public class AbpAspNetCoreMultiTenancyOptions } } + context.Response.Headers.Add("Abp-Tenant-Resolve-Error", exception.Message); if (isCookieAuthentication && context.Request.Method.Equals("Get", StringComparison.OrdinalIgnoreCase) && !context.Request.IsAjax()) { - context.Response.Headers.Add("Abp-Tenant-Resolve-Error", exception.Message); context.Response.Redirect(context.Request.GetEncodedUrl()); } + else if (context.Request.IsAjax()) + { + var error = new RemoteServiceErrorResponse(new RemoteServiceErrorInfo(exception.Message, exception is BusinessException businessException ? businessException.Details : string.Empty)); + + var jsonSerializerOptions = context.RequestServices.GetRequiredService>().Value.SerializerOptions; + + ResponseContentTypeHelper.ResolveContentTypeAndEncoding( + null, + context.Response.ContentType, + (new MediaTypeHeaderValue("application/json") + { + Encoding = Encoding.UTF8 + }.ToString(), Encoding.UTF8), + MediaType.GetEncoding, + out var resolvedContentType, + out var resolvedContentTypeEncoding); + + context.Response.ContentType = resolvedContentType; + context.Response.StatusCode = (int)HttpStatusCode.NotFound; + + var responseStream = context.Response.Body; + if (resolvedContentTypeEncoding.CodePage == Encoding.UTF8.CodePage) + { + try + { + await JsonSerializer.SerializeAsync(responseStream, error, error.GetType(), jsonSerializerOptions, context.RequestAborted); + await responseStream.FlushAsync(context.RequestAborted); + } + catch (OperationCanceledException) when (context.RequestAborted.IsCancellationRequested) { } + } + else + { + var transcodingStream = Encoding.CreateTranscodingStream(context.Response.Body, resolvedContentTypeEncoding, Encoding.UTF8, leaveOpen: true); + ExceptionDispatchInfo exceptionDispatchInfo = null; + try + { + await JsonSerializer.SerializeAsync(transcodingStream, error, error.GetType(), jsonSerializerOptions, context.RequestAborted); + await transcodingStream.FlushAsync(context.RequestAborted); + } + catch (OperationCanceledException) when (context.RequestAborted.IsCancellationRequested) { } + catch (Exception ex) + { + exceptionDispatchInfo = ExceptionDispatchInfo.Capture(ex); + } + finally + { + try + { + await transcodingStream.DisposeAsync(); + } + catch when (exceptionDispatchInfo != null) + { + } + exceptionDispatchInfo?.Throw(); + } + } + } else { - context.Response.Headers.Add("Abp-Tenant-Resolve-Error", exception.Message); context.Response.StatusCode = (int)HttpStatusCode.NotFound; context.Response.ContentType = "text/html"; diff --git a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Internal/ResponseContentTypeHelper.cs b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Internal/ResponseContentTypeHelper.cs new file mode 100644 index 0000000000..bff1290835 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Internal/ResponseContentTypeHelper.cs @@ -0,0 +1,78 @@ +using System; +using System.Net.Mime; +using System.Text; +using Microsoft.AspNetCore.Http; +using Microsoft.Net.Http.Headers; + +namespace Microsoft.AspNetCore.Internal; + +/// +/// https://github.com/dotnet/aspnetcore/blob/release/7.0/src/Shared/ResponseContentTypeHelper.cs +/// +public static class ResponseContentTypeHelper +{ + /// + /// Gets the content type and encoding that need to be used for the response. + /// The priority for selecting the content type is: + /// 1. ContentType property set on the action result + /// 2. property set on + /// 3. Default content type set on the action result + /// + /// + /// The user supplied content type is not modified and is used as is. For example, if user + /// sets the content type to be "text/plain" without any encoding, then the default content type's + /// encoding is used to write the response and the ContentType header is set to be "text/plain" without any + /// "charset" information. + /// + public static void ResolveContentTypeAndEncoding( + string? actionResultContentType, + string? httpResponseContentType, + (string defaultContentType, Encoding defaultEncoding) @default, + Func getEncoding, + out string resolvedContentType, + out Encoding resolvedContentTypeEncoding) + { + var (defaultContentType, defaultContentTypeEncoding) = @default; + + // 1. User sets the ContentType property on the action result + if (actionResultContentType != null) + { + resolvedContentType = actionResultContentType; + var actionResultEncoding = getEncoding(actionResultContentType); + resolvedContentTypeEncoding = actionResultEncoding ?? defaultContentTypeEncoding; + return; + } + + // 2. User sets the ContentType property on the http response directly + if (!string.IsNullOrEmpty(httpResponseContentType)) + { + var mediaTypeEncoding = getEncoding(httpResponseContentType); + if (mediaTypeEncoding != null) + { + resolvedContentType = httpResponseContentType; + resolvedContentTypeEncoding = mediaTypeEncoding; + } + else + { + resolvedContentType = httpResponseContentType; + resolvedContentTypeEncoding = defaultContentTypeEncoding; + } + + return; + } + + // 3. Fall-back to the default content type + resolvedContentType = defaultContentType; + resolvedContentTypeEncoding = defaultContentTypeEncoding; + } + + public static Encoding GetEncoding(string mediaType) + { + if (MediaTypeHeaderValue.TryParse(mediaType, out var parsed)) + { + return parsed.Encoding; + } + + return default; + } +} diff --git a/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_MultiTenancyMiddlewareErrorPageBuilder_Tests.cs b/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_MultiTenancyMiddlewareErrorPageBuilder_Tests.cs index 8932745f29..2d2de48992 100644 --- a/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_MultiTenancyMiddlewareErrorPageBuilder_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.MultiTenancy.Tests/Volo/Abp/AspNetCore/MultiTenancy/AspNetCoreMultiTenancy_MultiTenancyMiddlewareErrorPageBuilder_Tests.cs @@ -1,9 +1,10 @@ -using System.Collections.Generic; -using System.Net; +using System.Net; +using System.Text.Json; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Shouldly; +using Volo.Abp.Http; using Xunit; namespace Volo.Abp.AspNetCore.MultiTenancy; @@ -23,4 +24,17 @@ public class AspNetCoreMultiTenancy_MultiTenancyMiddlewareErrorPageBuilder_Tests var result = await GetResponseAsStringAsync($"http://abp.io?{_options.TenantKey}=", HttpStatusCode.NotFound); result.ShouldNotContain(""); } + + [Fact] + public async Task MultiTenancyMiddlewareErrorPageBuilder_Ajax_Test() + { + using (var response = await GetResponseAsync($"http://abp.io?{_options.TenantKey}=abpio", HttpStatusCode.NotFound, xmlHttpRequest: true)) + { + var result = await response.Content.ReadAsStringAsync(); + var error = JsonSerializer.Deserialize(result, new JsonSerializerOptions {PropertyNamingPolicy = JsonNamingPolicy.CamelCase}); + error.Error.ShouldNotBeNull(); + error.Error.Message.ShouldBe("Tenant not found!"); + error.Error.Details.ShouldBe("There is no tenant with the tenant id or name: abpio"); + } + } } From e025a3b1dc6127b7696981ed6bfc39edfcaa6092 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Thu, 4 May 2023 12:09:08 +0300 Subject: [PATCH 02/65] fix IRemoteStreamContent issue on generate service --- .../packages/schematics/src/constants/volo.ts | 5 ++++- .../schematics/src/enums/binding-source-id.ts | 1 + .../packages/schematics/src/models/method.ts | 3 ++- .../packages/schematics/src/utils/service.ts | 16 +++++++++++++++- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/constants/volo.ts b/npm/ng-packs/packages/schematics/src/constants/volo.ts index d45a4b9e72..f42f4ed196 100644 --- a/npm/ng-packs/packages/schematics/src/constants/volo.ts +++ b/npm/ng-packs/packages/schematics/src/constants/volo.ts @@ -1,2 +1,5 @@ export const VOLO_REGEX = /^Volo\.Abp\.(Application\.Dtos|ObjectExtending)/; -export const VOLO_REMOTE_STREAM_CONTENT = 'Volo.Abp.Content.IRemoteStreamContent' +export const VOLO_REMOTE_STREAM_CONTENT = [ + 'Volo.Abp.Content.IRemoteStreamContent', + 'Volo.Abp.Content.RemoteStreamContent', +]; diff --git a/npm/ng-packs/packages/schematics/src/enums/binding-source-id.ts b/npm/ng-packs/packages/schematics/src/enums/binding-source-id.ts index 1e4e65c5f5..308b8dfc32 100644 --- a/npm/ng-packs/packages/schematics/src/enums/binding-source-id.ts +++ b/npm/ng-packs/packages/schematics/src/enums/binding-source-id.ts @@ -3,4 +3,5 @@ export enum eBindingSourceId { Model = 'ModelBinding', Path = 'Path', Query = 'Query', + FormFile = 'FormFile', } diff --git a/npm/ng-packs/packages/schematics/src/models/method.ts b/npm/ng-packs/packages/schematics/src/models/method.ts index 6e86853ec0..043df6d458 100644 --- a/npm/ng-packs/packages/schematics/src/models/method.ts +++ b/npm/ng-packs/packages/schematics/src/models/method.ts @@ -59,6 +59,7 @@ export class Body { case eBindingSourceId.Query: this.params.push(paramName === value ? value : `${getParamName(paramName)}: ${value}`); break; + case eBindingSourceId.FormFile: case eBindingSourceId.Body: this.body = value; break; @@ -78,7 +79,7 @@ export class Body { } isBlobMethod() { - return this.responseTypeWithNamespace === VOLO_REMOTE_STREAM_CONTENT; + return VOLO_REMOTE_STREAM_CONTENT.some(x => x === this.responseTypeWithNamespace); } private setUrlQuotes() { diff --git a/npm/ng-packs/packages/schematics/src/utils/service.ts b/npm/ng-packs/packages/schematics/src/utils/service.ts index 0b633a8dd5..22e17233a6 100644 --- a/npm/ng-packs/packages/schematics/src/utils/service.ts +++ b/npm/ng-packs/packages/schematics/src/utils/service.ts @@ -55,9 +55,12 @@ export function createControllerToServiceMapper({ function getTypesWithoutIRemoteStreamContent(types: Record) { const newType = { ...types }; - delete newType[VOLO_REMOTE_STREAM_CONTENT]; + VOLO_REMOTE_STREAM_CONTENT.forEach(fileType => { + delete newType[fileType]; + }); return newType; } + function sortMethods(methods: Method[]) { methods.sort((a, b) => (a.signature.name > b.signature.name ? 1 : -1)); } @@ -99,7 +102,14 @@ export function createActionToSignatureMapper() { ...action.parametersOnMethod, ...(versionParameter ? [versionParameter] : []), ]; + signature.parameters = parameters.map(p => { + const isFormData = isRemoteStreamContent(p.typeSimple); + if (isFormData) { + const formDataParameter = new Property({ name: p.name, type: 'FormData' }); + formDataParameter.setOptional(false); + return formDataParameter; + } const type = adaptType(p.typeSimple); const parameter = new Property({ name: p.name, type }); parameter.setDefault(p.defaultValue); @@ -112,6 +122,10 @@ export function createActionToSignatureMapper() { }; } +export function isRemoteStreamContent(type: string) { + return VOLO_REMOTE_STREAM_CONTENT.some(x => x === type); +} + function getMethodNameFromAction(action: Action): string { return action.uniqueName.split('Async')[0]; } From 9651fc22d8aed7b38fb1efa4bacf3f459b767307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Thu, 4 May 2023 15:20:26 +0300 Subject: [PATCH 03/65] blogging module: member page has been edited and improvements have been made to the shipment detail page --- ...70814_Added_BlogUser_Optionals.Designer.cs | 1489 +++++++++++++++++ ...20230504070814_Added_BlogUser_Optionals.cs | 226 +++ .../BloggingTestAppDbContextModelSnapshot.cs | 162 +- .../CustomIdentityBlogUserUpdateDto.cs | 38 + .../Blogging/Members/IMemberAppService.cs | 2 + .../Volo/Blogging/Posts/BlogUserDto.cs | 18 + .../Volo/Blogging/Members/MemberAppService.cs | 17 + .../Blogging/Localization/Resources/en.json | 13 +- .../Volo/Blogging/Users/UserConsts.cs | 22 + .../Volo/Blogging/Users/BlogUser.cs | 22 + ...BloggingDbContextModelBuilderExtensions.cs | 10 +- .../MembersClientProxy.Generated.cs | 8 + .../Pages/Blogs/Posts/Detail.cshtml | 53 + .../Pages/Blogs/Posts/Detail.cshtml.cs | 3 + .../Pages/Members/Index.cshtml | 106 +- .../Pages/Members/Index.cshtml.cs | 11 + 16 files changed, 2192 insertions(+), 8 deletions(-) create mode 100644 modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20230504070814_Added_BlogUser_Optionals.Designer.cs create mode 100644 modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20230504070814_Added_BlogUser_Optionals.cs create mode 100644 modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Members/CustomIdentityBlogUserUpdateDto.cs create mode 100644 modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Users/UserConsts.cs diff --git a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20230504070814_Added_BlogUser_Optionals.Designer.cs b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20230504070814_Added_BlogUser_Optionals.Designer.cs new file mode 100644 index 0000000000..6386b0eb88 --- /dev/null +++ b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20230504070814_Added_BlogUser_Optionals.Designer.cs @@ -0,0 +1,1489 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; +using Volo.BloggingTestApp.EntityFrameworkCore; + +#nullable disable + +namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations +{ + [DbContext(typeof(BloggingTestAppDbContext))] + [Migration("20230504070814_Added_BlogUser_Optionals")] + partial class AddedBlogUserOptionals + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContainerId") + .HasColumnType("uniqueidentifier"); + + b.Property("Content") + .HasMaxLength(2147483647) + .HasColumnType("varbinary(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ContainerId"); + + b.HasIndex("TenantId", "ContainerId", "Name"); + + b.ToTable("AbpBlobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name"); + + b.ToTable("AbpBlobContainers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("bit"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Blogging.Blogs.Blog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)") + .HasColumnName("Description"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Name"); + + b.Property("ShortName") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)") + .HasColumnName("ShortName"); + + b.HasKey("Id"); + + b.ToTable("BlgBlogs", (string)null); + }); + + modelBuilder.Entity("Volo.Blogging.Comments.Comment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("PostId") + .HasColumnType("uniqueidentifier") + .HasColumnName("PostId"); + + b.Property("RepliedCommentId") + .HasColumnType("uniqueidentifier") + .HasColumnName("RepliedCommentId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)") + .HasColumnName("Text"); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.HasIndex("RepliedCommentId"); + + b.ToTable("BlgComments", (string)null); + }); + + modelBuilder.Entity("Volo.Blogging.Posts.Post", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("BlogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("BlogId"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Content") + .HasMaxLength(1048576) + .HasColumnType("nvarchar(max)") + .HasColumnName("Content"); + + b.Property("CoverImage") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("CoverImage"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)") + .HasColumnName("Description"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ReadCount") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("Title"); + + b.Property("Url") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Url"); + + b.HasKey("Id"); + + b.HasIndex("BlogId"); + + b.ToTable("BlgPosts", (string)null); + }); + + modelBuilder.Entity("Volo.Blogging.Posts.PostTag", b => + { + b.Property("PostId") + .HasColumnType("uniqueidentifier") + .HasColumnName("PostId"); + + b.Property("TagId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TagId"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.HasKey("PostId", "TagId"); + + b.HasIndex("TagId"); + + b.ToTable("BlgPostTags", (string)null); + }); + + modelBuilder.Entity("Volo.Blogging.Tagging.Tag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("BlogId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("Description"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("UsageCount") + .HasColumnType("int") + .HasColumnName("UsageCount"); + + b.HasKey("Id"); + + b.ToTable("BlgTags", (string)null); + }); + + modelBuilder.Entity("Volo.Blogging.Users.BlogUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Biography") + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)") + .HasColumnName("Biography"); + + b.Property("Company") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("Company"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Github") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Github"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IsActive"); + + b.Property("JobTitle") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)") + .HasColumnName("JobTitle"); + + b.Property("Linkedin") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Linkedin"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Twitter") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Twitter"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.Property("WebSite") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("WebSite"); + + b.HasKey("Id"); + + b.ToTable("BlgUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => + { + b.HasOne("Volo.Abp.BlobStoring.Database.DatabaseBlobContainer", null) + .WithMany() + .HasForeignKey("ContainerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Blogging.Comments.Comment", b => + { + b.HasOne("Volo.Blogging.Posts.Post", null) + .WithMany() + .HasForeignKey("PostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Blogging.Comments.Comment", null) + .WithMany() + .HasForeignKey("RepliedCommentId"); + }); + + modelBuilder.Entity("Volo.Blogging.Posts.Post", b => + { + b.HasOne("Volo.Blogging.Blogs.Blog", null) + .WithMany() + .HasForeignKey("BlogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Blogging.Posts.PostTag", b => + { + b.HasOne("Volo.Blogging.Posts.Post", null) + .WithMany("Tags") + .HasForeignKey("PostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Blogging.Tagging.Tag", null) + .WithMany() + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Blogging.Posts.Post", b => + { + b.Navigation("Tags"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20230504070814_Added_BlogUser_Optionals.cs b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20230504070814_Added_BlogUser_Optionals.cs new file mode 100644 index 0000000000..f84cefc9f8 --- /dev/null +++ b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/20230504070814_Added_BlogUser_Optionals.cs @@ -0,0 +1,226 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations +{ + /// + public partial class AddedBlogUserOptionals : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Biography", + table: "BlgUsers", + type: "nvarchar(1000)", + maxLength: 1000, + nullable: true); + + migrationBuilder.AddColumn( + name: "Company", + table: "BlgUsers", + type: "nvarchar(128)", + maxLength: 128, + nullable: true); + + migrationBuilder.AddColumn( + name: "Github", + table: "BlgUsers", + type: "nvarchar(64)", + maxLength: 64, + nullable: true); + + migrationBuilder.AddColumn( + name: "JobTitle", + table: "BlgUsers", + type: "nvarchar(32)", + maxLength: 32, + nullable: true); + + migrationBuilder.AddColumn( + name: "Linkedin", + table: "BlgUsers", + type: "nvarchar(64)", + maxLength: 64, + nullable: true); + + migrationBuilder.AddColumn( + name: "Twitter", + table: "BlgUsers", + type: "nvarchar(64)", + maxLength: 64, + nullable: true); + + migrationBuilder.AddColumn( + name: "WebSite", + table: "BlgUsers", + type: "nvarchar(256)", + maxLength: 256, + nullable: true); + + migrationBuilder.AddColumn( + name: "EntityVersion", + table: "AbpUsers", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "LastPasswordChangeTime", + table: "AbpUsers", + type: "datetimeoffset", + nullable: true); + + migrationBuilder.AddColumn( + name: "ShouldChangePasswordOnNextLogin", + table: "AbpUsers", + type: "bit", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "EntityVersion", + table: "AbpRoles", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "EntityVersion", + table: "AbpOrganizationUnits", + type: "int", + nullable: false, + defaultValue: 0); + + migrationBuilder.CreateTable( + name: "AbpPermissionGroups", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGroups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + GroupName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ParentName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsEnabled = table.Column(type: "bit", nullable: false), + MultiTenancySide = table.Column(type: "tinyint", nullable: false), + Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + StateCheckers = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpUserDelegations", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), + TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), + StartTime = table.Column(type: "datetime2", nullable: false), + EndTime = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserDelegations", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGroups_Name", + table: "AbpPermissionGroups", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissions_GroupName", + table: "AbpPermissions", + column: "GroupName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissions_Name", + table: "AbpPermissions", + column: "Name", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpPermissionGroups"); + + migrationBuilder.DropTable( + name: "AbpPermissions"); + + migrationBuilder.DropTable( + name: "AbpUserDelegations"); + + migrationBuilder.DropColumn( + name: "Biography", + table: "BlgUsers"); + + migrationBuilder.DropColumn( + name: "Company", + table: "BlgUsers"); + + migrationBuilder.DropColumn( + name: "Github", + table: "BlgUsers"); + + migrationBuilder.DropColumn( + name: "JobTitle", + table: "BlgUsers"); + + migrationBuilder.DropColumn( + name: "Linkedin", + table: "BlgUsers"); + + migrationBuilder.DropColumn( + name: "Twitter", + table: "BlgUsers"); + + migrationBuilder.DropColumn( + name: "WebSite", + table: "BlgUsers"); + + migrationBuilder.DropColumn( + name: "EntityVersion", + table: "AbpUsers"); + + migrationBuilder.DropColumn( + name: "LastPasswordChangeTime", + table: "AbpUsers"); + + migrationBuilder.DropColumn( + name: "ShouldChangePasswordOnNextLogin", + table: "AbpUsers"); + + migrationBuilder.DropColumn( + name: "EntityVersion", + table: "AbpRoles"); + + migrationBuilder.DropColumn( + name: "EntityVersion", + table: "AbpOrganizationUnits"); + } + } +} diff --git a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/BloggingTestAppDbContextModelSnapshot.cs b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/BloggingTestAppDbContextModelSnapshot.cs index 882783d768..b6dc962eaf 100644 --- a/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/BloggingTestAppDbContextModelSnapshot.cs +++ b/modules/blogging/app/Volo.BloggingTestApp.EntityFrameworkCore/Migrations/BloggingTestAppDbContextModelSnapshot.cs @@ -19,10 +19,10 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("ProductVersion", "7.0.1") .HasAnnotation("Relational:MaxIdentifierLength", 128); - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); modelBuilder.Entity("Volo.Abp.BlobStoring.Database.DatabaseBlob", b => { @@ -183,6 +183,9 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations .HasColumnType("nvarchar(40)") .HasColumnName("ConcurrencyStamp"); + b.Property("EntityVersion") + .HasColumnType("int"); + b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -369,6 +372,9 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations .HasDefaultValue(false) .HasColumnName("EmailConfirmed"); + b.Property("EntityVersion") + .HasColumnType("int"); + b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -397,6 +403,9 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("LastModifierId"); + b.Property("LastPasswordChangeTime") + .HasColumnType("datetimeoffset"); + b.Property("LockoutEnabled") .ValueGeneratedOnAdd() .HasColumnType("bit") @@ -445,6 +454,9 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations .HasColumnType("nvarchar(256)") .HasColumnName("SecurityStamp"); + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("bit"); + b.Property("Surname") .HasMaxLength(64) .HasColumnType("nvarchar(64)") @@ -507,6 +519,33 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations b.ToTable("AbpUserClaims", (string)null); }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => { b.Property("UserId") @@ -647,6 +686,9 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations .HasColumnType("nvarchar(128)") .HasColumnName("DisplayName"); + b.Property("EntityVersion") + .HasColumnType("int"); + b.Property("ExtraProperties") .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); @@ -708,6 +750,59 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations b.ToTable("AbpOrganizationUnitRoles", (string)null); }); + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => { b.Property("Id") @@ -742,6 +837,34 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations b.ToTable("AbpPermissionGrants", (string)null); }); + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => { b.Property("Id") @@ -1099,6 +1222,16 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("Biography") + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)") + .HasColumnName("Biography"); + + b.Property("Company") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("Company"); + b.Property("ConcurrencyStamp") .IsConcurrencyToken() .HasMaxLength(40) @@ -1121,10 +1254,25 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations .HasColumnType("nvarchar(max)") .HasColumnName("ExtraProperties"); + b.Property("Github") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Github"); + b.Property("IsActive") .HasColumnType("bit") .HasColumnName("IsActive"); + b.Property("JobTitle") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)") + .HasColumnName("JobTitle"); + + b.Property("Linkedin") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Linkedin"); + b.Property("Name") .HasMaxLength(64) .HasColumnType("nvarchar(64)") @@ -1150,12 +1298,22 @@ namespace Volo.BloggingTestApp.EntityFrameworkCore.Migrations .HasColumnType("uniqueidentifier") .HasColumnName("TenantId"); + b.Property("Twitter") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Twitter"); + b.Property("UserName") .IsRequired() .HasMaxLength(256) .HasColumnType("nvarchar(256)") .HasColumnName("UserName"); + b.Property("WebSite") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("WebSite"); + b.HasKey("Id"); b.ToTable("BlgUsers", (string)null); diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Members/CustomIdentityBlogUserUpdateDto.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Members/CustomIdentityBlogUserUpdateDto.cs new file mode 100644 index 0000000000..8cd675ec1f --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Members/CustomIdentityBlogUserUpdateDto.cs @@ -0,0 +1,38 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Blogging.Users; + +namespace Volo.Blogging.Members; + +public class CustomIdentityBlogUserUpdateDto +{ + [StringLength(UserConsts.MaxNameLength)] + public string Name { get; set; } + + [StringLength(UserConsts.MaxSurnameLength)] + public string Surname { get; set; } + + [RegularExpression(@"^((?!\s).)*$", ErrorMessage= "PersonalSiteUrlValidationMessage")] + [StringLength(UserConsts.MaxWebSiteLength)] + public string WebSite { get; set; } + + [RegularExpression(@"^((?!\s).)*$", ErrorMessage= "TwitterUserNameValidationMessage")] + [StringLength(UserConsts.MaxTwitterLength)] + public string Twitter { get; set; } + + [RegularExpression(@"^((?!\s).)*$", ErrorMessage= "GitHubUserNameValidationMessage")] + [StringLength(UserConsts.MaxGithubLength)] + public string Github { get; set; } + + [RegularExpression(@"^((?!\s).)*$", ErrorMessage= "LinkedinUrlValidationMessage")] + [StringLength(UserConsts.MaxLinkedinLength)] + public string Linkedin { get; set; } + + [StringLength(UserConsts.MaxCompanyLength)] + public string Company { get; set; } + + [StringLength(UserConsts.MaxJobTitleLength)] + public string JobTitle { get; set; } + + [StringLength(UserConsts.MaxBiographyLength)] + public string Biography { get; set; } +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Members/IMemberAppService.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Members/IMemberAppService.cs index 5e06d20956..a085d039ac 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Members/IMemberAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Members/IMemberAppService.cs @@ -7,4 +7,6 @@ namespace Volo.Blogging.Members; public interface IMemberAppService : IApplicationService { Task FindAsync(string username); + + Task UpdateUserProfileAsync(CustomIdentityBlogUserUpdateDto input); } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/BlogUserDto.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/BlogUserDto.cs index eb4f707e34..23e65b9e95 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/BlogUserDto.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/BlogUserDto.cs @@ -8,6 +8,10 @@ namespace Volo.Blogging.Posts { public Guid? TenantId { get; set; } + public string Name { get; set; } + + public string Surname { get; set; } + public string UserName { get; set; } public string Email { get; set; } @@ -17,7 +21,21 @@ namespace Volo.Blogging.Posts public string PhoneNumber { get; set; } public bool PhoneNumberConfirmed { get; set; } + + public string WebSite { get; set; } + + public string Twitter { get; set; } + + public string Github { get; set; } + + public string Linkedin { get; set; } + + public string Company { get; set; } + public string JobTitle { get; set; } + + public string Biography { get; set; } + public Dictionary ExtraProperties { get; set; } } } diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Members/MemberAppService.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Members/MemberAppService.cs index e27c0baefa..afc5eac0b6 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Members/MemberAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Members/MemberAppService.cs @@ -26,4 +26,21 @@ public class MemberAppService : BloggingAppServiceBase, IMemberAppService return ObjectMapper.Map(user); } + + public async Task UpdateUserProfileAsync(CustomIdentityBlogUserUpdateDto input) + { + var user = await _userRepository.GetAsync(CurrentUser.Id.Value); + + user.Name = input.Name; + user.Surname = input.Surname; + user.WebSite = input.WebSite; + user.Twitter = input.Twitter; + user.Github = input.Github; + user.Linkedin = input.Linkedin; + user.Company = input.Company; + user.JobTitle = input.JobTitle; + user.Biography = input.Biography; + + await _userRepository.UpdateAsync(user); + } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json index d4bfede795..d9c7595247 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json @@ -61,6 +61,17 @@ "FileUploadInfo": "Drag, drop, or paste a copied image.", "PostDescriptionHint": "* Will be rendered in the article link preview, supports HTML", "ReadMore": "Continue Reading", - "MemberNotPublishedPostYet": "No posts yet!" + "MemberNotPublishedPostYet": "No posts yet!", + "UpdateUserWebSiteInfo": "Example: https://johndoe.com", + "UpdateUserTwitterInfo": "Example: johndoe", + "UpdateUserGithubInfo": "Example: johndoe", + "UpdateUserLinkedinInfo": "Example: https://www.linkedin.com/...", + "UpdateUserCompanyInfo": "Example: Volosoft", + "UpdateUserJobTitleInfo": "Example: Software Developer", + "WebSite": "Web Site", + "UserName": "Username", + "FullURL": "Full URL", + "JobTitle": "Job Title", + "PersonalWebsite": "PERSONAL WEBSITE" } } diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Users/UserConsts.cs b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Users/UserConsts.cs new file mode 100644 index 0000000000..3ad08da0d2 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Users/UserConsts.cs @@ -0,0 +1,22 @@ +namespace Volo.Blogging.Users; + +public class UserConsts +{ + public const int MaxNameLength = 64; + + public const int MaxSurnameLength = 64; + + public const int MaxBiographyLength = 1000; + + public const int MaxWebSiteLength = 256; + + public const int MaxTwitterLength = 64; + + public const int MaxGithubLength = 64; + + public const int MaxLinkedinLength = 64; + + public const int MaxCompanyLength = 128; + + public const int MaxJobTitleLength = 32; +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs index 4b7e5b63e8..c7dfa77650 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs @@ -1,4 +1,5 @@ using System; +using JetBrains.Annotations; using Volo.Abp.Domain.Entities; using Volo.Abp.Users; @@ -23,6 +24,27 @@ namespace Volo.Blogging.Users public virtual string PhoneNumber { get; protected set; } public virtual bool PhoneNumberConfirmed { get; protected set; } + + [CanBeNull] + public string WebSite { get; set; } + + [CanBeNull] + public string Twitter { get; set; } + + [CanBeNull] + public string Github { get; set; } + + [CanBeNull] + public string Linkedin { get; set; } + + [CanBeNull] + public string Company { get; set; } + + [CanBeNull] + public string JobTitle { get; set; } + + [CanBeNull] + public string Biography { get; set; } protected BlogUser() { diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs index abf96ebcef..5388c4f313 100644 --- a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs +++ b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/EntityFrameworkCore/BloggingDbContextModelBuilderExtensions.cs @@ -26,8 +26,16 @@ namespace Volo.Blogging.EntityFrameworkCore builder.Entity(b => { b.ToTable(AbpBloggingDbProperties.DbTablePrefix + "Users", AbpBloggingDbProperties.DbSchema); - b.ConfigureByConvention(); + + b.Property(nameof(BlogUser.Biography)).HasMaxLength(UserConsts.MaxBiographyLength).HasColumnName(nameof(BlogUser.Biography)); + b.Property(nameof(BlogUser.WebSite)).HasMaxLength(UserConsts.MaxWebSiteLength).HasColumnName(nameof(BlogUser.WebSite)); + b.Property(nameof(BlogUser.Twitter)).HasMaxLength(UserConsts.MaxTwitterLength).HasColumnName(nameof(BlogUser.Twitter)); + b.Property(nameof(BlogUser.Github)).HasMaxLength(UserConsts.MaxGithubLength).HasColumnName(nameof(BlogUser.Github)); + b.Property(nameof(BlogUser.Linkedin)).HasMaxLength(UserConsts.MaxLinkedinLength).HasColumnName(nameof(BlogUser.Linkedin)); + b.Property(nameof(BlogUser.Company)).HasMaxLength(UserConsts.MaxCompanyLength).HasColumnName(nameof(BlogUser.Company)); + b.Property(nameof(BlogUser.JobTitle)).HasMaxLength(UserConsts.MaxJobTitleLength).HasColumnName(nameof(BlogUser.JobTitle)); + b.ConfigureAbpUser(); b.ApplyObjectExtensionMappings(); diff --git a/modules/blogging/src/Volo.Blogging.HttpApi.Client/ClientProxies/MembersClientProxy.Generated.cs b/modules/blogging/src/Volo.Blogging.HttpApi.Client/ClientProxies/MembersClientProxy.Generated.cs index dfabaed346..4a563e79e3 100644 --- a/modules/blogging/src/Volo.Blogging.HttpApi.Client/ClientProxies/MembersClientProxy.Generated.cs +++ b/modules/blogging/src/Volo.Blogging.HttpApi.Client/ClientProxies/MembersClientProxy.Generated.cs @@ -25,4 +25,12 @@ public partial class MembersClientProxy : ClientProxyBase, IM { typeof(string), username } }); } + + public Task UpdateUserProfileAsync(CustomIdentityBlogUserUpdateDto input) + { + return RequestAsync(nameof(UpdateUserProfileAsync), new ClientProxyRequestTypeValue + { + { typeof(CustomIdentityBlogUserUpdateDto), input } + }); + } } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml index df6ab306e0..3b249ffff7 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml @@ -1,4 +1,5 @@ @page +@using System.Globalization @using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Http.Extensions @using Microsoft.Extensions.Options @@ -11,6 +12,13 @@ @inject IAuthorizationService Authorization @inject IOptionsSnapshot twitterOptions @using Microsoft.AspNetCore.Mvc.Localization +@using Microsoft.AspNetCore.Mvc.TagHelpers +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid +@using Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers @using Volo.Blogging.Localization @using Volo.Blogging.Pages.Blog @inject IHtmlLocalizer L @@ -355,6 +363,51 @@ { @L["LeaveComment"] } +
+
+

More from @CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Model.Post.Writer.UserName)

+ @for (var index = 1; index < Model.PostsList.Count && index < 5; index++) + { + var post = Model.PostsList[index]; +
+
+ + + + + + + @L["Blog"].Value.ToUpper() + +
+
+ +

+ + @post.Title + +

+

+ + @post.Description.TruncateWithPostfix(150) + + @L["ReadMore"] +

+
+
+
+ +
+
+
+ } +
+
diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs index 0dd95c0769..f902d849f9 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs @@ -40,6 +40,8 @@ namespace Volo.Blogging.Pages.Blog.Posts public BlogDto Blog { get; set; } + public List PostsList { get; set; } + public DetailModel(IPostAppService postAppService, IBlogAppService blogAppService, ICommentAppService commentAppService) { _postAppService = postAppService; @@ -79,6 +81,7 @@ namespace Volo.Blogging.Pages.Blog.Posts { Blog = await _blogAppService.GetByShortNameAsync(BlogShortName); Post = await _postAppService.GetForReadingAsync(new GetPostInput { BlogId = Blog.Id, Url = PostUrl }); + PostsList = await _postAppService.GetListByUserIdAsync(Post.Writer.Id); CommentsWithReplies = await _commentAppService.GetHierarchicalListOfPostAsync(Post.Id); CountComments(); } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml index 62841ae158..58ab94f310 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml @@ -1,7 +1,12 @@ @page +@using System.Globalization @using Microsoft.Extensions.Localization +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab +@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Utils @using Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers @using Volo.Abp.Users +@using Volo.Blogging +@using Volo.Blogging.Areas.Blog.Helpers.TagHelpers @using Volo.Blogging.Localization @model Volo.Blogging.Pages.Members.IndexModel @inject IStringLocalizer L @@ -23,12 +28,69 @@
- @if (Model.User.UserName != null) + @if (Model.User.Name != null && Model.User.Surname != null) { -

@Model.User.UserName

+

@Model.User.Name @Model.User.Surname

} - @L["UserName"].Value.ToUpper() + @if (Model.User.Company != null) + { +

@Model.User.Company

+ } + @if (Model.User.JobTitle != null) + { +

@Model.User.JobTitle

+ } + + @L["UserName"].Value.ToUpper()
@Model.User.UserName
+ + @if (Model.User.WebSite != null) + { + @L["PersonalWebsite"].Value.ToUpper() +
+ @Model.User.WebSite +
+ } + + + @if (Model.User.Twitter != null || Model.User.Github != null || Model.User.Linkedin != null) + { + @L["Social"].Value.ToUpper() +
    + @if (Model.User.Twitter != null) + { +
  • + +
    +
    +
  • + } + @if (Model.User.Github != null) + { +
  • + +
    +
    +
  • + } + @if (Model.User.Linkedin != null) + { +
  • + +
    +
    +
  • + } +
+ } + + @if (Model.User.Biography != null) + { +
+ @L["Biography"].Value.ToUpper() +

@Model.User.Biography

+
+ } @@ -36,7 +98,7 @@ {
- +
@foreach (var post in Model.Posts) { @@ -80,6 +142,42 @@ }
+ @if (CurrentUser.UserName == Model.User.UserName) + { + +
+
+ + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ +
+
+
+
+ }
} diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml.cs index 8018ea23e8..43cd31fd4a 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml.cs @@ -23,6 +23,9 @@ public class IndexModel : AbpPageModel public Dictionary BlogShortNameMap { get; set; } + [BindProperty] + public CustomIdentityBlogUserUpdateDto CustomUserUpdate { get; set; } + public IndexModel(IPostAppService postAppService, IMemberAppService memberAppService, IBlogAppService blogAppService) { _postAppService = postAppService; @@ -51,6 +54,14 @@ public class IndexModel : AbpPageModel return Page(); } + + public async Task OnPostAsync() + { + await _memberAppService.UpdateUserProfileAsync(CustomUserUpdate); + + return Redirect($"/members/{CurrentUser.UserName}"); + } + public string GetBlogPostUrl(PostWithDetailsDto post) { var blogShortName = BlogShortNameMap[post.BlogId]; From 98fa8e06419e7f6bc5468762548908f9b4f20225 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Thu, 4 May 2023 18:05:53 +0300 Subject: [PATCH 04/65] fix IRemoteStreamContent[] issue on generate service --- .../packages/schematics/src/utils/service.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/service.ts b/npm/ng-packs/packages/schematics/src/utils/service.ts index 22e17233a6..b32dd5fba5 100644 --- a/npm/ng-packs/packages/schematics/src/utils/service.ts +++ b/npm/ng-packs/packages/schematics/src/utils/service.ts @@ -104,11 +104,10 @@ export function createActionToSignatureMapper() { ]; signature.parameters = parameters.map(p => { - const isFormData = isRemoteStreamContent(p.typeSimple); - if (isFormData) { - const formDataParameter = new Property({ name: p.name, type: 'FormData' }); - formDataParameter.setOptional(false); - return formDataParameter; + const isFormData = isRemoteStreamContent(p.type); + const isFormArray = isRemoteStreamContentArray(p.type); + if (isFormData || isFormArray) { + return new Property({ name: p.name, type: 'FormData' }); } const type = adaptType(p.typeSimple); const parameter = new Property({ name: p.name, type }); @@ -126,6 +125,10 @@ export function isRemoteStreamContent(type: string) { return VOLO_REMOTE_STREAM_CONTENT.some(x => x === type); } +export function isRemoteStreamContentArray(type: string) { + return VOLO_REMOTE_STREAM_CONTENT.map(x => `${x}[]`).some(x => x === type); +} + function getMethodNameFromAction(action: Action): string { return action.uniqueName.split('Async')[0]; } From d9c3818d6273c334a08c97e2282675aad3b5c353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Fri, 5 May 2023 16:10:35 +0300 Subject: [PATCH 05/65] blogging: changes applied to user-interface --- .../Pages/Blogs/Posts/Detail.cshtml | 701 ++++++++++-------- .../Pages/Blogs/Posts/Detail.cshtml.cs | 6 + .../Pages/Blogs/Posts/detail.js | 10 + .../Pages/Blogs/Shared/Styles/blog.css | 6 + .../Volo.Blogging.Web/Pages/Members/Index.css | 5 +- 5 files changed, 417 insertions(+), 311 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml index 3b249ffff7..37780167bb 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml @@ -13,12 +13,6 @@ @inject IOptionsSnapshot twitterOptions @using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.AspNetCore.Mvc.TagHelpers -@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert -@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote -@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button -@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form -@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Grid -@using Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers @using Volo.Blogging.Localization @using Volo.Blogging.Pages.Blog @inject IHtmlLocalizer L @@ -57,359 +51,446 @@ }
- -
-
-
-
-
-
-

@Model.Post.Title

+ +
+
+
+
+
+
+

@Model.Post.Title

+
+ +
+
+
+ Cover Image +
+
+
+
+
+
+
+ @if (Model.Post.Writer != null) + { + + User Avatar + + } +
+ +
+

Last Blog Posts

+ @for (var index = 0; index < Model.LatestPosts.Count && index < 4; index++) + { + if (Model.LatestPosts[index].Id != Model.Post.Id) + { + var post = Model.LatestPosts[index]; + +
+
-
- Cover Image -
-
-
-
+
+ } + }
+
+
+ +
+
+
+

+ @Html.Raw(BloggingPageHelper.RenderMarkdownToHtml(Model.Post.Content)) +

+
+
+
+ +
+
+ +
+
+@if (Model.Post.Tags.Count > 0) +{ +
+
@L["TagsInThisArticle"]
+ @foreach (var tag in Model.Post.Tags) + { + @tag.Name + } +
+} + +@if (Model.CommentsWithReplies.Count > 0) +{ + + +

@L["CommentWithCount", @Model.CommentCount]

+ @if (hasCommentingPermission) + { + @L["LeaveComment"] + } + else + { + @L["LeaveComment"] + } +
+
-
-
-
-

- @Html.Raw(BloggingPageHelper.RenderMarkdownToHtml(Model.Post.Content)) +

+ @foreach (var commentWithRepliesDto in Model.CommentsWithReplies) + { +
+ User Avatar +
+
+ @(commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName) + @BloggingPageHelper.ConvertDatetimeToTimeAgo(commentWithRepliesDto.Comment.CreationTime) +
+

+ @commentWithRepliesDto.Comment.Text

-
-
-
+
-
-
-
-
- @(L["ShareOn"].Value + " :") - - Twitter - - - Linkedin - - - E-mail - -
- @if (Model.Post.Tags.Count > 0) - { -
-
@L["TagsInThisArticle"]
- @foreach (var tag in Model.Post.Tags) + @if (hasCommentingPermission) { - @tag.Name + + @L["Reply"] + } -
- } - @if (Model.CommentsWithReplies.Count > 0) - { - - -

@L["CommentWithCount", @Model.CommentCount]

- @if (hasCommentingPermission) - { - @L["LeaveComment"] - } - else - { - @L["LeaveComment"] - } -
-
+ @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Delete) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) + { + | + + @L["Delete"] + + } -
- @foreach (var commentWithRepliesDto in Model.CommentsWithReplies) + @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) { -
- User Avatar -
-
- @(commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName) - @BloggingPageHelper.ConvertDatetimeToTimeAgo(commentWithRepliesDto.Comment.CreationTime) -
-

- @commentWithRepliesDto.Comment.Text -

-
+ | + + @L["Edit"] + + } +
- @if (hasCommentingPermission) - { - - @L["Reply"] - - } + @if (hasCommentingPermission) + { +
+
+

+ @L["ReplyTo", commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName] - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Delete) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { - | - - @L["Delete"] - - } +

+
+
+ + - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { - | - - @L["Edit"] - - } -
+
+ +
+ + + +
+
+
+ } + @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) + { +
+
+
+
+ + +
+ +
+ + + +
+
+
+ } + + @foreach (var reply in commentWithRepliesDto.Replies) + { +
+ User Avatar +
+
+ @(reply.Writer == null ? "" : reply.Writer.UserName) + @BloggingPageHelper.ConvertDatetimeToTimeAgo(reply.CreationTime) +
+

+ @reply.Text +

+
@if (hasCommentingPermission) { -
-
-

- @L["ReplyTo", commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName] - -

-
-
- - - -
- -
- - - -
-
-
+ + @L["Reply"] + } - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) + @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Delete) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) { -
-
-
-
- - -
- -
- - - -
-
-
+ | + + @L["Delete"] + } - @foreach (var reply in commentWithRepliesDto.Replies) + @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) { -
- User Avatar -
-
- @(reply.Writer == null ? "" : reply.Writer.UserName) - @BloggingPageHelper.ConvertDatetimeToTimeAgo(reply.CreationTime) -
-

- @reply.Text -

-
- - @if (hasCommentingPermission) - { - - @L["Reply"] - - } - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Delete) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { - | - - @L["Delete"] - - } - - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { - | - - @L["Edit"] - - } -
+ | + + @L["Edit"] + + } +
- @if (hasCommentingPermission) - { -
-
-

- @L["ReplyTo", commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName] -

-
-
- - -
- -
- - - -
-
+ @if (hasCommentingPermission) + { +
+
+

+ @L["ReplyTo", commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName] +

+
+
+ + +
+
- } - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) - { -
-
-
- - -
- -
- - - -
-
+ + + +
+
+
+ } + @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Update) || (CurrentUser.Id == commentWithRepliesDto.Comment.CreatorId)) + { +
+
+
+
+ +
+
- } + + +
- } -
-
- } -
- } - - @if (hasCommentingPermission) - { -
-
-

@L["LeaveComment"]

-
-
-
-
- - -
-
- - -
-
-
- } - else - { - @L["LeaveComment"] - } -
-
-

More from @CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Model.Post.Writer.UserName)

- @for (var index = 1; index < Model.PostsList.Count && index < 5; index++) - { - var post = Model.PostsList[index]; -
-
- - - - - - - @L["Blog"].Value.ToUpper() - -
-
- -

- - @post.Title - -

-

- - @post.Description.TruncateWithPostfix(150) - - @L["ReadMore"] -

-
-
-
- -
+ }
}
+ } +
+} + +@if (hasCommentingPermission) +{ +
+
+

@L["LeaveComment"]

+
+
+
+
+ + +
+ +
+ +
+} +else +{ + @L["LeaveComment"] +} +
+
+

More from @CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Model.Post.Writer.UserName)

+ @for (var index = 0; index < Model.PostsList.Count && index <= 5; index++) + { + if (Model.PostsList[index].Id != Model.Post.Id) + { + var post = Model.PostsList[index]; +
+
+ + + + + + + @L["Blog"].Value.ToUpper() + +
+
+ +

+ + @post.Title + +

+

+ + @post.Description.TruncateWithPostfix(150) + + @L["ReadMore"] +

+
+
+
+ +
+
+
+ } + + } +
+
+
+
+ +
+
+
diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs index f902d849f9..49bef9c549 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs @@ -41,6 +41,11 @@ namespace Volo.Blogging.Pages.Blog.Posts public BlogDto Blog { get; set; } public List PostsList { get; set; } + + public IReadOnlyList LatestPosts { get; set; } + + [BindProperty(SupportsGet = true)] + public string TagName { get; set; } public DetailModel(IPostAppService postAppService, IBlogAppService blogAppService, ICommentAppService commentAppService) { @@ -82,6 +87,7 @@ namespace Volo.Blogging.Pages.Blog.Posts Blog = await _blogAppService.GetByShortNameAsync(BlogShortName); Post = await _postAppService.GetForReadingAsync(new GetPostInput { BlogId = Blog.Id, Url = PostUrl }); PostsList = await _postAppService.GetListByUserIdAsync(Post.Writer.Id); + LatestPosts = (await _postAppService.GetListByBlogIdAndTagNameAsync(Blog.Id, TagName)).Items; CommentsWithReplies = await _commentAppService.GetHierarchicalListOfPostAsync(Post.Id); CountComments(); } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js index 7a0d0da168..b6d1a2d975 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js @@ -15,6 +15,12 @@ pageHeader + ' | ' + blogName + ' | ' + window.location.href ) ); + + $('#FacebookShareLink').attr( + 'href', + 'https://www.facebook.com/sharer/sharer.php?u=' + + encodeURI(window.location.href) + ); $('#LinkedinShareLink').attr( 'href', @@ -43,6 +49,10 @@ encodeURI(pageHeader + ' | ' + blogName) + '&' ); + + $(".copy-link").click(function() { + var copiedLink = $(this); + }); }; $('div .replyForm').hide(); diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css index 6aac0e363b..66328cb885 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css @@ -320,3 +320,9 @@ div.vs-blog { text-decoration: none; } div.vs-blog > .form-group { margin: 0 !important; } +.last-post-title{ + font-size: 0.9rem; + font-weight: 550; + text-decoration: none; + color: black; +} diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.css b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.css index 4c5167a694..668e566cba 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.css +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.css @@ -1,3 +1,6 @@ .post-desc { overflow-wrap: break-word; -} \ No newline at end of file +} +a:not(#all-posts-tab,#edit-profile-tab) { + color: unset!important; +} From c0c7890435c76cded2bcb736ab358c9f720c8560 Mon Sep 17 00:00:00 2001 From: Masum ULU Date: Fri, 5 May 2023 17:36:56 +0300 Subject: [PATCH 06/65] bump up TS versions --- npm/ng-packs/package.json | 2 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../schematics/src/utils/angular/latest-versions/package.json | 2 +- npm/ng-packs/scripts/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index eff2999101..fd93b8be9b 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -127,7 +127,7 @@ "tsickle": "^0.39.1", "tslib": "^2.3.0", "tslint": "~6.1.0", - "typescript": "4.8.4", + "typescript": "~4.8.4", "zone.js": "0.11.4" }, "dependencies": {}, diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 1c0c39745a..2f9d5bd56b 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -15,7 +15,7 @@ "got": "^11.5.2", "jsonc-parser": "^2.3.0", "should-quote": "^1.0.0", - "typescript": "4.8.4" + "typescript": "~4.8.4" }, "devDependencies": { "@schematics/angular": "~14.2.1", diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/latest-versions/package.json b/npm/ng-packs/packages/schematics/src/utils/angular/latest-versions/package.json index c04d111f07..600b1c9fc1 100644 --- a/npm/ng-packs/packages/schematics/src/utils/angular/latest-versions/package.json +++ b/npm/ng-packs/packages/schematics/src/utils/angular/latest-versions/package.json @@ -17,7 +17,7 @@ "rxjs": "~7.5.0", "tslib": "^2.3.0", "ts-node": "~10.9.0", - "typescript": "~4.8.2", + "typescript": "~4.8.4", "zone.js": "~0.12.0" } } diff --git a/npm/ng-packs/scripts/package.json b/npm/ng-packs/scripts/package.json index 92cb001545..c187b58d44 100644 --- a/npm/ng-packs/scripts/package.json +++ b/npm/ng-packs/scripts/package.json @@ -27,6 +27,6 @@ "esm": "^3.2.25", "ts-node": "^10.9.1", "tsconfig-paths": "^3.9.0", - "typescript": "4.7.4" + "typescript": "~4.8.4" } } From afeaa7623aeea5237bcb00f166578e9eac4347a6 Mon Sep 17 00:00:00 2001 From: Masum ULU Date: Fri, 5 May 2023 19:28:22 +0300 Subject: [PATCH 07/65] fix lint error --- npm/ng-packs/packages/schematics/src/utils/methods.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/schematics/src/utils/methods.ts b/npm/ng-packs/packages/schematics/src/utils/methods.ts index 4c2684f1c0..6767adf540 100644 --- a/npm/ng-packs/packages/schematics/src/utils/methods.ts +++ b/npm/ng-packs/packages/schematics/src/utils/methods.ts @@ -1,6 +1,6 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires import { camel } from './text'; +// eslint-disable-next-line @typescript-eslint/no-var-requires const shouldQuote = require('should-quote'); export const getParamName = (paramName: string) => shouldQuote(paramName) ? `["${paramName}"]` : paramName; From 7d61b8e9434e9cf45d7704b0fd5d5c538c82f791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Mon, 8 May 2023 11:23:25 +0300 Subject: [PATCH 08/65] cms-kit: detail page edited and member page deficiencies completed --- .../Blogging/Localization/Resources/en.json | 3 ++- .../Pages/Blogs/Posts/Detail.cshtml | 24 ++++++++++------- .../Pages/Blogs/Posts/detail.js | 15 +++++++---- .../Pages/Blogs/Shared/Styles/blog.css | 26 +++++++++++++++++-- .../Pages/Members/Index.cshtml | 6 ++++- .../Volo.Blogging.Web/Pages/Members/Index.js | 12 +++++++++ 6 files changed, 67 insertions(+), 19 deletions(-) create mode 100644 modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json index d9c7595247..989926f760 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json @@ -72,6 +72,7 @@ "UserName": "Username", "FullURL": "Full URL", "JobTitle": "Job Title", - "PersonalWebsite": "PERSONAL WEBSITE" + "PersonalWebsite": "PERSONAL WEBSITE", + "EditProfile": "Edit Profile" } } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml index 37780167bb..790b04ccdf 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml @@ -52,7 +52,7 @@
-
+
@@ -114,9 +114,9 @@ - +
@@ -130,8 +130,8 @@
-
-
+
+
@if (Model.Post.Writer != null) { @@ -159,10 +159,14 @@

@Model.Post.Writer.JobTitle

}
+ @if (CurrentUser.UserName == Model.Post.Writer.UserName) + { + @L["EditProfile"] + }

Last Blog Posts

- @for (var index = 0; index < Model.LatestPosts.Count && index < 4; index++) + @for (var index = 0; index < Model.LatestPosts.Count && index < 5; index++) { if (Model.LatestPosts[index].Id != Model.Post.Id) { @@ -178,12 +182,12 @@ @if (post.Writer != null) { - User Avatar + User Avatar }
-
+
@(post.Writer.UserName) @@ -214,7 +218,7 @@

-
+
@@ -487,7 +491,7 @@ else
-
+
diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js index b6d1a2d975..59a148ef91 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js @@ -49,12 +49,17 @@ encodeURI(pageHeader + ' | ' + blogName) + '&' ); - - $(".copy-link").click(function() { - var copiedLink = $(this); - }); }; - + + $('#CopyLink').click(function (event) { + event.preventDefault(); + var $temp = $(''); + $('body').append($temp); + $temp.val(window.location.href).select(); + document.execCommand('copy'); + $temp.remove(); + }); + $('div .replyForm').hide(); $('div .editForm').hide(); diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css index 66328cb885..b24425f547 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css @@ -321,8 +321,30 @@ div.vs-blog { div.vs-blog > .form-group { margin: 0 !important; } .last-post-title{ - font-size: 0.9rem; - font-weight: 550; + font-size: 15px; + line-height: 20px; + font-weight: 700; + letter-spacing: 0px; text-decoration: none; color: black; } +.last-post-image{ + width: 30px; + height: 30px; + border-top-left-radius: 50%; + border-top-right-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; +} +.last-post-name{ + padding-right: 2px; + max-height: 16px; + padding-top: 0.5em; + padding-right: 0.5em; +} +#CopyLink{ + padding: 0; + border: none; + background: none; +} + diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml index 58ab94f310..d8fba6b491 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml @@ -15,6 +15,10 @@ ViewBag.Title = @Model.User.UserName.ToUpper() + " - " + L["Blogs"].Value; } +@section scripts { + +} + @section styles { } @@ -146,7 +150,7 @@ {
-
+ diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js new file mode 100644 index 0000000000..c20251820f --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js @@ -0,0 +1,12 @@ +$(function () { + debugger + var hash = window.location.hash; + if(hash === '#edit-profile'){ + console.log("asdasdsa") + $('#all-posts-tab').removeClass('active'); + $('#all-posts').removeClass('show').removeClass('active'); + $('#edit-profile-tab').addClass('active'); + $('#edit-profile').addClass('show').addClass('active'); + window.location.hash = ''; + } +}); \ No newline at end of file From eaec068e1b60aa5cb25e71e6f8eb6c73fc6f6086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Tue, 9 May 2023 13:47:08 +0300 Subject: [PATCH 09/65] refactoring --- .../Pages/Blogs/Posts/Detail.cshtml | 4 +- .../Pages/Members/Index.cshtml | 112 +++++++++--------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml index 790b04ccdf..a03bd22af3 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml @@ -131,7 +131,7 @@
-
+
@if (Model.Post.Writer != null) { @@ -165,7 +165,7 @@ }

-

Last Blog Posts

+

More from Blog

@for (var index = 0; index < Model.LatestPosts.Count && index < 5; index++) { if (Model.LatestPosts[index].Id != Model.Post.Id) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml index d8fba6b491..12ed3cc854 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml @@ -98,54 +98,63 @@
- @if (Model.Posts is not null && Model.Posts.Any()) - { -
+
- -
- @foreach (var post in Model.Posts) - { -
-
- - - - - - - @L["Blog"].Value.ToUpper() - -
-
- -

- - @post.Title - -

-

- - @post.Description.TruncateWithPostfix(150) - - @L["ReadMore"] -

-
-
-
- -
-
-
- } -
-
+ @if (Model.Posts is not null && Model.Posts.Any()) + { + +
+ @foreach (var post in Model.Posts) + { +
+
+ + + + + + + @L["Blog"].Value.ToUpper() + +
+
+ +

+ + @post.Title + +

+

+ + @post.Description.TruncateWithPostfix(150) + + @L["ReadMore"] +

+
+
+
+ +
+
+
+ } +
+
+ } + else + { +
+
+

@L["MemberNotPublishedPostYet"]

+
+
+ } @if (CurrentUser.UserName == Model.User.UserName) { @@ -184,15 +193,6 @@ }
- } - else - { -
-
-

@L["MemberNotPublishedPostYet"]

-
-
- }
\ No newline at end of file From fa96b44d8f67c6d12f3378a8c07794e9ce5b9108 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 11 May 2023 16:02:07 +0800 Subject: [PATCH 10/65] Refactor `ClaimsPrincipal` handle way of OpenIddict. Resolve #16529 --- .../POST.md | 6 ++++ docs/en/Modules/OpenIddict.md | 12 +++---- .../ExtensionGrants/MyTokenExtensionGrant.cs | 2 +- .../AbpOpenIddictAspNetCoreModule.cs | 4 +-- .../AbpOpenIddictClaimDestinationsManager.cs | 32 ------------------- .../AbpOpenIddictClaimDestinationsOptions.cs | 13 -------- ...nIddictClaimDestinationsProviderContext.cs | 20 ------------ ...IAbpOpenIddictClaimDestinationsProvider.cs | 8 ----- ...efaultOpenIddictClaimsPrincipalHandler.cs} | 6 ++-- ...OpenIddictClaimsPrincipalHandlerContext.cs | 21 ++++++++++++ .../AbpOpenIddictClaimsPrincipalManager.cs | 32 +++++++++++++++++++ .../AbpOpenIddictClaimsPrincipalOptions.cs | 13 ++++++++ .../IAbpOpenIddictClaimsPrincipalHandler.cs | 8 +++++ .../AbpOpenIdDictControllerBase.cs | 7 +--- .../Controllers/AuthorizeController.cs | 4 +-- .../TokenController.AuthorizationCode.cs | 2 +- .../Controllers/TokenController.DeviceCode.cs | 2 +- .../Controllers/TokenController.Password.cs | 2 +- .../TokenController.RefreshToken.cs | 2 +- 19 files changed, 99 insertions(+), 97 deletions(-) delete mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsManager.cs delete mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsOptions.cs delete mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsProviderContext.cs delete mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/IAbpOpenIddictClaimDestinationsProvider.cs rename modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/{ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs => Claims/AbpDefaultOpenIddictClaimsPrincipalHandler.cs} (91%) create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalHandlerContext.cs create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalManager.cs create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalOptions.cs create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/IAbpOpenIddictClaimsPrincipalHandler.cs diff --git a/docs/en/Community-Articles/2022-11-14-How-to-add-a-custom-grant-type-in-OpenIddict/POST.md b/docs/en/Community-Articles/2022-11-14-How-to-add-a-custom-grant-type-in-OpenIddict/POST.md index 73a0d7589c..0401c31898 100644 --- a/docs/en/Community-Articles/2022-11-14-How-to-add-a-custom-grant-type-in-OpenIddict/POST.md +++ b/docs/en/Community-Articles/2022-11-14-How-to-add-a-custom-grant-type-in-OpenIddict/POST.md @@ -71,7 +71,13 @@ public class MyTokenExtensionGrant : ITokenExtensionGrant var claimsPrincipal = await userClaimsPrincipalFactory.CreateAsync(user); claimsPrincipal.SetScopes(principal.GetScopes()); claimsPrincipal.SetResources(await GetResourcesAsync(context, principal.GetScopes())); + + //abp version < 7.3 await context.HttpContext.RequestServices.GetRequiredService().SetAsync(principal); + + //For abp version >= 7.3 + await context.HttpContext.RequestServices.GetRequiredService().HandleAsync(context.Request, principal); + return new SignInResult(OpenIddictServerAspNetCoreDefaults.AuthenticationScheme, claimsPrincipal); } diff --git a/docs/en/Modules/OpenIddict.md b/docs/en/Modules/OpenIddict.md index 74598ab1f8..db13d4b452 100644 --- a/docs/en/Modules/OpenIddict.md +++ b/docs/en/Modules/OpenIddict.md @@ -323,16 +323,16 @@ Configure(options => [Claims Principal Factory](https://docs.abp.io/en/abp/latest/Authorization#claims-principal-factory) can be used to add/remove claims to the `ClaimsPrincipal`. -The `AbpDefaultOpenIddictClaimDestinationsProvider` service will add `Name`, `Email,` and `Role` types of Claims to `access_token` and `id_token`, other claims are only added to `access_token` by default, and remove the `SecurityStampClaimType` secret claim of `Identity`. +The `AbpDefaultOpenIddictClaimsPrincipalHandler` service will add `Name`, `Email,` and `Role` types of Claims to `access_token` and `id_token`, other claims are only added to `access_token` by default, and remove the `SecurityStampClaimType` secret claim of `Identity`. -Create a service that inherits from `IAbpOpenIddictClaimDestinationsProvider` and add it to DI to fully control the destinations of claims. +Create a service that inherits from `IAbpOpenIddictClaimsPrincipalHandler` and add it to DI to fully control the destinations of claims. ```cs -public class MyClaimDestinationsProvider : IAbpOpenIddictClaimDestinationsProvider, ITransientDependency +public class MyClaimDestinationsHandler : IAbpOpenIddictClaimsPrincipalHandler, ITransientDependency { - public virtual Task SetDestinationsAsync(AbpOpenIddictClaimDestinationsProviderContext context) + public virtual Task HandleAsync(AbpOpenIddictClaimsPrincipalHandlerContext context) { - foreach (var claim in context.Claims) + foreach (var claim in context.Principal.Claims) { if (claim.Type == MyClaims.MyClaimsType) { @@ -351,7 +351,7 @@ public class MyClaimDestinationsProvider : IAbpOpenIddictClaimDestinationsProvid Configure(options => { - options.ClaimDestinationsProvider.Add(); + options.ClaimsPrincipalHandlers.Add(); }); ``` diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/ExtensionGrants/MyTokenExtensionGrant.cs b/modules/openiddict/app/OpenIddict.Demo.Server/ExtensionGrants/MyTokenExtensionGrant.cs index 62e4cba0b3..b5167621ef 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/ExtensionGrants/MyTokenExtensionGrant.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/ExtensionGrants/MyTokenExtensionGrant.cs @@ -78,7 +78,7 @@ public class MyTokenExtensionGrant : ITokenExtensionGrant var claimsPrincipal = await userClaimsPrincipalFactory.CreateAsync(user); claimsPrincipal.SetScopes(principal.GetScopes()); claimsPrincipal.SetResources(await GetResourcesAsync(context, principal.GetScopes())); - await context.HttpContext.RequestServices.GetRequiredService().SetAsync(principal); + await context.HttpContext.RequestServices.GetRequiredService().HandleAsync(context.Request, principal); return new SignInResult(OpenIddictServerAspNetCoreDefaults.AuthenticationScheme, claimsPrincipal); } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs index 3ee5dbf126..23f41900b5 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs @@ -22,9 +22,9 @@ public class AbpOpenIddictAspNetCoreModule : AbpModule { AddOpenIddictServer(context.Services); - Configure(options => + Configure(options => { - options.ClaimDestinationsProvider.Add(); + options.ClaimsPrincipalHandlers.Add(); }); Configure(options => diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsManager.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsManager.cs deleted file mode 100644 index 2974f8ba1d..0000000000 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsManager.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Linq; -using System.Security.Claims; -using System.Threading.Tasks; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using Volo.Abp.DependencyInjection; - -namespace Volo.Abp.OpenIddict; - -public class AbpOpenIddictClaimDestinationsManager : ISingletonDependency -{ - protected IServiceScopeFactory ServiceScopeFactory { get; } - protected IOptions Options { get; } - - public AbpOpenIddictClaimDestinationsManager(IServiceScopeFactory serviceScopeFactory, IOptions options) - { - ServiceScopeFactory = serviceScopeFactory; - Options = options; - } - - public virtual async Task SetAsync(ClaimsPrincipal principal) - { - using (var scope = ServiceScopeFactory.CreateScope()) - { - foreach (var providerType in Options.Value.ClaimDestinationsProvider) - { - var provider = (IAbpOpenIddictClaimDestinationsProvider)scope.ServiceProvider.GetRequiredService(providerType); - await provider.SetDestinationsAsync(new AbpOpenIddictClaimDestinationsProviderContext(scope.ServiceProvider, principal, principal.Claims.ToArray())); - } - } - } -} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsOptions.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsOptions.cs deleted file mode 100644 index e6094dbc03..0000000000 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsOptions.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Volo.Abp.Collections; - -namespace Volo.Abp.OpenIddict; - -public class AbpOpenIddictClaimDestinationsOptions -{ - public ITypeList ClaimDestinationsProvider { get; } - - public AbpOpenIddictClaimDestinationsOptions() - { - ClaimDestinationsProvider = new TypeList(); - } -} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsProviderContext.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsProviderContext.cs deleted file mode 100644 index ff5d993e95..0000000000 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpOpenIddictClaimDestinationsProviderContext.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Security.Claims; - -namespace Volo.Abp.OpenIddict; - -public class AbpOpenIddictClaimDestinationsProviderContext -{ - public IServiceProvider ScopeServiceProvider { get; } - - public ClaimsPrincipal Principal{ get;} - - public Claim[] Claims { get; } - - public AbpOpenIddictClaimDestinationsProviderContext(IServiceProvider scopeServiceProvider, ClaimsPrincipal principal, Claim[] claims) - { - ScopeServiceProvider = scopeServiceProvider; - Principal = principal; - Claims = claims; - } -} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/IAbpOpenIddictClaimDestinationsProvider.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/IAbpOpenIddictClaimDestinationsProvider.cs deleted file mode 100644 index e499545163..0000000000 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/IAbpOpenIddictClaimDestinationsProvider.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System.Threading.Tasks; - -namespace Volo.Abp.OpenIddict; - -public interface IAbpOpenIddictClaimDestinationsProvider -{ - Task SetDestinationsAsync(AbpOpenIddictClaimDestinationsProviderContext context); -} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpDefaultOpenIddictClaimsPrincipalHandler.cs similarity index 91% rename from modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs rename to modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpDefaultOpenIddictClaimsPrincipalHandler.cs index b200dfc4a4..7a5b3d2835 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/ClaimDestinations/AbpDefaultOpenIddictClaimDestinationsProvider.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpDefaultOpenIddictClaimsPrincipalHandler.cs @@ -9,16 +9,16 @@ using Volo.Abp.Security.Claims; namespace Volo.Abp.OpenIddict; -public class AbpDefaultOpenIddictClaimDestinationsProvider : IAbpOpenIddictClaimDestinationsProvider, ITransientDependency +public class AbpDefaultOpenIddictClaimsPrincipalHandler : IAbpOpenIddictClaimsPrincipalHandler, ITransientDependency { - public virtual Task SetDestinationsAsync(AbpOpenIddictClaimDestinationsProviderContext context) + public virtual Task HandleAsync(AbpOpenIddictClaimsPrincipalHandlerContext context) { var securityStampClaimType = context .ScopeServiceProvider .GetRequiredService>().Value .ClaimsIdentity.SecurityStampClaimType; - foreach (var claim in context.Claims) + foreach (var claim in context.Principal.Claims) { if (claim.Type == AbpClaimTypes.TenantId) { diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalHandlerContext.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalHandlerContext.cs new file mode 100644 index 0000000000..314f3a63ed --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalHandlerContext.cs @@ -0,0 +1,21 @@ +using System; +using System.Security.Claims; +using OpenIddict.Abstractions; + +namespace Volo.Abp.OpenIddict; + +public class AbpOpenIddictClaimsPrincipalHandlerContext +{ + public IServiceProvider ScopeServiceProvider { get; } + + public OpenIddictRequest OpenIddictRequest { get; } + + public ClaimsPrincipal Principal { get;} + + public AbpOpenIddictClaimsPrincipalHandlerContext(IServiceProvider scopeServiceProvider, OpenIddictRequest openIddictRequest, ClaimsPrincipal principal) + { + ScopeServiceProvider = scopeServiceProvider; + OpenIddictRequest = openIddictRequest; + Principal = principal; + } +} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalManager.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalManager.cs new file mode 100644 index 0000000000..fa72e6c6bd --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalManager.cs @@ -0,0 +1,32 @@ +using System.Security.Claims; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using OpenIddict.Abstractions; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.OpenIddict; + +public class AbpOpenIddictClaimsPrincipalManager : ISingletonDependency +{ + protected IServiceScopeFactory ServiceScopeFactory { get; } + protected IOptions Options { get; } + + public AbpOpenIddictClaimsPrincipalManager(IServiceScopeFactory serviceScopeFactory, IOptions options) + { + ServiceScopeFactory = serviceScopeFactory; + Options = options; + } + + public virtual async Task HandleAsync(OpenIddictRequest openIddictRequest, ClaimsPrincipal principal) + { + using (var scope = ServiceScopeFactory.CreateScope()) + { + foreach (var providerType in Options.Value.ClaimsPrincipalHandlers) + { + var provider = (IAbpOpenIddictClaimsPrincipalHandler)scope.ServiceProvider.GetRequiredService(providerType); + await provider.HandleAsync(new AbpOpenIddictClaimsPrincipalHandlerContext(scope.ServiceProvider, openIddictRequest, principal)); + } + } + } +} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalOptions.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalOptions.cs new file mode 100644 index 0000000000..b8931f6f41 --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/AbpOpenIddictClaimsPrincipalOptions.cs @@ -0,0 +1,13 @@ +using Volo.Abp.Collections; + +namespace Volo.Abp.OpenIddict; + +public class AbpOpenIddictClaimsPrincipalOptions +{ + public ITypeList ClaimsPrincipalHandlers { get; } + + public AbpOpenIddictClaimsPrincipalOptions() + { + ClaimsPrincipalHandlers = new TypeList(); + } +} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/IAbpOpenIddictClaimsPrincipalHandler.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/IAbpOpenIddictClaimsPrincipalHandler.cs new file mode 100644 index 0000000000..3e2752e819 --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Claims/IAbpOpenIddictClaimsPrincipalHandler.cs @@ -0,0 +1,8 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.OpenIddict; + +public interface IAbpOpenIddictClaimsPrincipalHandler +{ + Task HandleAsync(AbpOpenIddictClaimsPrincipalHandlerContext context); +} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AbpOpenIdDictControllerBase.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AbpOpenIdDictControllerBase.cs index d1321ad9e1..7e8f6386b9 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AbpOpenIdDictControllerBase.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AbpOpenIdDictControllerBase.cs @@ -25,7 +25,7 @@ public abstract class AbpOpenIdDictControllerBase : AbpController protected IOpenIddictAuthorizationManager AuthorizationManager => LazyServiceProvider.LazyGetRequiredService(); protected IOpenIddictScopeManager ScopeManager => LazyServiceProvider.LazyGetRequiredService(); protected IOpenIddictTokenManager TokenManager => LazyServiceProvider.LazyGetRequiredService(); - protected AbpOpenIddictClaimDestinationsManager OpenIddictClaimDestinationsManager => LazyServiceProvider.LazyGetRequiredService(); + protected AbpOpenIddictClaimsPrincipalManager OpenIddictClaimsPrincipalManager => LazyServiceProvider.LazyGetRequiredService(); protected AbpOpenIdDictControllerBase() { @@ -55,11 +55,6 @@ public abstract class AbpOpenIdDictControllerBase : AbpController return resources; } - protected virtual async Task SetClaimsDestinationsAsync(ClaimsPrincipal principal) - { - await OpenIddictClaimDestinationsManager.SetAsync(principal); - } - protected virtual async Task HasFormValueAsync(string name) { if (Request.HasFormContentType) diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AuthorizeController.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AuthorizeController.cs index ec764ab242..961252aae7 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AuthorizeController.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/AuthorizeController.cs @@ -132,7 +132,7 @@ public class AuthorizeController : AbpOpenIdDictControllerBase principal.SetAuthorizationId(await AuthorizationManager.GetIdAsync(authorization)); - await SetClaimsDestinationsAsync(principal); + await OpenIddictClaimsPrincipalManager.HandleAsync(request, principal); return SignIn(principal, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); @@ -227,7 +227,7 @@ public class AuthorizeController : AbpOpenIdDictControllerBase principal.SetScopes(request.GetScopes()); principal.SetResources(await GetResourcesAsync(request.GetScopes())); - await SetClaimsDestinationsAsync(principal); + await OpenIddictClaimsPrincipalManager.HandleAsync(request, principal); // Returning a SignInResult will ask OpenIddict to issue the appropriate access/identity tokens. return SignIn(principal, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.AuthorizationCode.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.AuthorizationCode.cs index 89a00f1a8a..58812f8111 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.AuthorizationCode.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.AuthorizationCode.cs @@ -44,7 +44,7 @@ public partial class TokenController })); } - await SetClaimsDestinationsAsync(principal); + await OpenIddictClaimsPrincipalManager.HandleAsync(request, principal); // Returning a SignInResult will ask OpenIddict to issue the appropriate access/identity tokens. return SignIn(principal, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.DeviceCode.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.DeviceCode.cs index cbe021854c..a581dbcf7b 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.DeviceCode.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.DeviceCode.cs @@ -44,7 +44,7 @@ public partial class TokenController })); } - await SetClaimsDestinationsAsync(principal); + await OpenIddictClaimsPrincipalManager.HandleAsync(request, principal); // Returning a SignInResult will ask OpenIddict to issue the appropriate access/identity tokens. return SignIn(principal, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.Password.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.Password.cs index dd9d46b2de..a91745b519 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.Password.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.Password.cs @@ -323,7 +323,7 @@ public partial class TokenController principal.SetScopes(request.GetScopes()); principal.SetResources(await GetResourcesAsync(request.GetScopes())); - await SetClaimsDestinationsAsync(principal); + await OpenIddictClaimsPrincipalManager.HandleAsync(request, principal); await IdentitySecurityLogManager.SaveAsync( new IdentitySecurityLogContext diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.RefreshToken.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.RefreshToken.cs index c234ddd62e..e13cd3c595 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.RefreshToken.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Controllers/TokenController.RefreshToken.cs @@ -44,7 +44,7 @@ public partial class TokenController })); } - await SetClaimsDestinationsAsync(principal); + await OpenIddictClaimsPrincipalManager.HandleAsync(request, principal); // Returning a SignInResult will ask OpenIddict to issue the appropriate access/identity tokens. return SignIn(principal, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); From 5ffc99a1ac6116f1d7c8ab62b6e64f3f144fbee0 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 11 May 2023 16:45:52 +0800 Subject: [PATCH 11/65] Add `Volo.Abp.Ddd.Domain.Shared package`. --- framework/Volo.Abp.sln | 7 +++++ .../FodyWeavers.xml | 3 ++ .../FodyWeavers.xsd | 30 +++++++++++++++++++ .../Volo.Abp.Ddd.Domain.Shared.csproj | 22 ++++++++++++++ .../Abp/Domain/AbpDddDomainSharedModule.cs | 14 +++++++++ .../AbpDistributedEntityEventOptions.cs | 0 .../AutoEntityDistributedEventSelectorList.cs | 0 .../Events/Distributed/EntityCreatedEto.cs | 0 .../Events/Distributed/EntityDeletedEto.cs | 0 .../Entities/Events/Distributed/EntityEto.cs | 0 .../Events/Distributed/EntityUpdatedEto.cs | 0 .../Distributed/EtoMappingDictionary.cs | 1 - .../Distributed/EtoMappingDictionaryItem.cs | 0 ...IAutoEntityDistributedEventSelectorList.cs | 0 .../Entities/Events/Distributed/IEntityEto.cs | 0 .../Events/Distributed/IEntityToEtoMapper.cs | 0 .../Volo.Abp.Ddd.Domain.csproj | 1 + .../Volo/Abp/Domain/AbpDddDomainModule.cs | 3 +- .../Volo.Abp.EventBus.Abstractions.csproj | 2 +- .../AbpEventBusAbstractionsModule.cs | 4 +++ .../Distributed/IDistributedEventBus.cs | 0 .../Abp/EventBus/Distributed/IEventInbox.cs | 0 .../Abp/EventBus/Distributed/IEventOutbox.cs | 0 .../EventBus/Distributed/IInboxProcessor.cs | 0 .../Abp/EventBus/Distributed/IOutboxSender.cs | 0 .../Distributed/ISupportsEventBoxes.cs | 0 .../Abp/EventBus/Distributed/InboxConfig.cs | 0 .../Distributed/InboxConfigDictionary.cs | 0 .../EventBus/Distributed/IncomingEventInfo.cs | 0 .../Abp/EventBus/Distributed/OutboxConfig.cs | 0 .../Distributed/OutboxConfigDictionary.cs | 0 .../EventBus/Distributed/OutgoingEventInfo.cs | 0 .../Volo/Abp/EventBus/IEventBus.cs | 0 .../Abp/EventBus/IEventDataMayHaveTenantId.cs | 0 ...EventDataWithInheritableGenericArgument.cs | 0 .../EventBus/IEventHandlerDisposeWrapper.cs | 0 .../Volo/Abp/EventBus/IEventHandlerFactory.cs | 0 .../Volo/Abp/EventBus/IEventHandlerInvoker.cs | 0 .../Volo/Abp/EventBus/Local/ILocalEventBus.cs | 0 nupkg/common.ps1 | 1 + ...anyName.MyProjectName.Domain.Shared.csproj | 1 + .../MyProjectNameDomainSharedModule.cs | 4 ++- 42 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 framework/src/Volo.Abp.Ddd.Domain.Shared/FodyWeavers.xml create mode 100644 framework/src/Volo.Abp.Ddd.Domain.Shared/FodyWeavers.xsd create mode 100644 framework/src/Volo.Abp.Ddd.Domain.Shared/Volo.Abp.Ddd.Domain.Shared.csproj create mode 100644 framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/AbpDddDomainSharedModule.cs rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/AbpDistributedEntityEventOptions.cs (100%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs (100%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/EntityCreatedEto.cs (100%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/EntityDeletedEto.cs (100%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/EntityEto.cs (100%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/EntityUpdatedEto.cs (100%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionary.cs (91%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionaryItem.cs (100%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs (100%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/IEntityEto.cs (100%) rename framework/src/{Volo.Abp.Ddd.Domain => Volo.Abp.Ddd.Domain.Shared}/Volo/Abp/Domain/Entities/Events/Distributed/IEntityToEtoMapper.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/IDistributedEventBus.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/IEventInbox.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/IEventOutbox.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/IInboxProcessor.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/IOutboxSender.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/ISupportsEventBoxes.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/InboxConfig.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/InboxConfigDictionary.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/IncomingEventInfo.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/OutboxConfig.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/OutboxConfigDictionary.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Distributed/OutgoingEventInfo.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/IEventBus.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/IEventDataMayHaveTenantId.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/IEventDataWithInheritableGenericArgument.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/IEventHandlerDisposeWrapper.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/IEventHandlerFactory.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/IEventHandlerInvoker.cs (100%) rename framework/src/{Volo.Abp.EventBus => Volo.Abp.EventBus.Abstractions}/Volo/Abp/EventBus/Local/ILocalEventBus.cs (100%) diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index f98d2dd1a5..1c201237e3 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -437,6 +437,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Compone EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Ldap.Abstractions", "src\Volo.Abp.Ldap.Abstractions\Volo.Abp.Ldap.Abstractions.csproj", "{0F80E95C-41E6-4F23-94FF-FC9D0B8D5D71}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Ddd.Domain.Shared", "src\Volo.Abp.Ddd.Domain.Shared\Volo.Abp.Ddd.Domain.Shared.csproj", "{0858571B-CE73-4AD6-BD06-EC9F0714D8E9}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1303,6 +1305,10 @@ Global {0F80E95C-41E6-4F23-94FF-FC9D0B8D5D71}.Debug|Any CPU.Build.0 = Debug|Any CPU {0F80E95C-41E6-4F23-94FF-FC9D0B8D5D71}.Release|Any CPU.ActiveCfg = Release|Any CPU {0F80E95C-41E6-4F23-94FF-FC9D0B8D5D71}.Release|Any CPU.Build.0 = Release|Any CPU + {0858571B-CE73-4AD6-BD06-EC9F0714D8E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0858571B-CE73-4AD6-BD06-EC9F0714D8E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0858571B-CE73-4AD6-BD06-EC9F0714D8E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0858571B-CE73-4AD6-BD06-EC9F0714D8E9}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1523,6 +1529,7 @@ Global {E9492F9F-47E0-45A6-A51D-9949FEAA8543} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {8764DFAF-D13D-449A-9A5E-5D7F0B2D7FEF} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {0F80E95C-41E6-4F23-94FF-FC9D0B8D5D71} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {0858571B-CE73-4AD6-BD06-EC9F0714D8E9} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.Ddd.Domain.Shared/FodyWeavers.xml b/framework/src/Volo.Abp.Ddd.Domain.Shared/FodyWeavers.xml new file mode 100644 index 0000000000..bc5a74a236 --- /dev/null +++ b/framework/src/Volo.Abp.Ddd.Domain.Shared/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/framework/src/Volo.Abp.Ddd.Domain.Shared/FodyWeavers.xsd b/framework/src/Volo.Abp.Ddd.Domain.Shared/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.Ddd.Domain.Shared/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.Ddd.Domain.Shared/Volo.Abp.Ddd.Domain.Shared.csproj b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo.Abp.Ddd.Domain.Shared.csproj new file mode 100644 index 0000000000..489d2cf271 --- /dev/null +++ b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo.Abp.Ddd.Domain.Shared.csproj @@ -0,0 +1,22 @@ + + + + + + + netstandard2.0;netstandard2.1;net7.0 + Volo.Abp.Ddd.Domain.Shared + Volo.Abp.Ddd.Domain.Shared + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + false + false + false + + + + + + + + + diff --git a/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/AbpDddDomainSharedModule.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/AbpDddDomainSharedModule.cs new file mode 100644 index 0000000000..3276f22310 --- /dev/null +++ b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/AbpDddDomainSharedModule.cs @@ -0,0 +1,14 @@ +using Volo.Abp.EventBus.Abstractions; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; + +namespace Volo.Abp.Domain; + +[DependsOn( + typeof(AbpMultiTenancyModule), + typeof(AbpEventBusAbstractionsModule) +)] +public class AbpDddDomainSharedModule : AbpModule +{ + +} diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AbpDistributedEntityEventOptions.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/AbpDistributedEntityEventOptions.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AbpDistributedEntityEventOptions.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/AbpDistributedEntityEventOptions.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/AutoEntityDistributedEventSelectorList.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityCreatedEto.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EntityCreatedEto.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityCreatedEto.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EntityCreatedEto.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityDeletedEto.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EntityDeletedEto.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityDeletedEto.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EntityDeletedEto.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityEto.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EntityEto.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityEto.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EntityEto.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityUpdatedEto.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EntityUpdatedEto.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EntityUpdatedEto.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EntityUpdatedEto.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionary.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionary.cs similarity index 91% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionary.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionary.cs index 18c56bfca7..bb9e362ac2 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionary.cs +++ b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionary.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using Volo.Abp.EventBus.Distributed; namespace Volo.Abp.Domain.Entities.Events.Distributed; diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionaryItem.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionaryItem.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionaryItem.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/EtoMappingDictionaryItem.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/IAutoEntityDistributedEventSelectorList.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IEntityEto.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/IEntityEto.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IEntityEto.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/IEntityEto.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IEntityToEtoMapper.cs b/framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/IEntityToEtoMapper.cs similarity index 100% rename from framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/Distributed/IEntityToEtoMapper.cs rename to framework/src/Volo.Abp.Ddd.Domain.Shared/Volo/Abp/Domain/Entities/Events/Distributed/IEntityToEtoMapper.cs diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj b/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj index fd80a60544..c15f7c96a8 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj @@ -15,6 +15,7 @@ + diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs index 0b41fef1cf..536e31e51f 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs @@ -22,7 +22,8 @@ namespace Volo.Abp.Domain; typeof(AbpObjectMappingModule), typeof(AbpExceptionHandlingModule), typeof(AbpSpecificationsModule), - typeof(AbpCachingModule) + typeof(AbpCachingModule), + typeof(AbpDddDomainSharedModule) )] public class AbpDddDomainModule : AbpModule { diff --git a/framework/src/Volo.Abp.EventBus.Abstractions/Volo.Abp.EventBus.Abstractions.csproj b/framework/src/Volo.Abp.EventBus.Abstractions/Volo.Abp.EventBus.Abstractions.csproj index 225b9b70ee..b61d8315c1 100644 --- a/framework/src/Volo.Abp.EventBus.Abstractions/Volo.Abp.EventBus.Abstractions.csproj +++ b/framework/src/Volo.Abp.EventBus.Abstractions/Volo.Abp.EventBus.Abstractions.csproj @@ -9,7 +9,7 @@ - + diff --git a/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Abstractions/AbpEventBusAbstractionsModule.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Abstractions/AbpEventBusAbstractionsModule.cs index 85cddf42b8..5d19fa21ba 100644 --- a/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Abstractions/AbpEventBusAbstractionsModule.cs +++ b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Abstractions/AbpEventBusAbstractionsModule.cs @@ -1,7 +1,11 @@ using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; namespace Volo.Abp.EventBus.Abstractions; +[DependsOn( + typeof(AbpObjectExtendingModule) +)] public class AbpEventBusAbstractionsModule : AbpModule { diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IDistributedEventBus.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IDistributedEventBus.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IDistributedEventBus.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IDistributedEventBus.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IEventInbox.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IEventInbox.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IEventInbox.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IEventInbox.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IEventOutbox.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IEventOutbox.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IEventOutbox.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IEventOutbox.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IInboxProcessor.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IInboxProcessor.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IInboxProcessor.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IInboxProcessor.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IOutboxSender.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IOutboxSender.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IOutboxSender.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IOutboxSender.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/ISupportsEventBoxes.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/ISupportsEventBoxes.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/ISupportsEventBoxes.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/ISupportsEventBoxes.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxConfig.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/InboxConfig.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxConfig.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/InboxConfig.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxConfigDictionary.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/InboxConfigDictionary.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxConfigDictionary.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/InboxConfigDictionary.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IncomingEventInfo.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IncomingEventInfo.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IncomingEventInfo.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/IncomingEventInfo.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutboxConfig.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/OutboxConfig.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutboxConfig.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/OutboxConfig.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutboxConfigDictionary.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/OutboxConfigDictionary.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutboxConfigDictionary.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/OutboxConfigDictionary.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutgoingEventInfo.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/OutgoingEventInfo.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutgoingEventInfo.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Distributed/OutgoingEventInfo.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventBus.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventBus.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventBus.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventBus.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventDataMayHaveTenantId.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventDataMayHaveTenantId.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventDataMayHaveTenantId.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventDataMayHaveTenantId.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventDataWithInheritableGenericArgument.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventDataWithInheritableGenericArgument.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventDataWithInheritableGenericArgument.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventDataWithInheritableGenericArgument.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventHandlerDisposeWrapper.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventHandlerDisposeWrapper.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventHandlerDisposeWrapper.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventHandlerDisposeWrapper.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventHandlerFactory.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventHandlerFactory.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventHandlerFactory.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventHandlerFactory.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventHandlerInvoker.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventHandlerInvoker.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IEventHandlerInvoker.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/IEventHandlerInvoker.cs diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/ILocalEventBus.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Local/ILocalEventBus.cs similarity index 100% rename from framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/ILocalEventBus.cs rename to framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Local/ILocalEventBus.cs diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index a9594343db..bf3cf46bad 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -164,6 +164,7 @@ $projects = ( "framework/src/Volo.Abp.Ddd.Application", "framework/src/Volo.Abp.Ddd.Application.Contracts", "framework/src/Volo.Abp.Ddd.Domain", + "framework/src/Volo.Abp.Ddd.Domain.Shared", "framework/src/Volo.Abp.DistributedLocking.Abstractions", "framework/src/Volo.Abp.DistributedLocking", "framework/src/Volo.Abp.DistributedLocking.Dapr", diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj index 6ad1317813..2c65ca90c5 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyCompanyName.MyProjectName.Domain.Shared.csproj @@ -10,6 +10,7 @@ + diff --git a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs index 26e8c12d42..5c0c1cae56 100644 --- a/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs +++ b/templates/module/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/MyProjectNameDomainSharedModule.cs @@ -1,6 +1,7 @@ using Volo.Abp.Modularity; using Volo.Abp.Localization; using MyCompanyName.MyProjectName.Localization; +using Volo.Abp.Domain; using Volo.Abp.Localization.ExceptionHandling; using Volo.Abp.Validation; using Volo.Abp.Validation.Localization; @@ -9,7 +10,8 @@ using Volo.Abp.VirtualFileSystem; namespace MyCompanyName.MyProjectName; [DependsOn( - typeof(AbpValidationModule) + typeof(AbpValidationModule), + typeof(AbpDddDomainSharedModule) )] public class MyProjectNameDomainSharedModule : AbpModule { From 1d47ca092d4368cf0433ee287182885f7e6ed7c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= Date: Thu, 11 May 2023 13:02:20 +0300 Subject: [PATCH 12/65] update rn doc --- docs/en/Getting-Started-React-Native.md | 35 ++++++++++++------------ docs/en/images/rn-options.png | Bin 0 -> 25436 bytes 2 files changed, 17 insertions(+), 18 deletions(-) create mode 100644 docs/en/images/rn-options.png diff --git a/docs/en/Getting-Started-React-Native.md b/docs/en/Getting-Started-React-Native.md index df8fb355a5..a62512fb45 100644 --- a/docs/en/Getting-Started-React-Native.md +++ b/docs/en/Getting-Started-React-Native.md @@ -1,11 +1,11 @@ # Getting Started with the React Native -````json +```json //[doc-params] { - "Tiered": ["No", "Yes"] + "Tiered": ["No", "Yes"] } -```` +``` ABP platform provide basic [React Native](https://reactnative.dev/) startup template to develop mobile applications **integrated to your ABP based backends**. @@ -20,7 +20,6 @@ Please follow the steps below to prepare your development environment for React 3. **[Optional] Install VS Code:** [VS Code](https://code.visualstudio.com/) is a free, open-source IDE which works seamlessly with TypeScript. Although you can use any IDE including Visual Studio or Rider, VS Code will most likely deliver the best developer experience when it comes to React Native projects. 4. **Install an Emulator:** React Native applications need an Android emulator or an iOS simulator to run on your OS. See the [Android Studio Emulator](https://docs.expo.io/workflow/android-simulator/) or [iOS Simulator](https://docs.expo.io/workflow/ios-simulator/) on expo.io documentation to learn how to set up an emulator. - ## How to Start a New React Native Project You have multiple options to initiate a new React Native project that works with ABP: @@ -56,6 +55,7 @@ Please do the following: > When you are using OpenIddict, You should remove 'clientSecret' on Environment.js (if exists) and disable "HTTPS-only" settings. (Openiddict has default since Version 6.0) ### How to disable Https-only in Openiddict. + You should add this code on {{ if Tiered == "No" }}`MyProjectNameHttpApiHostModule`{{ else if Tiered == "Yes" }}`MyProjectNameAuthServerModule`{{ end }}. ```csharp @@ -79,26 +79,27 @@ A React Native application running on an Android emulator or a physical phone ** {{ if Tiered == "No"}} ![React Native host project local IP entry](images/rn-host-local-ip.png) -* Open the `appsettings.json` in the `.HttpApi.Host` folder. Replace the `localhost` address on the `SelfUrl` and `Authority` properties with your local IP address. -* Open the `launchSettings.json` in the `.HttpApi.Host/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. +- Open the `appsettings.json` in the `.HttpApi.Host` folder. Replace the `localhost` address on the `SelfUrl` and `Authority` properties with your local IP address. +- Open the `launchSettings.json` in the `.HttpApi.Host/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. {{ else if Tiered == "Yes" }} ![React Native tiered project local IP entry](images/rn-tiered-local-ip.png) -* Open the `appsettings.json` in the `.AuthServer` folder. Replace the `localhost` address on the `SelfUrl` property with your local IP address. -* Open the `launchSettings.json` in the `.AuthServer/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. -* Open the `appsettings.json` in the `.HttpApi.Host` folder. Replace the `localhost` address on the `Authority` property with your local IP address. -* Open the `launchSettings.json` in the `.HttpApi.Host/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. +- Open the `appsettings.json` in the `.AuthServer` folder. Replace the `localhost` address on the `SelfUrl` property with your local IP address. +- Open the `launchSettings.json` in the `.AuthServer/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. +- Open the `appsettings.json` in the `.HttpApi.Host` folder. Replace the `localhost` address on the `Authority` property with your local IP address. +- Open the `launchSettings.json` in the `.HttpApi.Host/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. {{ end }} Run the backend application as described in the [getting started document](Getting-Started.md). > You should turn off the "Https Restriction" if you're using OpenIddict as a central identity management solution. Because the IOS Simulator doesn't support self-signed certificates and OpenIddict is set to only work with HTTPS by default. + ## How to disable the Https-only settings of OpenIddict - Go to MyProjectNameHttpApiHostModule.cs under the host project. Add put these codes under the `PreConfigureServices` function. +Go to MyProjectNameHttpApiHostModule.cs under the host project. Add put these codes under the `PreConfigureServices` function. ```csharp #if DEBUG @@ -109,7 +110,6 @@ Run the backend application as described in the [getting started document](Getti #endif ``` - ## How to Configure & Run the React Native Application 1. Make sure the [database migration is complete](./Getting-Started?UI=NG&DB=EF&Tiered=No#create-the-database) and the [API is up and running](./Getting-Started?UI=NG&DB=EF&Tiered=No#run-the-application). @@ -128,21 +128,20 @@ Run the backend application as described in the [getting started document](Getti {{ end }} -4. Run `yarn start` or `npm start`. Wait Expo CLI to start. Expo CLI opens the management interface on the `http://localhost:19002/` address. +4. Run `yarn start` or `npm start`. Wait Expo CLI to print opitons. > The React Native application was generated with [Expo](https://expo.io/). Expo is a set of tools built around React Native to help you quickly start an app and, while it has many features. -![expo-interface](images/rn-expo-interface.png) +![expo-cli-options](images/rn-options.png) -In the above management interface, you can start the application with an Android emulator, an iOS simulator or a physical phone by the scan the QR code with the [Expo Client](https://expo.io/tools#client). +In the above image, you can start the application with an Android emulator, an iOS simulator or a physical phone by the scan the QR code with the [Expo Client](https://expo.io/tools#client) or choosing the option. ![React Native login screen on iPhone 11](images/rn-login-iphone.png) -Enter **admin** as the username and **1q2w3E*** as the password to login to the application. +Enter **admin** as the username and **1q2w3E\*** as the password to login to the application. The application is up and running. You can continue to develop your application based on this startup template. - ## See Also -* [React Native project structure](./Startup-Templates/Application#react-native) +- [React Native project structure](./Startup-Templates/Application#react-native) diff --git a/docs/en/images/rn-options.png b/docs/en/images/rn-options.png new file mode 100644 index 0000000000000000000000000000000000000000..810dda818354b1011082a377b4a6e19577a94726 GIT binary patch literal 25436 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%0AYU;)KUD1PIQwi&6D8A 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 Date: Thu, 11 May 2023 14:34:52 +0300 Subject: [PATCH 13/65] remove unnecessary inputType --- .../src/lib/components/form-input/form-input.component.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/form-input/form-input.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/form-input/form-input.component.ts index 991383fe5a..8aa68a2047 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/form-input/form-input.component.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/form-input/form-input.component.ts @@ -36,7 +36,6 @@ export class FormInputComponent extends AbstractNgModelComponent { @Input() label = ''; @Input() labelClass = 'form-label'; @Input() inputPlaceholder = ''; - @Input() inputType = 'text'; @Input() inputStyle: | { [klass: string]: any; From 0cb497371c2a5123285425b5709ce51eef2ef48c Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 11 May 2023 22:09:52 +0800 Subject: [PATCH 14/65] Add `LocalEventHandlerOrderAttribute`. Resolve #16361 --- .../Local/LocalEventHandlerOrderAttribute.cs | 17 ++++++ .../Volo/Abp/EventBus/Local/LocalEventBus.cs | 15 ++++- .../Abp/EventBus/Local/EventBus_Order_Test.cs | 56 +++++++++++++++++++ 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Local/LocalEventHandlerOrderAttribute.cs create mode 100644 framework/test/Volo.Abp.EventBus.Tests/Volo/Abp/EventBus/Local/EventBus_Order_Test.cs diff --git a/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Local/LocalEventHandlerOrderAttribute.cs b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Local/LocalEventHandlerOrderAttribute.cs new file mode 100644 index 0000000000..7900885e3e --- /dev/null +++ b/framework/src/Volo.Abp.EventBus.Abstractions/Volo/Abp/EventBus/Local/LocalEventHandlerOrderAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace Volo.Abp.EventBus.Local; + +[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] +public class LocalEventHandlerOrderAttribute : Attribute +{ + ///

+ /// Handlers execute in ascending numeric value of the Order property. + /// + public int Order { get; set; } + + public LocalEventHandlerOrderAttribute(int order) + { + Order = order; + } +} diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/LocalEventBus.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/LocalEventBus.cs index 9570bf80e1..e1edf3b12f 100644 --- a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/LocalEventBus.cs +++ b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/LocalEventBus.cs @@ -10,6 +10,7 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.DependencyInjection; using Volo.Abp.EventBus.Distributed; using Volo.Abp.MultiTenancy; +using Volo.Abp.Reflection; using Volo.Abp.Threading; using Volo.Abp.Uow; @@ -140,9 +141,21 @@ public class LocalEventBus : EventBusBase, ILocalEventBus, ISingletonDependency { var handlerFactoryList = new List(); + var handlerWithTypes = new List>(); foreach (var handlerFactory in HandlerFactories.Where(hf => ShouldTriggerEventForHandler(eventType, hf.Key))) { - handlerFactoryList.Add(new EventTypeWithEventHandlerFactories(handlerFactory.Key, handlerFactory.Value)); + foreach (var factory in handlerFactory.Value) + { + handlerWithTypes.Add(new Tuple( + factory, + handlerFactory.Key, + ReflectionHelper.GetAttributesOfMemberOrDeclaringType(factory.GetHandler().EventHandler.GetType()).FirstOrDefault()?.Order ?? 0)); + } + } + + foreach (var handlerWithType in handlerWithTypes.OrderBy(x => x.Item3)) + { + handlerFactoryList.Add(new EventTypeWithEventHandlerFactories(handlerWithType.Item2, new List{ handlerWithType.Item1 })); } return handlerFactoryList.ToArray(); diff --git a/framework/test/Volo.Abp.EventBus.Tests/Volo/Abp/EventBus/Local/EventBus_Order_Test.cs b/framework/test/Volo.Abp.EventBus.Tests/Volo/Abp/EventBus/Local/EventBus_Order_Test.cs new file mode 100644 index 0000000000..3bf8c3a7b6 --- /dev/null +++ b/framework/test/Volo.Abp.EventBus.Tests/Volo/Abp/EventBus/Local/EventBus_Order_Test.cs @@ -0,0 +1,56 @@ +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities; +using Volo.Abp.Domain.Entities.Events; +using Xunit; + +namespace Volo.Abp.EventBus.Local; + +public class EventBus_Order_Test : EventBusTestBase +{ + public static string HandlerExecuteOrder { get; set; } + + [Fact] + public async Task Handler_Should_Execute_By_Order() + { + HandlerExecuteOrder = ""; + await LocalEventBus.PublishAsync(new MyOrderEventHandlerEventData()); + HandlerExecuteOrder.ShouldBe("321"); + } + + public class MyOrderEventHandlerEventData + { + + } + + public class MyOrderEventHandler : ILocalEventHandler, ITransientDependency + { + public Task HandleEventAsync(MyOrderEventHandlerEventData eventData) + { + HandlerExecuteOrder += "1"; + return Task.CompletedTask; + } + } + + [LocalEventHandlerOrder(-2)] + public class MyOrderEventHandler2 : ILocalEventHandler, ITransientDependency + { + public Task HandleEventAsync(MyOrderEventHandlerEventData eventData) + { + HandlerExecuteOrder += "2"; + return Task.CompletedTask; + } + } + + [LocalEventHandlerOrder(-3)] + public class MyOrderEventHandler3 : ILocalEventHandler, ITransientDependency + { + public Task HandleEventAsync(MyOrderEventHandlerEventData eventData) + { + HandlerExecuteOrder += "3"; + return Task.CompletedTask; + } + } + +} From 60843a50cdcf5b2951c1ddc7a5df48852e0bde47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= Date: Fri, 12 May 2023 03:05:49 +0300 Subject: [PATCH 15/65] document form input component --- docs/en/UI/Angular/FormInput-Component.md | 43 ++++++++++++++++++++++ docs/en/UI/Angular/images/form-input.png | Bin 0 -> 5896 bytes 2 files changed, 43 insertions(+) create mode 100644 docs/en/UI/Angular/FormInput-Component.md create mode 100644 docs/en/UI/Angular/images/form-input.png diff --git a/docs/en/UI/Angular/FormInput-Component.md b/docs/en/UI/Angular/FormInput-Component.md new file mode 100644 index 0000000000..11b857ddb4 --- /dev/null +++ b/docs/en/UI/Angular/FormInput-Component.md @@ -0,0 +1,43 @@ +# Form Input Component + +The ABP FormInput Component is a reusable form input component for text type. + +It takes `label`, `labelClass` (default form-label), `inputId`,`inputPlaceholder`,`inputReadonly`,`inputClass` (default form-control) and `inputStyle` as input to customize component. Also, it emits `formBlur` and `formFocus` events when component gain or lose focus. + +# Usage + +ABP FormInput component is a part of the `ThemeSharedModule` module. If you've imported that module into your module, you don't need to import it again. If not, first import it as shown below: + +```ts +// my-feature.module.ts + +import { ThemeSharedModule } from "@abp/ng.theme.shared"; +import { FomrInputDemoComponent } from "./FomrInputDemoComponent.component"; + +@NgModule({ + imports: [ + ThemeSharedModule, + // ... + ], + declarations: [FomrInputDemoComponent], + // ... +}) +export class MyFeatureModule {} +``` + +Then, the `abp-form-input` component can be used. See the example below: + +```html +
+
+ +
+
+``` + +See the form input result below: + +![abp-form-input](./images/form-input.png) diff --git a/docs/en/UI/Angular/images/form-input.png b/docs/en/UI/Angular/images/form-input.png new file mode 100644 index 0000000000000000000000000000000000000000..73c9cfd74ccf777e26e75eb8e743bec72411811a GIT binary patch literal 5896 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 HHu66J^~51m literal 0 HcmV?d00001 From d19c21e1e040cc133cce35f776fc5e1cd44f4536 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= Date: Fri, 12 May 2023 03:06:17 +0300 Subject: [PATCH 16/65] document checkbox component --- docs/en/UI/Angular/Checkbox-Component.md | 39 ++++++++++++++++++++ docs/en/UI/Angular/images/form-checkbox.png | Bin 0 -> 2723 bytes 2 files changed, 39 insertions(+) create mode 100644 docs/en/UI/Angular/Checkbox-Component.md create mode 100644 docs/en/UI/Angular/images/form-checkbox.png diff --git a/docs/en/UI/Angular/Checkbox-Component.md b/docs/en/UI/Angular/Checkbox-Component.md new file mode 100644 index 0000000000..e33611e471 --- /dev/null +++ b/docs/en/UI/Angular/Checkbox-Component.md @@ -0,0 +1,39 @@ +# Checkbox Component + +The ABP Checkbox Component is a reusable form input component for checkbox type. + +It takes `label`, `labelClass` (default form-check-label), `checkboxId`,`checkboxReadonly`,`checkboxReadonly` (default form-check-input) and `checkboxStyle` as input to customize component. Also, it emits `checkboxBlur` and `checkboxFocus` events when component gain or lose focus. + +# Usage + +ABP Checkbox component is a part of the `ThemeSharedModule` module. If you've imported that module into your module, you don't need to import it again. If not, first import it as shown below: + +```ts +// my-feature.module.ts + +import { ThemeSharedModule } from "@abp/ng.theme.shared"; +import { CheckboxDemoComponent } from "./CheckboxDemoComponent.component"; + +@NgModule({ + imports: [ + ThemeSharedModule, + // ... + ], + declarations: [CheckboxDemoComponent], + // ... +}) +export class MyFeatureModule {} +``` + +Then, the `abp-checkbox` component can be used. See the example below: + +```html +
+ + +
+``` + +See the checkbox input result below: + +![abp-form-input](./images/form-checkbox.png) diff --git a/docs/en/UI/Angular/images/form-checkbox.png b/docs/en/UI/Angular/images/form-checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..18d064c474fc889904deed0e1662cfd2685b0fe1 GIT binary patch literal 2723 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 UcgBF|)vyE@8<^`?LmZ?31JKPLZ~y=R literal 0 HcmV?d00001 From 0cd91c5326b47fbf50ac876f4157e1c9f957ec55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= Date: Fri, 12 May 2023 03:07:05 +0300 Subject: [PATCH 17/65] fix card demo component name --- docs/en/UI/Angular/Card-Component.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/UI/Angular/Card-Component.md b/docs/en/UI/Angular/Card-Component.md index 861171c39e..ca056853ff 100644 --- a/docs/en/UI/Angular/Card-Component.md +++ b/docs/en/UI/Angular/Card-Component.md @@ -29,7 +29,7 @@ ABP Card Component is a part of the `ThemeSharedModule` module. If you've import // my-feature.module.ts import { ThemeSharedModule } from '@abp/ng.theme.shared'; -import { CardDemoComponent } from './chart-demo.component'; +import { CardDemoComponent } from './card-demo.component'; @NgModule({ imports: [ From 8e7f9aa836685768b68accf41571d3e1267c4076 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 12 May 2023 08:34:36 +0800 Subject: [PATCH 18/65] Update LocalEventBus.cs --- .../Volo/Abp/EventBus/Local/LocalEventBus.cs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/LocalEventBus.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/LocalEventBus.cs index e1edf3b12f..d73b2f8de9 100644 --- a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/LocalEventBus.cs +++ b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Local/LocalEventBus.cs @@ -139,26 +139,19 @@ public class LocalEventBus : EventBusBase, ILocalEventBus, ISingletonDependency protected override IEnumerable GetHandlerFactories(Type eventType) { - var handlerFactoryList = new List(); - - var handlerWithTypes = new List>(); + var handlerFactoryList = new List>(); foreach (var handlerFactory in HandlerFactories.Where(hf => ShouldTriggerEventForHandler(eventType, hf.Key))) { foreach (var factory in handlerFactory.Value) { - handlerWithTypes.Add(new Tuple( + handlerFactoryList.Add(new Tuple( factory, handlerFactory.Key, ReflectionHelper.GetAttributesOfMemberOrDeclaringType(factory.GetHandler().EventHandler.GetType()).FirstOrDefault()?.Order ?? 0)); } } - foreach (var handlerWithType in handlerWithTypes.OrderBy(x => x.Item3)) - { - handlerFactoryList.Add(new EventTypeWithEventHandlerFactories(handlerWithType.Item2, new List{ handlerWithType.Item1 })); - } - - return handlerFactoryList.ToArray(); + return handlerFactoryList.OrderBy(x => x.Item3).Select(x => new EventTypeWithEventHandlerFactories(x.Item2, new List {x.Item1})).ToArray(); } private List GetOrCreateHandlerFactories(Type eventType) From 63eed883970778775905928deec28277e76b7798 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 12 May 2023 11:14:07 +0800 Subject: [PATCH 19/65] Show warning instead of crashing the application when a bundle script/style file not found. Resolve #14795 --- .../TagHelpers/AbpTagHelperResourceService.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs index 1190e1794d..04a8761534 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs @@ -3,14 +3,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using System; using System.Collections.Generic; using System.Diagnostics; +using System.Text.Encodings.Web; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; -using Volo.Abp.AspNetCore.VirtualFileSystem; using Volo.Abp.DependencyInjection; namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers; @@ -68,7 +67,9 @@ public abstract class AbpTagHelperResourceService : ITransientDependency if (file == null || !file.Exists) { - throw new AbpException($"Could not find the bundle file '{bundleFile}' for the bundle '{bundleName}'!"); + Logger.LogError($"Could not find the bundle file '{bundleFile}' for the bundle '{bundleName}'!"); + AddErrorScript(viewContext, tagHelper, context, output, bundleFile, bundleName); + continue; } if (file.Length > 0) @@ -87,6 +88,11 @@ public abstract class AbpTagHelperResourceService : ITransientDependency protected abstract void AddHtmlTag(ViewContext viewContext, TagHelper tagHelper, TagHelperContext context, TagHelperOutput output, string file); + protected virtual void AddErrorScript(ViewContext viewContext, TagHelper tagHelper, TagHelperContext context, TagHelperOutput output, string file, string bundleName) + { + output.Content.AppendHtml($"{Environment.NewLine}"); + } + protected virtual string GenerateBundleName(List bundleItems) { return bundleItems.JoinAsString("|").ToMd5(); From 01a00589e8eb7323dc806d0c41bf25744930e444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Fri, 12 May 2023 08:50:08 +0300 Subject: [PATCH 20/65] a new method has been written for recent posts --- .../Volo/Blogging/Posts/IPostAppService.cs | 2 ++ .../Volo/Blogging/Posts/PostAppService.cs | 29 +++++++++++++++++++ .../Volo/Blogging/Posts/IPostRepository.cs | 2 ++ .../Volo/Blogging/Users/BlogUser.cs | 14 ++++----- .../Blogging/Posts/EfCorePostRepository.cs | 9 ++++++ .../PostsClientProxy.Generated.cs | 9 ++++++ .../Volo/Blogging/PostsController.cs | 7 +++++ .../Blogging/Posts/MongoPostRepository.cs | 10 +++++++ .../Pages/Blogs/Posts/Detail.cshtml | 4 +-- .../Pages/Blogs/Posts/Detail.cshtml.cs | 2 +- .../Volo.Blogging.Web/Pages/Members/Index.js | 2 -- 11 files changed, 78 insertions(+), 12 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/IPostAppService.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/IPostAppService.cs index e4af45a345..2fbb5bd845 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/IPostAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/IPostAppService.cs @@ -23,5 +23,7 @@ namespace Volo.Blogging.Posts Task UpdateAsync(Guid id, UpdatePostDto input); Task> GetListByUserIdAsync(Guid userId); + + Task> GetLatestBlogPostsAsync(Guid blogId, int count); } } diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs index 0158dc0e5a..939dc29640 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs @@ -195,6 +195,35 @@ namespace Volo.Blogging.Posts return ObjectMapper.Map, List>(posts); } + public async Task> GetLatestBlogPostsAsync(Guid blogId, int count) + { + var posts = await PostRepository.GetLatestBlogPostsAsync(blogId, count); + var userDictionary = new Dictionary(); + var postDtos = new List(ObjectMapper.Map, List>(posts)); + + foreach (var postDto in postDtos) + { + if (postDto.CreatorId.HasValue) + { + if (!userDictionary.ContainsKey(postDto.CreatorId.Value)) + { + var creatorUser = await UserLookupService.FindByIdAsync(postDto.CreatorId.Value); + if (creatorUser != null) + { + userDictionary[creatorUser.Id] = ObjectMapper.Map(creatorUser); + } + } + + if (userDictionary.ContainsKey(postDto.CreatorId.Value)) + { + postDto.Writer = userDictionary[(Guid)postDto.CreatorId]; + } + } + } + + return new List(postDtos); + } + [Authorize(BloggingPermissions.Posts.Create)] public async Task CreateAsync(CreatePostDto input) { diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/IPostRepository.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/IPostRepository.cs index 33a6377264..d29d72fc8b 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/IPostRepository.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/IPostRepository.cs @@ -17,5 +17,7 @@ namespace Volo.Blogging.Posts Task> GetOrderedList(Guid blogId,bool descending = false, CancellationToken cancellationToken = default); Task> GetListByUserIdAsync(Guid userId, CancellationToken cancellationToken = default); + + Task> GetLatestBlogPostsAsync(Guid blogId, int count, CancellationToken cancellationToken = default); } } diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs index c7dfa77650..cbe530f11f 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Users/BlogUser.cs @@ -26,25 +26,25 @@ namespace Volo.Blogging.Users public virtual bool PhoneNumberConfirmed { get; protected set; } [CanBeNull] - public string WebSite { get; set; } + public virtual string WebSite { get; set; } [CanBeNull] - public string Twitter { get; set; } + public virtual string Twitter { get; set; } [CanBeNull] - public string Github { get; set; } + public virtual string Github { get; set; } [CanBeNull] - public string Linkedin { get; set; } + public virtual string Linkedin { get; set; } [CanBeNull] - public string Company { get; set; } + public virtual string Company { get; set; } [CanBeNull] - public string JobTitle { get; set; } + public virtual string JobTitle { get; set; } [CanBeNull] - public string Biography { get; set; } + public virtual string Biography { get; set; } protected BlogUser() { diff --git a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Posts/EfCorePostRepository.cs b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Posts/EfCorePostRepository.cs index 48dfabb77e..98d2d76685 100644 --- a/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Posts/EfCorePostRepository.cs +++ b/modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Posts/EfCorePostRepository.cs @@ -70,6 +70,15 @@ namespace Volo.Blogging.Posts return await query.ToListAsync(GetCancellationToken(cancellationToken)); } + public async Task> GetLatestBlogPostsAsync(Guid blogId, int count, CancellationToken cancellationToken = default) + { + var query = (await GetDbSetAsync()).Where(p => p.BlogId == blogId) + .OrderByDescending(p => p.CreationTime) + .Take(count); + + return await query.ToListAsync(GetCancellationToken(cancellationToken)); + } + public override async Task> WithDetailsAsync() { return (await GetQueryableAsync()).IncludeDetails(); diff --git a/modules/blogging/src/Volo.Blogging.HttpApi.Client/ClientProxies/PostsClientProxy.Generated.cs b/modules/blogging/src/Volo.Blogging.HttpApi.Client/ClientProxies/PostsClientProxy.Generated.cs index 697606f05c..7f730ee3f2 100644 --- a/modules/blogging/src/Volo.Blogging.HttpApi.Client/ClientProxies/PostsClientProxy.Generated.cs +++ b/modules/blogging/src/Volo.Blogging.HttpApi.Client/ClientProxies/PostsClientProxy.Generated.cs @@ -74,6 +74,15 @@ public partial class PostsClientProxy : ClientProxyBase, IPostA }); } + public Task> GetLatestBlogPostsAsync(Guid blogId, int count) + { + return RequestAsync>(nameof(GetLatestBlogPostsAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), blogId }, + { typeof(int), count } + }); + } + public virtual async Task DeleteAsync(Guid id) { await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue diff --git a/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/PostsController.cs b/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/PostsController.cs index f2f31261a6..52d7a6426a 100644 --- a/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/PostsController.cs +++ b/modules/blogging/src/Volo.Blogging.HttpApi/Volo/Blogging/PostsController.cs @@ -69,6 +69,13 @@ namespace Volo.Blogging return _postAppService.GetListByUserIdAsync(userId); } + [HttpGet] + [Route("{blogId}/latest/{count}")] + public Task> GetLatestBlogPostsAsync(Guid blogId, int count) + { + return _postAppService.GetLatestBlogPostsAsync(blogId, count); + } + [HttpDelete] [Route("{id}")] public Task DeleteAsync(Guid id) diff --git a/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Posts/MongoPostRepository.cs b/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Posts/MongoPostRepository.cs index be6942eac2..eea6e82015 100644 --- a/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Posts/MongoPostRepository.cs +++ b/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Posts/MongoPostRepository.cs @@ -4,6 +4,7 @@ using System.Threading; using System.Threading.Tasks; using MongoDB.Driver; using MongoDB.Driver.Linq; +using Nito.AsyncEx; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories.MongoDB; using Volo.Abp.MongoDB; @@ -66,5 +67,14 @@ namespace Volo.Blogging.Posts return await query.ToListAsync(GetCancellationToken(cancellationToken)); } + + public async Task> GetLatestBlogPostsAsync(Guid blogId, int count, CancellationToken cancellationToken = default) + { + var query = (await GetMongoQueryableAsync(cancellationToken)).Where(x => x.BlogId == blogId) + .OrderByDescending(x => x.CreationTime) + .Take(count); + + return await query.ToListAsync(GetCancellationToken(cancellationToken)); + } } } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml index a03bd22af3..43ad9abc2f 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml @@ -439,12 +439,12 @@ } else { - @L["LeaveComment"] + @L["LeaveComment"] }

More from @CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Model.Post.Writer.UserName)

- @for (var index = 0; index < Model.PostsList.Count && index <= 5; index++) + @for (var index = 0; index < Model.PostsList.Count; index++) { if (Model.PostsList[index].Id != Model.Post.Id) { diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs index 49bef9c549..54d1a4e71d 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml.cs @@ -87,7 +87,7 @@ namespace Volo.Blogging.Pages.Blog.Posts Blog = await _blogAppService.GetByShortNameAsync(BlogShortName); Post = await _postAppService.GetForReadingAsync(new GetPostInput { BlogId = Blog.Id, Url = PostUrl }); PostsList = await _postAppService.GetListByUserIdAsync(Post.Writer.Id); - LatestPosts = (await _postAppService.GetListByBlogIdAndTagNameAsync(Blog.Id, TagName)).Items; + LatestPosts = await _postAppService.GetLatestBlogPostsAsync(Blog.Id, 5); CommentsWithReplies = await _commentAppService.GetHierarchicalListOfPostAsync(Post.Id); CountComments(); } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js index c20251820f..75f59564d2 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js @@ -1,8 +1,6 @@ $(function () { - debugger var hash = window.location.hash; if(hash === '#edit-profile'){ - console.log("asdasdsa") $('#all-posts-tab').removeClass('active'); $('#all-posts').removeClass('show').removeClass('active'); $('#edit-profile-tab').addClass('active'); From 3a8834931bf7191d5100b46ec33b395904b9e62b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Fri, 12 May 2023 14:19:07 +0300 Subject: [PATCH 21/65] refactoring --- .../Volo/Blogging/Posts/PostAppService.cs | 27 ++++++++++--------- .../Pages/Blogs/Posts/Detail.cshtml | 18 ++++--------- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs index 939dc29640..1983bd3cbf 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs @@ -203,21 +203,22 @@ namespace Volo.Blogging.Posts foreach (var postDto in postDtos) { - if (postDto.CreatorId.HasValue) + if (!postDto.CreatorId.HasValue) { - if (!userDictionary.ContainsKey(postDto.CreatorId.Value)) - { - var creatorUser = await UserLookupService.FindByIdAsync(postDto.CreatorId.Value); - if (creatorUser != null) - { - userDictionary[creatorUser.Id] = ObjectMapper.Map(creatorUser); - } - } + continue; + } - if (userDictionary.ContainsKey(postDto.CreatorId.Value)) - { - postDto.Writer = userDictionary[(Guid)postDto.CreatorId]; - } + if (userDictionary.TryGetValue(postDto.CreatorId.Value, out var creatorUserDto)) + { + postDto.Writer = creatorUserDto; + continue; + } + + var creatorUser = await UserLookupService.FindByIdAsync(postDto.CreatorId.Value); + if (creatorUser != null) + { + postDto.Writer = ObjectMapper.Map(creatorUser); + userDictionary[creatorUser.Id] = postDto.Writer; } } diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml index 43ad9abc2f..9c44b0feb2 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml @@ -129,6 +129,11 @@
+
+

+ @Html.Raw(BloggingPageHelper.RenderMarkdownToHtml(Model.Post.Content)) +

+
@@ -210,19 +215,6 @@
-
-
-
-

- @Html.Raw(BloggingPageHelper.RenderMarkdownToHtml(Model.Post.Content)) -

-
-
-
- -
-
-
@if (Model.Post.Tags.Count > 0) From 18d84d1caeb57517f1aa208228a5231ab07c33e8 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Fri, 12 May 2023 15:30:42 +0300 Subject: [PATCH 22/65] Update ChangeThemeStep.cs --- .../Building/Steps/ChangeThemeStep.cs | 676 +++++------------- 1 file changed, 183 insertions(+), 493 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 31f209f98e..f05cb80df3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -10,6 +10,10 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; public class ChangeThemeStep : ProjectBuildPipelineStep { + private const string BasicTheme = "Basic"; + private const string LeptonXTheme = "LeptonX"; + private const string LeptonTheme = "Lepton"; + public override void Execute(ProjectBuildContext context) { if (!context.BuildArgs.Theme.HasValue) @@ -28,50 +32,53 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } } - protected void ChangeToBasicTheme(ProjectBuildContext context) + protected virtual void ChangeToBasicTheme(ProjectBuildContext context) { var defaultThemeName = context.BuildArgs.TemplateName is AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName - ? "LeptonXLite" - : "LeptonX"; - - #region MVC Projects + ? "LeptonXLite" : "LeptonX"; ChangeThemeToBasicForMvcProjects(context, defaultThemeName); + ChangeThemeToBasicForBlazorProjects(context, defaultThemeName); + ChangeThemeToBasicForBlazorServerProjects(context, defaultThemeName); + ChangeThemeToBasicForAngularProjects(context, defaultThemeName); + } - #endregion - - #region MyCompanyName.MyProjectName.Blazor + protected virtual void ChangeToLeptonTheme(ProjectBuildContext context) + { + //common + RenameLeptonXFolders(context, folderName: "Lepton"); + AddLeptonThemeManagementReferenceToProjects(context); + ChangeThemeToLeptonForMvcProjects(context); + ChangeThemeToLeptonForBlazorProjects(context); + ChangeThemeToLeptonForBlazorServerProjects(context); + ChangeThemeToLeptonForAngularProjects(context); + ConfigureLeptonManagementPackagesForNoLayersMvc(context, "/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.csproj", new[] { "Web", "HttpApi", "Application" }); + ChangeThemeToLeptonForNoLayersBlazorServerProjects(context); + ChangeThemeToLeptonForMauiBlazorProjects(context); + } + + private static void ChangeThemeToBasicForBlazorProjects(ProjectBuildContext context, string defaultThemeName) + { ReplacePackageReferenceWithProjectReference( context, "/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", $"Volo.Abp.AspNetCore.Components.WebAssembly.{defaultThemeName}Theme", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - $"Volo.Abp.AspNetCore.Components.WebAssembly.{defaultThemeName}Theme", - "Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme", - $"AbpAspNetCoreComponentsWebAssembly{defaultThemeName}ThemeModule", - "AbpAspNetCoreComponentsWebAssemblyBasicThemeModule" ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - $"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Themes.{defaultThemeName}", - "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic", - $"AbpAspNetCoreComponentsWebAssembly{defaultThemeName}ThemeModule", - "AbpAspNetCoreComponentsWebAssemblyBasicThemeModule" + $"{defaultThemeName}Theme.Components", + "BasicTheme.Themes.Basic" ); - - ChangeNamespace( + + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - $"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Components", - "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic" + defaultThemeName, + BasicTheme ); ReplacePackageReferenceWithProjectReference( @@ -81,37 +88,23 @@ public class ChangeThemeStep : ProjectBuildPipelineStep @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); - ChangeNamespaceAndKeyword( + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - $"{defaultThemeName}ThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" + defaultThemeName, + BasicTheme ); + } - ChangeNamespaceAndKeyword( - context, - "/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - #endregion - - #region Blazor.Server Projects - - ChangeThemeToBasicForBlazorProjects(context, defaultThemeName); - - #endregion - - #region Angular - + private static void ChangeThemeToBasicForAngularProjects(ProjectBuildContext context, string defaultThemeName) + { + if (context.BuildArgs.UiFramework != UiFramework.Angular) + { + return; + } + var angularPackageName = context.BuildArgs.TemplateName is AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName - ? "@abp/ng.theme.lepton-x" - : "@volosoft/abp.ng.theme.lepton-x"; + ? "@abp/ng.theme.lepton-x" : "@volosoft/abp.ng.theme.lepton-x"; ReplaceImportPackage( context, @@ -126,7 +119,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep "SideMenuLayoutModule" ); - ReplaceMethodNames( + ReplaceAllKeywords( context, "/angular/src/app/app.module.ts", "ThemeLeptonXModule", @@ -139,102 +132,65 @@ public class ChangeThemeStep : ProjectBuildPipelineStep "node_modules/bootstrap-icons/font/bootstrap-icons.css" ); - if(defaultThemeName == "LeptonX") + if (defaultThemeName != "LeptonX") { - ReplaceMethodNames( - context, - "/angular/src/app/app.module.ts", - "HttpErrorComponent, ", - "" - ); - - ChangeModuleImportBetweenStatements( - context, - "/angular/src/app/app.module.ts", - "ThemeSharedModule.forRoot", - "AccountAdminConfigModule.forRoot", - "ThemeSharedModule.forRoot()," - ); + return; } - #endregion + ReplaceAllKeywords( + context, + "/angular/src/app/app.module.ts", + "HttpErrorComponent, ", + "" + ); + + ChangeModuleImportBetweenStatements( + context, + "/angular/src/app/app.module.ts", + "ThemeSharedModule.forRoot", + "AccountAdminConfigModule.forRoot", + "ThemeSharedModule.forRoot()," + ); } - protected void ChangeToLeptonTheme(ProjectBuildContext context) + private static void ChangeThemeToLeptonForBlazorProjects(ProjectBuildContext context) { - #region Common - - RenameLeptonXFolders(context, folderName: "Lepton"); - AddLeptonThemeManagementReferenceToProjects(context); - - #endregion - - #region MVC Projects - - ChangeThemeToLeptonForMvcProjects(context); - - #endregion - - #region MyCompanyName.MyProjectName.Blazor - ReplacePackageReferenceWithProjectReference( context, "/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", "Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXTheme", @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme.csproj" ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", - "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", - "AbpAspNetCoreComponentsWebAssemblyLeptonXThemeModule", - "AbpAspNetCoreComponentsWebAssemblyLeptonThemeModule" + LeptonXTheme, + LeptonTheme ); - ChangeNamespace( - context, - "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXTheme", - "Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme" - ); - ReplacePackageReferenceWithProjectReference( context, "/MyCompanyName.MyProjectName.Host/MyCompanyName.MyProjectName.Host.csproj", "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" ); - - ChangeNamespaceAndKeyword( - context, - "/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" + LeptonXTheme, + LeptonTheme ); + } - #endregion - - #region MyCompanyName.MyProjectName.Blazor.Server && MyCompanyName.MyProjectName.Blazor.Server.Tiered - - ChangeThemeToLeptonForBlazorServerProjects(context); - - #endregion - - #region Angular - + private static void ChangeThemeToLeptonForAngularProjects(ProjectBuildContext context) + { + if (context.BuildArgs.UiFramework != UiFramework.Angular) + { + return; + } + ReplaceImportPackage( context, "/angular/src/app/app.module.ts", @@ -247,8 +203,8 @@ public class ChangeThemeStep : ProjectBuildPipelineStep "/angular/src/app/app.module.ts", "SideMenuLayoutModule" ); - - ReplaceMethodNames( + + ReplaceAllKeywords( context, "/angular/src/app/app.module.ts", "ThemeLeptonXModule", @@ -260,30 +216,9 @@ public class ChangeThemeStep : ProjectBuildPipelineStep "/angular/angular.json", "node_modules/bootstrap-icons/font/bootstrap-icons.css" ); - - #endregion - - #region MyCompanyName.MyProjectName.Mvc && MyCompanyName.MyProjectName.Mvc.Mongo - - var projectNames = new[] {"Web", "HttpApi", "Application"}; - ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.csproj", projectNames); - - #endregion - - #region MyCompanyName.MyProjectName.Blazor.Server && MyCompanyName.MyProjectName.Blazor.Server.Mongo - (app-nolayers) - - ChangeThemeToLeptonForNoLayersBlazorServerProjects(context); - - #endregion - - #region MyCompanyName.MyProjectName.MauiBlazor - - ChangeThemeToLeptonForMauiBlazorProjects(context); - - #endregion } - private void ConfigureLeptonManagementPackagesForNoLayersMvc(ProjectBuildContext context, string targetProjectPath, string[] projectNames) + private static void ConfigureLeptonManagementPackagesForNoLayersMvc(ProjectBuildContext context, string targetProjectPath, IEnumerable projectNames) { var file = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(targetProjectPath) && f.Name.Contains(".csproj")); if (file == null) @@ -304,7 +239,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } } - private void ChangeThemeToLeptonForMvcProjects(ProjectBuildContext context) + private static void ChangeThemeToLeptonForMvcProjects(ProjectBuildContext context) { var projectNames = new[] { @@ -333,23 +268,12 @@ public class ChangeThemeStep : ProjectBuildPipelineStep "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, moduleFile.Name, - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - moduleFile.Name, - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" + LeptonXTheme, + LeptonTheme ); RemoveLinesByStatement( @@ -360,7 +284,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } } - private void AddLeptonThemeManagementReferenceToProjects(ProjectBuildContext context) + private static void AddLeptonThemeManagementReferenceToProjects(ProjectBuildContext context) { var projects = new Dictionary { @@ -396,7 +320,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } } - private void AddUiProjectToProjects(Dictionary projects, ProjectBuildContext context) + private static void AddUiProjectToProjects(Dictionary projects, ProjectBuildContext context) { if (projects.IsNullOrEmpty()) { @@ -418,7 +342,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } } - private void AddLeptonThemeManagementReference(ProjectBuildContext context, KeyValuePair projectInfo) + private static void AddLeptonThemeManagementReference(ProjectBuildContext context, KeyValuePair projectInfo) { var reference = $@"..\..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.{projectInfo.Key}\Volo.Abp.LeptonTheme.Management.{projectInfo.Key}.csproj"; var projectFile = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(projectInfo.Value) && f.Name.Contains(".csproj")); @@ -439,7 +363,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep underManagementFolder: projectInfo.Key != "HttpApi"); } - private void AddModuleDependency(FileEntry moduleFile, string projectName, string dependency, bool underManagementFolder = true) + private static void AddModuleDependency(FileEntry moduleFile, string projectName, string dependency, bool underManagementFolder = true) { var projectNames = new[] { "Blazor", "Blazor.Server", "Blazor.WebAssembly" }; @@ -460,11 +384,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep moduleFile.SetLines(lines); } - protected void ReplacePackageReferenceWithProjectReference( - ProjectBuildContext context, - string targetProjectFilePath, - string packageReference, - string projectReference) + private static void ReplacePackageReferenceWithProjectReference(ProjectBuildContext context, string targetProjectFilePath, string packageReference, string projectReference) { var file = context.Files.FirstOrDefault(x => x.Name.Contains(targetProjectFilePath)); if (file == null) @@ -485,97 +405,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep file.SetLines(lines); } - protected void ChangeNamespaceAndKeyword( - ProjectBuildContext context, - string targetModuleFilePath, - string oldNamespace, - string newNamespace, - string oldKeyword, - string newKeyword) - { - var file = context.Files.FirstOrDefault(x => x.Name.Contains(targetModuleFilePath)); - if (file == null) - { - return; - } - - file.NormalizeLineEndings(); - - var lines = file.GetLines(); - - for (var i = 0; i < lines.Length; i++) - { - if (lines[i].Contains($"using {oldNamespace}")) - { - lines[i] = lines[i].Replace($"using {oldNamespace}", $"using {newNamespace}"); - } - else if (lines[i].Contains(oldKeyword)) - { - lines[i] = lines[i].Replace(oldKeyword, newKeyword); - } - } - - file.SetLines(lines); - } - - protected void ChangeNamespace( - ProjectBuildContext context, - string targetModuleFilePath, - string oldNamespace, - string newNamespace) - { - var file = context.Files.FirstOrDefault(x => x.Name.Contains(targetModuleFilePath)); - if (file == null) - { - return; - } - - file.NormalizeLineEndings(); - - var lines = file.GetLines(); - for (var i = 0; i < lines.Length; i++) - { - if (lines[i].Contains($"using {oldNamespace}")) - { - lines[i] = lines[i].Replace($"using {oldNamespace}", $"using {newNamespace}"); - } - } - - file.SetLines(lines); - } - - protected void ChangeKeyword( - ProjectBuildContext context, - string targetModuleFilePath, - string oldKeyword, - string newKeyword) - { - var file = context.Files.FirstOrDefault(x => x.Name.Contains(targetModuleFilePath)); - if (file == null) - { - return; - } - - file.NormalizeLineEndings(); - - var lines = file.GetLines(); - - for (var i = 0; i < lines.Length; i++) - { - if (lines[i].Contains(oldKeyword)) - { - lines[i] = lines[i].Replace(oldKeyword, newKeyword); - } - } - - file.SetLines(lines); - } - - protected void ReplaceImportPackage( - ProjectBuildContext context, - string filePath, - string oldImportPackage, - string newImportPackage) + private static void ReplaceImportPackage(ProjectBuildContext context, string filePath, string oldImportPackage, string newImportPackage) { var file = context.Files.FirstOrDefault(x => x.Name.Contains(filePath)); if (file == null) @@ -584,6 +414,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } file.NormalizeLineEndings(); + var lines = file.GetLines(); var lineIndex = lines.FindIndex(line => line.Contains($"from '{oldImportPackage}'")); if (lineIndex == -1) @@ -595,10 +426,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep file.SetLines(lines); } - protected void RemoveLinesByStatement( - ProjectBuildContext context, - string filePath, - string statement) + private static void RemoveLinesByStatement(ProjectBuildContext context, string filePath, string statement) { var file = context.Files.FirstOrDefault(x => x.Name.Contains(filePath)); if (file == null) @@ -620,12 +448,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep file.SetLines(lines.Where(x => x != null)); } - private void ChangeModuleImportBetweenStatements( - ProjectBuildContext context, - string filePath, - string firstStatement, - string lastStatement, - string newStatement) + private static void ChangeModuleImportBetweenStatements(ProjectBuildContext context, string filePath, string firstStatement, string lastStatement, string newStatement) { var file = context.Files.FirstOrDefault(x => x.Name.Contains(filePath)); if (file == null) @@ -651,36 +474,9 @@ public class ChangeThemeStep : ProjectBuildPipelineStep lines[i] = null; } - file.SetLines(lines.Where(x => x != null)); } - - protected void ReplaceMethodNames( - ProjectBuildContext context, - string filePath, - string oldMethodName, - string newMethodName) - { - var file = context.Files.FirstOrDefault(x => x.Name.Contains(filePath)); - if (file == null) - { - return; - } - - file.NormalizeLineEndings(); - - var lines = file.GetLines(); - for (var i = 0; i < lines.Length; i++) - { - if (lines[i].Contains(oldMethodName)) - { - lines[i] = lines[i].Replace(oldMethodName, newMethodName); - } - } - - file.SetLines(lines); - } - + private static void AddProjectReference(FileEntry file, string reference) { if (!file.Name.Contains(".csproj")) @@ -746,7 +542,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep splittedProjectFileName = splittedProjectFileName.Take(splittedProjectFileName.Length - 1).ToArray(); - var fileName = splittedProjectFileName?.Last(); + var fileName = splittedProjectFileName.Last(); if (fileName == null) { return null; @@ -767,14 +563,38 @@ public class ChangeThemeStep : ProjectBuildPipelineStep private static void RenameLeptonXFolders(ProjectBuildContext context, string folderName) { - var leptonXFiles = context.Files.Where(x => x.Name.Contains("LeptonX") && x.IsDirectory); - foreach (var file in leptonXFiles) + foreach (var file in context.Files.Where(x => x.Name.Contains("LeptonX") && x.IsDirectory)) { new MoveFolderStep(file.Name, file.Name.Replace("LeptonX", folderName)).Execute(context); } } - private void ChangeThemeToBasicForMvcProjects(ProjectBuildContext context, string defaultThemeName) + private static void ReplaceAllKeywords(ProjectBuildContext context, string targetModuleFilePath, string oldKeyword, string newKeyword) + { + var file = context.Files.FirstOrDefault(x => x.Name.Contains(targetModuleFilePath)); + if (file == null) + { + return; + } + + file.NormalizeLineEndings(); + + var lines = file.GetLines(); + + for (var i = 0; i < lines.Length; i++) + { + if (!lines[i].Contains(oldKeyword)) + { + continue;; + } + + lines[i] = lines[i].Replace(oldKeyword, newKeyword); + } + + file.SetLines(lines); + } + + private static void ChangeThemeToBasicForMvcProjects(ProjectBuildContext context, string defaultThemeName) { var projects = new Dictionary { @@ -794,28 +614,17 @@ public class ChangeThemeStep : ProjectBuildPipelineStep $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName{project.Key}/{project.Value}.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName{project.Key}/{project.Value}.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - $"{defaultThemeName}ThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" + defaultThemeName, + BasicTheme ); } } - private void ChangeThemeToBasicForBlazorProjects(ProjectBuildContext context, string defaultThemeName) + private static void ChangeThemeToBasicForBlazorServerProjects(ProjectBuildContext context, string defaultThemeName) { var projects = new Dictionary { @@ -840,73 +649,34 @@ public class ChangeThemeStep : ProjectBuildPipelineStep $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", - $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme", - $"AbpAspNetCoreComponentsServer{defaultThemeName}ThemeModule", - "AbpAspNetCoreComponentsServerBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", - $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", - $"{defaultThemeName}ThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", - "BlazorBasicThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", - $"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Components", - "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic", - $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", - "BlazorBasicThemeBundles.Styles.Global" + $"{defaultThemeName}Theme.Components", + BasicTheme ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, - $"/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", - $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", - $"Blazor{defaultThemeName}ThemeBundles.Scripts.Global", - "BlazorBasicThemeBundles.Scripts.Global" + $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + defaultThemeName, + BasicTheme ); - - ChangeNamespace( + + ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", - $"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Themes.{defaultThemeName}", - "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic" + defaultThemeName, + BasicTheme ); } } - private void ChangeThemeToLeptonForBlazorServerProjects(ProjectBuildContext context) + private static void ChangeThemeToLeptonForBlazorServerProjects(ProjectBuildContext context) { - var projectNames = new[] {"Blazor", "Blazor.Server.Tiered"}; + var projectNames = new[] { "Blazor", "Blazor.Server.Tiered" }; + foreach (var projectName in projectNames) { ReplacePackageReferenceWithProjectReference( @@ -922,59 +692,19 @@ public class ChangeThemeStep : ProjectBuildPipelineStep "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", - "AbpAspNetCoreComponentsServerLeptonXThemeModule", - "AbpAspNetCoreComponentsServerLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" + LeptonXTheme, + LeptonTheme ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", - "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "BlazorLeptonXThemeBundles.Scripts.Global", - "BlazorLeptonThemeBundles.Scripts.Global" + LeptonXTheme, + LeptonTheme ); RemoveLinesByStatement( @@ -985,11 +715,11 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } } - private void ChangeThemeToLeptonForNoLayersBlazorServerProjects(ProjectBuildContext context) + private static void ChangeThemeToLeptonForNoLayersBlazorServerProjects(ProjectBuildContext context) { var blazorServerProjects = new[] { "Blazor.Server", "HttpApi", "Application" }; - var projectNames = new[] { "Blazor.Server", "Blazor.Server.Mongo" }; + foreach (var projectName in projectNames) { ReplacePackageReferenceWithProjectReference( @@ -1006,67 +736,29 @@ public class ChangeThemeStep : ProjectBuildPipelineStep @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" ); - ConfigureLeptonManagementPackagesForNoLayersMvc(context, - $@"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", - blazorServerProjects); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", - "AbpAspNetCoreComponentsServerLeptonXThemeModule", - "AbpAspNetCoreComponentsServerLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( + ConfigureLeptonManagementPackagesForNoLayersMvc( context, - $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" + $@"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + blazorServerProjects ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" + LeptonXTheme, + LeptonTheme ); - - ChangeNamespaceAndKeyword( + + ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", - "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "BlazorLeptonXThemeBundles.Scripts.Global", - "BlazorLeptonThemeBundles.Scripts.Global" + LeptonXTheme, + LeptonTheme ); } } - private void ChangeThemeToLeptonForMauiBlazorProjects(ProjectBuildContext context) + private static void ChangeThemeToLeptonForMauiBlazorProjects(ProjectBuildContext context) { ReplacePackageReferenceWithProjectReference( context, @@ -1074,44 +766,42 @@ public class ChangeThemeStep : ProjectBuildPipelineStep "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme", @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme\Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme.csproj" ); - - ChangeNamespaceAndKeyword( - context, - "/MyCompanyName.MyProjectName.MauiBlazor/MyProjectNameMauiBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme", - "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme", - "AbpAspNetCoreComponentsMauiBlazorLeptonXThemeModule", - "AbpAspNetCoreComponentsMauiBlazorLeptonThemeModule" - ); - - ChangeKeyword( + + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.MauiBlazor/MainPage.xaml", "clr-namespace:Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components;assembly=Volo.Abp.AspNetCore.Components.Web.LeptonXTheme", "clr-namespace:Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components;assembly=Volo.Abp.AspNetCore.Components.Web.LeptonTheme"); - ChangeKeyword( + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.MauiBlazor/MainPage.xaml", "leptonXTheme", "leptonTheme"); - ChangeKeyword( + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.MauiBlazor/Pages/Account/Login.razor", "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme.Components.AccountLayout", "Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonTheme.Components.AccountLayout"); - ChangeKeyword( + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.MauiBlazor/Pages/Account/RedirectToLogout.razor", "LeptonXResource", "LeptonThemeManagementResource"); - ChangeKeyword( + ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.MauiBlazor/Pages/Account/RedirectToLogout.razor", "Volo.Abp.LeptonX.Shared.Localization", "Volo.Abp.LeptonTheme.Management.Localization"); + + ReplaceAllKeywords( + context, + "/MyCompanyName.MyProjectName.MauiBlazor/MyProjectNameMauiBlazorModule.cs", + LeptonXTheme, + LeptonTheme + ); } -} +} \ No newline at end of file From 525d223155fedd3871601b651545c0fa5b757af0 Mon Sep 17 00:00:00 2001 From: Engincan VESKE <43685404+EngincanV@users.noreply.github.com> Date: Fri, 12 May 2023 16:04:00 +0300 Subject: [PATCH 23/65] Update ChangeThemeStep.cs --- .../Building/Steps/ChangeThemeStep.cs | 136 +++++++----------- 1 file changed, 53 insertions(+), 83 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index f05cb80df3..c303c1196a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -10,9 +10,10 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; public class ChangeThemeStep : ProjectBuildPipelineStep { - private const string BasicTheme = "Basic"; - private const string LeptonXTheme = "LeptonX"; - private const string LeptonTheme = "Lepton"; + private const string Basic = "Basic"; + private const string LeptonXLite = "LeptonXLite"; + private const string LeptonX = "LeptonX"; + private const string Lepton = "Lepton"; public override void Execute(ProjectBuildContext context) { @@ -35,29 +36,41 @@ public class ChangeThemeStep : ProjectBuildPipelineStep protected virtual void ChangeToBasicTheme(ProjectBuildContext context) { var defaultThemeName = context.BuildArgs.TemplateName is AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName - ? "LeptonXLite" : "LeptonX"; + ? LeptonXLite : LeptonX; ChangeThemeToBasicForMvcProjects(context, defaultThemeName); ChangeThemeToBasicForBlazorProjects(context, defaultThemeName); ChangeThemeToBasicForBlazorServerProjects(context, defaultThemeName); - ChangeThemeToBasicForAngularProjects(context, defaultThemeName); + ChangeThemeForAngularProjects(context, defaultThemeName, Basic, GetAngularPackageName(context.BuildArgs.Theme!.Value), GetAngularPackageName(Theme.Basic)); } protected virtual void ChangeToLeptonTheme(ProjectBuildContext context) { //common - RenameLeptonXFolders(context, folderName: "Lepton"); + RenameFolders(context, oldFolderName: LeptonX , newFolderName: Lepton); AddLeptonThemeManagementReferenceToProjects(context); ChangeThemeToLeptonForMvcProjects(context); ChangeThemeToLeptonForBlazorProjects(context); ChangeThemeToLeptonForBlazorServerProjects(context); - ChangeThemeToLeptonForAngularProjects(context); + ChangeThemeForAngularProjects(context, oldThemeName: LeptonX, Lepton, GetAngularPackageName(Theme.LeptonX), GetAngularPackageName(Theme.Lepton)); + ConfigureLeptonManagementPackagesForNoLayersMvc(context, "/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.csproj", new[] { "Web", "HttpApi", "Application" }); ChangeThemeToLeptonForNoLayersBlazorServerProjects(context); ChangeThemeToLeptonForMauiBlazorProjects(context); } + private static string GetAngularPackageName(Theme theme) + { + return theme switch + { + Theme.LeptonX => "@volosoft/abp.ng.theme.lepton-x", + Theme.LeptonXLite => "@abp/ng.theme.lepton-x", + Theme.Basic => "@abp/ng.theme.basic", + _ => string.Empty + }; + } + private static void ChangeThemeToBasicForBlazorProjects(ProjectBuildContext context, string defaultThemeName) { ReplacePackageReferenceWithProjectReference( @@ -78,7 +91,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep context, "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", defaultThemeName, - BasicTheme + Basic ); ReplacePackageReferenceWithProjectReference( @@ -92,47 +105,38 @@ public class ChangeThemeStep : ProjectBuildPipelineStep context, "/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs", defaultThemeName, - BasicTheme + Basic ); } - private static void ChangeThemeToBasicForAngularProjects(ProjectBuildContext context, string defaultThemeName) + private static void ChangeThemeForAngularProjects(ProjectBuildContext context, string oldThemeName, string newThemeName, string oldPackageName, string newPackageName) { if (context.BuildArgs.UiFramework != UiFramework.Angular) { return; } - var angularPackageName = context.BuildArgs.TemplateName is AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName - ? "@abp/ng.theme.lepton-x" : "@volosoft/abp.ng.theme.lepton-x"; - ReplaceImportPackage( context, "/angular/src/app/app.module.ts", - angularPackageName, - "@abp/ng.theme.basic" + oldPackageName, + newPackageName ); - + RemoveLinesByStatement( context, "/angular/src/app/app.module.ts", "SideMenuLayoutModule" ); - + ReplaceAllKeywords( context, "/angular/src/app/app.module.ts", - "ThemeLeptonXModule", - "ThemeBasicModule" + $"Theme{oldThemeName}Module", + $"Theme{newThemeName}Module" ); - RemoveLinesByStatement( - context, - "/angular/angular.json", - "node_modules/bootstrap-icons/font/bootstrap-icons.css" - ); - - if (defaultThemeName != "LeptonX") + if (oldThemeName != LeptonX) { return; } @@ -165,8 +169,8 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - LeptonXTheme, - LeptonTheme + LeptonX, + Lepton ); ReplacePackageReferenceWithProjectReference( @@ -179,42 +183,8 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.Host/MyProjectNameHostModule.cs", - LeptonXTheme, - LeptonTheme - ); - } - - private static void ChangeThemeToLeptonForAngularProjects(ProjectBuildContext context) - { - if (context.BuildArgs.UiFramework != UiFramework.Angular) - { - return; - } - - ReplaceImportPackage( - context, - "/angular/src/app/app.module.ts", - "@volosoft/abp.ng.theme.lepton-x", - "@volo/abp.ng.theme.lepton" - ); - - RemoveLinesByStatement( - context, - "/angular/src/app/app.module.ts", - "SideMenuLayoutModule" - ); - - ReplaceAllKeywords( - context, - "/angular/src/app/app.module.ts", - "ThemeLeptonXModule", - "ThemeLeptonModule" - ); - - RemoveLinesByStatement( - context, - "/angular/angular.json", - "node_modules/bootstrap-icons/font/bootstrap-icons.css" + LeptonX, + Lepton ); } @@ -272,8 +242,8 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplaceAllKeywords( context, moduleFile.Name, - LeptonXTheme, - LeptonTheme + LeptonX, + Lepton ); RemoveLinesByStatement( @@ -561,11 +531,11 @@ public class ChangeThemeStep : ProjectBuildPipelineStep return moduleName.Replace(".", ""); } - private static void RenameLeptonXFolders(ProjectBuildContext context, string folderName) + private static void RenameFolders(ProjectBuildContext context, string oldFolderName, string newFolderName) { - foreach (var file in context.Files.Where(x => x.Name.Contains("LeptonX") && x.IsDirectory)) + foreach (var file in context.Files.Where(x => x.Name.Contains(oldFolderName) && x.IsDirectory)) { - new MoveFolderStep(file.Name, file.Name.Replace("LeptonX", folderName)).Execute(context); + new MoveFolderStep(file.Name, file.Name.Replace(oldFolderName, newFolderName)).Execute(context); } } @@ -619,7 +589,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep context, $"/MyCompanyName.MyProjectName{project.Key}/{project.Value}.cs", defaultThemeName, - BasicTheme + Basic ); } } @@ -654,21 +624,21 @@ public class ChangeThemeStep : ProjectBuildPipelineStep context, $"/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", $"{defaultThemeName}Theme.Components", - BasicTheme + Basic ); ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", defaultThemeName, - BasicTheme + Basic ); ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", defaultThemeName, - BasicTheme + Basic ); } } @@ -696,15 +666,15 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", - LeptonXTheme, - LeptonTheme + LeptonX, + Lepton ); ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", - LeptonXTheme, - LeptonTheme + LeptonX, + Lepton ); RemoveLinesByStatement( @@ -745,15 +715,15 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", - LeptonXTheme, - LeptonTheme + LeptonX, + Lepton ); ReplaceAllKeywords( context, $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", - LeptonXTheme, - LeptonTheme + LeptonX, + Lepton ); } } @@ -800,8 +770,8 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplaceAllKeywords( context, "/MyCompanyName.MyProjectName.MauiBlazor/MyProjectNameMauiBlazorModule.cs", - LeptonXTheme, - LeptonTheme + LeptonX, + Lepton ); } } \ No newline at end of file From 8062236d94266aef8352a2a02104fb1585b38448 Mon Sep 17 00:00:00 2001 From: Hamza Albreem <94292623+braim23@users.noreply.github.com> Date: Fri, 12 May 2023 16:45:32 +0300 Subject: [PATCH 24/65] Quick Fix for the rn doc --- docs/en/Getting-Started-React-Native.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/en/Getting-Started-React-Native.md b/docs/en/Getting-Started-React-Native.md index a62512fb45..bc3c7ef419 100644 --- a/docs/en/Getting-Started-React-Native.md +++ b/docs/en/Getting-Started-React-Native.md @@ -79,17 +79,17 @@ A React Native application running on an Android emulator or a physical phone ** {{ if Tiered == "No"}} ![React Native host project local IP entry](images/rn-host-local-ip.png) -- Open the `appsettings.json` in the `.HttpApi.Host` folder. Replace the `localhost` address on the `SelfUrl` and `Authority` properties with your local IP address. -- Open the `launchSettings.json` in the `.HttpApi.Host/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. +- Open the `appsettings.json` file in the `.HttpApi.Host` folder. Replace the `localhost` address on the `SelfUrl` and `Authority` properties with your local IP address. +- Open the `launchSettings.json` file in the `.HttpApi.Host/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. {{ else if Tiered == "Yes" }} ![React Native tiered project local IP entry](images/rn-tiered-local-ip.png) -- Open the `appsettings.json` in the `.AuthServer` folder. Replace the `localhost` address on the `SelfUrl` property with your local IP address. -- Open the `launchSettings.json` in the `.AuthServer/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. -- Open the `appsettings.json` in the `.HttpApi.Host` folder. Replace the `localhost` address on the `Authority` property with your local IP address. -- Open the `launchSettings.json` in the `.HttpApi.Host/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. +- Open the `appsettings.json` file in the `.AuthServer` folder. Replace the `localhost` address on the `SelfUrl` property with your local IP address. +- Open the `launchSettings.json` file in the `.AuthServer/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. +- Open the `appsettings.json` file in the `.HttpApi.Host` folder. Replace the `localhost` address on the `Authority` property with your local IP address. +- Open the `launchSettings.json` file in the `.HttpApi.Host/Properties` folder. Replace the `localhost` address on the `applicationUrl` properties with your local IP address. {{ end }} @@ -99,7 +99,7 @@ Run the backend application as described in the [getting started document](Getti ## How to disable the Https-only settings of OpenIddict -Go to MyProjectNameHttpApiHostModule.cs under the host project. Add put these codes under the `PreConfigureServices` function. +Go to MyProjectNameHttpApiHostModule.cs under the host project. And put these codes under the `PreConfigureServices` function. ```csharp #if DEBUG @@ -128,13 +128,13 @@ Go to MyProjectNameHttpApiHostModule.cs under the host project. Add put these co {{ end }} -4. Run `yarn start` or `npm start`. Wait Expo CLI to print opitons. +4. Run `yarn start` or `npm start`. Wait for the Expo CLI to print the opitons. > The React Native application was generated with [Expo](https://expo.io/). Expo is a set of tools built around React Native to help you quickly start an app and, while it has many features. ![expo-cli-options](images/rn-options.png) -In the above image, you can start the application with an Android emulator, an iOS simulator or a physical phone by the scan the QR code with the [Expo Client](https://expo.io/tools#client) or choosing the option. +In the above image, you can start the application with an Android emulator, an iOS simulator or a physical phone by scanning the QR code with the [Expo Client](https://expo.io/tools#client) or choosing the option. ![React Native login screen on iPhone 11](images/rn-login-iphone.png) From 6fef25c797fdbb1bdf1fe13e5d4262fde2e1c920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= Date: Fri, 12 May 2023 16:45:47 +0300 Subject: [PATCH 25/65] tidy up formatting --- docs/en/UI/Angular/Checkbox-Component.md | 16 ++++++++++++++-- docs/en/UI/Angular/FormInput-Component.md | 15 ++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/docs/en/UI/Angular/Checkbox-Component.md b/docs/en/UI/Angular/Checkbox-Component.md index e33611e471..15d2a418ae 100644 --- a/docs/en/UI/Angular/Checkbox-Component.md +++ b/docs/en/UI/Angular/Checkbox-Component.md @@ -2,7 +2,19 @@ The ABP Checkbox Component is a reusable form input component for checkbox type. -It takes `label`, `labelClass` (default form-check-label), `checkboxId`,`checkboxReadonly`,`checkboxReadonly` (default form-check-input) and `checkboxStyle` as input to customize component. Also, it emits `checkboxBlur` and `checkboxFocus` events when component gain or lose focus. +# Inputs + +- `label` +- `labelClass (default form-check-label)` +- `checkboxId` +- `checkboxReadonly` +- `checkboxReadonly (default form-check-input)` +- `checkboxStyle` + +# Outputs + +- `checkboxBlur` +- `checkboxFocus` # Usage @@ -36,4 +48,4 @@ Then, the `abp-checkbox` component can be used. See the example below: See the checkbox input result below: -![abp-form-input](./images/form-checkbox.png) +![abp-checkbox](./images/form-checkbox.png) diff --git a/docs/en/UI/Angular/FormInput-Component.md b/docs/en/UI/Angular/FormInput-Component.md index 11b857ddb4..a7a4bda0fd 100644 --- a/docs/en/UI/Angular/FormInput-Component.md +++ b/docs/en/UI/Angular/FormInput-Component.md @@ -2,7 +2,16 @@ The ABP FormInput Component is a reusable form input component for text type. -It takes `label`, `labelClass` (default form-label), `inputId`,`inputPlaceholder`,`inputReadonly`,`inputClass` (default form-control) and `inputStyle` as input to customize component. Also, it emits `formBlur` and `formFocus` events when component gain or lose focus. +# Inputs +* `label` +* `labelClass (default form-label)` +* `inputPlaceholder` +* `inputReadonly` +* `inputClass (default form-control)` + +# Outputs +* `formBlur` +* `formFocus` # Usage @@ -12,14 +21,14 @@ ABP FormInput component is a part of the `ThemeSharedModule` module. If you've i // my-feature.module.ts import { ThemeSharedModule } from "@abp/ng.theme.shared"; -import { FomrInputDemoComponent } from "./FomrInputDemoComponent.component"; +import { FormInputDemoComponent } from "./FomrInputDemoComponent.component"; @NgModule({ imports: [ ThemeSharedModule, // ... ], - declarations: [FomrInputDemoComponent], + declarations: [FormInputDemoComponent], // ... }) export class MyFeatureModule {} From b8e83f3952afe39a01329ffa359a2b6f73b75385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= Date: Fri, 12 May 2023 16:52:36 +0300 Subject: [PATCH 26/65] Update Checkbox-Component.md --- docs/en/UI/Angular/Checkbox-Component.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/Angular/Checkbox-Component.md b/docs/en/UI/Angular/Checkbox-Component.md index 15d2a418ae..d85ba283e9 100644 --- a/docs/en/UI/Angular/Checkbox-Component.md +++ b/docs/en/UI/Angular/Checkbox-Component.md @@ -27,8 +27,8 @@ import { ThemeSharedModule } from "@abp/ng.theme.shared"; import { CheckboxDemoComponent } from "./CheckboxDemoComponent.component"; @NgModule({ - imports: [ - ThemeSharedModule, +imports: [ + ThemeSharedModule, // ... ], declarations: [CheckboxDemoComponent], From cadb7835a9d90c73790c34e17f26d0f4af3137a7 Mon Sep 17 00:00:00 2001 From: Masum ULU <49063256+masumulu28@users.noreply.github.com> Date: Fri, 12 May 2023 16:58:43 +0300 Subject: [PATCH 27/65] Update FormInput-Component.md --- docs/en/UI/Angular/FormInput-Component.md | 25 ++++++++++------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/docs/en/UI/Angular/FormInput-Component.md b/docs/en/UI/Angular/FormInput-Component.md index a7a4bda0fd..07f72cefc2 100644 --- a/docs/en/UI/Angular/FormInput-Component.md +++ b/docs/en/UI/Angular/FormInput-Component.md @@ -18,18 +18,15 @@ The ABP FormInput Component is a reusable form input component for text type. ABP FormInput component is a part of the `ThemeSharedModule` module. If you've imported that module into your module, you don't need to import it again. If not, first import it as shown below: ```ts -// my-feature.module.ts - import { ThemeSharedModule } from "@abp/ng.theme.shared"; import { FormInputDemoComponent } from "./FomrInputDemoComponent.component"; @NgModule({ - imports: [ - ThemeSharedModule, - // ... - ], - declarations: [FormInputDemoComponent], - // ... + imports: [ + ThemeSharedModule, + // ... + ], + declarations: [FormInputDemoComponent], }) export class MyFeatureModule {} ``` @@ -38,12 +35,12 @@ Then, the `abp-form-input` component can be used. See the example below: ```html
-
- -
+
+ +
``` From a20540230432d2c67d0261f70274a477a8c649a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= Date: Fri, 12 May 2023 17:03:25 +0300 Subject: [PATCH 28/65] Update Checkbox-Component.md --- docs/en/UI/Angular/Checkbox-Component.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/en/UI/Angular/Checkbox-Component.md b/docs/en/UI/Angular/Checkbox-Component.md index d85ba283e9..f97181b423 100644 --- a/docs/en/UI/Angular/Checkbox-Component.md +++ b/docs/en/UI/Angular/Checkbox-Component.md @@ -27,12 +27,12 @@ import { ThemeSharedModule } from "@abp/ng.theme.shared"; import { CheckboxDemoComponent } from "./CheckboxDemoComponent.component"; @NgModule({ -imports: [ - ThemeSharedModule, - // ... - ], - declarations: [CheckboxDemoComponent], - // ... + imports: [ + ThemeSharedModule, + // ... + ], + declarations: [CheckboxDemoComponent], + // ... }) export class MyFeatureModule {} ``` @@ -41,8 +41,8 @@ Then, the `abp-checkbox` component can be used. See the example below: ```html
- - + +
``` From 6ae929ac740c6cbe3219505df57b914cb1c0effd Mon Sep 17 00:00:00 2001 From: Hamza Albreem <94292623+braim23@users.noreply.github.com> Date: Fri, 12 May 2023 17:15:44 +0300 Subject: [PATCH 29/65] Quick fix for the Checkbox-Component Doc --- docs/en/UI/Angular/Checkbox-Component.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/Angular/Checkbox-Component.md b/docs/en/UI/Angular/Checkbox-Component.md index f97181b423..898f86732c 100644 --- a/docs/en/UI/Angular/Checkbox-Component.md +++ b/docs/en/UI/Angular/Checkbox-Component.md @@ -1,6 +1,6 @@ # Checkbox Component -The ABP Checkbox Component is a reusable form input component for checkbox type. +The ABP Checkbox Component is a reusable form input component for the checkbox type. # Inputs @@ -18,7 +18,7 @@ The ABP Checkbox Component is a reusable form input component for checkbox type. # Usage -ABP Checkbox component is a part of the `ThemeSharedModule` module. If you've imported that module into your module, you don't need to import it again. If not, first import it as shown below: +The ABP Checkbox component is a part of the `ThemeSharedModule` module. If you've imported that module into your module, there's no need to import it again. If not, then first import it as shown below: ```ts // my-feature.module.ts From aed61cc430e63f20836220621678aa0add938164 Mon Sep 17 00:00:00 2001 From: Hamza Albreem <94292623+braim23@users.noreply.github.com> Date: Fri, 12 May 2023 17:19:09 +0300 Subject: [PATCH 30/65] Quick fix for the FormInput-Component Doc --- docs/en/UI/Angular/FormInput-Component.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/Angular/FormInput-Component.md b/docs/en/UI/Angular/FormInput-Component.md index 07f72cefc2..f1dedd824a 100644 --- a/docs/en/UI/Angular/FormInput-Component.md +++ b/docs/en/UI/Angular/FormInput-Component.md @@ -1,6 +1,6 @@ # Form Input Component -The ABP FormInput Component is a reusable form input component for text type. +The ABP FormInput Component is a reusable form input component for the text type. # Inputs * `label` @@ -15,7 +15,7 @@ The ABP FormInput Component is a reusable form input component for text type. # Usage -ABP FormInput component is a part of the `ThemeSharedModule` module. If you've imported that module into your module, you don't need to import it again. If not, first import it as shown below: +The ABP FormInput component is a part of the `ThemeSharedModule` module. If you've imported that module into your module, there's no need to import it again. If not, then first import it as shown below: ```ts import { ThemeSharedModule } from "@abp/ng.theme.shared"; From b335898a8c48a296c8a67bf9f1d0f2ec8829a664 Mon Sep 17 00:00:00 2001 From: Salih Date: Sun, 7 May 2023 15:49:25 +0300 Subject: [PATCH 31/65] Fix Mvc dynamic Form DateTimePicker Error --- .../bootstrap/dom-event-handlers.js | 21 +++++++++++-------- .../bootstrap/modal-manager.js | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js index 945df5d0c6..f62dbdb011 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js @@ -772,17 +772,20 @@ abp.event.on('abp.configurationInitialized', function () { abp.libs.bootstrapDatepicker.normalizeLanguageConfig(); }); + + abp.dom.initializers.initializeAll = function ($rootNode) { + abp.dom.initializers.initializeToolTips($rootNode.findWithSelf('[data-toggle="tooltip"]')); + abp.dom.initializers.initializePopovers($rootNode.findWithSelf('[data-toggle="popover"]')); + abp.dom.initializers.initializeTimeAgos($rootNode.findWithSelf('.timeago')); + abp.dom.initializers.initializeDatepickers($rootNode); + abp.dom.initializers.initializeDateRangePickers($rootNode); + abp.dom.initializers.initializeForms($rootNode.findWithSelf('form')); + abp.dom.initializers.initializeAutocompleteSelects($rootNode.findWithSelf('.auto-complete-select')); + $rootNode.findWithSelf('[data-auto-focus="true"]').first().findWithSelf('input,select').focus(); + }; $(function () { - abp.dom.initializers.initializeToolTips($('[data-toggle="tooltip"]')); - abp.dom.initializers.initializePopovers($('[data-toggle="popover"]')); - abp.dom.initializers.initializeTimeAgos($('.timeago')); - abp.dom.initializers.initializeDatepickers($(document)); - abp.dom.initializers.initializeDateRangePickers($(document)); - abp.dom.initializers.initializeForms($('form')); - abp.dom.initializers.initializeAutocompleteSelects($('.auto-complete-select')); - $('[data-auto-focus="true"]').first().findWithSelf('input,select').focus(); - + abp.dom.initializers.initializeAll($(document)); }); })(jQuery); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js index e524881176..9a19869050 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js @@ -66,6 +66,7 @@ $.validator.defaults.ignore = ''; //TODO: Would be better if we can apply only f } function _initAndShowModal() { + abp.dom.initializers.initializeAll(_$modalContainer); _$modal = _$modalContainer.find('.modal'); _$form = _$modalContainer.find('form'); if (_$form.length) { From 1ee99e371013195289aa5849ed48658df795abd5 Mon Sep 17 00:00:00 2001 From: Salih Date: Sun, 7 May 2023 15:50:01 +0300 Subject: [PATCH 32/65] Fix single datepicker end date assignment bug --- .../bootstrap/dom-event-handlers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js index f62dbdb011..8157778059 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js @@ -644,7 +644,7 @@ if (momentStartDate.isValid()) { picker.setStartDate(momentStartDate); } - if (momentEndDate.isValid()) { + if (momentEndDate.isValid() && !singleDatePicker) { picker.setEndDate(momentEndDate); } }); From 9209cafffcac37d901222764c9cca44bd54feb03 Mon Sep 17 00:00:00 2001 From: Salih Date: Mon, 8 May 2023 10:38:04 +0300 Subject: [PATCH 33/65] Fix DatePickerOptions --- .../DatePicker/AbpDatePickerBaseTagHelper.cs | 7 ++++++- .../AbpDatePickerBaseTagHelperService.cs | 14 +++++-------- .../bootstrap/dom-event-handlers.js | 21 +++++++++---------- .../bootstrap/modal-manager.js | 1 - 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs index 10923f25af..7f9c34fb7a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelper.cs @@ -9,7 +9,7 @@ public abstract class where TTagHelper : AbpDatePickerBaseTagHelper { - private readonly IAbpDatePickerOptions _abpDatePickerOptionsImplementation; + private IAbpDatePickerOptions _abpDatePickerOptionsImplementation; public string Label { get; set; } @@ -47,6 +47,11 @@ public abstract class { _abpDatePickerOptionsImplementation = new AbpDatePickerOptions(); } + + public void SetDatePickerOptions(IAbpDatePickerOptions options) + { + _abpDatePickerOptionsImplementation = options; + } public string PickerId { get => _abpDatePickerOptionsImplementation.PickerId; diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs index c1ecc4b32d..3d7c857dbd 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs @@ -84,6 +84,11 @@ public abstract class AbpDatePickerBaseTagHelperService : AbpTagHelp AddReadOnlyAttribute(TagHelperOutput); AddPlaceholderAttribute(TagHelperOutput); AddInfoTextId(TagHelperOutput); + var optionsAttribute = GetAttributeAndModelExpression(out var modelExpression); + if (optionsAttribute != null) + { + TagHelper.SetDatePickerOptions(optionsAttribute.GetDatePickerOptions(modelExpression.ModelExplorer)); + } // Open and close button var openButtonContent = TagHelper.OpenButton @@ -426,15 +431,6 @@ public abstract class AbpDatePickerBaseTagHelperService : AbpTagHelp attrList.Add(attr); } - var optionsAttribute = GetAttributeAndModelExpression(out var modelExpression); - if (optionsAttribute != null) - { - foreach (var attr in ConvertDatePickerOptionsToAttributeList(optionsAttribute.GetDatePickerOptions(modelExpression.ModelExplorer))) - { - attrList.Add(attr); - } - } - AddBaseTagAttributes(attrList); return attrList; diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js index 8157778059..aec8582651 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js @@ -643,6 +643,7 @@ var momentEndDate = getMoment(endDate, options); if (momentStartDate.isValid()) { picker.setStartDate(momentStartDate); + picker.setEndDate(momentEndDate); } if (momentEndDate.isValid() && !singleDatePicker) { picker.setEndDate(momentEndDate); @@ -761,6 +762,7 @@ abp.dom.initializers.initializeForms(args.$el.findWithSelf('form'), true); abp.dom.initializers.initializeScript(args.$el); abp.dom.initializers.initializeAutocompleteSelects(args.$el.findWithSelf('.auto-complete-select')); + abp.dom.initializers.initializeDateRangePickers(args.$el); }); abp.dom.onNodeRemoved(function (args) { @@ -773,19 +775,16 @@ abp.libs.bootstrapDatepicker.normalizeLanguageConfig(); }); - abp.dom.initializers.initializeAll = function ($rootNode) { - abp.dom.initializers.initializeToolTips($rootNode.findWithSelf('[data-toggle="tooltip"]')); - abp.dom.initializers.initializePopovers($rootNode.findWithSelf('[data-toggle="popover"]')); - abp.dom.initializers.initializeTimeAgos($rootNode.findWithSelf('.timeago')); - abp.dom.initializers.initializeDatepickers($rootNode); - abp.dom.initializers.initializeDateRangePickers($rootNode); - abp.dom.initializers.initializeForms($rootNode.findWithSelf('form')); - abp.dom.initializers.initializeAutocompleteSelects($rootNode.findWithSelf('.auto-complete-select')); - $rootNode.findWithSelf('[data-auto-focus="true"]').first().findWithSelf('input,select').focus(); - }; $(function () { - abp.dom.initializers.initializeAll($(document)); + abp.dom.initializers.initializeToolTips($(document).findWithSelf('[data-toggle="tooltip"]')); + abp.dom.initializers.initializePopovers($(document).findWithSelf('[data-toggle="popover"]')); + abp.dom.initializers.initializeTimeAgos($(document).findWithSelf('.timeago')); + abp.dom.initializers.initializeDatepickers($(document)); + abp.dom.initializers.initializeDateRangePickers($(document)); + abp.dom.initializers.initializeForms($(document).findWithSelf('form')); + abp.dom.initializers.initializeAutocompleteSelects($(document).findWithSelf('.auto-complete-select')); + $(document).findWithSelf('[data-auto-focus="true"]').first().findWithSelf('input,select').focus(); }); })(jQuery); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js index 9a19869050..e524881176 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js @@ -66,7 +66,6 @@ $.validator.defaults.ignore = ''; //TODO: Would be better if we can apply only f } function _initAndShowModal() { - abp.dom.initializers.initializeAll(_$modalContainer); _$modal = _$modalContainer.find('.modal'); _$form = _$modalContainer.find('form'); if (_$form.length) { From d90630d4e86b17b44d95a5ac164051ab2f7c8dd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= Date: Thu, 11 May 2023 16:20:40 +0300 Subject: [PATCH 34/65] fix identity package build error --- npm/ng-packs/packages/identity/ng-package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/identity/ng-package.json b/npm/ng-packs/packages/identity/ng-package.json index a0824f39e5..68f95303e4 100644 --- a/npm/ng-packs/packages/identity/ng-package.json +++ b/npm/ng-packs/packages/identity/ng-package.json @@ -6,6 +6,7 @@ }, "allowedNonPeerDependencies": [ "@abp/ng.theme.shared", - "@abp/ng.permission-management" + "@abp/ng.permission-management", + "@abp/ng.components" ] } From 02cdb681fb33e767eaa57c8afe5b793cf9b84e0e Mon Sep 17 00:00:00 2001 From: Salih Date: Mon, 15 May 2023 10:25:29 +0300 Subject: [PATCH 36/65] Update disabled input --- .../Form/DatePicker/AbpDatePickerBaseTagHelperService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs index 3d7c857dbd..6e5f0ad2f7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs @@ -587,7 +587,7 @@ public abstract class AbpDatePickerBaseTagHelperService : AbpTagHelp abpButtonTagHelper.ButtonType = AbpButtonType.Outline_Secondary; abpButtonTagHelper.Icon = icon; - abpButtonTagHelper.Disabled = TagHelper.IsDisabled; + abpButtonTagHelper.Disabled = TagHelper.IsDisabled || GetAttribute() != null; if (!visible) { From b5349424a7b1f42eab98a9d62b6f075fed15e694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Mon, 15 May 2023 10:51:32 +0300 Subject: [PATCH 37/65] Commercial.abp.io: Added localizations of new testimonials --- .../AbpIoLocalization/Commercial/Localization/Resources/en.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index c6521a6c56..325bbd35a6 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -539,6 +539,8 @@ "Pricing_Page_Testimonial_5": "ABP Framework is not only a framework, but it is also a guide for project development/management, because it provides DDD, GenericRepository, DI, Microservice, and Modularity training. Even if you are not going to use the framework itself, you can develop yourself with docs.abp.io which is well and professionally prepared (OpenIddict, Redis, Quartz etc.). Because many things are pre-built, it shortens project development time significantly (Such as login page, exception handling, data filtering, seeding, audit logging, localization, auto API controller etc.). As an example from our application, I have used Local Event Bus for stock control. So, I am able to manage order movements by writing stock handler. It is wonderful not to lose time for CreationTime, CreatorId. They are being filled automatically.", "Pricing_Page_Testimonial_6": "ABP Framework is a good framework but it needs time to understand the different layers, classes, and libraries it used (specially ABP). I spent a lot of time reading the code base, but ABP Commercial save us time to create the project specialty entities (AR) and the repository linked to each of them. I liked also the approach used in ABP is very mature, we know is based on DDD and monolith.", "Pricing_Page_Testimonial_7": "As a startup we need to iterate quickly and spend minimal time on boilerplate and non-core features.\nOur engineers range from highly experienced to junior engineers, we needed a common understanding and a way to share technical and domain knowledge, ABP allowed us to do this due to their great guides and documentation. \nThere are things we haven't had to worry about since they work out of the box with ABP. \nABP helped us streamline rapid prototyping and development, less than 4 weeks from feature inception to production. With all its premium features included in the license, ABP has given us, \"Startup in a Box\" on the Software Engineering Side.", + "Pricing_Page_Testimonial_8": "I would recommend ABP commercial to all those who want to expand the range of products available to their customers. It's fantastic when need to use a distributed enterprise enviroment (Angualr, WPF, Win&Linux). In addition to their products, we love their support, which makes our job faster and easier. We already know that we have found a great partner for the future who will support us in expanding our business.", + "Pricing_Page_Testimonial_9": "We are a company of 2 employees that's been in business for over 20 years.\nIn terms of our experience with ABP Commercial, we were approached by a client who requested that we develop a new human resources application in a modern environment to replace their 25-year-old Access application. We decided to transition from a desktop solution to a web-based one.\n\nAt the time, we had very little knowledge of web applications and .NET but we stumbled upon ABP Commercial, and with the help of ABP Framework, technical documentation, and ABP Suite, we were able to not only develop the application to the client's specifications but also successfully work within a .NET environment within a year.", "AbpBookDownloadArea_ClaimYourEBook": "Claim your Mastering ABP Framework E-Book", "AddMemberModal_Warning_1": "If the username you are trying to add doesn't exist in the system, please ask your team member to register on {0} and share the username of his/her account with you.", "MyOrganizations_Detail_WelcomeMessage": "Welcome to your organization, {0}", From aa65debbafc091c636ed9c44318ecd06836e24ff Mon Sep 17 00:00:00 2001 From: Salih Date: Mon, 15 May 2023 10:57:58 +0300 Subject: [PATCH 38/65] Update dom-event-handlers.js --- .../bootstrap/dom-event-handlers.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js index aec8582651..6501c23a14 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js @@ -777,14 +777,14 @@ $(function () { - abp.dom.initializers.initializeToolTips($(document).findWithSelf('[data-toggle="tooltip"]')); - abp.dom.initializers.initializePopovers($(document).findWithSelf('[data-toggle="popover"]')); - abp.dom.initializers.initializeTimeAgos($(document).findWithSelf('.timeago')); + abp.dom.initializers.initializeToolTips($('[data-toggle="tooltip"]')); + abp.dom.initializers.initializePopovers($('[data-toggle="popover"]')); + abp.dom.initializers.initializeTimeAgos($('.timeago')); abp.dom.initializers.initializeDatepickers($(document)); abp.dom.initializers.initializeDateRangePickers($(document)); - abp.dom.initializers.initializeForms($(document).findWithSelf('form')); - abp.dom.initializers.initializeAutocompleteSelects($(document).findWithSelf('.auto-complete-select')); - $(document).findWithSelf('[data-auto-focus="true"]').first().findWithSelf('input,select').focus(); + abp.dom.initializers.initializeForms($('form')); + abp.dom.initializers.initializeAutocompleteSelects($('.auto-complete-select')); + $('[data-auto-focus="true"]').first().findWithSelf('input,select').focus(); }); })(jQuery); From dce830d8e9f67d2d54c68832daf1167f85374164 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 15 May 2023 16:49:56 +0800 Subject: [PATCH 39/65] Support extra properties for users module --- .../Volo/Abp/Users/IUserData.cs | 3 ++- .../Volo/Abp/Users/UserData.cs | 10 ++++++++-- .../Volo/Abp/Users/UserEto.cs | 2 +- .../Volo/Abp/Users/AbpUserExtensions.cs | 3 ++- .../src/Volo.Abp.Users.Domain/Volo/Abp/Users/IUser.cs | 3 ++- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/IUserData.cs b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/IUserData.cs index 66e2d2f4e8..8466c8d30e 100644 --- a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/IUserData.cs +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/IUserData.cs @@ -1,9 +1,10 @@ using System; using JetBrains.Annotations; +using Volo.Abp.Data; namespace Volo.Abp.Users; -public interface IUserData +public interface IUserData : IHasExtraProperties { Guid Id { get; } diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs index dbe0c7ab44..283d4993c8 100644 --- a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs @@ -1,9 +1,12 @@ using System; +using System.Collections.Generic; using JetBrains.Annotations; +using Volo.Abp.Data; +using Volo.Abp.ObjectExtending; namespace Volo.Abp.Users; -public class UserData : IUserData +public class UserData : ExtensibleObject, IUserData { public Guid Id { get; set; } @@ -42,6 +45,7 @@ public class UserData : IUserData PhoneNumber = userData.PhoneNumber; PhoneNumberConfirmed = userData.PhoneNumberConfirmed; TenantId = userData.TenantId; + ExtraProperties = userData.ExtraProperties; } public UserData( @@ -54,7 +58,8 @@ public class UserData : IUserData [CanBeNull] string phoneNumber = null, bool phoneNumberConfirmed = false, Guid? tenantId = null, - bool isActive = true) + bool isActive = true, + ExtraPropertyDictionary extraProperties = null) { Id = id; UserName = userName; @@ -66,5 +71,6 @@ public class UserData : IUserData PhoneNumber = phoneNumber; PhoneNumberConfirmed = phoneNumberConfirmed; TenantId = tenantId; + ExtraProperties = extraProperties; } } diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs index e99befa225..663540169b 100644 --- a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs @@ -6,7 +6,7 @@ using Volo.Abp.MultiTenancy; namespace Volo.Abp.Users; [EventName("Volo.Abp.Users.User")] -public class UserEto : IUserData, IHasExtraProperties, IMultiTenant +public class UserEto : IUserData, IMultiTenant { public Guid Id { get; set; } diff --git a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/AbpUserExtensions.cs b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/AbpUserExtensions.cs index 5bace83c1b..d026509dba 100644 --- a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/AbpUserExtensions.cs +++ b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/AbpUserExtensions.cs @@ -14,7 +14,8 @@ public static class AbpUserExtensions emailConfirmed: user.EmailConfirmed, phoneNumber: user.PhoneNumber, phoneNumberConfirmed: user.PhoneNumberConfirmed, - tenantId: user.TenantId + tenantId: user.TenantId, + extraProperties: user.ExtraProperties ); } } diff --git a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/IUser.cs b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/IUser.cs index 5fca8c32dc..689e60c242 100644 --- a/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/IUser.cs +++ b/modules/users/src/Volo.Abp.Users.Domain/Volo/Abp/Users/IUser.cs @@ -1,11 +1,12 @@ using System; using JetBrains.Annotations; +using Volo.Abp.Data; using Volo.Abp.Domain.Entities; using Volo.Abp.MultiTenancy; namespace Volo.Abp.Users; -public interface IUser : IAggregateRoot, IMultiTenant +public interface IUser : IAggregateRoot, IMultiTenant, IHasExtraProperties { string UserName { get; } From 43b9509d8e4bd7a4b09e8800be0db781a322cd5f Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 15 May 2023 16:52:43 +0800 Subject: [PATCH 40/65] Update UserData.cs --- .../Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs index 283d4993c8..e08d6fbaf0 100644 --- a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs @@ -6,7 +6,7 @@ using Volo.Abp.ObjectExtending; namespace Volo.Abp.Users; -public class UserData : ExtensibleObject, IUserData +public class UserData : IUserData { public Guid Id { get; set; } @@ -27,6 +27,8 @@ public class UserData : ExtensibleObject, IUserData public string PhoneNumber { get; set; } public bool PhoneNumberConfirmed { get; set; } + + public ExtraPropertyDictionary ExtraProperties { get; } public UserData() { From 2c3653aff354c8ad85c56dc7f06824361bf5b8d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alper=20Ebi=C3=A7o=C4=9Flu?= <9526587+ebicoglu@users.noreply.github.com> Date: Mon, 15 May 2023 14:09:55 +0300 Subject: [PATCH 41/65] Update UserConsts.cs --- .../Volo/Blogging/Users/UserConsts.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Users/UserConsts.cs b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Users/UserConsts.cs index 3ad08da0d2..3cd7dd2252 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Users/UserConsts.cs +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Users/UserConsts.cs @@ -10,13 +10,13 @@ public class UserConsts public const int MaxWebSiteLength = 256; - public const int MaxTwitterLength = 64; + public const int MaxTwitterLength = 128; - public const int MaxGithubLength = 64; + public const int MaxGithubLength = 256; - public const int MaxLinkedinLength = 64; + public const int MaxLinkedinLength = 256; - public const int MaxCompanyLength = 128; + public const int MaxCompanyLength = 256; - public const int MaxJobTitleLength = 32; -} \ No newline at end of file + public const int MaxJobTitleLength = 128; +} From 083ee84e4028ac2f4e4b7db3cf7194a58d307e76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alper=20Ebi=C3=A7o=C4=9Flu?= <9526587+ebicoglu@users.noreply.github.com> Date: Mon, 15 May 2023 14:11:32 +0300 Subject: [PATCH 42/65] Update Index.js --- .../blogging/src/Volo.Blogging.Web/Pages/Members/Index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js index 75f59564d2..6cafed0455 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.js @@ -1,10 +1,9 @@ $(function () { - var hash = window.location.hash; - if(hash === '#edit-profile'){ + if (window.location.hash === '#edit-profile'){ $('#all-posts-tab').removeClass('active'); $('#all-posts').removeClass('show').removeClass('active'); $('#edit-profile-tab').addClass('active'); $('#edit-profile').addClass('show').addClass('active'); window.location.hash = ''; } -}); \ No newline at end of file +}); From 59f35359221e100d4bfe9cdbd8d3821651aa97fe Mon Sep 17 00:00:00 2001 From: Masum ULU <49063256+masumulu28@users.noreply.github.com> Date: Mon, 15 May 2023 14:41:57 +0300 Subject: [PATCH 43/65] add "perfect-scrollbar" to package.json --- npm/ng-packs/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 7c594cf1a2..8f68f98e24 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -114,6 +114,7 @@ "nx": "15.2.1", "postcss": "^8.3.9", "postcss-import": "14.1.0", + "perfect-scrollbar": "^1.5.5", "postcss-preset-env": "7.5.0", "postcss-url": "10.1.3", "prettier": "2.7.1", From 88d15b28177f1041a4a99d3606e7526dbcf32631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Mon, 15 May 2023 16:07:23 +0300 Subject: [PATCH 44/65] Commercial.abp.io: localization added for new faq --- .../Commercial/Localization/Resources/en.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index 325bbd35a6..a0a6519bc3 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -834,6 +834,13 @@ "Volo.AbpIo.Commercial:040001": "API Access Key is incorrect.", "GetLepton": "Get Lepton Now", "MyOrganizations_Detail_LicenseStartDate": "License Start Date", - "MyOrganizations_Detail_LicenseExpiryDate": "Expiry Date" + "MyOrganizations_Detail_LicenseExpiryDate": "Expiry Date", + "BlazoriseSupport": "How do I get the Blazorise license key and support from the Blazorise team?", + "BlazoriseSupportExplanation": "Follow the steps below to get support from the Blazorise team and get your Blazorise license key:", + "BlazoriseSupportExplanation1": "Sign up for a new account at blazorise.com/support/register with the same email address as your abp.io account. Leave the \"License Key\" entry blank. It must be the same email address as your email account on abp.io.", + "BlazoriseSupportExplanation2": "Verify your email address by checking your email box. Check your spam box if you don't see an email in your inbox!", + "BlazoriseSupportExplanation3": "Log into the Blazorise support website at blazorise.com/support/login.", + "BlazoriseSupportExplanation4": "If you have an active ABP Commercial license, you will also have a Blazorise PRO license. You can get your Blazorise license key at blazorise.com/support/user/manage/license.", + "BlazoriseSupportExplanation5": "You can post your questions on the support website and generate a product token for your application." } } From a01c13d62625e41c2e960e679499a5184412f0ab Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 15 May 2023 16:35:07 +0300 Subject: [PATCH 45/65] Update en.json --- .../Commercial/Localization/Resources/en.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index a0a6519bc3..22ed6a604e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -837,10 +837,10 @@ "MyOrganizations_Detail_LicenseExpiryDate": "Expiry Date", "BlazoriseSupport": "How do I get the Blazorise license key and support from the Blazorise team?", "BlazoriseSupportExplanation": "Follow the steps below to get support from the Blazorise team and get your Blazorise license key:", - "BlazoriseSupportExplanation1": "Sign up for a new account at blazorise.com/support/register with the same email address as your abp.io account. Leave the \"License Key\" entry blank. It must be the same email address as your email account on abp.io.", + "BlazoriseSupportExplanation1": "Sign up for a new account at blazorise.com/support/register with the same email address as your abp.io account. Leave the \"License Key\" entry blank. It must be the same email address as your email account on abp.io.", "BlazoriseSupportExplanation2": "Verify your email address by checking your email box. Check your spam box if you don't see an email in your inbox!", - "BlazoriseSupportExplanation3": "Log into the Blazorise support website at blazorise.com/support/login.", - "BlazoriseSupportExplanation4": "If you have an active ABP Commercial license, you will also have a Blazorise PRO license. You can get your Blazorise license key at blazorise.com/support/user/manage/license.", + "BlazoriseSupportExplanation3": "Log into the Blazorise support website at blazorise.com/support/login.", + "BlazoriseSupportExplanation4": "If you have an active ABP Commercial license, you will also have a Blazorise PRO license. You can get your Blazorise license key at blazorise.com/support/user/manage/license.", "BlazoriseSupportExplanation5": "You can post your questions on the support website and generate a product token for your application." } } From 106596d6e82045e3a56f82168e489f03c2ad7d34 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 15 May 2023 16:37:15 +0300 Subject: [PATCH 46/65] Update en.json --- .../Commercial/Localization/Resources/en.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index 22ed6a604e..9efe75ad7e 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -837,10 +837,10 @@ "MyOrganizations_Detail_LicenseExpiryDate": "Expiry Date", "BlazoriseSupport": "How do I get the Blazorise license key and support from the Blazorise team?", "BlazoriseSupportExplanation": "Follow the steps below to get support from the Blazorise team and get your Blazorise license key:", - "BlazoriseSupportExplanation1": "Sign up for a new account at blazorise.com/support/register with the same email address as your abp.io account. Leave the \"License Key\" entry blank. It must be the same email address as your email account on abp.io.", + "BlazoriseSupportExplanation1": "Sign up for a new account at blazorise.com/support/register with the same email address as your abp.io account. Leave the \"License Key\" entry blank. It must be the same email address as your email account on abp.io.", "BlazoriseSupportExplanation2": "Verify your email address by checking your email box. Check your spam box if you don't see an email in your inbox!", - "BlazoriseSupportExplanation3": "Log into the Blazorise support website at blazorise.com/support/login.", - "BlazoriseSupportExplanation4": "If you have an active ABP Commercial license, you will also have a Blazorise PRO license. You can get your Blazorise license key at blazorise.com/support/user/manage/license.", + "BlazoriseSupportExplanation3": "Log into the Blazorise support website at blazorise.com/support/login.", + "BlazoriseSupportExplanation4": "If you have an active ABP Commercial license, you will also have a Blazorise PRO license. You can get your Blazorise license key at blazorise.com/support/user/manage/license.", "BlazoriseSupportExplanation5": "You can post your questions on the support website and generate a product token for your application." } } From 5e358c02d324b167e7f8f0fa02ba4ce9e1ff93d1 Mon Sep 17 00:00:00 2001 From: Ebicoglu Date: Mon, 15 May 2023 17:22:02 +0300 Subject: [PATCH 47/65] add Code Of Conduct. issue volosoft/vs-internal#1215 --- CODE_OF_CONDUCT.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..247193db89 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,94 @@ +# Contributor Covenant Code of Conduct + +## Preamble + +The ABP Framework was created to implement common generic web application features in a common code base. This approach helps developers to decouple line of business application features from their custom business logic. Besides, the ABP Framework helps create MVPs and kick-start your project as quickly as possible. All the contributors try to save valuable time by automating repetitive tasks at the framework level. This code of conduct has been adopted by many [other open source communities](http://contributor-covenant.org/adopters/) and we feel it expresses our values well. + + + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + + + +## Our Standards + +Examples of behavior that contributes to a positive environment for our community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +- Focusing on what is best not just for us as individuals but for the overall community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or email address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting + + + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned with this Code of Conduct and will communicate reasons for moderation decisions when appropriate. + + + +## Scope + +This Code of Conduct applies within all community spaces and when an individual officially represents the community in public spaces. Examples of representing our community include: + +- Using an official e-mail address. +- Posting via an official social media account. +- Acting as an appointed representative at an online or offline event. + + + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at [info@abp.io](mailto:info@abp.io). All complaints will be reviewed and investigated promptly and fairly. All community leaders must to respect the privacy and security of the reporter of any incident. + + + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact:** Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. + +**Consequence:** A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact:** A violation through a single incident or series of actions. + +**Consequence:** A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period. This includes avoiding interactions in community spaces and external channels like social media. Violating these terms may lead to a temporary or permanent ban. + +### 3. Temporary Ban + +**Community Impact:** A serious violation of community standards, including sustained inappropriate behavior. + +**Consequence:** A temporary ban from any interaction or public communication with the community for a specified period. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact:** Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +**Consequence:** A permanent ban from any sort of public interaction within the community. + + + +## Attribution + +This document is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. +Community Impact Guidelines were inspired by [Mozilla’s code of conduct enforcement ladder](https://github.com/mozilla/diversity). +For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. +Translations are available at https://www.contributor-covenant.org/translations. From a56cd147e21310a69d487027106741a617f4f88b Mon Sep 17 00:00:00 2001 From: Ebicoglu Date: Mon, 15 May 2023 17:30:00 +0300 Subject: [PATCH 48/65] add Code of Conduct. Issue volosoft/vs-internal#1215 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b588e0cba4..03f1a15374 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![NuGet (with prereleases)](https://img.shields.io/nuget/vpre/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) [![MyGet (nightly builds)](https://img.shields.io/myget/abp-nightly/vpre/Volo.Abp.svg?style=flat-square)](https://docs.abp.io/en/abp/latest/Nightly-Builds) [![NuGet Download](https://img.shields.io/nuget/dt/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) - +[![Code of Conduct](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](https://github.com/abpframework/abp/blob/dev/CODE_OF_CONDUCT.md) [![ABP Discord server](https://img.shields.io/discord/951497912645476422?label=Discord)](https://discord.gg/abp) ABP Framework is a complete **infrastructure** based on **ASP.NET Core** to create **modern web applications** and **APIs** by following the software development **best practices** and the **latest technologies**. Check out https://abp.io From e07eaa44f8413c81ff54a45e98219c49111fa67a Mon Sep 17 00:00:00 2001 From: Ebicoglu Date: Mon, 15 May 2023 18:02:04 +0300 Subject: [PATCH 49/65] add CLA signed badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 03f1a15374..f1f941f794 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ [![MyGet (nightly builds)](https://img.shields.io/myget/abp-nightly/vpre/Volo.Abp.svg?style=flat-square)](https://docs.abp.io/en/abp/latest/Nightly-Builds) [![NuGet Download](https://img.shields.io/nuget/dt/Volo.Abp.Core.svg?style=flat-square)](https://www.nuget.org/packages/Volo.Abp.Core) [![Code of Conduct](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](https://github.com/abpframework/abp/blob/dev/CODE_OF_CONDUCT.md) +[![CLA Signed](https://cla-assistant.io/readme/badge/abpframework/abp)](https://cla-assistant.io/abpframework/abp) [![ABP Discord server](https://img.shields.io/discord/951497912645476422?label=Discord)](https://discord.gg/abp) ABP Framework is a complete **infrastructure** based on **ASP.NET Core** to create **modern web applications** and **APIs** by following the software development **best practices** and the **latest technologies**. Check out https://abp.io From 8e173757ea5c56c10f6457c134d1bcc0bf1512fa Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 16 May 2023 13:11:06 +0800 Subject: [PATCH 50/65] Add `UpdateDockerImagesStep`. --- .../Microservice/MicroserviceTemplateBase.cs | 6 +++++ .../Microservice/UpdateDockerImagesStep.cs | 25 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/UpdateDockerImagesStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs index 88fc0dfcbe..b8d320fb45 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs @@ -25,6 +25,7 @@ public abstract class MicroserviceTemplateBase : TemplateInfo RandomizeStringEncryption(context, steps); RandomizeAuthServerPassPhrase(context, steps); UpdateNuGetConfig(context, steps); + UpdateDockerImages(context, steps); ConfigureTheme(context, steps); return steps; @@ -221,4 +222,9 @@ public abstract class MicroserviceTemplateBase : TemplateInfo { steps.Add(new RandomizeAuthServerPassPhraseStep()); } + + private static void UpdateDockerImages(ProjectBuildContext context, List steps) + { + steps.Add(new UpdateDockerImagesStep("/etc/docker/docker-compose.infrastructure.yml")); + } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/UpdateDockerImagesStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/UpdateDockerImagesStep.cs new file mode 100644 index 0000000000..752503c871 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/UpdateDockerImagesStep.cs @@ -0,0 +1,25 @@ +using System.Linq; +using System.Runtime.InteropServices; +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.ProjectBuilding.Files; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice; + +public class UpdateDockerImagesStep : ProjectBuildPipelineStep +{ + private readonly string _ymlFilePath; + + public UpdateDockerImagesStep(string ymlFilePath) + { + _ymlFilePath = ymlFilePath; + } + + public override void Execute(ProjectBuildContext context) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) && RuntimeInformation.OSArchitecture == Architecture.Arm64) + { + var file = context.Files.FirstOrDefault(f => f.Name == _ymlFilePath); + file?.ReplaceText("mcr.microsoft.com/mssql/server:2019-latest", "mcr.microsoft.com/azure-sql-edge"); + } + } +} From 780e97fb0f06f69404244e2d0da58e3aa6a13860 Mon Sep 17 00:00:00 2001 From: selman koc <64414348+skoc10@users.noreply.github.com> Date: Tue, 16 May 2023 09:39:19 +0300 Subject: [PATCH 51/65] Update common.props --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index f130f4bc7f..adfdf9a213 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 7.2.1 + 7.2.2 $(NoWarn);CS1591;CS0436 https://abp.io/assets/abp_nupkg.png https://abp.io/ From 364b309fde02280fdc9f89a185097116640f5041 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Tue, 16 May 2023 09:44:52 +0300 Subject: [PATCH 52/65] Blogging: added control for more section --- .../Pages/Blogs/Posts/Detail.cshtml | 140 +++++++++--------- 1 file changed, 73 insertions(+), 67 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml index 9c44b0feb2..eb4bf912f7 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml @@ -169,46 +169,49 @@ @L["EditProfile"] }
-
-

More from Blog

- @for (var index = 0; index < Model.LatestPosts.Count && index < 5; index++) + @if (Model.LatestPosts.Count > 1) { - if (Model.LatestPosts[index].Id != Model.Post.Id) +
+

More from Blog

+ @for (var index = 0; index < Model.LatestPosts.Count && index < 5; index++) { - var post = Model.LatestPosts[index]; + if (Model.LatestPosts[index].Id != Model.Post.Id) + { + var post = Model.LatestPosts[index]; -
-
-
-
+ + } } }
@@ -435,50 +438,53 @@ else }
-

More from @CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Model.Post.Writer.UserName)

- @for (var index = 0; index < Model.PostsList.Count; index++) + @if (Model.PostsList.Count > 1) { - if (Model.PostsList[index].Id != Model.Post.Id) +

More from @CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Model.Post.Writer.UserName)

+ for (var index = 0; index < Model.PostsList.Count; index++) { - var post = Model.PostsList[index]; -
-
+ if (Model.PostsList[index].Id != Model.Post.Id) + { + var post = Model.PostsList[index]; +
+
- - - - - - @L["Blog"].Value.ToUpper() - -
-
- -

- - @post.Title - -

-

- - @post.Description.TruncateWithPostfix(150) - - @L["ReadMore"] -

-
-
-
- +
+ +

+ + @post.Title + +

+

+ + @post.Description.TruncateWithPostfix(150) + + @L["ReadMore"] +

+
+
+
+ +
-
- } + } + } }
From c17e917614e8f1d1e64833a9a16075de29c3be54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Tue, 16 May 2023 09:48:03 +0300 Subject: [PATCH 53/65] Update Detail.cshtml --- .../src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml index eb4bf912f7..0cb5ceeef0 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml @@ -483,7 +483,6 @@ else
} - } }
From fcda15d2d91f2e758003df89f7300d7bf0079991 Mon Sep 17 00:00:00 2001 From: voloagent Date: Tue, 16 May 2023 11:55:38 +0300 Subject: [PATCH 54/65] Update_NPM_Packages --- .../package.json | 2 +- .../yarn.lock | 244 +++++------ .../package.json | 4 +- .../yarn.lock | 280 ++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../app/Volo.BloggingTestApp/yarn.lock | 318 +++++++------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 258 ++++++------ modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 258 ++++++------ .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 258 ++++++------ .../host/Volo.CmsKit.Web.Unified/package.json | 4 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 392 +++++++++--------- modules/docs/app/VoloDocs.Web/package.json | 4 +- modules/docs/app/VoloDocs.Web/yarn.lock | 318 +++++++------- .../app/OpenIddict.Demo.Server/package.json | 2 +- modules/openiddict/app/angular/package.json | 18 +- .../package.json | 2 +- .../yarn.lock | 258 ++++++------ .../package.json | 4 +- .../yarn.lock | 292 ++++++------- npm/lerna.json | 2 +- npm/ng-packs/lerna.version.json | 2 +- npm/ng-packs/package.json | 26 +- .../packages/account-core/package.json | 6 +- npm/ng-packs/packages/account/package.json | 6 +- npm/ng-packs/packages/components/package.json | 6 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/identity/package.json | 8 +- npm/ng-packs/packages/oauth/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 6 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 6 +- .../packages/theme-shared/package.json | 4 +- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 6 +- .../package.json | 4 +- .../package.json | 34 +- npm/packs/aspnetcore.mvc.ui/package-lock.json | 2 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- .../bootstrap-daterangepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/cms-kit.admin/package.json | 12 +- npm/packs/cms-kit.public/package.json | 6 +- npm/packs/cms-kit/package.json | 6 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/cropperjs/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net-bs5/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/flag-icons/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 4 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/moment/package.json | 2 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/qrcode/package.json | 4 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/slugify/package.json | 2 +- npm/packs/star-rating-svg/package.json | 4 +- npm/packs/sweetalert2/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 6 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/vee-validate/package.json | 4 +- npm/packs/virtual-file-explorer/package.json | 6 +- npm/packs/vue/package.json | 2 +- .../Volo.Abp.Account.SourceCode.zip | Bin 210935 -> 210925 bytes .../Volo.Abp.AuditLogging.SourceCode.zip | Bin 75748 -> 75746 bytes .../Volo.Abp.BackgroundJobs.SourceCode.zip | Bin 61699 -> 61699 bytes .../Volo.Abp.BasicTheme.SourceCode.zip | Bin 388535 -> 388507 bytes ...lo.Abp.BlobStoring.Database.SourceCode.zip | Bin 65885 -> 65882 bytes .../Volo.Abp.FeatureManagement.SourceCode.zip | Bin 181806 -> 181799 bytes .../Volo.Abp.Identity.SourceCode.zip | Bin 358996 -> 358991 bytes .../Volo.Abp.IdentityServer.SourceCode.zip | Bin 161248 -> 161247 bytes .../Volo.Abp.OpenIddict.SourceCode.zip | Bin 2256837 -> 2256831 bytes ...lo.Abp.PermissionManagement.SourceCode.zip | Bin 166062 -> 166063 bytes .../Volo.Abp.SettingManagement.SourceCode.zip | Bin 232891 -> 232879 bytes .../Volo.Abp.TenantManagement.SourceCode.zip | Bin 159342 -> 159334 bytes .../Volo.Abp.Users.SourceCode.zip | Bin 30965 -> 30967 bytes ...olo.Abp.VirtualFileExplorer.SourceCode.zip | Bin 87871 -> 87859 bytes .../Volo.Blogging.SourceCode.zip | Bin 378274 -> 378252 bytes .../Volo.ClientSimulation.SourceCode.zip | Bin 79871 -> 79862 bytes .../Volo.CmsKit.SourceCode.zip | Bin 875055 -> 875010 bytes .../Volo.Docs.SourceCode.zip | Bin 675044 -> 675017 bytes templates/app-nolayers/angular/package.json | 18 +- templates/app/angular/package.json | 18 +- templates/module/angular/package.json | 20 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 2 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- 120 files changed, 1683 insertions(+), 1683 deletions(-) diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index 37e21ef9a8..a4eb775dc1 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1", + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.2", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index 34499a7b23..c490581c3b 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,32 +2,32 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -36,158 +36,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index 44570d13f9..c164aa0919 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,8 +3,8 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1", - "@abp/prismjs": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2", + "@abp/prismjs": "~7.2.2" }, "devDependencies": {} } diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index 5df5cf1a39..1711cb0ae7 100644 --- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8" - integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a" + integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,175 +43,175 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.1.tgz#dab262b84aa956eeb3a145461b662c5ae851b4a8" - integrity sha512-72C3QMEMMtXzjv6GTJJiILSJ1ScBidcKdahrRLlomo4TgCIEgg1+oYL3Q0uyrlB5I0mUqBaf+qYlxXue8JdRAQ== +"@abp/clipboard@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.2.tgz#e8130fc671b1c3dc85517a8f8bae1bb4c6fac64f" + integrity sha512-QiFMsawpo3e6ZV3OKe0F21vXHRv2X1WZoivQ4yYordM7QtLZG0bdftIGA1jPcKbWoSOc8wfFZszzXuceeI8U5w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" clipboard "^2.0.8" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/prismjs@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.1.tgz#322ea0c1368df89a8649af2ecf9660ae9c3eb12a" - integrity sha512-918o/Gev6f5tm6U0cO6S7Teygzre1x+HpzGH5WJdNx14/ZQ6wNrcsIMIjd84R6noUPVt83/eZ27N+RQtvntQLg== +"@abp/prismjs@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.2.tgz#3b8d2fa48728f55c37917e901da9d453afce1a3e" + integrity sha512-qOjcdoZ2h5o/dJ3QCSxtT3XIB4nd1qjwKSgly1fEYlXBaf/iU1JdsAX+yvAw77UfCZ6NxpAmd/tREJP9FSrQeA== dependencies: - "@abp/clipboard" "~7.2.1" - "@abp/core" "~7.2.1" + "@abp/clipboard" "~7.2.2" + "@abp/core" "~7.2.2" prismjs "^1.26.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index c4ec6f8763..5b062c6c1a 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1", - "@abp/blogging": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2", + "@abp/blogging": "~7.2.2" } } diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index 2f4db33c3b..b197c39b79 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8" - integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a" + integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,201 +43,201 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/blogging@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-7.2.1.tgz#225d9a3314244c864a03e987e53e7797e04a0f27" - integrity sha512-sbtKkPau5VmLBA0iW9R6ICF2bxAD6nBm60qC9EGFdNa8KxGdWCwcxiWlxMAf3YQawYxE7UHXJpaIVJy3Si+qzA== +"@abp/blogging@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-7.2.2.tgz#d862220b56de1a6527e6b28f67001278d2ef90ec" + integrity sha512-50/iEC6B6Hy0W9lnC9bYW2RjUzB2VCMA/x/kVT9nOmdDaOdqwg/qc3NleNdHBkVoeH5BzhjXW6oAXc3+8TXEzA== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - "@abp/owl.carousel" "~7.2.1" - "@abp/prismjs" "~7.2.1" - "@abp/tui-editor" "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + "@abp/owl.carousel" "~7.2.2" + "@abp/prismjs" "~7.2.2" + "@abp/tui-editor" "~7.2.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.1.tgz#dab262b84aa956eeb3a145461b662c5ae851b4a8" - integrity sha512-72C3QMEMMtXzjv6GTJJiILSJ1ScBidcKdahrRLlomo4TgCIEgg1+oYL3Q0uyrlB5I0mUqBaf+qYlxXue8JdRAQ== +"@abp/clipboard@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.2.tgz#e8130fc671b1c3dc85517a8f8bae1bb4c6fac64f" + integrity sha512-QiFMsawpo3e6ZV3OKe0F21vXHRv2X1WZoivQ4yYordM7QtLZG0bdftIGA1jPcKbWoSOc8wfFZszzXuceeI8U5w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" clipboard "^2.0.8" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/owl.carousel@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-7.2.1.tgz#50ff8709fc25a6774695d6a7c0b77f300aeb4dc9" - integrity sha512-fxl4ig/oJxiNX+UqFM40yjEoe8P7kvubMqmhO1GVnZWoZrNDsNVnFVhMpps47c58WPQ1iRSYJivdmxXTUG5EUw== +"@abp/owl.carousel@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-7.2.2.tgz#6ec2eb05d8c72d7debe98de0e7f8b9a3beb91d0c" + integrity sha512-uPVeB03ugsFHMg4Lnlf0szryUHu90MNItDTLdoaMFyIl68K2qmPdQI+CF5vL7Jr9r1M6Y0zGQ8eOvDu13hpQAA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" owl.carousel "^2.3.4" -"@abp/prismjs@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.1.tgz#322ea0c1368df89a8649af2ecf9660ae9c3eb12a" - integrity sha512-918o/Gev6f5tm6U0cO6S7Teygzre1x+HpzGH5WJdNx14/ZQ6wNrcsIMIjd84R6noUPVt83/eZ27N+RQtvntQLg== +"@abp/prismjs@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.2.tgz#3b8d2fa48728f55c37917e901da9d453afce1a3e" + integrity sha512-qOjcdoZ2h5o/dJ3QCSxtT3XIB4nd1qjwKSgly1fEYlXBaf/iU1JdsAX+yvAw77UfCZ6NxpAmd/tREJP9FSrQeA== dependencies: - "@abp/clipboard" "~7.2.1" - "@abp/core" "~7.2.1" + "@abp/clipboard" "~7.2.2" + "@abp/core" "~7.2.2" prismjs "^1.26.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/tui-editor@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.2.1.tgz#c123431ef3ee9c665bfcf412ada4ef73dc1ec53d" - integrity sha512-f/LzTdSE0eilE29Npm22SxN4v8beL4O58ZqKE5OHLdL8i3pJfZO5DHe9dzTxalymc9j5i0DCZSzpLKsACp5JnQ== +"@abp/tui-editor@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.2.2.tgz#1b7ad823bd56b854b727d2846142066f61a6edf8" + integrity sha512-4uuupAWEAXoLHpnk9wrmjAYiba3wYiBSLapewK3WTMZt6tLtugQ0rWS+7DNerMplR+ZwEObAN2UvNCUI6I+lBw== dependencies: - "@abp/jquery" "~7.2.1" - "@abp/prismjs" "~7.2.1" + "@abp/jquery" "~7.2.2" + "@abp/prismjs" "~7.2.2" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index 39563c4d9c..5fd2200926 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2" } } diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index 02eb319962..161a0caba3 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8" - integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a" + integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index 503852b7f7..2db4ad9af5 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~7.2.1", - "@abp/ng.identity": "~7.2.1", - "@abp/ng.setting-management": "~7.2.1", - "@abp/ng.tenant-management": "~7.2.1", - "@abp/ng.theme.basic": "~7.2.1", + "@abp/ng.account": "~7.2.2", + "@abp/ng.identity": "~7.2.2", + "@abp/ng.setting-management": "~7.2.2", + "@abp/ng.tenant-management": "~7.2.2", + "@abp/ng.theme.basic": "~7.2.2", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index 35a11493f0..df329c05a2 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=7.2.1", - "@abp/ng.theme.shared": ">=7.2.1" + "@abp/ng.core": ">=7.2.2", + "@abp/ng.theme.shared": ">=7.2.2" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index 7691fde3ac..d5289cf1b2 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index 02eb319962..161a0caba3 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8" - integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a" + integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index e712a37d94..2789947efd 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index 02eb319962..161a0caba3 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8" - integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a" + integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index 1db7fa6b84..2efbacd853 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1", - "@abp/cms-kit": "7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2", + "@abp/cms-kit": "7.2.2" } } diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index 9ac835ff54..9e203dd45a 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8" - integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a" + integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,257 +43,257 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.1.tgz#dab262b84aa956eeb3a145461b662c5ae851b4a8" - integrity sha512-72C3QMEMMtXzjv6GTJJiILSJ1ScBidcKdahrRLlomo4TgCIEgg1+oYL3Q0uyrlB5I0mUqBaf+qYlxXue8JdRAQ== +"@abp/clipboard@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.2.tgz#e8130fc671b1c3dc85517a8f8bae1bb4c6fac64f" + integrity sha512-QiFMsawpo3e6ZV3OKe0F21vXHRv2X1WZoivQ4yYordM7QtLZG0bdftIGA1jPcKbWoSOc8wfFZszzXuceeI8U5w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" clipboard "^2.0.8" -"@abp/cms-kit.admin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-7.2.1.tgz#ba38adfcc7ef2cafed7dd23214eee2c783d900eb" - integrity sha512-+8jiA/Ef14SOzJHjPpFo59TvLQcC+iK9G/qbfVCh+WfHhG1t/7KDFAGrzEUcYSOe5ooY/AB5mKMxUXkrLdqKpA== +"@abp/cms-kit.admin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-7.2.2.tgz#e5cc50a5662716fa7700c6ce4e1fef8db869ad9f" + integrity sha512-raOfrUDKAinmMKIQlrbOoSgxWjChlrs5gX3p7bfSaIppWeWd2iZfImONeuYFzK4XaRj+5eYPIOKNI39/eMUGtg== dependencies: - "@abp/codemirror" "~7.2.1" - "@abp/jstree" "~7.2.1" - "@abp/slugify" "~7.2.1" - "@abp/tui-editor" "~7.2.1" - "@abp/uppy" "~7.2.1" + "@abp/codemirror" "~7.2.2" + "@abp/jstree" "~7.2.2" + "@abp/slugify" "~7.2.2" + "@abp/tui-editor" "~7.2.2" + "@abp/uppy" "~7.2.2" -"@abp/cms-kit.public@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-7.2.1.tgz#1733ce3d594ded8f78e47407366f8e56018c3660" - integrity sha512-HrV3LZNRBK4v8i5KftCU9axDGtASzbTDaJLAl5hsa0bx/Kcnx8FMXZfSp67CQIDGiV6rzEU3WqlpwElLDe+LuA== +"@abp/cms-kit.public@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-7.2.2.tgz#41b6d21ca2261d55d538e95d0d848e0b5c60695d" + integrity sha512-j1E/DcMAe9ghZ4l3xq86Si+FqyakgoK4ftEm3z6waBOglYuALMI/YzHgoxzsicVBi065gilSIsV6EBV2Wcsr2Q== dependencies: - "@abp/highlight.js" "~7.2.1" - "@abp/star-rating-svg" "~7.2.1" + "@abp/highlight.js" "~7.2.2" + "@abp/star-rating-svg" "~7.2.2" -"@abp/cms-kit@7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-7.2.1.tgz#b3f5438b91e9f7a44186c3d53850390cfa609b7b" - integrity sha512-BIc4Zo2qGWauWLxX+/x45rSSjDFtRfRNegOC4vYCuqYYX3fX3LKSegk938HZHda3SCFI//q1E1kPa+BudAyi8A== +"@abp/cms-kit@7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-7.2.2.tgz#fdabc27eb10d4f42bece0bc8ac6f3b0cfa667103" + integrity sha512-P+Kpol8yZz6P+Lno9gedadIJbbF/F7XpXEeH1L8tHcb8Hh1P3WkjwpD4X2I/jA/64VPb97FQFsmKAuypu20Tmw== dependencies: - "@abp/cms-kit.admin" "~7.2.1" - "@abp/cms-kit.public" "~7.2.1" + "@abp/cms-kit.admin" "~7.2.2" + "@abp/cms-kit.public" "~7.2.2" -"@abp/codemirror@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-7.2.1.tgz#d934c84cdeb80fd4e0876486c2b17f34d248f8fe" - integrity sha512-OehtBFsHjz8OESO1kdt2uYbU9lllJZZSRqCe0q8rQOn7NGlc+MMr9AbvnByKdNtmYhOyWCqIghS56zcemX6QHg== +"@abp/codemirror@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-7.2.2.tgz#191b3d2d3e6c825d9ca3215811917cd676a1823d" + integrity sha512-E3ROs8936g2dbl/DF6SwC3A8O3X4QzZ+9QvPGFMAaIpMusBmoWQ0D3PrbyNqaxStmvd0pEwO4f0nY+7KOfeWQw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" codemirror "^5.65.1" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/highlight.js@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-7.2.1.tgz#dbf3596aaa8a5a7bbf66fcf5ba3328c8d3a54f97" - integrity sha512-BLtm2EXyIJ8KQhhckg9bJYdpzg05TeVDghzhlq6C1c3HyXVGK0mifLpVLJYti+orSUn3tcx8e/xL4EtRx8CkGg== +"@abp/highlight.js@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-7.2.2.tgz#b3618ce617644026033e7723f3f44a470e606a72" + integrity sha512-JKkgHbgvAXj0pSQI8k9Dyj/6IMVK+uKhsxP7zk4N/+4OxRsCqysnov5JXUqldN3L5k3Ar58m2dvQzCv0Oxmk6g== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@highlightjs/cdn-assets" "~11.4.0" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/jstree@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-7.2.1.tgz#b862ec532fa1ccbe5bdb761ddc97b0bed0263c26" - integrity sha512-cw8m8XcrlQ1gOc0cQFzbqh1SdLc9u0RZdQ+niY70raBzqCPr3rk2Jf/qeagIcnCFfTjzT3tUtnB4m5j1HNcuZQ== +"@abp/jstree@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-7.2.2.tgz#944e401dc1885676fb2b056a6fc7ffe3e05b1ecc" + integrity sha512-x7BP8sxFAwYeipEhjzMdGbFS9m7RsMjGEZqnRORCFnk6+IGiy72YiUGNE8xJ1ScTbsnjT1mxtgaYcrB3KnX+mw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jstree "^3.3.12" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/prismjs@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.1.tgz#322ea0c1368df89a8649af2ecf9660ae9c3eb12a" - integrity sha512-918o/Gev6f5tm6U0cO6S7Teygzre1x+HpzGH5WJdNx14/ZQ6wNrcsIMIjd84R6noUPVt83/eZ27N+RQtvntQLg== +"@abp/prismjs@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.2.tgz#3b8d2fa48728f55c37917e901da9d453afce1a3e" + integrity sha512-qOjcdoZ2h5o/dJ3QCSxtT3XIB4nd1qjwKSgly1fEYlXBaf/iU1JdsAX+yvAw77UfCZ6NxpAmd/tREJP9FSrQeA== dependencies: - "@abp/clipboard" "~7.2.1" - "@abp/core" "~7.2.1" + "@abp/clipboard" "~7.2.2" + "@abp/core" "~7.2.2" prismjs "^1.26.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/slugify@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-7.2.1.tgz#a70aa53b144fc1f3aa83a5e41427104a059c3b69" - integrity sha512-9MaaZapW2b6eKfhNAK8DCnugUBP0smx8k8+2JPkdqAv6NWrc883a8RrPknQP2Tl9ssyUnfszaxWVMcD5tr4Bbg== +"@abp/slugify@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-7.2.2.tgz#56e53f92e81c004b97c1f31d3a63db0df07b2eb5" + integrity sha512-9+/I5pxUFDXq6HXCkR2+wFVWQ47L10fhJXpyVrmU5JbNIo4XvetouynElKkwFkIwXbgk8j5dBTg9tSxHIbRqSA== dependencies: slugify "^1.6.5" -"@abp/star-rating-svg@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-7.2.1.tgz#16f77d020520dd55a2e8b293a119558f52d0d229" - integrity sha512-blrh0K8GoWJrIlmJ/AG6K0H4og89T+y0JGRWAEvJ7LxJs8CnYy1vgW/YJEpcktb1/goSx+O1jD7OsfgvDv48+w== +"@abp/star-rating-svg@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-7.2.2.tgz#c80abfe48f80af2f904f7d5cb42fad113a28ec13" + integrity sha512-Ye1JSu6j4wFRKsbMs5n+gz9+zJmkilPWl3HGWJeanI/JY69HBLH5IlI65L6HEc8QNrdCLRCMSNj+S96BpF4XpA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" star-rating-svg "^3.5.0" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/tui-editor@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.2.1.tgz#c123431ef3ee9c665bfcf412ada4ef73dc1ec53d" - integrity sha512-f/LzTdSE0eilE29Npm22SxN4v8beL4O58ZqKE5OHLdL8i3pJfZO5DHe9dzTxalymc9j5i0DCZSzpLKsACp5JnQ== +"@abp/tui-editor@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.2.2.tgz#1b7ad823bd56b854b727d2846142066f61a6edf8" + integrity sha512-4uuupAWEAXoLHpnk9wrmjAYiba3wYiBSLapewK3WTMZt6tLtugQ0rWS+7DNerMplR+ZwEObAN2UvNCUI6I+lBw== dependencies: - "@abp/jquery" "~7.2.1" - "@abp/prismjs" "~7.2.1" + "@abp/jquery" "~7.2.2" + "@abp/prismjs" "~7.2.2" -"@abp/uppy@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-7.2.1.tgz#9484e871d2b4c6f2367519b724727dddacf62a35" - integrity sha512-7qZUl7qoS/Ibqqb5Kf3pjDigaXrSzAzHvrfOgm9VJJPJ03w1fCmcH2hxvkWP5mkLeNbzCmWBL+u7ZpXIK/PxyA== +"@abp/uppy@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-7.2.2.tgz#64fd4b79212bfb879d2b646ff0b5dc3059cf5733" + integrity sha512-rFNrUfET4Skr/rwoztAve3yjEA9JB4sPUD1ClH8uTTmV7YeNTnDlWe/8q+dhwf9+j1GAYBWdP41BALLG8Is3RA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" uppy "^1.16.1" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index 60d0e47dd9..29fc7d7eaa 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1", - "@abp/docs": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2", + "@abp/docs": "~7.2.2" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index 106a36dc6d..b6e9fd8a76 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,47 +2,47 @@ # yarn lockfile v1 -"@abp/anchor-js@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-7.2.1.tgz#6da39dd7572c07b0fd6ac9c6618cf30599928c50" - integrity sha512-PPaOiiYZEU/K1lCEQRgfjnrfz75p2zMU/RrBDg3Dao/AAWZT2r/Oy4HgRHpFa6o948o/wIQxIsN+UEPdMXyngA== +"@abp/anchor-js@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-7.2.2.tgz#a5dbdeecf5e27d68858fcd676346b4ab603cc072" + integrity sha512-RxCKSnNq/RQC+oE3uVOoI8uSFvMCouddTShMA6ETCUSvjsnDgmL8arhDmrzc2CRGnV/HdEiT6QH1ivM8dWg7VQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" anchor-js "^4.3.1" -"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8" - integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a" + integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -51,194 +51,194 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.1.tgz#dab262b84aa956eeb3a145461b662c5ae851b4a8" - integrity sha512-72C3QMEMMtXzjv6GTJJiILSJ1ScBidcKdahrRLlomo4TgCIEgg1+oYL3Q0uyrlB5I0mUqBaf+qYlxXue8JdRAQ== +"@abp/clipboard@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.2.tgz#e8130fc671b1c3dc85517a8f8bae1bb4c6fac64f" + integrity sha512-QiFMsawpo3e6ZV3OKe0F21vXHRv2X1WZoivQ4yYordM7QtLZG0bdftIGA1jPcKbWoSOc8wfFZszzXuceeI8U5w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" clipboard "^2.0.8" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/docs@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-7.2.1.tgz#2401e1ce56a79d597b96b814c220ccdcc7ba4d18" - integrity sha512-vKjixK7ny4slUhUtsoYorTkRU6CarrJiQ+/pBdSXVbT7GtBh3L6sKhRBjc5br9VljPhvIinZqWnI0BCuKtHkbw== +"@abp/docs@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-7.2.2.tgz#9d8055885ffe76ae708becbeac9e6067bbfec172" + integrity sha512-yDQCYQX3uDDTrTv8wa+zhF7slNqxdu2OmLkxHX7bNEieLVbHEqyuQWYP2gI6emXPKFmOJiEsOeEyu6gCvAHM5A== dependencies: - "@abp/anchor-js" "~7.2.1" - "@abp/clipboard" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/popper.js" "~7.2.1" - "@abp/prismjs" "~7.2.1" + "@abp/anchor-js" "~7.2.2" + "@abp/clipboard" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/popper.js" "~7.2.2" + "@abp/prismjs" "~7.2.2" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/popper.js@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-7.2.1.tgz#2ca969a58481f6b41de34c9233c164b75010fca8" - integrity sha512-RtX5Kc1e2IBSQuItGosBIAbW4Bkey1/yAl7pscj2o3l2GDI31P9ouT9utw/Ak9uO4jAjQ9Y9CNRHBb3RYcdBLA== +"@abp/popper.js@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-7.2.2.tgz#440a2b73b7e37b917ce6aae21a0230a493243141" + integrity sha512-NzkNp7GljWn/J9KujGqclK/o3lNSCa28Eay/Z2yupJKWbX4hvsC04EdQm9+wx4xwZSJR11/6V0wKUmkS9BO34w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@popperjs/core" "^2.11.2" -"@abp/prismjs@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.1.tgz#322ea0c1368df89a8649af2ecf9660ae9c3eb12a" - integrity sha512-918o/Gev6f5tm6U0cO6S7Teygzre1x+HpzGH5WJdNx14/ZQ6wNrcsIMIjd84R6noUPVt83/eZ27N+RQtvntQLg== +"@abp/prismjs@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.2.tgz#3b8d2fa48728f55c37917e901da9d453afce1a3e" + integrity sha512-qOjcdoZ2h5o/dJ3QCSxtT3XIB4nd1qjwKSgly1fEYlXBaf/iU1JdsAX+yvAw77UfCZ6NxpAmd/tREJP9FSrQeA== dependencies: - "@abp/clipboard" "~7.2.1" - "@abp/core" "~7.2.1" + "@abp/clipboard" "~7.2.2" + "@abp/core" "~7.2.2" prismjs "^1.26.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/package.json b/modules/openiddict/app/OpenIddict.Demo.Server/package.json index e712a37d94..2789947efd 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/package.json +++ b/modules/openiddict/app/OpenIddict.Demo.Server/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2" } } diff --git a/modules/openiddict/app/angular/package.json b/modules/openiddict/app/angular/package.json index 7acd2cb79a..78a5756aab 100644 --- a/modules/openiddict/app/angular/package.json +++ b/modules/openiddict/app/angular/package.json @@ -12,14 +12,14 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~7.2.1", - "@abp/ng.components": "~7.2.1", - "@abp/ng.core": "~7.2.1", - "@abp/ng.oauth": "~7.2.1", - "@abp/ng.identity": "~7.2.1", - "@abp/ng.setting-management": "~7.2.1", - "@abp/ng.tenant-management": "~7.2.1", - "@abp/ng.theme.shared": "~7.2.1", + "@abp/ng.account": "~7.2.2", + "@abp/ng.components": "~7.2.2", + "@abp/ng.core": "~7.2.2", + "@abp/ng.oauth": "~7.2.2", + "@abp/ng.identity": "~7.2.2", + "@abp/ng.setting-management": "~7.2.2", + "@abp/ng.tenant-management": "~7.2.2", + "@abp/ng.theme.shared": "~7.2.2", "@abp/ng.theme.lepton-x": "~2.2.0-rc.1", "@angular/animations": "^15.0.1", "@angular/common": "^15.0.1", @@ -36,7 +36,7 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@abp/ng.schematics": "~7.2.1", + "@abp/ng.schematics": "~7.2.2", "@angular-devkit/build-angular": "^15.0.1", "@angular-eslint/builder": "~15.1.0", "@angular-eslint/eslint-plugin": "~15.1.0", diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json index 6c5dad34b0..cfd84936d8 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json @@ -3,6 +3,6 @@ "name": "demo-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2" } } diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock index 02eb319962..161a0caba3 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8" - integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a" + integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,158 +43,158 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json index 083cdc827a..dcaf814966 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1", - "@abp/virtual-file-explorer": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2", + "@abp/virtual-file-explorer": "~7.2.2" } } diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock index 9d7a4c4d05..e04527a50e 100644 --- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock +++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8" - integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738" - integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.2.1" - "@abp/bootstrap" "~7.2.1" - "@abp/bootstrap-datepicker" "~7.2.1" - "@abp/bootstrap-daterangepicker" "~7.2.1" - "@abp/datatables.net-bs5" "~7.2.1" - "@abp/font-awesome" "~7.2.1" - "@abp/jquery-form" "~7.2.1" - "@abp/jquery-validation-unobtrusive" "~7.2.1" - "@abp/lodash" "~7.2.1" - "@abp/luxon" "~7.2.1" - "@abp/malihu-custom-scrollbar-plugin" "~7.2.1" - "@abp/moment" "~7.2.1" - "@abp/select2" "~7.2.1" - "@abp/sweetalert2" "~7.2.1" - "@abp/timeago" "~7.2.1" - "@abp/toastr" "~7.2.1" - -"@abp/aspnetcore.mvc.ui@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe" - integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg== +"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a" + integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55" + integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA== + dependencies: + "@abp/aspnetcore.mvc.ui" "~7.2.2" + "@abp/bootstrap" "~7.2.2" + "@abp/bootstrap-datepicker" "~7.2.2" + "@abp/bootstrap-daterangepicker" "~7.2.2" + "@abp/datatables.net-bs5" "~7.2.2" + "@abp/font-awesome" "~7.2.2" + "@abp/jquery-form" "~7.2.2" + "@abp/jquery-validation-unobtrusive" "~7.2.2" + "@abp/lodash" "~7.2.2" + "@abp/luxon" "~7.2.2" + "@abp/malihu-custom-scrollbar-plugin" "~7.2.2" + "@abp/moment" "~7.2.2" + "@abp/select2" "~7.2.2" + "@abp/sweetalert2" "~7.2.2" + "@abp/timeago" "~7.2.2" + "@abp/toastr" "~7.2.2" + +"@abp/aspnetcore.mvc.ui@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05" + integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,185 +43,185 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3" - integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw== +"@abp/bootstrap-datepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717" + integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7" - integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA== +"@abp/bootstrap-daterangepicker@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80" + integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw== dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318" - integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw== +"@abp/bootstrap@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793" + integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" bootstrap "^5.1.3" -"@abp/clipboard@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.1.tgz#dab262b84aa956eeb3a145461b662c5ae851b4a8" - integrity sha512-72C3QMEMMtXzjv6GTJJiILSJ1ScBidcKdahrRLlomo4TgCIEgg1+oYL3Q0uyrlB5I0mUqBaf+qYlxXue8JdRAQ== +"@abp/clipboard@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.2.tgz#e8130fc671b1c3dc85517a8f8bae1bb4c6fac64f" + integrity sha512-QiFMsawpo3e6ZV3OKe0F21vXHRv2X1WZoivQ4yYordM7QtLZG0bdftIGA1jPcKbWoSOc8wfFZszzXuceeI8U5w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" clipboard "^2.0.8" -"@abp/core@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898" - integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA== +"@abp/core@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67" + integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw== dependencies: - "@abp/utils" "~7.2.1" + "@abp/utils" "~7.2.2" -"@abp/datatables.net-bs5@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed" - integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog== +"@abp/datatables.net-bs5@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd" + integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ== dependencies: - "@abp/datatables.net" "~7.2.1" + "@abp/datatables.net" "~7.2.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41" - integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ== +"@abp/datatables.net@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0" + integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5" - integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA== +"@abp/font-awesome@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97" + integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49" - integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ== +"@abp/jquery-form@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9" + integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9" - integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw== +"@abp/jquery-validation-unobtrusive@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534" + integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ== dependencies: - "@abp/jquery-validation" "~7.2.1" + "@abp/jquery-validation" "~7.2.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb" - integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg== +"@abp/jquery-validation@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630" + integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f" - integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w== +"@abp/jquery@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf" + integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" jquery "~3.6.0" -"@abp/lodash@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b" - integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA== +"@abp/lodash@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d" + integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" lodash "^4.17.21" -"@abp/luxon@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516" - integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw== +"@abp/luxon@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060" + integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346" - integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g== +"@abp/malihu-custom-scrollbar-plugin@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7" + integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25" - integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g== +"@abp/moment@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d" + integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw== dependencies: moment "^2.9.0" -"@abp/prismjs@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.1.tgz#322ea0c1368df89a8649af2ecf9660ae9c3eb12a" - integrity sha512-918o/Gev6f5tm6U0cO6S7Teygzre1x+HpzGH5WJdNx14/ZQ6wNrcsIMIjd84R6noUPVt83/eZ27N+RQtvntQLg== +"@abp/prismjs@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.2.tgz#3b8d2fa48728f55c37917e901da9d453afce1a3e" + integrity sha512-qOjcdoZ2h5o/dJ3QCSxtT3XIB4nd1qjwKSgly1fEYlXBaf/iU1JdsAX+yvAw77UfCZ6NxpAmd/tREJP9FSrQeA== dependencies: - "@abp/clipboard" "~7.2.1" - "@abp/core" "~7.2.1" + "@abp/clipboard" "~7.2.2" + "@abp/core" "~7.2.2" prismjs "^1.26.0" -"@abp/select2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95" - integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw== +"@abp/select2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f" + integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3" - integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ== +"@abp/sweetalert2@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376" + integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w== dependencies: - "@abp/core" "~7.2.1" + "@abp/core" "~7.2.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857" - integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw== +"@abp/timeago@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa" + integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" timeago "^1.6.7" -"@abp/toastr@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2" - integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ== +"@abp/toastr@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965" + integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA== dependencies: - "@abp/jquery" "~7.2.1" + "@abp/jquery" "~7.2.2" toastr "^2.1.4" -"@abp/utils@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5" - integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg== +"@abp/utils@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0" + integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg== dependencies: just-compare "^1.3.0" -"@abp/virtual-file-explorer@~7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-7.2.1.tgz#9b0412ce09fbf4d8ff0974b768f4eda06203769a" - integrity sha512-/PZpU9Zq1N0tQsBb+rkJwSVZa61lwVzJIz+/qAPHmuMLF6duLkgnFh4EAyWRWLnhsFFHOI+el0OcZ7P8uLcUyw== +"@abp/virtual-file-explorer@~7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-7.2.2.tgz#23430972f2eea3c81945354e3e74b561d96af6eb" + integrity sha512-e2bysLPTPMvlh6OAS7yJP+xG/L+XV5N6K569CjqD2p9t722+574qnE6+ytViE2O471HQtMel+LlPt9EDG7hy+Q== dependencies: - "@abp/clipboard" "~7.2.1" - "@abp/prismjs" "~7.2.1" + "@abp/clipboard" "~7.2.2" + "@abp/prismjs" "~7.2.2" "@fortawesome/fontawesome-free@^5.15.4": version "5.15.4" diff --git a/npm/lerna.json b/npm/lerna.json index bc8519ba79..4f6f9433d4 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json index ae4b6b0cf7..e6eb1ced15 100644 --- a/npm/ng-packs/lerna.version.json +++ b/npm/ng-packs/lerna.version.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "packages": [ "packages/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 4ee93e7513..d509af2a41 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -43,7 +43,7 @@ }, "private": true, "devDependencies": { - "@abp/utils": "~7.2.1", + "@abp/utils": "~7.2.2", "@angular-devkit/build-angular": "~15.0.1", "@angular-devkit/schematics-cli": "~15.0.1", "@angular-eslint/eslint-plugin": "15.1.0", @@ -61,18 +61,18 @@ "@angular/platform-browser": "~15.0.1", "@angular/platform-browser-dynamic": "~15.0.1", "@angular/router": "~15.0.1", - "@abp/ng.account": "~7.2.1", - "@abp/ng.account.core": "~7.2.1", - "@abp/ng.core": "~7.2.1", - "@abp/ng.oauth": "~7.2.1", - "@abp/ng.feature-management": "~7.2.1", - "@abp/ng.identity": "~7.2.1", - "@abp/ng.permission-management": "~7.2.1", - "@abp/ng.schematics": "~7.2.1", - "@abp/ng.setting-management": "~7.2.1", - "@abp/ng.tenant-management": "~7.2.1", - "@abp/ng.theme.basic": "~7.2.1", - "@abp/ng.theme.shared": "~7.2.1", + "@abp/ng.account": "~7.2.2", + "@abp/ng.account.core": "~7.2.2", + "@abp/ng.core": "~7.2.2", + "@abp/ng.oauth": "~7.2.2", + "@abp/ng.feature-management": "~7.2.2", + "@abp/ng.identity": "~7.2.2", + "@abp/ng.permission-management": "~7.2.2", + "@abp/ng.schematics": "~7.2.2", + "@abp/ng.setting-management": "~7.2.2", + "@abp/ng.tenant-management": "~7.2.2", + "@abp/ng.theme.basic": "~7.2.2", + "@abp/ng.theme.shared": "~7.2.2", "@fortawesome/fontawesome-free": "^5.15.4", "@ng-bootstrap/ng-bootstrap": "^14.0.0", "@ngneat/spectator": "^10.0.0", diff --git a/npm/ng-packs/packages/account-core/package.json b/npm/ng-packs/packages/account-core/package.json index 4b952e1340..52f8f685d9 100644 --- a/npm/ng-packs/packages/account-core/package.json +++ b/npm/ng-packs/packages/account-core/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.account.core", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": "~7.2.1", - "@abp/ng.theme.shared": "~7.2.1", + "@abp/ng.core": "~7.2.2", + "@abp/ng.theme.shared": "~7.2.2", "@angular/common": ">=12.0.0", "@angular/core": ">=12.0.0" }, diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index 47624e8fa6..53c5e40a6a 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.account", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.account.core": "~7.2.1", - "@abp/ng.theme.shared": "~7.2.1", + "@abp/ng.account.core": "~7.2.2", + "@abp/ng.theme.shared": "~7.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index 2fbf515493..8afdd72f2f 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.components", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=7.2.1", - "@abp/ng.theme.shared": ">=7.2.1", + "@abp/ng.core": ">=7.2.2", + "@abp/ng.theme.shared": ">=7.2.2", "@ng-bootstrap/ng-bootstrap": ">=10.0.0" }, "dependencies": { diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 889bf58835..8c58e06202 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.core", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "~7.2.1", + "@abp/utils": "~7.2.2", "angular-oauth2-oidc": "^15.0.1", "just-clone": "^6.1.1", "just-compare": "^2.3.0", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index 260bcb5758..5596b11fab 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.feature-management", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~7.2.1", + "@abp/ng.theme.shared": "~7.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index 98aaf3ac3c..f7ee25a8ee 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,15 +1,15 @@ { "name": "@abp/ng.identity", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.permission-management": "~7.2.1", - "@abp/ng.theme.shared": "~7.2.1", - "@abp/ng.components": "~7.2.1", + "@abp/ng.components": "~7.2.2", + "@abp/ng.permission-management": "~7.2.2", + "@abp/ng.theme.shared": "~7.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/oauth/package.json b/npm/ng-packs/packages/oauth/package.json index f4b87f9fce..418e0365b0 100644 --- a/npm/ng-packs/packages/oauth/package.json +++ b/npm/ng-packs/packages/oauth/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.oauth", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~7.2.1", - "@abp/utils": "~7.2.1", + "@abp/ng.core": "~7.2.2", + "@abp/utils": "~7.2.2", "angular-oauth2-oidc": "^15.0.1", "just-clone": "^6.1.1", "just-compare": "^1.4.0", diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index 38f0506642..b78f179215 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.permission-management", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~7.2.1", + "@abp/ng.theme.shared": "~7.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 21d3f4264e..cd2c3884bf 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.schematics", - "version": "7.2.1", + "version": "7.2.2", "description": "Schematics that works with ABP Backend", "keywords": [ "schematics" diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index 64b640679b..5f613eab48 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.setting-management", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.components": "~7.2.1", - "@abp/ng.theme.shared": "~7.2.1", + "@abp/ng.components": "~7.2.2", + "@abp/ng.theme.shared": "~7.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index 5c71e18dd6..ef790d2e7d 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.tenant-management", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~7.2.1", - "@abp/ng.theme.shared": "~7.2.1", + "@abp/ng.feature-management": "~7.2.2", + "@abp/ng.theme.shared": "~7.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index b47bf22a57..3bc89cbc60 100644 --- a/npm/ng-packs/packages/theme-basic/package.json +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.theme.basic", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.account.core": "~7.2.1", - "@abp/ng.theme.shared": "~7.2.1", + "@abp/ng.account.core": "~7.2.2", + "@abp/ng.theme.shared": "~7.2.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json index f33e77382c..9fa38ab6d2 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.shared", - "version": "7.2.1", + "version": "7.2.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~7.2.1", + "@abp/ng.core": "~7.2.2", "@fortawesome/fontawesome-free": "^5.15.4", "@ng-bootstrap/ng-bootstrap": "^14.0.0", "@ngx-validate/core": "^0.2.0", diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index f0a30e147d..1d12472bf7 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "anchor-js": "^4.3.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/aspnetcore.components.server.basictheme/package.json b/npm/packs/aspnetcore.components.server.basictheme/package.json index b0a58fe4c6..1509987f25 100644 --- a/npm/packs/aspnetcore.components.server.basictheme/package.json +++ b/npm/packs/aspnetcore.components.server.basictheme/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/aspnetcore.components.server.basictheme", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.components.server.theming": "~7.2.1" + "@abp/aspnetcore.components.server.theming": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.components.server.theming/package.json b/npm/packs/aspnetcore.components.server.theming/package.json index 6f4c567be8..f540cbe96d 100644 --- a/npm/packs/aspnetcore.components.server.theming/package.json +++ b/npm/packs/aspnetcore.components.server.theming/package.json @@ -1,12 +1,12 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/aspnetcore.components.server.theming", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/bootstrap": "~7.2.1", - "@abp/font-awesome": "~7.2.1" + "@abp/bootstrap": "~7.2.2", + "@abp/font-awesome": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index 5fa51afdcc..1b86e2cd10 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 7d81a88e2d..809556226f 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "repository": { "type": "git", @@ -10,22 +10,22 @@ "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~7.2.1", - "@abp/bootstrap": "~7.2.1", - "@abp/bootstrap-datepicker": "~7.2.1", - "@abp/bootstrap-daterangepicker": "~7.2.1", - "@abp/datatables.net-bs5": "~7.2.1", - "@abp/font-awesome": "~7.2.1", - "@abp/jquery-form": "~7.2.1", - "@abp/jquery-validation-unobtrusive": "~7.2.1", - "@abp/lodash": "~7.2.1", - "@abp/luxon": "~7.2.1", - "@abp/malihu-custom-scrollbar-plugin": "~7.2.1", - "@abp/moment": "~7.2.1", - "@abp/select2": "~7.2.1", - "@abp/sweetalert2": "~7.2.1", - "@abp/timeago": "~7.2.1", - "@abp/toastr": "~7.2.1" + "@abp/aspnetcore.mvc.ui": "~7.2.2", + "@abp/bootstrap": "~7.2.2", + "@abp/bootstrap-datepicker": "~7.2.2", + "@abp/bootstrap-daterangepicker": "~7.2.2", + "@abp/datatables.net-bs5": "~7.2.2", + "@abp/font-awesome": "~7.2.2", + "@abp/jquery-form": "~7.2.2", + "@abp/jquery-validation-unobtrusive": "~7.2.2", + "@abp/lodash": "~7.2.2", + "@abp/luxon": "~7.2.2", + "@abp/malihu-custom-scrollbar-plugin": "~7.2.2", + "@abp/moment": "~7.2.2", + "@abp/select2": "~7.2.2", + "@abp/sweetalert2": "~7.2.2", + "@abp/timeago": "~7.2.2", + "@abp/toastr": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui/package-lock.json b/npm/packs/aspnetcore.mvc.ui/package-lock.json index 00edfe3114..14cced9bc8 100644 --- a/npm/packs/aspnetcore.mvc.ui/package-lock.json +++ b/npm/packs/aspnetcore.mvc.ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "@abp/aspnetcore.mvc.ui", - "version": "7.2.1", + "version": "7.2.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index 197fb3c82a..537e5a27b6 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/aspnetcore.mvc.ui", "repository": { "type": "git", diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index 12a2813ba2..29a5b80f11 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1", - "@abp/owl.carousel": "~7.2.1", - "@abp/prismjs": "~7.2.1", - "@abp/tui-editor": "~7.2.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.2", + "@abp/owl.carousel": "~7.2.2", + "@abp/prismjs": "~7.2.2", + "@abp/tui-editor": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 2f185e7b6e..0e7328890b 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/bootstrap-datepicker", "repository": { "type": "git", diff --git a/npm/packs/bootstrap-daterangepicker/package.json b/npm/packs/bootstrap-daterangepicker/package.json index 84fe3215ce..1804a79787 100644 --- a/npm/packs/bootstrap-daterangepicker/package.json +++ b/npm/packs/bootstrap-daterangepicker/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/bootstrap-daterangepicker", "repository": { "type": "git", diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index bcb2db7ed0..fed3b1193d 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/bootstrap", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "bootstrap": "^5.1.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index 590b0c69ce..88f73d1b1d 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 1a31d1f0f6..335be096c1 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "clipboard": "^2.0.8" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/cms-kit.admin/package.json b/npm/packs/cms-kit.admin/package.json index ba62c58afa..03037cbe50 100644 --- a/npm/packs/cms-kit.admin/package.json +++ b/npm/packs/cms-kit.admin/package.json @@ -1,15 +1,15 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/cms-kit.admin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "~7.2.1", - "@abp/jstree": "~7.2.1", - "@abp/slugify": "~7.2.1", - "@abp/tui-editor": "~7.2.1", - "@abp/uppy": "~7.2.1" + "@abp/codemirror": "~7.2.2", + "@abp/jstree": "~7.2.2", + "@abp/slugify": "~7.2.2", + "@abp/tui-editor": "~7.2.2", + "@abp/uppy": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cms-kit.public/package.json b/npm/packs/cms-kit.public/package.json index c2cde8328f..c0baf6bd6a 100644 --- a/npm/packs/cms-kit.public/package.json +++ b/npm/packs/cms-kit.public/package.json @@ -1,12 +1,12 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/cms-kit.public", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/highlight.js": "~7.2.1", - "@abp/star-rating-svg": "~7.2.1" + "@abp/highlight.js": "~7.2.2", + "@abp/star-rating-svg": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cms-kit/package.json b/npm/packs/cms-kit/package.json index 815bdbae22..34b1f8bd60 100644 --- a/npm/packs/cms-kit/package.json +++ b/npm/packs/cms-kit/package.json @@ -1,12 +1,12 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/cms-kit", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/cms-kit.admin": "~7.2.1", - "@abp/cms-kit.public": "~7.2.1" + "@abp/cms-kit.admin": "~7.2.2", + "@abp/cms-kit.public": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index b20b9e8013..7dd505cc3e 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "codemirror": "^5.65.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index 435a306378..1a536d1cf2 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/core", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/utils": "~7.2.1" + "@abp/utils": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json index d6464939c8..8402d9b5a2 100644 --- a/npm/packs/cropperjs/package.json +++ b/npm/packs/cropperjs/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/cropperjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "cropperjs": "^1.5.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index 1dddb33366..995d386149 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/datatables.net-bs4", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/datatables.net": "~7.2.1", + "@abp/datatables.net": "~7.2.2", "datatables.net-bs4": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net-bs5/package.json b/npm/packs/datatables.net-bs5/package.json index b012a7a4ea..0c4230d710 100644 --- a/npm/packs/datatables.net-bs5/package.json +++ b/npm/packs/datatables.net-bs5/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/datatables.net-bs5", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~7.2.1", + "@abp/datatables.net": "~7.2.2", "datatables.net-bs5": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index 90542e61ed..9574dc507b 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/datatables.net", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.2.1", + "@abp/jquery": "~7.2.2", "datatables.net": "^1.11.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index d691a5ddfc..b3201d8d85 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~7.2.1", - "@abp/clipboard": "~7.2.1", - "@abp/malihu-custom-scrollbar-plugin": "~7.2.1", - "@abp/popper.js": "~7.2.1", - "@abp/prismjs": "~7.2.1" + "@abp/anchor-js": "~7.2.2", + "@abp/clipboard": "~7.2.2", + "@abp/malihu-custom-scrollbar-plugin": "~7.2.2", + "@abp/popper.js": "~7.2.2", + "@abp/prismjs": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index 739465a2c3..ee26dd1605 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/flag-icons/package.json b/npm/packs/flag-icons/package.json index c8d66d4387..3cdadb38e5 100644 --- a/npm/packs/flag-icons/package.json +++ b/npm/packs/flag-icons/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/flag-icons", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index 41afd00d34..7287a461d7 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/font-awesome", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "@fortawesome/fontawesome-free": "^5.15.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index 655436645c..d78ee56480 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "@highlightjs/cdn-assets": "~11.4.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 4519fbbca2..5e15e56095 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/jquery-form", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.2.1", + "@abp/jquery": "~7.2.2", "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index 4f266f60c1..399c7330ef 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/jquery-validation-unobtrusive", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~7.2.1", + "@abp/jquery-validation": "~7.2.2", "jquery-validation-unobtrusive": "^3.2.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index 526b01603f..2f703e3d0d 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/jquery-validation", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.2.1", + "@abp/jquery": "~7.2.2", "jquery-validation": "^1.19.3" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index 13bfa734df..2d5909ec09 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/jquery", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "jquery": "~3.6.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index 8211b78ae7..cf304811c4 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~7.2.1", + "@abp/jquery": "~7.2.2", "jstree": "^3.3.12" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index bae3745b10..78723ce9f9 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/lodash", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "lodash": "^4.17.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 728a42c549..d2da5bd57f 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/luxon", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "luxon": "^2.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index c282d69fcd..4960f25126 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/malihu-custom-scrollbar-plugin", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 7eab3a8e7e..341c056f2d 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "markdown-it": "^12.3.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/moment/package.json b/npm/packs/moment/package.json index a61965f858..886e40c8bf 100644 --- a/npm/packs/moment/package.json +++ b/npm/packs/moment/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/moment", "repository": { "type": "git", diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index 945671c3be..22bb3c0d95 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 2e749dceab..3c72ecc2ce 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "@popperjs/core": "^2.11.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 3777413e9e..cb03d49d52 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~7.2.1", - "@abp/core": "~7.2.1", + "@abp/clipboard": "~7.2.2", + "@abp/core": "~7.2.2", "prismjs": "^1.26.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/qrcode/package.json b/npm/packs/qrcode/package.json index 16a6b41569..0c28932653 100644 --- a/npm/packs/qrcode/package.json +++ b/npm/packs/qrcode/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/qrcode", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1" + "@abp/core": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index b8a9917b01..4c28d7b922 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/select2", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index cf2e3f4bd8..9ed6d9573c 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "@microsoft/signalr": "~6.0.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/slugify/package.json b/npm/packs/slugify/package.json index 354d9448d9..b5dfaa9d22 100644 --- a/npm/packs/slugify/package.json +++ b/npm/packs/slugify/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/slugify", "publishConfig": { "access": "public" diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json index 3e8c8ef25f..c28703316a 100644 --- a/npm/packs/star-rating-svg/package.json +++ b/npm/packs/star-rating-svg/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/star-rating-svg", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~7.2.1", + "@abp/jquery": "~7.2.2", "star-rating-svg": "^3.5.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/sweetalert2/package.json b/npm/packs/sweetalert2/package.json index 0f7c9f4b09..74213f583d 100644 --- a/npm/packs/sweetalert2/package.json +++ b/npm/packs/sweetalert2/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/sweetalert2", "publishConfig": { "access": "public" @@ -10,7 +10,7 @@ "directory": "npm/packs/sweetalert2" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "sweetalert2": "^11.3.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index 32bf7022fe..b8b835b0d0 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/timeago", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.2.1", + "@abp/jquery": "~7.2.2", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index 12b0b58fe0..62b7922716 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/toastr", "repository": { "type": "git", @@ -10,7 +10,7 @@ "access": "public" }, "dependencies": { - "@abp/jquery": "~7.2.1", + "@abp/jquery": "~7.2.2", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index cbefa89566..8cb8743eab 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,12 +1,12 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~7.2.1", - "@abp/prismjs": "~7.2.1" + "@abp/jquery": "~7.2.2", + "@abp/prismjs": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index a2e31550f1..f6b969a052 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~7.2.1", + "@abp/core": "~7.2.2", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index 9b85997b3b..0b1c8df0fa 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "7.2.1", + "version": "7.2.2", "scripts": { "prepublishOnly": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/vee-validate/package.json b/npm/packs/vee-validate/package.json index ceccb06b6a..c0243f55b7 100644 --- a/npm/packs/vee-validate/package.json +++ b/npm/packs/vee-validate/package.json @@ -1,11 +1,11 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/vee-validate", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/vue": "~7.2.1", + "@abp/vue": "~7.2.2", "vee-validate": "~3.4.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index 03b6b264af..aba3328ccb 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~7.2.1", - "@abp/prismjs": "~7.2.1" + "@abp/clipboard": "~7.2.2", + "@abp/prismjs": "~7.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/vue/package.json b/npm/packs/vue/package.json index 795606d190..f0b6d848e5 100644 --- a/npm/packs/vue/package.json +++ b/npm/packs/vue/package.json @@ -1,5 +1,5 @@ { - "version": "7.2.1", + "version": "7.2.2", "name": "@abp/vue", "publishConfig": { "access": "public" diff --git a/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip b/source-code/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip index b9af1bc2b00f12095f6523272d1b4296334bdf38..03c43ed265137c9e71238a8e04905acd663d54d8 100644 GIT binary patch delta 15959 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 I2{X_59|nEt$^ZZW delta 15936 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 diff --git a/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip b/source-code/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip index 6c198b4cd38c8886258a32d4586c8ec7ea48974d..2844e5853785d6fc3a94ed662b851bbe27f843e0 100644 GIT binary patch delta 5584 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 GlKuxz=rJV# delta 5588 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 Xr4V4@YAQhOHJJRlHJE(2^+*2)JHIhh diff --git a/source-code/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip b/source-code/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip index 2b36c96f69a187107d2512dd2dad3c0b50c2e19c..016e07806d7fb32d8ac2560b82750b1a888cfe45 100644 GIT binary patch delta 113078 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%0AX)|Y}CM#1t%t!pe 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 z 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

rS7U!;ZtW+>%1v&! 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 diff --git a/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip b/source-code/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip index 01822a83c5944e90a546a6b9e60a651689d4c75a..0ed353e19122791e384b6c45a6a18e8a73704b96 100644 GIT binary patch delta 6969 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 diff --git a/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip b/source-code/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip index b6c4c4cdad29e8675675d009a8b9d93e9557ec3f..cae7e6e4b9dc642cdd432a016db9640a9690dec2 100644 GIT binary patch delta 16806 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Čym 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 delta 27329 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

- - @if (Model.Posts is not null && Model.Posts.Any()) - { - -
- @foreach (var post in Model.Posts) - { -
-
- - - - - - - @L["Blog"].Value.ToUpper() - -
-
- -

- - @post.Title - -

-

- - @post.Description.TruncateWithPostfix(150) - - @L["ReadMore"] -

-
-
-
- -
-
-
- } -
- - } - else - { -
-
-

@L["MemberNotPublishedPostYet"]

-
-
- } - @if (CurrentUser.UserName == Model.User.UserName) - { - -
- - - - + @if (CurrentUser.UserName == Model.User.UserName) + { + + @if (Model.Posts is not null && Model.Posts.Any()) + { + +
+ @foreach (var post in Model.Posts) + { +
+
+ + + + + + + @L["Blog"].Value.ToUpper() + +
+
+ +

+ + @post.Title + +

+

+ + @post.Description.TruncateWithPostfix(150) + + @L["ReadMore"] +

+
+
+
+ +
+
+
+ } +
+
+ } + else + { +
+
+

@L["MemberNotPublishedPostYet"]

+
+
+ } + +
+ + + + - + - + - + - + - + - + - + -
- - -
-
-
-
- +
+ +
- + + +
+
- - } - + +
+ + + } + else + { + if (Model.Posts is not null && Model.Posts.Any()) + { +

@L["BlogPosts"]

+
+ @foreach (var post in Model.Posts) + { +
+
+ + + + + + + @L["Blog"].Value.ToUpper() + +
+
+ +

+ + @post.Title + +

+

+ + @post.Description.TruncateWithPostfix(150) + + @L["ReadMore"] +

+
+
+
+ +
+
+
+ } +
+ } + else + { +
+
+

@L["MemberNotPublishedPostYet"]

+
+
+ } + }
From c4548da1a43bfd3c8e25a3ff9d57a89d3d06919f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Wed, 17 May 2023 11:00:08 +0300 Subject: [PATCH 57/65] commercial.abp.io: added localization for the trial page --- .../Commercial/Localization/Resources/en.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index 9efe75ad7e..778da632a8 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -841,6 +841,7 @@ "BlazoriseSupportExplanation2": "Verify your email address by checking your email box. Check your spam box if you don't see an email in your inbox!", "BlazoriseSupportExplanation3": "Log into the Blazorise support website at blazorise.com/support/login.", "BlazoriseSupportExplanation4": "If you have an active ABP Commercial license, you will also have a Blazorise PRO license. You can get your Blazorise license key at blazorise.com/support/user/manage/license.", - "BlazoriseSupportExplanation5": "You can post your questions on the support website and generate a product token for your application." + "BlazoriseSupportExplanation5": "You can post your questions on the support website and generate a product token for your application.", + "AbpLiveTrainingPackages": "ABP Live Training Packages" } } From 59eece52d8c35792bcb5847a51de6676bc5524b5 Mon Sep 17 00:00:00 2001 From: Gizem Mutu Kurt <99716457+gizemmutukurt@users.noreply.github.com> Date: Wed, 17 May 2023 15:07:00 +0300 Subject: [PATCH 58/65] Update latest-versions.json 7.2.1 to 7.2.2 --- latest-versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/latest-versions.json b/latest-versions.json index e291aaffe5..ee5249ef27 100644 --- a/latest-versions.json +++ b/latest-versions.json @@ -1,6 +1,6 @@ [ { - "version": "7.2.1", + "version": "7.2.2", "releaseDate": "", "type": "stable", "message": "" From 09ac929d70e495e56509f3ce5c0ab4d74f5e1d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Wed, 17 May 2023 16:29:43 +0300 Subject: [PATCH 59/65] refactoring --- .../blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml index 47b92f65d3..e24b1dd5af 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml @@ -99,7 +99,7 @@
- @if (CurrentUser.UserName == Model.User.UserName) + @if (CurrentUser.Id == Model.User.Id) { @if (Model.Posts is not null && Model.Posts.Any()) @@ -196,7 +196,7 @@ { if (Model.Posts is not null && Model.Posts.Any()) { -

@L["BlogPosts"]

+

@L["BlogPosts"]

@foreach (var post in Model.Posts) { From 15692d260833dcb9650adc68ca9836046cb8e52b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Onur=20P=C4=B1=C3=A7akc=C4=B1?= <98148844+onurpicakci@users.noreply.github.com> Date: Thu, 18 May 2023 09:35:09 +0300 Subject: [PATCH 60/65] copy-link button color edited --- .../blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.css | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.css b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.css index 7bf7612836..a85dcc284b 100644 --- a/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.css +++ b/modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.css @@ -24,4 +24,5 @@ padding: 0; border: none; background: none; + color: rgba(0,0,0,.6); } \ No newline at end of file From b71377180d204780e070d88a7782bcc6e598f397 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 18 May 2023 20:08:51 +0800 Subject: [PATCH 61/65] Set correct `Field` of `component` of `column`. https://support.abp.io/QA/Questions/5059 --- .../Components/AbpExtensibleDataGrid.razor | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor index 88a0a1df4a..cbdfc25c99 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor @@ -72,11 +72,22 @@ { @if (column.Component != null) { - - - @RenderCustomTableColumnComponent(column.Component, context) - - + @if (column.ValueConverter == null) + { + + + @RenderCustomTableColumnComponent(column.Component, context) + + + } + else + { + + + @RenderCustomTableColumnComponent(column.Component, context) + + + } } else { From 15e1529321a091e3086f905cedb0b8d54cc6006f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BF=8A?= Date: Fri, 19 May 2023 06:22:34 +0000 Subject: [PATCH 62/65] Using constants instead of strings for FeatureManagement.ManageHostFeatures --- .../Volo/Abp/FeatureManagement/FeatureAppService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs index 4b879a6436..5f4f55a3fe 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs @@ -121,7 +121,7 @@ public class FeatureAppService : FeatureManagementAppServiceBase, IFeatureAppSer string policyName; if (providerName == TenantFeatureValueProvider.ProviderName && CurrentTenant.Id == null && providerKey == null) { - policyName = "FeatureManagement.ManageHostFeatures"; + policyName = FeatureManagementPermissions.ManageHostFeatures; } else { From cb75100892e49e4acc314950d363a0c3baa2b274 Mon Sep 17 00:00:00 2001 From: luweicong <70128450+weiconglu@users.noreply.github.com> Date: Sat, 20 May 2023 09:05:28 +0800 Subject: [PATCH 63/65] Update Dropdowns.md two options of align: Start/End --- docs/en/UI/AspNetCore/Tag-Helpers/Dropdowns.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/UI/AspNetCore/Tag-Helpers/Dropdowns.md b/docs/en/UI/AspNetCore/Tag-Helpers/Dropdowns.md index 1c062b5f73..75d57479b5 100644 --- a/docs/en/UI/AspNetCore/Tag-Helpers/Dropdowns.md +++ b/docs/en/UI/AspNetCore/Tag-Helpers/Dropdowns.md @@ -70,8 +70,8 @@ Basic usage: A value indicates which direction `abp-dropdown-menu` items will be aligned to. Should be one of the following values: -* `Left` (default value) -* `Right` +* `Start` (default value) +* `End` ### Additional content From 30d3781fd62e6165227d92281386e3fc8fafaa55 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 22 May 2023 13:44:35 +0800 Subject: [PATCH 64/65] Enable Fody on Release only. --- configureawait.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configureawait.props b/configureawait.props index 92f22f85fb..93d9dfa6a4 100644 --- a/configureawait.props +++ b/configureawait.props @@ -1,9 +1,9 @@ - + All runtime; build; native; contentfiles; analyzers - \ No newline at end of file + From ff011f58940e26282e042b5d2401996ba63bc7b1 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 22 May 2023 15:03:44 +0800 Subject: [PATCH 65/65] Update WebAssemblyLookupApiRequestService.cs --- .../Extensibility/WebAssemblyLookupApiRequestService.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs index b8eadacdd6..01378f5ddd 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs @@ -3,7 +3,6 @@ using System.Globalization; using System.Net.Http; using System.Threading.Tasks; using Castle.Components.DictionaryAdapter; -using Fody; using Volo.Abp.AspNetCore.Components.Web.Extensibility; using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Client.Authentication;