Browse Source

Merge branch 'dev' into pr/5733

pull/5733/head
Halil İbrahim Kalkan 6 years ago
parent
commit
d693dc83f4
  1. 119
      docs/en/CSRF-Anti-Forgery.md
  2. 160
      docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/How-To-Add-Custom-Property-To-The-User-Entity.md
  3. BIN
      docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/added-new-migration.png
  4. BIN
      docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/custom-identity-user-list.png
  5. BIN
      docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/initial-project.png
  6. BIN
      docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/new-user.png
  7. BIN
      docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/nuget-package-manager.png
  8. BIN
      docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/user-table.png
  9. 35
      docs/en/Customizing-Application-Modules-Overriding-Services.md
  10. 3
      docs/en/JavaScript/Dynamic-JavaScript-API-Clients.md
  11. 99
      docs/en/Localization.md
  12. 2
      docs/en/Redis-Cache.md
  13. 11
      docs/en/UI/Angular/Localization.md
  14. 96
      docs/en/UI/Angular/Toaster-Service.md
  15. 4
      docs/en/UI/AspNetCore/Customization-User-Interface.md
  16. 150
      docs/en/UI/AspNetCore/JavaScript-API/Ajax.md
  17. 3
      docs/en/UI/AspNetCore/JavaScript-API/Dynamic-JavaScript-Client-Proxies.md
  18. 12
      docs/en/UI/AspNetCore/JavaScript-API/Index.md
  19. 143
      docs/en/UI/AspNetCore/JavaScript-API/Localization.md
  20. 3
      docs/en/UI/AspNetCore/JavaScript-API/Logging.md
  21. 128
      docs/en/UI/AspNetCore/JavaScript-API/Message.md
  22. 45
      docs/en/UI/AspNetCore/JavaScript-API/Notify.md
  23. 106
      docs/en/UI/AspNetCore/Layout-Hooks.md
  24. 3
      docs/en/UI/Blazor/Localization.md
  25. 35
      docs/en/docs-nav.json
  26. BIN
      docs/en/images/ajax-error.png
  27. BIN
      docs/en/images/js-message-confirm.png
  28. BIN
      docs/en/images/js-message-error.png
  29. BIN
      docs/en/images/js-message-success.png
  30. BIN
      docs/en/images/js-notify-success.png
  31. 28
      framework/Volo.Abp.sln
  32. 6
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/MainLayout.razor
  33. 2
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/_Imports.razor
  34. 1
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj
  35. 21
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs
  36. 34
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiMessageService.cs
  37. 35
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageEventArgs.cs
  38. 53
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageOptions.cs
  39. 17
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs
  40. 14
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageType.cs
  41. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/es.json
  42. 14
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AntiForgery/AbpAntiForgeryManagerAspNetCoreExtensions.cs
  43. 8
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AntiForgery/AspNetCoreAbpAntiForgeryManager.cs
  44. 8
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AntiForgery/IAbpAntiForgeryManager.cs
  45. 33
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/AbpServiceConvention.cs
  46. 4
      framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs
  47. 96
      framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs
  48. 48
      framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor
  49. 140
      framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs
  50. 2
      framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj
  51. 2
      framework/src/Volo.Abp.BlazoriseUI/_Imports.razor
  52. 20
      framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpCachingStackExchangeRedisModule.cs
  53. 26
      framework/src/Volo.Abp.Core/System/AbpTypeExtensions.cs
  54. 16
      framework/src/Volo.Abp.Core/System/Collections/Generic/AbpCollectionExtensions.cs
  55. 6
      framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/es.json
  56. 4
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/es.json
  57. 19
      framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/es.json
  58. 7
      framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/es.json
  59. 10
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json
  60. 7
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/es.json
  61. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
  62. 224
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
  63. 4
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
  64. 256
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
  65. 10
      framework/test/Volo.Abp.Core.Tests/System/AbpTypeExtensions_Tests.cs
  66. 6
      framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/es.json
  67. 4
      modules/blogging/app/Volo.BloggingTestApp/package.json
  68. 328
      modules/blogging/app/Volo.BloggingTestApp/yarn.lock
  69. 4
      modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/CreateBlogDto.cs
  70. 6
      modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/UpdateBlogDto.cs
  71. 6
      modules/blogging/src/Volo.Blogging.Admin.Application/Volo/Blogging/Admin/Blogs/BlogManagementAppService.cs
  72. 4
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Comments/Dtos/CreateCommentDto.cs
  73. 7
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Comments/Dtos/UpdateCommentDto.cs
  74. 1
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/CreatePostDto.cs
  75. 6
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/GetPostInput.cs
  76. 5
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/UpdatePostDto.cs
  77. 3
      modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Blogs/BlogAppService.cs
  78. 4
      modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileAppService.cs
  79. 4
      modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs
  80. 4
      modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/IPostRepository.cs
  81. 12
      modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Posts/EfCorePostRepository.cs
  82. 17
      modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Posts/MongoPostRepository.cs
  83. 2
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
  84. 234
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
  85. 10
      modules/cms-kit/angular/package.json
  86. 4
      modules/cms-kit/angular/projects/cms-kit/package.json
  87. 2
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
  88. 234
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
  89. 2
      modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
  90. 234
      modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
  91. 2
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
  92. 234
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
  93. 4
      modules/docs/app/VoloDocs.Web/package.json
  94. 294
      modules/docs/app/VoloDocs.Web/yarn.lock
  95. 2
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs
  96. 3
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/ar.json
  97. 1
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/cs.json
  98. 1
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/en.json
  99. 3
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json
  100. 11
      modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs

119
docs/en/CSRF-Anti-Forgery.md

@ -0,0 +1,119 @@
# CSRF/XSRF & Anti Forgery System
"*Cross-Site Request Forgery (CSRF) is a type of attack that occurs when a malicious web site, email, blog, instant message, or program causes a user’s web browser to perform an unwanted action on a trusted site for which the user is currently authenticated*" ([OWASP](https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet)).
**ABP Framework completely automates CSRF preventing** and works out of the box without any configuration. Read this documentation only if you want to understand it better or need to customize.
## The Problem
ASP.NET Core [provides infrastructure](https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery) to prevent CSRF attacks by providing a system to **generate** and **validate antiforgery tokens**. However, the standard implementation has a few drawbacks;
Antiforgery token validation is only **enabled for razor pages by default** and not enabled for **HTTP APIs**. You need to enable it yourself for the Controllers. You can use the `[ValidateAntiForgeryToken]` attribute for a specific API Controller/Action or the `[AutoValidateAntiforgeryToken]` attribute to prevent attacks globally.
Once you enable it;
* You need to manually add an HTTP header, named `RequestVerificationToken` to every **AJAX request** made in your application. You should care about obtaining the token, saving in the client side and adding to the HTTP header on every HTTP request.
* All your clients, including **non-browser clients**, should care about obtaining and sending the antiforgery token in every request. In fact, non-browser clients has no CSRF risk and should not care about this.
Especially, the second point is a pain for your clients and unnecessarily consumes your server resources.
> You can read more about the ASP.NET Core antiforgery system in its own [documentation](https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery).
## The Solution
ABP Framework provides `[AbpValidateAntiForgeryToken]` and `[AbpAutoValidateAntiforgeryToken]` attributes, just like the attributes explained above. `[AbpAutoValidateAntiforgeryToken]` is already added to the global filters, so you should do nothing to enable it for your application.
ABP Framework also automates the following infrastructure;
* Server side sets a **special cookie**, named `XSRF-TOKEN` by default, that is used make the antiforgery token value available to the browser. This is **done automatically** (by the [application configuration](Application-Configuration.md) endpoint). Nothing to do in the client side.
* In the client side, it reads the token from the cookie and sends it in the **HTTP header** (named `RequestVerificationToken` by default). This is implemented for all the supported UI types.
* Server side validates the antiforgery token **only for same and cross site requests** made by the browser. It bypasses the validation for non-browser clients.
That's all. The systems works smoothly.
## Configuration / Customization
### AbpAntiForgeryOptions
`AbpAntiForgeryOptions` is the main [options class](Options.md) to configure the ABP Antiforgery system. It has the following properties;
* `TokenCookie`: Can be used to configure the cookie details. This cookie is used to store the antiforgery token value in the client side, so clients can read it and sends the value as the HTTP header. Default cookie name is `XSRF-TOKEN`, expiration time is 10 years (yes, ten years! It should be a value longer than the authentication cookie max life time, for the security).
* `AuthCookieSchemaName`: The name of the authentication cookie used by your application. Default value is `Identity.Application` (which becomes `AspNetCore.Identity.Application` on runtime). The default value properly works with the ABP startup templates. **If you change the authentication cookie name, you also must change this.**
* `AutoValidate`: The single point to enable/disable the ABP automatic antiforgery validation system. Default value is `true`.
* `AutoValidateFilter`: A predicate that gets a type and returns a boolean. ABP uses this predicate to check a controller type. If it returns false for a controller type, the controller is excluded from the automatic antiforgery token validation.
* `AutoValidateIgnoredHttpMethods`: A list of HTTP Methods to ignore on automatic antiforgery validation. Default value: "GET", "HEAD", "TRACE", "OPTIONS". These HTTP Methods are safe to skip antiforgery validation since they don't change the application state.
If you need to change these options, do it in the `ConfigureServices` method of your [module](Module-Development-Basics.md).
**Example: Configuring the AbpAntiForgeryOptions**
```csharp
Configure<AbpAntiForgeryOptions>(options =>
{
options.TokenCookie.Expiration = TimeSpan.FromDays(365);
options.AutoValidateIgnoredHttpMethods.Remove("GET");
options.AutoValidateFilter =
type => !type.Namespace.StartsWith("MyProject.MyIgnoredNamespace");
});
```
This configuration;
* Sets the antiforgery token expiration time to ~1 year.
* Enables antiforgery token validation for GET requests too.
* Ignores the controller types in the specified namespace.
### AntiforgeryOptions
`AntiforgeryOptions` is the standard [options class](Options.md) of the ASP.NET Core. **You can find all the information about this class in its [own documentation](https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery)**.
`HeaderName` option is especially important for the ABP Framework point of view. Default value of this value is `RequestVerificationToken` and the clients uses this name while sending the token value in the header. So, if you change this option, you should also arrange your clients to align the change. If you don't have a good reason, leave it as default.
### AbpValidateAntiForgeryToken Attribute
If you disable the automatic validation or want to perform the validation for an endpoint that is not validated by default (for example, an endpoint with HTTP GET Method), you can use the `[AbpValidateAntiForgeryToken]` attribute for a **controller type or method** (action).
**Example: Add `[AbpValidateAntiForgeryToken]` to a HTTP GET method**
```csharp
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.AntiForgery;
namespace MyCompanyName.MyProjectName.Controllers
{
[Route("api/products")]
public class ProductController : AbpController
{
[HttpGet]
[AbpValidateAntiForgeryToken]
public async Task GetAsync()
{
//TODO: ...
}
}
}
```
### Angular UI
Angular supports CSRF Token out of box, but the token header name is `X-XSRF-TOKEN`. Since ABP Framework follows the ASP.NET Core conventions, it changes this value to `RequestVerificationToken` in the core package.
You don't need to make anything unless you need to change the `AntiforgeryOptions.HeaderName` as explained before. If you change it, remember to change the header name for the Angular application too. To do that, add an import declaration for the `HttpClientXsrfModule` into your root module.
**Example: Change the header name to *MyCustomHeaderName***
```typescript
@NgModule({
// ...
imports: [
//...
HttpClientXsrfModule.withOptions({
cookieName: 'XSRF-TOKEN',
headerName: 'MyCustomHeaderName'
})
],
})
export class AppModule {}
```

160
docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/How-To-Add-Custom-Property-To-The-User-Entity.md

@ -0,0 +1,160 @@
# How to Add Custom Properties to the User Entity
## Introduction
In this step-by-step article, I will explain how you can customize the user entity class, which is available in every web application you create using the ABP framework, according to your needs. When you read this article, you will learn how to override the services of built-in modules, extend the entities, extend data transfer objects and customize the user interface in the applications you develop using the ABP framework.
You can see the screenshots below which we will reach at the end of the article.
![custom-identity-user-list](./custom-identity-user-list.png)
![new-user](./new-user.png)
## Preparing the Project
### Startup template and the initial run
Abp Framework offers startup templates to get into the work faster. We can create a new startup template using Abp CLI:
`abp new CustomizeUserDemo`
> In this article, I will go through the MVC application, but it will work also in the [Angular](https://docs.abp.io/en/abp/latest/Getting-Started?UI=NG&DB=EF&Tiered=No) application.
After the download is finished, we can run **CustomizeUserDemo.DbMigrator** project to create the database migrations and seed the initial data (admin user, role, etc). Then we can run `CustomizeUserDemo.Web` to see that our application is working.
> Default admin username is **admin** and password is **1q2w3E\***
![initial-project](./initial-project.png)
In this article, we will go through a scenario together and find the solutions to our questions through this scenario. However, since the scenario is not a real-life scenario, it may be strange, please don't get too about this issue :)
## Step-1
Add two new properties to the `AppUser` in the Users folder of the **CustomizeUserDemo.Domain** project as follows:
```csharp
public string Title { get; protected set; }
public int Reputation { get; protected set; }
```
## Step-2
Create the Users folder in the **CustomizeUserDemo.Domain.Shared** project, create the class `UserConsts` inside the folder and update the class you created as below:
```csharp
public static class UserConsts
{
public const string TitlePropertyName = "Title";
public const string ReputationPropertyName = "Reputation";
public const int MaxTitleLength = 64;
public const double MaxReputationValue = 1_000;
public const double MinReputationValue = 1;
}
```
## Step-3
Update the `CustomizeUserDemoEfCoreEntityExtensionMappings` class in the **CustomizeUserDemo.EntityFramework** project in the EntityFrameworkCore folder as below:
```csharp
public static class CustomizeUserDemoEfCoreEntityExtensionMappings
{
private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
public static void Configure()
{
CustomizeUserDemoGlobalFeatureConfigurator.Configure();
CustomizeUserDemoModuleExtensionConfigurator.Configure();
OneTimeRunner.Run(() =>
{
ObjectExtensionManager.Instance
.MapEfCoreProperty<IdentityUser, string>(
nameof(AppUser.Title),
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.IsRequired();
propertyBuilder.HasMaxLength(UserConsts.MaxTitleLength);
}
).MapEfCoreProperty<IdentityUser, int>(
nameof(AppUser.Reputation),
(entityBuilder, propertyBuilder) =>
{
propertyBuilder.HasDefaultValue(UserConsts.MinReputationValue);
}
);
});
}
}
```
This class can be used to map these extra properties to table fields in the database. Please read [this](https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Extending-Entities) article to improve your understanding of what we are doing.
So far, we have added our extra features to the `User` entity and matched these features with the `ef core`.
Now we need to add migration to see what has changed in our database. This for, open the Package Manager Console (PMC) under the menu Tools > NuGet Package Manager.
![nuget-package-manager](./nuget-package-manager.png)
Select the **CustomizeUserDemo.EntityFramework.DbMigrations** as the **default project** and execute the following command:
```bash
Add-Migration "Updated-User-Entity"
```
![added-new-migration](./added-new-migration.png)
This will create a new migration class inside the `Migrations` folder of the **CustomizeUserDemo.EntityFrameworkCore.DbMigrations** project.
> If you are using another IDE than the Visual Studio, you can use `dotnet-ef` tool as [documented here](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/?tabs=dotnet-core-cli#create-a-migration).
Finally, run the **CustomizeUserDemo.DbMigrator** project to update the database.
When we updated the database, you can see that the `Title` and `Reputation` columns are added to the `Users` table.
![user-table](./user-table.png)
## Step-4
Open the `CustomizeUserDemoModuleExtensionConfigurator` in the **CustomizeUserDemo.Domain.Shared** project, and change the contents of the `ConfigureExtraProperties` method as shown below:
```csharp
private static void ConfigureExtraProperties()
{
ObjectExtensionManager.Instance.Modules().ConfigureIdentity(identity =>
{
identity.ConfigureUser(user =>
{
user.AddOrUpdateProperty<string>(
UserConsts.TitlePropertyName,
options =>
{
options.Attributes.Add(new RequiredAttribute());
options.Attributes.Add(
new StringLengthAttribute(UserConsts.MaxTitleLength)
);
}
);
user.AddOrUpdateProperty<int>(
UserConsts.ReputationPropertyName,
options =>
{
options.DefaultValue = UserConsts.MinReputationValue;
options.Attributes.Add(
new RangeAttribute(UserConsts.MinReputationValue, UserConsts.MaxReputationValue)
);
}
);
});
});
}
```
That's it. Now let's run the application and look at the Identity user page. You can also try to edit and recreate a record if you want, it will work even though we haven't done anything extra. Here is the magic code behind ABP framework.
If there is a situation you want to add, you can click the contribute button or make a comment. Also, if you like the article, don't forget to share it :)
Happy coding :)

BIN
docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/added-new-migration.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/custom-identity-user-list.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

BIN
docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/initial-project.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/new-user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/nuget-package-manager.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
docs/en/Community-Articles/2020-10-08-How-To-Add-Custom-Property-To-The-User-Entity/user-table.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

35
docs/en/Customizing-Application-Modules-Overriding-Services.md

@ -162,6 +162,41 @@ This example class inherits from the `IdentityUserManager` [domain service](Doma
Check the [localization system](Localization.md) to learn how to localize the error messages. Check the [localization system](Localization.md) to learn how to localize the error messages.
### Example: Overriding a Controller
````csharp
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Volo.Abp.Account;
using Volo.Abp.DependencyInjection;
namespace MyProject.Controllers
{
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(AccountController))]
public class MyAccountController : AccountController
{
public MyAccountController(IAccountAppService accountAppService)
: base(accountAppService)
{
}
public override async Task SendPasswordResetCodeAsync(
SendPasswordResetCodeDto input)
{
Logger.LogInformation("Your custom logic...");
await base.SendPasswordResetCodeAsync(input);
}
}
}
````
This example replaces the `AccountController` (An API Controller defined in the [Account Module](Modules/Account.md)) and overrides the `SendPasswordResetCodeAsync` method.
**`[ExposeServices(typeof(AccountController))]` is essential** here since it registers this controller for the `AccountController` in the dependency injection system. `[Dependency(ReplaceServices = true)]` is also recommended to clear the old registration (even the ASP.NET Core DI system selects the last registered one).
### Overriding Other Classes ### Overriding Other Classes
Overriding controllers, framework services, view component classes and any other type of classes registered to dependency injection can be overridden just like the examples above. Overriding controllers, framework services, view component classes and any other type of classes registered to dependency injection can be overridden just like the examples above.

3
docs/en/JavaScript/Dynamic-JavaScript-API-Clients.md

@ -1,3 +0,0 @@
## Dynamic JavaScript API Clients
TODO

99
docs/en/Localization.md

@ -100,8 +100,6 @@ Configure<AbpLocalizationOptions>(options =>
> The [application startup template](Startup-Templates/Application.md) sets `DefaultResourceType` to the localization resource of the application. > The [application startup template](Startup-Templates/Application.md) sets `DefaultResourceType` to the localization resource of the application.
See the *Client Side* section below for a use case.
### Short Localization Resource Name ### Short Localization Resource Name
Localization resources are also available in the client (JavaScript) side. So, setting a short name for the localization resource makes it easy to use localization texts. Example: Localization resources are also available in the client (JavaScript) side. So, setting a short name for the localization resource makes it easy to use localization texts. Example:
@ -156,13 +154,13 @@ services.Configure<AbpLocalizationOptions>(options =>
* If an extension file defines the same localized string, it overrides the string. * If an extension file defines the same localized string, it overrides the string.
## Getting Localized Texts ## Getting the Localized Texts
### Server Side Getting the localized text is pretty standard.
Getting the localized text on the server side is pretty standard. ### Simplest Usage In A Class
#### Simplest Usage In A Class Just inject the `IStringLocalizer<TResource>` service and use it like shown below:
````C# ````C#
public class MyService public class MyService
@ -183,9 +181,13 @@ public class MyService
##### Format Arguments ##### Format Arguments
Format arguments can be passed after the localization key. If your message is `Hello {0}, welcome!`, then you can pass the `{0}` argument to the localizer like `_localizer["HelloMessage", "John"]` Format arguments can be passed after the localization key. If your message is `Hello {0}, welcome!`, then you can pass the `{0}` argument to the localizer like `_localizer["HelloMessage", "John"]`.
> Refer to the [Microsoft's localization documentation](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization) for details about using the localization.
#### Simplest Usage In A Razor View/Page ### Using In A Razor View/Page
Use `IHtmlLocalizer<T>` in razor views/pages;
````c# ````c#
@inject IHtmlLocalizer<TestResource> Localizer @inject IHtmlLocalizer<TestResource> Localizer
@ -193,54 +195,59 @@ Format arguments can be passed after the localization key. If your message is `H
<h1>@Localizer["HelloWorld"]</h1> <h1>@Localizer["HelloWorld"]</h1>
```` ````
Refer to the [Microsoft's localization documentation](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization) for details about using localization on the server side. ### Special Base Classes
### Client Side
ABP provides JavaScript services to use the same localized texts in the client side.
#### getResource
`abp.localization.getResource` function is used to get a localization resource:
````js
var testResource = abp.localization.getResource('Test');
````
Then you can localize a string based on this resource:
````js Some ABP Framework base classes provide a `L` property to use the localizer even easier.
var str = testResource('HelloWorld');
````
#### localize **Example: Localize a text in an application service method**
`abp.localization.localize` function is a shortcut where you can both specify the text name and the resource name: ```csharp
using System.Threading.Tasks;
using MyProject.Localization;
using Volo.Abp.Application.Services;
````js namespace MyProject
var str = abp.localization.localize('HelloWorld', 'Test'); {
```` public class TestAppService : ApplicationService
{
public TestAppService()
{
LocalizationResource = typeof(MyProjectResource);
}
`HelloWorld` is the text to localize, where `Test` is the localization resource name here. public async Task DoIt()
{
var str = L["HelloWorld"];
}
}
}
```
If you don't specify the localization resource name, it uses the default localization resource defined on the `AbpLocalizationOptions` (see the *Default Resource* section above). Example: When you set the `LocalizationResource` in the constructor, the `ApplicationService` class uses that resource type when you use the `L` property, just like in the `DoIt()` method.
````js Setting `LocalizationResource` in every application service can be tedious. You can create an abstract base application service class, set it there and derive your application services from that base class. This is already implemented when you create a new project with the [startup templates](Startup-Templates/Application.md). So, you can simply inherit from the base class directly use the `L` property:
var str = abp.localization.localize('HelloWorld'); //uses the default resource
````
##### Format Arguments ```csharp
using System.Threading.Tasks;
If your localized string contains arguments, like `Hello {0}, welcome!`, you can pass arguments to the localization methods. Examples: namespace MyProject
{
public class TestAppService : MyProjectAppService
{
public async Task DoIt()
{
var str = L["HelloWorld"];
}
}
}
```
````js The `L` property is also available for some other base classes like `AbpController` and `AbpPageModel`.
var str1 = abp.localization.getResource('Test')('HelloWelcomeMessage', 'John');
var str2 = abp.localization.localize('HelloWorld', 'Test', 'John');
````
Both of the samples above produce the output `Hello John, welcome!`. ## The Client Side
## See Also See the following documents to learn how to reuse the same localization texts in the JavaScript side;
* [Localization in Angular UI](UI/Angular/Localization.md) * [Localization for the MVC / Razor Pages UI](UI/AspNetCore/JavaScript-API/Localization.md)
* [Forms & Validation](UI/AspNetCore/Forms-Validation.md) for the ASP.NET Core MVC / Razor Pages UI * [Localization for the Blazor UI](UI/Blazor/Localization.md)
* [Localization for the Angular UI](UI/Angular/Localization.md)

2
docs/en/Redis-Cache.md

@ -25,9 +25,11 @@ Volo.Abp.Caching.StackExchangeRedis package automatically gets the redis [config
````js ````js
"Redis": { "Redis": {
"IsEnabled": "true",
"Configuration": "127.0.0.1" "Configuration": "127.0.0.1"
} }
```` ````
The setting `IsEnabled` is optional and will be considered `true` if it is not set.
Alternatively you can configure the standard [RedisCacheOptions](https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.caching.stackexchangeredis.rediscacheoptions) [options](Options.md) class in the `ConfigureServices` method of your [module](Module-Development-Basics.md): Alternatively you can configure the standard [RedisCacheOptions](https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.caching.stackexchangeredis.rediscacheoptions) [options](Options.md) class in the `ConfigureServices` method of your [module](Module-Development-Basics.md):

11
docs/en/UI/Angular/Localization.md

@ -219,7 +219,18 @@ If you see an error like this, you should pass the `cultureNameLocaleFileMap` pr
See [all locale files in Angular](https://github.com/angular/angular/tree/master/packages/common/locales). See [all locale files in Angular](https://github.com/angular/angular/tree/master/packages/common/locales).
## Adding new culture
```js
//app.module.ts
import { storeLocaleData } from '@abp/ng.core';
import(
/* webpackChunkName: "_locale-your-locale-js"*/
/* webpackMode: "eager" */
'@angular/common/locales/your-locale.js'
).then(m => storeLocaleData(m.default, 'your-locale'));
```
## See Also ## See Also
* [Localization in ASP.NET Core](../../Localization.md) * [Localization in ASP.NET Core](../../Localization.md)

96
docs/en/UI/Angular/Toaster-Service.md

@ -85,7 +85,103 @@ The all open toasts can be removed manually via the `clear` method:
```js ```js
this.toaster.clear(); this.toaster.clear();
``` ```
## Replacing ToasterService with 3rd party toaster libraries
If you want the ABP Framework to utilize 3rd party libraries for the toasters instead of the built-in one, you can provide a service that implements `Toaster.Service` interface, and provide it as follows (ngx-toastr library used in example):
> You can use *LocalizationService* for toaster messages translations.
```js
// your-custom-toaster.service.ts
import { Injectable } from '@angular/core';
import { Config, LocalizationService } from '@abp/ng.core';
import { Toaster } from '@abp/ng.theme.shared';
import { ToastrService } from 'ngx-toastr';
@Injectable()
export class CustomToasterService implements Toaster.Service {
constructor(private toastr: ToastrService, private localizationService: LocalizationService) {}
error(
message: Config.LocalizationParam,
title?: Config.LocalizationParam,
options?: Partial<Toaster.ToastOptions>,
) {
return this.show(message, title, 'error', options);
}
clear(): void {
this.toastr.clear();
}
info(
message: Config.LocalizationParam,
title: Config.LocalizationParam | undefined,
options: Partial<Toaster.ToastOptions> | undefined,
): Toaster.ToasterId {
return this.show(message, title, 'info', options);
}
remove(id: number): void {
this.toastr.remove(id);
}
show(
message: Config.LocalizationParam,
title: Config.LocalizationParam,
severity: Toaster.Severity,
options: Partial<Toaster.ToastOptions>,
): Toaster.ToasterId {
const translatedMessage = this.localizationService.instant(message);
const translatedTitle = this.localizationService.instant(title);
const toasterOptions = {
positionClass: 'toast-bottom-right',
tapToDismiss: options.tapToDismiss,
...(options.sticky && {
extendedTimeOut: 0,
timeOut: 0,
}),
};
const activeToast = this.toastr.show(
translatedMessage,
translatedTitle,
toasterOptions,
`toast-${severity}`,
);
return activeToast.toastId;
}
success(
message: Config.LocalizationParam,
title: Config.LocalizationParam | undefined,
options: Partial<Toaster.ToastOptions> | undefined,
): Toaster.ToasterId {
return this.show(message, title, 'success', options);
}
warn(
message: Config.LocalizationParam,
title: Config.LocalizationParam | undefined,
options: Partial<Toaster.ToastOptions> | undefined,
): Toaster.ToasterId {
return this.show(message, title, 'warning', options);
}
}
```
```js
// app.module.ts
import { ToasterService } from '@abp/ng.theme.shared';
@NgModule({
providers: [
// ...
{
provide: ToasterService,
useClass: CustomToasterService,
},
]
})
```
## API ## API
### success ### success

4
docs/en/UI/AspNetCore/Customization-User-Interface.md

@ -376,7 +376,7 @@ Assume that you need to add the Google Analytics script to the layout (that will
![bookstore-google-analytics-view-component](../../images/bookstore-google-analytics-view-component.png) ![bookstore-google-analytics-view-component](../../images/bookstore-google-analytics-view-component.png)
**NotificationViewComponent.cs** **GoogleAnalyticsViewComponent.cs**
````csharp ````csharp
public class GoogleAnalyticsViewComponent : AbpViewComponent public class GoogleAnalyticsViewComponent : AbpViewComponent
@ -441,7 +441,7 @@ Layout system allows themes to define standard, named layouts and allows any pag
* "**Account**": This layout is used by login, register and other similar pages. It is used for the pages under the `/Pages/Account` folder by default. * "**Account**": This layout is used by login, register and other similar pages. It is used for the pages under the `/Pages/Account` folder by default.
* "**Empty**": Empty and minimal layout. * "**Empty**": Empty and minimal layout.
These names are defined in the `StandardLayouts` class as constants. You can definitely create your own layouts, but these are standard layout names and implemented by all the themes out of the box. These names are defined in the `StandardLayouts` class as constants. You can definitely create your own layouts, but these are the standard layout names and implemented by all the themes out of the box.
#### Layout Location #### Layout Location

150
docs/en/UI/AspNetCore/JavaScript-API/Ajax.md

@ -0,0 +1,150 @@
# ASP.NET Core MVC / Razor Pages UI JavaScript AJAX API
`abp.ajax` API provides a convenient way of performing AJAX calls to the server. It internally uses JQuery's `$.ajax`, but automates some common tasks for you;
* Automatically **handles & localize the errors** and informs the user (using the [abp.message](Message.md)). So you typically don't care about errors.
* Automatically adds **anti forgery** token to the HTTP header to satisfy CSRF protection validation on the server side.
* Automatically sets **default options** and allows to configure the defaults in a single place.
* Can **block** a UI part (or the full page) during the AJAX operation.
* Allows to fully customize any AJAX call, by using the standard `$.ajax` **options**.
> While `abp.ajax` makes the AJAX call pretty easier, you typically will use the [Dynamic JavaScript Client Proxy](Dynamic-JavaScript-Client-Proxies.md) system to perform calls to your server side HTTP APIs. `abp.ajax` can be used when you need to perform low level AJAX operations.
## Basic Usage
`abp.ajax` accepts an options object that is accepted by the standard [$.ajax](https://api.jquery.com/jquery.ajax/#jQuery-ajax-settings). All the standard options are valid. It returns a [promise](https://api.jquery.com/category/deferred-object/) as the return value.
**Example: Get the list of users**
````js
abp.ajax({
type: 'GET',
url: '/api/identity/users'
}).then(function(result){
console.log(result);
});
````
This command logs the list of users to the console, if you've **logged in** to the application and have [permission](../../../Authorization.md) for the user management page of the [Identity Module](../../../Modules/Identity.md).
## Error Handling
The example AJAX call above shows an **error message** if you haven't login to the application or you don't have the necessary permissions to perform this request:
![ajax-error](../../../images/ajax-error.png)
All kinds of errors are automatically handled by `abp.ajax`, unless you want to disable it.
### Standard Error Response
`abp.ajax` is compatible with the [exception handling system](../../../Exception-Handling.md) of the ABP Framework and it properly handles the standard error format returned from the server. A typical error message is a JSON as like below:
````json
{
"error": {
"code": "App:010042",
"message": "This topic is locked and can not add a new message",
"details": "A more detailed info about the error..."
}
}
````
The error message is directly shown to the user, using the `message` and `details` properties.
### Non-Standard Error Response & HTTP Status Codes
It also handles errors even if the standard error format was not sent by the server. This can be case if you bypass the ABP exception handling system and manually build the HTTP response on the server. In that case, **HTTP status codes** are considered.
The following HTTP Status Codes are pre-defined;
* **401**: Shows an error message like "*You should be authenticated (sign in) in order to perform this operation*". When the users click the OK button, they are redirected to the home page of the application to make them login again.
* **403**: Shows an error message like "*You are not allowed to perform this operation*".
* **404**: Shows an error message like "*The resource requested could not found on the server*".
* **Others**: Shows a generic error message like "*An error has occurred. Error detail not sent by server*".
All these messages are localized based on the current user's language.
### Manually Handling the Errors
Since `abp.ajax` returns a promise, you can always chain a `.cactch(...)` call to register a callback that is executed if the AJAX request fails.
**Example: Show an alert if the AJAX request fails**
````js
abp.ajax({
type: 'GET',
url: '/api/identity/users'
}).then(function(result){
console.log(result);
}).catch(function(){
alert("request failed :(");
});
````
While your callback is fired, ABP still handles the error itself. If you want to disable automatic error handling, pass `abpHandleError: false` the the `abp.ajax` options.
**Example: Disable the auto error handling**
````js
abp.ajax({
type: 'GET',
url: '/api/identity/users',
abpHandleError: false //DISABLE AUTO ERROR HANDLING
}).then(function(result){
console.log(result);
}).catch(function(){
alert("request failed :(");
});
````
If you set `abpHandleError: false` and don't catch the error yourself, then the error will be hidden and the request silently fails. `abp.ajax` still logs the error to the browser console (see the *Configuration* section to override it).
## Configuration
`abp.ajax` has a **global configuration** that you can customize based on your requirements.
### Default AJAX Options
`abp.ajax.defaultOpts` object is used to configure default options used while performing an AJAX call, unless you override them. Default value of this object is shown below:
````js
{
dataType: 'json',
type: 'POST',
contentType: 'application/json',
headers: {
'X-Requested-With': 'XMLHttpRequest'
}
}
````
So, if you want to change the default request type, you can do it as shown below:
````js
abp.ajax.defaultOpts.type = 'GET';
````
Write this code before all of your JavaScript code. You typically want to place such a configuration into a separate JavaScript file and add it to the layout using the global [bundle](../Bundling-Minification.md).
### Log/Show Errors
The following functions can be overridden to customize the logging and showing the error messages:
* `abp.ajax.logError` function logs errors using the [abp.log.error(...)](Logging.md) by default.
* `abp.ajax.showError` function shows the error message using the [abp.message.error(...)](Message.md) by default.
* `abp.ajax.handleErrorStatusCode` handles different HTTP status codes and shows different messages based on the code.
* `abp.ajax.handleAbpErrorResponse` handles the errors sent with the standard ABP error format.
* `abp.ajax.handleNonAbpErrorResponse` handles the non-standard error responses.
* `abp.ajax.handleUnAuthorizedRequest` handles responses with `401` status code and redirect users to the home page of the application.
**Example: Override the `logError` function**
````js
abp.ajax.logError = function(error) {
//...
}
````
### Other Options
* `abp.ajax.ajaxSendHandler` function is used to intercept the AJAX requests and add antiforgery token to the HTTP header. Note that this works for all AJAX requests, even if you don't use the `abp.ajax`.

3
docs/en/UI/AspNetCore/JavaScript-API/Dynamic-JavaScript-Client-Proxies.md

@ -0,0 +1,3 @@
# ASP.NET Core MVC / Razor Pages UI: Dynamic JavaScript Client Proxies
TODO

12
docs/en/UI/AspNetCore/JavaScript-API/Index.md

@ -1,23 +1,23 @@
# JavaScript API # JavaScript API
ABP provides some JavaScript APIs for ASP.NET Core MVC / Razor Pages applications. They can be used to perform some common application requirements in the client side. ABP provides a set of JavaScript APIs for ASP.NET Core MVC / Razor Pages applications. They can be used to perform common application requirements easily in the client side and integrate to the server side.
## APIs ## APIs
* abp.ajax * [abp.ajax](Ajax.md)
* abp.auth * abp.auth
* abp.currentUser * abp.currentUser
* abp.dom * abp.dom
* abp.event * abp.event
* abp.features * abp.features
* abp.localization * [abp.localization](Localization.md)
* abp.log * abp.log
* [abp.message](Message.md)
* abp.ModalManager * abp.ModalManager
* abp.notify * [abp.notify](Notify.md)
* abp.security * abp.security
* abp.setting * abp.setting
* abp.ui * abp.ui
* abp.utils * abp.utils
* abp.ResourceLoader * abp.ResourceLoader
* abp.WidgetManager * abp.WidgetManager
* Other APIs

143
docs/en/UI/AspNetCore/JavaScript-API/Localization.md

@ -0,0 +1,143 @@
# ASP.NET Core MVC / Razor Pages UI: JavaScript Localization API
Localization API allows you to reuse the server side localization resources in the client side.
> This document only explains the JavaScript API. See the [localization document](../../../Localization.md) to understand the ABP localization system.
## Basic Usage
`abp.localization.getResource(...)` function is used to get a localization resource:
````js
var testResource = abp.localization.getResource('Test');
````
Then you can localize a string based on this resource:
````js
var str = testResource('HelloWorld');
````
`abp.localization.localize(...)` function is a shortcut where you can both specify the text name and the resource name:
````js
var str = abp.localization.localize('HelloWorld', 'Test');
````
`HelloWorld` is the text to localize, where `Test` is the localization resource name here.
### Fallback Logic
If given texts was not localized, localization method returns the given key as the localization result.
### Default Localization Resource
If you don't specify the localization resource name, it uses the **default localization resource** defined on the `AbpLocalizationOptions` (see the [localization document](../../../Localization.md)).
**Example: Using the default localization resource**
````js
var str = abp.localization.localize('HelloWorld'); //uses the default resource
````
### Format Arguments
If your localized string contains arguments, like `Hello {0}, welcome!`, you can pass arguments to the localization methods. Examples:
````js
var testSource = abp.localization.getResource('Test');
var str1 = testSource('HelloWelcomeMessage', 'John');
var str2 = abp.localization.localize('HelloWelcomeMessage', 'Test', 'John');
````
Assuming the `HelloWelcomeMessage` is localized as `Hello {0}, welcome!`, both of the samples above produce the output `Hello John, welcome!`.
## Other Properties & Methods
### abp.localization.values
`abp.localization.values` property stores all the localization resources, keys and their values.
### abp.localization.isLocalized
Returns a boolean indicating that if the given text was localized or not.
**Example**
````js
abp.localization.isLocalized('ProductName', 'MyResource');
````
Returns `true` if the `ProductName` text was localized for the `MyResource` resource. Otherwise, returns `false`. You can leave the resource name empty to use the default localization resource.
### abp.localization.defaultResourceName
`abp.localization.defaultResourceName` can be set to change the default localization resource. You normally don't set this since the ABP Framework automatically sets is based on the server side configuration.
### abp.localization.currentCulture
`abp.localization.currentCulture` returns an object to get information about the **currently selected language**.
An example value of this object is shown below:
````js
{
"displayName": "English",
"englishName": "English",
"threeLetterIsoLanguageName": "eng",
"twoLetterIsoLanguageName": "en",
"isRightToLeft": false,
"cultureName": "en",
"name": "en",
"nativeName": "English",
"dateTimeFormat": {
"calendarAlgorithmType": "SolarCalendar",
"dateTimeFormatLong": "dddd, MMMM d, yyyy",
"shortDatePattern": "M/d/yyyy",
"fullDateTimePattern": "dddd, MMMM d, yyyy h:mm:ss tt",
"dateSeparator": "/",
"shortTimePattern": "h:mm tt",
"longTimePattern": "h:mm:ss tt"
}
}
````
### abp.localization.languages
Used to get list of all **available languages** in the application. An example value of this object is shown below:
````js
[
{
"cultureName": "en",
"uiCultureName": "en",
"displayName": "English",
"flagIcon": null
},
{
"cultureName": "fr",
"uiCultureName": "fr",
"displayName": "Français",
"flagIcon": null
},
{
"cultureName": "pt-BR",
"uiCultureName": "pt-BR",
"displayName": "Português",
"flagIcon": null
},
{
"cultureName": "tr",
"uiCultureName": "tr",
"displayName": "Türkçe",
"flagIcon": null
},
{
"cultureName": "zh-Hans",
"uiCultureName": "zh-Hans",
"displayName": "简体中文",
"flagIcon": null
}
]
````

3
docs/en/UI/AspNetCore/JavaScript-API/Logging.md

@ -0,0 +1,3 @@
# ASP.NET Core MVC / Razor Pages UI: JavaScript Logging API
TODO

128
docs/en/UI/AspNetCore/JavaScript-API/Message.md

@ -0,0 +1,128 @@
# ASP.NET Core MVC / Razor Pages UI: JavaScript Message API
Message API is used to show nice looking messages to the user as a blocking dialog. Message API is an abstraction provided by the ABP Framework and implemented using the [SweetAlert2](https://sweetalert2.github.io/) library by default.
## Quick Example
Use `abp.message.success(...)` function to show a success message:
````js
abp.message.success('Your changes have been successfully saved!', 'Congratulations');
````
It will show a dialog on the UI:
![js-message-success](../../../images/js-message-success.png)
## Informative Messages
There are four types of informative message functions:
* `abp.message.info(...)`
* `abp.message.success(...)`
* `abp.message.warn(...)`
* `abp.message.error(...)`
All these methods get two parameters:
* `message`: The message (`string`) to be shown.
* `title`: An optional (`string`) title.
**Example: Show an error message**
````js
abp.message.error('Your credit card number is not valid!');
````
![js-message-error](../../../images/js-message-error.png)
## Confirmation Message
`abp.message.confirm(...)` function can be used to get a confirmation from the user.
**Example**
Use the following code to get a confirmation result from the user:
````js
abp.message.confirm('Are you sure to delete the "admin" role?')
.then(function(confirmed){
if(confirmed){
console.log('TODO: deleting the role...');
}
});
````
The resulting UI will be like shown below:
![js-message-confirm](../../../images/js-message-confirm.png)
If user has clicked the `Yes` button, the `confirmed` argument in the `then` callback function will be `true`.
> "*Are you sure?*" is the default title (localized based on the current language) and you can override it.
### The Return Value
The return value of the `abp.message.confirm(...)` function is a promise, so you can chain a `then` callback as shown above.
### Parameters
`abp.message.confirm(...)` function has the following parameters:
* `message`: A message (string) to show to the user.
* `titleOrCallback` (optional): A title or a callback function. If you supply a string, it is shown as the title. If you supply a callback function (that gets a `bool` parameter) then it's called with the result.
* `callback` (optional): If you've passes a title to the second parameter, you can pass your callback function as the 3rd parameter.
Passing a callback function is an alternative to the `then` callback shown above.
**Example: Providing all the parameters and getting result with the callback function**
````js
abp.message.confirm(
'Are you sure to delete the "admin" role?',
'Be careful!',
function(confirmed){
if(confirmed){
console.log('TODO: deleting the role...');
}
});
````
## SweetAlert Configuration
The Message API is implemented using the [SweetAlert2](https://sweetalert2.github.io/) library by default. If you want to change its configuration, you can set the options in the `abp.libs.sweetAlert.config` object. The default configuration object is shown below:
````js
{
'default': {
},
info: {
icon: 'info'
},
success: {
icon: 'success'
},
warn: {
icon: 'warning'
},
error: {
icon: 'error'
},
confirm: {
icon: 'warning',
title: 'Are you sure?',
buttons: ['Cancel', 'Yes']
}
}
````
> "Are you sure?", "Cancel" and "Yes" texts are automatically localized based on the current language.
So, if you want to set the `warn` icon, you can set it like:
````js
abp.libs.sweetAlert.config.warn.icon = 'error';
````
See the [SweetAlert document](https://sweetalert2.github.io/) for all the configuration options.

45
docs/en/UI/AspNetCore/JavaScript-API/Notify.md

@ -0,0 +1,45 @@
# ASP.NET Core MVC / Razor Pages UI: JavaScript Notify API
Notify API is used to show toast style, auto disappearing UI notifications to the end user. It is implemented by the [Toastr](https://github.com/CodeSeven/toastr) library by default.
## Quick Example
Use `abp.notify.success(...)` function to show a success message:
````js
abp.notify.success(
'The product "Acme Atom Re-Arranger" has been successfully deleted.',
'Deleted the Product'
);
````
A notification message is shown at the bottom right of the page:
![js-message-success](../../../images/js-notify-success.png)
## Notification Types
There are four types of pre-defined notifications;
* `abp.notify.success(...)`
* `abp.notify.info(...)`
* `abp.notify.warn(...)`
* `abp.notify.error(...)`
All of the methods above gets the following parameters;
* `message`: A message (`string`) to show to the user.
* `title`: An optional title (`string`).
* `options`: Additional options to be passed to the underlying library, to the Toastr by default.
## Toastr Configuration
The notification API is implemented by the [Toastr](https://github.com/CodeSeven/toastr) library by default. You can see its own configuration options.
**Example: Show toast messages on the top right of the page**
````js
toastr.options.positionClass = 'toast-top-right';
````
> ABP sets this option to `toast-bottom-right` by default. You can override it just as shown above.

106
docs/en/UI/AspNetCore/Layout-Hooks.md

@ -1,3 +1,105 @@
# Layout Hooks # ASP.NET Core MVC / Razor Pages Layout Hooks
TODO ABP Framework theming system places the page layout into the [theme](Theming.md) NuGet packages. That means the final application doesn't include a `Layout.cshtml`, so you can't directly change the layout code to customize it.
You copy the theme code into your solution. In this case you are completely free to customize it. However, then you won't be able to get automatic updates of the theme (by upgrading the theme NuGet package).
ABP Framework provides different ways of [customizing the UI](Customization-User-Interface.md).
The **Layout Hook System** allows you to **add code** at some specific parts of the layout. All layouts of all themes should implement these hooks. Finally, you can add a **view component** into a hook point.
## Example: Add Google Analytics Script
Assume that you need to add the Google Analytics script to the layout (that will be available for all the pages). First, **create a view component** in your project:
![bookstore-google-analytics-view-component](../../images/bookstore-google-analytics-view-component.png)
**NotificationViewComponent.cs**
````csharp
public class GoogleAnalyticsViewComponent : AbpViewComponent
{
public IViewComponentResult Invoke()
{
return View("/Pages/Shared/Components/GoogleAnalytics/Default.cshtml");
}
}
````
**Default.cshtml**
````html
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-xxxxxx-1', 'auto');
ga('send', 'pageview');
</script>
````
Change `UA-xxxxxx-1` with your own code.
You can then add this component to any of the hook points in the `ConfigureServices` of your module:
````csharp
Configure<AbpLayoutHookOptions>(options =>
{
options.Add(
LayoutHooks.Head.Last, //The hook name
typeof(GoogleAnalyticsViewComponent) //The component to add
);
});
````
Now, the GA code will be inserted in the `head` of the page as the last item.
### Specifying the Layout
The configuration above adds the `GoogleAnalyticsViewComponent` to all layouts. You may want to only add to a specific layout:
````csharp
Configure<AbpLayoutHookOptions>(options =>
{
options.Add(
LayoutHooks.Head.Last,
typeof(GoogleAnalyticsViewComponent),
layout: StandardLayouts.Application //Set the layout to add
);
});
````
See the *Layouts* section below to learn more about the layout system.
## Layout Hook Points
There are some pre-defined layout hook points. The `LayoutHooks.Head.Last` used above was one of them. The standard hook points are;
* `LayoutHooks.Head.First`: Used to add a component as the first item in the HTML head tag.
* `LayoutHooks.Head.Last`: Used to add a component as the last item in the HTML head tag.
* `LayoutHooks.Body.First`: Used to add a component as the first item in the HTML body tag.
* `LayoutHooks.Body.Last`: Used to add a component as the last item in the HTML body tag.
* `LayoutHooks.PageContent.First`: Used to add a component just before the page content (the `@RenderBody()` in the layout).
* `LayoutHooks.PageContent.Last`: Used to add a component just after the page content (the `@RenderBody()` in the layout).
> You (or the modules you are using) can add **multiple items to the same hook point**. All of them will be added to the layout by the order they were added.
## Layouts
Layout system allows themes to define standard, named layouts and allows any page to select a proper layout for its purpose. There are three pre-defined layouts:
* "**Application**": The main (and the default) layout for an application. It typically contains header, menu (sidebar), footer, toolbar... etc.
* "**Account**": This layout is used by login, register and other similar pages. It is used for the pages under the `/Pages/Account` folder by default.
* "**Empty**": Empty and minimal layout.
These names are defined in the `StandardLayouts` class as constants. You can definitely create your own layouts, but these are the standard layout names and implemented by all the themes out of the box.
### Layout Location
You can find the layout files [here](https://github.com/abpframework/abp/tree/dev/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts) for the basic theme. You can take them as references to build your own layouts or you can override them if necessary.
## See Also
* [Customizing the User Interface](Customization-User-Interface.md)

3
docs/en/UI/Blazor/Localization.md

@ -0,0 +1,3 @@
# Blazor UI: Localization
Blazor applications can reuse the same `IStringLocalizer<T>` service that is explained in the [localization document](../../Localization.md). All the localization resources and texts available in the server side are usable in the Blazor application.

35
docs/en/docs-nav.json

@ -99,11 +99,15 @@
"path": "CLI.md" "path": "CLI.md"
}, },
{ {
"text": "Authentication", "text": "Authentication & Security",
"items": [ "items": [
{ {
"text": "Social/External Logins", "text": "Social/External Logins",
"path": "Authentication/Social-External-Logins.md" "path": "Authentication/Social-External-Logins.md"
},
{
"text": "CSRF/XSRF & Anti Forgery",
"path": "CSRF-Anti-Forgery.md"
} }
] ]
}, },
@ -432,10 +436,39 @@
"text": "Widgets", "text": "Widgets",
"path": "UI/AspNetCore/Widgets.md" "path": "UI/AspNetCore/Widgets.md"
}, },
{
"text": "Layout Hooks",
"path": "UI/AspNetCore/Layout-Hooks.md"
},
{ {
"text": "Theming", "text": "Theming",
"path": "UI/AspNetCore/Theming.md" "path": "UI/AspNetCore/Theming.md"
}, },
{
"text": "JavaScript API",
"items": [
{
"text": "Overall",
"path": "UI/AspNetCore/JavaScript-API/Index.md"
},
{
"text": "Localization",
"path": "UI/AspNetCore/JavaScript-API/Localization.md"
},
{
"text": "AJAX",
"path": "UI/AspNetCore/JavaScript-API/Ajax.md"
},
{
"text": "Message",
"path": "UI/AspNetCore/JavaScript-API/Message.md"
},
{
"text": "Notify",
"path": "UI/AspNetCore/JavaScript-API/Notify.md"
}
]
},
{ {
"text": "Customize/Extend the UI", "text": "Customize/Extend the UI",
"path": "UI/AspNetCore/Customization-User-Interface.md" "path": "UI/AspNetCore/Customization-User-Interface.md"

BIN
docs/en/images/ajax-error.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
docs/en/images/js-message-confirm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
docs/en/images/js-message-error.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/en/images/js-message-success.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
docs/en/images/js-notify-success.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

28
framework/Volo.Abp.sln

@ -319,33 +319,33 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Aliyun
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Aliyun.Tests", "test\Volo.Abp.BlobStoring.Aliyun.Tests\Volo.Abp.BlobStoring.Aliyun.Tests.csproj", "{8E49687A-E69F-49F2-8DB0-428D0883A937}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Aliyun.Tests", "test\Volo.Abp.BlobStoring.Aliyun.Tests\Volo.Abp.BlobStoring.Aliyun.Tests.csproj", "{8E49687A-E69F-49F2-8DB0-428D0883A937}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Aws", "src\Volo.Abp.BlobStoring.Aws\Volo.Abp.BlobStoring.Aws.csproj", "{50968CDE-1029-4051-B2E5-B69D0ECF2A18}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Aws", "src\Volo.Abp.BlobStoring.Aws\Volo.Abp.BlobStoring.Aws.csproj", "{50968CDE-1029-4051-B2E5-B69D0ECF2A18}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Aws.Tests", "test\Volo.Abp.BlobStoring.Aws.Tests\Volo.Abp.BlobStoring.Aws.Tests.csproj", "{2CD3B26A-CA81-4279-8D5D-6A594517BB3F}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Aws.Tests", "test\Volo.Abp.BlobStoring.Aws.Tests\Volo.Abp.BlobStoring.Aws.Tests.csproj", "{2CD3B26A-CA81-4279-8D5D-6A594517BB3F}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Kafka", "src\Volo.Abp.Kafka\Volo.Abp.Kafka.csproj", "{2A864049-9CD5-4493-8CDB-C408474D43D4}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Kafka", "src\Volo.Abp.Kafka\Volo.Abp.Kafka.csproj", "{2A864049-9CD5-4493-8CDB-C408474D43D4}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EventBus.Kafka", "src\Volo.Abp.EventBus.Kafka\Volo.Abp.EventBus.Kafka.csproj", "{C1D891B0-AE83-42CB-987D-425A2787DE78}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.EventBus.Kafka", "src\Volo.Abp.EventBus.Kafka\Volo.Abp.EventBus.Kafka.csproj", "{C1D891B0-AE83-42CB-987D-425A2787DE78}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.GlobalFeatures", "src\Volo.Abp.GlobalFeatures\Volo.Abp.GlobalFeatures.csproj", "{04F44063-C952-403A-815F-EFB778BDA125}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.GlobalFeatures", "src\Volo.Abp.GlobalFeatures\Volo.Abp.GlobalFeatures.csproj", "{04F44063-C952-403A-815F-EFB778BDA125}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.GlobalFeatures.Tests", "test\Volo.Abp.GlobalFeatures.Tests\Volo.Abp.GlobalFeatures.Tests.csproj", "{231F1581-AA21-44C3-BF27-51EB3AD5355C}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.GlobalFeatures.Tests", "test\Volo.Abp.GlobalFeatures.Tests\Volo.Abp.GlobalFeatures.Tests.csproj", "{231F1581-AA21-44C3-BF27-51EB3AD5355C}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Http.Client.IdentityModel.WebAssembly", "src\Volo.Abp.Http.Client.IdentityModel.WebAssembly\Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj", "{3D35A1E0-A9A1-404F-9B55-5F1A7EB6D5B8}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Http.Client.IdentityModel.WebAssembly", "src\Volo.Abp.Http.Client.IdentityModel.WebAssembly\Volo.Abp.Http.Client.IdentityModel.WebAssembly.csproj", "{3D35A1E0-A9A1-404F-9B55-5F1A7EB6D5B8}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.Client.Common", "src\Volo.Abp.AspNetCore.Mvc.Client.Common\Volo.Abp.AspNetCore.Mvc.Client.Common.csproj", "{8A22D962-016E-474A-8BB7-F831F0ABF3AC}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Mvc.Client.Common", "src\Volo.Abp.AspNetCore.Mvc.Client.Common\Volo.Abp.AspNetCore.Mvc.Client.Common.csproj", "{8A22D962-016E-474A-8BB7-F831F0ABF3AC}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Components.WebAssembly", "src\Volo.Abp.AspNetCore.Components.WebAssembly\Volo.Abp.AspNetCore.Components.WebAssembly.csproj", "{E1A62D10-F2FB-4040-BD60-11A3934058DF}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Components.WebAssembly", "src\Volo.Abp.AspNetCore.Components.WebAssembly\Volo.Abp.AspNetCore.Components.WebAssembly.csproj", "{E1A62D10-F2FB-4040-BD60-11A3934058DF}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlazoriseUI", "src\Volo.Abp.BlazoriseUI\Volo.Abp.BlazoriseUI.csproj", "{4EBDDB1B-D6C5-4FAE-B5A7-2171B18CDFA5}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlazoriseUI", "src\Volo.Abp.BlazoriseUI\Volo.Abp.BlazoriseUI.csproj", "{4EBDDB1B-D6C5-4FAE-B5A7-2171B18CDFA5}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme", "src\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.csproj", "{ABC27C10-C0FF-44CB-B4FF-A09C0B79F695}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme", "src\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.csproj", "{ABC27C10-C0FF-44CB-B4FF-A09C0B79F695}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Components.WebAssembly.Theming", "src\Volo.Abp.AspNetCore.Components.WebAssembly.Theming\Volo.Abp.AspNetCore.Components.WebAssembly.Theming.csproj", "{29CA7471-4E3E-4E75-8B33-001DDF682F01}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Components.WebAssembly.Theming", "src\Volo.Abp.AspNetCore.Components.WebAssembly.Theming\Volo.Abp.AspNetCore.Components.WebAssembly.Theming.csproj", "{29CA7471-4E3E-4E75-8B33-001DDF682F01}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Autofac.WebAssembly", "src\Volo.Abp.Autofac.WebAssembly\Volo.Abp.Autofac.WebAssembly.csproj", "{37F89B0B-1C6B-426F-A5EE-676D1956D9E9}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Autofac.WebAssembly", "src\Volo.Abp.Autofac.WebAssembly\Volo.Abp.Autofac.WebAssembly.csproj", "{37F89B0B-1C6B-426F-A5EE-676D1956D9E9}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Authentication.OpenIdConnect", "src\Volo.Abp.AspNetCore.Authentication.OpenIdConnect\Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj", "{DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Authentication.OpenIdConnect", "src\Volo.Abp.AspNetCore.Authentication.OpenIdConnect\Volo.Abp.AspNetCore.Authentication.OpenIdConnect.csproj", "{DEFE3DB2-EA4F-4F90-87FC-B25D64427BC5}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.ExceptionHandling", "src\Volo.Abp.ExceptionHandling\Volo.Abp.ExceptionHandling.csproj", "{B9D1ADCB-D552-4626-A1F1-78FF72C1E822}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.ExceptionHandling", "src\Volo.Abp.ExceptionHandling\Volo.Abp.ExceptionHandling.csproj", "{B9D1ADCB-D552-4626-A1F1-78FF72C1E822}"
EndProject EndProject

6
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/MainLayout.razor

@ -11,12 +11,14 @@
</button> </button>
<div class="collapse navbar-collapse" id="main-navbar-collapse"> <div class="collapse navbar-collapse" id="main-navbar-collapse">
<ul class="navbar-nav mx-auto"> <ul class="navbar-nav mx-auto">
<NavMenu/> <NavMenu />
</ul> </ul>
<NavToolbar/> <NavToolbar />
</div> </div>
</div> </div>
</nav> </nav>
<div class="container"> <div class="container">
@Body @Body
<UiMessageAlert />
</div> </div>

2
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/_Imports.razor

@ -8,3 +8,5 @@
@using Volo.Abp.AspNetCore.Components.WebAssembly @using Volo.Abp.AspNetCore.Components.WebAssembly
@using Blazorise @using Blazorise
@using Blazorise.DataGrid @using Blazorise.DataGrid
@using Volo.Abp.BlazoriseUI;
@using Volo.Abp.BlazoriseUI.Components;

1
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo.Abp.AspNetCore.Components.WebAssembly.csproj

@ -22,6 +22,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.1" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.1" />
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="3.1.6" /> <PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="3.1.6" />
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>

21
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs

@ -1,17 +1,18 @@
using System.Threading.Tasks; using System;
using System.Threading.Tasks;
namespace Volo.Abp.AspNetCore.Components.WebAssembly namespace Volo.Abp.AspNetCore.Components.WebAssembly
{ {
public interface IUiMessageService public interface IUiMessageService
{ {
Task InfoAsync(string message, string title = null); Task InfoAsync(string message, string title = null, Action<UiMessageOptions> options = null);
Task SuccessAsync(string message, string title = null); Task SuccessAsync(string message, string title = null, Action<UiMessageOptions> options = null);
Task WarnAsync(string message, string title = null); Task WarnAsync(string message, string title = null, Action<UiMessageOptions> options = null);
Task ErrorAsync(string message, string title = null); Task ErrorAsync(string message, string title = null, Action<UiMessageOptions> options = null);
Task<bool> ConfirmAsync(string message, string title = null); Task<bool> ConfirmAsync(string message, string title = null, Action<UiMessageOptions> options = null);
} }
} }

34
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiMessageService.cs

@ -0,0 +1,34 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.WebAssembly
{
public class NullUiMessageService : IUiMessageService, ITransientDependency
{
public Task InfoAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
return Task.CompletedTask;
}
public Task SuccessAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
return Task.CompletedTask;
}
public Task WarnAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
return Task.CompletedTask;
}
public Task ErrorAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
return Task.CompletedTask;
}
public Task<bool> ConfirmAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
return Task.FromResult(true);
}
}
}

35
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageEventArgs.cs

@ -0,0 +1,35 @@
using System;
using System.Threading.Tasks;
namespace Volo.Abp.AspNetCore.Components.WebAssembly
{
public class UiMessageEventArgs : EventArgs
{
public UiMessageEventArgs(UiMessageType messageType, string message, string title, UiMessageOptions options)
{
MessageType = messageType;
Message = message;
Title = title;
Options = options;
}
public UiMessageEventArgs(UiMessageType messageType, string message, string title, UiMessageOptions options, TaskCompletionSource<bool> callback)
{
MessageType = messageType;
Message = message;
Title = title;
Options = options;
Callback = callback;
}
public UiMessageType MessageType { get; set; }
public string Message { get; }
public string Title { get; }
public UiMessageOptions Options { get; }
public TaskCompletionSource<bool> Callback { get; }
}
}

53
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageOptions.cs

@ -0,0 +1,53 @@
namespace Volo.Abp.AspNetCore.Components.WebAssembly
{
/// <summary>
/// Options to override message dialog appearance.
/// </summary>
public class UiMessageOptions
{
/// <summary>
/// If true, the message dialogue will be centered on the screen.
/// </summary>
public bool CenterMessage { get; set; }
/// <summary>
/// If true, the message dialogue will show the large icon for the current message type.
/// </summary>
public bool ShowMessageIcon { get; set; }
/// <summary>
/// Overrides the build-in message icon.
/// </summary>
public object MessageIcon { get; set; }
/// <summary>
/// Custom text for the Ok button.
/// </summary>
public string OkButtonText { get; set; }
/// <summary>
/// Custom icon for the Ok button.
/// </summary>
public object OkButtonIcon { get; set; }
/// <summary>
/// Custom text for the Confirmation button.
/// </summary>
public string ConfirmButtonText { get; set; }
/// <summary>
/// Custom icon for the Confirmation button.
/// </summary>
public object ConfirmButtonIcon { get; set; }
/// <summary>
/// Custom text for the Cancel button.
/// </summary>
public string CancelButtonText { get; set; }
/// <summary>
/// Custom icon for the Cancel button.
/// </summary>
public object CancelButtonIcon { get; set; }
}
}

17
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs

@ -1,4 +1,5 @@
using System.Threading.Tasks; using System;
using System.Threading.Tasks;
using Microsoft.JSInterop; using Microsoft.JSInterop;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -14,27 +15,27 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
JsRuntime = jsRuntime; JsRuntime = jsRuntime;
} }
public async Task InfoAsync(string message, string title = null) public async Task InfoAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{ {
await JsRuntime.InvokeVoidAsync("alert", message); await JsRuntime.InvokeVoidAsync("alert", message);
} }
public async Task SuccessAsync(string message, string title = null) public async Task SuccessAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{ {
await JsRuntime.InvokeVoidAsync("alert", message); await JsRuntime.InvokeVoidAsync("alert", message);
} }
public async Task WarnAsync(string message, string title = null) public async Task WarnAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{ {
await JsRuntime.InvokeVoidAsync("alert", message); await JsRuntime.InvokeVoidAsync("alert", message);
} }
public async Task ErrorAsync(string message, string title = null) public async Task ErrorAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{ {
await JsRuntime.InvokeVoidAsync("alert", message); await JsRuntime.InvokeVoidAsync("alert", message);
} }
public async Task<bool> ConfirmAsync(string message, string title = null) public async Task<bool> ConfirmAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{ {
return await JsRuntime.InvokeAsync<bool>("confirm", message); return await JsRuntime.InvokeAsync<bool>("confirm", message);
} }

14
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageType.cs

@ -0,0 +1,14 @@
namespace Volo.Abp.AspNetCore.Components.WebAssembly
{
/// <summary>
/// Defines the possible ui message types with predefined actions.
/// </summary>
public enum UiMessageType
{
Info,
Success,
Warning,
Error,
Confirmation,
}
}

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/es.json

@ -0,0 +1,12 @@
{
"culture": "es",
"texts": {
"GivenTenantIsNotAvailable": "El inquilino {0} no está disponible",
"Tenant": "Inquilino",
"Switch": "cambiar",
"Name": "Nombre",
"SwitchTenant": "Cambiar inquilino",
"SwitchTenantHint": "Deje en blanco el campo nombre para cambiar el lado del host.",
"NotSelected": "No seleccionado"
}
}

14
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AntiForgery/AbpAntiForgeryManagerAspNetCoreExtensions.cs

@ -1,14 +0,0 @@
namespace Volo.Abp.AspNetCore.Mvc.AntiForgery
{
public static class AbpAntiForgeryManagerAspNetCoreExtensions
{
public static void SetCookie(this IAbpAntiForgeryManager manager)
{
manager.HttpContext.Response.Cookies.Append(
manager.Options.TokenCookie.Name,
manager.GenerateToken(),
manager.Options.TokenCookie.Build(manager.HttpContext)
);
}
}
}

8
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AntiForgery/AspNetCoreAbpAntiForgeryManager.cs

@ -7,9 +7,9 @@ namespace Volo.Abp.AspNetCore.Mvc.AntiForgery
{ {
public class AspNetCoreAbpAntiForgeryManager : IAbpAntiForgeryManager, ITransientDependency public class AspNetCoreAbpAntiForgeryManager : IAbpAntiForgeryManager, ITransientDependency
{ {
public AbpAntiForgeryOptions Options { get; } protected AbpAntiForgeryOptions Options { get; }
public HttpContext HttpContext => _httpContextAccessor.HttpContext; protected HttpContext HttpContext => _httpContextAccessor.HttpContext;
private readonly IAntiforgery _antiforgery; private readonly IAntiforgery _antiforgery;
private readonly IHttpContextAccessor _httpContextAccessor; private readonly IHttpContextAccessor _httpContextAccessor;
@ -24,7 +24,7 @@ namespace Volo.Abp.AspNetCore.Mvc.AntiForgery
Options = options.Value; Options = options.Value;
} }
public void SetCookie() public virtual void SetCookie()
{ {
HttpContext.Response.Cookies.Append( HttpContext.Response.Cookies.Append(
Options.TokenCookie.Name, Options.TokenCookie.Name,
@ -33,7 +33,7 @@ namespace Volo.Abp.AspNetCore.Mvc.AntiForgery
); );
} }
public string GenerateToken() public virtual string GenerateToken()
{ {
return _antiforgery.GetAndStoreTokens(_httpContextAccessor.HttpContext).RequestToken; return _antiforgery.GetAndStoreTokens(_httpContextAccessor.HttpContext).RequestToken;
} }

8
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AntiForgery/IAbpAntiForgeryManager.cs

@ -1,13 +1,7 @@
using Microsoft.AspNetCore.Http; namespace Volo.Abp.AspNetCore.Mvc.AntiForgery
namespace Volo.Abp.AspNetCore.Mvc.AntiForgery
{ {
public interface IAbpAntiForgeryManager public interface IAbpAntiForgeryManager
{ {
AbpAntiForgeryOptions Options { get; }
HttpContext HttpContext { get; }
void SetCookie(); void SetCookie();
string GenerateToken(); string GenerateToken();

33
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/AbpServiceConvention.cs

@ -7,24 +7,30 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ActionConstraints; using Microsoft.AspNetCore.Mvc.ActionConstraints;
using Microsoft.AspNetCore.Mvc.ApplicationModels; using Microsoft.AspNetCore.Mvc.ApplicationModels;
using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.GlobalFeatures; using Volo.Abp.GlobalFeatures;
using Volo.Abp.Http; using Volo.Abp.Http;
using Volo.Abp.Http.Modeling; using Volo.Abp.Http.Modeling;
using Volo.Abp.Http.ProxyScripting.Generators;
using Volo.Abp.Reflection; using Volo.Abp.Reflection;
namespace Volo.Abp.AspNetCore.Mvc.Conventions namespace Volo.Abp.AspNetCore.Mvc.Conventions
{ {
public class AbpServiceConvention : IAbpServiceConvention, ITransientDependency public class AbpServiceConvention : IAbpServiceConvention, ITransientDependency
{ {
public ILogger<AbpServiceConvention> Logger { get; set; }
private readonly AbpAspNetCoreMvcOptions _options; private readonly AbpAspNetCoreMvcOptions _options;
public AbpServiceConvention(IOptions<AbpAspNetCoreMvcOptions> options) public AbpServiceConvention(
IOptions<AbpAspNetCoreMvcOptions> options)
{ {
_options = options.Value; _options = options.Value;
Logger = NullLogger<AbpServiceConvention>.Instance;
} }
public void Apply(ApplicationModel application) public void Apply(ApplicationModel application)
@ -34,9 +40,12 @@ namespace Volo.Abp.AspNetCore.Mvc.Conventions
protected virtual void ApplyForControllers(ApplicationModel application) protected virtual void ApplyForControllers(ApplicationModel application)
{ {
RemoveDuplicateControllers(application);
foreach (var controller in application.Controllers) foreach (var controller in application.Controllers)
{ {
var controllerType = controller.ControllerType.AsType(); var controllerType = controller.ControllerType.AsType();
var configuration = GetControllerSettingOrNull(controllerType); var configuration = GetControllerSettingOrNull(controllerType);
//TODO: We can remove different behaviour for ImplementsRemoteServiceInterface. If there is a configuration, then it should be applied! //TODO: We can remove different behaviour for ImplementsRemoteServiceInterface. If there is a configuration, then it should be applied!
@ -59,6 +68,26 @@ namespace Volo.Abp.AspNetCore.Mvc.Conventions
} }
} }
protected virtual void RemoveDuplicateControllers(ApplicationModel application)
{
var derivedControllerModels = new List<ControllerModel>();
foreach (var controllerModel in application.Controllers)
{
var baseControllerTypes = controllerModel.ControllerType
.GetBaseClasses(typeof(Controller), includeObject: false)
.Where(t => !t.IsAbstract)
.ToArray();
if (baseControllerTypes.Length > 0)
{
derivedControllerModels.Add(controllerModel);
Logger.LogInformation($"Removing the controller {controllerModel.ControllerType.AssemblyQualifiedName} from the application model since it replaces the controller(s): {baseControllerTypes.Select(c => c.AssemblyQualifiedName).JoinAsString(", ")}");
}
}
application.Controllers.RemoveAll(derivedControllerModels);
}
protected virtual void ConfigureRemoteService(ControllerModel controller, [CanBeNull] ConventionalControllerSetting configuration) protected virtual void ConfigureRemoteService(ControllerModel controller, [CanBeNull] ConventionalControllerSetting configuration)
{ {
ConfigureApiExplorer(controller); ConfigureApiExplorer(controller);

4
framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs

@ -225,7 +225,7 @@ namespace Volo.Abp.BlazoriseUI
{ {
if (reference == null) if (reference == null)
{ {
reference = (TRef) ScopedServices.GetRequiredService(serviceType); reference = (TRef)ScopedServices.GetRequiredService(serviceType);
} }
return reference; return reference;
@ -266,7 +266,7 @@ namespace Volo.Abp.BlazoriseUI
var input = await CreateGetListInputAsync(); var input = await CreateGetListInputAsync();
var result = await AppService.GetListAsync(input); var result = await AppService.GetListAsync(input);
Entities = MapToListViewModel(result.Items); Entities = MapToListViewModel(result.Items);
TotalCount = (int?) result.TotalCount; TotalCount = (int?)result.TotalCount;
} }
private IReadOnlyList<TListViewModel> MapToListViewModel(IReadOnlyList<TGetListOutputDto> dtos) private IReadOnlyList<TListViewModel> MapToListViewModel(IReadOnlyList<TGetListOutputDto> dtos)

96
framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs

@ -0,0 +1,96 @@
using System;
using System.Threading.Tasks;
using Localization.Resources.AbpUi;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Volo.Abp.AspNetCore.Components.WebAssembly;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlazoriseUI
{
[Dependency(ReplaceServices = true)]
public class BlazoriseUiMessageService : IUiMessageService, IScopedDependency
{
/// <summary>
/// An event raised after the message is received. Used to notify the message dialog.
/// </summary>
public event EventHandler<UiMessageEventArgs> MessageReceived;
private readonly IStringLocalizer<AbpUiResource> localizer;
public ILogger<BlazoriseUiMessageService> Logger { get; set; }
public BlazoriseUiMessageService(
IStringLocalizer<AbpUiResource> localizer)
{
this.localizer = localizer;
Logger = NullLogger<BlazoriseUiMessageService>.Instance;
}
public Task InfoAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
var uiMessageOptions = CreateDefaultOptions();
options?.Invoke(uiMessageOptions);
MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Info, message, title, uiMessageOptions));
return Task.CompletedTask;
}
public Task SuccessAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
var uiMessageOptions = CreateDefaultOptions();
options?.Invoke(uiMessageOptions);
MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Success, message, title, uiMessageOptions));
return Task.CompletedTask;
}
public Task WarnAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
var uiMessageOptions = CreateDefaultOptions();
options?.Invoke(uiMessageOptions);
MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Warning, message, title, uiMessageOptions));
return Task.CompletedTask;
}
public Task ErrorAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
var uiMessageOptions = CreateDefaultOptions();
options?.Invoke(uiMessageOptions);
MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Error, message, title, uiMessageOptions));
return Task.CompletedTask;
}
public async Task<bool> ConfirmAsync(string message, string title = null, Action<UiMessageOptions> options = null)
{
var uiMessageOptions = CreateDefaultOptions();
options?.Invoke(uiMessageOptions);
var callback = new TaskCompletionSource<bool>();
MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Confirmation, message, title, uiMessageOptions));
return await callback.Task;
}
protected virtual UiMessageOptions CreateDefaultOptions()
{
return new UiMessageOptions
{
CenterMessage = true,
ShowMessageIcon = true,
OkButtonText = localizer["Ok"],
CancelButtonText = localizer["Cancel"],
ConfirmButtonText = localizer["Yes"],
};
}
}
}

48
framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor

@ -0,0 +1,48 @@
<Modal @ref="@ModalRef">
<ModalBackdrop />
<ModalContent Centered="@CenterMessage">
<ModalHeader>
<ModalTitle>
@Title
</ModalTitle>
</ModalHeader>
<ModalBody>
@if ( ShowMessageIcon )
{
<DisplayHeading Size="DisplayHeadingSize.Is2" Style="text-align:center;">
<Icon Name="@MessageIcon" Style="@MessageIconStyle" />
</DisplayHeading>
}
@Message
</ModalBody>
<ModalFooter>
@if ( IsConfirmation )
{
<Button Color="Color.Danger" Padding="Padding.Is2.OnX" Margin="Margin.IsAuto.FromRight" Clicked="@OnCancelClicked">
@if ( Options?.CancelButtonIcon != null )
{
<Icon Name="@Options.CancelButtonIcon" Margin="Margin.Is2.FromRight" />
}
@CancelButtonText
</Button>
<Button Color="Color.Primary" Padding="Padding.Is2.OnX" Clicked="@OnConfirmClicked">
@if ( Options?.ConfirmButtonIcon != null )
{
<Icon Name="@Options.ConfirmButtonIcon" Margin="Margin.Is2.FromRight" />
}
@ConfirmButtonText
</Button>
}
else
{
<Button Color="Color.Primary" Padding="Padding.Is2.OnX" Clicked="@OnOkClicked">
@if ( Options?.OkButtonIcon != null )
{
<Icon Name="@Options.OkButtonIcon" Margin="Margin.Is2.FromRight" />
}
@OkButtonText
</Button>
}
</ModalFooter>
</ModalContent>
</Modal>

140
framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs

@ -0,0 +1,140 @@
using System;
using System.Text;
using System.Threading.Tasks;
using Blazorise;
using Microsoft.AspNetCore.Components;
using Volo.Abp.AspNetCore.Components.WebAssembly;
namespace Volo.Abp.BlazoriseUI.Components
{
public partial class UiMessageAlert : ComponentBase, IDisposable
{
protected Modal ModalRef { get; set; }
protected virtual bool IsConfirmation
=> MessageType == UiMessageType.Confirmation;
protected virtual bool CenterMessage
=> Options?.CenterMessage ?? true;
protected virtual bool ShowMessageIcon
=> Options?.ShowMessageIcon ?? true;
protected virtual object MessageIcon => Options?.MessageIcon ?? MessageType switch
{
UiMessageType.Info => IconName.Info,
UiMessageType.Success => IconName.Check,
UiMessageType.Warning => IconName.Exclamation,
UiMessageType.Error => IconName.Times,
UiMessageType.Confirmation => IconName.QuestionCircle,
_ => null,
};
protected virtual string MessageIconColor => MessageType switch
{
// gets the color in the order of importance: Blazorise > Bootstrap > fallback color
UiMessageType.Info => "var(--b-theme-info, var(--info, #17a2b8))",
UiMessageType.Success => "var(--b-theme-success, var(--success, #28a745))",
UiMessageType.Warning => "var(--b-theme-warning, var(--warning, #ffc107))",
UiMessageType.Error => "var(--b-theme-danger, var(--danger, #dc3545))",
UiMessageType.Confirmation => "var(--b-theme-secondary, var(--secondary, #6c757d))",
_ => null,
};
protected virtual string MessageIconStyle
{
get
{
var sb = new StringBuilder();
sb.Append($"color:{MessageIconColor}");
return sb.ToString();
}
}
protected virtual string OkButtonText
=> Options?.OkButtonText ?? "OK";
protected virtual string ConfirmButtonText
=> Options?.ConfirmButtonText ?? "Confirm";
protected virtual string CancelButtonText
=> Options?.CancelButtonText ?? "Cancel";
[Parameter] public UiMessageType MessageType { get; set; }
[Parameter] public string Title { get; set; }
[Parameter] public string Message { get; set; }
[Parameter] public TaskCompletionSource<bool> Callback { get; set; }
[Parameter] public UiMessageOptions Options { get; set; }
[Parameter] public EventCallback Okayed { get; set; }
[Parameter] public EventCallback Confirmed { get; set; }
[Parameter] public EventCallback Canceled { get; set; }
[Inject] protected BlazoriseUiMessageService UiMessageService { get; set; }
protected override void OnInitialized()
{
base.OnInitialized();
UiMessageService.MessageReceived += OnMessageReceived;
}
private void OnMessageReceived(object sender, UiMessageEventArgs e)
{
MessageType = e.MessageType;
Message = e.Message;
Title = e.Title;
Options = e.Options;
Callback = e.Callback;
ModalRef.Show();
}
public void Dispose()
{
if (UiMessageService != null)
{
UiMessageService.MessageReceived -= OnMessageReceived;
}
}
protected Task OnOkClicked()
{
ModalRef.Hide();
return Okayed.InvokeAsync(null);
}
protected Task OnConfirmClicked()
{
ModalRef.Hide();
if (IsConfirmation && Callback != null)
{
Callback.SetResult(true);
}
return Confirmed.InvokeAsync(null);
}
protected Task OnCancelClicked()
{
ModalRef.Hide();
if (IsConfirmation && Callback != null)
{
Callback.SetResult(false);
}
return Canceled.InvokeAsync(null);
}
}
}

2
framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Razor"> <Project Sdk="Microsoft.NET.Sdk.Razor">
<Import Project="..\..\..\configureawait.props" /> <Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" /> <Import Project="..\..\..\common.props" />

2
framework/src/Volo.Abp.BlazoriseUI/_Imports.razor

@ -0,0 +1,2 @@
@using Microsoft.AspNetCore.Components.Web
@using Blazorise

20
framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpCachingStackExchangeRedisModule.cs

@ -14,17 +14,21 @@ namespace Volo.Abp.Caching.StackExchangeRedis
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
context.Services.AddStackExchangeRedisCache(options => var redisEnabled = configuration["Redis:IsEnabled"];
if (redisEnabled.IsNullOrEmpty() || bool.Parse(redisEnabled))
{ {
var redisConfiguration = configuration["Redis:Configuration"]; context.Services.AddStackExchangeRedisCache(options =>
if (!redisConfiguration.IsNullOrEmpty())
{ {
options.Configuration = configuration["Redis:Configuration"]; var redisConfiguration = configuration["Redis:Configuration"];
} if (!redisConfiguration.IsNullOrEmpty())
}); {
options.Configuration = redisConfiguration;
}
});
context.Services.Replace(ServiceDescriptor.Singleton<IDistributedCache, AbpRedisCache>()); context.Services.Replace(ServiceDescriptor.Singleton<IDistributedCache, AbpRedisCache>());
}
} }
} }
} }

26
framework/src/Volo.Abp.Core/System/AbpTypeExtensions.cs

@ -55,14 +55,28 @@ namespace System
return types.ToArray(); return types.ToArray();
} }
/// <summary>
/// Gets all base classes of this type.
/// </summary>
/// <param name="type">The type to get its base classes.</param>
/// <param name="stoppingType">A type to stop going to the deeper base classes. This type will be be included in the returned array</param>
/// <param name="includeObject">True, to include the standard <see cref="object"/> type in the returned array.</param>
public static Type[] GetBaseClasses([NotNull] this Type type, Type stoppingType, bool includeObject = true)
{
Check.NotNull(type, nameof(type));
var types = new List<Type>();
AddTypeAndBaseTypesRecursively(types, type.BaseType, includeObject, stoppingType);
return types.ToArray();
}
private static void AddTypeAndBaseTypesRecursively( private static void AddTypeAndBaseTypesRecursively(
[NotNull] List<Type> types, [NotNull] List<Type> types,
[CanBeNull] Type type, [CanBeNull] Type type,
bool includeObject) bool includeObject,
[CanBeNull] Type stoppingType = null)
{ {
Check.NotNull(types, nameof(types)); if (type == null || type == stoppingType)
if (type == null)
{ {
return; return;
} }
@ -72,7 +86,7 @@ namespace System
return; return;
} }
AddTypeAndBaseTypesRecursively(types, type.BaseType, includeObject); AddTypeAndBaseTypesRecursively(types, type.BaseType, includeObject, stoppingType);
types.Add(type); types.Add(type);
} }
} }

16
framework/src/Volo.Abp.Core/System/Collections/Generic/AbpCollectionExtensions.cs

@ -105,5 +105,19 @@ namespace System.Collections.Generic
return items; return items;
} }
/// <summary>
/// Removes all items from the collection those satisfy the given <paramref name="predicate"/>.
/// </summary>
/// <typeparam name="T">Type of the items in the collection</typeparam>
/// <param name="source">The collection</param>
/// <param name="items">Items to be removed from the list</param>
public static void RemoveAll<T>([NotNull] this ICollection<T> source, IEnumerable<T> items)
{
foreach (var item in items)
{
source.Remove(item);
}
}
} }
} }

6
framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/es.json

@ -0,0 +1,6 @@
{
"culture": "es",
"texts": {
"MaxResultCountExceededExceptionMessage": "{0} no puede tener más de {1}! Incremente {2}.{3} en el lado del servidor para obtener más resultados."
}
}

4
framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/es.json

@ -18,6 +18,8 @@
"Description:Abp.Mailing.Smtp.Password": "La contraseña del ususario asociado a las credenciales.", "Description:Abp.Mailing.Smtp.Password": "La contraseña del ususario asociado a las credenciales.",
"Description:Abp.Mailing.Smtp.Domain": "El dominio o equipo que valida las credenciales.", "Description:Abp.Mailing.Smtp.Domain": "El dominio o equipo que valida las credenciales.",
"Description:Abp.Mailing.Smtp.EnableSsl": "Si SmtpClient usa Secure Sockets Layer (SSL) para encriptar la conección.", "Description:Abp.Mailing.Smtp.EnableSsl": "Si SmtpClient usa Secure Sockets Layer (SSL) para encriptar la conección.",
"Description:Abp.Mailing.Smtp.UseDefaultCredentials": "Si las credenciales por defecto se envían con los request." "Description:Abp.Mailing.Smtp.UseDefaultCredentials": "Si las credenciales por defecto se envían con los request.",
"TextTemplate:StandardEmailTemplates.Layout": "Plantilla de email por defecto",
"TextTemplate:StandardEmailTemplates.Message": "Plantilla de mensaje simple para emails"
} }
} }

19
framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/es.json

@ -0,0 +1,19 @@
{
"culture": "es",
"texts": {
"DisplayName:Abp.Ldap.ServerHost": "Server host",
"Description:Abp.Ldap.ServerHost": "Servidor host",
"DisplayName:Abp.Ldap.ServerPort": "Server port",
"Description:Abp.Ldap.ServerPort": "Puerto del servidor host",
"DisplayName:Abp.Ldap.BaseDc": "Base domain component",
"Description:Abp.Ldap.BaseDc": "Dominio base",
"DisplayName:Abp.Ldap.UserName": "Username",
"Description:Abp.Ldap.UserName": "Nombre de usuario",
"DisplayName:Abp.Ldap.Password": "Password",
"Description:Abp.Ldap.Password": "Contraseña"
}
}

7
framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/es.json

@ -0,0 +1,7 @@
{
"culture": "es",
"texts": {
"DisplayName:Abp.Timing.Timezone": "Zona horaria",
"Description:Abp.Timing.Timezone": "Zona horaria de la Aplicacion"
}
}

10
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json

@ -4,6 +4,7 @@
"Languages": "Lenguajes", "Languages": "Lenguajes",
"AreYouSure": "¿Está seguro?", "AreYouSure": "¿Está seguro?",
"Cancel": "Cancelar", "Cancel": "Cancelar",
"Clear": "Limpiar",
"Yes": "Si", "Yes": "Si",
"No": "No", "No": "No",
"Ok": "Aceptar", "Ok": "Aceptar",
@ -34,6 +35,8 @@
"PagerInfoEmpty": "Mostrando desde 0 hasta 0 de 0 registros", "PagerInfoEmpty": "Mostrando desde 0 hasta 0 de 0 registros",
"PagerInfoFiltered": "(filtrado de un total de _MAX_ registros)", "PagerInfoFiltered": "(filtrado de un total de _MAX_ registros)",
"NoDataAvailableInDatatable": "No hay datos", "NoDataAvailableInDatatable": "No hay datos",
"Total": "total",
"Selected": "seleccionado",
"PagerShowMenuEntries": "Mostrar _MENU_ registros", "PagerShowMenuEntries": "Mostrar _MENU_ registros",
"DatatableActionDropdownDefaultText": "Acciones", "DatatableActionDropdownDefaultText": "Acciones",
"ChangePassword": "Cambiar contraseña", "ChangePassword": "Cambiar contraseña",
@ -41,6 +44,9 @@
"AreYouSureYouWantToCancelEditingWarningMessage": "Tiene cambios sin guardar.", "AreYouSureYouWantToCancelEditingWarningMessage": "Tiene cambios sin guardar.",
"GoHomePage": "Ir a la página principal", "GoHomePage": "Ir a la página principal",
"GoBack": "Atras", "GoBack": "Atras",
"Search": "Buscar" "Search": "Buscar",
"ItemWillBeDeletedMessageWithFormat": "Se eliminarán {0}!",
"ItemWillBeDeletedMessage": "Este itém será eliminado!",
"ManageYourAccount": "Administre su cuenta"
} }
} }

7
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/es.json

@ -0,0 +1,7 @@
{
"culture": "es",
"texts": {
"BirthDate": "Fecha de nacimiento",
"Value1": "Valor uno"
}
}

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json

@ -3,7 +3,7 @@
"name": "asp.net", "name": "asp.net",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.shared": "^3.2.0", "@abp/aspnetcore.mvc.ui.theme.shared": "^3.2.1",
"highlight.js": "^9.13.1" "highlight.js": "^9.13.1"
}, },
"devDependencies": {} "devDependencies": {}

224
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock

@ -2,30 +2,30 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.shared@^3.2.0": "@abp/aspnetcore.mvc.ui.theme.shared@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.1.tgz#b628602dca8d1809e32f423962cff56379a790b0"
integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== integrity sha512-aWZAaFnN9Ncyzy84wPTfUVtcyh98Sxu4m+fsGY5XtwA/nwDTDVtLMq81ueJWyFgN9GNk8+lT6VXfPDpA/MJo/A==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~3.2.0" "@abp/aspnetcore.mvc.ui" "~3.2.1"
"@abp/bootstrap" "~3.2.0" "@abp/bootstrap" "~3.2.1"
"@abp/bootstrap-datepicker" "~3.2.0" "@abp/bootstrap-datepicker" "~3.2.1"
"@abp/datatables.net-bs4" "~3.2.0" "@abp/datatables.net-bs4" "~3.2.1"
"@abp/font-awesome" "~3.2.0" "@abp/font-awesome" "~3.2.1"
"@abp/jquery-form" "~3.2.0" "@abp/jquery-form" "~3.2.1"
"@abp/jquery-validation-unobtrusive" "~3.2.0" "@abp/jquery-validation-unobtrusive" "~3.2.1"
"@abp/lodash" "~3.2.0" "@abp/lodash" "~3.2.1"
"@abp/luxon" "~3.2.0" "@abp/luxon" "~3.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~3.2.0" "@abp/malihu-custom-scrollbar-plugin" "~3.2.1"
"@abp/select2" "~3.2.0" "@abp/select2" "~3.2.1"
"@abp/sweetalert" "~3.2.0" "@abp/sweetalert" "~3.2.1"
"@abp/timeago" "~3.2.0" "@abp/timeago" "~3.2.1"
"@abp/toastr" "~3.2.0" "@abp/toastr" "~3.2.1"
"@abp/aspnetcore.mvc.ui@~3.2.0": "@abp/aspnetcore.mvc.ui@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.1.tgz#dc0d2c331bf09ef0f79cec739e0f64edb1105084"
integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== integrity sha512-Fpn16MeK71Uhw6636nlXCQaSwN9lN6QFUIGIICcWU+2eMA8fK4ZtavaYGG4mWqjkd4wzUHCz2AZbmbxK7bVnng==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -34,145 +34,145 @@
path "^0.12.7" path "^0.12.7"
rimraf "^3.0.2" rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.2.0": "@abp/bootstrap-datepicker@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.1.tgz#5cb75bc53fab86f7b28bfc5fbfcbf233432d75ca"
integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== integrity sha512-KzTDZTMd/TBaTDNuPF4+T+0zsmEimD2Uq8TlNw7knEEyo7a/lsfBNkBF9Xc8bjZcbC76BqajytsTzI1yftM4Uw==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.2.0": "@abp/bootstrap@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.1.tgz#9574414f1e170240dacdf78408af34830264db97"
integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== integrity sha512-gLIr4d5xfw5TSpSHIKr7oKznkdIbGhS+gtBitP1BFVLOU2h7/d6uTZoopC+JQU16DGvn8njo8W4DL7Amh9FOqQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
bootstrap "^4.5.0" bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2" bootstrap-v4-rtl "4.4.1-2"
"@abp/core@~3.2.0": "@abp/core@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.1.tgz#3c133f67394d716df3e49f1eeb934c586df755e5"
integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== integrity sha512-GbjrFO+oKl4JuZkYdeWtE+N837XRQr0hoX8O3pI1eAnuMku48QhGec2ZpSJuqG+c3wX6PHTZPIyHse4X+y6QgA==
dependencies: dependencies:
"@abp/utils" "^3.2.0" "@abp/utils" "^3.2.1"
"@abp/datatables.net-bs4@~3.2.0": "@abp/datatables.net-bs4@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.1.tgz#b008b2964472fd8c8286a7c4b1e903d93a52e760"
integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== integrity sha512-C/MmA6URugDD1tdUS6zS413ycHCjefeIG7nnJrtJmCZix7mfbdrp/Km/vKbE1KMSEYWis0w/SxIEy0kbkIW4OQ==
dependencies: dependencies:
"@abp/datatables.net" "~3.2.0" "@abp/datatables.net" "~3.2.1"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.2.0": "@abp/datatables.net@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.1.tgz#ba7d4c875ad2bc126687bc5d8e627f3c4d7fb2f4"
integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== integrity sha512-o8/K6RGnPkQUe5ClAxyHNBOevVBnb8qSM4NXRXR2AUtEvjal+4UL9QOf1LZ0zPv4OAjaaAiOAp9Pmbv4FWuZ8Q==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/font-awesome@~3.2.0": "@abp/font-awesome@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.1.tgz#d54a6d9627fdfeb6c615550f09241d0c805e3d39"
integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== integrity sha512-5BlAuIX4qFdf/mvycUAREmVQ8jg0tRtDnVXt0E8kUtzghhEGG91NfcZIaB4zaWAwuJSyqqjS/VJ/URy1g50NZQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.2.0": "@abp/jquery-form@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.1.tgz#9280b28e2103fc80b9124e3a53f2f0e03ac4bb46"
integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== integrity sha512-Dy0wTCcmWgygrru59VPnlVw7qLu8aLTZOTpMPbSva502O19O+H7FljF9r0J7eYgoO6pcTO4R1tE/Yib3DwIBFg==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.2.0": "@abp/jquery-validation-unobtrusive@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.1.tgz#8f0b54f0d39b00ab93638fe1537ae7bd77e3e78e"
integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== integrity sha512-mr/jZVm8QuYO1vWcNo3ytuQEeMBvjnMiTrvoUzY1OXX+HUFR6oi8FohXgxFUypElAqQ8jelV9K0qonX1zTQhcg==
dependencies: dependencies:
"@abp/jquery-validation" "~3.2.0" "@abp/jquery-validation" "~3.2.1"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.2.0": "@abp/jquery-validation@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.1.tgz#b5330eb404f357936d16f3dd81752076bfee963d"
integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== integrity sha512-nmubyFyA8TbLdsJt8MAspSRN4St8Xn8ICB8ancdiyxbS/6u9oeKlvP4++ZZ881NlFkPsyo7GkHjfl29pNzzzJA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~3.2.0": "@abp/jquery@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.1.tgz#c7ee0bbff0b480b8ed01f46d1ce07ebc8c35e4a2"
integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== integrity sha512-AvfQ9rnnb+pQUDuGnuhpCB+FzWz3EqDptoeiCDQjPXxGql3Wk5GWw6QzvuREOXcU4CoUyzigyDgnO5WaSlx8kQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
jquery "~3.5.1" jquery "~3.5.1"
"@abp/lodash@~3.2.0": "@abp/lodash@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.1.tgz#7abfe7d572eaa628c033a6d50520b8510ecce79a"
integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== integrity sha512-ZDte0vUfM1fBrs/mRq7yCuugtYZKoP/6pOEebDOMdM1GztAEKicq8s7EXxwbqE4+kjxqeHzReh7ZwCtFAf/Zew==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/luxon@~3.2.0": "@abp/luxon@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.1.tgz#ad3473f24dbacd4d1bc15a07ee75cc1db7f1df6c"
integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== integrity sha512-WZgAMHNx1beQSA48ZJ2x2g408iBXBUvKwBwAFJqbhNhEsO95tutO80j1LNHYvXCbrAatoz6K6IDRXDXV1U3zyg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.2.0": "@abp/malihu-custom-scrollbar-plugin@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.1.tgz#f4a19c6de14c7193eaf6c55c429580dcbcfe3965"
integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== integrity sha512-pu8Tuh67ruG1fLEud1eves/eiBCiuowL+LVLyW+iX1bByfVlOB40nMQ7UCMQ6Jvv31pTEK2dfQ/n8K3W/pFiWQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~3.2.0": "@abp/select2@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.1.tgz#8a04a6f5f10cc4a48a3da37bbc38ff655e626ddf"
integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== integrity sha512-i/euJ+kTHakwCI3Hf9+NhiQG+MYlU0iwp6GRmS2uHqgkMd2gVjnBq+elA2jsi50PXpxowv4vdBCNHcicI58W2w==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert@~3.2.0": "@abp/sweetalert@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.1.tgz#be99820491499fea06259fbc584e799a51cbabf3"
integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== integrity sha512-If5UJQVJ05aEbxPHrwRpuEzCT5ygOHmPzpBblpzSo5XxNNDGGlumnwYmtbXBSXutXrIR0b5//Bo1EgBVtmJHOg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
sweetalert "^2.1.2" sweetalert "^2.1.2"
"@abp/timeago@~3.2.0": "@abp/timeago@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.1.tgz#4e5e6c76d5440de65646a076ce1a9d7225882243"
integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== integrity sha512-4WLWoCYiSg5zYPcogV47TXA+YomDHHY0YfHHWmr6TP2bHd5ghsnMqnnkt58nUN9Psd77teo+Mo9jgR0h2IxRwQ==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/toastr@~3.2.0": "@abp/toastr@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.1.tgz#d35b44234ca6cbd5da6cc5f65d15e827bd7970dc"
integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== integrity sha512-nBmWGL49psSF2tcNnR6PGBcfFAxo2u5HHNRzv2c2z46ZEGFa5DjuY46KZC24jMWY+yprINQewhKTmQUqJvaHqA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/utils@^3.2.0": "@abp/utils@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.1.tgz#960a0bbdfb781bbd6fb05e80bba2b9d95f2ae44c"
integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== integrity sha512-bqYa1VIi1tZXCUbP2Z1WlcgPD4/wjhDVM1jiAN9UzDls1K3u+e2LyR4gLoN39WW1ULjCIhyzEAw/JgTcMmpUBw==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"

4
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json

@ -3,8 +3,8 @@
"name": "asp.net", "name": "asp.net",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0", "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.1",
"@abp/prismjs": "^3.2.0" "@abp/prismjs": "^3.2.1"
}, },
"devDependencies": {} "devDependencies": {}
} }

256
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": "@abp/aspnetcore.mvc.ui.theme.basic@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.1.tgz#d8f9af85b6114d35bba5942e303b3a4b89c8cd75"
integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== integrity sha512-utHlyw/xbtDqqA0ETrYTxZ8ZO49tI6FP3BAvRdevbhozdG8/el6BWpifZysKJv2VIm6d5P7DXD3uymCd5iX6EA==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": "@abp/aspnetcore.mvc.ui.theme.shared@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.1.tgz#b628602dca8d1809e32f423962cff56379a790b0"
integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== integrity sha512-aWZAaFnN9Ncyzy84wPTfUVtcyh98Sxu4m+fsGY5XtwA/nwDTDVtLMq81ueJWyFgN9GNk8+lT6VXfPDpA/MJo/A==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~3.2.0" "@abp/aspnetcore.mvc.ui" "~3.2.1"
"@abp/bootstrap" "~3.2.0" "@abp/bootstrap" "~3.2.1"
"@abp/bootstrap-datepicker" "~3.2.0" "@abp/bootstrap-datepicker" "~3.2.1"
"@abp/datatables.net-bs4" "~3.2.0" "@abp/datatables.net-bs4" "~3.2.1"
"@abp/font-awesome" "~3.2.0" "@abp/font-awesome" "~3.2.1"
"@abp/jquery-form" "~3.2.0" "@abp/jquery-form" "~3.2.1"
"@abp/jquery-validation-unobtrusive" "~3.2.0" "@abp/jquery-validation-unobtrusive" "~3.2.1"
"@abp/lodash" "~3.2.0" "@abp/lodash" "~3.2.1"
"@abp/luxon" "~3.2.0" "@abp/luxon" "~3.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~3.2.0" "@abp/malihu-custom-scrollbar-plugin" "~3.2.1"
"@abp/select2" "~3.2.0" "@abp/select2" "~3.2.1"
"@abp/sweetalert" "~3.2.0" "@abp/sweetalert" "~3.2.1"
"@abp/timeago" "~3.2.0" "@abp/timeago" "~3.2.1"
"@abp/toastr" "~3.2.0" "@abp/toastr" "~3.2.1"
"@abp/aspnetcore.mvc.ui@~3.2.0": "@abp/aspnetcore.mvc.ui@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.1.tgz#dc0d2c331bf09ef0f79cec739e0f64edb1105084"
integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== integrity sha512-Fpn16MeK71Uhw6636nlXCQaSwN9lN6QFUIGIICcWU+2eMA8fK4ZtavaYGG4mWqjkd4wzUHCz2AZbmbxK7bVnng==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -41,162 +41,162 @@
path "^0.12.7" path "^0.12.7"
rimraf "^3.0.2" rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.2.0": "@abp/bootstrap-datepicker@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.1.tgz#5cb75bc53fab86f7b28bfc5fbfcbf233432d75ca"
integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== integrity sha512-KzTDZTMd/TBaTDNuPF4+T+0zsmEimD2Uq8TlNw7knEEyo7a/lsfBNkBF9Xc8bjZcbC76BqajytsTzI1yftM4Uw==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.2.0": "@abp/bootstrap@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.1.tgz#9574414f1e170240dacdf78408af34830264db97"
integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== integrity sha512-gLIr4d5xfw5TSpSHIKr7oKznkdIbGhS+gtBitP1BFVLOU2h7/d6uTZoopC+JQU16DGvn8njo8W4DL7Amh9FOqQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
bootstrap "^4.5.0" bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2" bootstrap-v4-rtl "4.4.1-2"
"@abp/clipboard@~3.2.0": "@abp/clipboard@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.0.tgz#9c9f95c40639cabe89e6bc86ee0f33c853321225" resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.1.tgz#ffb57db0e73ae7c96df78dc7b739e436c9654ae0"
integrity sha512-WGonC5Hp4FCUBxevIt180QWIqOri0eO//mlRLBqj7gvo7H6zt5f4t90XKF24ZYWXjx7bCbIQQFt5t5ByeqdcJg== integrity sha512-iLCMV8JVkvdDzWf83UlkSIuU4Tiz+/wdGjiCt7lQp538fCYO7EAqurfWwMbb1Kaz0CRFzt/+AbDrXw004AND2Q==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
clipboard "^2.0.6" clipboard "^2.0.6"
"@abp/core@~3.2.0": "@abp/core@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.1.tgz#3c133f67394d716df3e49f1eeb934c586df755e5"
integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== integrity sha512-GbjrFO+oKl4JuZkYdeWtE+N837XRQr0hoX8O3pI1eAnuMku48QhGec2ZpSJuqG+c3wX6PHTZPIyHse4X+y6QgA==
dependencies: dependencies:
"@abp/utils" "^3.2.0" "@abp/utils" "^3.2.1"
"@abp/datatables.net-bs4@~3.2.0": "@abp/datatables.net-bs4@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.1.tgz#b008b2964472fd8c8286a7c4b1e903d93a52e760"
integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== integrity sha512-C/MmA6URugDD1tdUS6zS413ycHCjefeIG7nnJrtJmCZix7mfbdrp/Km/vKbE1KMSEYWis0w/SxIEy0kbkIW4OQ==
dependencies: dependencies:
"@abp/datatables.net" "~3.2.0" "@abp/datatables.net" "~3.2.1"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.2.0": "@abp/datatables.net@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.1.tgz#ba7d4c875ad2bc126687bc5d8e627f3c4d7fb2f4"
integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== integrity sha512-o8/K6RGnPkQUe5ClAxyHNBOevVBnb8qSM4NXRXR2AUtEvjal+4UL9QOf1LZ0zPv4OAjaaAiOAp9Pmbv4FWuZ8Q==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/font-awesome@~3.2.0": "@abp/font-awesome@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.1.tgz#d54a6d9627fdfeb6c615550f09241d0c805e3d39"
integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== integrity sha512-5BlAuIX4qFdf/mvycUAREmVQ8jg0tRtDnVXt0E8kUtzghhEGG91NfcZIaB4zaWAwuJSyqqjS/VJ/URy1g50NZQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.2.0": "@abp/jquery-form@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.1.tgz#9280b28e2103fc80b9124e3a53f2f0e03ac4bb46"
integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== integrity sha512-Dy0wTCcmWgygrru59VPnlVw7qLu8aLTZOTpMPbSva502O19O+H7FljF9r0J7eYgoO6pcTO4R1tE/Yib3DwIBFg==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.2.0": "@abp/jquery-validation-unobtrusive@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.1.tgz#8f0b54f0d39b00ab93638fe1537ae7bd77e3e78e"
integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== integrity sha512-mr/jZVm8QuYO1vWcNo3ytuQEeMBvjnMiTrvoUzY1OXX+HUFR6oi8FohXgxFUypElAqQ8jelV9K0qonX1zTQhcg==
dependencies: dependencies:
"@abp/jquery-validation" "~3.2.0" "@abp/jquery-validation" "~3.2.1"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.2.0": "@abp/jquery-validation@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.1.tgz#b5330eb404f357936d16f3dd81752076bfee963d"
integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== integrity sha512-nmubyFyA8TbLdsJt8MAspSRN4St8Xn8ICB8ancdiyxbS/6u9oeKlvP4++ZZ881NlFkPsyo7GkHjfl29pNzzzJA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~3.2.0": "@abp/jquery@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.1.tgz#c7ee0bbff0b480b8ed01f46d1ce07ebc8c35e4a2"
integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== integrity sha512-AvfQ9rnnb+pQUDuGnuhpCB+FzWz3EqDptoeiCDQjPXxGql3Wk5GWw6QzvuREOXcU4CoUyzigyDgnO5WaSlx8kQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
jquery "~3.5.1" jquery "~3.5.1"
"@abp/lodash@~3.2.0": "@abp/lodash@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.1.tgz#7abfe7d572eaa628c033a6d50520b8510ecce79a"
integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== integrity sha512-ZDte0vUfM1fBrs/mRq7yCuugtYZKoP/6pOEebDOMdM1GztAEKicq8s7EXxwbqE4+kjxqeHzReh7ZwCtFAf/Zew==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/luxon@~3.2.0": "@abp/luxon@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.1.tgz#ad3473f24dbacd4d1bc15a07ee75cc1db7f1df6c"
integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== integrity sha512-WZgAMHNx1beQSA48ZJ2x2g408iBXBUvKwBwAFJqbhNhEsO95tutO80j1LNHYvXCbrAatoz6K6IDRXDXV1U3zyg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.2.0": "@abp/malihu-custom-scrollbar-plugin@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.1.tgz#f4a19c6de14c7193eaf6c55c429580dcbcfe3965"
integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== integrity sha512-pu8Tuh67ruG1fLEud1eves/eiBCiuowL+LVLyW+iX1bByfVlOB40nMQ7UCMQ6Jvv31pTEK2dfQ/n8K3W/pFiWQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/prismjs@^3.2.0": "@abp/prismjs@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.0.tgz#11c7c3023f11097a3eb26d8a0c04f7fa39d9531b" resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.1.tgz#8f8ef367c9a10c3ec871d721055fbed4a8ec867a"
integrity sha512-OafE/K8rC7popNQDh1J97AtPuxVeAFWh/msfHE3K5nmdYABpl8U7190ITw5COcVjjFLCEONpkkhfN/9ZdAQ8fQ== integrity sha512-+wcKmi/F66qGRmTk+oYgYmJo+b9kQvJ+BG/+vIsN+n3Dzb/sjaDmc18pMFhEKWy7P/Yq28NxZdK+qO1LgzTktg==
dependencies: dependencies:
"@abp/clipboard" "~3.2.0" "@abp/clipboard" "~3.2.1"
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
prismjs "^1.20.0" prismjs "^1.20.0"
"@abp/select2@~3.2.0": "@abp/select2@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.1.tgz#8a04a6f5f10cc4a48a3da37bbc38ff655e626ddf"
integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== integrity sha512-i/euJ+kTHakwCI3Hf9+NhiQG+MYlU0iwp6GRmS2uHqgkMd2gVjnBq+elA2jsi50PXpxowv4vdBCNHcicI58W2w==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert@~3.2.0": "@abp/sweetalert@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.1.tgz#be99820491499fea06259fbc584e799a51cbabf3"
integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== integrity sha512-If5UJQVJ05aEbxPHrwRpuEzCT5ygOHmPzpBblpzSo5XxNNDGGlumnwYmtbXBSXutXrIR0b5//Bo1EgBVtmJHOg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
sweetalert "^2.1.2" sweetalert "^2.1.2"
"@abp/timeago@~3.2.0": "@abp/timeago@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.1.tgz#4e5e6c76d5440de65646a076ce1a9d7225882243"
integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== integrity sha512-4WLWoCYiSg5zYPcogV47TXA+YomDHHY0YfHHWmr6TP2bHd5ghsnMqnnkt58nUN9Psd77teo+Mo9jgR0h2IxRwQ==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/toastr@~3.2.0": "@abp/toastr@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.1.tgz#d35b44234ca6cbd5da6cc5f65d15e827bd7970dc"
integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== integrity sha512-nBmWGL49psSF2tcNnR6PGBcfFAxo2u5HHNRzv2c2z46ZEGFa5DjuY46KZC24jMWY+yprINQewhKTmQUqJvaHqA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/utils@^3.2.0": "@abp/utils@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.1.tgz#960a0bbdfb781bbd6fb05e80bba2b9d95f2ae44c"
integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== integrity sha512-bqYa1VIi1tZXCUbP2Z1WlcgPD4/wjhDVM1jiAN9UzDls1K3u+e2LyR4gLoN39WW1ULjCIhyzEAw/JgTcMmpUBw==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"

10
framework/test/Volo.Abp.Core.Tests/System/AbpTypeExtensions_Tests.cs

@ -6,7 +6,7 @@ namespace System
public class AbpTypeExtensions_Tests public class AbpTypeExtensions_Tests
{ {
[Fact] [Fact]
public void GetBaseClasses() public void GetBaseClasses_Excluding_Object()
{ {
var baseClasses = typeof(MyClass).GetBaseClasses(includeObject: false); var baseClasses = typeof(MyClass).GetBaseClasses(includeObject: false);
baseClasses.Length.ShouldBe(2); baseClasses.Length.ShouldBe(2);
@ -14,6 +14,14 @@ namespace System
baseClasses[1].ShouldBe(typeof(MyBaseClass2)); baseClasses[1].ShouldBe(typeof(MyBaseClass2));
} }
[Fact]
public void GetBaseClasses_With_StoppingType()
{
var baseClasses = typeof(MyClass).GetBaseClasses(typeof(MyBaseClass1));
baseClasses.Length.ShouldBe(1);
baseClasses[0].ShouldBe(typeof(MyBaseClass2));
}
public abstract class MyBaseClass1 public abstract class MyBaseClass1
{ {

6
framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/es.json

@ -0,0 +1,6 @@
{
"culture": "es",
"texts": {
"hello": "Hola"
}
}

4
modules/blogging/app/Volo.BloggingTestApp/package.json

@ -3,7 +3,7 @@
"name": "volo.blogtestapp", "name": "volo.blogtestapp",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0", "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.1",
"@abp/blogging": "^3.2.0" "@abp/blogging": "^3.2.1"
} }
} }

328
modules/blogging/app/Volo.BloggingTestApp/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": "@abp/aspnetcore.mvc.ui.theme.basic@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.1.tgz#d8f9af85b6114d35bba5942e303b3a4b89c8cd75"
integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== integrity sha512-utHlyw/xbtDqqA0ETrYTxZ8ZO49tI6FP3BAvRdevbhozdG8/el6BWpifZysKJv2VIm6d5P7DXD3uymCd5iX6EA==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": "@abp/aspnetcore.mvc.ui.theme.shared@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.1.tgz#b628602dca8d1809e32f423962cff56379a790b0"
integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== integrity sha512-aWZAaFnN9Ncyzy84wPTfUVtcyh98Sxu4m+fsGY5XtwA/nwDTDVtLMq81ueJWyFgN9GNk8+lT6VXfPDpA/MJo/A==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~3.2.0" "@abp/aspnetcore.mvc.ui" "~3.2.1"
"@abp/bootstrap" "~3.2.0" "@abp/bootstrap" "~3.2.1"
"@abp/bootstrap-datepicker" "~3.2.0" "@abp/bootstrap-datepicker" "~3.2.1"
"@abp/datatables.net-bs4" "~3.2.0" "@abp/datatables.net-bs4" "~3.2.1"
"@abp/font-awesome" "~3.2.0" "@abp/font-awesome" "~3.2.1"
"@abp/jquery-form" "~3.2.0" "@abp/jquery-form" "~3.2.1"
"@abp/jquery-validation-unobtrusive" "~3.2.0" "@abp/jquery-validation-unobtrusive" "~3.2.1"
"@abp/lodash" "~3.2.0" "@abp/lodash" "~3.2.1"
"@abp/luxon" "~3.2.0" "@abp/luxon" "~3.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~3.2.0" "@abp/malihu-custom-scrollbar-plugin" "~3.2.1"
"@abp/select2" "~3.2.0" "@abp/select2" "~3.2.1"
"@abp/sweetalert" "~3.2.0" "@abp/sweetalert" "~3.2.1"
"@abp/timeago" "~3.2.0" "@abp/timeago" "~3.2.1"
"@abp/toastr" "~3.2.0" "@abp/toastr" "~3.2.1"
"@abp/aspnetcore.mvc.ui@~3.2.0": "@abp/aspnetcore.mvc.ui@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.1.tgz#dc0d2c331bf09ef0f79cec739e0f64edb1105084"
integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== integrity sha512-Fpn16MeK71Uhw6636nlXCQaSwN9lN6QFUIGIICcWU+2eMA8fK4ZtavaYGG4mWqjkd4wzUHCz2AZbmbxK7bVnng==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -41,214 +41,214 @@
path "^0.12.7" path "^0.12.7"
rimraf "^3.0.2" rimraf "^3.0.2"
"@abp/blogging@^3.2.0": "@abp/blogging@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.2.0.tgz#a963c128fe92666a1b0f9059c2e9fb6519545ad3" resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-3.2.1.tgz#edd07431dff8faa69d79b2ecd672c646de27d561"
integrity sha512-+moP5svgo7eo3vegepH9Dff66kXLojtDN/5iLXZeNQmf+7KFmB7eATzIMJgWQzgRm99lBRERiGpQcAtWgpxpVA== integrity sha512-4Rt43AvAIvXDRobpji1k+b8Imf2CSpQZf8Haz9K9E+MY4QHre4rrvL8U03kwwwvO5MI/9GXUoBMIdGdxtsrqqQ==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.1"
"@abp/owl.carousel" "~3.2.0" "@abp/owl.carousel" "~3.2.1"
"@abp/prismjs" "~3.2.0" "@abp/prismjs" "~3.2.1"
"@abp/tui-editor" "~3.2.0" "@abp/tui-editor" "~3.2.1"
"@abp/bootstrap-datepicker@~3.2.0": "@abp/bootstrap-datepicker@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.1.tgz#5cb75bc53fab86f7b28bfc5fbfcbf233432d75ca"
integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== integrity sha512-KzTDZTMd/TBaTDNuPF4+T+0zsmEimD2Uq8TlNw7knEEyo7a/lsfBNkBF9Xc8bjZcbC76BqajytsTzI1yftM4Uw==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.2.0": "@abp/bootstrap@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.1.tgz#9574414f1e170240dacdf78408af34830264db97"
integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== integrity sha512-gLIr4d5xfw5TSpSHIKr7oKznkdIbGhS+gtBitP1BFVLOU2h7/d6uTZoopC+JQU16DGvn8njo8W4DL7Amh9FOqQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
bootstrap "^4.5.0" bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2" bootstrap-v4-rtl "4.4.1-2"
"@abp/clipboard@~3.2.0": "@abp/clipboard@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.0.tgz#9c9f95c40639cabe89e6bc86ee0f33c853321225" resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.1.tgz#ffb57db0e73ae7c96df78dc7b739e436c9654ae0"
integrity sha512-WGonC5Hp4FCUBxevIt180QWIqOri0eO//mlRLBqj7gvo7H6zt5f4t90XKF24ZYWXjx7bCbIQQFt5t5ByeqdcJg== integrity sha512-iLCMV8JVkvdDzWf83UlkSIuU4Tiz+/wdGjiCt7lQp538fCYO7EAqurfWwMbb1Kaz0CRFzt/+AbDrXw004AND2Q==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
clipboard "^2.0.6" clipboard "^2.0.6"
"@abp/codemirror@~3.2.0": "@abp/codemirror@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.2.0.tgz#b9604d31591522b3c3c140830444422f9742c9d7" resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-3.2.1.tgz#093bf88d74a4ec2111afa84d47f643fee2e210dd"
integrity sha512-Qv/+g6NSsv5M3puE3MgF17JPvWytkG4PDMyEX8cf8DOe2FCb3p44EbFyN6sqMY5l621S7fhjIRJfMAZ9I5FcZQ== integrity sha512-4Qe2/kDqlwlIlyrUVzirYkX713qZRG0Sn1pMSnXIb6JxJYFIxrxt8IxGy0o3IsL2xU3H2mnRTXSA0rFbQvVxRQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
codemirror "^5.54.0" codemirror "^5.54.0"
"@abp/core@~3.2.0": "@abp/core@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.1.tgz#3c133f67394d716df3e49f1eeb934c586df755e5"
integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== integrity sha512-GbjrFO+oKl4JuZkYdeWtE+N837XRQr0hoX8O3pI1eAnuMku48QhGec2ZpSJuqG+c3wX6PHTZPIyHse4X+y6QgA==
dependencies: dependencies:
"@abp/utils" "^3.2.0" "@abp/utils" "^3.2.1"
"@abp/datatables.net-bs4@~3.2.0": "@abp/datatables.net-bs4@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.1.tgz#b008b2964472fd8c8286a7c4b1e903d93a52e760"
integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== integrity sha512-C/MmA6URugDD1tdUS6zS413ycHCjefeIG7nnJrtJmCZix7mfbdrp/Km/vKbE1KMSEYWis0w/SxIEy0kbkIW4OQ==
dependencies: dependencies:
"@abp/datatables.net" "~3.2.0" "@abp/datatables.net" "~3.2.1"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.2.0": "@abp/datatables.net@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.1.tgz#ba7d4c875ad2bc126687bc5d8e627f3c4d7fb2f4"
integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== integrity sha512-o8/K6RGnPkQUe5ClAxyHNBOevVBnb8qSM4NXRXR2AUtEvjal+4UL9QOf1LZ0zPv4OAjaaAiOAp9Pmbv4FWuZ8Q==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/font-awesome@~3.2.0": "@abp/font-awesome@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.1.tgz#d54a6d9627fdfeb6c615550f09241d0c805e3d39"
integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== integrity sha512-5BlAuIX4qFdf/mvycUAREmVQ8jg0tRtDnVXt0E8kUtzghhEGG91NfcZIaB4zaWAwuJSyqqjS/VJ/URy1g50NZQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/highlight.js@~3.2.0": "@abp/highlight.js@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.2.0.tgz#b180ef024744599a647b942c278eefd58722280e" resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-3.2.1.tgz#3ece76e83ab49fdf12ab0bd33c5b2cdaa93a988e"
integrity sha512-Hcc2RbjqbmIZWaKfWs/6utpwl5Ehc/tMC9hG1m61uXwO+3ISif5MCb1GQ1i2ycFJJRumdHgfm2tFAyGXGS9Z6Q== integrity sha512-bxQnwXJifZgEqY1kOhBbUBRMih99u661FaKhM9VjZgPPjaASDbH9Af6w2n30zuUUJx+8hu0TvIE35yfnvfEPjw==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
"@abp/jquery-form@~3.2.0": "@abp/jquery-form@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.1.tgz#9280b28e2103fc80b9124e3a53f2f0e03ac4bb46"
integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== integrity sha512-Dy0wTCcmWgygrru59VPnlVw7qLu8aLTZOTpMPbSva502O19O+H7FljF9r0J7eYgoO6pcTO4R1tE/Yib3DwIBFg==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.2.0": "@abp/jquery-validation-unobtrusive@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.1.tgz#8f0b54f0d39b00ab93638fe1537ae7bd77e3e78e"
integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== integrity sha512-mr/jZVm8QuYO1vWcNo3ytuQEeMBvjnMiTrvoUzY1OXX+HUFR6oi8FohXgxFUypElAqQ8jelV9K0qonX1zTQhcg==
dependencies: dependencies:
"@abp/jquery-validation" "~3.2.0" "@abp/jquery-validation" "~3.2.1"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.2.0": "@abp/jquery-validation@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.1.tgz#b5330eb404f357936d16f3dd81752076bfee963d"
integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== integrity sha512-nmubyFyA8TbLdsJt8MAspSRN4St8Xn8ICB8ancdiyxbS/6u9oeKlvP4++ZZ881NlFkPsyo7GkHjfl29pNzzzJA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~3.2.0": "@abp/jquery@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.1.tgz#c7ee0bbff0b480b8ed01f46d1ce07ebc8c35e4a2"
integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== integrity sha512-AvfQ9rnnb+pQUDuGnuhpCB+FzWz3EqDptoeiCDQjPXxGql3Wk5GWw6QzvuREOXcU4CoUyzigyDgnO5WaSlx8kQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
jquery "~3.5.1" jquery "~3.5.1"
"@abp/lodash@~3.2.0": "@abp/lodash@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.1.tgz#7abfe7d572eaa628c033a6d50520b8510ecce79a"
integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== integrity sha512-ZDte0vUfM1fBrs/mRq7yCuugtYZKoP/6pOEebDOMdM1GztAEKicq8s7EXxwbqE4+kjxqeHzReh7ZwCtFAf/Zew==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/luxon@~3.2.0": "@abp/luxon@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.1.tgz#ad3473f24dbacd4d1bc15a07ee75cc1db7f1df6c"
integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== integrity sha512-WZgAMHNx1beQSA48ZJ2x2g408iBXBUvKwBwAFJqbhNhEsO95tutO80j1LNHYvXCbrAatoz6K6IDRXDXV1U3zyg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.2.0": "@abp/malihu-custom-scrollbar-plugin@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.1.tgz#f4a19c6de14c7193eaf6c55c429580dcbcfe3965"
integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== integrity sha512-pu8Tuh67ruG1fLEud1eves/eiBCiuowL+LVLyW+iX1bByfVlOB40nMQ7UCMQ6Jvv31pTEK2dfQ/n8K3W/pFiWQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/markdown-it@~3.2.0": "@abp/markdown-it@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.2.0.tgz#6fdd0b7f43bffce569908ba907c85f351ff89164" resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-3.2.1.tgz#b62d52302d300ee00726de8e1a328192923855dd"
integrity sha512-dGyM9Zdj21Pf08KY/X2lYtDr+lMX8v6TPHMKQVpgkDQ3/fzWDcg0MAr4CWUpg+BGLIhpwDWyKVBI/nQtEG/ihg== integrity sha512-62Q67GNkwS5iYoiBTm47esljrIrowTaThJkx0/nQy5PRh+BZlVggyWMyS2O8BfSwAN3iXO5PEWjj7aH1EV2ujg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
markdown-it "^11.0.0" markdown-it "^11.0.0"
"@abp/owl.carousel@~3.2.0": "@abp/owl.carousel@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.2.0.tgz#dd4c0c0bd9b4cc033577fd885fa10ab4670ccaf1" resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-3.2.1.tgz#97c1d353873027771f070c5aae31ec029c7b53e3"
integrity sha512-bxVkjkW1gWTSFuyM1iqHY8esTf+65e/tUZIDf+El0/xLbVkygeAZZtumMnwkizCAzWifBpQSd3QgGkY+wtabVw== integrity sha512-Tu/BlCGNun1sID0lIhT387vyEC7Pbyv6ZXbKjAZjgO+fRz3Je8XZ5gdyQ2Jfgr2/Nqc4uHNpJGZ38E+b4yUE6Q==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
owl.carousel "^2.3.4" owl.carousel "^2.3.4"
"@abp/prismjs@~3.2.0": "@abp/prismjs@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.0.tgz#11c7c3023f11097a3eb26d8a0c04f7fa39d9531b" resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.1.tgz#8f8ef367c9a10c3ec871d721055fbed4a8ec867a"
integrity sha512-OafE/K8rC7popNQDh1J97AtPuxVeAFWh/msfHE3K5nmdYABpl8U7190ITw5COcVjjFLCEONpkkhfN/9ZdAQ8fQ== integrity sha512-+wcKmi/F66qGRmTk+oYgYmJo+b9kQvJ+BG/+vIsN+n3Dzb/sjaDmc18pMFhEKWy7P/Yq28NxZdK+qO1LgzTktg==
dependencies: dependencies:
"@abp/clipboard" "~3.2.0" "@abp/clipboard" "~3.2.1"
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
prismjs "^1.20.0" prismjs "^1.20.0"
"@abp/select2@~3.2.0": "@abp/select2@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.1.tgz#8a04a6f5f10cc4a48a3da37bbc38ff655e626ddf"
integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== integrity sha512-i/euJ+kTHakwCI3Hf9+NhiQG+MYlU0iwp6GRmS2uHqgkMd2gVjnBq+elA2jsi50PXpxowv4vdBCNHcicI58W2w==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert@~3.2.0": "@abp/sweetalert@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.1.tgz#be99820491499fea06259fbc584e799a51cbabf3"
integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== integrity sha512-If5UJQVJ05aEbxPHrwRpuEzCT5ygOHmPzpBblpzSo5XxNNDGGlumnwYmtbXBSXutXrIR0b5//Bo1EgBVtmJHOg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
sweetalert "^2.1.2" sweetalert "^2.1.2"
"@abp/timeago@~3.2.0": "@abp/timeago@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.1.tgz#4e5e6c76d5440de65646a076ce1a9d7225882243"
integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== integrity sha512-4WLWoCYiSg5zYPcogV47TXA+YomDHHY0YfHHWmr6TP2bHd5ghsnMqnnkt58nUN9Psd77teo+Mo9jgR0h2IxRwQ==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/toastr@~3.2.0": "@abp/toastr@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.1.tgz#d35b44234ca6cbd5da6cc5f65d15e827bd7970dc"
integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== integrity sha512-nBmWGL49psSF2tcNnR6PGBcfFAxo2u5HHNRzv2c2z46ZEGFa5DjuY46KZC24jMWY+yprINQewhKTmQUqJvaHqA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/tui-editor@~3.2.0": "@abp/tui-editor@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.2.0.tgz#025d3348db0aa9f90aa01c49010a15227e029cc0" resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-3.2.1.tgz#4cda3bb6a6dfd6413cd5a3520d98c923f54b4b4b"
integrity sha512-8dKALM8tRuMdoa1WNOekiwAdDwFAMjyf9wy3FiWLX/oyJOkQhRyxsT455TxQ2yt7pTDiY3DrYyF1xeqwxbGoRw== integrity sha512-KvWc5ZkXGNAPb6ek0Y91/89BD9AfDQ/lBPB3aYydRe1A2NSMgpRQ4DXsCYaQmmsyAv5aAKJAmsqN89V7v8NoUQ==
dependencies: dependencies:
"@abp/codemirror" "~3.2.0" "@abp/codemirror" "~3.2.1"
"@abp/highlight.js" "~3.2.0" "@abp/highlight.js" "~3.2.1"
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
"@abp/markdown-it" "~3.2.0" "@abp/markdown-it" "~3.2.1"
tui-editor "^1.4.10" tui-editor "^1.4.10"
"@abp/utils@^3.2.0": "@abp/utils@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.1.tgz#960a0bbdfb781bbd6fb05e80bba2b9d95f2ae44c"
integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== integrity sha512-bqYa1VIi1tZXCUbP2Z1WlcgPD4/wjhDVM1jiAN9UzDls1K3u+e2LyR4gLoN39WW1ULjCIhyzEAw/JgTcMmpUBw==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"

4
modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/CreateBlogDto.cs

@ -1,9 +1,13 @@
using System.ComponentModel.DataAnnotations;
namespace Volo.Blogging.Admin.Blogs namespace Volo.Blogging.Admin.Blogs
{ {
public class CreateBlogDto public class CreateBlogDto
{ {
[Required]
public string Name { get; set; } public string Name { get; set; }
[Required]
public string ShortName { get; set; } public string ShortName { get; set; }
public string Description { get; set; } public string Description { get; set; }

6
modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/UpdateBlogDto.cs

@ -1,9 +1,13 @@
namespace Volo.Blogging.Admin.Blogs using System.ComponentModel.DataAnnotations;
namespace Volo.Blogging.Admin.Blogs
{ {
public class UpdateBlogDto public class UpdateBlogDto
{ {
[Required]
public string Name { get; set; } public string Name { get; set; }
[Required]
public string ShortName { get; set; } public string ShortName { get; set; }
public string Description { get; set; } public string Description { get; set; }

6
modules/blogging/src/Volo.Blogging.Admin.Application/Volo/Blogging/Admin/Blogs/BlogManagementAppService.cs

@ -36,10 +36,12 @@ namespace Volo.Blogging.Admin.Blogs
[Authorize(BloggingPermissions.Blogs.Create)] [Authorize(BloggingPermissions.Blogs.Create)]
public async Task<BlogDto> CreateAsync(CreateBlogDto input) public async Task<BlogDto> CreateAsync(CreateBlogDto input)
{ {
var newBlog = await _blogRepository.InsertAsync(new Blog(GuidGenerator.Create(), input.Name, input.ShortName) var newBlog = new Blog(GuidGenerator.Create(), input.Name, input.ShortName)
{ {
Description = input.Description Description = input.Description
}); };
newBlog = await _blogRepository.InsertAsync(newBlog);
return ObjectMapper.Map<Blog, BlogDto>(newBlog); return ObjectMapper.Map<Blog, BlogDto>(newBlog);
} }

4
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Comments/Dtos/CreateCommentDto.cs

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
namespace Volo.Blogging.Comments.Dtos namespace Volo.Blogging.Comments.Dtos
{ {
@ -8,6 +9,7 @@ namespace Volo.Blogging.Comments.Dtos
public Guid PostId { get; set; } public Guid PostId { get; set; }
[Required]
public string Text { get; set; } public string Text { get; set; }
} }
} }

7
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Comments/Dtos/UpdateCommentDto.cs

@ -1,7 +1,10 @@
namespace Volo.Blogging.Comments.Dtos using System.ComponentModel.DataAnnotations;
namespace Volo.Blogging.Comments.Dtos
{ {
public class UpdateCommentDto public class UpdateCommentDto
{ {
[Required]
public string Text { get; set; } public string Text { get; set; }
} }
} }

1
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/CreatePostDto.cs

@ -19,6 +19,7 @@ namespace Volo.Blogging.Posts
[DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxUrlLength))] [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxUrlLength))]
public string Url { get; set; } public string Url { get; set; }
[Required]
[DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxContentLength))] [DynamicStringLength(typeof(PostConsts), nameof(PostConsts.MaxContentLength))]
public string Content { get; set; } public string Content { get; set; }

6
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/GetPostInput.cs

@ -1,11 +1,13 @@
 using System;  using System;
using System.ComponentModel.DataAnnotations;
namespace Volo.Blogging.Posts namespace Volo.Blogging.Posts
{ {
public class GetPostInput public class GetPostInput
{ {
[Required]
public string Url { get; set; } public string Url { get; set; }
public Guid BlogId { get; set; } public Guid BlogId { get; set; }
} }
} }

5
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/UpdatePostDto.cs

@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations;
using System.Reflection; using System.Reflection;
namespace Volo.Blogging.Posts namespace Volo.Blogging.Posts
@ -7,12 +8,16 @@ namespace Volo.Blogging.Posts
{ {
public Guid BlogId { get; set; } public Guid BlogId { get; set; }
[Required]
public string Title { get; set; } public string Title { get; set; }
[Required]
public string CoverImage { get; set; } public string CoverImage { get; set; }
[Required]
public string Url { get; set; } public string Url { get; set; }
[Required]
public string Content { get; set; } public string Content { get; set; }
public string Description { get; set; } public string Description { get; set; }

3
modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Blogs/BlogAppService.cs

@ -2,6 +2,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Blogging.Blogs.Dtos; using Volo.Blogging.Blogs.Dtos;
@ -28,6 +29,8 @@ namespace Volo.Blogging.Blogs
public async Task<BlogDto> GetByShortNameAsync(string shortName) public async Task<BlogDto> GetByShortNameAsync(string shortName)
{ {
Check.NotNullOrWhiteSpace(shortName, nameof(shortName));
var blog = await _blogRepository.FindByShortNameAsync(shortName); var blog = await _blogRepository.FindByShortNameAsync(shortName);
if (blog == null) if (blog == null)

4
modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Files/FileAppService.cs

@ -34,7 +34,7 @@ namespace Volo.Blogging.Files
{ {
if (input.Bytes.IsNullOrEmpty()) if (input.Bytes.IsNullOrEmpty())
{ {
ThrowValidationException("Bytes can not be null or empty!", "Bytes"); ThrowValidationException("Bytes of file can not be null or empty!", "Bytes");
} }
if (input.Bytes.Length > BloggingWebConsts.FileUploading.MaxFileSize) if (input.Bytes.Length > BloggingWebConsts.FileUploading.MaxFileSize)
@ -44,7 +44,7 @@ namespace Volo.Blogging.Files
if (!ImageFormatHelper.IsValidImage(input.Bytes, FileUploadConsts.AllowedImageUploadFormats)) if (!ImageFormatHelper.IsValidImage(input.Bytes, FileUploadConsts.AllowedImageUploadFormats))
{ {
throw new UserFriendlyException("Not a valid image format!"); throw new UserFriendlyException("Invalid image format!");
} }
var uniqueFileName = GenerateUniqueFileName(Path.GetExtension(input.Name)); var uniqueFileName = GenerateUniqueFileName(Path.GetExtension(input.Name));

4
modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs

@ -187,9 +187,7 @@ namespace Volo.Blogging.Posts
private async Task<string> RenameUrlIfItAlreadyExistAsync(Guid blogId, string url, Post existingPost = null) private async Task<string> RenameUrlIfItAlreadyExistAsync(Guid blogId, string url, Post existingPost = null)
{ {
var postList = await _postRepository.GetListAsync(); if (await _postRepository.IsPostUrlInUseAsync(blogId, url, existingPost?.Id))
if (postList.Where(p => p.Url == url).WhereIf(existingPost != null, p => existingPost.Id != p.Id).Any())
{ {
return url + "-" + Guid.NewGuid().ToString().Substring(0, 5); return url + "-" + Guid.NewGuid().ToString().Substring(0, 5);
} }

4
modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/IPostRepository.cs

@ -9,8 +9,10 @@ namespace Volo.Blogging.Posts
{ {
Task<List<Post>> GetPostsByBlogId(Guid id); Task<List<Post>> GetPostsByBlogId(Guid id);
Task<bool> IsPostUrlInUseAsync(Guid blogId, string url, Guid? excludingPostId = null);
Task<Post> GetPostByUrl(Guid blogId, string url); Task<Post> GetPostByUrl(Guid blogId, string url);
Task<List<Post>> GetOrderedList(Guid blogId,bool descending = false); Task<List<Post>> GetOrderedList(Guid blogId,bool descending = false);
} }
} }

12
modules/blogging/src/Volo.Blogging.EntityFrameworkCore/Volo/Blogging/Posts/EfCorePostRepository.cs

@ -23,6 +23,18 @@ namespace Volo.Blogging.Posts
return await DbSet.Where(p => p.BlogId == id).OrderByDescending(p=>p.CreationTime).ToListAsync(); return await DbSet.Where(p => p.BlogId == id).OrderByDescending(p=>p.CreationTime).ToListAsync();
} }
public Task<bool> IsPostUrlInUseAsync(Guid blogId, string url, Guid? excludingPostId = null)
{
var query = DbSet.Where(p => blogId == p.BlogId && p.Url == url);
if (excludingPostId != null)
{
query = query.Where(p => excludingPostId != p.Id);
}
return query.AnyAsync();
}
public async Task<Post> GetPostByUrl(Guid blogId, string url) public async Task<Post> GetPostByUrl(Guid blogId, string url)
{ {
var post = await DbSet.FirstOrDefaultAsync(p => p.BlogId == blogId && p.Url == url); var post = await DbSet.FirstOrDefaultAsync(p => p.BlogId == blogId && p.Url == url);

17
modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Posts/MongoPostRepository.cs

@ -21,6 +21,19 @@ namespace Volo.Blogging.Posts
return await GetMongoQueryable().Where(p => p.BlogId == id).OrderByDescending(p => p.CreationTime).ToListAsync(); return await GetMongoQueryable().Where(p => p.BlogId == id).OrderByDescending(p => p.CreationTime).ToListAsync();
} }
public Task<bool> IsPostUrlInUseAsync(Guid blogId, string url, Guid? excludingPostId = null)
{
var query = GetMongoQueryable().Where(p => blogId == p.BlogId && p.Url == url);
if (excludingPostId != null)
{
query = query.Where(p => excludingPostId != p.Id);
}
return query.AnyAsync();
}
public async Task<Post> GetPostByUrl(Guid blogId, string url) public async Task<Post> GetPostByUrl(Guid blogId, string url)
{ {
var post = await GetMongoQueryable().FirstOrDefaultAsync(p => p.BlogId == blogId && p.Url == url); var post = await GetMongoQueryable().FirstOrDefaultAsync(p => p.BlogId == blogId && p.Url == url);
@ -36,12 +49,12 @@ namespace Volo.Blogging.Posts
public async Task<List<Post>> GetOrderedList(Guid blogId, bool @descending = false) public async Task<List<Post>> GetOrderedList(Guid blogId, bool @descending = false)
{ {
var query = GetMongoQueryable().Where(x => x.BlogId == blogId); var query = GetMongoQueryable().Where(x => x.BlogId == blogId);
if (!descending) if (!descending)
{ {
return await query.OrderBy(x => x.CreationTime).ToListAsync(); return await query.OrderBy(x => x.CreationTime).ToListAsync();
} }
return await query.OrderByDescending(x => x.CreationTime).ToListAsync(); return await query.OrderByDescending(x => x.CreationTime).ToListAsync();
} }
} }

2
modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json

@ -3,6 +3,6 @@
"name": "client-simulation-web", "name": "client-simulation-web",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.1"
} }
} }

234
modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": "@abp/aspnetcore.mvc.ui.theme.basic@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.1.tgz#d8f9af85b6114d35bba5942e303b3a4b89c8cd75"
integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== integrity sha512-utHlyw/xbtDqqA0ETrYTxZ8ZO49tI6FP3BAvRdevbhozdG8/el6BWpifZysKJv2VIm6d5P7DXD3uymCd5iX6EA==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": "@abp/aspnetcore.mvc.ui.theme.shared@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.1.tgz#b628602dca8d1809e32f423962cff56379a790b0"
integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== integrity sha512-aWZAaFnN9Ncyzy84wPTfUVtcyh98Sxu4m+fsGY5XtwA/nwDTDVtLMq81ueJWyFgN9GNk8+lT6VXfPDpA/MJo/A==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~3.2.0" "@abp/aspnetcore.mvc.ui" "~3.2.1"
"@abp/bootstrap" "~3.2.0" "@abp/bootstrap" "~3.2.1"
"@abp/bootstrap-datepicker" "~3.2.0" "@abp/bootstrap-datepicker" "~3.2.1"
"@abp/datatables.net-bs4" "~3.2.0" "@abp/datatables.net-bs4" "~3.2.1"
"@abp/font-awesome" "~3.2.0" "@abp/font-awesome" "~3.2.1"
"@abp/jquery-form" "~3.2.0" "@abp/jquery-form" "~3.2.1"
"@abp/jquery-validation-unobtrusive" "~3.2.0" "@abp/jquery-validation-unobtrusive" "~3.2.1"
"@abp/lodash" "~3.2.0" "@abp/lodash" "~3.2.1"
"@abp/luxon" "~3.2.0" "@abp/luxon" "~3.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~3.2.0" "@abp/malihu-custom-scrollbar-plugin" "~3.2.1"
"@abp/select2" "~3.2.0" "@abp/select2" "~3.2.1"
"@abp/sweetalert" "~3.2.0" "@abp/sweetalert" "~3.2.1"
"@abp/timeago" "~3.2.0" "@abp/timeago" "~3.2.1"
"@abp/toastr" "~3.2.0" "@abp/toastr" "~3.2.1"
"@abp/aspnetcore.mvc.ui@~3.2.0": "@abp/aspnetcore.mvc.ui@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.1.tgz#dc0d2c331bf09ef0f79cec739e0f64edb1105084"
integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== integrity sha512-Fpn16MeK71Uhw6636nlXCQaSwN9lN6QFUIGIICcWU+2eMA8fK4ZtavaYGG4mWqjkd4wzUHCz2AZbmbxK7bVnng==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -41,145 +41,145 @@
path "^0.12.7" path "^0.12.7"
rimraf "^3.0.2" rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.2.0": "@abp/bootstrap-datepicker@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.1.tgz#5cb75bc53fab86f7b28bfc5fbfcbf233432d75ca"
integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== integrity sha512-KzTDZTMd/TBaTDNuPF4+T+0zsmEimD2Uq8TlNw7knEEyo7a/lsfBNkBF9Xc8bjZcbC76BqajytsTzI1yftM4Uw==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.2.0": "@abp/bootstrap@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.1.tgz#9574414f1e170240dacdf78408af34830264db97"
integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== integrity sha512-gLIr4d5xfw5TSpSHIKr7oKznkdIbGhS+gtBitP1BFVLOU2h7/d6uTZoopC+JQU16DGvn8njo8W4DL7Amh9FOqQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
bootstrap "^4.5.0" bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2" bootstrap-v4-rtl "4.4.1-2"
"@abp/core@~3.2.0": "@abp/core@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.1.tgz#3c133f67394d716df3e49f1eeb934c586df755e5"
integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== integrity sha512-GbjrFO+oKl4JuZkYdeWtE+N837XRQr0hoX8O3pI1eAnuMku48QhGec2ZpSJuqG+c3wX6PHTZPIyHse4X+y6QgA==
dependencies: dependencies:
"@abp/utils" "^3.2.0" "@abp/utils" "^3.2.1"
"@abp/datatables.net-bs4@~3.2.0": "@abp/datatables.net-bs4@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.1.tgz#b008b2964472fd8c8286a7c4b1e903d93a52e760"
integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== integrity sha512-C/MmA6URugDD1tdUS6zS413ycHCjefeIG7nnJrtJmCZix7mfbdrp/Km/vKbE1KMSEYWis0w/SxIEy0kbkIW4OQ==
dependencies: dependencies:
"@abp/datatables.net" "~3.2.0" "@abp/datatables.net" "~3.2.1"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.2.0": "@abp/datatables.net@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.1.tgz#ba7d4c875ad2bc126687bc5d8e627f3c4d7fb2f4"
integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== integrity sha512-o8/K6RGnPkQUe5ClAxyHNBOevVBnb8qSM4NXRXR2AUtEvjal+4UL9QOf1LZ0zPv4OAjaaAiOAp9Pmbv4FWuZ8Q==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/font-awesome@~3.2.0": "@abp/font-awesome@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.1.tgz#d54a6d9627fdfeb6c615550f09241d0c805e3d39"
integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== integrity sha512-5BlAuIX4qFdf/mvycUAREmVQ8jg0tRtDnVXt0E8kUtzghhEGG91NfcZIaB4zaWAwuJSyqqjS/VJ/URy1g50NZQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.2.0": "@abp/jquery-form@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.1.tgz#9280b28e2103fc80b9124e3a53f2f0e03ac4bb46"
integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== integrity sha512-Dy0wTCcmWgygrru59VPnlVw7qLu8aLTZOTpMPbSva502O19O+H7FljF9r0J7eYgoO6pcTO4R1tE/Yib3DwIBFg==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.2.0": "@abp/jquery-validation-unobtrusive@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.1.tgz#8f0b54f0d39b00ab93638fe1537ae7bd77e3e78e"
integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== integrity sha512-mr/jZVm8QuYO1vWcNo3ytuQEeMBvjnMiTrvoUzY1OXX+HUFR6oi8FohXgxFUypElAqQ8jelV9K0qonX1zTQhcg==
dependencies: dependencies:
"@abp/jquery-validation" "~3.2.0" "@abp/jquery-validation" "~3.2.1"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.2.0": "@abp/jquery-validation@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.1.tgz#b5330eb404f357936d16f3dd81752076bfee963d"
integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== integrity sha512-nmubyFyA8TbLdsJt8MAspSRN4St8Xn8ICB8ancdiyxbS/6u9oeKlvP4++ZZ881NlFkPsyo7GkHjfl29pNzzzJA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~3.2.0": "@abp/jquery@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.1.tgz#c7ee0bbff0b480b8ed01f46d1ce07ebc8c35e4a2"
integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== integrity sha512-AvfQ9rnnb+pQUDuGnuhpCB+FzWz3EqDptoeiCDQjPXxGql3Wk5GWw6QzvuREOXcU4CoUyzigyDgnO5WaSlx8kQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
jquery "~3.5.1" jquery "~3.5.1"
"@abp/lodash@~3.2.0": "@abp/lodash@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.1.tgz#7abfe7d572eaa628c033a6d50520b8510ecce79a"
integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== integrity sha512-ZDte0vUfM1fBrs/mRq7yCuugtYZKoP/6pOEebDOMdM1GztAEKicq8s7EXxwbqE4+kjxqeHzReh7ZwCtFAf/Zew==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/luxon@~3.2.0": "@abp/luxon@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.1.tgz#ad3473f24dbacd4d1bc15a07ee75cc1db7f1df6c"
integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== integrity sha512-WZgAMHNx1beQSA48ZJ2x2g408iBXBUvKwBwAFJqbhNhEsO95tutO80j1LNHYvXCbrAatoz6K6IDRXDXV1U3zyg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.2.0": "@abp/malihu-custom-scrollbar-plugin@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.1.tgz#f4a19c6de14c7193eaf6c55c429580dcbcfe3965"
integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== integrity sha512-pu8Tuh67ruG1fLEud1eves/eiBCiuowL+LVLyW+iX1bByfVlOB40nMQ7UCMQ6Jvv31pTEK2dfQ/n8K3W/pFiWQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~3.2.0": "@abp/select2@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.1.tgz#8a04a6f5f10cc4a48a3da37bbc38ff655e626ddf"
integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== integrity sha512-i/euJ+kTHakwCI3Hf9+NhiQG+MYlU0iwp6GRmS2uHqgkMd2gVjnBq+elA2jsi50PXpxowv4vdBCNHcicI58W2w==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert@~3.2.0": "@abp/sweetalert@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.1.tgz#be99820491499fea06259fbc584e799a51cbabf3"
integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== integrity sha512-If5UJQVJ05aEbxPHrwRpuEzCT5ygOHmPzpBblpzSo5XxNNDGGlumnwYmtbXBSXutXrIR0b5//Bo1EgBVtmJHOg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
sweetalert "^2.1.2" sweetalert "^2.1.2"
"@abp/timeago@~3.2.0": "@abp/timeago@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.1.tgz#4e5e6c76d5440de65646a076ce1a9d7225882243"
integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== integrity sha512-4WLWoCYiSg5zYPcogV47TXA+YomDHHY0YfHHWmr6TP2bHd5ghsnMqnnkt58nUN9Psd77teo+Mo9jgR0h2IxRwQ==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/toastr@~3.2.0": "@abp/toastr@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.1.tgz#d35b44234ca6cbd5da6cc5f65d15e827bd7970dc"
integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== integrity sha512-nBmWGL49psSF2tcNnR6PGBcfFAxo2u5HHNRzv2c2z46ZEGFa5DjuY46KZC24jMWY+yprINQewhKTmQUqJvaHqA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/utils@^3.2.0": "@abp/utils@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.1.tgz#960a0bbdfb781bbd6fb05e80bba2b9d95f2ae44c"
integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== integrity sha512-bqYa1VIi1tZXCUbP2Z1WlcgPD4/wjhDVM1jiAN9UzDls1K3u+e2LyR4gLoN39WW1ULjCIhyzEAw/JgTcMmpUBw==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"

10
modules/cms-kit/angular/package.json

@ -15,11 +15,11 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/ng.account": "~3.2.0", "@abp/ng.account": "~3.2.1",
"@abp/ng.identity": "~3.2.0", "@abp/ng.identity": "~3.2.1",
"@abp/ng.setting-management": "~3.2.0", "@abp/ng.setting-management": "~3.2.1",
"@abp/ng.tenant-management": "~3.2.0", "@abp/ng.tenant-management": "~3.2.1",
"@abp/ng.theme.basic": "~3.2.0", "@abp/ng.theme.basic": "~3.2.1",
"@angular/animations": "~10.0.0", "@angular/animations": "~10.0.0",
"@angular/common": "~10.0.0", "@angular/common": "~10.0.0",
"@angular/compiler": "~10.0.0", "@angular/compiler": "~10.0.0",

4
modules/cms-kit/angular/projects/cms-kit/package.json

@ -4,8 +4,8 @@
"peerDependencies": { "peerDependencies": {
"@angular/common": "^9.1.11", "@angular/common": "^9.1.11",
"@angular/core": "^9.1.11", "@angular/core": "^9.1.11",
"@abp/ng.core": ">=3.2.0", "@abp/ng.core": ">=3.2.1",
"@abp/ng.theme.shared": ">=3.2.0" "@abp/ng.theme.shared": ">=3.2.1"
}, },
"dependencies": { "dependencies": {
"tslib": "^2.0.0" "tslib": "^2.0.0"

2
modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json

@ -3,6 +3,6 @@
"name": "my-app-identityserver", "name": "my-app-identityserver",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.1"
} }
} }

234
modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": "@abp/aspnetcore.mvc.ui.theme.basic@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.1.tgz#d8f9af85b6114d35bba5942e303b3a4b89c8cd75"
integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== integrity sha512-utHlyw/xbtDqqA0ETrYTxZ8ZO49tI6FP3BAvRdevbhozdG8/el6BWpifZysKJv2VIm6d5P7DXD3uymCd5iX6EA==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": "@abp/aspnetcore.mvc.ui.theme.shared@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.1.tgz#b628602dca8d1809e32f423962cff56379a790b0"
integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== integrity sha512-aWZAaFnN9Ncyzy84wPTfUVtcyh98Sxu4m+fsGY5XtwA/nwDTDVtLMq81ueJWyFgN9GNk8+lT6VXfPDpA/MJo/A==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~3.2.0" "@abp/aspnetcore.mvc.ui" "~3.2.1"
"@abp/bootstrap" "~3.2.0" "@abp/bootstrap" "~3.2.1"
"@abp/bootstrap-datepicker" "~3.2.0" "@abp/bootstrap-datepicker" "~3.2.1"
"@abp/datatables.net-bs4" "~3.2.0" "@abp/datatables.net-bs4" "~3.2.1"
"@abp/font-awesome" "~3.2.0" "@abp/font-awesome" "~3.2.1"
"@abp/jquery-form" "~3.2.0" "@abp/jquery-form" "~3.2.1"
"@abp/jquery-validation-unobtrusive" "~3.2.0" "@abp/jquery-validation-unobtrusive" "~3.2.1"
"@abp/lodash" "~3.2.0" "@abp/lodash" "~3.2.1"
"@abp/luxon" "~3.2.0" "@abp/luxon" "~3.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~3.2.0" "@abp/malihu-custom-scrollbar-plugin" "~3.2.1"
"@abp/select2" "~3.2.0" "@abp/select2" "~3.2.1"
"@abp/sweetalert" "~3.2.0" "@abp/sweetalert" "~3.2.1"
"@abp/timeago" "~3.2.0" "@abp/timeago" "~3.2.1"
"@abp/toastr" "~3.2.0" "@abp/toastr" "~3.2.1"
"@abp/aspnetcore.mvc.ui@~3.2.0": "@abp/aspnetcore.mvc.ui@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.1.tgz#dc0d2c331bf09ef0f79cec739e0f64edb1105084"
integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== integrity sha512-Fpn16MeK71Uhw6636nlXCQaSwN9lN6QFUIGIICcWU+2eMA8fK4ZtavaYGG4mWqjkd4wzUHCz2AZbmbxK7bVnng==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -41,145 +41,145 @@
path "^0.12.7" path "^0.12.7"
rimraf "^3.0.2" rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.2.0": "@abp/bootstrap-datepicker@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.1.tgz#5cb75bc53fab86f7b28bfc5fbfcbf233432d75ca"
integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== integrity sha512-KzTDZTMd/TBaTDNuPF4+T+0zsmEimD2Uq8TlNw7knEEyo7a/lsfBNkBF9Xc8bjZcbC76BqajytsTzI1yftM4Uw==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.2.0": "@abp/bootstrap@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.1.tgz#9574414f1e170240dacdf78408af34830264db97"
integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== integrity sha512-gLIr4d5xfw5TSpSHIKr7oKznkdIbGhS+gtBitP1BFVLOU2h7/d6uTZoopC+JQU16DGvn8njo8W4DL7Amh9FOqQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
bootstrap "^4.5.0" bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2" bootstrap-v4-rtl "4.4.1-2"
"@abp/core@~3.2.0": "@abp/core@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.1.tgz#3c133f67394d716df3e49f1eeb934c586df755e5"
integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== integrity sha512-GbjrFO+oKl4JuZkYdeWtE+N837XRQr0hoX8O3pI1eAnuMku48QhGec2ZpSJuqG+c3wX6PHTZPIyHse4X+y6QgA==
dependencies: dependencies:
"@abp/utils" "^3.2.0" "@abp/utils" "^3.2.1"
"@abp/datatables.net-bs4@~3.2.0": "@abp/datatables.net-bs4@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.1.tgz#b008b2964472fd8c8286a7c4b1e903d93a52e760"
integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== integrity sha512-C/MmA6URugDD1tdUS6zS413ycHCjefeIG7nnJrtJmCZix7mfbdrp/Km/vKbE1KMSEYWis0w/SxIEy0kbkIW4OQ==
dependencies: dependencies:
"@abp/datatables.net" "~3.2.0" "@abp/datatables.net" "~3.2.1"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.2.0": "@abp/datatables.net@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.1.tgz#ba7d4c875ad2bc126687bc5d8e627f3c4d7fb2f4"
integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== integrity sha512-o8/K6RGnPkQUe5ClAxyHNBOevVBnb8qSM4NXRXR2AUtEvjal+4UL9QOf1LZ0zPv4OAjaaAiOAp9Pmbv4FWuZ8Q==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/font-awesome@~3.2.0": "@abp/font-awesome@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.1.tgz#d54a6d9627fdfeb6c615550f09241d0c805e3d39"
integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== integrity sha512-5BlAuIX4qFdf/mvycUAREmVQ8jg0tRtDnVXt0E8kUtzghhEGG91NfcZIaB4zaWAwuJSyqqjS/VJ/URy1g50NZQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.2.0": "@abp/jquery-form@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.1.tgz#9280b28e2103fc80b9124e3a53f2f0e03ac4bb46"
integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== integrity sha512-Dy0wTCcmWgygrru59VPnlVw7qLu8aLTZOTpMPbSva502O19O+H7FljF9r0J7eYgoO6pcTO4R1tE/Yib3DwIBFg==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.2.0": "@abp/jquery-validation-unobtrusive@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.1.tgz#8f0b54f0d39b00ab93638fe1537ae7bd77e3e78e"
integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== integrity sha512-mr/jZVm8QuYO1vWcNo3ytuQEeMBvjnMiTrvoUzY1OXX+HUFR6oi8FohXgxFUypElAqQ8jelV9K0qonX1zTQhcg==
dependencies: dependencies:
"@abp/jquery-validation" "~3.2.0" "@abp/jquery-validation" "~3.2.1"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.2.0": "@abp/jquery-validation@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.1.tgz#b5330eb404f357936d16f3dd81752076bfee963d"
integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== integrity sha512-nmubyFyA8TbLdsJt8MAspSRN4St8Xn8ICB8ancdiyxbS/6u9oeKlvP4++ZZ881NlFkPsyo7GkHjfl29pNzzzJA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~3.2.0": "@abp/jquery@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.1.tgz#c7ee0bbff0b480b8ed01f46d1ce07ebc8c35e4a2"
integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== integrity sha512-AvfQ9rnnb+pQUDuGnuhpCB+FzWz3EqDptoeiCDQjPXxGql3Wk5GWw6QzvuREOXcU4CoUyzigyDgnO5WaSlx8kQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
jquery "~3.5.1" jquery "~3.5.1"
"@abp/lodash@~3.2.0": "@abp/lodash@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.1.tgz#7abfe7d572eaa628c033a6d50520b8510ecce79a"
integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== integrity sha512-ZDte0vUfM1fBrs/mRq7yCuugtYZKoP/6pOEebDOMdM1GztAEKicq8s7EXxwbqE4+kjxqeHzReh7ZwCtFAf/Zew==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/luxon@~3.2.0": "@abp/luxon@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.1.tgz#ad3473f24dbacd4d1bc15a07ee75cc1db7f1df6c"
integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== integrity sha512-WZgAMHNx1beQSA48ZJ2x2g408iBXBUvKwBwAFJqbhNhEsO95tutO80j1LNHYvXCbrAatoz6K6IDRXDXV1U3zyg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.2.0": "@abp/malihu-custom-scrollbar-plugin@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.1.tgz#f4a19c6de14c7193eaf6c55c429580dcbcfe3965"
integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== integrity sha512-pu8Tuh67ruG1fLEud1eves/eiBCiuowL+LVLyW+iX1bByfVlOB40nMQ7UCMQ6Jvv31pTEK2dfQ/n8K3W/pFiWQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~3.2.0": "@abp/select2@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.1.tgz#8a04a6f5f10cc4a48a3da37bbc38ff655e626ddf"
integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== integrity sha512-i/euJ+kTHakwCI3Hf9+NhiQG+MYlU0iwp6GRmS2uHqgkMd2gVjnBq+elA2jsi50PXpxowv4vdBCNHcicI58W2w==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert@~3.2.0": "@abp/sweetalert@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.1.tgz#be99820491499fea06259fbc584e799a51cbabf3"
integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== integrity sha512-If5UJQVJ05aEbxPHrwRpuEzCT5ygOHmPzpBblpzSo5XxNNDGGlumnwYmtbXBSXutXrIR0b5//Bo1EgBVtmJHOg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
sweetalert "^2.1.2" sweetalert "^2.1.2"
"@abp/timeago@~3.2.0": "@abp/timeago@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.1.tgz#4e5e6c76d5440de65646a076ce1a9d7225882243"
integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== integrity sha512-4WLWoCYiSg5zYPcogV47TXA+YomDHHY0YfHHWmr6TP2bHd5ghsnMqnnkt58nUN9Psd77teo+Mo9jgR0h2IxRwQ==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/toastr@~3.2.0": "@abp/toastr@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.1.tgz#d35b44234ca6cbd5da6cc5f65d15e827bd7970dc"
integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== integrity sha512-nBmWGL49psSF2tcNnR6PGBcfFAxo2u5HHNRzv2c2z46ZEGFa5DjuY46KZC24jMWY+yprINQewhKTmQUqJvaHqA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/utils@^3.2.0": "@abp/utils@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.1.tgz#960a0bbdfb781bbd6fb05e80bba2b9d95f2ae44c"
integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== integrity sha512-bqYa1VIi1tZXCUbP2Z1WlcgPD4/wjhDVM1jiAN9UzDls1K3u+e2LyR4gLoN39WW1ULjCIhyzEAw/JgTcMmpUBw==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"

2
modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json

@ -3,6 +3,6 @@
"name": "my-app", "name": "my-app",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.1"
} }
} }

234
modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": "@abp/aspnetcore.mvc.ui.theme.basic@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.1.tgz#d8f9af85b6114d35bba5942e303b3a4b89c8cd75"
integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== integrity sha512-utHlyw/xbtDqqA0ETrYTxZ8ZO49tI6FP3BAvRdevbhozdG8/el6BWpifZysKJv2VIm6d5P7DXD3uymCd5iX6EA==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": "@abp/aspnetcore.mvc.ui.theme.shared@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.1.tgz#b628602dca8d1809e32f423962cff56379a790b0"
integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== integrity sha512-aWZAaFnN9Ncyzy84wPTfUVtcyh98Sxu4m+fsGY5XtwA/nwDTDVtLMq81ueJWyFgN9GNk8+lT6VXfPDpA/MJo/A==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~3.2.0" "@abp/aspnetcore.mvc.ui" "~3.2.1"
"@abp/bootstrap" "~3.2.0" "@abp/bootstrap" "~3.2.1"
"@abp/bootstrap-datepicker" "~3.2.0" "@abp/bootstrap-datepicker" "~3.2.1"
"@abp/datatables.net-bs4" "~3.2.0" "@abp/datatables.net-bs4" "~3.2.1"
"@abp/font-awesome" "~3.2.0" "@abp/font-awesome" "~3.2.1"
"@abp/jquery-form" "~3.2.0" "@abp/jquery-form" "~3.2.1"
"@abp/jquery-validation-unobtrusive" "~3.2.0" "@abp/jquery-validation-unobtrusive" "~3.2.1"
"@abp/lodash" "~3.2.0" "@abp/lodash" "~3.2.1"
"@abp/luxon" "~3.2.0" "@abp/luxon" "~3.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~3.2.0" "@abp/malihu-custom-scrollbar-plugin" "~3.2.1"
"@abp/select2" "~3.2.0" "@abp/select2" "~3.2.1"
"@abp/sweetalert" "~3.2.0" "@abp/sweetalert" "~3.2.1"
"@abp/timeago" "~3.2.0" "@abp/timeago" "~3.2.1"
"@abp/toastr" "~3.2.0" "@abp/toastr" "~3.2.1"
"@abp/aspnetcore.mvc.ui@~3.2.0": "@abp/aspnetcore.mvc.ui@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.1.tgz#dc0d2c331bf09ef0f79cec739e0f64edb1105084"
integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== integrity sha512-Fpn16MeK71Uhw6636nlXCQaSwN9lN6QFUIGIICcWU+2eMA8fK4ZtavaYGG4mWqjkd4wzUHCz2AZbmbxK7bVnng==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -41,145 +41,145 @@
path "^0.12.7" path "^0.12.7"
rimraf "^3.0.2" rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.2.0": "@abp/bootstrap-datepicker@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.1.tgz#5cb75bc53fab86f7b28bfc5fbfcbf233432d75ca"
integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== integrity sha512-KzTDZTMd/TBaTDNuPF4+T+0zsmEimD2Uq8TlNw7knEEyo7a/lsfBNkBF9Xc8bjZcbC76BqajytsTzI1yftM4Uw==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.2.0": "@abp/bootstrap@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.1.tgz#9574414f1e170240dacdf78408af34830264db97"
integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== integrity sha512-gLIr4d5xfw5TSpSHIKr7oKznkdIbGhS+gtBitP1BFVLOU2h7/d6uTZoopC+JQU16DGvn8njo8W4DL7Amh9FOqQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
bootstrap "^4.5.0" bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2" bootstrap-v4-rtl "4.4.1-2"
"@abp/core@~3.2.0": "@abp/core@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.1.tgz#3c133f67394d716df3e49f1eeb934c586df755e5"
integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== integrity sha512-GbjrFO+oKl4JuZkYdeWtE+N837XRQr0hoX8O3pI1eAnuMku48QhGec2ZpSJuqG+c3wX6PHTZPIyHse4X+y6QgA==
dependencies: dependencies:
"@abp/utils" "^3.2.0" "@abp/utils" "^3.2.1"
"@abp/datatables.net-bs4@~3.2.0": "@abp/datatables.net-bs4@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.1.tgz#b008b2964472fd8c8286a7c4b1e903d93a52e760"
integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== integrity sha512-C/MmA6URugDD1tdUS6zS413ycHCjefeIG7nnJrtJmCZix7mfbdrp/Km/vKbE1KMSEYWis0w/SxIEy0kbkIW4OQ==
dependencies: dependencies:
"@abp/datatables.net" "~3.2.0" "@abp/datatables.net" "~3.2.1"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.2.0": "@abp/datatables.net@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.1.tgz#ba7d4c875ad2bc126687bc5d8e627f3c4d7fb2f4"
integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== integrity sha512-o8/K6RGnPkQUe5ClAxyHNBOevVBnb8qSM4NXRXR2AUtEvjal+4UL9QOf1LZ0zPv4OAjaaAiOAp9Pmbv4FWuZ8Q==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/font-awesome@~3.2.0": "@abp/font-awesome@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.1.tgz#d54a6d9627fdfeb6c615550f09241d0c805e3d39"
integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== integrity sha512-5BlAuIX4qFdf/mvycUAREmVQ8jg0tRtDnVXt0E8kUtzghhEGG91NfcZIaB4zaWAwuJSyqqjS/VJ/URy1g50NZQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.2.0": "@abp/jquery-form@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.1.tgz#9280b28e2103fc80b9124e3a53f2f0e03ac4bb46"
integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== integrity sha512-Dy0wTCcmWgygrru59VPnlVw7qLu8aLTZOTpMPbSva502O19O+H7FljF9r0J7eYgoO6pcTO4R1tE/Yib3DwIBFg==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.2.0": "@abp/jquery-validation-unobtrusive@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.1.tgz#8f0b54f0d39b00ab93638fe1537ae7bd77e3e78e"
integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== integrity sha512-mr/jZVm8QuYO1vWcNo3ytuQEeMBvjnMiTrvoUzY1OXX+HUFR6oi8FohXgxFUypElAqQ8jelV9K0qonX1zTQhcg==
dependencies: dependencies:
"@abp/jquery-validation" "~3.2.0" "@abp/jquery-validation" "~3.2.1"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.2.0": "@abp/jquery-validation@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.1.tgz#b5330eb404f357936d16f3dd81752076bfee963d"
integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== integrity sha512-nmubyFyA8TbLdsJt8MAspSRN4St8Xn8ICB8ancdiyxbS/6u9oeKlvP4++ZZ881NlFkPsyo7GkHjfl29pNzzzJA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~3.2.0": "@abp/jquery@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.1.tgz#c7ee0bbff0b480b8ed01f46d1ce07ebc8c35e4a2"
integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== integrity sha512-AvfQ9rnnb+pQUDuGnuhpCB+FzWz3EqDptoeiCDQjPXxGql3Wk5GWw6QzvuREOXcU4CoUyzigyDgnO5WaSlx8kQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
jquery "~3.5.1" jquery "~3.5.1"
"@abp/lodash@~3.2.0": "@abp/lodash@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.1.tgz#7abfe7d572eaa628c033a6d50520b8510ecce79a"
integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== integrity sha512-ZDte0vUfM1fBrs/mRq7yCuugtYZKoP/6pOEebDOMdM1GztAEKicq8s7EXxwbqE4+kjxqeHzReh7ZwCtFAf/Zew==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/luxon@~3.2.0": "@abp/luxon@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.1.tgz#ad3473f24dbacd4d1bc15a07ee75cc1db7f1df6c"
integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== integrity sha512-WZgAMHNx1beQSA48ZJ2x2g408iBXBUvKwBwAFJqbhNhEsO95tutO80j1LNHYvXCbrAatoz6K6IDRXDXV1U3zyg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.2.0": "@abp/malihu-custom-scrollbar-plugin@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.1.tgz#f4a19c6de14c7193eaf6c55c429580dcbcfe3965"
integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== integrity sha512-pu8Tuh67ruG1fLEud1eves/eiBCiuowL+LVLyW+iX1bByfVlOB40nMQ7UCMQ6Jvv31pTEK2dfQ/n8K3W/pFiWQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~3.2.0": "@abp/select2@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.1.tgz#8a04a6f5f10cc4a48a3da37bbc38ff655e626ddf"
integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== integrity sha512-i/euJ+kTHakwCI3Hf9+NhiQG+MYlU0iwp6GRmS2uHqgkMd2gVjnBq+elA2jsi50PXpxowv4vdBCNHcicI58W2w==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert@~3.2.0": "@abp/sweetalert@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.1.tgz#be99820491499fea06259fbc584e799a51cbabf3"
integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== integrity sha512-If5UJQVJ05aEbxPHrwRpuEzCT5ygOHmPzpBblpzSo5XxNNDGGlumnwYmtbXBSXutXrIR0b5//Bo1EgBVtmJHOg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
sweetalert "^2.1.2" sweetalert "^2.1.2"
"@abp/timeago@~3.2.0": "@abp/timeago@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.1.tgz#4e5e6c76d5440de65646a076ce1a9d7225882243"
integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== integrity sha512-4WLWoCYiSg5zYPcogV47TXA+YomDHHY0YfHHWmr6TP2bHd5ghsnMqnnkt58nUN9Psd77teo+Mo9jgR0h2IxRwQ==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/toastr@~3.2.0": "@abp/toastr@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.1.tgz#d35b44234ca6cbd5da6cc5f65d15e827bd7970dc"
integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== integrity sha512-nBmWGL49psSF2tcNnR6PGBcfFAxo2u5HHNRzv2c2z46ZEGFa5DjuY46KZC24jMWY+yprINQewhKTmQUqJvaHqA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/utils@^3.2.0": "@abp/utils@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.1.tgz#960a0bbdfb781bbd6fb05e80bba2b9d95f2ae44c"
integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== integrity sha512-bqYa1VIi1tZXCUbP2Z1WlcgPD4/wjhDVM1jiAN9UzDls1K3u+e2LyR4gLoN39WW1ULjCIhyzEAw/JgTcMmpUBw==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"

2
modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json

@ -3,6 +3,6 @@
"name": "my-app", "name": "my-app",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0" "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.1"
} }
} }

234
modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": "@abp/aspnetcore.mvc.ui.theme.basic@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.1.tgz#d8f9af85b6114d35bba5942e303b3a4b89c8cd75"
integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== integrity sha512-utHlyw/xbtDqqA0ETrYTxZ8ZO49tI6FP3BAvRdevbhozdG8/el6BWpifZysKJv2VIm6d5P7DXD3uymCd5iX6EA==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": "@abp/aspnetcore.mvc.ui.theme.shared@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.1.tgz#b628602dca8d1809e32f423962cff56379a790b0"
integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== integrity sha512-aWZAaFnN9Ncyzy84wPTfUVtcyh98Sxu4m+fsGY5XtwA/nwDTDVtLMq81ueJWyFgN9GNk8+lT6VXfPDpA/MJo/A==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~3.2.0" "@abp/aspnetcore.mvc.ui" "~3.2.1"
"@abp/bootstrap" "~3.2.0" "@abp/bootstrap" "~3.2.1"
"@abp/bootstrap-datepicker" "~3.2.0" "@abp/bootstrap-datepicker" "~3.2.1"
"@abp/datatables.net-bs4" "~3.2.0" "@abp/datatables.net-bs4" "~3.2.1"
"@abp/font-awesome" "~3.2.0" "@abp/font-awesome" "~3.2.1"
"@abp/jquery-form" "~3.2.0" "@abp/jquery-form" "~3.2.1"
"@abp/jquery-validation-unobtrusive" "~3.2.0" "@abp/jquery-validation-unobtrusive" "~3.2.1"
"@abp/lodash" "~3.2.0" "@abp/lodash" "~3.2.1"
"@abp/luxon" "~3.2.0" "@abp/luxon" "~3.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~3.2.0" "@abp/malihu-custom-scrollbar-plugin" "~3.2.1"
"@abp/select2" "~3.2.0" "@abp/select2" "~3.2.1"
"@abp/sweetalert" "~3.2.0" "@abp/sweetalert" "~3.2.1"
"@abp/timeago" "~3.2.0" "@abp/timeago" "~3.2.1"
"@abp/toastr" "~3.2.0" "@abp/toastr" "~3.2.1"
"@abp/aspnetcore.mvc.ui@~3.2.0": "@abp/aspnetcore.mvc.ui@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.1.tgz#dc0d2c331bf09ef0f79cec739e0f64edb1105084"
integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== integrity sha512-Fpn16MeK71Uhw6636nlXCQaSwN9lN6QFUIGIICcWU+2eMA8fK4ZtavaYGG4mWqjkd4wzUHCz2AZbmbxK7bVnng==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -41,145 +41,145 @@
path "^0.12.7" path "^0.12.7"
rimraf "^3.0.2" rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.2.0": "@abp/bootstrap-datepicker@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.1.tgz#5cb75bc53fab86f7b28bfc5fbfcbf233432d75ca"
integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== integrity sha512-KzTDZTMd/TBaTDNuPF4+T+0zsmEimD2Uq8TlNw7knEEyo7a/lsfBNkBF9Xc8bjZcbC76BqajytsTzI1yftM4Uw==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.2.0": "@abp/bootstrap@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.1.tgz#9574414f1e170240dacdf78408af34830264db97"
integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== integrity sha512-gLIr4d5xfw5TSpSHIKr7oKznkdIbGhS+gtBitP1BFVLOU2h7/d6uTZoopC+JQU16DGvn8njo8W4DL7Amh9FOqQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
bootstrap "^4.5.0" bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2" bootstrap-v4-rtl "4.4.1-2"
"@abp/core@~3.2.0": "@abp/core@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.1.tgz#3c133f67394d716df3e49f1eeb934c586df755e5"
integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== integrity sha512-GbjrFO+oKl4JuZkYdeWtE+N837XRQr0hoX8O3pI1eAnuMku48QhGec2ZpSJuqG+c3wX6PHTZPIyHse4X+y6QgA==
dependencies: dependencies:
"@abp/utils" "^3.2.0" "@abp/utils" "^3.2.1"
"@abp/datatables.net-bs4@~3.2.0": "@abp/datatables.net-bs4@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.1.tgz#b008b2964472fd8c8286a7c4b1e903d93a52e760"
integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== integrity sha512-C/MmA6URugDD1tdUS6zS413ycHCjefeIG7nnJrtJmCZix7mfbdrp/Km/vKbE1KMSEYWis0w/SxIEy0kbkIW4OQ==
dependencies: dependencies:
"@abp/datatables.net" "~3.2.0" "@abp/datatables.net" "~3.2.1"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.2.0": "@abp/datatables.net@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.1.tgz#ba7d4c875ad2bc126687bc5d8e627f3c4d7fb2f4"
integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== integrity sha512-o8/K6RGnPkQUe5ClAxyHNBOevVBnb8qSM4NXRXR2AUtEvjal+4UL9QOf1LZ0zPv4OAjaaAiOAp9Pmbv4FWuZ8Q==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/font-awesome@~3.2.0": "@abp/font-awesome@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.1.tgz#d54a6d9627fdfeb6c615550f09241d0c805e3d39"
integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== integrity sha512-5BlAuIX4qFdf/mvycUAREmVQ8jg0tRtDnVXt0E8kUtzghhEGG91NfcZIaB4zaWAwuJSyqqjS/VJ/URy1g50NZQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.2.0": "@abp/jquery-form@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.1.tgz#9280b28e2103fc80b9124e3a53f2f0e03ac4bb46"
integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== integrity sha512-Dy0wTCcmWgygrru59VPnlVw7qLu8aLTZOTpMPbSva502O19O+H7FljF9r0J7eYgoO6pcTO4R1tE/Yib3DwIBFg==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.2.0": "@abp/jquery-validation-unobtrusive@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.1.tgz#8f0b54f0d39b00ab93638fe1537ae7bd77e3e78e"
integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== integrity sha512-mr/jZVm8QuYO1vWcNo3ytuQEeMBvjnMiTrvoUzY1OXX+HUFR6oi8FohXgxFUypElAqQ8jelV9K0qonX1zTQhcg==
dependencies: dependencies:
"@abp/jquery-validation" "~3.2.0" "@abp/jquery-validation" "~3.2.1"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.2.0": "@abp/jquery-validation@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.1.tgz#b5330eb404f357936d16f3dd81752076bfee963d"
integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== integrity sha512-nmubyFyA8TbLdsJt8MAspSRN4St8Xn8ICB8ancdiyxbS/6u9oeKlvP4++ZZ881NlFkPsyo7GkHjfl29pNzzzJA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~3.2.0": "@abp/jquery@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.1.tgz#c7ee0bbff0b480b8ed01f46d1ce07ebc8c35e4a2"
integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== integrity sha512-AvfQ9rnnb+pQUDuGnuhpCB+FzWz3EqDptoeiCDQjPXxGql3Wk5GWw6QzvuREOXcU4CoUyzigyDgnO5WaSlx8kQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
jquery "~3.5.1" jquery "~3.5.1"
"@abp/lodash@~3.2.0": "@abp/lodash@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.1.tgz#7abfe7d572eaa628c033a6d50520b8510ecce79a"
integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== integrity sha512-ZDte0vUfM1fBrs/mRq7yCuugtYZKoP/6pOEebDOMdM1GztAEKicq8s7EXxwbqE4+kjxqeHzReh7ZwCtFAf/Zew==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/luxon@~3.2.0": "@abp/luxon@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.1.tgz#ad3473f24dbacd4d1bc15a07ee75cc1db7f1df6c"
integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== integrity sha512-WZgAMHNx1beQSA48ZJ2x2g408iBXBUvKwBwAFJqbhNhEsO95tutO80j1LNHYvXCbrAatoz6K6IDRXDXV1U3zyg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.2.0": "@abp/malihu-custom-scrollbar-plugin@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.1.tgz#f4a19c6de14c7193eaf6c55c429580dcbcfe3965"
integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== integrity sha512-pu8Tuh67ruG1fLEud1eves/eiBCiuowL+LVLyW+iX1bByfVlOB40nMQ7UCMQ6Jvv31pTEK2dfQ/n8K3W/pFiWQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~3.2.0": "@abp/select2@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.1.tgz#8a04a6f5f10cc4a48a3da37bbc38ff655e626ddf"
integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== integrity sha512-i/euJ+kTHakwCI3Hf9+NhiQG+MYlU0iwp6GRmS2uHqgkMd2gVjnBq+elA2jsi50PXpxowv4vdBCNHcicI58W2w==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert@~3.2.0": "@abp/sweetalert@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.1.tgz#be99820491499fea06259fbc584e799a51cbabf3"
integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== integrity sha512-If5UJQVJ05aEbxPHrwRpuEzCT5ygOHmPzpBblpzSo5XxNNDGGlumnwYmtbXBSXutXrIR0b5//Bo1EgBVtmJHOg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
sweetalert "^2.1.2" sweetalert "^2.1.2"
"@abp/timeago@~3.2.0": "@abp/timeago@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.1.tgz#4e5e6c76d5440de65646a076ce1a9d7225882243"
integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== integrity sha512-4WLWoCYiSg5zYPcogV47TXA+YomDHHY0YfHHWmr6TP2bHd5ghsnMqnnkt58nUN9Psd77teo+Mo9jgR0h2IxRwQ==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/toastr@~3.2.0": "@abp/toastr@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.1.tgz#d35b44234ca6cbd5da6cc5f65d15e827bd7970dc"
integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== integrity sha512-nBmWGL49psSF2tcNnR6PGBcfFAxo2u5HHNRzv2c2z46ZEGFa5DjuY46KZC24jMWY+yprINQewhKTmQUqJvaHqA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/utils@^3.2.0": "@abp/utils@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.1.tgz#960a0bbdfb781bbd6fb05e80bba2b9d95f2ae44c"
integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== integrity sha512-bqYa1VIi1tZXCUbP2Z1WlcgPD4/wjhDVM1jiAN9UzDls1K3u+e2LyR4gLoN39WW1ULjCIhyzEAw/JgTcMmpUBw==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"

4
modules/docs/app/VoloDocs.Web/package.json

@ -3,7 +3,7 @@
"name": "volo.docstestapp", "name": "volo.docstestapp",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.0", "@abp/aspnetcore.mvc.ui.theme.basic": "^3.2.1",
"@abp/docs": "^3.2.0" "@abp/docs": "^3.2.1"
} }
} }

294
modules/docs/app/VoloDocs.Web/yarn.lock

@ -2,45 +2,45 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/anchor-js@~3.2.0": "@abp/anchor-js@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.2.0.tgz#df7e4483d2fbc9c3160031e42e6b27fff5d24d7b" resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-3.2.1.tgz#c8ba822de20c3eef9dd4708d9d3de591c7a86804"
integrity sha512-rA1H6YWvS4bqGevdGM9H+D84ESh+Ka9eg7RzGoWyP4yK+/+Kgj8aOXPXtUrYlETfGwqg4dXQ1iu+AQUELcOaMQ== integrity sha512-Ip8hJbi5GML36Rizb3feUhvpf286n5xBt76+QN9BIW+cLX7U93ECFQEkKbxWEx4GffI5MeMy3VDjdlbzlev75w==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
anchor-js "^4.2.2" anchor-js "^4.2.2"
"@abp/aspnetcore.mvc.ui.theme.basic@^3.2.0": "@abp/aspnetcore.mvc.ui.theme.basic@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.0.tgz#207277419356a14f686421de0ee320fad0d6857f" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-3.2.1.tgz#d8f9af85b6114d35bba5942e303b3a4b89c8cd75"
integrity sha512-4xn4BPQu9QL3sM47QtPNwOei9/fnRw3dXCL7vlJBCU70jL8911C6D/Pj/CBqCEMMVPI6M4GE7Ls4AwKTvgFeTw== integrity sha512-utHlyw/xbtDqqA0ETrYTxZ8ZO49tI6FP3BAvRdevbhozdG8/el6BWpifZysKJv2VIm6d5P7DXD3uymCd5iX6EA==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.0" "@abp/aspnetcore.mvc.ui.theme.shared" "~3.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~3.2.0": "@abp/aspnetcore.mvc.ui.theme.shared@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.0.tgz#bed24c1d28f6e85d58fa963911a09e8b2998c1b6" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-3.2.1.tgz#b628602dca8d1809e32f423962cff56379a790b0"
integrity sha512-Ap1dPCvL7r31oFyi+3YPviFkDly5FZfWbHq2bURsEbscembpc6DOSfXehvuZ2BjqsZF3n/HX0Y1lX4irUqKqjg== integrity sha512-aWZAaFnN9Ncyzy84wPTfUVtcyh98Sxu4m+fsGY5XtwA/nwDTDVtLMq81ueJWyFgN9GNk8+lT6VXfPDpA/MJo/A==
dependencies: dependencies:
"@abp/aspnetcore.mvc.ui" "~3.2.0" "@abp/aspnetcore.mvc.ui" "~3.2.1"
"@abp/bootstrap" "~3.2.0" "@abp/bootstrap" "~3.2.1"
"@abp/bootstrap-datepicker" "~3.2.0" "@abp/bootstrap-datepicker" "~3.2.1"
"@abp/datatables.net-bs4" "~3.2.0" "@abp/datatables.net-bs4" "~3.2.1"
"@abp/font-awesome" "~3.2.0" "@abp/font-awesome" "~3.2.1"
"@abp/jquery-form" "~3.2.0" "@abp/jquery-form" "~3.2.1"
"@abp/jquery-validation-unobtrusive" "~3.2.0" "@abp/jquery-validation-unobtrusive" "~3.2.1"
"@abp/lodash" "~3.2.0" "@abp/lodash" "~3.2.1"
"@abp/luxon" "~3.2.0" "@abp/luxon" "~3.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~3.2.0" "@abp/malihu-custom-scrollbar-plugin" "~3.2.1"
"@abp/select2" "~3.2.0" "@abp/select2" "~3.2.1"
"@abp/sweetalert" "~3.2.0" "@abp/sweetalert" "~3.2.1"
"@abp/timeago" "~3.2.0" "@abp/timeago" "~3.2.1"
"@abp/toastr" "~3.2.0" "@abp/toastr" "~3.2.1"
"@abp/aspnetcore.mvc.ui@~3.2.0": "@abp/aspnetcore.mvc.ui@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.0.tgz#01f80b9f663f4d95ceac733761833cf4648e92b5" resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-3.2.1.tgz#dc0d2c331bf09ef0f79cec739e0f64edb1105084"
integrity sha512-NzH1UxEoE/FVT0LLjMNq5eSsiORLe5dE+aKr7jjbaxcuVr7QI7KI9ry6xWAZk+0cbGvsUAY0xqrMxxqiLpskxQ== integrity sha512-Fpn16MeK71Uhw6636nlXCQaSwN9lN6QFUIGIICcWU+2eMA8fK4ZtavaYGG4mWqjkd4wzUHCz2AZbmbxK7bVnng==
dependencies: dependencies:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
extend-object "^1.0.0" extend-object "^1.0.0"
@ -49,181 +49,181 @@
path "^0.12.7" path "^0.12.7"
rimraf "^3.0.2" rimraf "^3.0.2"
"@abp/bootstrap-datepicker@~3.2.0": "@abp/bootstrap-datepicker@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.0.tgz#0a1813d8a84dd6eb6cf647244a4a91900364deb1" resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-3.2.1.tgz#5cb75bc53fab86f7b28bfc5fbfcbf233432d75ca"
integrity sha512-w7YyA5TRZqGL3qYyArwfrRc4/qWQMT0BPYDOsGMrtPJZDWeZL7WPezuiIvKNdI71BfUq6XiA1+wwMfqjcClZ2g== integrity sha512-KzTDZTMd/TBaTDNuPF4+T+0zsmEimD2Uq8TlNw7knEEyo7a/lsfBNkBF9Xc8bjZcbC76BqajytsTzI1yftM4Uw==
dependencies: dependencies:
bootstrap-datepicker "^1.9.0" bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~3.2.0": "@abp/bootstrap@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.0.tgz#d249338b0151734f99b8e366aea6fc17d5ef9b37" resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-3.2.1.tgz#9574414f1e170240dacdf78408af34830264db97"
integrity sha512-hx9r7EGb1vJrHAdw3D8Cpudv++hrM4dKoKtOKnQbxGG+Q9vwVS6SKquVxJum+bEZWa1CgXvT6co0IDOlW3pDhg== integrity sha512-gLIr4d5xfw5TSpSHIKr7oKznkdIbGhS+gtBitP1BFVLOU2h7/d6uTZoopC+JQU16DGvn8njo8W4DL7Amh9FOqQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
bootstrap "^4.5.0" bootstrap "^4.5.0"
bootstrap-v4-rtl "4.4.1-2" bootstrap-v4-rtl "4.4.1-2"
"@abp/clipboard@~3.2.0": "@abp/clipboard@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.0.tgz#9c9f95c40639cabe89e6bc86ee0f33c853321225" resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-3.2.1.tgz#ffb57db0e73ae7c96df78dc7b739e436c9654ae0"
integrity sha512-WGonC5Hp4FCUBxevIt180QWIqOri0eO//mlRLBqj7gvo7H6zt5f4t90XKF24ZYWXjx7bCbIQQFt5t5ByeqdcJg== integrity sha512-iLCMV8JVkvdDzWf83UlkSIuU4Tiz+/wdGjiCt7lQp538fCYO7EAqurfWwMbb1Kaz0CRFzt/+AbDrXw004AND2Q==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
clipboard "^2.0.6" clipboard "^2.0.6"
"@abp/core@~3.2.0": "@abp/core@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.0.tgz#e9f07bde581b07e1b904bec3b12e0ccfc2a50125" resolved "https://registry.yarnpkg.com/@abp/core/-/core-3.2.1.tgz#3c133f67394d716df3e49f1eeb934c586df755e5"
integrity sha512-X3iWv8QxAbqKJMoTb3vfvwGYmD9uZ+p+zn5q5Hoybyq9fjEcevpkdX7OiLvO8M+NEwCKa81wtkvvM2BnEV6Igg== integrity sha512-GbjrFO+oKl4JuZkYdeWtE+N837XRQr0hoX8O3pI1eAnuMku48QhGec2ZpSJuqG+c3wX6PHTZPIyHse4X+y6QgA==
dependencies: dependencies:
"@abp/utils" "^3.2.0" "@abp/utils" "^3.2.1"
"@abp/datatables.net-bs4@~3.2.0": "@abp/datatables.net-bs4@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.0.tgz#8551c0ac5e29b037a86b141f41052e7a3038be89" resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-3.2.1.tgz#b008b2964472fd8c8286a7c4b1e903d93a52e760"
integrity sha512-i2LVTKAllgzhc21rb0GQ0YHtmOMyCT+6P3ZelqkoLdp56D63rVhdAOHrqjebrEHMehsuCUV2XH908kakXWIPXA== integrity sha512-C/MmA6URugDD1tdUS6zS413ycHCjefeIG7nnJrtJmCZix7mfbdrp/Km/vKbE1KMSEYWis0w/SxIEy0kbkIW4OQ==
dependencies: dependencies:
"@abp/datatables.net" "~3.2.0" "@abp/datatables.net" "~3.2.1"
datatables.net-bs4 "^1.10.21" datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~3.2.0": "@abp/datatables.net@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.0.tgz#effd0ec603b15c0de2d1db993d1416b46f4e3146" resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-3.2.1.tgz#ba7d4c875ad2bc126687bc5d8e627f3c4d7fb2f4"
integrity sha512-6UX/WqdlRfb3BQ2cw7LbUlMimDXtx7rHanTTWq44g+Wc8fn4fVcYyo9RWCYYOd2MWm9pElEvuzG1AzaOamjW9Q== integrity sha512-o8/K6RGnPkQUe5ClAxyHNBOevVBnb8qSM4NXRXR2AUtEvjal+4UL9QOf1LZ0zPv4OAjaaAiOAp9Pmbv4FWuZ8Q==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
datatables.net "^1.10.21" datatables.net "^1.10.21"
"@abp/docs@^3.2.0": "@abp/docs@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.2.0.tgz#f4b5284af7ebbd1f5b9b741ebfb61ac2fd71fa4a" resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-3.2.1.tgz#2c5ed5c2f7696cfbf4068ad2046d8d175c298b26"
integrity sha512-ZrCUHjrTba82NJRwZYUUyLxWIp6tu8ZdHpq1vnlfr5rZ+5m1vAx0dRi0VY3x50ZifIE65cqoI91F32fHYiE8KA== integrity sha512-3KE6t6u5GB+q7Y+SxPFxtvhtbgxiELPWrLDBkUZvI9u/QCrDzV1ZmlupgNhfKtk/T16s3JDXR6HtT67P3fOd1g==
dependencies: dependencies:
"@abp/anchor-js" "~3.2.0" "@abp/anchor-js" "~3.2.1"
"@abp/clipboard" "~3.2.0" "@abp/clipboard" "~3.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~3.2.0" "@abp/malihu-custom-scrollbar-plugin" "~3.2.1"
"@abp/popper.js" "~3.2.0" "@abp/popper.js" "~3.2.1"
"@abp/prismjs" "~3.2.0" "@abp/prismjs" "~3.2.1"
"@abp/font-awesome@~3.2.0": "@abp/font-awesome@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.0.tgz#ad75daf1c084c2c6a0aeccc092057627ce898652" resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-3.2.1.tgz#d54a6d9627fdfeb6c615550f09241d0c805e3d39"
integrity sha512-FAWBYWwg2ZtKO+0/lS/bc4YFnR7IehQ2Y+y1srIypgSY/739X4aUWb0YDW1tE0QrrFfQ//f16AyIKPynGl0T5Q== integrity sha512-5BlAuIX4qFdf/mvycUAREmVQ8jg0tRtDnVXt0E8kUtzghhEGG91NfcZIaB4zaWAwuJSyqqjS/VJ/URy1g50NZQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
"@fortawesome/fontawesome-free" "^5.13.0" "@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~3.2.0": "@abp/jquery-form@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.0.tgz#b1b408c0f380c8dfd99c063251f2f1fd86dff14c" resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-3.2.1.tgz#9280b28e2103fc80b9124e3a53f2f0e03ac4bb46"
integrity sha512-ZC38zLqlMm67nONg+7ZSC7ExzLZApZ2nZ3/yM6J5LNa7IOgzDGPZgbDRBiwFdC3vIB04LhnNr83YrEvIaUnIzQ== integrity sha512-Dy0wTCcmWgygrru59VPnlVw7qLu8aLTZOTpMPbSva502O19O+H7FljF9r0J7eYgoO6pcTO4R1tE/Yib3DwIBFg==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-form "^4.3.0" jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~3.2.0": "@abp/jquery-validation-unobtrusive@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.0.tgz#91b996c743e5b1423a4d01d8808788a4bf4adb32" resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.1.tgz#8f0b54f0d39b00ab93638fe1537ae7bd77e3e78e"
integrity sha512-FSkGWvIkZTd2LITbTCdyno0ml30PZZmGYCazowHprh1iuhx0C+yCd9U/kfZ3rLoZAFtWjz0ZUq1Z7G5xXHB97A== integrity sha512-mr/jZVm8QuYO1vWcNo3ytuQEeMBvjnMiTrvoUzY1OXX+HUFR6oi8FohXgxFUypElAqQ8jelV9K0qonX1zTQhcg==
dependencies: dependencies:
"@abp/jquery-validation" "~3.2.0" "@abp/jquery-validation" "~3.2.1"
jquery-validation-unobtrusive "^3.2.11" jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~3.2.0": "@abp/jquery-validation@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.0.tgz#1de41e9167b41a956ce2f6e3d6f16d023fccd078" resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-3.2.1.tgz#b5330eb404f357936d16f3dd81752076bfee963d"
integrity sha512-FlP7btUvAJfGoi0g8Hm474jlhtweyd/P6dRu2spApUOpKjMyUNFpp/nphmr0iQvx7JGeeaAaUhQJ2v5UKy/Z8w== integrity sha512-nmubyFyA8TbLdsJt8MAspSRN4St8Xn8ICB8ancdiyxbS/6u9oeKlvP4++ZZ881NlFkPsyo7GkHjfl29pNzzzJA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
jquery-validation "^1.19.2" jquery-validation "^1.19.2"
"@abp/jquery@~3.2.0": "@abp/jquery@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.0.tgz#eabc0bafef3cf2b64f672c562bda1f1002b07b7c" resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-3.2.1.tgz#c7ee0bbff0b480b8ed01f46d1ce07ebc8c35e4a2"
integrity sha512-tlvQ79cqyJ+tXEf17Vdwi6O8yo0+7bmicyy5A/iYyWWJUjXGkiouQHjHkoZ2jeyxwvqn85tBbfjeRumcZdYRMA== integrity sha512-AvfQ9rnnb+pQUDuGnuhpCB+FzWz3EqDptoeiCDQjPXxGql3Wk5GWw6QzvuREOXcU4CoUyzigyDgnO5WaSlx8kQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
jquery "~3.5.1" jquery "~3.5.1"
"@abp/lodash@~3.2.0": "@abp/lodash@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.0.tgz#63e8c51fe9e760d7debca9129bfbf01be8c12d18" resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-3.2.1.tgz#7abfe7d572eaa628c033a6d50520b8510ecce79a"
integrity sha512-/rGkJMCgbA0JLkjMXenxz6q0BXRDwvYSLUu7XotNj/cbiHpT5yHHTnWQgwxVUKEVA9xtmYUH1h20J25n/VD/tg== integrity sha512-ZDte0vUfM1fBrs/mRq7yCuugtYZKoP/6pOEebDOMdM1GztAEKicq8s7EXxwbqE4+kjxqeHzReh7ZwCtFAf/Zew==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
lodash "^4.17.15" lodash "^4.17.15"
"@abp/luxon@~3.2.0": "@abp/luxon@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.0.tgz#f94b595d15d78868a4acf73803a9da8609096d39" resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-3.2.1.tgz#ad3473f24dbacd4d1bc15a07ee75cc1db7f1df6c"
integrity sha512-3FF9/W+Smp4FqRJ6F5vNxydXYraVgEUsrOBkaBexVkzT/l3zBkCmrJ8i+Eib8xBXpS6Ku4nmpqbqm1VYhlxKTQ== integrity sha512-WZgAMHNx1beQSA48ZJ2x2g408iBXBUvKwBwAFJqbhNhEsO95tutO80j1LNHYvXCbrAatoz6K6IDRXDXV1U3zyg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
luxon "^1.24.1" luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~3.2.0": "@abp/malihu-custom-scrollbar-plugin@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.0.tgz#bd11a36a37ec23d38cba116934398696379158b1" resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.2.1.tgz#f4a19c6de14c7193eaf6c55c429580dcbcfe3965"
integrity sha512-BYGICB55RsYHmaICnyWdCewo0uEbopmuuUuCJlE+2IY1I4JchSWG2mV//F+jOZQmlOsjYufK70BrQQEIr+ewXw== integrity sha512-pu8Tuh67ruG1fLEud1eves/eiBCiuowL+LVLyW+iX1bByfVlOB40nMQ7UCMQ6Jvv31pTEK2dfQ/n8K3W/pFiWQ==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
malihu-custom-scrollbar-plugin "^3.1.5" malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/popper.js@~3.2.0": "@abp/popper.js@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.2.0.tgz#2b1c078ad56a8e80e4030154b0e30f9e07a5e103" resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-3.2.1.tgz#721d788582accf3ef61bff5772914311974cb3a6"
integrity sha512-mdmx6qrkZvOKYBD9n0cblMKygWYprn9Mw8BB468oV/vf6izzGYgiOsC2dtwXLrVsELIaPQMZZbKVeeyPxgiH0Q== integrity sha512-AgqOsCPWX/GCY5RNpvkfBpKriCChAI1+kvO7m8h9vXpXfYITzeQ6TvR7x1iwhZTncv1zeUWcKTskq/J5U9DAcw==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
popper.js "^1.16.0" popper.js "^1.16.0"
"@abp/prismjs@~3.2.0": "@abp/prismjs@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.0.tgz#11c7c3023f11097a3eb26d8a0c04f7fa39d9531b" resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-3.2.1.tgz#8f8ef367c9a10c3ec871d721055fbed4a8ec867a"
integrity sha512-OafE/K8rC7popNQDh1J97AtPuxVeAFWh/msfHE3K5nmdYABpl8U7190ITw5COcVjjFLCEONpkkhfN/9ZdAQ8fQ== integrity sha512-+wcKmi/F66qGRmTk+oYgYmJo+b9kQvJ+BG/+vIsN+n3Dzb/sjaDmc18pMFhEKWy7P/Yq28NxZdK+qO1LgzTktg==
dependencies: dependencies:
"@abp/clipboard" "~3.2.0" "@abp/clipboard" "~3.2.1"
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
prismjs "^1.20.0" prismjs "^1.20.0"
"@abp/select2@~3.2.0": "@abp/select2@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.0.tgz#729f82695bbfd7ab3d7a90059a198f338037c867" resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-3.2.1.tgz#8a04a6f5f10cc4a48a3da37bbc38ff655e626ddf"
integrity sha512-83V8jIR8RGFJ3II5G7/bitlv44OHOEENKDrT639OYIxHfgWEWm4CBhcyCnlZJqv6xB2AVDfFPgCPlDGl3x3tmw== integrity sha512-i/euJ+kTHakwCI3Hf9+NhiQG+MYlU0iwp6GRmS2uHqgkMd2gVjnBq+elA2jsi50PXpxowv4vdBCNHcicI58W2w==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
select2 "^4.0.13" select2 "^4.0.13"
"@abp/sweetalert@~3.2.0": "@abp/sweetalert@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.0.tgz#05040b7276ca2ce62ffc20865d64fb6e0fdb62cb" resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-3.2.1.tgz#be99820491499fea06259fbc584e799a51cbabf3"
integrity sha512-BEgbWwWX2uOsVS/zV6OzlxRBCtSlqeAYdSkmDjQ7pzCthwZXPPFr1o8UXyp9W7GKwDg3lfWTQPkkm+2y587xEw== integrity sha512-If5UJQVJ05aEbxPHrwRpuEzCT5ygOHmPzpBblpzSo5XxNNDGGlumnwYmtbXBSXutXrIR0b5//Bo1EgBVtmJHOg==
dependencies: dependencies:
"@abp/core" "~3.2.0" "@abp/core" "~3.2.1"
sweetalert "^2.1.2" sweetalert "^2.1.2"
"@abp/timeago@~3.2.0": "@abp/timeago@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.0.tgz#e4a207566c00ccb3161ee91c6f6ce26419e4bbaf" resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-3.2.1.tgz#4e5e6c76d5440de65646a076ce1a9d7225882243"
integrity sha512-VUk8c3hITZfu5aA21XB2Qaw5fwoeAl36Piy0Cb3aUOCFjyGWg19htXxDoT7rzqZ5UJFN0VRYg9MzciXZrFN5/w== integrity sha512-4WLWoCYiSg5zYPcogV47TXA+YomDHHY0YfHHWmr6TP2bHd5ghsnMqnnkt58nUN9Psd77teo+Mo9jgR0h2IxRwQ==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
timeago "^1.6.7" timeago "^1.6.7"
"@abp/toastr@~3.2.0": "@abp/toastr@~3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.0.tgz#059e1e1e998207a6f75db2bfe717bec2a0b6d955" resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-3.2.1.tgz#d35b44234ca6cbd5da6cc5f65d15e827bd7970dc"
integrity sha512-EKikZVQDaX/uQfc0rWsW2x+UDsO4r80KC3pLvRaLXW5IEwEhTpYwZDUGReOEQ8YEk7UKOXrVJA07mxkbdOzyAw== integrity sha512-nBmWGL49psSF2tcNnR6PGBcfFAxo2u5HHNRzv2c2z46ZEGFa5DjuY46KZC24jMWY+yprINQewhKTmQUqJvaHqA==
dependencies: dependencies:
"@abp/jquery" "~3.2.0" "@abp/jquery" "~3.2.1"
toastr "^2.1.4" toastr "^2.1.4"
"@abp/utils@^3.2.0": "@abp/utils@^3.2.1":
version "3.2.0" version "3.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.0.tgz#084918379f2c5e43c1e52291ba6667f3ea3c1f33" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-3.2.1.tgz#960a0bbdfb781bbd6fb05e80bba2b9d95f2ae44c"
integrity sha512-DZsvF/I5o3r0D1+2B61KvJX78/tJ5uj9MaPq00Z/sxXdqsP2SQQmjhMm+Lb0FgGMK06XIoF9eDgM3Hu0y0H3cQ== integrity sha512-bqYa1VIi1tZXCUbP2Z1WlcgPD4/wjhDVM1jiAN9UzDls1K3u+e2LyR4gLoN39WW1ULjCIhyzEAw/JgTcMmpUBw==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"

2
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs

@ -19,7 +19,5 @@ namespace Volo.Docs.Admin.Documents
Task RemoveFromCacheAsync(Guid documentId); Task RemoveFromCacheAsync(Guid documentId);
Task ReindexAsync(Guid documentId); Task ReindexAsync(Guid documentId);
Task DeleteFromDatabaseAsync(Guid documentId);
} }
} }

3
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/ar.json

@ -43,7 +43,6 @@
"RemovedFromCache": "تم الحذف من ذاكرة التخزين", "RemovedFromCache": "تم الحذف من ذاكرة التخزين",
"RemoveFromCacheConfirmation": "هل أنت متأكد من حذف هذا العنصر من ذاكرة التخزين؟", "RemoveFromCacheConfirmation": "هل أنت متأكد من حذف هذا العنصر من ذاكرة التخزين؟",
"ReIndexDocumentConfirmation": "هل أنت متأكد من إعادة فهرسة هذا العنصر؟", "ReIndexDocumentConfirmation": "هل أنت متأكد من إعادة فهرسة هذا العنصر؟",
"DeleteDocumentFromDbConfirmation": "هل أنت متأكد من حذف هذا العنصر من قاعدة البيانات؟",
"DeleteFromDatabase": "حذف من قاعدة البيانات", "DeleteFromDatabase": "حذف من قاعدة البيانات",
"Deleted": "محذوف", "Deleted": "محذوف",
"Search": "بحث", "Search": "بحث",
@ -57,4 +56,4 @@
"FileName": "اسم الملف", "FileName": "اسم الملف",
"LastCachedTime": "وقت ذاكرة التخزين" "LastCachedTime": "وقت ذاكرة التخزين"
} }
} }

1
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/cs.json

@ -43,7 +43,6 @@
"RemovedFromCache": "Odebráno z mezipaměti", "RemovedFromCache": "Odebráno z mezipaměti",
"RemoveFromCacheConfirmation": "Opravdu chcete tuto položku odebrat z mezipaměti?", "RemoveFromCacheConfirmation": "Opravdu chcete tuto položku odebrat z mezipaměti?",
"ReIndexDocumentConfirmation": "Opravdu chcete tuto položku reindexovat?", "ReIndexDocumentConfirmation": "Opravdu chcete tuto položku reindexovat?",
"DeleteDocumentFromDbConfirmation": "Opravdu chcete tuto položku odstranit z databáze?",
"DeleteFromDatabase": "Odstranit z databáze", "DeleteFromDatabase": "Odstranit z databáze",
"Deleted": "Vymazáno", "Deleted": "Vymazáno",
"Search": "Vyhledávání", "Search": "Vyhledávání",

1
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/en.json

@ -43,7 +43,6 @@
"RemovedFromCache": "Removed from cache", "RemovedFromCache": "Removed from cache",
"RemoveFromCacheConfirmation": "Are you sure you want to remove this item from cache?", "RemoveFromCacheConfirmation": "Are you sure you want to remove this item from cache?",
"ReIndexDocumentConfirmation": "Are you sure you want to reindex this item?", "ReIndexDocumentConfirmation": "Are you sure you want to reindex this item?",
"DeleteDocumentFromDbConfirmation": "Are you sure you want to delete this item from database?",
"DeleteFromDatabase": "Delete from database", "DeleteFromDatabase": "Delete from database",
"Deleted": "Deleted", "Deleted": "Deleted",
"Search": "Search", "Search": "Search",

3
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/tr.json

@ -41,8 +41,7 @@
"RemovedFromCache": "Önbellekten kaldırıldı", "RemovedFromCache": "Önbellekten kaldırıldı",
"RemoveFromCacheConfirmation": "Bu maddeyi önbellekten kaldırmak istediğiniz emin misiniz?", "RemoveFromCacheConfirmation": "Bu maddeyi önbellekten kaldırmak istediğiniz emin misiniz?",
"ReIndexDocumentConfirmation": "Bu maddeyi yeniden indekslemek istediğinize emin misiniz?", "ReIndexDocumentConfirmation": "Bu maddeyi yeniden indekslemek istediğinize emin misiniz?",
"DeleteDocumentFromDbConfirmation": "Bu maddeyi veritabanından silmek istediğinize emin misiniz?",
"DeleteFromDatabase": "Veritabanından sil", "DeleteFromDatabase": "Veritabanından sil",
"Deleted": "Silindi" "Deleted": "Silindi"
} }
} }

11
modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs

@ -205,10 +205,7 @@ namespace Volo.Docs.Admin.Documents
); );
await _documentUpdateCache.RemoveAsync(documentUpdateInfoCacheKey); await _documentUpdateCache.RemoveAsync(documentUpdateInfoCacheKey);
await _documentRepository.DeleteAsync(document);
document.LastCachedTime = DateTime.MinValue;
await _documentRepository.UpdateAsync(document);
} }
public async Task ReindexAsync(Guid documentId) public async Task ReindexAsync(Guid documentId)
@ -218,12 +215,6 @@ namespace Volo.Docs.Admin.Documents
await _documentFullSearch.AddOrUpdateAsync(document); await _documentFullSearch.AddOrUpdateAsync(document);
} }
public async Task DeleteFromDatabaseAsync(Guid documentId)
{
var document = await _documentRepository.GetAsync(documentId);
await _documentRepository.DeleteAsync(document);
}
private async Task UpdateDocumentUpdateInfoCache(Document document) private async Task UpdateDocumentUpdateInfoCache(Document document)
{ {
var cacheKey = $"DocumentUpdateInfo{document.ProjectId}#{document.Name}#{document.LanguageCode}#{document.Version}"; var cacheKey = $"DocumentUpdateInfo{document.ProjectId}#{document.Name}#{document.LanguageCode}#{document.Version}";

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save