From df28a8e73b59e85d85d7a42a071707e5302e2bc7 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Thu, 1 Apr 2021 10:29:16 +0300 Subject: [PATCH 001/125] docs: add docs for page component --- docs/en/UI/Angular/Page-Component.md | 211 +++++++++++++++++++++++++++ docs/en/docs-nav.json | 9 ++ 2 files changed, 220 insertions(+) create mode 100644 docs/en/UI/Angular/Page-Component.md diff --git a/docs/en/UI/Angular/Page-Component.md b/docs/en/UI/Angular/Page-Component.md new file mode 100644 index 0000000000..a019990be1 --- /dev/null +++ b/docs/en/UI/Angular/Page-Component.md @@ -0,0 +1,211 @@ +# Page Component + +ABP provides a component that wraps your content with some built-in components to recude the amount of code you need to write. + +If the template of a component looks like as follows, you can utilize the `abp-page` components. + +E.g. + +`app.component.ts` + +```html +
+
+

{{ '::AppTitle' | abpLocalization }}

+
+ +
+ +
+
+ +
+ +
+``` + +## Page Parts + +PageComponent divides the template shown above into three parts, `title`, `breadcrumb`, `toolbar`. Each can be configured separately. + +## Usage + +Firstly, you need to import `PageModule` from `@abp/ng.components/page` as follows: + +`app.module.ts` + +```javascript +import { PageModule } from '@abp/ng.components/page'; +import { AppComponent } from './app.component'; + +@NgModule({ + declarations: [AppComponent], + imports: [PageModule] +}) +export class AppModule {} +``` + +And change the template of `app.component.ts` to the following: + +```html + +
+ +
+
+``` + +## Inputs + +* title: `string`: Will be be rendered within `h1.content-header-title`. If not provided, the parent `div` will not be rendered +* breadcrumb: `boolean`: Determines whether to render `abp-breadcrumb`. Default is `true`. +* toolbar: `any`: Will be passed into `abp-page-toolbar` component through `record` input. If your page does not contain `abp-page-toolbar`, you can simply omit this field. + +## Overriding template + +If you need to replace the template of any part, you can use following sub components. + +```html + + +
+

Custom Title

+
+
+ + +
+ +
+
+ + +
+ +
+
+
+``` + +You do not have to provide them all. You can just use which one you need to replace. These components have priority over the inputs declared above. If you use these components, you can omit the inputs. + +## PagePartDirective + +`PageModule` provides a structural directive that is used internally within `PageComponent` and can also be used externally. + +`PageComponent` employs this directive internally as follows: + +```html +
+ +
+``` + +It also can take a context input as follows: + +```html +
+ +
+``` + +```javascript +enum PageParts { + title = 'PageTitleContainerComponent', + breadcrumb = 'PageBreadcrumbContainerComponent', + toolbar = 'PageToolbarContainerComponent', +} +``` + +It's render strategy can be provided through Angular's Depedency Injection system. + +It expects a service through the `PAGE_RENDER_STRATEGY` injection token that implements the following interface. + +```javascript +interface PageRenderStrategy { + shouldRender(type?: string): boolean | Observable; + onInit?(type?: string, injector?: Injector, context?: any): void; + onDestroy?(type?: string, injector?: Injector, context?: any): void; + onContextUpdate?(change?: SimpleChange): void; +} +``` + +* `shouldRender` (required): It takes a string input named `type` and expects a `boolean` or `Observable`. +* `onInit` (optional): Will be called when the directive is initiated. Three inputs will be passed into this method. + * `type`: type of the page part + * `injector`: injector of the directive which could be used to retrieve anything from directive's DI tree. + * `context`: whatever context is available at initialization phase. +* `onDestroy` (optional): Will be called when the directive is destroyed. The parameters are the same with `onInit` +* `onContextUpdate` (optional): Will be called when the context is updated. + * `change`: changes of the `context` will be passed through this method. + +Let's see everything in action. + +```javascript +import {  + PageModule, + PageRenderStrategy, + PageParts, + PAGE_RENDER_STRATEGY +} from '@abp/ng.components/page'; +@Injectable() +export class MyPageRenderStrategy implements PageRenderStrategy { + shouldRender(type: string) { + // meaning everything but breadcrumb will be rendered + return type !== PageParts.breadcrumb && type !== 'custom-part'; + } + + /** + * shouldRender can also return an Observable which means + * an async service can be used within. + + constructor(private service: SomeAsyncService) {} + + shouldRender(type: string) { + return this.service.checkTypeAsync(type).pipe(map(val => val.isTrue())); + } + */ + + onInit(type: string, injector: Injector, context: any) { + // this method will be called in ngOnInit of the directive + } + + onDestroy(type: string, injector: Injector, context: any) { + // this method will be called in ngOnDestroy of the directive + } + + onContextUpdate?(change?: SimpleChange) { + // this method will be called everytime context is updated within the directive + } +} + +@Component({ + selector: 'app-root', + template: ` + + + + + +
+

Inner Title

+
+
+ ` +}) +export class AppComponent {} + +@NgModule({ + imports: [PageModule], + declarations: [AppComponent], + providers: [ + { + provide: PAGE_RENDER_STRATEGY, + useClass: MyPageRenderStrategy, + } + ] +}) +export class AppModule {} +``` diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index ec3341c623..a48afe8597 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -886,6 +886,15 @@ ] } ] + }, + { + "text": "Components", + "items": [ + { + "text": "Page", + "path": "UI/Angular/Page-Component.md" + } + ] } ] }, From 81ecdb45465bc9cd395a781dd78f897ee926fcd0 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Thu, 1 Apr 2021 11:49:31 +0300 Subject: [PATCH 002/125] docs: fix minor typos and improve page-comp docs --- docs/en/UI/Angular/Page-Component.md | 38 +++++++++++++++------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/docs/en/UI/Angular/Page-Component.md b/docs/en/UI/Angular/Page-Component.md index a019990be1..3c9e557176 100644 --- a/docs/en/UI/Angular/Page-Component.md +++ b/docs/en/UI/Angular/Page-Component.md @@ -1,8 +1,8 @@ # Page Component -ABP provides a component that wraps your content with some built-in components to recude the amount of code you need to write. +ABP provides a component that wraps your content with some built-in components to reduce the amount of code you need to write. -If the template of a component looks like as follows, you can utilize the `abp-page` components. +If the template of a component looks as follows, you can utilize the `abp-page` component. E.g. @@ -22,13 +22,21 @@ E.g.
- +
``` ## Page Parts -PageComponent divides the template shown above into three parts, `title`, `breadcrumb`, `toolbar`. Each can be configured separately. +PageComponent divides the template shown above into three parts, `title`, `breadcrumb`, `toolbar`. Each can be configured separately. There, also, is an enum exported from the package that describes each part. + +```javascript +export enum PageParts { + title = 'PageTitleContainerComponent', + breadcrumb = 'PageBreadcrumbContainerComponent', + toolbar = 'PageToolbarContainerComponent', +} +``` ## Usage @@ -65,7 +73,7 @@ And change the template of `app.component.ts` to the following: ## Overriding template -If you need to replace the template of any part, you can use following sub components. +If you need to replace the template of any part, you can use the following sub-components. ```html @@ -111,15 +119,7 @@ It also can take a context input as follows: ``` -```javascript -enum PageParts { - title = 'PageTitleContainerComponent', - breadcrumb = 'PageBreadcrumbContainerComponent', - toolbar = 'PageToolbarContainerComponent', -} -``` - -It's render strategy can be provided through Angular's Depedency Injection system. +Its render strategy can be provided through Angular's Dependency Injection system. It expects a service through the `PAGE_RENDER_STRATEGY` injection token that implements the following interface. @@ -132,11 +132,11 @@ interface PageRenderStrategy { } ``` -* `shouldRender` (required): It takes a string input named `type` and expects a `boolean` or `Observable`. +* `shouldRender` (required): It takes a string input named `type` and expects a `boolean` or `Observable` in return. * `onInit` (optional): Will be called when the directive is initiated. Three inputs will be passed into this method. * `type`: type of the page part * `injector`: injector of the directive which could be used to retrieve anything from directive's DI tree. - * `context`: whatever context is available at initialization phase. + * `context`: whatever context is available at the initialization phase. * `onDestroy` (optional): Will be called when the directive is destroyed. The parameters are the same with `onInit` * `onContextUpdate` (optional): Will be called when the context is updated. * `change`: changes of the `context` will be passed through this method. @@ -153,7 +153,7 @@ import {  @Injectable() export class MyPageRenderStrategy implements PageRenderStrategy { shouldRender(type: string) { - // meaning everything but breadcrumb will be rendered + // meaning everything but breadcrumb and custom-part will be rendered return type !== PageParts.breadcrumb && type !== 'custom-part'; } @@ -209,3 +209,7 @@ export class AppComponent {} }) export class AppModule {} ``` + +## See Also + +- [Page Toolbar Extensions for Angular UI](./Page-Page-Toolbar-Extensions.md) From ad0c63b965706ab862c8bb73917d1d84250929a1 Mon Sep 17 00:00:00 2001 From: Mladen Macanovic Date: Thu, 1 Apr 2021 11:24:06 +0200 Subject: [PATCH 003/125] Show Autocomplete dropdown on focus --- .../ObjectExtending/LookupExtensionProperty.razor | 3 ++- .../LookupExtensionProperty.razor.cs | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor index a8257b9570..4a305d606d 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor @@ -12,7 +12,8 @@ ValueField="item=>item.Value" SelectedValue="@SelectedValue" SelectedValueChanged="@SelectedValueChanged" - SearchChanged="@SearchFilterChangedAsync"> + SearchChanged="@SearchFilterChangedAsync" + MinLength="0"> \ No newline at end of file diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor.cs b/framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor.cs index b4e74b16d9..bd8c1869cc 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/ObjectExtending/LookupExtensionProperty.razor.cs @@ -96,14 +96,26 @@ namespace Volo.Abp.BlazoriseUI.Components.ObjectExtending return selectItems; } - protected virtual void SelectedValueChanged(object selectedItem) + protected virtual Task SelectedValueChanged(object selectedItem) { SelectedValue = selectedItem; + + return Task.CompletedTask; } protected async Task SearchFilterChangedAsync(string filter) { lookupItems = await GetLookupItemsAsync(filter); } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await base.OnAfterRenderAsync(firstRender); + + if (firstRender) + { + await SearchFilterChangedAsync(string.Empty); + } + } } } \ No newline at end of file From 5bb9f4c92c33da1bd4d4440c59d381c47b1faef1 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Thu, 1 Apr 2021 13:59:05 +0300 Subject: [PATCH 004/125] Add missing localizations --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 3 ++- .../AbpIoLocalization/Admin/Localization/Resources/tr.json | 3 ++- .../Admin/Localization/Resources/zh-Hans.json | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 5167f46080..09d93b946c 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -271,6 +271,7 @@ "PaymentDetails": "Payment Details", "PaymentProduct": "Payment Product", "ProductName": "Product Name", - "Code": "Code" + "Code": "Code", + "GenerateInvoice": "Generate Invoice" } } diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json index d6f086c1f6..531e0424d4 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json @@ -220,6 +220,7 @@ "PaymentDetails": "Ödeme Detayları", "PaymentProduct": "Ödeme Ürünü", "ProductName": "Ürün İsmi", - "Code": "Kod" + "Code": "Kod", + "GenerateInvoice": "Fatura Oluştur" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json index 46ba210b74..a027bd3699 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json @@ -255,6 +255,7 @@ "PaymentDetails": "付款详情", "PaymentProduct": "付款产品", "ProductName": "产品名称", - "Code": "代码" + "Code": "代码", + "GenerateInvoice": "生成发票" } } \ No newline at end of file From 43af3b7f72b46b8e89b833a93d2a37607f92621d Mon Sep 17 00:00:00 2001 From: Ilkay Ilknur Date: Fri, 2 Apr 2021 16:02:00 +0300 Subject: [PATCH 005/125] blazor UI extensions documentation --- .../Customizing-Application-Modules-Guide.md | 3 + .../UI/Blazor/Data-Table-Column-Extensions.md | 128 ++++++++++++++++++ docs/en/UI/Blazor/Entity-Action-Extensions.md | 111 +++++++++++++++ docs/en/UI/Blazor/Page-Toolbar-Extensions.md | 126 +++++++++++++++++ ...nsion-blazor-component-render-solution.png | Bin 0 -> 4854 bytes ...olum-extension-blazor-component-render.png | Bin 0 -> 19197 bytes docs/en/images/page-toolbar-button-blazor.png | Bin 0 -> 35352 bytes .../page-toolbar-custom-component-blazor.png | Bin 0 -> 9491 bytes .../table-column-extension-example-blazor.png | Bin 0 -> 19154 bytes .../user-action-blazor-extension-click-me.png | Bin 0 -> 21729 bytes ...ser-action-extension-on-blazor-project.png | Bin 0 -> 7964 bytes 11 files changed, 368 insertions(+) create mode 100644 docs/en/UI/Blazor/Data-Table-Column-Extensions.md create mode 100644 docs/en/UI/Blazor/Entity-Action-Extensions.md create mode 100644 docs/en/UI/Blazor/Page-Toolbar-Extensions.md create mode 100644 docs/en/images/data-table-colum-extension-blazor-component-render-solution.png create mode 100644 docs/en/images/data-table-colum-extension-blazor-component-render.png create mode 100644 docs/en/images/page-toolbar-button-blazor.png create mode 100644 docs/en/images/page-toolbar-custom-component-blazor.png create mode 100644 docs/en/images/table-column-extension-example-blazor.png create mode 100644 docs/en/images/user-action-blazor-extension-click-me.png create mode 100644 docs/en/images/user-action-extension-on-blazor-project.png diff --git a/docs/en/Customizing-Application-Modules-Guide.md b/docs/en/Customizing-Application-Modules-Guide.md index 56b94ae4fc..438c087e0c 100644 --- a/docs/en/Customizing-Application-Modules-Guide.md +++ b/docs/en/Customizing-Application-Modules-Guide.md @@ -75,6 +75,7 @@ There are some low level systems that you can control entity actions, table colu Entity action extension system allows you to add a new action to the action menu for an entity on the user interface; * [Entity Action Extensions for ASP.NET Core UI](UI/AspNetCore/Entity-Action-Extensions.md) +* [Entity Action Extensions for Blazor UI](UI/Blazor/Entity-Action-Extensions.md) * [Entity Action Extensions for Angular](UI/Angular/Entity-Action-Extensions.md) #### Data Table Column Extensions @@ -82,6 +83,7 @@ Entity action extension system allows you to add a new action to the action menu Data table column extension system allows you to add a new column in the data table on the user interface; * [Data Table Column Extensions for ASP.NET Core UI](UI/AspNetCore/Data-Table-Column-Extensions.md) +* [Data Table Column Extensions for Blazor UI](UI/Blazor/Data-Table-Column-Extensions.md) * [Data Table Column Extensions for Angular](UI/Angular/Data-Table-Column-Extensions.md) #### Page Toolbar @@ -89,6 +91,7 @@ Data table column extension system allows you to add a new column in the data ta Page toolbar system allows you to add components to the toolbar of a page; * [Page Toolbar Extensions for ASP.NET Core UI](UI/AspNetCore/Page-Toolbar-Extensions.md) +* [Page Toolbar Extensions for Blazor UI](UI/Blazor/Page-Toolbar-Extensions.md) * [Page Toolbar Extensions for Angular](UI/Angular/Page-Toolbar-Extensions.md) #### Others diff --git a/docs/en/UI/Blazor/Data-Table-Column-Extensions.md b/docs/en/UI/Blazor/Data-Table-Column-Extensions.md new file mode 100644 index 0000000000..e86dfd08c7 --- /dev/null +++ b/docs/en/UI/Blazor/Data-Table-Column-Extensions.md @@ -0,0 +1,128 @@ +# Data Table Column Extensions for Blazor UI + +## Introduction + +Data table column extension system allows you to add a **new table column** on the user interface. The example below adds a new column with the "Email Confirmed" title: + +![datatable-column-extension-](../../images/table-column-extension-example-blazor.png) + +You can use the standard column options to fine control the table column. + +> Note that this is a low level API to find control the table column. If you want to show an extension property on the table, see the [module entity extension](../../Module-Entity-Extensions.md) document. + +## How to Set Up + +### Create a C# File + +First, add a new C# file to your solution. We added inside the `/Pages/Identity/` folder of the `.Blazor` project: + +![user-action-extension-on-solution](../../images/user-action-extension-on-blazor-project.png) + +We will use the [component override system](Customization-Overriding-Components.md) in the Blazor. After creating a class inherits from the `UserManagement` component, we will override the `SetTableColumnsAsync` method and add the table column programmatically. + +Here, the content of the overridden `SetTableColumnsAsync` method. + +```csharp +protected override async ValueTask SetTableColumnsAsync() +{ + await base.SetTableColumnsAsync(); + var confirmedColumn = new TableColumn + { + Title = "Email Confirmed", + Data = nameof(IdentityUserDto.EmailConfirmed) + }; + TableColumns.Get().Add(confirmedColumn); +} +``` +Here, the entire content of the file. + +```csharp +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity; +using Volo.Abp.Identity.Blazor.Pages.Identity; + +namespace MyCompanyName.MyProjectName.Blazor.Pages.Identity +{ + [ExposeServices(typeof(UserManagement))] + [Dependency(ReplaceServices = true)] + public class CustomizedUserManagement : UserManagement + { + protected override async ValueTask SetTableColumnsAsync() + { + await base.SetTableColumnsAsync(); + var confirmedColumn = new TableColumn + { + Title = "Email Confirmed", + Data = nameof(IdentityUserDto.EmailConfirmed) + }; + TableColumns.Get().Add(confirmedColumn); + } + } +} +``` + +## Customizing Data Table Columns + +This section explains how to customize data table columns using the properties in the `TableColumn` type. + +* `Title`: Title of the column. +* `Data`: Name of the field in the supplied model. +* `Component`: Type of the component that you want to render. See the "Rendering Custom Components In The Data Table Columns" section for details. +* `Actions`: Action lists for the column. You can render additional action columns by adding actions to this collection. +* `ValueConverter`: Simple converter function that is being called before rendering the content. +* `DisplayFormat`: You can specify a custom format for the column. + +## Rendering Custom Components In The Data Table Columns + +This section explains how to render custom blazor components in data table columns. In this example, we're going to display custom icons instead of text representations of the property. + +First of all, create a blazor component. We will name it `CustomTableColumn`. + +![data-table-colum-extension-blazor-component-render-solution](../../images/data-table-colum-extension-blazor-component-render-solution.png) + +Add an object parameter named `Data`. + +```csharp +public class CustomTableColumn +{ + [Parameter] + public object Data { get; set; } +} +``` + +Navigate to the razor file and paste the following code. + +```csharp +@using System +@using Volo.Abp.Identity + +@if (Data.As().EmailConfirmed) +{ + +} +else +{ + +} +``` + +Navigate back to the `CustomizedUserManagement` class, and use `Component` property to specify the custom blazor component. + +```csharp +protected override async ValueTask SetTableColumnsAsync() +{ + await base.SetTableColumnsAsync(); + var confirmedColumn = new TableColumn + { + Title = "Email Confirmed", + Component = typeof(CustomTableColumn) + }; + TableColumns.Get().Add(confirmedColumn); +} +``` + +Run the project and you will see the icons instead of text fields. + +![data-table-colum-extension-blazor-component-render](../../images/data-table-colum-extension-blazor-component-render.png) \ No newline at end of file diff --git a/docs/en/UI/Blazor/Entity-Action-Extensions.md b/docs/en/UI/Blazor/Entity-Action-Extensions.md new file mode 100644 index 0000000000..c0be73cb3c --- /dev/null +++ b/docs/en/UI/Blazor/Entity-Action-Extensions.md @@ -0,0 +1,111 @@ +# Entity Action Extensions for Blazor UI + +## Introduction + +Entity action extension system allows you to add a **new action** to the action menu for an entity. A **Click Me** action was added to the *User Management* page below: + +![user-action-extension-click-me](../../images/user-action-blazor-extension-click-me.png) + +You can take any action (open a modal, make an HTTP API call, redirect to another page... etc) by writing your custom code. You can access to the current entity in your code. + +## How to Set Up + +In this example, we will add a "Click Me!" action and execute a C# code for the user management page of the [Identity Module](../../Modules/Identity.md). + +### Create a C# File + +First, add a new C# file to your solution. We added inside the `/Pages/Identity/` folder of the `.Blazor` project: + +![user-action-extension-on-solution](../../images/user-action-extension-on-blazor-project.png) + +We will use the [component override system](Customization-Overriding-Components.md) in the Blazor. After creating a class inherits from the `UserManagement` component, we will override the `SetToolbarItemsAsync` method and add the entity action programmatically. + +Here, the content of the overridden `SetToolbarItemsAsync` method. + +```csharp +protected override async ValueTask SetToolbarItemsAsync() +{ + await base.SetToolbarItemsAsync(); + var clickMeAction = new EntityAction() + { + Text = "Click Me!", + Clicked = (data) => + { + //TODO: Write your custom code + + return Task.CompletedTask; + } + }; + + EntityActions.Get().Add(clickMeAction); +} +``` + +In the `Clicked` property, you can do anything you need. + +Here, the entire content of the file. +```csharp +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity.Blazor.Pages.Identity; + +namespace MyCompanyName.MyProjectName.Blazor.Pages.Identity +{ + [ExposeServices(typeof(UserManagement))] + [Dependency(ReplaceServices = true)] + public class CustomizedUserManagement : UserManagement + { + protected override async ValueTask SetToolbarItemsAsync() + { + await base.SetToolbarItemsAsync(); + var clickMeAction = new EntityAction() + { + Text = "Click Me!", + Clicked = (data) => + { + //TODO: Write your custom code + + return Task.CompletedTask; + } + }; + EntityActions.Get().Add(clickMeAction); + } + } +} +``` + +## Customizing Entity Actions + +This section explains how to customize entity actions using the properties in the `EntityAction` type. + +Here, the list of the properties that you use in the `EntityAction`. +* `Text` : Entity action text. +* `Clicked` : Click event handler for the action. You can use the `data` parameter to access the selected item in the `DataGrid`. +* `Icon` : Icon for the action. +* `Color` : Color for the action. +* `Visible`: Visible function to determine the actions' visibility based on the data grid items individually. You can make the action invisible for some data grid items. You can also use the `data` parameter to access the selected item in the `DataGrid`. +* `Confirmation`: Confirmation message for the action. You can use the `data` parameter to access the selected item in the `DataGrid`. + +#### Example + +```csharp +var clickMeAction = new EntityAction() +{ + Text = "Click Me!", + Clicked = (data) => + { + //TODO: Write your custom code + + return Task.CompletedTask; + }, + Color = Blazorise.Color.Danger, + Icon = "fas fa-hand-point-right", + ConfirmationMessage = (data) => "Are you sure you want to click to the action?", + Visible = (data) => + { + //TODO: Write your custom visibility action + //var selectedUser = data.As(); + } +}; +``` diff --git a/docs/en/UI/Blazor/Page-Toolbar-Extensions.md b/docs/en/UI/Blazor/Page-Toolbar-Extensions.md new file mode 100644 index 0000000000..34e7c5b1b1 --- /dev/null +++ b/docs/en/UI/Blazor/Page-Toolbar-Extensions.md @@ -0,0 +1,126 @@ +# Page Toolbar Extensions for Blazor UI + +Page toolbar system allows you to add components to the toolbar of any page. The page toolbar is the area right to the header of a page. A button ("Import users from excel") was added to the user management page below: + +![page-toolbar-button](../../images/page-toolbar-button-blazor.png) + +You can add any type of view component item to the page toolbar or modify existing items. + +## How to Set Up + +In this example, we will add an "Import users from excel" button and execute a C# code for the user management page of the [Identity Module](../../Modules/Identity.md). + +### Create a C# File + +First, add a new C# file to your solution. We added inside the `/Pages/Identity/` folder of the `.Blazor` project: + +![user-action-extension-on-solution](../../images/user-action-extension-on-blazor-project.png) + +We will use the [component override system](Customization-Overriding-Components.md) in the Blazor. After creating a class inherits from the `UserManagement` component, we will override the `SetToolbarItemsAsync` method and add the toolbar item programmatically. + +Here, the content of the overridden `SetToolbarItemsAsync` method. + +```csharp +protected override async ValueTask SetToolbarItemsAsync() +{ + await base.SetToolbarItemsAsync(); + Toolbar.AddButton("Import users from excel", () => + { + //TODO: Write your custom code + return Task.CompletedTask; + }, "file-import", Blazorise.Color.Secondary); +} +``` +> In order to use the `AddButton` extension method, you need to add a using statement for the `Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars` namespace. + +Here, the entire content of the file. + +```csharp +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity.Blazor.Pages.Identity; + +namespace MyCompanyName.MyProjectName.Blazor.Pages.Identity +{ + [ExposeServices(typeof(UserManagement))] + [Dependency(ReplaceServices = true)] + public class CustomizedUserManagement : UserManagement + { + protected override async ValueTask SetToolbarItemsAsync() + { + await base.SetToolbarItemsAsync(); + Toolbar.AddButton("Import users from excel", () => + { + //TODO: Write your custom code + return Task.CompletedTask; + }, "file-import", Blazorise.Color.Secondary); + } + } +} +``` + +When you run the application, you will see the button added next to the current button list. There are some other parameters of the `AddButton` method (for example, use `Order` to set the order of the button component relative to the other components). + +## Advanced Use Cases + +While you typically want to add a button action to the page toolbar, it is possible to add any type of blazor component. + +### Add A Blazor Component to a Page Toolbar + +First, create a new blazor component in your project: + +![page-toolbar-custom-component-blazor](../../images/page-toolbar-custom-component-blazor.png) + +For this example, we've created a `MyToolbarComponent` component under the `/Pages/Identity/` folder. + +`MyToolbarComponent.razor` content: + +````csharp + +```` +We will leave the `MyToolbarComponent.razor.cs` file empty. + +Then you can add the `MyToolbarComponent` to the user management page toolbar: + +````csharp +protected override async ValueTask SetToolbarItemsAsync() +{ + await base.SetToolbarItemsAsync(); + Toolbar.AddComponent(); +} +```` + +* If your component accepts parameters, you can pass them as key/value pairs using the `arguments` parameter. + +#### Permissions + +If your button/component should be available based on a [permission/policy](../../Authorization.md), you can pass the permission/policy name as the `RequiredPolicyName` parameter to the `AddButton` and `AddComponent` methods. + +### Add a Page Toolbar Contributor + +If you perform advanced custom logic while adding an item to a page toolbar, you can create a class that implements the `IPageToolbarContributor` interface or inherits from the `PageToolbarContributor` class: + +````csharp +public class MyToolbarContributor : PageToolbarContributor +{ + public override Task ContributeAsync(PageToolbarContributionContext context) + { + context.Items.Insert(0, new PageToolbarItem(typeof(MyToolbarComponent))); + return Task.CompletedTask; + } +} +```` + +* You can use `context.ServiceProvider` to resolve dependencies if you need. + +Then add your class to the `Contributors` list: + +````csharp +protected override async ValueTask SetToolbarItemsAsync() +{ + await base.SetToolbarItemsAsync(); + Toolbar.Contributors.Add(new PageContributor()); +} +```` + diff --git a/docs/en/images/data-table-colum-extension-blazor-component-render-solution.png b/docs/en/images/data-table-colum-extension-blazor-component-render-solution.png new file mode 100644 index 0000000000000000000000000000000000000000..77612b5d34c3bacab7208ed139503123c6facf73 GIT binary patch literal 4854 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 HVvqPAk||fF literal 0 HcmV?d00001 diff --git a/docs/en/images/data-table-colum-extension-blazor-component-render.png b/docs/en/images/data-table-colum-extension-blazor-component-render.png new file mode 100644 index 0000000000000000000000000000000000000000..9d018e2ab963e0882babc6b740dc0521b40e402a GIT binary patch literal 19197 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 z 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 W3r@G*L0!0&F}`7bz5LqUKmRW)M)<-2 literal 0 HcmV?d00001 diff --git a/docs/en/images/page-toolbar-button-blazor.png b/docs/en/images/page-toolbar-button-blazor.png new file mode 100644 index 0000000000000000000000000000000000000000..fb907e797a0cc201c654170e32daf689c83941d8 GIT binary patch literal 35352 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

K$vvH^4Z5YNdGxP$KqIW;QZ<3+*y`SONi7t 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 z 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 VA(ciA`bQ=hd1)1?DhZRI{{o8MSzrJF literal 0 HcmV?d00001 diff --git a/docs/en/images/table-column-extension-example-blazor.png b/docs/en/images/table-column-extension-example-blazor.png new file mode 100644 index 0000000000000000000000000000000000000000..3079fa278c9bb58d911643375729d86cd41d3ccb GIT binary patch literal 19154 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 literal 0 HcmV?d00001 diff --git a/docs/en/images/user-action-blazor-extension-click-me.png b/docs/en/images/user-action-blazor-extension-click-me.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1ea801824f922774bd499abd2d83493a0db6d9 GIT binary patch literal 21729 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 brt>TKXOkjvH#>Mi=>TY}>#J3$*oOZfSwDE{ literal 0 HcmV?d00001 From 42207af3c706ad010443b72304d01eecfa6ef19b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 3 Apr 2021 20:30:17 +0300 Subject: [PATCH 006/125] Update Getting-Started-Create-Solution.md --- docs/en/Getting-Started-Create-Solution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Getting-Started-Create-Solution.md b/docs/en/Getting-Started-Create-Solution.md index aa3391adc5..f2f41e29ce 100644 --- a/docs/en/Getting-Started-Create-Solution.md +++ b/docs/en/Getting-Started-Create-Solution.md @@ -20,7 +20,7 @@ We will use the ABP CLI to create a new ABP project. Use the `new` command of the ABP CLI to create a new project: ````shell -abp new Acme.BookStore{{if UI == "NG"}} -u angular{{else if UI == "Blazor"}} -u blazor{{else if UI == "BlazorServer"}} -u blazor-server{{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes"}}{{if UI == "MVC"}} --tiered{{else}} --separate-identity-server{{end}}{{end}} +abp new Acme.BookStore{{if UI == "NG"}} -u angular{{else if UI == "Blazor"}} -u blazor{{else if UI == "BlazorServer"}} -u blazor-server{{end}}{{if DB == "Mongo"}} -d mongodb{{end}}{{if Tiered == "Yes"}}{{if UI == "MVC" || UI == "BlazorServer"}} --tiered{{else}} --separate-identity-server{{end}}{{end}} ```` *You can use different level of namespaces; e.g. BookStore, Acme.BookStore or Acme.Retail.BookStore.* From c62eed17de090187edb6a8ecd2d833d95a1453d2 Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 4 Apr 2021 21:44:30 +0800 Subject: [PATCH 007/125] Update Part-8.md Fix https://github.com/abpframework/abp/issues/8376 --- docs/en/Tutorials/Part-8.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/Tutorials/Part-8.md b/docs/en/Tutorials/Part-8.md index 6ab14c714c..3a77583487 100644 --- a/docs/en/Tutorials/Part-8.md +++ b/docs/en/Tutorials/Part-8.md @@ -267,7 +267,7 @@ public async Task CreateAsync(CreateAuthorDto input) ```` * `CreateAsync` requires the `BookStorePermissions.Authors.Create` permission (in addition to the `BookStorePermissions.Authors.Default` declared for the `AuthorAppService` class). -* Used the `AuthorManeger` (domain service) to create a new author. +* Used the `AuthorManager` (domain service) to create a new author. * Used the `IAuthorRepository.InsertAsync` to insert the new author to the database. * Used the `ObjectMapper` to return an `AuthorDto` representing the newly created author. @@ -566,4 +566,4 @@ Created some tests for the application service methods, which should be clear to ## The Next Part -See the [next part](Part-9.md) of this tutorial. \ No newline at end of file +See the [next part](Part-9.md) of this tutorial. From d78e8da8c3b368fd19179a54afd9957650373795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 4 Apr 2021 18:39:46 +0300 Subject: [PATCH 008/125] Support BlazorServer on the tutorial. --- docs/en/Tutorials/Part-1.md | 2 +- docs/en/Tutorials/Part-10.md | 4 ++-- docs/en/Tutorials/Part-2.md | 4 ++-- docs/en/Tutorials/Part-3.md | 4 ++-- docs/en/Tutorials/Part-4.md | 2 +- docs/en/Tutorials/Part-5.md | 2 +- docs/en/Tutorials/Part-6.md | 2 +- docs/en/Tutorials/Part-7.md | 2 +- docs/en/Tutorials/Part-8.md | 2 +- docs/en/Tutorials/Part-9.md | 4 ++-- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/en/Tutorials/Part-1.md b/docs/en/Tutorials/Part-1.md index 4667b8e539..26d6e51c1a 100644 --- a/docs/en/Tutorials/Part-1.md +++ b/docs/en/Tutorials/Part-1.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index ec68dfe955..b578952cc7 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` @@ -1078,7 +1078,7 @@ That's all. Just run the application and try to create or edit an author. {{end}} -{{if UI == "Blazor"}} +{{if UI == "Blazor" || UI == "BlazorServer"}} ### The Book List diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index 627b55a476..17bc98c538 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` @@ -531,7 +531,7 @@ Now you can see the final result on your browser: ![Book list final result](images/bookstore-book-list.png) -{{else if UI == "Blazor"}} +{{else if UI == "Blazor" || UI == "BlazorServer"}} ## Create a Books Page diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index ec326ddb65..41c4781421 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` @@ -1158,7 +1158,7 @@ Clicking the "Delete" action calls the `delete` method which then shows a confir {{end}} -{{if UI == "Blazor"}} +{{if UI == "Blazor" || UI == "BlazorServer"}} ## Creating a New Book diff --git a/docs/en/Tutorials/Part-4.md b/docs/en/Tutorials/Part-4.md index 2262598544..85c6c6502e 100644 --- a/docs/en/Tutorials/Part-4.md +++ b/docs/en/Tutorials/Part-4.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` diff --git a/docs/en/Tutorials/Part-5.md b/docs/en/Tutorials/Part-5.md index 7ad9aed970..e8274116f4 100644 --- a/docs/en/Tutorials/Part-5.md +++ b/docs/en/Tutorials/Part-5.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` diff --git a/docs/en/Tutorials/Part-6.md b/docs/en/Tutorials/Part-6.md index d5df8133b7..f6601a9afd 100644 --- a/docs/en/Tutorials/Part-6.md +++ b/docs/en/Tutorials/Part-6.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` diff --git a/docs/en/Tutorials/Part-7.md b/docs/en/Tutorials/Part-7.md index e14237fd59..e359a3d22f 100644 --- a/docs/en/Tutorials/Part-7.md +++ b/docs/en/Tutorials/Part-7.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` diff --git a/docs/en/Tutorials/Part-8.md b/docs/en/Tutorials/Part-8.md index 3a77583487..fe8cbd2732 100644 --- a/docs/en/Tutorials/Part-8.md +++ b/docs/en/Tutorials/Part-8.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index c7f5dc8beb..55c077bd9c 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -2,7 +2,7 @@ ````json //[doc-params] { - "UI": ["MVC","Blazor","NG"], + "UI": ["MVC","Blazor","BlazorServer","NG"], "DB": ["EF","Mongo"] } ```` @@ -832,7 +832,7 @@ That's all! This is a fully working CRUD page, you can create, edit and delete a {{end}} -{{if UI == "Blazor"}} +{{if UI == "Blazor" || UI == "BlazorServer"}} ## The Author Management Page From 372f8c9beece3dfc097a3f98b83aa34270ca7bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 4 Apr 2021 19:37:03 +0300 Subject: [PATCH 009/125] Updated roadmap. --- docs/en/Road-Map.md | 52 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/docs/en/Road-Map.md b/docs/en/Road-Map.md index 0920639106..8c55dccafa 100644 --- a/docs/en/Road-Map.md +++ b/docs/en/Road-Map.md @@ -1,14 +1,49 @@ # ABP Framework Road Map -You can always check the milestone planning and the prioritized backlog issues on [the GitHub repository](https://github.com/abpframework/abp/milestones) for a detailed road map. Here, a list of some major items in the backlog; +This document provides a road map, release schedule and planned features for the ABP Framework. -* CMS Kit: A set of reusable, extensible and composable Content Management System features. +## Next Versions + +### v4.4 + +This version will focus on **documentation** and **improvements** of current features. In addition, the following features are planned; + +* Publishing distributed events as transactional ([#6126](https://github.com/abpframework/abp/issues/6126)) +* Revisit the [microservice demo solution](Samples/Microservice-Demo.md) +* A new UI Theme alternative to the Basic Theme ([#6132](https://github.com/abpframework/abp/issues/6132)) +* Improvements and new features to the [CMS Kit](Modules/Cms-Kit.md) module ([#8380](https://github.com/abpframework/abp/issues/8380) [#8381](https://github.com/abpframework/abp/issues/8381)) +* Pre-configured test project for the [Blazor UI](UI/Blazor/Overall.md) ([#5516](https://github.com/abpframework/abp/issues/5516)) +* Razor engine support for text templating ([#8373](https://github.com/abpframework/abp/issues/8373)) + +**Planned release date**: End of Quarter 2, 2021. + +### v4.5 + +We planned to focus on v5.0 after 4.4 release. However, we may release v4.5 if we see it necessary. + +### v5.0 + +This version will focus on .NET 6 and performance improvements. + +* Upgrading to .NET 6 +* .NET Trimming compatibility +* Using source generators and reducing reflection usage +* Performance improvements +* API Versioning system: finalize & document ([#497](https://github.com/abpframework/abp/issues/497)) + +**Planned release date**: End of Quarter 4, 2021. + +## Backlog Items + +The *Next Versions* section above shows the main focus of the planned versions. However, in each release we add new features to the core framework and the [application modules](Modules/Index.md). + +Here, a list of major items in the backlog we are considering to work on in the next versions. + +* [#2183](https://github.com/abpframework/abp/issues/2183) / Dapr integration * [#2882](https://github.com/abpframework/abp/issues/2882) / Providing a gRPC integration infrastructure (while it is [already possible](https://github.com/abpframework/abp-samples/tree/master/GrpcDemo) to create or consume gRPC endpoints for your application, we plan to create endpoints for the [standard application modules](https://docs.abp.io/en/abp/latest/Modules/Index)) -* [#236](https://github.com/abpframework/abp/issues/236) Resource based authorization system -* [#6132](https://github.com/abpframework/abp/issues/6132) A New Theme alternative to the Basic Theme -* [#1754](https://github.com/abpframework/abp/issues/1754) / Multi-lingual entities -* [#497](https://github.com/abpframework/abp/issues/497) API Versioning system finalize & document * [#633](https://github.com/abpframework/abp/issues/633) / Realtime notification system +* [#236](https://github.com/abpframework/abp/issues/236) / Resource based authorization system +* [#1754](https://github.com/abpframework/abp/issues/1754) / Multi-lingual entities * [#57](https://github.com/abpframework/abp/issues/57) / Built-in CQRS infrastructure * [#336](https://github.com/abpframework/abp/issues/336) / Health Check abstraction * [#2532](https://github.com/abpframework/abp/issues/2532), [#2564](https://github.com/abpframework/abp/issues/2465) / CosmosDB integration with EF Core and MongoDB API @@ -16,6 +51,9 @@ You can always check the milestone planning and the prioritized backlog issues o * [#162](https://github.com/abpframework/abp/issues/162) / Azure ElasticDB Integration for multitenancy * [#2296](https://github.com/abpframework/abp/issues/2296) / Feature toggling infrastructure -The backlog items are subject to change. We are adding new items and changing priorities based on the community feedbacks and goals of the project. +You can always check the milestone planning and the prioritized backlog issues on [the GitHub repository](https://github.com/abpframework/abp/milestones) for a detailed road map. The backlog items are subject to change. We are adding new items and changing priorities based on the community feedbacks and goals of the project. + +## Feature Requests Vote for your favorite feature on the related GitHub issues (and write your thoughts). You can create an issue on [the GitHub repository](https://github.com/abpframework/abp) for your feature requests, but first search in the existing issues. + From de1eba1cd05cd10644d4b7924aeac0e168bcd341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 4 Apr 2021 19:39:11 +0300 Subject: [PATCH 010/125] Update Road-Map.md --- docs/en/Road-Map.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/en/Road-Map.md b/docs/en/Road-Map.md index 8c55dccafa..ca9ebfbd68 100644 --- a/docs/en/Road-Map.md +++ b/docs/en/Road-Map.md @@ -33,6 +33,8 @@ This version will focus on .NET 6 and performance improvements. **Planned release date**: End of Quarter 4, 2021. +> Note: v5.0 features will be more clear in the next months. We will consider to add new features from the *Backlog Items*. + ## Backlog Items The *Next Versions* section above shows the main focus of the planned versions. However, in each release we add new features to the core framework and the [application modules](Modules/Index.md). From 98f79e9ec24d4ad3a342096757017fc7dbdf3002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 4 Apr 2021 19:40:40 +0300 Subject: [PATCH 011/125] Update Road-Map.md --- docs/en/Road-Map.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/Road-Map.md b/docs/en/Road-Map.md index ca9ebfbd68..510cc98f4d 100644 --- a/docs/en/Road-Map.md +++ b/docs/en/Road-Map.md @@ -29,6 +29,7 @@ This version will focus on .NET 6 and performance improvements. * .NET Trimming compatibility * Using source generators and reducing reflection usage * Performance improvements +* Improving the abp.io platform * API Versioning system: finalize & document ([#497](https://github.com/abpframework/abp/issues/497)) **Planned release date**: End of Quarter 4, 2021. From 67bc5d03d11dcf33ca1e8ae121fbc0da86acc5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 4 Apr 2021 21:35:24 +0300 Subject: [PATCH 012/125] Update Road-Map.md --- docs/en/Road-Map.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Road-Map.md b/docs/en/Road-Map.md index 510cc98f4d..02fba61320 100644 --- a/docs/en/Road-Map.md +++ b/docs/en/Road-Map.md @@ -9,7 +9,7 @@ This document provides a road map, release schedule and planned features for the This version will focus on **documentation** and **improvements** of current features. In addition, the following features are planned; * Publishing distributed events as transactional ([#6126](https://github.com/abpframework/abp/issues/6126)) -* Revisit the [microservice demo solution](Samples/Microservice-Demo.md) +* Revisit the microservice demo solution ([#8385](https://github.com/abpframework/abp/issues/8385)) * A new UI Theme alternative to the Basic Theme ([#6132](https://github.com/abpframework/abp/issues/6132)) * Improvements and new features to the [CMS Kit](Modules/Cms-Kit.md) module ([#8380](https://github.com/abpframework/abp/issues/8380) [#8381](https://github.com/abpframework/abp/issues/8381)) * Pre-configured test project for the [Blazor UI](UI/Blazor/Overall.md) ([#5516](https://github.com/abpframework/abp/issues/5516)) From 0be24fefbda7d70f27bc0b4713d0a322497bfb7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Apr 2021 09:08:41 +0300 Subject: [PATCH 013/125] Clean module document list --- docs/en/Modules/Blogging.md | 3 --- docs/en/Modules/Client-Simulation.md | 3 --- docs/en/Modules/Index.md | 3 --- docs/en/Modules/Users.md | 3 --- docs/en/docs-nav.json | 12 ------------ 5 files changed, 24 deletions(-) delete mode 100644 docs/en/Modules/Blogging.md delete mode 100644 docs/en/Modules/Client-Simulation.md delete mode 100644 docs/en/Modules/Users.md diff --git a/docs/en/Modules/Blogging.md b/docs/en/Modules/Blogging.md deleted file mode 100644 index 32d2e023ea..0000000000 --- a/docs/en/Modules/Blogging.md +++ /dev/null @@ -1,3 +0,0 @@ -# Blogging Module - -TODO \ No newline at end of file diff --git a/docs/en/Modules/Client-Simulation.md b/docs/en/Modules/Client-Simulation.md deleted file mode 100644 index bc5d38e814..0000000000 --- a/docs/en/Modules/Client-Simulation.md +++ /dev/null @@ -1,3 +0,0 @@ -# Client Simulation Module - -TODO \ No newline at end of file diff --git a/docs/en/Modules/Index.md b/docs/en/Modules/Index.md index 8851f8b554..fbebf9fa0f 100644 --- a/docs/en/Modules/Index.md +++ b/docs/en/Modules/Index.md @@ -14,8 +14,6 @@ There are some **free and open source** application modules developed and mainta * [**Account**](Account.md): Provides UI for the account management and allows user to login/register to the application. * [**Audit Logging**](Audit-Logging.md): Persists audit logs to a database. * [**Background Jobs**](Background-Jobs.md): Persist background jobs when using the default background job manager. -* [**Blogging**](Blogging.md): Used to create fancy blogs. ABP's [own blog](https://blog.abp.io/) already using this module. -* [**Client Simulation**](Client-Simulation.md): A simple web UI to stress test HTTP APIs by simulating concurrent clients. * [**CMS Kit**](Cms-Kit.md): A set of reusable *Content Management System* features. * [**Docs**](Docs.md): Used to create technical documentation website. ABP's [own documentation](https://docs.abp.io) already using this module. * [**Feature Management**](Feature-Management.md): Used to persist and manage the [features](../Features.md). @@ -24,7 +22,6 @@ There are some **free and open source** application modules developed and mainta * [**Permission Management**](Permission-Management.md): Used to persist permissions. * **[Setting Management](Setting-Management.md)**: Used to persist and manage the [settings](../Settings.md). * [**Tenant Management**](Tenant-Management.md): Manages tenants for a [multi-tenant](../Multi-Tenancy.md) application. -* [**Users**](Users.md): Abstract users, so other modules can depend on this module instead of the Identity module. * [**Virtual File Explorer**](Virtual-File-Explorer.md): Provided a simple UI to view files in [virtual file system](../Virtual-File-System.md). See [the GitHub repository](https://github.com/abpframework/abp/tree/master/modules) for source code of all modules. diff --git a/docs/en/Modules/Users.md b/docs/en/Modules/Users.md deleted file mode 100644 index 1cb0f4b701..0000000000 --- a/docs/en/Modules/Users.md +++ /dev/null @@ -1,3 +0,0 @@ -# Users Module - -TODO \ No newline at end of file diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index efca73a484..23d9cc761d 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -1004,14 +1004,6 @@ "text": "Background Jobs", "path": "Modules/Background-Jobs.md" }, - { - "text": "Blogging", - "path": "Modules/Blogging.md" - }, - { - "text": "Client Simulation", - "path": "Modules/Client-Simulation.md" - }, { "text": "CMS Kit", "path": "Modules/Cms-Kit.md" @@ -1044,10 +1036,6 @@ "text": "Tenant Management", "path": "Modules/Tenant-Management.md" }, - { - "text": "Users", - "path": "Modules/Users.md" - }, { "text": "Virtual File Explorer", "path": "Modules/Virtual-File-Explorer.md" From e24eb7848319f13d1a7825a2c8e70ecea92b4067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Apr 2021 09:14:55 +0300 Subject: [PATCH 014/125] Removed beta / not supported texts. --- docs/en/Entity-Framework-Core-Oracle.md | 2 +- docs/en/Module-Entity-Extensions.md | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/en/Entity-Framework-Core-Oracle.md b/docs/en/Entity-Framework-Core-Oracle.md index 02aaac305c..8c265149ba 100644 --- a/docs/en/Entity-Framework-Core-Oracle.md +++ b/docs/en/Entity-Framework-Core-Oracle.md @@ -4,7 +4,7 @@ This document explains how to switch to the **Oracle** database provider for **[ ABP Framework provides integrations for two different Oracle packages. See one of the following documents based on your provider decision: -* **[Volo.Abp.EntityFrameworkCore.Oracle](Entity-Framework-Core-Oracle-Official.md)** package uses the official & free oracle driver (which is **currently in beta**). +* **[Volo.Abp.EntityFrameworkCore.Oracle](Entity-Framework-Core-Oracle-Official.md)** package uses the official & free oracle driver. * **[Volo.Abp.EntityFrameworkCore.Oracle.Devart](Entity-Framework-Core-Oracle-Devart.md)** package uses the commercial (paid) driver of [Devart](https://www.devart.com/) company. > You can choose one of the package you want. If you don't know the differences of the packages, please search for it. ABP Framework only provides integrations it doesn't provide support for such 3rd-party libraries. diff --git a/docs/en/Module-Entity-Extensions.md b/docs/en/Module-Entity-Extensions.md index dc23d1e663..f160f98b1a 100644 --- a/docs/en/Module-Entity-Extensions.md +++ b/docs/en/Module-Entity-Extensions.md @@ -1,9 +1,5 @@ # Module Entity Extensions -> This feature is not supported by the Blazor UI yet. - -## Introduction - Module entity extension system is a **high level** extension system that allows you to **define new properties** for existing entities of the depended modules. It automatically **adds properties to the entity, database, HTTP API and the user interface** in a single point. > The module must be developed the *Module Entity Extensions* system in mind. All the **official modules** supports this system wherever possible. From d1fe78dec4bdb1e15bcaaea449903d93290fcc7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Apr 2021 09:16:59 +0300 Subject: [PATCH 015/125] connection string should be localhost in docs. --- docs/en/Getting-Started-Running-Solution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Getting-Started-Running-Solution.md b/docs/en/Getting-Started-Running-Solution.md index a195a4e2a2..e871ec882f 100644 --- a/docs/en/Getting-Started-Running-Solution.md +++ b/docs/en/Getting-Started-Running-Solution.md @@ -21,7 +21,7 @@ Check the **connection string** in the `appsettings.json` file under the {{if Ti ````json "ConnectionStrings": { - "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True" + "Default": "Server=(LocalDb)\MSSQLLocalDB;Database=BookStore;Trusted_Connection=True" } ```` From bdd2a8a86cc090ce12632fd2a4f8c97304649877 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 5 Apr 2021 09:53:17 +0300 Subject: [PATCH 016/125] Refactor MicroserviceServiceRandomPortStep --- .../MicroserviceServiceRandomPortStep.cs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MicroserviceServiceRandomPortStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MicroserviceServiceRandomPortStep.cs index 88a19b43af..befc5414eb 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MicroserviceServiceRandomPortStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MicroserviceServiceRandomPortStep.cs @@ -59,9 +59,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps return _tyeFileContent; } - var solutionFolderPath = context.BuildArgs.ExtraProperties[NewCommand.Options.OutputFolder.Short] ?? - context.BuildArgs.ExtraProperties[NewCommand.Options.OutputFolder.Long] ?? - Directory.GetCurrentDirectory(); + var solutionFolderPath = GetSolutionFolderPath(context); var tyeFilePath = Path.Combine(solutionFolderPath, "tye.yaml"); @@ -74,5 +72,20 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps return _tyeFileContent; } + + private static string GetSolutionFolderPath(ProjectBuildContext context) + { + if (context.BuildArgs.ExtraProperties.ContainsKey(NewCommand.Options.OutputFolder.Short)) + { + return context.BuildArgs.ExtraProperties[NewCommand.Options.OutputFolder.Short]; + } + + if (context.BuildArgs.ExtraProperties.ContainsKey(NewCommand.Options.OutputFolder.Long)) + { + return context.BuildArgs.ExtraProperties[NewCommand.Options.OutputFolder.Long]; + } + + return Directory.GetCurrentDirectory(); + } } } From e58215f5252466d6faf2b497f742e31a4b611660 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 5 Apr 2021 10:23:40 +0300 Subject: [PATCH 017/125] Cli: Check if CmsKit supported for target version --- .../Templates/App/AppTemplateBase.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index 5e0436d91a..286283f22c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -169,12 +169,25 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App steps.Add(new ChangePublicAuthPortStep()); } - if (!context.BuildArgs.ExtraProperties.ContainsKey("without-cms-kit")) + if (!context.BuildArgs.ExtraProperties.ContainsKey("without-cms-kit") && IsCmsKitSupportedForTargetVersion(context)) { context.Symbols.Add("CMS-KIT"); } } + private bool IsCmsKitSupportedForTargetVersion(ProjectBuildContext context) + { + if (string.IsNullOrWhiteSpace(context.BuildArgs.Version)) + { + // We'll return true after 4.3.0 stable release. see https://github.com/abpframework/abp/issues/8394 + // return true; + + return context.BuildArgs.ExtraProperties.ContainsKey(NewCommand.Options.Preview.Long); + } + + return SemanticVersion.Parse(context.BuildArgs.Version) > SemanticVersion.Parse("4.2.9"); + } + private static void ConfigureWithoutUi(ProjectBuildContext context, List steps) { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); From e99858ce404b6b8b0933b20a9c8b909505b33a65 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 11:08:23 +0300 Subject: [PATCH 018/125] refactor: remove empty div if nothing is used in page-comp --- .../packages/components/page/src/page.component.html | 2 +- .../packages/components/page/src/page.component.ts | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/components/page/src/page.component.html b/npm/ng-packs/packages/components/page/src/page.component.html index 71715fd82e..fe5aff2e58 100644 --- a/npm/ng-packs/packages/components/page/src/page.component.html +++ b/npm/ng-packs/packages/components/page/src/page.component.html @@ -1,4 +1,4 @@ -
+
diff --git a/npm/ng-packs/packages/components/page/src/page.component.ts b/npm/ng-packs/packages/components/page/src/page.component.ts index 49e884fb2c..24b6d18ccf 100644 --- a/npm/ng-packs/packages/components/page/src/page.component.ts +++ b/npm/ng-packs/packages/components/page/src/page.component.ts @@ -37,4 +37,15 @@ export class PageComponent { @ContentChild(PageBreadcrumbContainerComponent) customBreadcrumb: PageBreadcrumbContainerComponent; @ContentChild(PageToolbarContainerComponent) customToolbar: PageToolbarContainerComponent; + + get shouldRenderRow() { + return !!( + this.title || + this.toolbarVisible || + this.breadcrumbVisible || + this.customTitle || + this.customBreadcrumb || + this.customToolbar + ); + } } From 2a1c58fdcbeb4963e7afd9de72ce400b918c1dab Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 11:08:34 +0300 Subject: [PATCH 019/125] docs: improve page-component docs --- docs/en/UI/Angular/Page-Component.md | 41 +++++++++++++++------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/docs/en/UI/Angular/Page-Component.md b/docs/en/UI/Angular/Page-Component.md index 3c9e557176..a9e9857142 100644 --- a/docs/en/UI/Angular/Page-Component.md +++ b/docs/en/UI/Angular/Page-Component.md @@ -4,14 +4,14 @@ ABP provides a component that wraps your content with some built-in components t If the template of a component looks as follows, you can utilize the `abp-page` component. -E.g. +Let's look at the following example without `abp-page` component. -`app.component.ts` +`dashboard.component.ts` ```html
-

{{ '::AppTitle' | abpLocalization }}

+

{{ '::Dashboard' | abpLocalization }}

-
- +
+
``` @@ -36,30 +36,32 @@ export enum PageParts { breadcrumb = 'PageBreadcrumbContainerComponent', toolbar = 'PageToolbarContainerComponent', } + +// You can import this enum from -> import { PageParts } from '@abp/ng.components/page'; ``` ## Usage Firstly, you need to import `PageModule` from `@abp/ng.components/page` as follows: -`app.module.ts` +`dashboard.module.ts` ```javascript import { PageModule } from '@abp/ng.components/page'; -import { AppComponent } from './app.component'; +import { DashboardComponent } from './dashboard.component'; @NgModule({ - declarations: [AppComponent], + declarations: [DashboardComponent], imports: [PageModule] }) -export class AppModule {} +export class DashboardModule {} ``` -And change the template of `app.component.ts` to the following: +And change the template of `dashboard.component.ts` to the following: ```html - -
+ +
@@ -150,6 +152,7 @@ import {  PageParts, PAGE_RENDER_STRATEGY } from '@abp/ng.components/page'; + @Injectable() export class MyPageRenderStrategy implements PageRenderStrategy { shouldRender(type: string) { @@ -182,24 +185,24 @@ export class MyPageRenderStrategy implements PageRenderStrategy { } @Component({ - selector: 'app-root', + selector: 'app-dashboard', template: ` - + - + -
+

Inner Title

` }) -export class AppComponent {} +export class DashboardComponent {} @NgModule({ imports: [PageModule], - declarations: [AppComponent], + declarations: [DashboardComponent], providers: [ { provide: PAGE_RENDER_STRATEGY, @@ -207,7 +210,7 @@ export class AppComponent {} } ] }) -export class AppModule {} +export class DashboardModule {} ``` ## See Also From fccc3fffab45bd88fc8baa051d2fd8d89e476d83 Mon Sep 17 00:00:00 2001 From: Ilkay Ilknur Date: Mon, 5 Apr 2021 12:25:02 +0300 Subject: [PATCH 020/125] introduction headers have been removed. --- docs/en/UI/Blazor/Data-Table-Column-Extensions.md | 2 -- docs/en/UI/Blazor/Entity-Action-Extensions.md | 2 -- 2 files changed, 4 deletions(-) diff --git a/docs/en/UI/Blazor/Data-Table-Column-Extensions.md b/docs/en/UI/Blazor/Data-Table-Column-Extensions.md index e86dfd08c7..6fad41af81 100644 --- a/docs/en/UI/Blazor/Data-Table-Column-Extensions.md +++ b/docs/en/UI/Blazor/Data-Table-Column-Extensions.md @@ -1,7 +1,5 @@ # Data Table Column Extensions for Blazor UI -## Introduction - Data table column extension system allows you to add a **new table column** on the user interface. The example below adds a new column with the "Email Confirmed" title: ![datatable-column-extension-](../../images/table-column-extension-example-blazor.png) diff --git a/docs/en/UI/Blazor/Entity-Action-Extensions.md b/docs/en/UI/Blazor/Entity-Action-Extensions.md index c0be73cb3c..57666e5362 100644 --- a/docs/en/UI/Blazor/Entity-Action-Extensions.md +++ b/docs/en/UI/Blazor/Entity-Action-Extensions.md @@ -1,7 +1,5 @@ # Entity Action Extensions for Blazor UI -## Introduction - Entity action extension system allows you to add a **new action** to the action menu for an entity. A **Click Me** action was added to the *User Management* page below: ![user-action-extension-click-me](../../images/user-action-blazor-extension-click-me.png) From 328e8b19db0cbc3ce6869380fe91bf5827b63588 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Mon, 5 Apr 2021 12:37:25 +0300 Subject: [PATCH 021/125] use IRemoteStreamContent for media uploading --- .../CreateMediaInputWithStream.cs | 16 +++++++++++ .../IMediaDescriptorAdminAppService.cs | 2 +- .../MediaDescriptorAdminAppService.cs | 10 +++---- .../CmsKit/Admin/CmsKitAdminHttpApiModule.cs | 10 +++++++ .../MediaDescriptorAdminController.cs | 27 +++---------------- .../MediaDescriptorAdminAppService_Tests.cs | 13 ++++----- 6 files changed, 41 insertions(+), 37 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputWithStream.cs diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputWithStream.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputWithStream.cs new file mode 100644 index 0000000000..a8a13b2ed2 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputWithStream.cs @@ -0,0 +1,16 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Content; +using Volo.Abp.Validation; +using Volo.CmsKit.MediaDescriptors; + +namespace Volo.CmsKit.Admin.MediaDescriptors +{ + public class CreateMediaInputWithStream + { + [Required] + [DynamicStringLength(typeof(MediaDescriptorConsts), nameof(MediaDescriptorConsts.MaxNameLength))] + public string Name { get; set; } + + public IRemoteStreamContent File { get; set; } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs index eb4819dd06..83cd14e90c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs @@ -6,7 +6,7 @@ namespace Volo.CmsKit.Admin.MediaDescriptors { public interface IMediaDescriptorAdminAppService : IApplicationService { - Task CreateAsync(CreateMediaInputStream inputStream); + Task CreateAsync(string entityType, CreateMediaInputWithStream inputStream); Task DeleteAsync(Guid id); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs index b359d55244..fa799cb65b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs @@ -1,11 +1,9 @@ using System; using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; using Volo.Abp.BlobStoring; using Volo.Abp.GlobalFeatures; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.MediaDescriptors; -using Volo.CmsKit.Permissions; namespace Volo.CmsKit.Admin.MediaDescriptors { @@ -29,16 +27,16 @@ namespace Volo.CmsKit.Admin.MediaDescriptors MediaDescriptorDefinitionStore = mediaDescriptorDefinitionStore; } - public virtual async Task CreateAsync(CreateMediaInputStream inputStream) + public virtual async Task CreateAsync(string entityType, CreateMediaInputWithStream inputStream) { - var definition = await MediaDescriptorDefinitionStore.GetAsync(inputStream.EntityType); + var definition = await MediaDescriptorDefinitionStore.GetAsync(entityType); /* TODO: Shouldn't CreatePolicies be a dictionary and we check for inputStream.EntityType? */ await CheckAnyOfPoliciesAsync(definition.CreatePolicies); - using (var stream = inputStream.GetStream()) + using (var stream = inputStream.File.GetStream()) { - var newEntity = await MediaDescriptorManager.CreateAsync(inputStream.EntityType, inputStream.Name, inputStream.ContentType, inputStream.ContentLength ?? 0); + var newEntity = await MediaDescriptorManager.CreateAsync(entityType, inputStream.Name, inputStream.File.ContentType, inputStream.File.ContentLength ?? 0); await MediaContainer.SaveAsync(newEntity.Id.ToString(), stream); await MediaDescriptorRepository.InsertAsync(newEntity); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/CmsKitAdminHttpApiModule.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/CmsKitAdminHttpApiModule.cs index 5d84242bcd..bb573d55e6 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/CmsKitAdminHttpApiModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/CmsKitAdminHttpApiModule.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Modularity; +using Volo.CmsKit.Admin.MediaDescriptors; namespace Volo.CmsKit.Admin { @@ -16,5 +18,13 @@ namespace Volo.CmsKit.Admin mvcBuilder.AddApplicationPartIfNotExists(typeof(CmsKitAdminHttpApiModule).Assembly); }); } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(CreateMediaInputWithStream)); + }); + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs index da84dc8a3d..07c1315eed 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs @@ -25,10 +25,10 @@ namespace Volo.CmsKit.Admin.MediaDescriptors } [HttpPost] - [NonAction] - public virtual Task CreateAsync(CreateMediaInputStream inputStream) + [Route("{entityType}")] + public virtual Task CreateAsync(string entityType, CreateMediaInputWithStream inputStream) { - return MediaDescriptorAdminAppService.CreateAsync(inputStream); + return MediaDescriptorAdminAppService.CreateAsync(entityType, inputStream); } [HttpDelete] @@ -37,26 +37,5 @@ namespace Volo.CmsKit.Admin.MediaDescriptors { return MediaDescriptorAdminAppService.DeleteAsync(id); } - - [HttpPost] - [Route("{entityType}")] - public virtual async Task UploadAsync(string entityType, IFormFile file) - { - if (file == null) - { - return BadRequest(); - } - - var inputStream = new CreateMediaInputStream(file.OpenReadStream()) - { - EntityType = entityType, - ContentType = file.ContentType, - Name = file.FileName - }; - - var mediaDescriptorDto = await MediaDescriptorAdminAppService.CreateAsync(inputStream); - - return StatusCode((int)HttpStatusCode.Created, mediaDescriptorDto); - } } } \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs index 52169eddbe..38a8b472bd 100644 --- a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs @@ -3,6 +3,7 @@ using System.IO; using System.Text; using System.Threading.Tasks; using Shouldly; +using Volo.Abp.Content; using Volo.CmsKit.Admin.MediaDescriptors; using Xunit; @@ -31,14 +32,14 @@ namespace Volo.CmsKit.MediaDescriptors using var stream = new MemoryStream(Encoding.UTF8.GetBytes(mediaContent)); - var inputStream = new CreateMediaInputStream(stream) + var media = await _mediaDescriptorAdminAppService.CreateAsync(_cmsKitTestData.Media_1_EntityType, new CreateMediaInputWithStream { - ContentType = mediaType, Name = mediaName, - EntityType = _cmsKitTestData.Media_1_EntityType - }; - - var media = await _mediaDescriptorAdminAppService.CreateAsync(inputStream); + File = new RemoteStreamContent(stream) + { + ContentType = mediaType + } + }); media.ShouldNotBeNull(); } From 0c9871465012372fdf19c297324c95e4d764bc83 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Mon, 5 Apr 2021 12:59:53 +0300 Subject: [PATCH 022/125] Update Getting-Started-Create-Solution.md --- docs/en/Getting-Started-Create-Solution.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/Getting-Started-Create-Solution.md b/docs/en/Getting-Started-Create-Solution.md index f2f41e29ce..7caa26159a 100644 --- a/docs/en/Getting-Started-Create-Solution.md +++ b/docs/en/Getting-Started-Create-Solution.md @@ -15,7 +15,7 @@ We will use the ABP CLI to create a new ABP project. -> Alternatively, you can **create and download** projects from [ABP Framework website](https://abp.io/get-started) by easily selecting the all the options from the page. +> Alternatively, you can **create and download** projects from the [ABP Framework website](https://abp.io/get-started) by easily selecting all options from the page. Use the `new` command of the ABP CLI to create a new project: @@ -49,7 +49,7 @@ The solution has a layered structure (based on the [Domain Driven Design](Domain #### MongoDB Transactions -The [startup template](Startup-templates/Index.md) **disables** transactions in the `.MongoDB` project by default. If your MongoDB server supports transactions, you can enable the it in the *YourProjectMongoDbModule* class's `ConfigureServices` method: +The [startup template](Startup-templates/Index.md) **disables** transactions in the `.MongoDB` project by default. If your MongoDB server supports transactions, you can enable it in the *YourProjectMongoDbModule* class's `ConfigureServices` method: ```csharp Configure(options => From de30aa107aaf7829a2b441969c9785372298aa44 Mon Sep 17 00:00:00 2001 From: enisn Date: Fri, 2 Apr 2021 15:35:27 +0300 Subject: [PATCH 023/125] CmsKit - Add missing error handling for CmsKit Pages --- .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js | 4 ++++ .../Volo/CmsKit/Localization/Resources/en.json | 3 ++- .../Volo/CmsKit/Localization/Resources/tr.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js index ad238c5732..1a5e86c207 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js @@ -20,6 +20,10 @@ abp.notify.success(l('SuccessfullySaved')); abp.ui.clearBusy(); location.href = "../Pages"; + }, + error: function(result){ + abp.ui.clearBusy(); + abp.notify.error(result.responseJSON.error.message); } }); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json index 32900b41a3..11927d6537 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json @@ -20,7 +20,7 @@ "CmsKit:Comments:0001": "The entity {EntityType} is not commentable.", "CmsKit:Media:0001": "'{Name}' is not a valid media name.", "CmsKit:Media:0002": "The entity can't have media.", - "CmsKit:Page:0001": "The given url ({0}) already exists.", + "CmsKit:Page:0001": "The given url ({Slug}) already exists. Please try with different url.", "CmsKit:Rating:0001": "The entity {EntityType} can't be rated.", "CmsKit:Reaction:0001": "The entity {EntityType} can't have reactions.", "CmsKit:Tag:0002": "The entity is not taggable!", @@ -56,6 +56,7 @@ "New": "New", "OK": "OK", "PageDeletionConfirmationMessage": "Are you sure to delete this page?", + "Pages": "Pages", "PageSlugInformation": "Slug is used on url. Your url will be '/pages/{{slug}}'.", "Permission:BlogManagement": "Blog Management", "Permission:BlogManagement.Create": "Create", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json index 17fd56f0ec..a45104b597 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json @@ -21,7 +21,7 @@ "CmsKit:BlogPost:0001": "Aynı url etiketi zaten mevcut.", "CmsKit:Comments:0001": "{0} ögesi yorumlanabilir değil.", "CmsKit:Media:0002": "Bu öge için medya eklenemez.", - "CmsKit:Page:0001": "Girilen url ({0}) kullanımdadır.", + "CmsKit:Page:0001": "Girilen url ({Slug}) kullanımdadır. Başka bir url giriniz.", "CmsKit:Rating:0001": "{EntityType}, puanlanabilir değil.", "CmsKit:Reaction:0001": "Bu ögeye tepki verilemez.", "CmsKit:Tag:0002": "Bu öge etiketlenebilir değil.", From 96519097693f2e1bf31095a8f0ca086505dbec55 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 13:32:25 +0300 Subject: [PATCH 024/125] feat: add abpClose directive to modal --- .../theme-shared/src/lib/components/index.ts | 1 + .../components/modal/modal-close.directive.ts | 16 ++++++++++++++++ .../theme-shared/src/lib/theme-shared.module.ts | 2 ++ 3 files changed, 19 insertions(+) create mode 100644 npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts index 608dbb8ba8..a80a7cb574 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/index.ts @@ -6,6 +6,7 @@ export * from './http-error-wrapper/http-error-wrapper.component'; export * from './loader-bar/loader-bar.component'; export * from './loading/loading.component'; export * from './modal/modal.component'; +export * from './modal/modal-close.directive'; export * from './sort-order-icon/sort-order-icon.component'; export * from './table-empty-message/table-empty-message.component'; export * from './table/table.component'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts new file mode 100644 index 0000000000..a20c8d8a34 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-close.directive.ts @@ -0,0 +1,16 @@ +import { Directive, HostListener, Optional } from '@angular/core'; +import { ModalComponent } from './modal.component'; + +@Directive({ selector: '[abpClose]' }) +export class ModalCloseDirective { + constructor(@Optional() private modal: ModalComponent) { + if (!modal) { + console.error('Please use abpClose within an abp-modal'); + } + } + + @HostListener('click') + onClick() { + this.modal?.close(); + } +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts index 8d8f08ea6b..ddf1d6a5a3 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts @@ -37,6 +37,7 @@ import { THEME_SHARED_ROUTE_PROVIDERS } from './providers/route.provider'; import { THEME_SHARED_APPEND_CONTENT } from './tokens/append-content.token'; import { HTTP_ERROR_CONFIG, httpErrorConfigFactory } from './tokens/http-error.token'; import { DateParserFormatter } from './utils/date-parser-formatter'; +import { ModalCloseDirective } from './components/modal/modal-close.directive'; const declarationsWithExports = [ BreadcrumbComponent, @@ -55,6 +56,7 @@ const declarationsWithExports = [ NgxDatatableListDirective, LoadingDirective, TableSortDirective, + ModalCloseDirective, ]; @NgModule({ From 2aa6193bf4faf83787d2b71c4d08f36b80983c85 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 13:35:54 +0300 Subject: [PATCH 025/125] chore: deprecate abpClose template directive --- .../src/lib/components/modal/modal.component.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts index d1414d0272..d11d1bcbc2 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts @@ -78,6 +78,9 @@ export class ModalComponent implements OnDestroy { @ContentChild(ButtonComponent, { static: false, read: ButtonComponent }) abpSubmit: ButtonComponent; + /** + * @deprecated will be removed in v5.0 + */ @ContentChild('abpClose', { static: false, read: ElementRef }) abpClose: ElementRef; @@ -203,6 +206,9 @@ export class ModalComponent implements OnDestroy { setTimeout(() => { if (!this.abpClose) return; + console.warn( + 'Please use abpClose directive instead of #abpClose template variable. #abpClose will be removed in v5.0', + ); fromEvent(this.abpClose.nativeElement, 'click') .pipe(takeUntil(this.destroy$)) .subscribe(() => this.close()); From 3af9576ba8fd233f7a6ecdb918bb9ac7eb29e863 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 13:38:51 +0300 Subject: [PATCH 026/125] docs: replace #abpClose with abpClose directive --- docs/en/Tutorials/Part-3.md | 4 ++-- docs/en/Tutorials/Part-9.md | 2 +- docs/en/UI/Angular/Entity-Action-Extensions.md | 2 +- .../How-Replaceable-Components-Work-with-Extensions.md | 2 +- .../UI/Angular/Permission-Management-Component-Replacement.md | 2 +- docs/pt-BR/Tutorials/Angular/Part-II.md | 4 ++-- docs/zh-Hans/Tutorials/Part-3.md | 4 ++-- .../UI/Angular/Permission-Management-Component-Replacement.md | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/en/Tutorials/Part-3.md b/docs/en/Tutorials/Part-3.md index 41c4781421..03daab1843 100644 --- a/docs/en/Tutorials/Part-3.md +++ b/docs/en/Tutorials/Part-3.md @@ -709,7 +709,7 @@ Open `/src/app/book/book.component.html` and make the following changes: - @@ -844,7 +844,7 @@ Also replace ` ` with the following code p ````html - diff --git a/docs/en/Tutorials/Part-9.md b/docs/en/Tutorials/Part-9.md index 55c077bd9c..1fb4d0e703 100644 --- a/docs/en/Tutorials/Part-9.md +++ b/docs/en/Tutorials/Part-9.md @@ -792,7 +792,7 @@ Open the `/src/app/author/author.component.html` and replace the content as belo - diff --git a/docs/en/UI/Angular/Entity-Action-Extensions.md b/docs/en/UI/Angular/Entity-Action-Extensions.md index fd22e293fd..1ee0a3b70a 100644 --- a/docs/en/UI/Angular/Entity-Action-Extensions.md +++ b/docs/en/UI/Angular/Entity-Action-Extensions.md @@ -180,7 +180,7 @@ Let's employ dependency injection to extend the functionality of `IdentityModule - diff --git a/docs/en/UI/Angular/How-Replaceable-Components-Work-with-Extensions.md b/docs/en/UI/Angular/How-Replaceable-Components-Work-with-Extensions.md index d942975646..147f8010a6 100644 --- a/docs/en/UI/Angular/How-Replaceable-Components-Work-with-Extensions.md +++ b/docs/en/UI/Angular/How-Replaceable-Components-Work-with-Extensions.md @@ -215,7 +215,7 @@ Open the generated `src/app/my-role/my-role.component.html` file and replace its - {%{{{ diff --git a/docs/en/UI/Angular/Permission-Management-Component-Replacement.md b/docs/en/UI/Angular/Permission-Management-Component-Replacement.md index 9ae712cedd..b6fcef3bb9 100644 --- a/docs/en/UI/Angular/Permission-Management-Component-Replacement.md +++ b/docs/en/UI/Angular/Permission-Management-Component-Replacement.md @@ -459,7 +459,7 @@ Open the generated `permission-management.component.html` in `src/app/permission
- {%{{{ diff --git a/docs/pt-BR/Tutorials/Angular/Part-II.md b/docs/pt-BR/Tutorials/Angular/Part-II.md index b75fa9e21c..b4b86350b0 100644 --- a/docs/pt-BR/Tutorials/Angular/Part-II.md +++ b/docs/pt-BR/Tutorials/Angular/Part-II.md @@ -90,7 +90,7 @@ Abra o `book-list.component.html`e adicione o `abp-modal`para mostrar / ocultar - @@ -276,7 +276,7 @@ Abra o `book-list.component.html`e adicione um `abp-button`para salvar o formul ```html - @@ -859,7 +859,7 @@ export class BookComponent implements OnInit { ````html - diff --git a/docs/zh-Hans/UI/Angular/Permission-Management-Component-Replacement.md b/docs/zh-Hans/UI/Angular/Permission-Management-Component-Replacement.md index 0b1f71035e..3ea2db6f51 100644 --- a/docs/zh-Hans/UI/Angular/Permission-Management-Component-Replacement.md +++ b/docs/zh-Hans/UI/Angular/Permission-Management-Component-Replacement.md @@ -459,7 +459,7 @@ function getPermissions(groups: PermissionManagement.Group[]): PermissionManagem
- {%{{{ From 43aff2118e925b0a5c681066e8254c9b8b96372e Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 13:40:07 +0300 Subject: [PATCH 027/125] docs: update modal doc with abpClose directive --- docs/en/UI/Angular/Modal.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/en/UI/Angular/Modal.md b/docs/en/UI/Angular/Modal.md index f1583d4813..144f38e842 100644 --- a/docs/en/UI/Angular/Modal.md +++ b/docs/en/UI/Angular/Modal.md @@ -6,7 +6,7 @@ The `abp-modal` provides some additional benefits: - It is **flexible**. You can pass header, body, footer templates easily by adding the templates to the `abp-modal` content. It can also be implemented quickly. - Provides several inputs be able to customize the modal and several outputs be able to listen to some events. - - Automatically detects the close button which has a `#abpClose` template variable and closes the modal when pressed this button. + - Automatically detects the close button which has a `abpClose` directive attached to and closes the modal when pressed this button. - Automatically detects the `abp-button` and triggers its loading spinner when the `busy` input value of the modal component is true. - Automatically checks if the form inside the modal **has changed, but not saved**. It warns the user by displaying a [confirmation popup](Confirmation-Service) in this case when a user tries to close the modal or refresh/close the tab of the browser. @@ -47,7 +47,7 @@ You can add the `abp-modal` to your component very quickly. See an example: - + ``` @@ -116,7 +116,7 @@ See an example form inside a modal: - From 3a8a32d6c8cc79ac40a8413931ee649e92dd71ce Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 14:21:57 +0300 Subject: [PATCH 028/125] refactor: replace #abpClose with the directive --- .../src/lib/components/tenant-box/tenant-box.component.html | 4 ++-- .../feature-management/feature-management.component.html | 6 +++--- .../identity/src/lib/components/roles/roles.component.html | 2 +- .../identity/src/lib/components/users/users.component.html | 2 +- .../src/lib/components/permission-management.component.html | 2 +- .../src/lib/components/tenants/tenants.component.html | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html index e8b2df61e1..91e68d9a0a 100644 --- a/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html +++ b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html @@ -3,7 +3,7 @@
- {{ + {{ 'AbpUiMultiTenancy::Tenant' | abpLocalization }}
@@ -47,7 +47,7 @@ - + }} + - - {{ diff --git a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html index 97d0616eb3..aa6dac1e93 100644 --- a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html +++ b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html @@ -74,7 +74,7 @@ - {{ diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html index 148b4ab1b5..06ab7ff9f1 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html +++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html @@ -94,7 +94,7 @@
- {{ diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html index a418e9ff1d..c296589afd 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html @@ -40,7 +40,7 @@ - {{ From 2667ffffaf5d0586ae400f375d947af73d68de39 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 14:22:27 +0300 Subject: [PATCH 029/125] test: update modal test with the directive --- .../src/lib/tests/modal.component.spec.ts | 2 +- npm/ng-packs/yarn.lock | 117 ++++++++++-------- 2 files changed, 68 insertions(+), 51 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts index 7c693211f1..60c71b8e16 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts @@ -51,7 +51,7 @@ describe('ModalComponent', () => { diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index 11cb8c5e9e..7d33c0fc27 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,12 +2,20 @@ # yarn lockfile v1 -"@abp/ng.core@~4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-4.2.2.tgz#2b0b2d210bd124e4aaab3560763f36d38b24c63f" - integrity sha512-G2d5tcFgvmeLNP9JxlU6L3ywMqFdGBwdG5hTzyVxkE3qpiSfzCPCrMVcCh4SnOxm+Qo7kEXtT3xDv6b+Ye2uTQ== +"@abp/ng.components@~4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/ng.components/-/ng.components-4.3.0-rc.1.tgz#7142e476577fe74429b0eb0f0f9af5955a3aea3f" + integrity sha512-JjRRbE9RHh8X82PKLO1VKsEMui+mCNzGgkmBVL1qwTrlLcfUW6IYjCVXUxQX67e6waHVT+cIFFWWk00zfVEMJw== + dependencies: + ng-zorro-antd "^11.0.0" + tslib "^2.0.0" + +"@abp/ng.core@~4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-4.3.0-rc.1.tgz#8cd396fcdbeff3ad71ff4a3ce175395fdaf0cca4" + integrity sha512-9ydmdginW0f4g9ZlAF78q2RUvHhGBr0Aj5cN/sAnD+ohNDkYeSd42szqJAkoktEfTw4yHEFC+kKJLELAhRgChg== dependencies: - "@abp/utils" "^4.2.1" + "@abp/utils" "^4.2.2" "@angular/localize" "~10.0.10" "@ngxs/store" "^3.7.0" angular-oauth2-oidc "^10.0.0" @@ -17,88 +25,97 @@ ts-toolbelt "6.15.4" tslib "^2.0.0" -"@abp/ng.feature-management@~4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-4.2.2.tgz#694f6d6e391d5688b0cbca3ed6e9b80e24cac37f" - integrity sha512-KvE4sRPpQRrg3y03hO/2y6LUDPSaHJGm7pyEb0vwv4728RTMoR1cFwGiu8o2uRxslApq3O6EM3DvKY+6F0VNSw== +"@abp/ng.feature-management@~4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-4.3.0-rc.1.tgz#d4a3536add0901851f035a3c1e591e6f3bbaa6fc" + integrity sha512-PH5X7D2L+tyhCqEBTLxOVFToJvdgalvxGWWxiTHT+0GwN9yKNy4cmot4WM7U2iRG9DjwpNKhQSEwqjRM1hxc/Q== dependencies: - "@abp/ng.theme.shared" "~4.2.2" + "@abp/ng.theme.shared" "~4.3.0-rc.1" tslib "^2.0.0" -"@abp/ng.identity@~4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-4.2.2.tgz#640065e823fd6e9430711d499084f04779c2e990" - integrity sha512-gbkY2hL21OjzsZwZCwqhxBT8xndFIVU8SD9qAYAv6XlIGUuIwIy/VLSuU/hFF0+8qg0TdU359aH1F6FtwSm+/g== +"@abp/ng.identity@~4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-4.3.0-rc.1.tgz#ffe6644e876f8998e3e6dff110e5d1c8461a6c71" + integrity sha512-F5pGGVOUYKK+vLAE87u+rYlRGhrlTfYlme9gwHgXW8sElrdSPe03Q63kXap9e/w/foeqe/C6PLBrZ255K2BtwQ== dependencies: - "@abp/ng.permission-management" "~4.2.2" - "@abp/ng.theme.shared" "~4.2.2" + "@abp/ng.permission-management" "~4.3.0-rc.1" + "@abp/ng.theme.shared" "~4.3.0-rc.1" tslib "^2.0.0" -"@abp/ng.permission-management@~4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-4.2.2.tgz#a63a25bbe48c0044630af430b7674c5d040a5999" - integrity sha512-c1C8O73oqRf3NCSXMvECayzvjTx+nEGnh3KX7IWtNMr0/GIUCokzH9yX2Cd8uZPYINvlZTOLu73ImrIjTllJ/w== +"@abp/ng.permission-management@~4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-4.3.0-rc.1.tgz#9fe9fbb2a5a4306ff549ed0f00bf9a47fb7a3f49" + integrity sha512-5LVC22bukBWD6r1kMZD8ooq0dr8k9AjpdGk/vcdC/86l8oOlqbaarrGiFawSabFIZqjglC6cZ0V4lEymRxhNQQ== dependencies: - "@abp/ng.theme.shared" "~4.2.2" + "@abp/ng.theme.shared" "~4.3.0-rc.1" tslib "^2.0.0" -"@abp/ng.schematics@~4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-4.2.2.tgz#757a638fe01f4816f74742551f8b304d55aa5bc0" - integrity sha512-1YRMg1Hex+6CigDs68fXCe48SU/f8kYSkhLWGs2ZiYJeo00Cv5Sd+Vo8ZbRzuC04w4JQlI0U6jCgZfcbf7eehQ== +"@abp/ng.schematics@~4.3.0-rc.1": + version "4.3.0-rc.1-1" + resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-4.3.0-rc.1-1.tgz#70897e5be3ea308b1a535241ddbf08ad730be1cf" + integrity sha512-YKnsx4q4OrUBJl8VbzHORlnPT1iEv6y72soe/xWqasL8i1UIEAUQjLx7ZDZCMWq+Dm+v7EgMU/yOjcNpdL3Eng== dependencies: "@angular-devkit/core" "~11.0.2" "@angular-devkit/schematics" "~11.0.2" got "^11.5.2" jsonc-parser "^2.3.0" + should-quote "^1.0.0" typescript "~3.9.2" -"@abp/ng.setting-management@~4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-4.2.2.tgz#f92040222d29e84b31b074c23fe0233c344a705e" - integrity sha512-hm/kuday+L32hqvvFCjNGEhmOwZSK8X+h1l8v8xaSA7JaP82pqBKARtUjumey6v52UiL/mDj/p89M+E9PryD5w== +"@abp/ng.setting-management@~4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-4.3.0-rc.1.tgz#d157eb62c5b34675a5cb40090b87ace318e2aacd" + integrity sha512-8aA7ixn5sKk9jgW9cGoGRWAmHL5D7As5E7aBxddTIxlvIIChc9A7xF8GigD+WufOHoKEFKRxHmEzDtnpTS0Hqg== dependencies: - "@abp/ng.theme.shared" "~4.2.2" + "@abp/ng.components" "~4.3.0-rc.1" + "@abp/ng.theme.shared" "~4.3.0-rc.1" tslib "^2.0.0" -"@abp/ng.tenant-management@~4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-4.2.2.tgz#91fa26176a9019bde52e4a8652e77a0f8394d0d7" - integrity sha512-/5yDzIKK0lokyy7vddIIsmM3fcXkxA9pOMMZYOIMchOTQkUnqQ6Gfo53iCRrt8UgIYIzEd1eY0fObHhwKu33yA== +"@abp/ng.tenant-management@~4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-4.3.0-rc.1.tgz#72f9d62868ba50ad7ae30964ff3f28b50ef89b4e" + integrity sha512-/Z1qED1BEx1vkR/N1qPeE+OqE/HXksHrl3v4bPjKMy1k6HGorzfzaBXghpwumvwGcAOLXGgigJAkG7bBr6qlrA== dependencies: - "@abp/ng.feature-management" "~4.2.2" - "@abp/ng.theme.shared" "~4.2.2" + "@abp/ng.feature-management" "~4.3.0-rc.1" + "@abp/ng.theme.shared" "~4.3.0-rc.1" tslib "^2.0.0" -"@abp/ng.theme.basic@~4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-4.2.2.tgz#87e349365a3cec93ab19364d29e6f22a58650371" - integrity sha512-tKCviHib50Eal7n/pUDVU/HtCfEP+BO7ys/SQFY5+TZrIQwUMsI9r6RhHVZGtHzvmwFXzT8r03IqKrpjZjfjSg== +"@abp/ng.theme.basic@~4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-4.3.0-rc.1.tgz#f9d1cdaff4f64fa1b1e79b288a4780f99dd70989" + integrity sha512-E+cALwuHHjg32kPR/dd/4rHrLc+pv4BSV+SH0RmdVPhbmbQBDCzz5YOCmss1p7KFSlGWF4+pUVn9ev4I+yYFhA== dependencies: - "@abp/ng.theme.shared" "~4.2.2" + "@abp/ng.theme.shared" "~4.3.0-rc.1" tslib "^2.0.0" -"@abp/ng.theme.shared@~4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-4.2.2.tgz#c8e19884e29f286323ae9dd1ffa1d7b4e3584971" - integrity sha512-qq+/klJywoy/Pr2dW0gM0jb2ac2qnZAYuUKhkV+wp+xMgZV2PW24V7mHbpPwtzg5ClQnLLyBYuj7S5qHblXRiw== +"@abp/ng.theme.shared@~4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-4.3.0-rc.1.tgz#1442443baf2a70832f0bd0f04a2103a731b7b521" + integrity sha512-1Ht2lKkenFQYrMxIaebiRmYhv8ASZEM/QFaEVak5u5C9KCVxC9sFX1Dl+MgFY11hoxiEbbI0GiXT+TfjAOmuVw== dependencies: - "@abp/ng.core" "~4.2.2" + "@abp/ng.core" "~4.3.0-rc.1" "@fortawesome/fontawesome-free" "^5.14.0" "@ng-bootstrap/ng-bootstrap" "^7.0.0" "@ngx-validate/core" "^0.0.13" "@swimlane/ngx-datatable" "^17.1.0" - bootstrap "^4.5.0" + bootstrap "~4.6.0" chart.js "^2.9.3" tslib "^2.0.0" -"@abp/utils@^4.2.1", "@abp/utils@^4.2.2": +"@abp/utils@^4.2.2": version "4.2.2" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.2.2.tgz#7afdbbd14246ce06c074109c51d01588596805a9" integrity sha512-fyPCe5BcS8b88qQd8Ns1D65TdlaOoOryL7mgkYAwBTTpmADLNJQ7R2L4VZxDybkMN2lou+ckCx7qlFIlQmWa7g== dependencies: just-compare "^1.3.0" +"@abp/utils@^4.3.0-rc.1": + version "4.3.0-rc.1" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" + integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== + dependencies: + just-compare "^1.3.0" + "@angular-builders/jest@^10.0.0": version "10.0.1" resolved "https://registry.yarnpkg.com/@angular-builders/jest/-/jest-10.0.1.tgz#a1a6fb5d11b5d54c051bdaa2012b5f046371560c" @@ -3968,7 +3985,7 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -bootstrap@^4.5.0: +bootstrap@^4.5.0, bootstrap@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.0.tgz#97b9f29ac98f98dfa43bf7468262d84392552fd7" integrity sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw== @@ -9832,7 +9849,7 @@ ng-packagr@^11.0.1: sync-rpc "^1.3.6" terser "^5.5.1" -ng-zorro-antd@^11.0.1: +ng-zorro-antd@^11.0.0, ng-zorro-antd@^11.0.1: version "11.3.0" resolved "https://registry.yarnpkg.com/ng-zorro-antd/-/ng-zorro-antd-11.3.0.tgz#c09c6c34229bad3cdb22a64b4806f898053f7bb3" integrity sha512-6oX+DidXd07bLWihwfhPqn8YeA6ZhZsYQsHUOib17lF/wVRZQCl9bacuYc7R/e6AyxuvFCsJQHVp0PEP7v+wTQ== From 17514aae82173b1d38aad8a0f4779a14b06e7855 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 5 Apr 2021 20:37:40 +0800 Subject: [PATCH 030/125] Try to set Position to 0 in RequestPayloadBuilder. --- .../AbpRemoteStreamContentModelBinder.cs | 7 ---- .../DynamicProxying/RequestPayloadBuilder.cs | 36 +++++++++---------- .../RemoteStreamContentTestController.cs | 6 ++-- ...RemoteStreamContentTestController_Tests.cs | 8 +++-- 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ContentFormatters/AbpRemoteStreamContentModelBinder.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ContentFormatters/AbpRemoteStreamContentModelBinder.cs index 8b7264fef0..da58641d7e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ContentFormatters/AbpRemoteStreamContentModelBinder.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ContentFormatters/AbpRemoteStreamContentModelBinder.cs @@ -115,13 +115,6 @@ namespace Volo.Abp.AspNetCore.Mvc.ContentFormatters } } } - else - { - postedFiles.Add(new RemoteStreamContent(request.Body) - { - ContentType = request.ContentType - }); - } } } } diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/RequestPayloadBuilder.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/RequestPayloadBuilder.cs index 8532f02c7c..1096fa971e 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/RequestPayloadBuilder.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/RequestPayloadBuilder.cs @@ -53,17 +53,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying return null; } - if (value is IRemoteStreamContent remoteStreamContent) - { - var content = new StreamContent(remoteStreamContent.GetStream()); - content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(remoteStreamContent.ContentType); - content.Headers.ContentLength = remoteStreamContent.ContentLength; - return content; - } - else - { - return new StringContent(jsonSerializer.Serialize(value), Encoding.UTF8, MimeTypes.Application.Json); - } + return new StringContent(jsonSerializer.Serialize(value), Encoding.UTF8, MimeTypes.Application.Json); } private static HttpContent GenerateFormPostData(ActionApiDescriptionModel action, IReadOnlyDictionary methodArguments) @@ -80,7 +70,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying if (parameters.Any(x => x.BindingSourceId == ParameterBindingSources.FormFile)) { - var postDataBuilder = new MultipartFormDataContent(); + var formData = new MultipartFormDataContent(); foreach (var parameter in parameters) { var value = HttpActionParameterHelper.FindParameterValue(methodArguments, parameter); @@ -91,32 +81,42 @@ namespace Volo.Abp.Http.Client.DynamicProxying if (value is IRemoteStreamContent remoteStreamContent) { - var streamContent = new StreamContent(remoteStreamContent.GetStream()); + var stream = remoteStreamContent.GetStream(); + if (stream.CanSeek) + { + stream.Position = 0; + } + var streamContent = new StreamContent(stream); if (!remoteStreamContent.ContentType.IsNullOrWhiteSpace()) { streamContent.Headers.ContentType = new MediaTypeHeaderValue(remoteStreamContent.ContentType); } - postDataBuilder.Add(streamContent, parameter.Name, parameter.Name); + formData.Add(streamContent, parameter.Name, parameter.Name); } else if (value is IEnumerable remoteStreamContents) { foreach (var content in remoteStreamContents) { - var streamContent = new StreamContent(content.GetStream()); + var stream = content.GetStream(); + if (stream.CanSeek) + { + stream.Position = 0; + } + var streamContent = new StreamContent(stream); if (!content.ContentType.IsNullOrWhiteSpace()) { streamContent.Headers.ContentType = new MediaTypeHeaderValue(content.ContentType); } - postDataBuilder.Add(streamContent, parameter.Name, parameter.Name); + formData.Add(streamContent, parameter.Name, parameter.Name); } } else { - postDataBuilder.Add(new StringContent(value.ToString(), Encoding.UTF8), parameter.Name); + formData.Add(new StringContent(value.ToString(), Encoding.UTF8), parameter.Name); } } - return postDataBuilder; + return formData; } else { diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController.cs index 15491f9b21..e74c9d52e8 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController.cs @@ -25,11 +25,11 @@ namespace Volo.Abp.AspNetCore.Mvc.ContentFormatters [HttpPost] [Route("Upload")] - public async Task UploadAsync([FromBody]IRemoteStreamContent streamContent) + public async Task UploadAsync(IRemoteStreamContent file) { - using (var reader = new StreamReader(streamContent.GetStream())) + using (var reader = new StreamReader(file.GetStream())) { - return await reader.ReadToEndAsync() + ":" + streamContent.ContentType; + return await reader.ReadToEndAsync() + ":" + file.ContentType; } } } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController_Tests.cs index 3d49a5b3ff..12745da732 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController_Tests.cs @@ -1,5 +1,6 @@ using System.IO; using System.Net.Http; +using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using Shouldly; @@ -25,8 +26,11 @@ namespace Volo.Abp.AspNetCore.Mvc.ContentFormatters var memoryStream = new MemoryStream(); await memoryStream.WriteAsync(Encoding.UTF8.GetBytes("UploadAsync")); memoryStream.Position = 0; - requestMessage.Content = new StreamContent(memoryStream); - requestMessage.Content.Headers.Add("Content-Type", "application/rtf"); + + var streamContent = new StreamContent(memoryStream); + streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/rtf"); + + requestMessage.Content = new MultipartFormDataContent {{streamContent, "file", "file"}}; var response = await Client.SendAsync(requestMessage); From 297e5ad5c9312342ba130512ce25d439c9df0a2c Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 15:41:39 +0300 Subject: [PATCH 031/125] refactor: only warn in devMode --- .../src/lib/components/modal/modal.component.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts index d11d1bcbc2..8452a951df 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts @@ -1,3 +1,4 @@ +import { isDevMode } from '@angular/core'; import { SubscriptionService } from '@abp/ng.core'; import { Component, @@ -206,9 +207,7 @@ export class ModalComponent implements OnDestroy { setTimeout(() => { if (!this.abpClose) return; - console.warn( - 'Please use abpClose directive instead of #abpClose template variable. #abpClose will be removed in v5.0', - ); + this.warnForDeprecatedClose(); fromEvent(this.abpClose.nativeElement, 'click') .pipe(takeUntil(this.destroy$)) .subscribe(() => this.close()); @@ -216,4 +215,12 @@ export class ModalComponent implements OnDestroy { this.init.emit(); } + + private warnForDeprecatedClose() { + if (isDevMode()) { + console.warn( + 'Please use abpClose directive instead of #abpClose template variable. #abpClose will be removed in v5.0', + ); + } + } } From ca74403b31d5cca11b2846cf993913f029fff594 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Mon, 5 Apr 2021 15:46:16 +0300 Subject: [PATCH 032/125] refactor: move isDevMode import --- .../theme-shared/src/lib/components/modal/modal.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts index 8452a951df..4195e84d9b 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts @@ -1,4 +1,3 @@ -import { isDevMode } from '@angular/core'; import { SubscriptionService } from '@abp/ng.core'; import { Component, @@ -12,6 +11,7 @@ import { Output, TemplateRef, ViewChild, + isDevMode, } from '@angular/core'; import { NgbModal, NgbModalOptions, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { fromEvent, Subject } from 'rxjs'; From 8a8453ca24cd88e4a7d0fe1f1224afd73faa6866 Mon Sep 17 00:00:00 2001 From: Ilkay Ilknur Date: Mon, 5 Apr 2021 16:03:20 +0300 Subject: [PATCH 033/125] page header documentation has been added. --- docs/en/UI/Blazor/Page-Header.md | 89 +++++++++++++++++- docs/en/images/page-header-toolbar-blazor.png | Bin 0 -> 22962 bytes 2 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 docs/en/images/page-header-toolbar-blazor.png diff --git a/docs/en/UI/Blazor/Page-Header.md b/docs/en/UI/Blazor/Page-Header.md index 2c7921bbd2..59748b717a 100644 --- a/docs/en/UI/Blazor/Page-Header.md +++ b/docs/en/UI/Blazor/Page-Header.md @@ -1,3 +1,90 @@ # Blazor UI: Page Header -TODO \ No newline at end of file +You can use the`PageHeader` component to set the page title, the breadcrumb items and the toolbar items for a page. Before using the `PageHeader` component, you need to add a using statement for the `Volo.Abp.AspNetCore.Components.Web.Theming.Layout` namespace. + +Once you add the `PageHeader` component to your page, you can control the related values using the parameters. + +## Page Title + + You can use the `Title` parameter to control the page header. + +```csharp + + +``` + +## Breadcrumb + +> **The [Basic Theme](Basic-Theme.md) currently doesn't implement the breadcrumbs.** + +Breadcrumbs can be added using the `BreadcrumbItems` property. + +**Example: Add Language Management to the breadcrumb items.** + +Create a collection of `Volo.Abp.BlazoriseUI.BreadcrumbItem` objects and set the collection to the `BreadcrumbItems` parameter. + +```csharp +public partial class Index +{ + protected List BreadcrumbItems { get; } = new(); + + protected override void OnInitialized() + { + BreadcrumbItems.Add(new BreadcrumbItem("Language Management")); + } +} +``` + +Navigate back to the razor page. + +```csharp + +``` + +The theme then renders the breadcrumb. An example render result can be: + +![breadcrumbs-example](../../images/breadcrumbs-example.png) + +* The Home icon is rendered by default. Set `BreadcrumbShowHome` to `false` to hide it. +* Breadcrumb items will be activated based on current navigation. Set `BreadcrumbShowCurrent` to `false` to disable it. + +You can add as many items as you need. `BreadcrumbItem` constructor gets three parameters: + +* `text`: The text to show for the breadcrumb item. +* `url` (optional): A URL to navigate to, if the user clicks to the breadcrumb item. +* `icon` (optional): An icon class (like `fas fa-user-tie` for Font-Awesome) to show with the `text`. + +## Page Toolbar + +Page toolbar can be set using the `Toolbar` property. + +**Example: Add a "New Item" toolbar item to the page toolbar.** + +Create a `PageToolbar` object and define toolbar items using the `AddButton` extension method. + +```csharp +public partial class Index +{ + protected PageToolbar Toolbar { get; } = new(); + + protected override void OnInitialized() + { + Toolbar.AddButton("New Item", () => + { + //Write your click action here + return Task.CompletedTask; + }, icon:IconName.Add); + } +} +``` + +Navigate back to the razor page and set the `Toolbar` parameter. + +```csharp + +``` + +An example render result can be: + +![breadcrumbs-example](../../images/page-header-toolbar-blazor.png) + diff --git a/docs/en/images/page-header-toolbar-blazor.png b/docs/en/images/page-header-toolbar-blazor.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d045489374545fe634c15812b2959a5e81af45 GIT binary patch literal 22962 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 Date: Mon, 5 Apr 2021 17:38:39 +0300 Subject: [PATCH 034/125] Fix order by --- docs/en/Tutorials/Part-10.md | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/docs/en/Tutorials/Part-10.md b/docs/en/Tutorials/Part-10.md index b578952cc7..f0e24c4853 100644 --- a/docs/en/Tutorials/Part-10.md +++ b/docs/en/Tutorials/Part-10.md @@ -326,6 +326,7 @@ Open the `BookAppService` interface in the `Books` folder of the `Acme.BookStore using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Dynamic.Core; using System.Threading.Tasks; using Acme.BookStore.Authors; using Acme.BookStore.Permissions; @@ -387,23 +388,17 @@ namespace Acme.BookStore.Books public override async Task> GetListAsync(PagedAndSortedResultRequestDto input) { - //Set a default sorting, if not provided - if (input.Sorting.IsNullOrWhiteSpace()) - { - input.Sorting = nameof(Book.Name); - } - //Get the IQueryable from the repository var queryable = await Repository.GetQueryableAsync(); //Prepare a query to join books and authors var query = from book in queryable join author in _authorRepository on book.AuthorId equals author.Id - orderby input.Sorting //TODO: Can not sort like that! select new {book, author}; //Paging query = query + .OrderBy(NormalizeSorting(input.Sorting)) .Skip(input.SkipCount) .Take(input.MaxResultCount); @@ -435,6 +430,25 @@ namespace Acme.BookStore.Books ObjectMapper.Map, List>(authors) ); } + + private static string NormalizeSorting(string sorting) + { + if (sorting.IsNullOrEmpty()) + { + return $"book.{nameof(Book.Name)}"; + } + + if (sorting.Contains("authorName", StringComparison.OrdinalIgnoreCase)) + { + return sorting.Replace( + "authorName", + "author.Name", + StringComparison.OrdinalIgnoreCase + ); + } + + return $"book.{sorting}"; + } } } ``` From fd0fe658236f68a9c96f28f2e849eeaea642f8d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Apr 2021 18:00:26 +0300 Subject: [PATCH 035/125] Updated client side usage --- docs/en/Features.md | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/docs/en/Features.md b/docs/en/Features.md index 1ec35f730a..b185eb2d74 100644 --- a/docs/en/Features.md +++ b/docs/en/Features.md @@ -326,20 +326,12 @@ if (feature != null) A feature value is available at the client side too, unless you set `IsVisibleToClients` to `false` on the feature definition. The feature values are exposed from the [Application Configuration API](API/Application-Configuration.md) and usable via some services on the UI. -### ASP.NET Core MVC / Razor Pages UI +See the following documents to learn how to check features in different UI types: -Use `abp.features` API to get the feature values. +* [ASP.NET Core MVC / Razor Pages / JavaScript API](UI/AspNetCore/JavaScript-API/Features.md) +* [Angular](UI/Angular/Features.md) -**Example: Get feature values in the JavaScript code** - -````js -var isEnabled = abp.features.values["MyApp.ExcelReporting"] === "true"; -var count = abp.features.values["MyApp.MaxProductCount"]; -```` - -### Angular UI - -See the [features](Features.md) document for the Angular UI. +**Blazor** applications can use the same `IFeatureChecker` service as explained above. ## Feature Management From 79aefcdbe5d861792e8b248527a34dc0b71aabec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Apr 2021 18:28:32 +0300 Subject: [PATCH 036/125] Update the Emailing document to show the new setting management UI --- docs/en/Emailing.md | 10 ++++++++-- docs/en/images/email-settings.png | Bin 0 -> 17875 bytes 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 docs/en/images/email-settings.png diff --git a/docs/en/Emailing.md b/docs/en/Emailing.md index a98874165d..50e7afc213 100644 --- a/docs/en/Emailing.md +++ b/docs/en/Emailing.md @@ -94,7 +94,13 @@ Email sending uses the [setting system](Settings.md) to define settings and get * **Abp.Mailing.Smtp.EnableSsl**: A value that indicates if the SMTP server uses SSL or not ("true" or "false". Default: "false"). * **Abp.Mailing.Smtp.UseDefaultCredentials**: If true, uses default credentials instead of the provided username and password ("true" or "false". Default: "true"). -The easiest way to define these settings it to add them to the `appsettings.json` file. The [application startup template](Startup-Templates/Application.md) already has these settings in the `appsettings.json`: +Email settings can be managed from the *Settings Page* of the [Setting Management](Modules/Setting-Management.md) module: + +![email-settings](images/email-settings.png) + +> Setting Management module is already installed if you've created your solution from the ABP Startup template. + +If you don't use the Setting Management module, you can simply define the settings inside your `appsettings.json` file: ````json "Settings": { @@ -110,7 +116,7 @@ The easiest way to define these settings it to add them to the `appsettings.json } ```` -You can set/change these settings using the `ISettingManager` and store values in a database. See the [setting system document](Settings.md) to understand the setting system better. +You can set/change these settings programmatically using the `ISettingManager` and store values in a database. See the [setting system document](Settings.md) to understand the setting system better. ### Encrypt the SMTP Password diff --git a/docs/en/images/email-settings.png b/docs/en/images/email-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa77da3129f1d216d0ab6a6bad35d87472f2fe7 GIT binary patch literal 17875 zcmdtKcUV)~x;GkR2`;3F2#A0PC@8&26;J^IsY(+tbdcVQ)SyTc1p(8hQv2@{PF8zR%tJp6{Hq&$rLL&vVxwNenY{jxpvt-uGADxkA-d<;h5HkU$_1 zGDQX1=MV^CB?NN8|I!8UP48)ECj@c}qA2@F^L6s(EKGeG-H5_emzIz8J1vMlycXd5 ztvT_+)?*dHOqC=0necl~qUf8%KT6kxy`O!4bL^EO7<@uZ7rjXJAn2iFc~`cSMP5jw zn0NExm*a{%!huQgmW#s57Xt0x)RTOhnGhvm38%7Wh#q;3`xz1O$5mm|%}@TT6`0bczdOA&#$YkU0Q^~$htb!xPBs#dk+ZTMc2@!(}zzLfvwU*mAvq?y}jig zn{8bQ8QE0x^J8#UzX3_~jOS{~W#~fXaZEd}0rQ&70;9vip`TjFY z^qG3T>Cw1ct~jS%z~1usd=s_3IVb8qD@zXHio)JL&OH8o%0R6{1*UY^%1twpSqMASWsYoPqgKX`|#*0rHMchxpl5tTQ z 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 literal 0 HcmV?d00001 From 5125eb8fd1f16ccb668de55446b95abfce358f04 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Tue, 6 Apr 2021 09:19:15 +0300 Subject: [PATCH 037/125] Move MobileDevelopment section into CreateSolution part --- docs/en/Getting-Started-Create-Solution.md | 6 ++++++ docs/en/Getting-Started-Running-Solution.md | 6 ------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/en/Getting-Started-Create-Solution.md b/docs/en/Getting-Started-Create-Solution.md index 7caa26159a..8c62246010 100644 --- a/docs/en/Getting-Started-Create-Solution.md +++ b/docs/en/Getting-Started-Create-Solution.md @@ -41,6 +41,12 @@ abp new Acme.BookStore{{if UI == "NG"}} -u angular{{else if UI == "Blazor"}} -u > [ABP CLI document](./CLI.md) covers all of the available commands and options. +## Mobile Development + +If you want to include a [React Native](https://reactnative.dev/) project in your solution, add `-m react-native` (or `--mobile react-native`) argument to project creation command. This is a basic React Native startup template to develop mobile applications integrated to your ABP based backends. + +See the [Getting Started with the React Native](Getting-Started-React-Native.md) document to learn how to configure and run the React Native application. + ### The Solution Structure The solution has a layered structure (based on the [Domain Driven Design](Domain-Driven-Design.md)) and contains unit & integration test projects. See the [application template document](Startup-Templates/Application.md) to understand the solution structure in details. diff --git a/docs/en/Getting-Started-Running-Solution.md b/docs/en/Getting-Started-Running-Solution.md index e871ec882f..3f508589a3 100644 --- a/docs/en/Getting-Started-Running-Solution.md +++ b/docs/en/Getting-Started-Running-Solution.md @@ -193,12 +193,6 @@ It may take a longer time for the first build. Once it finishes, it opens the An Enter **admin** as the username and **1q2w3E*** as the password to login to the application. The application is up and running. You can start developing your application based on this startup template. -## Mobile Development - -If you want to include a [React Native](https://reactnative.dev/) project in your solution, add `-m react-native` (or `--mobile react-native`) argument to project creation command. This is a basic React Native startup template to develop mobile applications integrated to your ABP based backends. - -See the [Getting Started with the React Native](Getting-Started-React-Native.md) document to learn how to configure and run the React Native application. - ## See Also * [Web Application Development Tutorial](Tutorials/Part-1.md) From a20ed6cf7263b757dce0259678d02a6555d40098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 11:19:44 +0300 Subject: [PATCH 038/125] Rename Json-Serialization document --- docs/en/Caching.md | 2 +- docs/en/{Json.md => Json-Serialization.md} | 0 docs/en/Timing.md | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename docs/en/{Json.md => Json-Serialization.md} (100%) diff --git a/docs/en/Caching.md b/docs/en/Caching.md index 7dbf02d875..13129bbc95 100644 --- a/docs/en/Caching.md +++ b/docs/en/Caching.md @@ -262,7 +262,7 @@ Distributed cache service provides an interesting feature. Assume that you've up ### IDistributedCacheSerializer -`IDistributedCacheSerializer` service is used to serialize and deserialize the cache items. Default implementation is the `Utf8JsonDistributedCacheSerializer` class that uses `IJsonSerializer` service to convert objects to [JSON](Json.md) and vice verse. Then it uses UTC8 encoding to convert the JSON string to a byte array which is accepted by the distributed cache. +`IDistributedCacheSerializer` service is used to serialize and deserialize the cache items. Default implementation is the `Utf8JsonDistributedCacheSerializer` class that uses `IJsonSerializer` service to convert objects to [JSON](Json-Serialization.md) and vice verse. Then it uses UTC8 encoding to convert the JSON string to a byte array which is accepted by the distributed cache. You can [replace](Dependency-Injection.md) this service by your own implementation if you want to implement your own serialization logic. diff --git a/docs/en/Json.md b/docs/en/Json-Serialization.md similarity index 100% rename from docs/en/Json.md rename to docs/en/Json-Serialization.md diff --git a/docs/en/Timing.md b/docs/en/Timing.md index afa4abda71..790721e7a8 100644 --- a/docs/en/Timing.md +++ b/docs/en/Timing.md @@ -83,7 +83,7 @@ var normalizedDateTime = Clock.Normalize(dateTime) * `DateTime` type binding in the ASP.NET Core MVC model binding. * Saving data to and reading data from database via [Entity Framework Core](Entity-Framework-Core.md). -* Working with `DateTime` objects on [JSON deserialization](Json.md). +* Working with `DateTime` objects on [JSON deserialization](Json-Serialization.md). #### DisableDateTimeNormalization Attribute From 47e24aaf8c4e6bbea50a3963e9d29242a289253a Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 6 Apr 2021 12:16:00 +0300 Subject: [PATCH 039/125] Cli: Remove Product service blazor layer for none blazer applications (microservice) resolves https://github.com/volosoft/volo/issues/6198 --- .../Templates/Microservice/MicroserviceTemplateBase.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs index 76c2fe6bb5..7068cb9327 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs @@ -42,6 +42,9 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.ProductService.Blazor", + "/services/product/MyCompanyName.MyProjectName.ProductService.sln", + "/services/product/src/MyCompanyName.MyProjectName.ProductService.Blazor")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveFolderStep("/apps/blazor")); @@ -60,6 +63,9 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.ProductService.Blazor", + "/services/product/MyCompanyName.MyProjectName.ProductService.sln", + "/services/product/src/MyCompanyName.MyProjectName.ProductService.Blazor")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveFolderStep("/apps/blazor")); @@ -113,6 +119,9 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.ProductService.Blazor", + "/services/product/MyCompanyName.MyProjectName.ProductService.sln", + "/services/product/src/MyCompanyName.MyProjectName.ProductService.Blazor")); steps.Add(new RemoveFolderStep("/apps/blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor-server")); From 59eb16593dbeeb82bcd5599c008fd2867fcf1056 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Tue, 6 Apr 2021 12:36:04 +0300 Subject: [PATCH 040/125] add to FAQ --- .../Commercial/Localization/Resources/en.json | 10 ++++++---- .../Commercial/Localization/Resources/zh-Hans.json | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json index 9b30514f03..3c2a7cc59c 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json @@ -7,7 +7,7 @@ "OrganizationNotFoundMessage": "No organization found!", "DeveloperCount": "Allocated / total developers", "QuestionCount": "Remaining / total questions", - "Unlimited": "Unlimited", + "Unlimited": "Unlimited", "Owners": "Owners", "AddMember": "Add member", "AddOwner": "Add owner", @@ -179,7 +179,9 @@ "LicenseExtendUpgradeDiff": "What is the difference between license extend and upgrade?", "LicenseExtendUpgradeDiffExplanation": "Extending: By extending/renewing your license, you will continue to get premium support and get major updates for the modules and themes. Besides, you will be able to continue creating new projects. And you will still be able to use ABP Suite which speeds up your development.
Upgrading: By upgrading your license, you will promote to a higher license plan which will allow you to get additional benefits. See the license comparison table to check the differences between the license plans.On the other hand, when you upgrade, your license expiry date will not change!To extend your license end date, you need to extend your license.", "LicenseRenewalCost": "What is the license renewal cost after 1 year?", - "LicenseRenewalCostExplanation": "You can renew (extend) your license by paying %80 of the current license price. For example; Standard ABP Team License is ${0} and renewal price of the Team License is ${1}.", + "LicenseRenewalCostExplanation": "The renewal (extend) rate of all ABP Commercial perpetual licenses is {0} of the license list price. The renewal price of the standard Team License is ${1}, standard Business License is ${2} and standard Enterprise License is ${3}. If you are already a customer, log into your account to review the available renewal pricing.", + "HowDoIRenewMyLicense": "How do I renew my license?", + "HowDoIRenewMyLicenseExplanation": "You can renew your license by navigating to the organization management page. In order to take advantage of our discounted Early Renewal rates, make sure you renew before your license expires. Don't worry about not knowing when your Early Renewal opportunity closes, however. You'll receive 2 reminder e-mails before your subscription expires. We'll send them at 30 days, 7 days before expiration.", "IsSourceCodeIncluded": "Does my license include the source code of the commercial modules and themes?", "IsSourceCodeIncludedExplanation1": "Depends on the license type you've purchased:", "IsSourceCodeIncludedExplanation2": "Team: Your solution uses the modules and the themes as NuGet and NPM packages. It doesn't include their source code. In this way, you can easily upgrade these modules and themes whenever a new version is available. However, you can not get the source code of the modules and the themes.", @@ -188,7 +190,7 @@ "ChangingDevelopers": "Can I change the registered developers of my organization in the future?", "ChangingDevelopersExplanation": "In addition to add new developers to your license, you can also change the existing developers (you can remove a developer and add a new one to the same seat) without any additional cost.", "WhatHappensWhenLicenseEnds": "What happens when my license period ends?", - "WhatHappensWhenLicenseEndsExplanation1": "ABP Commercial has perpetual license type.After your license expires, you can continue developing your project. And you are not obliged to renew your license. After your license expires;", + "WhatHappensWhenLicenseEndsExplanation1": "ABP Commercial license type is perpetual license. After your license expires, you can continue developing your project. And you are not obliged to renew your license. Your license comes with a one-year Updates and Support plan out of the box. To continue to receive new features, performance enhancements, bug fixes, support and continue to use ABP Suite, make sure to renew your plan each year. When your license expires, you will not be able to get more of the following benefits;", "WhatHappensWhenLicenseEndsExplanation2": "You can not create new solutions using the ABP Commercial, but you can continue to develop your existing applications forever.", "WhatHappensWhenLicenseEndsExplanation3": "You will be able to get updates for the modules and themes within your MAJOR version. For example; if you are using v3.2.0 of a module, you can still get updates for v3.x.x (v3.3.0, v3.5.2... etc.) of that module. But you cannot get updates for the next major version (like v4.x, v5.x)", "WhatHappensWhenLicenseEndsExplanation4": "You can not install new modules and themes added to the ABP Commercial platform after your license ends.", @@ -228,7 +230,7 @@ "HowCanIRefundVatExplanation2": "Log in into your 2Checkout account", "HowCanIRefundVatExplanation3": "Find the appropriate order and press \"Refund Belated VAT\" (enter your VAT ID)", "HowCanIGetMyInvoice": "How can I get my invoice?", - "HowCanIGetMyInvoiceExplanation": "There are 2 payment gateways for purchasing a license: PayU and 2Checkout. If you purchase your license through 2Checkout gateway, it sends the PDF invoice to your email address, see 2Checkout invoicing. If you purchase through the PayU gateway or via bank wire transfer, we will prepare and send your invoice. You can request your invoice from the organization management page.", + "HowCanIGetMyInvoiceExplanation": "There are 2 payment gateways for purchasing a license: PayU and 2Checkout. If you purchase your license through 2Checkout gateway, it sends the PDF invoice to your email address, see 2Checkout invoicing. If you purchase through the PayU gateway or via bank wire transfer, we will prepare and send your invoice. You can request your invoice from the organization management page.", "Forum": "Forum", "SupportExplanation": "ABP Commercial licenses provides a premium forum support by a team consists of the ABP Framework experts.", "PrivateTicket": "Private Ticket", diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json index 789e377e9d..e92e55bf6c 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/zh-Hans.json @@ -179,7 +179,9 @@ "LicenseExtendUpgradeDiff": "许可扩展和升级有什么区别?", "LicenseExtendUpgradeDiffExplanation": "扩展: 通过扩展/更新许可,你将继续获得高级支持,并获得有关模块和主题的重大更新. 此外你将能够继续创建新项目. 而且你仍然可以使用ABP Suite来加快开发速度.
升级: 通过升级许可,你将升级到更高的许可计划,这将使你获得更多好处. 查看 许可比较表来检查许可计划之间的差异. 另一方面,当你升级时你的许可到期日期不会改变!要延长你的许可终止日期,你需要延长你的许可.", "LicenseRenewalCost": "一年后的许可续期费用是多少?", - "LicenseRenewalCostExplanation": "你可以通过支付当前许可价格的%80来续订(扩展)你的许可. 例如; 标准ABP团队许可为 ${0} 续订价格是 ${1}.", + "LicenseRenewalCostExplanation": "ABP商业版的续费价格均为原价的{0}. Team版本的续费价格是${1}, Business版本的续订价格是${2}, Enterprise版本的续订价格是${3}. 如果你已经购买了, 请登录帐户以查看续订价格.", + "HowDoIRenewMyLicense": "如何续费我的许可证?", + "HowDoIRenewMyLicenseExplanation": "你可以登录以进行续费. 为了享受我们的续费折扣, 请确保在许可证到期之前进行续费, 我们会在到期前7天和30天发送2封续费提醒邮件.", "IsSourceCodeIncluded": "我的许可是否包括商业模块和主题的源代码?", "IsSourceCodeIncludedExplanation1": "取决于你购买的许可类型:", "IsSourceCodeIncludedExplanation2": "团队: 你的解决方案将这些模块和主题作为NuGet和NPM包使用. 它不包括其源代码. 这样,只要有新版本可用,你就可以轻松升级这些模块和主题. 但是,你无法获取模块和主题的源代码.", @@ -228,7 +230,7 @@ "HowCanIRefundVatExplanation2": "登录到你的2Checkout账户", "HowCanIRefundVatExplanation3": "找到适当的订单,然后按\"退还已延期的增值税\"(输入你的增值税ID", "HowCanIGetMyInvoice": "我如何获得发票?", - "HowCanIGetMyInvoiceExplanation": "有两个用于购买许可的支付网关:PayU和2Checkout. 如果你通过2Checkout网关购买许可,则它将PDF发票发送到你的电子邮件地址,请参阅2Checkout发票.如果你是通过PayU网关或通过银行电汇购买的,我们将准备并发送你的发票. 你可以从组织管理页面索取发票.", + "HowCanIGetMyInvoiceExplanation": "有两个用于购买许可的支付网关:PayU和2Checkout. 如果你通过2Checkout网关购买许可,则它将PDF发票发送到你的电子邮件地址,请参阅2Checkout发票.如果你是通过PayU网关或通过银行电汇购买的,我们将准备并发送你的发票. 你可以从组织管理页面索取发票.", "Forum": "论坛", "SupportExplanation": "ABP商业版许可包含由ABP框架专家组成的团队提供的高级论坛支持.", "PrivateTicket": "私有票", From 28ba460f6222ca0b09535ae151f09a2e5ab78612 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 6 Apr 2021 13:01:15 +0300 Subject: [PATCH 041/125] Docs: Add Preview-Stable variable to document context resolves https://github.com/abpframework/abp/issues/8429 --- .../docs/src/Volo.Docs.Web/Models/VersionInfoViewModel.cs | 4 +++- .../Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/docs/src/Volo.Docs.Web/Models/VersionInfoViewModel.cs b/modules/docs/src/Volo.Docs.Web/Models/VersionInfoViewModel.cs index 7def41b3f3..86f3a4d821 100644 --- a/modules/docs/src/Volo.Docs.Web/Models/VersionInfoViewModel.cs +++ b/modules/docs/src/Volo.Docs.Web/Models/VersionInfoViewModel.cs @@ -8,6 +8,8 @@ namespace Volo.Docs.Models public bool IsSelected { get; set; } + public bool IsPreview { get; set; } + public VersionInfoViewModel(string displayText, string version, bool isSelected = false) { DisplayText = displayText; @@ -15,4 +17,4 @@ namespace Volo.Docs.Models IsSelected = isSelected; } } -} \ No newline at end of file +} diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index a52027bb11..94cee58d1a 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -66,6 +66,8 @@ namespace Volo.Docs.Pages.Documents.Project public bool ShowProjectsCombobox { get; set; } + public bool IsVersionPreview { get; set; } + public string DocumentLanguageCode { get; set; } public DocumentParametersDto DocumentPreferences { get; set; } @@ -283,6 +285,7 @@ namespace Volo.Docs.Pages.Documents.Project if (versionFromUrl != null) { versionFromUrl.IsSelected = true; + IsVersionPreview = versionFromUrl.IsPreview; Version = versionFromUrl.Version; } else @@ -321,8 +324,9 @@ namespace Volo.Docs.Pages.Documents.Project { return version; } - + version.DisplayText = $"{version.DisplayText} ({L["Preview"].Value})"; + version.IsPreview = true; } } @@ -530,6 +534,7 @@ namespace Volo.Docs.Pages.Documents.Project { UserPreferences.Add("Document_Language_Code", DocumentLanguageCode); UserPreferences.Add("Document_Version", Version); + UserPreferences.Add("Release_Status", IsVersionPreview ? "preview" : "stable"); var cookie = Request.Cookies["AbpDocsPreferences"]; From c25b83dfb1bf75d903c9650e28d55a7dfb8ed3fc Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Tue, 6 Apr 2021 14:14:40 +0300 Subject: [PATCH 042/125] Add missing localizations --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 3 ++- .../AbpIoLocalization/Admin/Localization/Resources/tr.json | 3 ++- .../Admin/Localization/Resources/zh-Hans.json | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 09d93b946c..7a5b336b88 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -272,6 +272,7 @@ "PaymentProduct": "Payment Product", "ProductName": "Product Name", "Code": "Code", - "GenerateInvoice": "Generate Invoice" + "GenerateInvoice": "Generate Invoice", + "ExportOrganizationsToExcel": "Export Organizations To Excel" } } diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json index 531e0424d4..3ce042ec5b 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json @@ -221,6 +221,7 @@ "PaymentProduct": "Ödeme Ürünü", "ProductName": "Ürün İsmi", "Code": "Kod", - "GenerateInvoice": "Fatura Oluştur" + "GenerateInvoice": "Fatura Oluştur", + "ExportOrganizationsToExcel": "Organizasyonu Excel'e aktar" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json index a027bd3699..196d51868f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json @@ -256,6 +256,7 @@ "PaymentProduct": "付款产品", "ProductName": "产品名称", "Code": "代码", - "GenerateInvoice": "生成发票" + "GenerateInvoice": "生成发票", + "ExportOrganizationsToExcel": "将组织出口到Excel" } } \ No newline at end of file From a6983b5510887f12ac06cab114ab1b2b414ee06d Mon Sep 17 00:00:00 2001 From: Ilkay Ilknur Date: Tue, 6 Apr 2021 15:48:03 +0300 Subject: [PATCH 043/125] `Sortable` and `DisplayFormatProvider` properties have been added to the `TableColumn` --- .../Extensibility/TableColumns/TableColumn.cs | 3 ++ .../Components/AbpExtensibleDataGrid.razor | 41 ++++++++++++------- .../Components/AbpExtensibleDataGrid.razor.cs | 12 ++++++ 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs index 0676c14399..2121b8a128 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs @@ -1,6 +1,7 @@ using JetBrains.Annotations; using System; using System.Collections.Generic; +using System.Globalization; using Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions; namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns @@ -11,11 +12,13 @@ namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns public string Data { get; set; } [CanBeNull] public string DisplayFormat { get; set; } + public IFormatProvider DisplayFormatProvider { get; set; } = CultureInfo.CurrentCulture; [CanBeNull] public Type Component { get; set; } public List Actions { get; set; } [CanBeNull] public Func ValueConverter { get; set; } + public bool Sortable { get; set; } public TableColumn() { diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor index f060450ffd..e0b867492e 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor @@ -25,11 +25,11 @@ if (action.ConfirmationMessage != null) { } @@ -37,9 +37,9 @@ { } @@ -62,7 +62,26 @@ { if (!ExtensionPropertiesRegex.IsMatch(column.Data)) { - + @if (column.ValueConverter == null) + { + + } + else + { + + + @(GetConvertedFieldValue(context, column)) + + + } } else { @@ -87,14 +106,7 @@ { if (column.ValueConverter != null) { - if (column.DisplayFormat == null) - { - @(column.ValueConverter(propertyValue)) - } - else - { - @(string.Format(column.DisplayFormat, column.ValueConverter(propertyValue))) - } + @(GetConvertedFieldValue(context, column)) } else { @@ -104,10 +116,9 @@ } else { - @(string.Format(column.DisplayFormat, propertyValue)) + @(string.Format(column.DisplayFormatProvider, column.DisplayFormat, propertyValue)) } } - } } diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor.cs b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor.cs index 72a58f94a5..71ff4b61ec 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor.cs @@ -46,5 +46,17 @@ namespace Volo.Abp.BlazoriseUI.Components builder.CloseComponent(); }; } + + protected virtual string GetConvertedFieldValue(TItem item, TableColumn columnDefinition) + { + var convertedValue = columnDefinition.ValueConverter.Invoke(item); + if (!columnDefinition.DisplayFormat.IsNullOrEmpty()) + { + return string.Format(columnDefinition.DisplayFormatProvider, columnDefinition.DisplayFormat, + convertedValue); + } + + return convertedValue; + } } } \ No newline at end of file From 8a67c5408a5a248e6ad6e42c3540bf6a7f437906 Mon Sep 17 00:00:00 2001 From: Ilkay Ilknur Date: Tue, 6 Apr 2021 16:14:24 +0300 Subject: [PATCH 044/125] new member definitions have been added. --- docs/en/UI/Blazor/Data-Table-Column-Extensions.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/en/UI/Blazor/Data-Table-Column-Extensions.md b/docs/en/UI/Blazor/Data-Table-Column-Extensions.md index 6fad41af81..ebb2f27cbf 100644 --- a/docs/en/UI/Blazor/Data-Table-Column-Extensions.md +++ b/docs/en/UI/Blazor/Data-Table-Column-Extensions.md @@ -70,7 +70,9 @@ This section explains how to customize data table columns using the properties i * `Component`: Type of the component that you want to render. See the "Rendering Custom Components In The Data Table Columns" section for details. * `Actions`: Action lists for the column. You can render additional action columns by adding actions to this collection. * `ValueConverter`: Simple converter function that is being called before rendering the content. +* `Sortable`: A boolean field indicating whether the column is sortable or not. * `DisplayFormat`: You can specify a custom format for the column. +* `DisplayFormatProvider` : You can provide a custom `IFormatProvider` for the column. Default value is `CultureInfo.CurrentCulture`. ## Rendering Custom Components In The Data Table Columns From b8d33ae993e73e1a17e475d0f5ef1f7adaac64ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 17:32:35 +0300 Subject: [PATCH 045/125] remove old & duplicate document: Dynamic-JavaScript-Client-Proxies.md --- docs/en/UI/AspNetCore/JavaScript-API/Ajax.md | 2 +- .../JavaScript-API/Dynamic-JavaScript-Client-Proxies.md | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) delete mode 100644 docs/en/UI/AspNetCore/JavaScript-API/Dynamic-JavaScript-Client-Proxies.md diff --git a/docs/en/UI/AspNetCore/JavaScript-API/Ajax.md b/docs/en/UI/AspNetCore/JavaScript-API/Ajax.md index dca3105b5c..c100199d27 100644 --- a/docs/en/UI/AspNetCore/JavaScript-API/Ajax.md +++ b/docs/en/UI/AspNetCore/JavaScript-API/Ajax.md @@ -8,7 +8,7 @@ * 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. +> While `abp.ajax` makes the AJAX call pretty easier, you typically will use the [Dynamic JavaScript Client Proxy](../Dynamic-JavaScript-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 diff --git a/docs/en/UI/AspNetCore/JavaScript-API/Dynamic-JavaScript-Client-Proxies.md b/docs/en/UI/AspNetCore/JavaScript-API/Dynamic-JavaScript-Client-Proxies.md deleted file mode 100644 index 5270852b60..0000000000 --- a/docs/en/UI/AspNetCore/JavaScript-API/Dynamic-JavaScript-Client-Proxies.md +++ /dev/null @@ -1,3 +0,0 @@ -# ASP.NET Core MVC / Razor Pages UI: Dynamic JavaScript Client Proxies - -TODO \ No newline at end of file From 88bf958dec027c8b311846c067a7ad6d8f7c87f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 17:32:56 +0300 Subject: [PATCH 046/125] Completed initial version of the TODO app tutorial. --- docs/en/Tutorials/Todo/Index.md | 362 +++++++++++++++++++++++++++ docs/en/Tutorials/Todo/todo-api.png | Bin 0 -> 11114 bytes docs/en/Tutorials/Todo/todo-list.png | Bin 0 -> 12311 bytes 3 files changed, 362 insertions(+) create mode 100644 docs/en/Tutorials/Todo/Index.md create mode 100644 docs/en/Tutorials/Todo/todo-api.png create mode 100644 docs/en/Tutorials/Todo/todo-list.png diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md new file mode 100644 index 0000000000..d026649451 --- /dev/null +++ b/docs/en/Tutorials/Todo/Index.md @@ -0,0 +1,362 @@ +# Quick Tutorial + +````json +//[doc-params] +{ + "UI": ["MVC", "Blazor", "BlazorServer", "NG"], + "DB": ["EF", "Mongo"], +} +```` + +This is a single-part, quick tutorial to build a simple TODO application with the ABP Framework. Here, a sample screenshot from the final application: + +![todo-list](todo-list.png) + +### Source Code + +You can find source code of the example application [here](https://github.com/abpframework/abp-samples/tree/master/TodoApp). + +## Creating a New Solution + +Please create a new solution, named `TodoApp`, by following the [Getting Started](../../Getting-Started.md) document. + +**TODO: Instead, we can create the solution here!** + +## Domain Layer + +This application has a single [entity](../../Entities.md) and we are starting by creating it. Create a new `TodoItem` class inside the *TodoApp.Domain* project: + +````csharp +using System; +using Volo.Abp.Domain.Entities; + +namespace TodoApp +{ + public class TodoItem : BasicAggregateRoot + { + public string Text { get; set; } + } +} +```` + +`BasicAggregateRoot` is one the simplest base class to create root entities, and `Guid` is the primary key (`Id`) of the entity here. + +## Database Integration + +Next step is to setup the [Entity Framework Core](../../Entity-Framework-Core.md) configuration. Open the `TodoAppDbContext` class in the `EntityFrameworkCore` folder of the *TodoApp.EntityFrameworkCore* project and add a new `DbSet` property to this class: + +````csharp +public DbSet TodoItems { get; set; } +```` + +Then open the `TodoAppDbContextModelCreatingExtensions` class in the same folder and add a mapping configuration for the `TodoItem` class as shown below: + +````csharp +public static void ConfigureTodoApp(this ModelBuilder builder) +{ + Check.NotNull(builder, nameof(builder)); + + builder.Entity(b => + { + b.ToTable("TodoItems"); + }); +} +```` + +We've mapped `TodoItem` entity to a `TodoItems` table in the database. + +**TODO: DB MIGRATIONS** + +Now, we can use ABP repositories to save and retrieve todo items, as we'll do in the next section. + +## Application Layer + +An [Application Service](../../Application-Services.md) is used to perform use cases of the application. We need to perform the following use cases; + +* Get the list of todo items +* Create a new todo item +* Delete an existing todo item + +We can start by defining an interface for the application service. Create a new `ITodoAppService` interface in the *TodoApp.Application.Contracts* project, as shown below: + +````csharp +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace TodoApp +{ + public interface ITodoAppService : IApplicationService + { + Task> GetListAsync(); + Task CreateAsync(string text); + Task DeleteAsync(Guid id); + } +} +```` + +`GetListAsync` and `CreateAsync` methods return `TodoItemDto`. Applications Services typically gets and returns DTOs ([Data Transfer Objects](../../Data-Transfer-Objects.md)) instead of entities. So, we should define the DTO class here. Create a new `TodoItemDto` class inside the *TodoApp.Application.Contracts* project: + +````csharp +using System; + +namespace TodoApp +{ + public class TodoItemDto + { + public Guid Id { get; set; } + public string Text { get; set; } + } +} +```` + +This is a very simple DTO class that matches to our `TodoItem` entity. We are ready to implement the `ITodoAppService`. Create a `TodoAppService` class inside the *TodoApp.Application* project, as shown below: + +````csharp +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Repositories; + +namespace TodoApp +{ + public class TodoAppService : ApplicationService, ITodoAppService + { + private readonly IRepository _todoItemRepository; + + public TodoAppService(IRepository todoItemRepository) + { + _todoItemRepository = todoItemRepository; + } + + // TODO: Implement the methods + } +} +```` + +This class inherits from the `ApplicationService` class of the ABP Framework and implements the `ITodoAppService` that was defined before. ABP provides default generic [repositories](../../Repositories.md) for the entities. We can use them to perform the fundamental database operations. This class [injects](../../Dependency-Injection.md) `IRepository`, which is the default repository for the `TodoItem` entity. We will use it to implement the use cases described before. + +Let's start by implementing the `GetListAsync` method: + +````csharp +public async Task> GetListAsync() +{ + var items = await _todoItemRepository.GetListAsync(); + return items + .Select(item => new TodoItemDto + { + Id = item.Id, + Text = item.Text + }).ToList(); +} +```` + +We are simply getting the complete `TodoItem` list from database, mapping them to `TodoItemDto` objects and returning as the result. + +Next method is `CreateAsync` and we can implement it as shown below: + +````csharp +public async Task CreateAsync(string text) +{ + var todoItem = await _todoItemRepository.InsertAsync( + new TodoItem {Text = text} + ); + + return new TodoItemDto + { + Id = todoItem.Id, + Text = todoItem.Text + }; +} +```` + +Repository's `InsertAsync` method inserts the given `TodoItem` to database and returns the same `TodoItem` object. It also sets the `Id`, so we can use it on the returning object. We are simply returning a `TodoItemDto` by creating from the new `TodoItem` entity. + +Finally, we can simple implement the `DeleteAsync` as the following code block: + +````csharp +public async Task DeleteAsync(Guid id) +{ + await _todoItemRepository.DeleteAsync(id); +} +```` + +The application service is ready to be used from the UI layer. + +## User Interface Layer + +It is time to show the todo items on the UI! Before starting to write the code, it would be good to remember what we are trying to build. Here, a sample screenshot from the final UI: + +![todo-list](todo-list.png) + +> **We will keep the UI side minimal for this tutorial to make the tutorial simple and focused. See the [web application development tutorial](../Part-1.md) to build real-life pages with all aspects.** + +### Index.cshtml.cs + +Open the `Index.cshtml.cs` file in the `Pages` folder of the *TodoApp.Web* project and replace with the following content: + +````csharp +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace TodoApp.Web.Pages +{ + public class IndexModel : TodoAppPageModel + { + public List TodoItems { get; set; } + + private readonly ITodoAppService _todoAppService; + + public IndexModel(ITodoAppService todoAppService) + { + _todoAppService = todoAppService; + } + + public async Task OnGetAsync() + { + TodoItems = await _todoAppService.GetListAsync(); + } + } +} +```` + +This class uses the `ITodoAppService` to get the list of todo items and assign the the `TodoItems` property. We will use it to render the todo items on the razor page. + +### Index.cshtml + +Open the `Index.cshtml` file in the `Pages` folder of the *TodoApp.Web* project and replace with the following content: + +````xml +@page +@model TodoApp.Web.Pages.IndexModel +@section styles { + +} +@section scripts { + +} +
+ + + + TODO LIST + + + + + +
+ + +
+ + +
    + @foreach (var todoItem in Model.TodoItems) + { +
  • + @todoItem.Text +
  • + } +
+
+
+
+```` + +We are using ABP's [card tag helper](../../UI/AspNetCore/Tag-Helpers/Cards.md) to create a simple card view. You could directly use the standard bootstrap HTML structure, however the ABP [tag helpers]() make it much easier and type safe. + +This page imports a CSS and a JavaScript file, so we should also create them. + +### Index.js + +Open the `Index.js` file in the `Pages` folder of the *TodoApp.Web* project and replace with the following content: + +````js +$(function () { + + // DELETING ITEMS ///////////////////////////////////////// + $('#TodoList').on('click', 'li i', function(){ + var $li = $(this).parent(); + var id = $li.attr('data-id'); + + todoApp.todo.delete(id).then(function(){ + $li.remove(); + abp.notify.info('Deleted the todo item.'); + }); + }); + + // CREATING NEW ITEMS ///////////////////////////////////// + $('#NewItemForm').submit(function(e){ + e.preventDefault(); + + var todoText = $('#NewItemText').val(); + todoApp.todo.create(todoText).then(function(result){ + $('
  • ') + .html(' ' + result.text) + .appendTo($('#TodoList')); + $('#NewItemText').val(''); + }); + }); +}); +```` + +In the first part, we are registering to click events of the trash icons near to the todo items, deleting the related item on the server and showing a notification on the UI. Also, we are removing the deleted item from DOM, so we don't need to refresh the page. + +In the second part, we are creating a new todo item on the server. If it succeed, we are then manipulating DOM to insert a new `
  • ` element to the todo list. In this way, no need to refresh the whole page after creating a new todo item. + +The interesting part here is how we communicate with the server. It seems we are just calling some JavaScript functions like `todoApp.todo.delete(id)` and `todoApp.todo.create(todoText)`. + +#### Dynamic JavaScript Proxies & Auto API Controllers + + `todoApp.todo.delete(...)` and `todoApp.todo.create(...)` functions are dynamically created by the ABP Framework, thanks to the [Dynamic JavaScript Client Proxy](../../UI/AspNetCore/Dynamic-JavaScript-Proxies.md) system. These functions perform HTTP API calls to the server and return a promise, so you can register a callback to the `then` function as we've done above. + +However, you may ask that we haven't created any API Controller, so how server handles these requests? This question brings us the [Auto API Controller](../../API/Auto-API-Controllers.md) feature of the ABP Framework. It automatically converts the application services to API Controllers by conventions. + +If you open the [Swagger UI](https://swagger.io/tools/swagger-ui/) by entering the `/swagger` URL in your application, you can see the TODO API: + +![todo-api](todo-api.png) + +### Index.css + +As the final touch, open the `Index.css` file in the `Pages` folder of the *TodoApp.Web* project and replace with the following content: + +````css +#TodoList{ + list-style: none; + margin: 0; + padding: 0; +} + +#TodoList li { + padding: 5px; + margin: 5px 0px; + border: 1px solid #cccccc; + background-color: #f5f5f5; +} + +#TodoList li i +{ + opacity: 0.5; +} + +#TodoList li i:hover +{ + opacity: 1; + color: #ff0000; + cursor: pointer; +} +```` + +This is a simple styling for the todo page. We believe that you can do much better :) + +## Conclusion + +In this tutorial, we've build a very simple application to warm up to the ABP Framework. If you are looking to build a serious application, please check the [web application development tutorial](../Part-1.md) which covers all the aspects of a real-life web application development. + +## Source Code + +You can find source code of the example application [here](https://github.com/abpframework/abp-samples/tree/master/TodoApp). \ No newline at end of file diff --git a/docs/en/Tutorials/Todo/todo-api.png b/docs/en/Tutorials/Todo/todo-api.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a25f57b56d8191bb90b1aa676f086b88430d08 GIT binary patch literal 11114 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 OLPb#nS|V@u{yzY2=I+G+ literal 0 HcmV?d00001 diff --git a/docs/en/Tutorials/Todo/todo-list.png b/docs/en/Tutorials/Todo/todo-list.png new file mode 100644 index 0000000000000000000000000000000000000000..62f5a48065d2947116bc79208b26d7061535b024 GIT binary patch literal 12311 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 literal 0 HcmV?d00001 From 30f8539742d964b9ce2ec8f6241d98b7ab523bed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 18:22:07 +0300 Subject: [PATCH 047/125] Update Index.md --- docs/en/Tutorials/Todo/Index.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index d026649451..59ee507642 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -8,13 +8,13 @@ } ```` -This is a single-part, quick tutorial to build a simple TODO application with the ABP Framework. Here, a sample screenshot from the final application: +This is a single-part, quick tutorial to build a simple todo application with the ABP Framework. Here, a screenshot from the final application: ![todo-list](todo-list.png) ### Source Code -You can find source code of the example application [here](https://github.com/abpframework/abp-samples/tree/master/TodoApp). +You can find source code of the completed application [here](https://github.com/abpframework/abp-samples/tree/master/TodoApp). ## Creating a New Solution @@ -357,6 +357,10 @@ This is a simple styling for the todo page. We believe that you can do much bett In this tutorial, we've build a very simple application to warm up to the ABP Framework. If you are looking to build a serious application, please check the [web application development tutorial](../Part-1.md) which covers all the aspects of a real-life web application development. -## Source Code +### Source Code + +You can find source code of the completed application [here](https://github.com/abpframework/abp-samples/tree/master/TodoApp). + +## See Also -You can find source code of the example application [here](https://github.com/abpframework/abp-samples/tree/master/TodoApp). \ No newline at end of file +* [Web Application Development Tutorial](../Part-1.md) \ No newline at end of file From 9f39dcfff755c47556004fb0387b23f9aadecc8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 18:49:15 +0300 Subject: [PATCH 048/125] added creating a new app --- docs/en/Tutorials/Todo/Index.md | 38 +++++++++++++++++++-- docs/en/Tutorials/Todo/todo-ui-initial.png | Bin 0 -> 29191 bytes 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 docs/en/Tutorials/Todo/todo-ui-initial.png diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 59ee507642..4f2d4942be 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -16,11 +16,45 @@ This is a single-part, quick tutorial to build a simple todo application with th You can find source code of the completed application [here](https://github.com/abpframework/abp-samples/tree/master/TodoApp). +## Pre-Requirements + +### IDE + +You will need to an IDE (e.g. [Visual Studio](https://visualstudio.microsoft.com/vs/)) that supports [.NET 5.0+](https://dotnet.microsoft.com/download/dotnet) development. + +### ABP CLI + +We will use the ABP CLI to create new solutions with the ABP Framework. You can run the following command in a command-line terminal to install it: + +````bash +dotnet tool install -g Volo.Abp.Cli +```` + ## Creating a New Solution -Please create a new solution, named `TodoApp`, by following the [Getting Started](../../Getting-Started.md) document. +Create an empty folder, open a command-line terminal and execute the following command in the terminal: + +````bash +abp new TodoApp +```` + +This will create a new solution, named *TodoApp*. Open the solution in your favorite IDE. + +### Create the Database + +If you are using Visual Studio, right click to the `TodoApp.DbMigrator` project, select *Set as StartUp Project*, then hit *Ctrl+F5* to run it without debugging. It will create the initial database and seed the initial data. + +> Some IDEs (e.g. Rider) may have problems for the first run since *DbMigrator* adds the initial migration and re-compiles the project. In this case, open a command-line terminal in the folder of the `.DbMigrator` project and execute the `dotnet run` command. + +### Run the Application + +It is good to run the application before starting the development. Ensure the `TodoApp.Web` project is the startup project, then run the application (Ctrl+F5 in Visual Studio) to see the initial UI: + +![todo-ui-initial](todo-ui-initial.png) + +You can click to the *Login* button, use `admin` as the username and `1q2w3E*` as the password to login to the application. -**TODO: Instead, we can create the solution here!** +All ready. We can start the coding! ## Domain Layer diff --git a/docs/en/Tutorials/Todo/todo-ui-initial.png b/docs/en/Tutorials/Todo/todo-ui-initial.png new file mode 100644 index 0000000000000000000000000000000000000000..44be4ceaf610475fb2da5822fa112fcdf7cf07ff GIT binary patch literal 29191 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

    mJ+7wNy5hF0jG-huOZ zKl!lOesJE5yV%i}qDZyMt!z;|x+b8z3B}`z#jW2;0}qZ=apr{ZTFg)-Ca#Y7wbz4)dyqL9Bpm9BbhN47`9T@(8xV!lY!ho%r2La?Egwd^HJ72K1F?dHDFrao@RTe>@Cj zt>Xs{%BL6O%gG~ijr3;(Kk`4@JV(J3z#?qY7xEWAK{cZMREB}_X>*krkURKdM(E;S z-LFqC#F6+93W@~Yf4?GcLY_}v6#uIjCV}@4F+#x;|MNet{om6Fa;!x~`9aKk3d8O# zmyCFX|Mt6guKfa{H}L#9@p#z3%W6ANqNE{2f}-^d35Ahp2%({9aS{3UzXixcw$RyVg`lSxZ zfKeK;iQ7D{EGQjiCrrI;IYP0;_+N*(9$To}o2~_y2J+{W=PQu(yZFNvlS<#IA7Trh zIQj*@UaFza%0LJZ`}}s$8?`nxlnmS*z%#Au$M_pA+Bvx|CYezNSudy_)<~Cuu(-)s zPcVpn{8_tafB_-OJDMEQoiZqoL|k^kEZ3b^jCWIvJUQR^orIwhzuD=^v-vGRVyg%Q4DPWwXIDcPQ$gVB9fB7@R4 z1G|J74^Mt?3#ZiHYAW}zA(O!#o*FM`;~%qfghQaql3{O&ez>AR=~4ETT*eIWGFxL$ zmTdFthibAjc&8@Oh@mO6kgcnz@1TC_y~E7bl)a*wOZZZKQPscZAhh+uiQ_~9Ocdb? zq!RszB4u9-F<||v#ZfVQT-VN%KVlND)G9M*|B_yU6 z#dUJh8^dsr3ucH!9@`f-g47nPb{cP35o<{!EPPdZ zyDRfSUxuCr@hGl^3$Q+VcQ|+rlo>Rnk(GKq z(Z1%1H1+!S&~}%)Z;r@|7Ikc?URrOi%{T%~#7fo0Lq5FK*@Mnmb@H4Mkwur zK_!NZ@)KF9!$?6}r>sBarw-u{01EP<|9|~}?SS0AN2bB(K2BwVktUj!>OZ@+397W2 zId4KOr9+BtCT>!D=5h{nGJ)wLIM_6=jMDyEE3udJM=i_NG{cAE$E4QVeuT`oe>Tr2 zMh3d>jnf>reO^hj8vXC>Ts-la;Xq>K2Vva*z0L^f6Og0)*8%={!Zlm2taAE=`Jc)r NGLniC<)4lG|1SoFqM!f( literal 0 HcmV?d00001 From 35f78e17f67975d94493a6909ffaa6ee7463884a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 18:59:22 +0300 Subject: [PATCH 049/125] Added db migrations --- docs/en/Tutorials/Todo/Index.md | 20 +++++++++++++++++- .../Tutorials/Todo/todo-efcore-migration.png | Bin 0 -> 9490 bytes 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 docs/en/Tutorials/Todo/todo-efcore-migration.png diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 4f2d4942be..7b153f55ea 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -99,7 +99,25 @@ public static void ConfigureTodoApp(this ModelBuilder builder) We've mapped `TodoItem` entity to a `TodoItems` table in the database. -**TODO: DB MIGRATIONS** +The startup solution is configured to use Entity Framework Core [Code First Migrations](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations). Since we've changed the database mapping configuration, we should create a new migration and apply changes to the database. + +Open a command-line terminal in the directory of the *TodoApp.EntityFrameworkCore.DbMigrations* project and type the following command: + +````bash +dotnet ef migrations add Added_TodoItem +```` + +This will add a new migration class to the project: + +![todo-efcore-migration](todo-efcore-migration.png) + +You can apply changes to the database using the following command, in the same command-line terminal: + +````bash +dotnet ef database update +```` + +> If you are using Visual Studio, you may want to use `Add-Migration Added_TodoItem` and `Update-Database` commands in the *Package Manager Console (PMC)*. In this case, ensure that the `TodoApp.Web` is the startup project and `TodoApp.EntityFrameworkCore.DbMigrations` is the *Default Project* in PMC. Now, we can use ABP repositories to save and retrieve todo items, as we'll do in the next section. diff --git a/docs/en/Tutorials/Todo/todo-efcore-migration.png b/docs/en/Tutorials/Todo/todo-efcore-migration.png new file mode 100644 index 0000000000000000000000000000000000000000..df370aebcf44b25ad02ab77df496cc6790690f72 GIT binary patch literal 9490 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 Date: Tue, 6 Apr 2021 19:03:38 +0300 Subject: [PATCH 050/125] Update todo-list.png --- docs/en/Tutorials/Todo/todo-list.png | Bin 12311 -> 13433 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/Tutorials/Todo/todo-list.png b/docs/en/Tutorials/Todo/todo-list.png index 62f5a48065d2947116bc79208b26d7061535b024..e2eaf8bc461dd59647264b05ef825eaf0493ee6e 100644 GIT binary patch literal 13433 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 L8Cv?6$@~8S2+WpW literal 12311 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 From 6dccad308dc7a91e98145467075154eb4f665e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 19:10:39 +0300 Subject: [PATCH 051/125] Update Index.md --- docs/en/Tutorials/Todo/Index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 7b153f55ea..7451ef2d0c 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -227,7 +227,7 @@ public async Task CreateAsync(string text) Repository's `InsertAsync` method inserts the given `TodoItem` to database and returns the same `TodoItem` object. It also sets the `Id`, so we can use it on the returning object. We are simply returning a `TodoItemDto` by creating from the new `TodoItem` entity. -Finally, we can simple implement the `DeleteAsync` as the following code block: +Finally, we can implement the `DeleteAsync` as the following code block: ````csharp public async Task DeleteAsync(Guid id) From b4b87d773c63bf445a525b0d93d86e54944dc7d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 20:34:34 +0300 Subject: [PATCH 052/125] Update Index.md --- docs/en/Tutorials/Todo/Index.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 7451ef2d0c..1797b50a52 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -1,4 +1,4 @@ -# Quick Tutorial +# Quick Start ````json //[doc-params] @@ -8,12 +8,10 @@ } ```` -This is a single-part, quick tutorial to build a simple todo application with the ABP Framework. Here, a screenshot from the final application: +This is a single-part, quick-start tutorial to build a simple todo application with the ABP Framework. Here, a screenshot from the final application: ![todo-list](todo-list.png) -### Source Code - You can find source code of the completed application [here](https://github.com/abpframework/abp-samples/tree/master/TodoApp). ## Pre-Requirements @@ -409,7 +407,7 @@ This is a simple styling for the todo page. We believe that you can do much bett In this tutorial, we've build a very simple application to warm up to the ABP Framework. If you are looking to build a serious application, please check the [web application development tutorial](../Part-1.md) which covers all the aspects of a real-life web application development. -### Source Code +## Source Code You can find source code of the completed application [here](https://github.com/abpframework/abp-samples/tree/master/TodoApp). From f3c47a5c47eab023088d2d845b2de76d12f06ec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 21:57:35 +0300 Subject: [PATCH 053/125] Completed blazor UI for the todo app. --- docs/en/Tutorials/Todo/Index.md | 201 +++++++++++++++++- .../Todo/todo-swagger-ui-initial.png | Bin 0 -> 16231 bytes 2 files changed, 191 insertions(+), 10 deletions(-) create mode 100644 docs/en/Tutorials/Todo/todo-swagger-ui-initial.png diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 1797b50a52..8ab0d3c6a1 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -3,8 +3,7 @@ ````json //[doc-params] { - "UI": ["MVC", "Blazor", "BlazorServer", "NG"], - "DB": ["EF", "Mongo"], + "UI": ["MVC", "Blazor"] } ```` @@ -33,7 +32,7 @@ dotnet tool install -g Volo.Abp.Cli Create an empty folder, open a command-line terminal and execute the following command in the terminal: ````bash -abp new TodoApp +abp new TodoApp{{if UI=="Blazor"}} -u blazor{{end}} ```` This will create a new solution, named *TodoApp*. Open the solution in your favorite IDE. @@ -46,8 +45,25 @@ If you are using Visual Studio, right click to the `TodoApp.DbMigrator` project, ### Run the Application +{{if UI=="MVC"}} + It is good to run the application before starting the development. Ensure the `TodoApp.Web` project is the startup project, then run the application (Ctrl+F5 in Visual Studio) to see the initial UI: +{{else if UI=="Blazor"}} + +It is good to run the application before starting the development. The solution has two main applications; + +* `TodoApp.HttpApi.Host` host the server-side HTTP API. +* `TodoApp.Blazor` is the client-side Blazor WebAssembly application. + +Ensure the `TodoApp.HttpApi.Host` project is the startup project, then run the application (Ctrl+F5 in Visual Studio) to see the server-side HTTP API on the [Swagger UI](https://swagger.io/tools/swagger-ui/): + +![todo-swagger-ui-initial](todo-swagger-ui-initial.png) + +You can explore and test your HTTP API with this UI. Now, we can set the `TodoApp.Blazor` as the startup project and run it to open the actual Blazor application UI: + +{{end}} + ![todo-ui-initial](todo-ui-initial.png) You can click to the *Login* button, use `admin` as the username and `1q2w3E*` as the password to login to the application. @@ -75,7 +91,11 @@ namespace TodoApp ## Database Integration -Next step is to setup the [Entity Framework Core](../../Entity-Framework-Core.md) configuration. Open the `TodoAppDbContext` class in the `EntityFrameworkCore` folder of the *TodoApp.EntityFrameworkCore* project and add a new `DbSet` property to this class: +Next step is to setup the [Entity Framework Core](../../Entity-Framework-Core.md) configuration. + +### Mapping Configuration + +Open the `TodoAppDbContext` class in the `EntityFrameworkCore` folder of the *TodoApp.EntityFrameworkCore* project and add a new `DbSet` property to this class: ````csharp public DbSet TodoItems { get; set; } @@ -97,6 +117,8 @@ public static void ConfigureTodoApp(this ModelBuilder builder) We've mapped `TodoItem` entity to a `TodoItems` table in the database. +### Code First Migrations + The startup solution is configured to use Entity Framework Core [Code First Migrations](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations). Since we've changed the database mapping configuration, we should create a new migration and apply changes to the database. Open a command-line terminal in the directory of the *TodoApp.EntityFrameworkCore.DbMigrations* project and type the following command: @@ -115,7 +137,7 @@ You can apply changes to the database using the following command, in the same c dotnet ef database update ```` -> If you are using Visual Studio, you may want to use `Add-Migration Added_TodoItem` and `Update-Database` commands in the *Package Manager Console (PMC)*. In this case, ensure that the `TodoApp.Web` is the startup project and `TodoApp.EntityFrameworkCore.DbMigrations` is the *Default Project* in PMC. +> If you are using Visual Studio, you may want to use `Add-Migration Added_TodoItem` and `Update-Database` commands in the *Package Manager Console (PMC)*. In this case, ensure that {{if UI=="MVC"}}`TodoApp.Web`{{else if UI=="Blazor"}}`TodoApp.HttpApi.Host`{{end}} is the startup project and `TodoApp.EntityFrameworkCore.DbMigrations` is the *Default Project* in PMC. Now, we can use ABP repositories to save and retrieve todo items, as we'll do in the next section. @@ -127,6 +149,8 @@ An [Application Service](../../Application-Services.md) is used to perform use c * Create a new todo item * Delete an existing todo item +### Application Service Interface + We can start by defining an interface for the application service. Create a new `ITodoAppService` interface in the *TodoApp.Application.Contracts* project, as shown below: ````csharp @@ -146,6 +170,8 @@ namespace TodoApp } ```` +### Data Transfer Object + `GetListAsync` and `CreateAsync` methods return `TodoItemDto`. Applications Services typically gets and returns DTOs ([Data Transfer Objects](../../Data-Transfer-Objects.md)) instead of entities. So, we should define the DTO class here. Create a new `TodoItemDto` class inside the *TodoApp.Application.Contracts* project: ````csharp @@ -161,7 +187,11 @@ namespace TodoApp } ```` -This is a very simple DTO class that matches to our `TodoItem` entity. We are ready to implement the `ITodoAppService`. Create a `TodoAppService` class inside the *TodoApp.Application* project, as shown below: +This is a very simple DTO class that matches to our `TodoItem` entity. We are ready to implement the `ITodoAppService`. + +### Application Service Implementation + +Create a `TodoAppService` class inside the *TodoApp.Application* project, as shown below: ````csharp using System; @@ -189,6 +219,8 @@ namespace TodoApp This class inherits from the `ApplicationService` class of the ABP Framework and implements the `ITodoAppService` that was defined before. ABP provides default generic [repositories](../../Repositories.md) for the entities. We can use them to perform the fundamental database operations. This class [injects](../../Dependency-Injection.md) `IRepository`, which is the default repository for the `TodoItem` entity. We will use it to implement the use cases described before. +#### Getting Todo Items + Let's start by implementing the `GetListAsync` method: ````csharp @@ -206,6 +238,8 @@ public async Task> GetListAsync() We are simply getting the complete `TodoItem` list from database, mapping them to `TodoItemDto` objects and returning as the result. +#### Creating a New Todo Item + Next method is `CreateAsync` and we can implement it as shown below: ````csharp @@ -225,6 +259,8 @@ public async Task CreateAsync(string text) Repository's `InsertAsync` method inserts the given `TodoItem` to database and returns the same `TodoItem` object. It also sets the `Id`, so we can use it on the returning object. We are simply returning a `TodoItemDto` by creating from the new `TodoItem` entity. +#### Deleting a Todo Item + Finally, we can implement the `DeleteAsync` as the following code block: ````csharp @@ -244,9 +280,11 @@ It is time to show the todo items on the UI! Before starting to write the code, > **We will keep the UI side minimal for this tutorial to make the tutorial simple and focused. See the [web application development tutorial](../Part-1.md) to build real-life pages with all aspects.** +{{if UI=="MVC"}} + ### Index.cshtml.cs -Open the `Index.cshtml.cs` file in the `Pages` folder of the *TodoApp.Web* project and replace with the following content: +Open the `Index.cshtml.cs` file in the `Pages` folder of the *TodoApp.Web* project and replace the content with the following code block: ````csharp using System.Collections.Generic; @@ -295,11 +333,13 @@ Open the `Index.cshtml` file in the `Pages` folder of the *TodoApp.Web* project TODO LIST - - +

    - + @@ -403,6 +443,147 @@ As the final touch, open the `Index.css` file in the `Pages` folder of the *Todo This is a simple styling for the todo page. We believe that you can do much better :) +Now, you can run the application again to see the result. + +{{else if UI=="Blazor"}} + +### Index.razor.cs + +Open the `Index.razor.cs` file in the `Pages` folder of the *TodoApp.Blazor* project and replace the content with the following code block: + +````csharp +using Microsoft.AspNetCore.Components; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace TodoApp.Blazor.Pages +{ + public partial class Index + { + [Inject] + private ITodoAppService TodoAppService { get; set; } + + private List TodoItems { get; set; } = new List(); + private string NewTodoText { get; set; } + + protected async override Task OnInitializedAsync() + { + TodoItems = await TodoAppService.GetListAsync(); + } + + private async Task Create() + { + var result = await TodoAppService.CreateAsync(NewTodoText); + TodoItems.Add(result); + NewTodoText = null; + } + + private async Task Delete(TodoItemDto todoItem) + { + await TodoAppService.DeleteAsync(todoItem.Id); + await Notify.Info("Deleted the todo item."); + TodoItems.Remove(todoItem); + } + } +} +```` + +This class uses the `ITodoAppService` to perform operations for the todo items. It manipulates the `TodoItems` list after create and delete operations. In this way, we don't need to refresh the whole todo list from the server. + +See the *Dynamic C# Proxies & Auto API Controllers* section below to learn how we could inject and use the application service interface from the Blazor application which is running on the browser! But now, let's continue and complete the application. + +### Index.razor + +Open the `Index.razor` file in the `Pages` folder of the *TodoApp.Blazor* project and replace the content with the following code block: + +````xml +@page "/" +@inherits TodoAppComponentBase +
    + + + + TODO LIST + + + + +
    + + +
    + + +
      + @foreach (var todoItem in TodoItems) + { +
    • + @todoItem.Text +
    • + } +
    +
    +
    +
    +```` + +### Index.razor.css + +As the final touch, open the `Index.razor.css` file in the `Pages` folder of the *TodoApp.Web* project and replace with the following content: + +````css +#TodoList{ + list-style: none; + margin: 0; + padding: 0; +} + +#TodoList li { + padding: 5px; + margin: 5px 0px; + border: 1px solid #cccccc; + background-color: #f5f5f5; +} + +#TodoList li i +{ + opacity: 0.5; +} + +#TodoList li i:hover +{ + opacity: 1; + color: #ff0000; + cursor: pointer; +} +```` + +This is a simple styling for the todo page. We believe that you can do much better :) + +Now, you can run the application again to see the result. + +### Dynamic C# Proxies & Auto API Controllers + +In the `Index.razor.cs` file, we've injected (with the `[Inject]` attribute) and used the `ITodoAppService` just like using a local service. Remember that the Blazor application is running on the browser while the implementation of this application service is running on the server. + +The magic is done by the ABP Framework's [Dynamic C# Client Proxy](../../API/Dynamic-CSharp-API-Clients.md) system. It uses the standard `HttpClient` and performs HTTP API requests to the remote server. It also handles all the standard tasks for us, including authorization, JSON serialization and exception handling. + +However, you may ask that we haven't created any API Controller, so how server handles these requests? This question brings us the [Auto API Controller](../../API/Auto-API-Controllers.md) feature of the ABP Framework. It automatically converts the application services to API Controllers by conventions. + +If you run the `TodoApp.HttpApi.Host` application, you can see the TODO API: + +![todo-api](todo-api.png) + +{{end}} + ## Conclusion In this tutorial, we've build a very simple application to warm up to the ABP Framework. If you are looking to build a serious application, please check the [web application development tutorial](../Part-1.md) which covers all the aspects of a real-life web application development. diff --git a/docs/en/Tutorials/Todo/todo-swagger-ui-initial.png b/docs/en/Tutorials/Todo/todo-swagger-ui-initial.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3ed405c79b81f6459958608a731ae680be3c2b GIT binary patch literal 16231 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 Date: Tue, 6 Apr 2021 22:38:06 +0300 Subject: [PATCH 054/125] Update Index.md --- docs/en/Tutorials/Todo/Index.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 8ab0d3c6a1..c906dce0a7 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -398,17 +398,7 @@ In the first part, we are registering to click events of the trash icons near to In the second part, we are creating a new todo item on the server. If it succeed, we are then manipulating DOM to insert a new `
  • ` element to the todo list. In this way, no need to refresh the whole page after creating a new todo item. -The interesting part here is how we communicate with the server. It seems we are just calling some JavaScript functions like `todoApp.todo.delete(id)` and `todoApp.todo.create(todoText)`. - -#### Dynamic JavaScript Proxies & Auto API Controllers - - `todoApp.todo.delete(...)` and `todoApp.todo.create(...)` functions are dynamically created by the ABP Framework, thanks to the [Dynamic JavaScript Client Proxy](../../UI/AspNetCore/Dynamic-JavaScript-Proxies.md) system. These functions perform HTTP API calls to the server and return a promise, so you can register a callback to the `then` function as we've done above. - -However, you may ask that we haven't created any API Controller, so how server handles these requests? This question brings us the [Auto API Controller](../../API/Auto-API-Controllers.md) feature of the ABP Framework. It automatically converts the application services to API Controllers by conventions. - -If you open the [Swagger UI](https://swagger.io/tools/swagger-ui/) by entering the `/swagger` URL in your application, you can see the TODO API: - -![todo-api](todo-api.png) +The interesting part here is how we communicate with the server. See the *Dynamic JavaScript Proxies & Auto API Controllers* section to understand how it works. But now, let's continue and complete the application. ### Index.css @@ -445,6 +435,16 @@ This is a simple styling for the todo page. We believe that you can do much bett Now, you can run the application again to see the result. +### Dynamic JavaScript Proxies & Auto API Controllers + +In the `Index.js` file, we've used `todoApp.todo.delete(...)` and `todoApp.todo.create(...)` functions to communicate with the server. These functions are dynamically created by the ABP Framework, thanks to the [Dynamic JavaScript Client Proxy](../../UI/AspNetCore/Dynamic-JavaScript-Proxies.md) system. They perform HTTP API calls to the server and return a promise, so you can register a callback to the `then` function as we've done above. + +However, you may ask that we haven't created any API Controller, so how server handles these requests? This question brings us the [Auto API Controller](../../API/Auto-API-Controllers.md) feature of the ABP Framework. It automatically converts the application services to API Controllers by conventions. + +If you open the [Swagger UI](https://swagger.io/tools/swagger-ui/) by entering the `/swagger` URL in your application, you can see the Todo API: + +![todo-api](todo-api.png) + {{else if UI=="Blazor"}} ### Index.razor.cs @@ -578,7 +578,7 @@ The magic is done by the ABP Framework's [Dynamic C# Client Proxy](../../API/Dyn However, you may ask that we haven't created any API Controller, so how server handles these requests? This question brings us the [Auto API Controller](../../API/Auto-API-Controllers.md) feature of the ABP Framework. It automatically converts the application services to API Controllers by conventions. -If you run the `TodoApp.HttpApi.Host` application, you can see the TODO API: +If you run the `TodoApp.HttpApi.Host` application, you can see the Todo API: ![todo-api](todo-api.png) From bf12bbf066bfad375492d7916f08a6417a617ef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 22:43:04 +0300 Subject: [PATCH 055/125] Update docs-nav.json --- docs/en/docs-nav.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index f4e07c9521..32e62eccbe 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -1,5 +1,9 @@ { "items": [ + { + "text": "Quick Start", + "path": "Tutorials/Todo/Index.md" + }, { "text": "Getting Started", "items": [ From 308ccf0f96d3ae700de9744736bc544024e5bd17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 22:55:37 +0300 Subject: [PATCH 056/125] Add MyCompanyName.MyProjectName.Blazor.styles.css remove main.css duplication --- .../MyProjectNameBundleContributor.cs | 3 +++ .../MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.css | 1 + .../MyCompanyName.MyProjectName.Blazor/wwwroot/index.html | 2 +- .../src/MyCompanyName.MyProjectName.Blazor/wwwroot/main.css | 5 +++-- 4 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.css diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributor.cs index 684426ede0..43c0a96ed4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBundleContributor.cs @@ -2,6 +2,9 @@ namespace MyCompanyName.MyProjectName.Blazor { + /* Add your global styles/scripts here. + * See https://docs.abp.io/en/abp/latest/UI/Blazor/Global-Scripts-Styles to learn how to use it + */ public class MyProjectNameBundleContributor : IBundleContributor { public void AddScripts(BundleContext context) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.css new file mode 100644 index 0000000000..abef246243 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.css @@ -0,0 +1 @@ +/* Write here your styles for the Index page */ \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html index ec18eb03c7..3c1c60baa9 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html @@ -9,7 +9,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/main.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/main.css index eb9395b846..471b4d8bf7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/main.css +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/main.css @@ -1,4 +1,5 @@ -.spinner { +/* Global styles for the MyProjectName application */ +.spinner { width: 40px; height: 40px; display: block; @@ -45,4 +46,4 @@ transform: scale(1.0); -webkit-transform: scale(1.0); } -} +} \ No newline at end of file From 25fe517c7f2d793bdc5a86a26d6f96ea937602f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 6 Apr 2021 23:07:31 +0300 Subject: [PATCH 057/125] Add MyCompanyName.MyProjectName.Blazor.styles.css --- .../MyCompanyName.MyProjectName.Blazor/wwwroot/global.js | 4 ++-- .../MyCompanyName.MyProjectName.Blazor/wwwroot/index.html | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.js b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.js index bb1185599c..2de0e6b6ff 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.js +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.js @@ -43,9 +43,9 @@ var ue=function(){var e=new RegExp('(?:false|true|null|[\\{\\}\\[\\]]|(?:-?\\b(? */ var n=r(29),i=r(30),o=r(31);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function d(e,t){if(u.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return j(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return H(e).length;default:if(n)return j(e).length;t=(""+t).toLowerCase(),n=!0}}function p(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function v(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=u.from(t,n)),u.isBuffer(t))return 0===t.length?-1:y(e,t,r,n,i);if("number"==typeof t)return t&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):y(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,r,n,i){var o,s=1,a=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var h=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var l=!0,f=0;fi&&(n=i):n=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function E(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function x(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:c>223?3:c>191?2:1;if(i+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(o=e[i+1]))&&(u=(31&c)<<6|63&o)>127&&(h=u);break;case 3:o=e[i+1],s=e[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:o=e[i+1],s=e[i+2],a=e[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u)}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}return function(e){var t=e.length;if(t<=k)return String.fromCharCode.apply(String,e);for(var r="",n=0;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,r);case"utf8":case"utf-8":return x(this,t,r);case"ascii":return A(this,t,r);case"latin1":case"binary":return P(this,t,r);case"base64":return E(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}.apply(this,arguments)},u.prototype.equals=function(e){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===u.compare(this,e)},u.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},u.prototype.compare=function(e,t,r,n,i){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0),a=Math.min(o,s),c=this.slice(n,i),h=e.slice(t,r),l=0;li)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return m(this,e,t,r);case"utf8":case"utf-8":return _(this,e,t,r);case"ascii":return S(this,e,t,r);case"latin1":case"binary":return w(this,e,t,r);case"base64":return F(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var k=4096;function A(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function I(e,t,r,n,i,o){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function D(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function U(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function L(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function N(e,t,r,n,o){return o||L(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function O(e,t,r,n,o){return o||L(e,0,r,8),i.write(e,t,r,n,52,8),r+8}u.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},u.prototype.readUInt8=function(e,t){return t||R(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return t||R(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return t||R(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return t||R(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return t||R(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||R(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},u.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||R(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},u.prototype.readInt8=function(e,t){return t||R(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){t||R(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(e,t){t||R(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(e,t){return t||R(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return t||R(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return t||R(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return t||R(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return t||R(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return t||R(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,r,n){e=+e,t|=0,r|=0,n||I(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+r},u.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},u.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},u.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):U(this,e,t,!0),t+4},u.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):U(this,e,t,!1),t+4},u.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);I(this,e,t,r,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o>0)-a&255;return t+r},u.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);I(this,e,t,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[t+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+r},u.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},u.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},u.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):U(this,e,t,!0),t+4},u.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||I(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):U(this,e,t,!1),t+4},u.prototype.writeFloatLE=function(e,t,r){return N(this,e,t,!0,r)},u.prototype.writeFloatBE=function(e,t,r){return N(this,e,t,!1,r)},u.prototype.writeDoubleLE=function(e,t,r){return O(this,e,t,!0,r)},u.prototype.writeDoubleBE=function(e,t,r){return O(this,e,t,!1,r)},u.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(28))},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";t.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){for(var t,r=c(e),n=r[0],s=r[1],a=new o(function(e,t,r){return 3*(t+r)/4-r}(0,n,s)),u=0,h=s>0?n-4:n,l=0;l>16&255,a[u++]=t>>8&255,a[u++]=255&t;return 2===s&&(t=i[e.charCodeAt(l)]<<2|i[e.charCodeAt(l+1)]>>4,a[u++]=255&t),1===s&&(t=i[e.charCodeAt(l)]<<10|i[e.charCodeAt(l+1)]<<4|i[e.charCodeAt(l+2)]>>2,a[u++]=t>>8&255,a[u++]=255&t),a},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,o=[],s=0,a=r-i;sa?a:s+16383));return 1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"=")),o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,u=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function h(e,t,r){for(var i,o,s=[],a=t;a>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,r,n,i){var o,s,a=8*i-n-1,u=(1<>1,h=-7,l=r?i-1:0,f=r?-1:1,g=e[t+l];for(l+=f,o=g&(1<<-h)-1,g>>=-h,h+=a;h>0;o=256*o+e[t+l],l+=f,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+e[t+l],l+=f,h-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(g?-1:1);s+=Math.pow(2,n),o-=c}return(g?-1:1)*s*Math.pow(2,o-n)},t.write=function(e,t,r,n,i,o){var s,a,u,c=8*o-i-1,h=(1<>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:o-1,d=n?1:-1,p=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=h):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),(t+=s+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=h?(a=0,s=h):s+l>=1?(a=(t*u-1)*Math.pow(2,i),s+=l):(a=t*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;e[r+g]=255&a,g+=d,a/=256,i-=8);for(s=s<0;e[r+g]=255&s,g+=d,s/=256,c-=8);e[r+g-d]|=128*p}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.jws,r=e.KeyUtil,i=e.X509,o=e.crypto,s=e.hextob64u,a=e.b64tohex,u=e.AllowedSigningAlgs;return function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.parseJwt=function e(r){n.Log.debug("JoseUtil.parseJwt");try{var i=t.JWS.parse(r);return{header:i.headerObj,payload:i.payloadObj}}catch(e){n.Log.error(e)}},e.validateJwt=function(t,o,s,u,c,h,l){n.Log.debug("JoseUtil.validateJwt");try{if("RSA"===o.kty)if(o.e&&o.n)o=r.getKey(o);else{if(!o.x5c||!o.x5c.length)return n.Log.error("JoseUtil.validateJwt: RSA key missing key material",o),Promise.reject(new Error("RSA key missing key material"));var f=a(o.x5c[0]);o=i.getPublicKeyFromCertHex(f)}else{if("EC"!==o.kty)return n.Log.error("JoseUtil.validateJwt: Unsupported key type",o&&o.kty),Promise.reject(new Error(o.kty));if(!(o.crv&&o.x&&o.y))return n.Log.error("JoseUtil.validateJwt: EC key missing key material",o),Promise.reject(new Error("EC key missing key material"));o=r.getKey(o)}return e._validateJwt(t,o,s,u,c,h,l)}catch(e){return n.Log.error(e&&e.message||e),Promise.reject("JWT validation failed")}},e.validateJwtAttributes=function(t,r,i,o,s,a){o||(o=0),s||(s=parseInt(Date.now()/1e3));var u=e.parseJwt(t).payload;if(!u.iss)return n.Log.error("JoseUtil._validateJwt: issuer was not provided"),Promise.reject(new Error("issuer was not provided"));if(u.iss!==r)return n.Log.error("JoseUtil._validateJwt: Invalid issuer in token",u.iss),Promise.reject(new Error("Invalid issuer in token: "+u.iss));if(!u.aud)return n.Log.error("JoseUtil._validateJwt: aud was not provided"),Promise.reject(new Error("aud was not provided"));if(!(u.aud===i||Array.isArray(u.aud)&&u.aud.indexOf(i)>=0))return n.Log.error("JoseUtil._validateJwt: Invalid audience in token",u.aud),Promise.reject(new Error("Invalid audience in token: "+u.aud));if(u.azp&&u.azp!==i)return n.Log.error("JoseUtil._validateJwt: Invalid azp in token",u.azp),Promise.reject(new Error("Invalid azp in token: "+u.azp));if(!a){var c=s+o,h=s-o;if(!u.iat)return n.Log.error("JoseUtil._validateJwt: iat was not provided"),Promise.reject(new Error("iat was not provided"));if(c>>((3&t)<<3)&255;return i}}},function(e,t){for(var r=[],n=0;n<256;++n)r[n]=(n+256).toString(16).substr(1);e.exports=function(e,t){var n=t||0,i=r;return[i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]]].join("")}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SigninResponse=void 0;var n=function(){function e(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:"#";!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var n=i.UrlUtility.parseUrlFragment(t,r);this.error=n.error,this.error_description=n.error_description,this.error_uri=n.error_uri,this.code=n.code,this.state=n.state,this.id_token=n.id_token,this.session_state=n.session_state,this.access_token=n.access_token,this.token_type=n.token_type,this.scope=n.scope,this.profile=void 0,this.expires_in=n.expires_in}return n(e,[{key:"expires_in",get:function(){if(this.expires_at){var e=parseInt(Date.now()/1e3);return this.expires_at-e}},set:function(e){var t=parseInt(e);if("number"==typeof t&&t>0){var r=parseInt(Date.now()/1e3);this.expires_at=r+t}}},{key:"expired",get:function(){var e=this.expires_in;if(void 0!==e)return e<=0}},{key:"scopes",get:function(){return(this.scope||"").split(" ")}},{key:"isOpenIdConnect",get:function(){return this.scopes.indexOf("openid")>=0||!!this.id_token}}]),e}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SignoutRequest=void 0;var n=r(0),i=r(3),o=r(8);t.SignoutRequest=function e(t){var r=t.url,s=t.id_token_hint,a=t.post_logout_redirect_uri,u=t.data,c=t.extraQueryParams,h=t.request_type;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!r)throw n.Log.error("SignoutRequest.ctor: No url passed"),new Error("url");for(var l in s&&(r=i.UrlUtility.addQueryParam(r,"id_token_hint",s)),a&&(r=i.UrlUtility.addQueryParam(r,"post_logout_redirect_uri",a),u&&(this.state=new o.State({data:u,request_type:h}),r=i.UrlUtility.addQueryParam(r,"state",this.state.id))),c)r=i.UrlUtility.addQueryParam(r,l,c[l]);this.url=r}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SignoutResponse=void 0;var n=r(3);t.SignoutResponse=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var r=n.UrlUtility.parseUrlFragment(t,"?");this.error=r.error,this.error_description=r.error_description,this.error_uri=r.error_uri,this.state=r.state}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InMemoryWebStorage=void 0;var n=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.SessionMonitor,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:l.TokenRevocationClient,d=arguments.length>4&&void 0!==arguments[4]?arguments[4]:f.TokenClient,p=arguments.length>5&&void 0!==arguments[5]?arguments[5]:g.JoseUtil;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),r instanceof s.UserManagerSettings||(r=new s.UserManagerSettings(r));var v=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,r));return v._events=new u.UserManagerEvents(r),v._silentRenewService=new n(v),v.settings.automaticSilentRenew&&(i.Log.debug("UserManager.ctor: automaticSilentRenew is configured, setting up silent renew"),v.startSilentRenew()),v.settings.monitorSession&&(i.Log.debug("UserManager.ctor: monitorSession is configured, setting up session monitor"),v._sessionMonitor=new o(v)),v._tokenRevocationClient=new a(v._settings),v._tokenClient=new d(v._settings),v._joseUtil=p,v}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.getUser=function(){var e=this;return this._loadUser().then((function(t){return t?(i.Log.info("UserManager.getUser: user loaded"),e._events.load(t,!1),t):(i.Log.info("UserManager.getUser: user not found in storage"),null)}))},t.prototype.removeUser=function(){var e=this;return this.storeUser(null).then((function(){i.Log.info("UserManager.removeUser: user removed from storage"),e._events.unload()}))},t.prototype.signinRedirect=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type="si:r";var t={useReplaceToNavigate:e.useReplaceToNavigate};return this._signinStart(e,this._redirectNavigator,t).then((function(){i.Log.info("UserManager.signinRedirect: successful")}))},t.prototype.signinRedirectCallback=function(e){return this._signinEnd(e||this._redirectNavigator.url).then((function(e){return e.profile&&e.profile.sub?i.Log.info("UserManager.signinRedirectCallback: successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinRedirectCallback: no sub"),e}))},t.prototype.signinPopup=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type="si:p";var t=e.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri;return t?(e.redirect_uri=t,e.display="popup",this._signin(e,this._popupNavigator,{startUrl:t,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(e){return e&&(e.profile&&e.profile.sub?i.Log.info("UserManager.signinPopup: signinPopup successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinPopup: no sub")),e}))):(i.Log.error("UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured"),Promise.reject(new Error("No popup_redirect_uri or redirect_uri configured")))},t.prototype.signinPopupCallback=function(e){return this._signinCallback(e,this._popupNavigator).then((function(e){return e&&(e.profile&&e.profile.sub?i.Log.info("UserManager.signinPopupCallback: successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinPopupCallback: no sub")),e})).catch((function(e){i.Log.error(e.message)}))},t.prototype.signinSilent=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(t=Object.assign({},t)).request_type="si:s",this._loadUser().then((function(r){return r&&r.refresh_token?(t.refresh_token=r.refresh_token,e._useRefreshToken(t)):(t.id_token_hint=t.id_token_hint||e.settings.includeIdTokenInSilentRenew&&r&&r.id_token,r&&e._settings.validateSubOnSilentRenew&&(i.Log.debug("UserManager.signinSilent, subject prior to silent renew: ",r.profile.sub),t.current_sub=r.profile.sub),e._signinSilentIframe(t))}))},t.prototype._useRefreshToken=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(t).then((function(t){return t?t.access_token?e._loadUser().then((function(r){if(r){var n=Promise.resolve();return t.id_token&&(n=e._validateIdTokenFromTokenRefreshToken(r.profile,t.id_token)),n.then((function(){return i.Log.debug("UserManager._useRefreshToken: refresh token response success"),r.id_token=t.id_token,r.access_token=t.access_token,r.refresh_token=t.refresh_token||r.refresh_token,r.expires_in=t.expires_in,e.storeUser(r).then((function(){return e._events.load(r),r}))}))}return null})):(i.Log.error("UserManager._useRefreshToken: No access token returned from token endpoint"),Promise.reject("No access token returned from token endpoint")):(i.Log.error("UserManager._useRefreshToken: No response returned from token endpoint"),Promise.reject("No response returned from token endpoint"))}))},t.prototype._validateIdTokenFromTokenRefreshToken=function(e,t){var r=this;return this._metadataService.getIssuer().then((function(n){return r._joseUtil.validateJwtAttributes(t,n,r._settings.client_id,r._settings.clockSkew).then((function(t){return t?t.sub!==e.sub?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub"),Promise.reject(new Error("sub in id_token does not match current sub"))):t.auth_time&&t.auth_time!==e.auth_time?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time"),Promise.reject(new Error("auth_time in id_token does not match original auth_time"))):t.azp&&t.azp!==e.azp?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp"),Promise.reject(new Error("azp in id_token does not match original azp"))):!t.azp&&e.azp?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token"),Promise.reject(new Error("azp not in id_token, but present in original id_token"))):void 0:(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token"),Promise.reject(new Error("Failed to validate id_token")))}))}))},t.prototype._signinSilentIframe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return t?(e.redirect_uri=t,e.prompt=e.prompt||"none",this._signin(e,this._iframeNavigator,{startUrl:t,silentRequestTimeout:e.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(e){return e&&(e.profile&&e.profile.sub?i.Log.info("UserManager.signinSilent: successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinSilent: no sub")),e}))):(i.Log.error("UserManager.signinSilent: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},t.prototype.signinSilentCallback=function(e){return this._signinCallback(e,this._iframeNavigator).then((function(e){return e&&(e.profile&&e.profile.sub?i.Log.info("UserManager.signinSilentCallback: successful, signed in sub: ",e.profile.sub):i.Log.info("UserManager.signinSilentCallback: no sub")),e}))},t.prototype.signinCallback=function(e){var t=this;return this.readSigninResponseState(e).then((function(r){var n=r.state;return r.response,"si:r"===n.request_type?t.signinRedirectCallback(e):"si:p"===n.request_type?t.signinPopupCallback(e):"si:s"===n.request_type?t.signinSilentCallback(e):Promise.reject(new Error("invalid response_type in state"))}))},t.prototype.signoutCallback=function(e,t){var r=this;return this.readSignoutResponseState(e).then((function(n){var i=n.state,o=n.response;return i?"so:r"===i.request_type?r.signoutRedirectCallback(e):"so:p"===i.request_type?r.signoutPopupCallback(e,t):Promise.reject(new Error("invalid response_type in state")):o}))},t.prototype.querySessionStatus=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(t=Object.assign({},t)).request_type="si:s";var r=t.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return r?(t.redirect_uri=r,t.prompt="none",t.response_type=t.response_type||this.settings.query_status_response_type,t.scope=t.scope||"openid",t.skipUserInfo=!0,this._signinStart(t,this._iframeNavigator,{startUrl:r,silentRequestTimeout:t.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return e.processSigninResponse(t.url).then((function(e){if(i.Log.debug("UserManager.querySessionStatus: got signin response"),e.session_state&&e.profile.sub)return i.Log.info("UserManager.querySessionStatus: querySessionStatus success for sub: ",e.profile.sub),{session_state:e.session_state,sub:e.profile.sub,sid:e.profile.sid};i.Log.info("querySessionStatus successful, user not authenticated")})).catch((function(t){if(t.session_state&&e.settings.monitorAnonymousSession&&("login_required"==t.message||"consent_required"==t.message||"interaction_required"==t.message||"account_selection_required"==t.message))return i.Log.info("UserManager.querySessionStatus: querySessionStatus success for anonymous user"),{session_state:t.session_state};throw t}))}))):(i.Log.error("UserManager.querySessionStatus: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},t.prototype._signin=function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(e,t,n).then((function(t){return r._signinEnd(t.url,e)}))},t.prototype._signinStart=function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.prepare(n).then((function(t){return i.Log.debug("UserManager._signinStart: got navigator window handle"),r.createSigninRequest(e).then((function(e){return i.Log.debug("UserManager._signinStart: got signin request"),n.url=e.url,n.id=e.state.id,t.navigate(n)})).catch((function(e){throw t.close&&(i.Log.debug("UserManager._signinStart: Error after preparing navigator, closing navigator window"),t.close()),e}))}))},t.prototype._signinEnd=function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(e).then((function(e){i.Log.debug("UserManager._signinEnd: got signin response");var n=new a.User(e);if(r.current_sub){if(r.current_sub!==n.profile.sub)return i.Log.debug("UserManager._signinEnd: current user does not match user returned from signin. sub from signin: ",n.profile.sub),Promise.reject(new Error("login_required"));i.Log.debug("UserManager._signinEnd: current user matches user returned from signin")}return t.storeUser(n).then((function(){return i.Log.debug("UserManager._signinEnd: user stored"),t._events.load(n),n}))}))},t.prototype._signinCallback=function(e,t){return i.Log.debug("UserManager._signinCallback"),t.callback(e)},t.prototype.signoutRedirect=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type="so:r";var t=e.post_logout_redirect_uri||this.settings.post_logout_redirect_uri;t&&(e.post_logout_redirect_uri=t);var r={useReplaceToNavigate:e.useReplaceToNavigate};return this._signoutStart(e,this._redirectNavigator,r).then((function(){i.Log.info("UserManager.signoutRedirect: successful")}))},t.prototype.signoutRedirectCallback=function(e){return this._signoutEnd(e||this._redirectNavigator.url).then((function(e){return i.Log.info("UserManager.signoutRedirectCallback: successful"),e}))},t.prototype.signoutPopup=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type="so:p";var t=e.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri;return e.post_logout_redirect_uri=t,e.display="popup",e.post_logout_redirect_uri&&(e.state=e.state||{}),this._signout(e,this._popupNavigator,{startUrl:t,popupWindowFeatures:e.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:e.popupWindowTarget||this.settings.popupWindowTarget}).then((function(){i.Log.info("UserManager.signoutPopup: successful")}))},t.prototype.signoutPopupCallback=function(e,t){return void 0===t&&"boolean"==typeof e&&(t=e,e=null),this._popupNavigator.callback(e,t,"?").then((function(){i.Log.info("UserManager.signoutPopupCallback: successful")}))},t.prototype._signout=function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(e,t,n).then((function(e){return r._signoutEnd(e.url)}))},t.prototype._signoutStart=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this,r=arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.prepare(n).then((function(r){return i.Log.debug("UserManager._signoutStart: got navigator window handle"),t._loadUser().then((function(o){return i.Log.debug("UserManager._signoutStart: loaded current user from storage"),(t._settings.revokeAccessTokenOnSignout?t._revokeInternal(o):Promise.resolve()).then((function(){var s=e.id_token_hint||o&&o.id_token;return s&&(i.Log.debug("UserManager._signoutStart: Setting id_token into signout request"),e.id_token_hint=s),t.removeUser().then((function(){return i.Log.debug("UserManager._signoutStart: user removed, creating signout request"),t.createSignoutRequest(e).then((function(e){return i.Log.debug("UserManager._signoutStart: got signout request"),n.url=e.url,e.state&&(n.id=e.state.id),r.navigate(n)}))}))}))})).catch((function(e){throw r.close&&(i.Log.debug("UserManager._signoutStart: Error after preparing navigator, closing navigator window"),r.close()),e}))}))},t.prototype._signoutEnd=function(e){return this.processSignoutResponse(e).then((function(e){return i.Log.debug("UserManager._signoutEnd: got signout response"),e}))},t.prototype.revokeAccessToken=function(){var e=this;return this._loadUser().then((function(t){return e._revokeInternal(t,!0).then((function(r){if(r)return i.Log.debug("UserManager.revokeAccessToken: removing token properties from user and re-storing"),t.access_token=null,t.refresh_token=null,t.expires_at=null,t.token_type=null,e.storeUser(t).then((function(){i.Log.debug("UserManager.revokeAccessToken: user stored"),e._events.load(t)}))}))})).then((function(){i.Log.info("UserManager.revokeAccessToken: access token revoked successfully")}))},t.prototype._revokeInternal=function(e,t){var r=this;if(e){var n=e.access_token,o=e.refresh_token;return this._revokeAccessTokenInternal(n,t).then((function(e){return r._revokeRefreshTokenInternal(o,t).then((function(t){return e||t||i.Log.debug("UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format"),e||t}))}))}return Promise.resolve(!1)},t.prototype._revokeAccessTokenInternal=function(e,t){return!e||e.indexOf(".")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(e,t).then((function(){return!0}))},t.prototype._revokeRefreshTokenInternal=function(e,t){return e?this._tokenRevocationClient.revoke(e,t,"refresh_token").then((function(){return!0})):Promise.resolve(!1)},t.prototype.startSilentRenew=function(){this._silentRenewService.start()},t.prototype.stopSilentRenew=function(){this._silentRenewService.stop()},t.prototype._loadUser=function(){return this._userStore.get(this._userStoreKey).then((function(e){return e?(i.Log.debug("UserManager._loadUser: user storageString loaded"),a.User.fromStorageString(e)):(i.Log.debug("UserManager._loadUser: no user storageString"),null)}))},t.prototype.storeUser=function(e){if(e){i.Log.debug("UserManager.storeUser: storing user");var t=e.toStorageString();return this._userStore.set(this._userStoreKey,t)}return i.Log.debug("storeUser.storeUser: removing user"),this._userStore.remove(this._userStoreKey)},n(t,[{key:"_redirectNavigator",get:function(){return this.settings.redirectNavigator}},{key:"_popupNavigator",get:function(){return this.settings.popupNavigator}},{key:"_iframeNavigator",get:function(){return this.settings.iframeNavigator}},{key:"_userStore",get:function(){return this.settings.userStore}},{key:"events",get:function(){return this._events}},{key:"_userStoreKey",get:function(){return"user:"+this.settings.authority+":"+this.settings.client_id}}]),t}(o.OidcClient)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserManagerSettings=void 0;var n=function(){function e(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=r.popup_redirect_uri,i=r.popup_post_logout_redirect_uri,l=r.popupWindowFeatures,f=r.popupWindowTarget,g=r.silent_redirect_uri,d=r.silentRequestTimeout,p=r.automaticSilentRenew,v=void 0!==p&&p,y=r.validateSubOnSilentRenew,m=void 0!==y&&y,_=r.includeIdTokenInSilentRenew,S=void 0===_||_,w=r.monitorSession,F=void 0===w||w,b=r.monitorAnonymousSession,E=void 0!==b&&b,x=r.checkSessionInterval,k=void 0===x?2e3:x,A=r.stopCheckSessionOnError,P=void 0===A||A,C=r.query_status_response_type,T=r.revokeAccessTokenOnSignout,R=void 0!==T&&T,I=r.accessTokenExpiringNotificationTime,D=void 0===I?60:I,U=r.redirectNavigator,L=void 0===U?new o.RedirectNavigator:U,N=r.popupNavigator,O=void 0===N?new s.PopupNavigator:N,B=r.iframeNavigator,M=void 0===B?new a.IFrameNavigator:B,j=r.userStore,H=void 0===j?new u.WebStorageStateStore({store:c.Global.sessionStorage}):j;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var K=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,arguments[0]));return K._popup_redirect_uri=n,K._popup_post_logout_redirect_uri=i,K._popupWindowFeatures=l,K._popupWindowTarget=f,K._silent_redirect_uri=g,K._silentRequestTimeout=d,K._automaticSilentRenew=v,K._validateSubOnSilentRenew=m,K._includeIdTokenInSilentRenew=S,K._accessTokenExpiringNotificationTime=D,K._monitorSession=F,K._monitorAnonymousSession=E,K._checkSessionInterval=k,K._stopCheckSessionOnError=P,C?K._query_status_response_type=C:arguments[0]&&arguments[0].response_type?K._query_status_response_type=h.SigninRequest.isOidc(arguments[0].response_type)?"id_token":"code":K._query_status_response_type="id_token",K._revokeAccessTokenOnSignout=R,K._redirectNavigator=L,K._popupNavigator=O,K._iframeNavigator=M,K._userStore=H,K}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),n(t,[{key:"popup_redirect_uri",get:function(){return this._popup_redirect_uri}},{key:"popup_post_logout_redirect_uri",get:function(){return this._popup_post_logout_redirect_uri}},{key:"popupWindowFeatures",get:function(){return this._popupWindowFeatures}},{key:"popupWindowTarget",get:function(){return this._popupWindowTarget}},{key:"silent_redirect_uri",get:function(){return this._silent_redirect_uri}},{key:"silentRequestTimeout",get:function(){return this._silentRequestTimeout}},{key:"automaticSilentRenew",get:function(){return this._automaticSilentRenew}},{key:"validateSubOnSilentRenew",get:function(){return this._validateSubOnSilentRenew}},{key:"includeIdTokenInSilentRenew",get:function(){return this._includeIdTokenInSilentRenew}},{key:"accessTokenExpiringNotificationTime",get:function(){return this._accessTokenExpiringNotificationTime}},{key:"monitorSession",get:function(){return this._monitorSession}},{key:"monitorAnonymousSession",get:function(){return this._monitorAnonymousSession}},{key:"checkSessionInterval",get:function(){return this._checkSessionInterval}},{key:"stopCheckSessionOnError",get:function(){return this._stopCheckSessionOnError}},{key:"query_status_response_type",get:function(){return this._query_status_response_type}},{key:"revokeAccessTokenOnSignout",get:function(){return this._revokeAccessTokenOnSignout}},{key:"redirectNavigator",get:function(){return this._redirectNavigator}},{key:"popupNavigator",get:function(){return this._popupNavigator}},{key:"iframeNavigator",get:function(){return this._iframeNavigator}},{key:"userStore",get:function(){return this._userStore}}]),t}(i.OidcClientSettings)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RedirectNavigator=void 0;var n=function(){function e(e,t){for(var r=0;r1&&void 0!==arguments[1])||arguments[1];n.Log.debug("UserManagerEvents.load"),e.prototype.load.call(this,t),r&&this._userLoaded.raise(t)},t.prototype.unload=function(){n.Log.debug("UserManagerEvents.unload"),e.prototype.unload.call(this),this._userUnloaded.raise()},t.prototype.addUserLoaded=function(e){this._userLoaded.addHandler(e)},t.prototype.removeUserLoaded=function(e){this._userLoaded.removeHandler(e)},t.prototype.addUserUnloaded=function(e){this._userUnloaded.addHandler(e)},t.prototype.removeUserUnloaded=function(e){this._userUnloaded.removeHandler(e)},t.prototype.addSilentRenewError=function(e){this._silentRenewError.addHandler(e)},t.prototype.removeSilentRenewError=function(e){this._silentRenewError.removeHandler(e)},t.prototype._raiseSilentRenewError=function(e){n.Log.debug("UserManagerEvents._raiseSilentRenewError",e.message),this._silentRenewError.raise(e)},t.prototype.addUserSignedIn=function(e){this._userSignedIn.addHandler(e)},t.prototype.removeUserSignedIn=function(e){this._userSignedIn.removeHandler(e)},t.prototype._raiseUserSignedIn=function(){n.Log.debug("UserManagerEvents._raiseUserSignedIn"),this._userSignedIn.raise()},t.prototype.addUserSignedOut=function(e){this._userSignedOut.addHandler(e)},t.prototype.removeUserSignedOut=function(e){this._userSignedOut.removeHandler(e)},t.prototype._raiseUserSignedOut=function(){n.Log.debug("UserManagerEvents._raiseUserSignedOut"),this._userSignedOut.raise()},t.prototype.addUserSessionChanged=function(e){this._userSessionChanged.addHandler(e)},t.prototype.removeUserSessionChanged=function(e){this._userSessionChanged.removeHandler(e)},t.prototype._raiseUserSessionChanged=function(){n.Log.debug("UserManagerEvents._raiseUserSessionChanged"),this._userSessionChanged.raise()},t}(i.AccessTokenEvents)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Timer=void 0;var n=function(){function e(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:o.Global.timer,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var s=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.call(this,r));return s._timer=n,s._nowFunc=i||function(){return Date.now()/1e3},s}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.init=function(e){e<=0&&(e=1),e=parseInt(e);var t=this.now+e;if(this.expiration===t&&this._timerHandle)i.Log.debug("Timer.init timer "+this._name+" skipping initialization since already initialized for expiration:",this.expiration);else{this.cancel(),i.Log.debug("Timer.init timer "+this._name+" for duration:",e),this._expiration=t;var r=5;en?n:document.getElementById(t)},addClass:(n,t)=>(n.classList.add(t),!0),removeClass:(n,t)=>(n.classList.contains(t)&&n.classList.remove(t),!0),toggleClass:(n,t)=>(n&&(n.classList.contains(t)?n.classList.remove(t):n.classList.add(t)),!0),addClassToBody:n=>blazorise.addClass(document.body,n),removeClassFromBody:n=>blazorise.removeClass(document.body,n),parentHasClass:(n,t)=>n&&n.parentElement?n.parentElement.classList.contains(t):!1,setProperty:(n,t,i)=>{n&&t&&(n[t]=i)},getElementInfo:(n,t)=>{if(n||(n=document.getElementById(t)),n){const t=n.getBoundingClientRect();return{boundingClientRect:{x:t.x,y:t.y,top:t.top,bottom:t.bottom,left:t.left,right:t.right,width:t.width,height:t.height},offsetTop:n.offsetTop,offsetLeft:n.offsetLeft,offsetWidth:n.offsetWidth,offsetHeight:n.offsetHeight,scrollTop:n.scrollTop,scrollLeft:n.scrollLeft,scrollWidth:n.scrollWidth,scrollHeight:n.scrollHeight,clientTop:n.clientTop,clientLeft:n.clientLeft,clientWidth:n.clientWidth,clientHeight:n.clientHeight}}return{}},setTextValue(n,t){return n.value=t,!0},hasSelectionCapabilities:n=>{const t=n&&n.nodeName&&n.nodeName.toLowerCase();return t&&(t==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||t==="textarea"||n.contentEditable==="true")},setCaret:(n,t)=>{window.blazorise.hasSelectionCapabilities(n)&&window.requestAnimationFrame(()=>{n.selectionStart=t,n.selectionEnd=t})},getCaret:n=>window.blazorise.hasSelectionCapabilities(n)?n.selectionStart:-1,getSelectedOptions:n=>{var i,r,t;const u=document.getElementById(n),f=u.options.length;for(i=[],t=0;t{const r=document.getElementById(n),u=r.options.length;for(var i=0;it?.toString()===n.value)?!0:!1}},closableComponents:[],addClosableComponent:(n,t)=>{window.blazorise.closableComponents.push({elementId:n,dotnetAdapter:t})},findClosableComponent:n=>{for(index=0;index{for(index=0;index{for(index=0;index{n&&window.blazorise.isClosableComponent(n.id)!==!0&&window.blazorise.addClosableComponent(n.id,t)},unregisterClosableComponent:n=>{if(n){const t=window.blazorise.findClosableComponentIndex(n.id);t!==-1&&window.blazorise.closableComponents.splice(t,1)}},tryClose:(n,t,i,r)=>{let u=new Promise(u=>{n.dotnetAdapter.invokeMethodAsync("SafeToClose",t,i?"escape":"leave",r).then(t=>u({elementId:n.elementId,dotnetAdapter:n.dotnetAdapter,status:t===!0?"ok":"cancelled"})).catch(()=>u({elementId:n.elementId,status:"error"}))});u&&u.then(n=>{n.status==="ok"&&n.dotnetAdapter.invokeMethodAsync("Close",i?"escape":"leave").catch(()=>window.blazorise.unregisterClosableComponent(n.elementId))})},focus:(n,t,i)=>(n=window.blazorise.utils.getRequiredElement(n,t),n&&n.focus({preventScroll:!i}),!0),tooltip:{initialize:()=>!0},textEdit:{_instances:[],initialize:(n,t,i,r)=>{var u=window.blazorise.textEdit._instances=window.blazorise.textEdit._instances||{};return u[t]=i==="numeric"?new window.blazorise.NumericMaskValidator(n,t):i==="datetime"?new window.blazorise.DateTimeMaskValidator(n,t):i==="regex"?new window.blazorise.RegExMaskValidator(n,t,r):new window.blazorise.NoValidator,n.addEventListener("keypress",n=>{window.blazorise.textEdit.keyPress(u[t],n)}),n.addEventListener("paste",n=>{window.blazorise.textEdit.paste(u[t],n)}),!0},destroy:(n,t)=>{var i=window.blazorise.textEdit._instances||{};return delete i[t],!0},keyPress:(n,t)=>{var i=String.fromCharCode(t.which);return n.isValid(i)||t.preventDefault()},paste:(n,t)=>n.isValid(t.clipboardData.getData("text/plain"))||t.preventDefault()},numericEdit:{_instances:[],initialize:(n,t,i,r,u,f,e,o)=>(window.blazorise.numericEdit._instances[i]=new window.blazorise.NumericMaskValidator(n,t,i,r,u,f,e,o),t.addEventListener("keypress",n=>{window.blazorise.numericEdit.keyPress(window.blazorise.numericEdit._instances[i],n)}),t.addEventListener("keydown",n=>{window.blazorise.numericEdit.keyDown(window.blazorise.numericEdit._instances[i],n)}),t.addEventListener("paste",n=>{window.blazorise.numericEdit.paste(window.blazorise.numericEdit._instances[i],n)}),!0),destroy:(n,t)=>{var i=window.blazorise.numericEdit._instances||{};return delete i[t],!0},keyDown:(n,t)=>(t.which===38?n.stepApply(1):t.which===40&&n.stepApply(-1),!0),keyPress:(n,t)=>{var i=String.fromCharCode(t.which);return t.which===13||n.isValid(i)||t.preventDefault()},paste:(n,t)=>n.isValid(t.clipboardData.getData("text/plain"))||t.preventDefault()},NoValidator:function(){this.isValid=function(){return!0}},NumericMaskValidator:function(n,t,i,r,u,f,e,o){this.dotnetAdapter=n;this.elementId=i;this.element=t;this.decimals=r===null||r===undefined?2:r;this.separator=u||".";this.step=f||1;this.min=e;this.max=o;this.regex=function(){var n="\\"+this.separator,t=this.decimals,i="{0,"+t+"}";return t?new RegExp("^(-)?(((\\d+("+n+"\\d"+i+")?)|("+n+"\\d"+i+")))?$"):/^(-)?(\d*)$/};this.carret=function(){return[this.element.selectionStart,this.element.selectionEnd]};this.isValid=function(n){var t=this.element.value,i=this.carret();return(t=t.substring(0,i[0])+n+t.substring(i[1]),!!this.regex().test(t))?(t||"").replace(this.separator,"."):!1};this.stepApply=function(n){var r=(this.element.value||"").replace(this.separator,"."),t=Number(r)+this.step*n,i;t>=this.min&&t<=this.max&&(i=t.toString().replace(".",this.separator),this.element.value=i,this.dotnetAdapter.invokeMethodAsync("SetValue",i))}},DateTimeMaskValidator:function(n,t){this.elementId=t;this.element=n;this.regex=function(){return/^\d{0,4}$|^\d{4}-0?$|^\d{4}-(?:0?[1-9]|1[012])(?:-(?:0?[1-9]?|[12]\d|3[01])?)?$/};this.carret=function(){return[this.element.selectionStart,this.element.selectionEnd]};this.isValid=function(n){var t=this.element.value,i=this.carret();return t=t.substring(0,i[0])+n+t.substring(i[1]),!!this.regex().test(t)}},RegExMaskValidator:function(n,t,i){this.elementId=t;this.element=n;this.editMask=i;this.regex=function(){return new RegExp(this.editMask)};this.carret=function(){return[this.element.selectionStart,this.element.selectionEnd]};this.isValid=function(n){var t=this.element.value,i=this.carret();return t=t.substring(0,i[0])+n+t.substring(i[1]),!!this.regex().test(t)}},button:{_instances:[],initialize:(n,t,i)=>(window.blazorise.button._instances[t]=new window.blazorise.ButtonInfo(n,t,i),n.type==="submit"&&n.addEventListener("click",n=>{window.blazorise.button.click(window.blazorise.button._instances[t],n)}),!0),destroy:n=>{var t=window.blazorise.button._instances||{};return delete t[n],!0},click:(n,t)=>{if(n.preventDefaultOnSubmit)return t.preventDefault()}},ButtonInfo:function(n,t,i){this.elementId=t;this.element=n;this.preventDefaultOnSubmit=i},link:{scrollIntoView:n=>{var t=document.getElementById(n);return t&&(t.scrollIntoView(),window.location.hash=n),!0}},fileEdit:{_instances:[],initialize:(n,t,i)=>{var r=0;return window.blazorise.fileEdit._instances[i]=new window.blazorise.FileEditInfo(n,t,i),t.addEventListener("change",function(){t._blazorFilesById={};var i=Array.prototype.map.call(t.files,function(n){var i={id:++r,lastModified:new Date(n.lastModified).toISOString(),name:n.name,size:n.size,type:n.type};return t._blazorFilesById[i.id]=i,Object.defineProperty(i,"blob",{value:n}),i});n.invokeMethodAsync("NotifyChange",i).then(null,function(n){throw new Error(n);})}),!0},destroy:(n,t)=>{var i=window.blazorise.fileEdit._instances||{};return delete i[t],!0},reset:(n,t)=>{if(n){n.value="";var i=window.blazorise.fileEdit._instances[t];i&&i.adapter.invokeMethodAsync("NotifyChange",[]).then(null,function(n){throw new Error(n);})}return!0},readFileData:function(n,t,i,r){var u=getArrayBufferFromFileAsync(n,t);return u.then(function(n){var t=new Uint8Array(n,i,r);return uint8ToBase64(t)})},ensureArrayBufferReadyForSharedMemoryInterop:function(n,t){return getArrayBufferFromFileAsync(n,t).then(function(i){getFileById(n,t).arrayBuffer=i})},readFileDataSharedMemory:function(n){var u=Blazor.platform.readStringField(n,0),f=document.querySelector("[_bl_"+u+"]"),e=Blazor.platform.readInt32Field(n,4),t=Blazor.platform.readUint64Field(n,8),o=Blazor.platform.readInt32Field(n,16),s=Blazor.platform.readInt32Field(n,20),h=Blazor.platform.readInt32Field(n,24),i=getFileById(f,e).arrayBuffer,r=Math.min(h,i.byteLength-t),c=new Uint8Array(i,t,r),l=Blazor.platform.toUint8Array(o);return l.set(c,s),r},open:(n,t)=>{!n&&t&&(n=document.getElementById(t)),n&&n.click()}},FileEditInfo:function(n,t,i){this.adapter=n;this.element=t;this.elementId=i},breakpoint:{getBreakpoint:function(){return window.getComputedStyle(document.body,":before").content.replace(/\"/g,"")},breakpointComponents:[],lastBreakpoint:null,addBreakpointComponent:(n,t)=>{window.blazorise.breakpoint.breakpointComponents.push({elementId:n,dotnetAdapter:t})},findBreakpointComponentIndex:n=>{for(index=0;index{for(index=0;index{window.blazorise.breakpoint.isBreakpointComponent(n)!==!0&&window.blazorise.breakpoint.addBreakpointComponent(n,t)},unregisterBreakpointComponent:n=>{const t=window.blazorise.breakpoint.findBreakpointComponentIndex(n);t!==-1&&window.blazorise.breakpoint.breakpointComponents.splice(t,1)},onBreakpoint:(n,t)=>{n.invokeMethodAsync("OnBreakpoint",t)}}};document.addEventListener("click",function(n){if(window.blazorise.closableComponents&&window.blazorise.closableComponents.length>0){const t=window.blazorise.closableComponents[window.blazorise.closableComponents.length-1];t&&window.blazorise.tryClose(t,n.target.id,!1,hasParentInTree(n.target,t.elementId))}});document.addEventListener("keyup",function(n){if(n.keyCode===27&&window.blazorise.closableComponents&&window.blazorise.closableComponents.length>0){const n=window.blazorise.closableComponents[window.blazorise.closableComponents.length-1];n&&window.blazorise.tryClose(n,n.elementId,!0,!1)}});window.addEventListener("resize",function(){if(window.blazorise.breakpoint.breakpointComponents&&window.blazorise.breakpoint.breakpointComponents.length>0){var n=window.blazorise.breakpoint.getBreakpoint();if(window.blazorise.breakpoint.lastBreakpoint!==n)for(window.blazorise.breakpoint.lastBreakpoint=n,index=0;index>18&63]+n[t>>12&63]+n[t>>6&63]+n[t&63]}function f(n,t,i){for(var f,e=[],r=t;rh?h:u+s));return o===1?(i=t[r-1],e.push(n[i>>2]+n[i<<4&63]+"==")):o===2&&(i=(t[r-2]<<8)+t[r-1],e.push(n[i>>10]+n[i>>4&63]+n[i<<2&63]+"=")),e.join("")}}(); +function showPopper(n,t,i,r){return new Popper(n,t,{placement:r,modifiers:{offset:{offset:0},flip:{behavior:"flip"},arrow:{element:i,enabled:!0},preventOverflow:{boundary:"scrollParent"}}})}function getFileById(n,t){var i=n._blazorFilesById[t];if(!i)throw new Error("There is no file with ID "+t+". The file list may have changed");return i}function getArrayBufferFromFileAsync(n,t){var i=getFileById(n,t);return i.readPromise||(i.readPromise=new Promise(function(n,t){var r=new FileReader;r.onload=function(){n(r.result)};r.onerror=function(n){t(n)};r.readAsArrayBuffer(i.blob)})),i.readPromise}function hasParentInTree(n,t){return n.parentElement?n.parentElement.id===t?!0:hasParentInTree(n.parentElement,t):!1}window.blazorise||(window.blazorise={});window.blazorise={lastClickedDocumentElement:null,utils:{getRequiredElement:(n,t)=>n?n:document.getElementById(t)},addClass:(n,t)=>(n.classList.add(t),!0),removeClass:(n,t)=>(n.classList.contains(t)&&n.classList.remove(t),!0),toggleClass:(n,t)=>(n&&(n.classList.contains(t)?n.classList.remove(t):n.classList.add(t)),!0),addClassToBody:n=>blazorise.addClass(document.body,n),removeClassFromBody:n=>blazorise.removeClass(document.body,n),parentHasClass:(n,t)=>n&&n.parentElement?n.parentElement.classList.contains(t):!1,setProperty:(n,t,i)=>{n&&t&&(n[t]=i)},getElementInfo:(n,t)=>{if(n||(n=document.getElementById(t)),n){const t=n.getBoundingClientRect();return{boundingClientRect:{x:t.x,y:t.y,top:t.top,bottom:t.bottom,left:t.left,right:t.right,width:t.width,height:t.height},offsetTop:n.offsetTop,offsetLeft:n.offsetLeft,offsetWidth:n.offsetWidth,offsetHeight:n.offsetHeight,scrollTop:n.scrollTop,scrollLeft:n.scrollLeft,scrollWidth:n.scrollWidth,scrollHeight:n.scrollHeight,clientTop:n.clientTop,clientLeft:n.clientLeft,clientWidth:n.clientWidth,clientHeight:n.clientHeight}}return{}},setTextValue(n,t){return n.value=t,!0},hasSelectionCapabilities:n=>{const t=n&&n.nodeName&&n.nodeName.toLowerCase();return t&&(t==="input"&&(n.type==="text"||n.type==="search"||n.type==="tel"||n.type==="url"||n.type==="password")||t==="textarea"||n.contentEditable==="true")},setCaret:(n,t)=>{window.blazorise.hasSelectionCapabilities(n)&&window.requestAnimationFrame(()=>{n.selectionStart=t,n.selectionEnd=t})},getCaret:n=>window.blazorise.hasSelectionCapabilities(n)?n.selectionStart:-1,getSelectedOptions:n=>{var i,r,t;const u=document.getElementById(n),f=u.options.length;for(i=[],t=0;t{const i=document.getElementById(n);if(i&&i.options){const n=i.options.length;for(var r=0;rt!==null&&t.toString()===n.value)?!0:!1}}},closableComponents:[],addClosableComponent:(n,t)=>{window.blazorise.closableComponents.push({elementId:n,dotnetAdapter:t})},findClosableComponent:n=>{for(index=0;index{for(index=0;index{for(index=0;index{n&&window.blazorise.isClosableComponent(n.id)!==!0&&window.blazorise.addClosableComponent(n.id,t)},unregisterClosableComponent:n=>{if(n){const t=window.blazorise.findClosableComponentIndex(n.id);t!==-1&&window.blazorise.closableComponents.splice(t,1)}},tryClose:(n,t,i,r)=>{let u=new Promise(u=>{n.dotnetAdapter.invokeMethodAsync("SafeToClose",t,i?"escape":"leave",r).then(t=>u({elementId:n.elementId,dotnetAdapter:n.dotnetAdapter,status:t===!0?"ok":"cancelled"})).catch(()=>u({elementId:n.elementId,status:"error"}))});u&&u.then(n=>{n.status==="ok"&&n.dotnetAdapter.invokeMethodAsync("Close",i?"escape":"leave").catch(()=>window.blazorise.unregisterClosableComponent(n.elementId))})},focus:(n,t,i)=>(n=window.blazorise.utils.getRequiredElement(n,t),n&&n.focus({preventScroll:!i}),!0),tooltip:{initialize:()=>!0},textEdit:{_instances:[],initialize:(n,t,i,r)=>{var u=window.blazorise.textEdit._instances=window.blazorise.textEdit._instances||{};return u[t]=i==="numeric"?new window.blazorise.NumericMaskValidator(n,t):i==="datetime"?new window.blazorise.DateTimeMaskValidator(n,t):i==="regex"?new window.blazorise.RegExMaskValidator(n,t,r):new window.blazorise.NoValidator,n.addEventListener("keypress",n=>{window.blazorise.textEdit.keyPress(u[t],n)}),n.addEventListener("paste",n=>{window.blazorise.textEdit.paste(u[t],n)}),!0},destroy:(n,t)=>{var i=window.blazorise.textEdit._instances||{};return delete i[t],!0},keyPress:(n,t)=>{var i=String.fromCharCode(t.which);return n.isValid(i)||t.preventDefault()},paste:(n,t)=>n.isValid(t.clipboardData.getData("text/plain"))||t.preventDefault()},numericEdit:{_instances:[],initialize:(n,t,i,r,u,f,e,o)=>(window.blazorise.numericEdit._instances[i]=new window.blazorise.NumericMaskValidator(n,t,i,r,u,f,e,o),t.addEventListener("keypress",n=>{window.blazorise.numericEdit.keyPress(window.blazorise.numericEdit._instances[i],n)}),t.addEventListener("keydown",n=>{window.blazorise.numericEdit.keyDown(window.blazorise.numericEdit._instances[i],n)}),t.addEventListener("paste",n=>{window.blazorise.numericEdit.paste(window.blazorise.numericEdit._instances[i],n)}),!0),destroy:(n,t)=>{var i=window.blazorise.numericEdit._instances||{};return delete i[t],!0},keyDown:(n,t)=>(t.which===38?n.stepApply(1):t.which===40&&n.stepApply(-1),!0),keyPress:(n,t)=>{var i=String.fromCharCode(t.which);return t.which===13||n.isValid(i)||t.preventDefault()},paste:(n,t)=>n.isValid(t.clipboardData.getData("text/plain"))||t.preventDefault()},NoValidator:function(){this.isValid=function(){return!0}},NumericMaskValidator:function(n,t,i,r,u,f,e,o){this.dotnetAdapter=n;this.elementId=i;this.element=t;this.decimals=r===null||r===undefined?2:r;this.separator=u||".";this.step=f||1;this.min=e;this.max=o;this.regex=function(){var n="\\"+this.separator,t=this.decimals,i="{0,"+t+"}";return t?new RegExp("^(-)?(((\\d+("+n+"\\d"+i+")?)|("+n+"\\d"+i+")))?$"):/^(-)?(\d*)$/};this.carret=function(){return[this.element.selectionStart,this.element.selectionEnd]};this.isValid=function(n){var t=this.element.value,i=this.carret();return(t=t.substring(0,i[0])+n+t.substring(i[1]),!!this.regex().test(t))?(t||"").replace(this.separator,"."):!1};this.stepApply=function(n){var r=(this.element.value||"").replace(this.separator,"."),t=Number(r)+this.step*n,i;t>=this.min&&t<=this.max&&(i=t.toString().replace(".",this.separator),this.element.value=i,this.dotnetAdapter.invokeMethodAsync("SetValue",i))}},DateTimeMaskValidator:function(n,t){this.elementId=t;this.element=n;this.regex=function(){return/^\d{0,4}$|^\d{4}-0?$|^\d{4}-(?:0?[1-9]|1[012])(?:-(?:0?[1-9]?|[12]\d|3[01])?)?$/};this.carret=function(){return[this.element.selectionStart,this.element.selectionEnd]};this.isValid=function(n){var t=this.element.value,i=this.carret();return t=t.substring(0,i[0])+n+t.substring(i[1]),!!this.regex().test(t)}},RegExMaskValidator:function(n,t,i){this.elementId=t;this.element=n;this.editMask=i;this.regex=function(){return new RegExp(this.editMask)};this.carret=function(){return[this.element.selectionStart,this.element.selectionEnd]};this.isValid=function(n){var t=this.element.value,i=this.carret();return t=t.substring(0,i[0])+n+t.substring(i[1]),!!this.regex().test(t)}},button:{_instances:[],initialize:(n,t,i)=>(window.blazorise.button._instances[t]=new window.blazorise.ButtonInfo(n,t,i),n.type==="submit"&&n.addEventListener("click",n=>{window.blazorise.button.click(window.blazorise.button._instances[t],n)}),!0),destroy:n=>{var t=window.blazorise.button._instances||{};return delete t[n],!0},click:(n,t)=>{if(n.preventDefaultOnSubmit)return t.preventDefault()}},ButtonInfo:function(n,t,i){this.elementId=t;this.element=n;this.preventDefaultOnSubmit=i},link:{scrollIntoView:n=>{var t=document.getElementById(n);return t&&(t.scrollIntoView(),window.location.hash=n),!0}},fileEdit:{_instances:[],initialize:(n,t,i)=>{var r=0;return window.blazorise.fileEdit._instances[i]=new window.blazorise.FileEditInfo(n,t,i),t.addEventListener("change",function(){t._blazorFilesById={};var i=Array.prototype.map.call(t.files,function(n){var i={id:++r,lastModified:new Date(n.lastModified).toISOString(),name:n.name,size:n.size,type:n.type};return t._blazorFilesById[i.id]=i,Object.defineProperty(i,"blob",{value:n}),i});n.invokeMethodAsync("NotifyChange",i).then(null,function(n){throw new Error(n);})}),!0},destroy:(n,t)=>{var i=window.blazorise.fileEdit._instances||{};return delete i[t],!0},reset:(n,t)=>{if(n){n.value="";var i=window.blazorise.fileEdit._instances[t];i&&i.adapter.invokeMethodAsync("NotifyChange",[]).then(null,function(n){throw new Error(n);})}return!0},readFileData:function(n,t,i,r){var u=getArrayBufferFromFileAsync(n,t);return u.then(function(n){var t=new Uint8Array(n,i,r);return uint8ToBase64(t)})},ensureArrayBufferReadyForSharedMemoryInterop:function(n,t){return getArrayBufferFromFileAsync(n,t).then(function(i){getFileById(n,t).arrayBuffer=i})},readFileDataSharedMemory:function(n){var u=Blazor.platform.readStringField(n,0),f=document.querySelector("[_bl_"+u+"]"),e=Blazor.platform.readInt32Field(n,4),t=Blazor.platform.readUint64Field(n,8),o=Blazor.platform.readInt32Field(n,16),s=Blazor.platform.readInt32Field(n,20),h=Blazor.platform.readInt32Field(n,24),i=getFileById(f,e).arrayBuffer,r=Math.min(h,i.byteLength-t),c=new Uint8Array(i,t,r),l=Blazor.platform.toUint8Array(o);return l.set(c,s),r},open:(n,t)=>{!n&&t&&(n=document.getElementById(t)),n&&n.click()}},FileEditInfo:function(n,t,i){this.adapter=n;this.element=t;this.elementId=i},breakpoint:{getBreakpoint:function(){return window.getComputedStyle(document.body,":before").content.replace(/\"/g,"")},breakpointComponents:[],lastBreakpoint:null,addBreakpointComponent:(n,t)=>{window.blazorise.breakpoint.breakpointComponents.push({elementId:n,dotnetAdapter:t})},findBreakpointComponentIndex:n=>{for(index=0;index{for(index=0;index{window.blazorise.breakpoint.isBreakpointComponent(n)!==!0&&window.blazorise.breakpoint.addBreakpointComponent(n,t)},unregisterBreakpointComponent:n=>{const t=window.blazorise.breakpoint.findBreakpointComponentIndex(n);t!==-1&&window.blazorise.breakpoint.breakpointComponents.splice(t,1)},onBreakpoint:(n,t)=>{n.invokeMethodAsync("OnBreakpoint",t)}}};document.addEventListener("mousedown",function(n){window.blazorise.lastClickedDocumentElement=n.target});document.addEventListener("mouseup",function(n){if(n.target===window.blazorise.lastClickedDocumentElement&&window.blazorise.closableComponents&&window.blazorise.closableComponents.length>0){const t=window.blazorise.closableComponents[window.blazorise.closableComponents.length-1];t&&window.blazorise.tryClose(t,n.target.id,!1,hasParentInTree(n.target,t.elementId))}});document.addEventListener("keyup",function(n){if(n.keyCode===27&&window.blazorise.closableComponents&&window.blazorise.closableComponents.length>0){const n=window.blazorise.closableComponents[window.blazorise.closableComponents.length-1];n&&window.blazorise.tryClose(n,n.elementId,!0,!1)}});window.addEventListener("resize",function(){if(window.blazorise.breakpoint.breakpointComponents&&window.blazorise.breakpoint.breakpointComponents.length>0){var n=window.blazorise.breakpoint.getBreakpoint();if(window.blazorise.breakpoint.lastBreakpoint!==n)for(window.blazorise.breakpoint.lastBreakpoint=n,index=0;index>18&63]+n[t>>12&63]+n[t>>6&63]+n[t&63]}function f(n,t,i){for(var f,e=[],r=t;rh?h:u+s));return o===1?(i=t[r-1],e.push(n[i>>2]+n[i<<4&63]+"==")):o===2&&(i=(t[r-2]<<8)+t[r-1],e.push(n[i>>10]+n[i>>4&63]+n[i<<2&63]+"=")),e.join("")}}(); -function mutateDOMChange(n){el=document.getElementById(n);ev=document.createEvent("Event");ev.initEvent("change",!0,!1);el.dispatchEvent(ev)}window.blazoriseBootstrap||(window.blazoriseBootstrap={});window.blazoriseBootstrap={tooltip:{initialize:n=>(n.querySelector(".custom-control-input,.btn")&&n.classList.add("b-tooltip-inline"),!0)},modal:{open:(n,t)=>{var i=Number(document.body.getAttribute("data-modals")||"0");return i===0&&window.blazorise.addClassToBody("modal-open"),i+=1,document.body.setAttribute("data-modals",i.toString()),t&&(n.querySelector(".modal-body").scrollTop=0),!0},close:()=>{var n=Number(document.body.getAttribute("data-modals")||"0");return n-=1,n===0&&window.blazorise.removeClassFromBody("modal-open"),document.body.setAttribute("data-modals",n.toString()),!0}}}; +function mutateDOMChange(n){el=document.getElementById(n);ev=document.createEvent("Event");ev.initEvent("change",!0,!1);el.dispatchEvent(ev)}window.blazoriseBootstrap||(window.blazoriseBootstrap={});window.blazoriseBootstrap={tooltip:{initialize:n=>(n.querySelector(".custom-control-input,.btn")&&n.classList.add("b-tooltip-inline"),!0)},modal:{open:(n,t)=>{var i=Number(document.body.getAttribute("data-modals")||"0");return i===0&&window.blazorise.addClassToBody("modal-open"),i+=1,document.body.setAttribute("data-modals",i.toString()),t&&(n.querySelector(".modal-body").scrollTop=0),!0},close:()=>{var n=Number(document.body.getAttribute("data-modals")||"0");return n-=1,n<0&&(n=0),n===0&&window.blazorise.removeClassFromBody("modal-open"),document.body.setAttribute("data-modals",n.toString()),!0}}}; var abp=abp||{};(function(){abp.utils=abp.utils||{};abp.domReady=function(n){document.readyState==="complete"||document.readyState==="interactive"?setTimeout(n,1):document.addEventListener("DOMContentLoaded",n)};abp.utils.setCookieValue=function(n,t,i,r,u){var f=encodeURIComponent(n)+"=";t&&(f=f+encodeURIComponent(t));i&&(f=f+"; expires="+i);r&&(f=f+"; path="+r);u&&(f=f+"; secure");document.cookie=f};abp.utils.getCookieValue=function(n){for(var i,r=document.cookie.split("; "),t=0;t - - + + + @@ -22,7 +23,7 @@
  • - + From 3d4390123616acc74db3c36797e44ad736d7cb95 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 7 Apr 2021 09:10:53 +0800 Subject: [PATCH 058/125] Update en.json --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index bf76e84ca9..7a5b336b88 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -272,7 +272,7 @@ "PaymentProduct": "Payment Product", "ProductName": "Product Name", "Code": "Code", - "GenerateInvoice": "Generate Invoice" + "GenerateInvoice": "Generate Invoice", "ExportOrganizationsToExcel": "Export Organizations To Excel" } } From 4cfee6303950883224d65792d761e60d2dd83d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 09:43:12 +0300 Subject: [PATCH 059/125] add component styles --- .../MyProjectNameBlazorModule.cs | 2 ++ .../Pages/Index.razor.cs | 7 +++++++ .../Pages/Index.razor.css | 1 + .../MyProjectNameBlazorModule.cs | 2 ++ .../Pages/Index.razor.cs | 7 +++++++ .../Pages/Index.razor.css | 1 + 6 files changed, 20 insertions(+) create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor.cs create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor.css create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor.cs create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor.css diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs index aa63a0ee6b..d34d9a0192 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs @@ -137,6 +137,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered bundle => { bundle.AddFiles("/blazor-global-styles.css"); + //You can remove the following line if you don't use Blazor CSS isolation for components + bundle.AddFiles("/MyCompanyName.MyProjectName.Blazor.Server.Tiered.styles.css"); } ); }); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor.cs new file mode 100644 index 0000000000..97cdd22b3f --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor.cs @@ -0,0 +1,7 @@ +namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered.Pages +{ + public partial class Index + { + + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor.css new file mode 100644 index 0000000000..abef246243 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor.css @@ -0,0 +1 @@ +/* Write here your styles for the Index page */ \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs index e7d8367005..9d860a9030 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs @@ -120,6 +120,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server bundle => { bundle.AddFiles("/blazor-global-styles.css"); + //You can remove the following line if you don't use Blazor CSS isolation for components + bundle.AddFiles("/MyCompanyName.MyProjectName.Blazor.Server.styles.css"); } ); }); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor.cs new file mode 100644 index 0000000000..e8144b37ca --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor.cs @@ -0,0 +1,7 @@ +namespace MyCompanyName.MyProjectName.Blazor.Server.Pages +{ + public partial class Index + { + + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor.css new file mode 100644 index 0000000000..abef246243 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor.css @@ -0,0 +1 @@ +/* Write here your styles for the Index page */ \ No newline at end of file From a6cf39db1c54e2cf60831b12e1a65daddc5c68de Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 7 Apr 2021 14:58:17 +0800 Subject: [PATCH 060/125] Remove duplicate depend --- .../Abp/SettingManagement/SettingManagementApplicationModule.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Application/Volo/Abp/SettingManagement/SettingManagementApplicationModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Application/Volo/Abp/SettingManagement/SettingManagementApplicationModule.cs index 9ed44d59c0..9b7b809b47 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Application/Volo/Abp/SettingManagement/SettingManagementApplicationModule.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Application/Volo/Abp/SettingManagement/SettingManagementApplicationModule.cs @@ -6,7 +6,6 @@ namespace Volo.Abp.SettingManagement [DependsOn( typeof(AbpSettingManagementDomainModule), typeof(AbpSettingManagementApplicationContractsModule), - typeof(AbpSettingManagementDomainModule), typeof(AbpEmailingModule) )] public class AbpSettingManagementApplicationModule : AbpModule From 09bcd9d79199df17a260dd08cd036951112b7363 Mon Sep 17 00:00:00 2001 From: SunCheng Date: Wed, 7 Apr 2021 15:28:56 +0800 Subject: [PATCH 061/125] Update AbpModuleHelper.cs --- .../Volo.Abp.Core/Volo/Abp/Modularity/AbpModuleHelper.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/AbpModuleHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/AbpModuleHelper.cs index e8bccb8e18..286001345d 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/AbpModuleHelper.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Modularity/AbpModuleHelper.cs @@ -12,7 +12,7 @@ namespace Volo.Abp.Modularity { var moduleTypes = new List(); logger.Log(LogLevel.Information, "Loaded ABP modules:"); - AddModuleAndDependenciesResursively(moduleTypes, startupModuleType, logger); + AddModuleAndDependenciesRecursively(moduleTypes, startupModuleType, logger); return moduleTypes; } @@ -37,7 +37,7 @@ namespace Volo.Abp.Modularity return dependencies; } - private static void AddModuleAndDependenciesResursively( + private static void AddModuleAndDependenciesRecursively( List moduleTypes, Type moduleType, ILogger logger, @@ -55,7 +55,7 @@ namespace Volo.Abp.Modularity foreach (var dependedModuleType in FindDependedModuleTypes(moduleType)) { - AddModuleAndDependenciesResursively(moduleTypes, dependedModuleType, logger, depth + 1); + AddModuleAndDependenciesRecursively(moduleTypes, dependedModuleType, logger, depth + 1); } } } From 38dd3f3c65ebb2b82812f36452179cd9366f3e54 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 7 Apr 2021 10:35:50 +0300 Subject: [PATCH 062/125] Docs: Use default value when value from query is wrong resolves https://github.com/abpframework/abp/issues/8455 --- .../Pages/Documents/Project/Index.cshtml.cs | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index 94cee58d1a..6a23afba29 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -568,10 +568,24 @@ namespace Volo.Docs.Pages.Documents.Project UserPreferences.Remove(key + "_Value"); } + var values = DocumentPreferences?.Parameters?.FirstOrDefault(p => p.Name == key)?.Values; + + if (values == null) + { + continue; + } + + if (!values.Any(v => v.Key == value)) + { + var defaultValue = values.FirstOrDefault(); + UserPreferences.Add(key, defaultValue.Key); + UserPreferences.Add(key + "_Value", defaultValue.Value); + + continue; + } + UserPreferences.Add(key, value); - UserPreferences.Add(key + "_Value", - DocumentPreferences?.Parameters?.FirstOrDefault(p => p.Name == key)?.Values - .FirstOrDefault(v => v.Key == value).Value); + UserPreferences.Add(key + "_Value", values.FirstOrDefault(v => v.Key == value).Value); } if (DocumentPreferences?.Parameters == null) From a4f8025d3c4a4dfdc0cbb31d7d15df7b3c605a9f Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 7 Apr 2021 11:01:57 +0300 Subject: [PATCH 063/125] Cli: blazor.server project should convert efcore to mongodb --- ...eSwitchEntityFrameworkCoreToMongoDbStep.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs index b0a778c323..290da79157 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs @@ -76,6 +76,29 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json" ); + //MyCompanyName.MyProjectName.Blazor.Server + + ChangeProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj", + "EntityFrameworkCore.DbMigrations", + "MongoDB" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs", + "MyCompanyName.MyProjectName.EntityFrameworkCore", + "MyCompanyName.MyProjectName.MongoDB", + "MyProjectNameEntityFrameworkCoreDbMigrationsModule", + "MyProjectNameMongoDbModule" + ); + + ChangeConnectionStringToMongoDb( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/appsettings.json" + ); + //MyCompanyName.MyProjectName.HttpApi.HostWithIds ChangeProjectReference( From 5fd63860990512559b22fa23de3ef4f383198f53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 11:24:46 +0300 Subject: [PATCH 064/125] Added blazor server & mongodb options to the todoapp article. --- docs/en/Tutorials/Todo/Index.md | 66 ++++++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 14 deletions(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index c906dce0a7..1363933e14 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -3,7 +3,8 @@ ````json //[doc-params] { - "UI": ["MVC", "Blazor"] + "UI": ["MVC", "Blazor", "BlazorServer"], + "DB": ["EF", "Mongo"] } ```` @@ -15,39 +16,45 @@ You can find source code of the completed application [here](https://github.com/ ## Pre-Requirements -### IDE +* An IDE (e.g. [Visual Studio](https://visualstudio.microsoft.com/vs/)) that supports [.NET 5.0+](https://dotnet.microsoft.com/download/dotnet) development. -You will need to an IDE (e.g. [Visual Studio](https://visualstudio.microsoft.com/vs/)) that supports [.NET 5.0+](https://dotnet.microsoft.com/download/dotnet) development. +{{if DB=="Mongo"}} -### ABP CLI +* [MongoDB Server 4.0+](https://docs.mongodb.com/manual/administration/install-community/) -We will use the ABP CLI to create new solutions with the ABP Framework. You can run the following command in a command-line terminal to install it: +{{end}} + +## Creating a New Solution + +We will use the [ABP CLI](../../CLI.md) to create new solutions with the ABP Framework. You can run the following command in a command-line terminal to install it: ````bash dotnet tool install -g Volo.Abp.Cli ```` -## Creating a New Solution - -Create an empty folder, open a command-line terminal and execute the following command in the terminal: +Then create an empty folder, open a command-line terminal and execute the following command in the terminal: ````bash -abp new TodoApp{{if UI=="Blazor"}} -u blazor{{end}} +abp new TodoApp{{if UI=="Blazor"}} -u blazor{{else if UI=="BlazorServer"}} -u blazor-server{{end}}{{if DB=="Mongo"}} -d mongodb{{end}} ```` -This will create a new solution, named *TodoApp*. Open the solution in your favorite IDE. +This will create a new solution, named *TodoApp*. Once the solution is ready, open it in your favorite IDE. ### Create the Database If you are using Visual Studio, right click to the `TodoApp.DbMigrator` project, select *Set as StartUp Project*, then hit *Ctrl+F5* to run it without debugging. It will create the initial database and seed the initial data. +{{if DB=="EF"}} + > Some IDEs (e.g. Rider) may have problems for the first run since *DbMigrator* adds the initial migration and re-compiles the project. In this case, open a command-line terminal in the folder of the `.DbMigrator` project and execute the `dotnet run` command. +{{end}} + ### Run the Application -{{if UI=="MVC"}} +{{if UI=="MVC" || UI=="BlazorServer"}} -It is good to run the application before starting the development. Ensure the `TodoApp.Web` project is the startup project, then run the application (Ctrl+F5 in Visual Studio) to see the initial UI: +It is good to run the application before starting the development. Ensure the {{if UI=="BlazorServer"}}`TodoApp.Blazor`{{else}}`TodoApp.Web`{{end}} project is the startup project, then run the application (Ctrl+F5 in Visual Studio) to see the initial UI: {{else if UI=="Blazor"}} @@ -91,6 +98,8 @@ namespace TodoApp ## Database Integration +{{if DB=="EF"}} + Next step is to setup the [Entity Framework Core](../../Entity-Framework-Core.md) configuration. ### Mapping Configuration @@ -139,6 +148,27 @@ dotnet ef database update > If you are using Visual Studio, you may want to use `Add-Migration Added_TodoItem` and `Update-Database` commands in the *Package Manager Console (PMC)*. In this case, ensure that {{if UI=="MVC"}}`TodoApp.Web`{{else if UI=="Blazor"}}`TodoApp.HttpApi.Host`{{end}} is the startup project and `TodoApp.EntityFrameworkCore.DbMigrations` is the *Default Project* in PMC. +{{else if DB=="Mongo"}} + +Next step is to setup the [MongoDB](../../MongoDB.md) configuration. Open the `TodoAppMongoDbContext` class in the `MongoDb` folder of the *TodoApp.MongoDB* project and make the following changes; + +1. Add a new property to the class: + +````csharp +public IMongoCollection TodoItems => Collection(); +```` + +2. Add the following code inside the `CreateModel` method: + +````csharp +modelBuilder.Entity(b => +{ + b.CollectionName = "TodoItems"; +}); +```` + +{{end}} + Now, we can use ABP repositories to save and retrieve todo items, as we'll do in the next section. ## Application Layer @@ -445,7 +475,7 @@ If you open the [Swagger UI](https://swagger.io/tools/swagger-ui/) by entering t ![todo-api](todo-api.png) -{{else if UI=="Blazor"}} +{{else if UI=="Blazor" || UI=="BlazorServer"}} ### Index.razor.cs @@ -490,8 +520,12 @@ namespace TodoApp.Blazor.Pages This class uses the `ITodoAppService` to perform operations for the todo items. It manipulates the `TodoItems` list after create and delete operations. In this way, we don't need to refresh the whole todo list from the server. +{{if UI=="Blazor"}} + See the *Dynamic C# Proxies & Auto API Controllers* section below to learn how we could inject and use the application service interface from the Blazor application which is running on the browser! But now, let's continue and complete the application. +{{end # Blazor}} + ### Index.razor Open the `Index.razor` file in the `Pages` folder of the *TodoApp.Blazor* project and replace the content with the following code block: @@ -570,6 +604,8 @@ This is a simple styling for the todo page. We believe that you can do much bett Now, you can run the application again to see the result. +{{if UI=="Blazor"}} + ### Dynamic C# Proxies & Auto API Controllers In the `Index.razor.cs` file, we've injected (with the `[Inject]` attribute) and used the `ITodoAppService` just like using a local service. Remember that the Blazor application is running on the browser while the implementation of this application service is running on the server. @@ -582,7 +618,9 @@ If you run the `TodoApp.HttpApi.Host` application, you can see the Todo API: ![todo-api](todo-api.png) -{{end}} +{{end # Blazor}} + +{{end # Blazor || BlazorServer}} ## Conclusion From 929c4aae86a2f441ad721f9150477378f909a73b Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 7 Apr 2021 14:01:34 +0300 Subject: [PATCH 065/125] add warning about dotnet run in proxy generation doc --- docs/en/UI/Angular/Service-Proxies.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/en/UI/Angular/Service-Proxies.md b/docs/en/UI/Angular/Service-Proxies.md index 3a10f1b6e8..18e5a3a0cc 100644 --- a/docs/en/UI/Angular/Service-Proxies.md +++ b/docs/en/UI/Angular/Service-Proxies.md @@ -10,6 +10,8 @@ To avoid manual effort, we might use a tool like [NSWAG](https://github.com/Rico ABP introduces an endpoint that exposes server-side method contracts. When the `generate-proxy` command is run, ABP CLI makes an HTTP request to this endpoint and generates better-aligned client proxies in TypeScript. It organizes folders according to namespaces, adds barrel exports, and reflects method signatures in Angular services. +> Before you start, please make sure you start the backend application with `dotnet run`. There is a [known limitation about Visual Studio](#known-limitations), so please do not run the project using its built-in web server. + Run the following command in the **root folder** of the angular application: ```bash From cef077bd355d8673ffd01e51e8c14cf5e9b85596 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Wed, 7 Apr 2021 14:49:26 +0300 Subject: [PATCH 066/125] Add missing localizations --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 6 +++++- .../AbpIoLocalization/Admin/Localization/Resources/tr.json | 7 ++++++- .../Admin/Localization/Resources/zh-Hans.json | 6 +++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 7a5b336b88..9289a7460f 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -273,6 +273,10 @@ "ProductName": "Product Name", "Code": "Code", "GenerateInvoice": "Generate Invoice", - "ExportOrganizationsToExcel": "Export Organizations To Excel" + "ExportOrganizationsToExcel": "Export Organizations To Excel", + "ThisExtensionIsNotAllowed": "This extension is not allowed.", + "TheFileIsTooLarge": "The file is too large.", + "ArticleDeletionConfirmationMessage": "Are you sure you want to hard delete this article?", + "ChooseCoverImage": "Choose a cover image..." } } diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json index 3ce042ec5b..2cf9a7947d 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json @@ -222,6 +222,11 @@ "ProductName": "Ürün İsmi", "Code": "Kod", "GenerateInvoice": "Fatura Oluştur", - "ExportOrganizationsToExcel": "Organizasyonu Excel'e aktar" + "ExportOrganizationsToExcel": "Organizasyonu Excel'e aktar", + "ThisExtensionIsNotAllowed": "Bu uzantıya izin verilmiyor.", + "TheFileIsTooLarge": "Dosya çok büyük.", + "ArticleDeletionConfirmationMessage": "Bu makaleyi kalıcı olarak silmek istediğinizden emin misiniz?", + "ChooseCoverImage": "Bir kapak resmi seçin...", + "CoverImage": "Kapak Resmi" } } \ No newline at end of file diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json index b244a6fbe8..40cd64838c 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/zh-Hans.json @@ -257,6 +257,10 @@ "ProductName": "产品名称", "Code": "代码", "GenerateInvoice": "生成发票", - "ExportOrganizationsToExcel": "将组织导出到Excel" + "ExportOrganizationsToExcel": "将组织导出到Excel", + "ThisExtensionIsNotAllowed": "不允许此扩展名.", + "TheFileIsTooLarge": "文件过大.", + "ArticleDeletionConfirmationMessage": "您确定要硬删除这篇文章吗?", + "ChooseCoverImage": "选项一张封面图片" } } \ No newline at end of file From d948057cda0e08db3f008ab3edf5d6fa151243bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 14:49:39 +0300 Subject: [PATCH 067/125] Add Angular option to the todoapp tutorial. --- docs/en/Tutorials/Todo/Index.md | 193 +++++++++++++++++++++++++++++++- 1 file changed, 188 insertions(+), 5 deletions(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 1363933e14..39ceb36351 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -3,7 +3,7 @@ ````json //[doc-params] { - "UI": ["MVC", "Blazor", "BlazorServer"], + "UI": ["MVC", "Blazor", "BlazorServer", "NG"], "DB": ["EF", "Mongo"] } ```` @@ -24,6 +24,12 @@ You can find source code of the completed application [here](https://github.com/ {{end}} +{{if UI=="NG"}} + +* [Node v14.x](https://nodejs.org/) + +{{end}} + ## Creating a New Solution We will use the [ABP CLI](../../CLI.md) to create new solutions with the ABP Framework. You can run the following command in a command-line terminal to install it: @@ -35,11 +41,19 @@ dotnet tool install -g Volo.Abp.Cli Then create an empty folder, open a command-line terminal and execute the following command in the terminal: ````bash -abp new TodoApp{{if UI=="Blazor"}} -u blazor{{else if UI=="BlazorServer"}} -u blazor-server{{end}}{{if DB=="Mongo"}} -d mongodb{{end}} +abp new TodoApp{{if UI=="Blazor"}} -u blazor{{else if UI=="BlazorServer"}} -u blazor-server{{else if UI=="NG"}} -u angular{{end}}{{if DB=="Mongo"}} -d mongodb{{end}} ```` +{{if UI=="NG"}} + +This will create a new solution, named *TodoApp* with `angular` and `aspnet-core` folders. Once the solution is ready, open the ASP.NET Core solution in your favorite IDE. + +{{else}} + This will create a new solution, named *TodoApp*. Once the solution is ready, open it in your favorite IDE. +{{end}} + ### Create the Database If you are using Visual Studio, right click to the `TodoApp.DbMigrator` project, select *Set as StartUp Project*, then hit *Ctrl+F5* to run it without debugging. It will create the initial database and seed the initial data. @@ -69,6 +83,33 @@ Ensure the `TodoApp.HttpApi.Host` project is the startup project, then run the a You can explore and test your HTTP API with this UI. Now, we can set the `TodoApp.Blazor` as the startup project and run it to open the actual Blazor application UI: +{{else if UI=="NG"}} + +It is good to run the application before starting the development. The solution has two main applications; + +* `TodoApp.HttpApi.Host` (in the .NET solution) host the server-side HTTP API. +* `angular` folder contains the Angular application. + +Ensure the `TodoApp.HttpApi.Host` project is the startup project, then run the application (Ctrl+F5 in Visual Studio) to see the server-side HTTP API on the [Swagger UI](https://swagger.io/tools/swagger-ui/): + +![todo-swagger-ui-initial](todo-swagger-ui-initial.png) + +You can explore and test your HTTP API with this UI. If that works, we can run the Angular client application. + +First, run the following command to restore the NPM packages; + +````bash +npm install +```` + +It will take some time to install all the packages. Then you can run the application using the following command: + +````bash +npm start +```` + +This command takes time, but eventually runs and opens the application in your default browser: + {{end}} ![todo-ui-initial](todo-ui-initial.png) @@ -146,7 +187,7 @@ You can apply changes to the database using the following command, in the same c dotnet ef database update ```` -> If you are using Visual Studio, you may want to use `Add-Migration Added_TodoItem` and `Update-Database` commands in the *Package Manager Console (PMC)*. In this case, ensure that {{if UI=="MVC"}}`TodoApp.Web`{{else if UI=="Blazor"}}`TodoApp.HttpApi.Host`{{end}} is the startup project and `TodoApp.EntityFrameworkCore.DbMigrations` is the *Default Project* in PMC. +> If you are using Visual Studio, you may want to use `Add-Migration Added_TodoItem` and `Update-Database` commands in the *Package Manager Console (PMC)*. In this case, ensure that {{if UI=="MVC"}}`TodoApp.Web`{{else if UI=="BlazorServer"}}`TodoApp.Blazor`{{else if UI=="Blazor" || UI=="NG"}}`TodoApp.HttpApi.Host`{{end}} is the startup project and `TodoApp.EntityFrameworkCore.DbMigrations` is the *Default Project* in PMC. {{else if DB=="Mongo"}} @@ -242,7 +283,7 @@ namespace TodoApp _todoItemRepository = todoItemRepository; } - // TODO: Implement the methods + // TODO: Implement the methods here... } } ```` @@ -620,7 +661,149 @@ If you run the `TodoApp.HttpApi.Host` application, you can see the Todo API: {{end # Blazor}} -{{end # Blazor || BlazorServer}} +{{else if UI=="NG"}} + +### Service Proxy Generation + +ABP provides a handy feature to automatically create client-side services to easily consume HTTP APIs provided by the server. + +Ensure that the `TodoApp.HttpApi.Host` project is running, open a command-line terminal in the `angular` folder and type the following command: + +```` +abp generate-proxy +```` + +If everything goes well, it should generate an output like shown below: + +```` +CREATE src/app/proxy/generate-proxy.json (170978 bytes) +CREATE src/app/proxy/README.md (1000 bytes) +CREATE src/app/proxy/todo.service.ts (794 bytes) +CREATE src/app/proxy/models.ts (66 bytes) +CREATE src/app/proxy/index.ts (58 bytes) +```` + +We can then use the `todoService` to use the server-side HTTP APIs, as we'll do in the next section. + +### home.component.ts + +Open the `/angular/src/app/home/home.component.ts` file and replace its content with the following code block: + +````js +import { ToasterService } from '@abp/ng.theme.shared'; +import { Component, OnInit } from '@angular/core'; +import { TodoItemDto, TodoService } from '@proxy'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'] +}) +export class HomeComponent implements OnInit { + + todoItems: TodoItemDto[]; + newTodoText: string; + + constructor( + private todoService: TodoService, + private toasterService: ToasterService) + { } + + ngOnInit(): void { + this.todoService.getList().subscribe(response => { + this.todoItems = response; + }); + } + + create(): void{ + this.todoService.create(this.newTodoText).subscribe((result) => { + this.todoItems = this.todoItems.concat(result); + this.newTodoText = null; + }); + } + + delete(id: string): void { + this.todoService.delete(id).subscribe(() => { + this.todoItems = this.todoItems.filter(item => item.id !== id); + this.toasterService.info('Deleted the todo item.'); + }); + } +} + +```` + +We've used the `todoService` to get the list of todo items and assigned the returning value to the `todoItems` array. We've also added `create` and `delete` methods. These methods will be used in the view side. + +### home.component.html + +Open the `/angular/src/app/home/home.component.html` file and replace its content with the following code block: + +````html +
    +
    +
    +
    TODO LIST
    +
    +
    + +
    + + +
    + + +
      +
    • + {{ todoItem.text }} +
    • +
    +
    +
    +
    +```` + +### Index.razor.css + +As the final touch, open the `/angular/src/app/home/home.component.css` file in the `Pages` and replace with the following content: + +````css +#TodoList{ + list-style: none; + margin: 0; + padding: 0; +} + +#TodoList li { + padding: 5px; + margin: 5px 0px; + border: 1px solid #cccccc; + background-color: #f5f5f5; +} + +#TodoList li i +{ + opacity: 0.5; +} + +#TodoList li i:hover +{ + opacity: 1; + color: #ff0000; + cursor: pointer; +} +```` + +This is a simple styling for the todo page. We believe that you can do much better :) + +Now, you can run the application again to see the result. + +{{end}} ## Conclusion From 6b50eeee1d38543eb52b498d81caea9452fbef2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 14:52:58 +0300 Subject: [PATCH 068/125] Add link to the Quick start tutorial --- docs/en/Index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/en/Index.md b/docs/en/Index.md index 95052add38..cdd0908821 100644 --- a/docs/en/Index.md +++ b/docs/en/Index.md @@ -4,8 +4,9 @@ ABP Framework is a complete **infrastructure** based on the **ASP.NET Core** to ## Getting Started -* [Getting Started Guide](Getting-Started.md) is the easiest way to start a new web application with the ABP Framework. -* [Web Application Development Tutorial](Tutorials/Part-1.md) is a complete tutorial to develop a full stack web application. +* [Quick Start](Tutorials/Todo/Index.md) is a single-part, quick-start tutorial to build a simple application with the ABP Framework. Start with this tutorial if you want to quickly understand how ABP works. +* [Getting Started](Getting-Started.md) guide can be used to create and run ABP based solutions with different options and details. +* [Web Application Development Tutorial](Tutorials/Part-1.md) is a complete tutorial to develop a full stack web application with all aspects of a real-life solution. ### UI Framework Options From 0c7892de0254abf1574c2d4061eb465cf8b9688b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 15:00:04 +0300 Subject: [PATCH 069/125] Fix tutorial curly bracket usage --- docs/en/Tutorials/Todo/Index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 39ceb36351..3e540eacca 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -760,7 +760,7 @@ Open the `/angular/src/app/home/home.component.html` file and replace its conten
    • - {{ todoItem.text }} + {%{{{ todoItem.text }}}%}
    From 6b3ae5fa555ff8b4dab330c744e5e08cb803a43e Mon Sep 17 00:00:00 2001 From: EngincanV Date: Wed, 7 Apr 2021 15:01:37 +0300 Subject: [PATCH 070/125] Blogging: Cache invalidation --- .../Admin/Blogs/IBlogManagementAppService.cs | 2 + .../Admin/Blogs/BlogManagementAppService.cs | 14 +- .../Admin/BlogManagementController.cs | 7 + .../Pages/Blogging/Admin/Blogs/index.js | 16 +++ .../BloggingPermissionDefinitionProvider.cs | 1 + .../Volo/Blogging/BloggingPermissions.cs | 1 + .../BloggingApplicationAutoMapperProfile.cs | 10 ++ .../Volo/Blogging/Posts/PostAppService.cs | 125 +++++++++--------- .../Blogging/Localization/Resources/en.json | 5 +- .../Blogging/Localization/Resources/tr.json | 5 +- .../Volo.Blogging.Domain.csproj | 1 + .../Volo/Blogging/BloggingDomainModule.cs | 5 +- .../Blogging/Posts/PostCacheInvalidator.cs | 25 ++++ .../Volo/Blogging/Posts/PostCacheItem.cs | 39 ++++++ 14 files changed, 188 insertions(+), 68 deletions(-) create mode 100644 modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheInvalidator.cs create mode 100644 modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs diff --git a/modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/IBlogManagementAppService.cs b/modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/IBlogManagementAppService.cs index 35d6d1c97e..1e363c8578 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/IBlogManagementAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/IBlogManagementAppService.cs @@ -18,5 +18,7 @@ namespace Volo.Blogging.Admin.Blogs Task UpdateAsync(Guid id, UpdateBlogDto input); Task DeleteAsync(Guid id); + + Task ClearCacheAsync(Guid id); } } diff --git a/modules/blogging/src/Volo.Blogging.Admin.Application/Volo/Blogging/Admin/Blogs/BlogManagementAppService.cs b/modules/blogging/src/Volo.Blogging.Admin.Application/Volo/Blogging/Admin/Blogs/BlogManagementAppService.cs index b11bd481fe..1c5f282d7c 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.Application/Volo/Blogging/Admin/Blogs/BlogManagementAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Admin.Application/Volo/Blogging/Admin/Blogs/BlogManagementAppService.cs @@ -3,18 +3,22 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; +using Volo.Abp.Caching; using Volo.Blogging.Blogs; using Volo.Blogging.Blogs.Dtos; +using Volo.Blogging.Posts; namespace Volo.Blogging.Admin.Blogs { public class BlogManagementAppService : BloggingAdminAppServiceBase, IBlogManagementAppService { private readonly IBlogRepository _blogRepository; - - public BlogManagementAppService(IBlogRepository blogRepository) + private readonly IDistributedCache> _postsCache; + + public BlogManagementAppService(IBlogRepository blogRepository, IDistributedCache> postsCache) { _blogRepository = blogRepository; + _postsCache = postsCache; } public async Task> GetListAsync() @@ -63,5 +67,11 @@ namespace Volo.Blogging.Admin.Blogs { await _blogRepository.DeleteAsync(id); } + + [Authorize(BloggingPermissions.Blogs.ClearCache)] + public async Task ClearCacheAsync(Guid id) + { + await _postsCache.RemoveAsync(id.ToString()); + } } } diff --git a/modules/blogging/src/Volo.Blogging.Admin.HttpApi/Volo/Blogging/Admin/BlogManagementController.cs b/modules/blogging/src/Volo.Blogging.Admin.HttpApi/Volo/Blogging/Admin/BlogManagementController.cs index 815604e871..ce6457dcc7 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.HttpApi/Volo/Blogging/Admin/BlogManagementController.cs +++ b/modules/blogging/src/Volo.Blogging.Admin.HttpApi/Volo/Blogging/Admin/BlogManagementController.cs @@ -54,5 +54,12 @@ namespace Volo.Blogging.Admin { await _blogManagementAppService.DeleteAsync(id); } + + [HttpGet] + [Route("clear-cache/{id}")] + public async Task ClearCacheAsync(Guid id) + { + await _blogManagementAppService.ClearCacheAsync(id); + } } } diff --git a/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/index.js b/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/index.js index a2b618b89f..aaa378cabd 100644 --- a/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/index.js +++ b/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/index.js @@ -52,6 +52,22 @@ }); }, }, + { + text: l("ClearCache"), + visible: abp.auth.isGranted( + 'Blogging.Blog.ClearCache' + ), + confirmMessage: function (data) { + return l("ClearCacheConfirmationMessage"); + }, + action: function (data) { + volo.blogging.admin.blogManagement + .clearCache(data.record.id) + .then(function () { + _dataTable.ajax.reload(); + }) + } + } ], }, }, diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts.Shared/Volo/Blogging/BloggingPermissionDefinitionProvider.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts.Shared/Volo/Blogging/BloggingPermissionDefinitionProvider.cs index 65a6ab1ab7..595e32199c 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts.Shared/Volo/Blogging/BloggingPermissionDefinitionProvider.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts.Shared/Volo/Blogging/BloggingPermissionDefinitionProvider.cs @@ -15,6 +15,7 @@ namespace Volo.Blogging blogs.AddChild(BloggingPermissions.Blogs.Update, L("Permission:Edit")); blogs.AddChild(BloggingPermissions.Blogs.Delete, L("Permission:Delete")); blogs.AddChild(BloggingPermissions.Blogs.Create, L("Permission:Create")); + blogs.AddChild(BloggingPermissions.Blogs.ClearCache, L("Permission:ClearCache")); var posts = bloggingGroup.AddPermission(BloggingPermissions.Posts.Default, L("Permission:Posts")); posts.AddChild(BloggingPermissions.Posts.Update, L("Permission:Edit")); diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts.Shared/Volo/Blogging/BloggingPermissions.cs b/modules/blogging/src/Volo.Blogging.Application.Contracts.Shared/Volo/Blogging/BloggingPermissions.cs index fae85acf88..617b4d06f1 100644 --- a/modules/blogging/src/Volo.Blogging.Application.Contracts.Shared/Volo/Blogging/BloggingPermissions.cs +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts.Shared/Volo/Blogging/BloggingPermissions.cs @@ -13,6 +13,7 @@ namespace Volo.Blogging public const string Delete = Default + ".Delete"; public const string Update = Default + ".Update"; public const string Create = Default + ".Create"; + public const string ClearCache = Default + ".ClearCache"; } public static class Posts diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs index b9e3cf0dea..2d40c7fad9 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs @@ -20,6 +20,16 @@ namespace Volo.Blogging CreateMap().Ignore(x=>x.Writer).Ignore(x=>x.CommentCount).Ignore(x=>x.Tags); CreateMap().Ignore(x => x.Writer); CreateMap(); + CreateMap().Ignore(x=>x.Writer).Ignore(x=>x.CommentCount).Ignore(x=>x.Tags); + CreateMap() + .Ignore(x=>x.LastModificationTime) + .Ignore(x=>x.LastModifierId) + .Ignore(x=>x.DeleterId) + .Ignore(x=>x.IsDeleted) + .Ignore(x=>x.DeletionTime) + .Ignore(x=>x.CommentCount) + .Ignore(x=>x.Tags); + } } } diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs index 07d22d3385..9e8acba57d 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs @@ -20,9 +20,15 @@ namespace Volo.Blogging.Posts private readonly IPostRepository _postRepository; private readonly ITagRepository _tagRepository; private readonly ICommentRepository _commentRepository; - private readonly IDistributedCache> _postsCache; - - public PostAppService(IPostRepository postRepository, ITagRepository tagRepository, ICommentRepository commentRepository, IBlogUserLookupService userLookupService, IDistributedCache> postsCache) + private readonly IDistributedCache> _postsCache; + + public PostAppService( + IPostRepository postRepository, + ITagRepository tagRepository, + ICommentRepository commentRepository, + IBlogUserLookupService userLookupService, + IDistributedCache> postsCache + ) { UserLookupService = userLookupService; _postRepository = postRepository; @@ -33,21 +39,47 @@ namespace Volo.Blogging.Posts public async Task> GetListByBlogIdAndTagName(Guid id, string tagName) { - var cacheKey = id.ToString() + "-" + tagName; + var posts = await _postRepository.GetPostsByBlogId(id); + var tag = tagName.IsNullOrWhiteSpace() ? null : await _tagRepository.FindByNameAsync(id, tagName); + var userDictionary = new Dictionary(); + var postDtos = new List(ObjectMapper.Map, List>(posts)); - return await _postsCache.GetOrAddAsync( - cacheKey, - async () => await GetPostsByBlogIdAndTagName(id, tagName), - () => new DistributedCacheEntryOptions + foreach (var postDto in postDtos) + { + postDto.Tags = await GetTagsOfPost(postDto.Id); + } + + if (tag != null) + { + postDtos = await FilterPostsByTag(postDtos, tag); + } + + foreach (var postDto in postDtos) + { + if (postDto.CreatorId.HasValue) { - AbsoluteExpiration = DateTimeOffset.Now.AddHours(6) + if (!userDictionary.ContainsKey(postDto.CreatorId.Value)) + { + var creatorUser = await UserLookupService.FindByIdAsync(postDto.CreatorId.Value); + if (creatorUser != null) + { + userDictionary[creatorUser.Id] = ObjectMapper.Map(creatorUser); + } + } + + if (userDictionary.ContainsKey(postDto.CreatorId.Value)) + { + postDto.Writer = userDictionary[(Guid)postDto.CreatorId]; + } } - ); + } + + return new ListResultDto(postDtos); } public async Task> GetTimeOrderedListAsync(Guid blogId) { - return await _postsCache.GetOrAddAsync( + var postCacheItems = await _postsCache.GetOrAddAsync( blogId.ToString(), async () => await GetTimeOrderedPostsAsync(blogId), () => new DistributedCacheEntryOptions @@ -55,6 +87,22 @@ namespace Volo.Blogging.Posts AbsoluteExpiration = DateTimeOffset.Now.AddHours(6) } ); + + var postsWithDetails = ObjectMapper.Map, List>(postCacheItems); + + foreach (var post in postsWithDetails) + { + if (post.CreatorId.HasValue) + { + var creatorUser = await UserLookupService.FindByIdAsync(post.CreatorId.Value); + if (creatorUser != null) + { + post.Writer = ObjectMapper.Map(creatorUser); + } + } + } + + return new ListResultDto(postsWithDetails); } public async Task GetForReadingAsync(GetPostInput input) @@ -157,62 +205,13 @@ namespace Volo.Blogging.Posts return ObjectMapper.Map(post); } - private async Task> GetPostsByBlogIdAndTagName(Guid id, string tagName) - { - var posts = await _postRepository.GetPostsByBlogId(id); - var tag = tagName.IsNullOrWhiteSpace() ? null : await _tagRepository.FindByNameAsync(id, tagName); - var userDictionary = new Dictionary(); - var postDtos = new List(ObjectMapper.Map, List>(posts)); - - foreach (var postDto in postDtos) - { - postDto.Tags = await GetTagsOfPost(postDto.Id); - } - - if (tag != null) - { - postDtos = await FilterPostsByTag(postDtos, tag); - } - - foreach (var postDto in postDtos) - { - if (postDto.CreatorId.HasValue) - { - if (!userDictionary.ContainsKey(postDto.CreatorId.Value)) - { - var creatorUser = await UserLookupService.FindByIdAsync(postDto.CreatorId.Value); - if (creatorUser != null) - { - userDictionary[creatorUser.Id] = ObjectMapper.Map(creatorUser); - } - } - - if (userDictionary.ContainsKey(postDto.CreatorId.Value)) - { - postDto.Writer = userDictionary[(Guid)postDto.CreatorId]; - } - } - } - - return new ListResultDto(postDtos); - } - - private async Task> GetTimeOrderedPostsAsync(Guid blogId) + private async Task> GetTimeOrderedPostsAsync(Guid blogId) { var posts = await _postRepository.GetOrderedList(blogId); - var postDtos = new List(ObjectMapper.Map, List>(posts)); + var postCacheItems = ObjectMapper.Map, List>(posts); - foreach (var postDto in postDtos) - { - var creatorUser = await UserLookupService.FindByIdAsync(postDto.CreatorId.Value); - if (creatorUser != null) - { - postDto.Writer = ObjectMapper.Map(creatorUser); - } - } - - return new ListResultDto(postDtos); + return postCacheItems; } private async Task RenameUrlIfItAlreadyExistAsync(Guid blogId, string url, Post existingPost = null) diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json index 5ebdf25d9f..2219aa9fcd 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json @@ -12,6 +12,7 @@ "Permission:Posts": "Posts", "Permission:Tags": "Tags", "Permission:Comments": "Comments", + "Permission:ClearCache": "Clear cache", "Title": "Title", "Delete": "Delete", "Reply": "Reply", @@ -53,6 +54,8 @@ "Blogs": "Blogs", "Tags": "Tags", "ShareOn": "Share on", - "TitleLengthWarning": "Keep your title size under 60 characters to be SEO friendly!" + "TitleLengthWarning": "Keep your title size under 60 characters to be SEO friendly!", + "ClearCache": "Clear cache", + "ClearCacheConfirmationMessage": "Are you sure you want to clear the cache?" } } diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json index 4a9a38b040..915e8b233e 100644 --- a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/tr.json @@ -12,6 +12,7 @@ "Permission:Posts": "Yazılar", "Permission:Tags": "Etiketler", "Permission:Comments": "Yorumlar", + "Permission:ClearCache": "Önbelleği temizle", "Title": "Başlık", "Delete": "Sil", "Reply": "Yanıtla", @@ -53,6 +54,8 @@ "Blogs": "Bloglar", "Tags": "Etiketler", "ShareOn": "Paylaş", - "TitleLengthWarning": "Başlığınınz SEO dostu olabilmesi için 60 karakterden az olmasını sağlayın!" + "TitleLengthWarning": "Başlığınınz SEO dostu olabilmesi için 60 karakterden az olmasını sağlayın!", + "ClearCache": "Önbelleği temizle", + "ClearCacheConfirmationMessage": "Önbelleği temizlemek istediğinizden emin misiniz?" } } diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo.Blogging.Domain.csproj b/modules/blogging/src/Volo.Blogging.Domain/Volo.Blogging.Domain.csproj index 73cf0498c5..c6c096105b 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo.Blogging.Domain.csproj +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo.Blogging.Domain.csproj @@ -15,6 +15,7 @@ + diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/BloggingDomainModule.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/BloggingDomainModule.cs index 3179303215..2e5e9a68e0 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/BloggingDomainModule.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/BloggingDomainModule.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AutoMapper; +using Volo.Abp.Caching; using Volo.Abp.Domain; using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.Modularity; @@ -13,7 +14,9 @@ namespace Volo.Blogging [DependsOn( typeof(BloggingDomainSharedModule), typeof(AbpDddDomainModule), - typeof(AbpAutoMapperModule))] + typeof(AbpAutoMapperModule), + typeof(AbpCachingModule) + )] public class BloggingDomainModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheInvalidator.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheInvalidator.cs new file mode 100644 index 0000000000..abbfcd8d88 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheInvalidator.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Entities.Events; +using Volo.Abp.EventBus; + +namespace Volo.Blogging.Posts +{ + public class PostCacheInvalidator : ILocalEventHandler>, ITransientDependency + { + protected IDistributedCache> Cache { get; } + + public PostCacheInvalidator(IDistributedCache> cache) + { + Cache = cache; + } + + public virtual async Task HandleEventAsync(EntityChangedEventData eventData) + { + var cacheKey = eventData.Entity.BlogId.ToString(); + await Cache.RemoveAsync(cacheKey); + } + } +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs new file mode 100644 index 0000000000..f08424aaf1 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using JetBrains.Annotations; +using Volo.Abp.Auditing; +using Volo.Abp.Domain.Entities; +using Volo.Blogging.Tagging; +using Volo.Blogging.Users; + +namespace Volo.Blogging.Posts +{ + [Serializable] + public class PostCacheItem + { + public Guid Id { get; set; } + public Guid BlogId { get; set; } + + public string Title { get; set; } + + public string CoverImage { get; set; } + + public string Url { get; set; } + + public string Content { get; set; } + + public string Description { get; set; } + + public int ReadCount { get; set; } + + public int CommentCount { get; set; } + + [CanBeNull] + public BlogUser Writer { get; set; } + + public List Tags { get; set; } + public Guid? CreatorId { get; set; } + + public DateTime CreationTime { get; set; } + } +} \ No newline at end of file From 262d23e6798d517a121949869496ddbaf2d6d7f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 15:03:52 +0300 Subject: [PATCH 071/125] Update Index.md --- docs/en/Tutorials/Todo/Index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 3e540eacca..7b74fa4056 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -669,13 +669,13 @@ ABP provides a handy feature to automatically create client-side services to eas Ensure that the `TodoApp.HttpApi.Host` project is running, open a command-line terminal in the `angular` folder and type the following command: -```` +````bash abp generate-proxy ```` If everything goes well, it should generate an output like shown below: -```` +````bash CREATE src/app/proxy/generate-proxy.json (170978 bytes) CREATE src/app/proxy/README.md (1000 bytes) CREATE src/app/proxy/todo.service.ts (794 bytes) From d44ffe45fe1ef761242d8deac2d526277a0bf906 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 7 Apr 2021 15:04:07 +0300 Subject: [PATCH 072/125] CLI: manually handle to remove cmskit related packages from package.json dependencies resolves https://github.com/volosoft/volo/issues/6247 --- ...emoveDependencyFromPackageJsonFilesStep.cs | 34 ++++++++++++++++ .../Templates/App/AppTemplateBase.cs | 40 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs new file mode 100644 index 0000000000..031c647201 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs @@ -0,0 +1,34 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class RemoveDependencyFromPackageJsonFilesStep : ProjectBuildPipelineStep + { + private readonly string _packageJsonFilePath; + private readonly string _packageName; + + public RemoveDependencyFromPackageJsonFilesStep(string packageJsonFilePath, string packageName) + { + _packageJsonFilePath = packageJsonFilePath; + _packageName = packageName; + } + + public override void Execute(ProjectBuildContext context) + { + var packageJsonFile = context.Files.Find(f => f.Name == _packageJsonFilePath); + + if (packageJsonFile == null) + { + return; + } + + var packageJsonObject = JObject.Parse(packageJsonFile.Content); + var dependenciesObject = (JObject) packageJsonObject["dependencies"]; + + dependenciesObject?.Remove(_packageName); + + packageJsonFile.SetContent(packageJsonObject.ToString(Formatting.Indented)); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index 286283f22c..ef801a8800 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -173,6 +173,46 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { context.Symbols.Add("CMS-KIT"); } + else + { + RemoveCmsKitDependenciesFromPackageJsonFiles(steps); + } + } + + private static void RemoveCmsKitDependenciesFromPackageJsonFiles(List steps) + { + var adminCmsPackageInstalledProjectsPackageJsonFiles = new List + { + "/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json", + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json" + }; + + var publicCmsPackageInstalledProjectsPackageJsonFiles = new List + { + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Public/package.json", + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Public.Host/package.json", + }; + + var unifiedCmsPackageInstalledProjectsPackageJsonFiles = new List + { + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json", + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json" + }; + + foreach (var packageJsonFile in adminCmsPackageInstalledProjectsPackageJsonFiles) + { + steps.Add(new RemoveDependencyFromPackageJsonFilesStep(packageJsonFile, "@volo/cms-kit-pro.admin")); + } + + foreach (var packageJsonFile in publicCmsPackageInstalledProjectsPackageJsonFiles) + { + steps.Add(new RemoveDependencyFromPackageJsonFilesStep(packageJsonFile, "@volo/cms-kit-pro.public")); + } + + foreach (var packageJsonFile in unifiedCmsPackageInstalledProjectsPackageJsonFiles) + { + steps.Add(new RemoveDependencyFromPackageJsonFilesStep(packageJsonFile, "@volo/cms-kit-pro")); + } } private bool IsCmsKitSupportedForTargetVersion(ProjectBuildContext context) From 1bcae8c9d2ef0ffc072a29b26b59f067be22bae8 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 7 Apr 2021 15:05:24 +0300 Subject: [PATCH 073/125] rename RemoveDependencyFromPackageJsonFilesStep to RemoveDependencyFromPackageJsonFileStep --- ...esStep.cs => RemoveDependencyFromPackageJsonFileStep.cs} | 4 ++-- .../Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) rename framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/{RemoveDependencyFromPackageJsonFilesStep.cs => RemoveDependencyFromPackageJsonFileStep.cs} (82%) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs similarity index 82% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs index 031c647201..0bec6d26d2 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFilesStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs @@ -3,12 +3,12 @@ using Newtonsoft.Json.Linq; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps { - public class RemoveDependencyFromPackageJsonFilesStep : ProjectBuildPipelineStep + public class RemoveDependencyFromPackageJsonFileStep : ProjectBuildPipelineStep { private readonly string _packageJsonFilePath; private readonly string _packageName; - public RemoveDependencyFromPackageJsonFilesStep(string packageJsonFilePath, string packageName) + public RemoveDependencyFromPackageJsonFileStep(string packageJsonFilePath, string packageName) { _packageJsonFilePath = packageJsonFilePath; _packageName = packageName; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index ef801a8800..ea5822568b 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -201,17 +201,17 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App foreach (var packageJsonFile in adminCmsPackageInstalledProjectsPackageJsonFiles) { - steps.Add(new RemoveDependencyFromPackageJsonFilesStep(packageJsonFile, "@volo/cms-kit-pro.admin")); + steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFile, "@volo/cms-kit-pro.admin")); } foreach (var packageJsonFile in publicCmsPackageInstalledProjectsPackageJsonFiles) { - steps.Add(new RemoveDependencyFromPackageJsonFilesStep(packageJsonFile, "@volo/cms-kit-pro.public")); + steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFile, "@volo/cms-kit-pro.public")); } foreach (var packageJsonFile in unifiedCmsPackageInstalledProjectsPackageJsonFiles) { - steps.Add(new RemoveDependencyFromPackageJsonFilesStep(packageJsonFile, "@volo/cms-kit-pro")); + steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFile, "@volo/cms-kit-pro")); } } From a8e6b380aefdd3e804374610613a9e58e0c6667c Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 7 Apr 2021 15:08:10 +0300 Subject: [PATCH 074/125] Update RemoveDependencyFromPackageJsonFileStep.cs --- .../Steps/RemoveDependencyFromPackageJsonFileStep.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs index 0bec6d26d2..ab7cff8c56 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json; +using System.Linq; +using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps @@ -16,7 +17,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps public override void Execute(ProjectBuildContext context) { - var packageJsonFile = context.Files.Find(f => f.Name == _packageJsonFilePath); + var packageJsonFile = context.Files.FirstOrDefault(f => f.Name == _packageJsonFilePath); if (packageJsonFile == null) { From 39dd3eade269235c222333ab4b46b64e6d94a7aa Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Wed, 7 Apr 2021 15:12:31 +0300 Subject: [PATCH 075/125] add oracle to DatabaseManagementSystems --- docs/en/CLI-New-Command-Samples.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/CLI-New-Command-Samples.md b/docs/en/CLI-New-Command-Samples.md index 8ddd985e85..eedf03353c 100644 --- a/docs/en/CLI-New-Command-Samples.md +++ b/docs/en/CLI-New-Command-Samples.md @@ -167,7 +167,7 @@ ABP CLI always uses the latest version. In order to create a solution from a pre ## Choose database management system -The default database management system (DBMS) is `Entity Framework Core` / ` SQL Server`. You can choose a DBMS by passing `--database-management-system` parameter. Accepted values are `SqlServer`, `MySQL`, `SQLite`, `Oracle-Devart`, `PostgreSQL`. The default value is `SqlServer`. +The default database management system (DBMS) is `Entity Framework Core` / ` SQL Server`. You can choose a DBMS by passing `--database-management-system` parameter. [Accepted values](https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/DatabaseManagementSystem.cs) are `SqlServer`, `MySQL`, `SQLite`, `Oracle`, `Oracle-Devart`, `PostgreSQL`. The default value is `SqlServer`. * Angular UI, **PostgreSQL** database, creates the project in a new folder: From 5b15fc10b4e523400ea671385bdbda9c019d2b09 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Wed, 7 Apr 2021 15:22:52 +0300 Subject: [PATCH 076/125] Update en.json --- .../AbpIoLocalization/Admin/Localization/Resources/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 9289a7460f..0cfd2a477a 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -273,9 +273,9 @@ "ProductName": "Product Name", "Code": "Code", "GenerateInvoice": "Generate Invoice", - "ExportOrganizationsToExcel": "Export Organizations To Excel", + "ExportOrganizationsToExcel": "Export to Excel", "ThisExtensionIsNotAllowed": "This extension is not allowed.", - "TheFileIsTooLarge": "The file is too large.", + "TheFileIsTooLarge": "The file is too large!", "ArticleDeletionConfirmationMessage": "Are you sure you want to hard delete this article?", "ChooseCoverImage": "Choose a cover image..." } From 2cf9926c7de2ee3f73730ad91860d59de6a16546 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Wed, 7 Apr 2021 15:23:24 +0300 Subject: [PATCH 077/125] Update tr.json --- .../AbpIoLocalization/Admin/Localization/Resources/tr.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json index 2cf9a7947d..c1253db259 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/tr.json @@ -222,11 +222,11 @@ "ProductName": "Ürün İsmi", "Code": "Kod", "GenerateInvoice": "Fatura Oluştur", - "ExportOrganizationsToExcel": "Organizasyonu Excel'e aktar", + "ExportOrganizationsToExcel": "Excel'e aktar", "ThisExtensionIsNotAllowed": "Bu uzantıya izin verilmiyor.", "TheFileIsTooLarge": "Dosya çok büyük.", "ArticleDeletionConfirmationMessage": "Bu makaleyi kalıcı olarak silmek istediğinizden emin misiniz?", "ChooseCoverImage": "Bir kapak resmi seçin...", "CoverImage": "Kapak Resmi" } -} \ No newline at end of file +} From 7be01cefddceb4a38007c319042b9f176dd51449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 15:48:57 +0300 Subject: [PATCH 078/125] Added style file for the home component. --- templates/app/angular/src/app/home/home.component.css | 1 + templates/app/angular/src/app/home/home.component.ts | 1 + 2 files changed, 2 insertions(+) create mode 100644 templates/app/angular/src/app/home/home.component.css diff --git a/templates/app/angular/src/app/home/home.component.css b/templates/app/angular/src/app/home/home.component.css new file mode 100644 index 0000000000..4e3bf68aa0 --- /dev/null +++ b/templates/app/angular/src/app/home/home.component.css @@ -0,0 +1 @@ +/* Styles for the home component */ \ No newline at end of file diff --git a/templates/app/angular/src/app/home/home.component.ts b/templates/app/angular/src/app/home/home.component.ts index c0b4602ee2..cd0aca4034 100644 --- a/templates/app/angular/src/app/home/home.component.ts +++ b/templates/app/angular/src/app/home/home.component.ts @@ -5,6 +5,7 @@ import { OAuthService } from 'angular-oauth2-oidc'; @Component({ selector: 'app-home', templateUrl: './home.component.html', + styleUrls: ['./home.component.css'], }) export class HomeComponent { get hasLoggedIn(): boolean { From 9ef263c7db4e83b6c2cfb9eb9e9ce2a8c0f9d0ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 15:59:07 +0300 Subject: [PATCH 079/125] Update Index.md --- docs/en/Tutorials/Todo/Index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 7b74fa4056..925527c507 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -768,7 +768,7 @@ Open the `/angular/src/app/home/home.component.html` file and replace its conten
    ```` -### Index.razor.css +### home.component.css As the final touch, open the `/angular/src/app/home/home.component.css` file in the `Pages` and replace with the following content: From 4fcf7fafdaf4c23df1ce3b63c8de83feaf626eba Mon Sep 17 00:00:00 2001 From: EngincanV Date: Wed, 7 Apr 2021 16:08:48 +0300 Subject: [PATCH 080/125] Refactoring --- .../Blogging/BloggingApplicationAutoMapperProfile.cs | 12 ++++-------- .../Volo/Blogging/Posts/PostAppService.cs | 4 +--- .../Volo/Blogging/Posts/PostCacheItem.cs | 6 ++++-- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs index 2d40c7fad9..b2113926ad 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs @@ -22,14 +22,10 @@ namespace Volo.Blogging CreateMap(); CreateMap().Ignore(x=>x.Writer).Ignore(x=>x.CommentCount).Ignore(x=>x.Tags); CreateMap() - .Ignore(x=>x.LastModificationTime) - .Ignore(x=>x.LastModifierId) - .Ignore(x=>x.DeleterId) - .Ignore(x=>x.IsDeleted) - .Ignore(x=>x.DeletionTime) - .Ignore(x=>x.CommentCount) - .Ignore(x=>x.Tags); - + .IgnoreModificationAuditedObjectProperties() + .IgnoreDeletionAuditedObjectProperties() + .Ignore(x => x.CommentCount) + .Ignore(x => x.Tags); } } } diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs index 9e8acba57d..d804e7a004 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs @@ -209,9 +209,7 @@ namespace Volo.Blogging.Posts { var posts = await _postRepository.GetOrderedList(blogId); - var postCacheItems = ObjectMapper.Map, List>(posts); - - return postCacheItems; + return ObjectMapper.Map, List>(posts); } private async Task RenameUrlIfItAlreadyExistAsync(Guid blogId, string url, Post existingPost = null) diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs index f08424aaf1..450feec9dd 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs @@ -9,9 +9,10 @@ using Volo.Blogging.Users; namespace Volo.Blogging.Posts { [Serializable] - public class PostCacheItem + public class PostCacheItem : ICreationAuditedObject { public Guid Id { get; set; } + public Guid BlogId { get; set; } public string Title { get; set; } @@ -32,8 +33,9 @@ namespace Volo.Blogging.Posts public BlogUser Writer { get; set; } public List Tags { get; set; } - public Guid? CreatorId { get; set; } + public Guid? CreatorId { get; set; } + public DateTime CreationTime { get; set; } } } \ No newline at end of file From 2a147a1832a20ef2d58e907212aa50db2c4ab7fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 16:11:35 +0300 Subject: [PATCH 081/125] Add warning for iis express --- docs/en/Tutorials/Todo/Index.md | 6 +++++- .../Tutorials/Todo/run-without-iisexpress.png | Bin 0 -> 23261 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 docs/en/Tutorials/Todo/run-without-iisexpress.png diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 925527c507..c927d5c925 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -667,7 +667,11 @@ If you run the `TodoApp.HttpApi.Host` application, you can see the Todo API: ABP provides a handy feature to automatically create client-side services to easily consume HTTP APIs provided by the server. -Ensure that the `TodoApp.HttpApi.Host` project is running, open a command-line terminal in the `angular` folder and type the following command: +You first need to run the `TodoApp.HttpApi.Host` project since the proxy generator reads API definitions from the server application. However, there is a problem with IIS Express; it doesn't allow to connect to the application from another process. If you are using Visual Studio, select the `TodoApp.HttpApi.Host` instead of IIS Express in the run button drop down menu, as shown in the figure below: + +![run-without-iisexpress](run-without-iisexpress.png) + +Once you run the `TodoApp.HttpApi.Host` project, open a command-line terminal in the `angular` folder and type the following command: ````bash abp generate-proxy diff --git a/docs/en/Tutorials/Todo/run-without-iisexpress.png b/docs/en/Tutorials/Todo/run-without-iisexpress.png new file mode 100644 index 0000000000000000000000000000000000000000..41898e6c003090de4dcb8ac001bf03fdacee2c17 GIT binary patch literal 23261 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 A+5i9m literal 0 HcmV?d00001 From bb21073928aff999402cbd8e87831ca66c8d85b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 16:14:35 +0300 Subject: [PATCH 082/125] Update Index.md --- docs/en/Tutorials/Todo/Index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index c927d5c925..acccd71ea2 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -667,7 +667,9 @@ If you run the `TodoApp.HttpApi.Host` application, you can see the Todo API: ABP provides a handy feature to automatically create client-side services to easily consume HTTP APIs provided by the server. -You first need to run the `TodoApp.HttpApi.Host` project since the proxy generator reads API definitions from the server application. However, there is a problem with IIS Express; it doesn't allow to connect to the application from another process. If you are using Visual Studio, select the `TodoApp.HttpApi.Host` instead of IIS Express in the run button drop down menu, as shown in the figure below: +You first need to run the `TodoApp.HttpApi.Host` project since the proxy generator reads API definitions from the server application. + +> **Warning**: There is a problem with IIS Express; it doesn't allow to connect to the application from another process. If you are using Visual Studio, select the `TodoApp.HttpApi.Host` instead of IIS Express in the run button drop-down list, as shown in the figure below: ![run-without-iisexpress](run-without-iisexpress.png) From ba007b3672c94cf3aec32c0c46c87318052c3c8f Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 7 Apr 2021 16:24:46 +0300 Subject: [PATCH 083/125] rename home.component.css as home.component.scss --- docs/en/Tutorials/Todo/Index.md | 6 +++--- .../app/home/{home.component.css => home.component.scss} | 0 templates/app/angular/src/app/home/home.component.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename templates/app/angular/src/app/home/{home.component.css => home.component.scss} (100%) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index c927d5c925..7a41f8523c 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -701,7 +701,7 @@ import { TodoItemDto, TodoService } from '@proxy'; @Component({ selector: 'app-home', templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] + styleUrls: ['./home.component.scss'] }) export class HomeComponent implements OnInit { @@ -772,9 +772,9 @@ Open the `/angular/src/app/home/home.component.html` file and replace its conten
    ```` -### home.component.css +### home.component.scss -As the final touch, open the `/angular/src/app/home/home.component.css` file in the `Pages` and replace with the following content: +As the final touch, open the `/angular/src/app/home/home.component.scss` file in the `Pages` and replace with the following content: ````css #TodoList{ diff --git a/templates/app/angular/src/app/home/home.component.css b/templates/app/angular/src/app/home/home.component.scss similarity index 100% rename from templates/app/angular/src/app/home/home.component.css rename to templates/app/angular/src/app/home/home.component.scss diff --git a/templates/app/angular/src/app/home/home.component.ts b/templates/app/angular/src/app/home/home.component.ts index cd0aca4034..5e19367b34 100644 --- a/templates/app/angular/src/app/home/home.component.ts +++ b/templates/app/angular/src/app/home/home.component.ts @@ -5,7 +5,7 @@ import { OAuthService } from 'angular-oauth2-oidc'; @Component({ selector: 'app-home', templateUrl: './home.component.html', - styleUrls: ['./home.component.css'], + styleUrls: ['./home.component.scss'], }) export class HomeComponent { get hasLoggedIn(): boolean { From 4a69feed2ecf1f27ea06ea3a7d5c3ff4f844ee4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 16:38:22 +0300 Subject: [PATCH 084/125] Add iis express warning --- docs/en/Tutorials/Part-2.md | 6 +++++- .../images/vs-run-without-iisexpress.png | Bin 0 -> 13760 bytes 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 docs/en/Tutorials/images/vs-run-without-iisexpress.png diff --git a/docs/en/Tutorials/Part-2.md b/docs/en/Tutorials/Part-2.md index 17bc98c538..5df5dae343 100644 --- a/docs/en/Tutorials/Part-2.md +++ b/docs/en/Tutorials/Part-2.md @@ -447,7 +447,11 @@ For more information, see the [RoutesService document](../UI/Angular/Modifying-t [ABP CLI](../CLI.md) provides `generate-proxy` command that generates client proxies for your HTTP APIs to make easy to consume your HTTP APIs from the client side. Before running `generate-proxy` command, your host must be up and running. -Run the following command in the `angular` folder: +> **Warning**: There is a problem with IIS Express; it doesn't allow to connect to the application from another process. If you are using Visual Studio, select the `Acme.BookStore.HttpApi.Host` instead of IIS Express in the run button drop-down list, as shown in the figure below: + +![vs-run-without-iisexpress](images/vs-run-without-iisexpress.png) + +Once the host application is running, execute the following command in the `angular` folder: ```bash abp generate-proxy diff --git a/docs/en/Tutorials/images/vs-run-without-iisexpress.png b/docs/en/Tutorials/images/vs-run-without-iisexpress.png new file mode 100644 index 0000000000000000000000000000000000000000..03c30e2b481c95d102f6aaf1cdbd5348d7d64b3d GIT binary patch literal 13760 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 Date: Wed, 7 Apr 2021 16:42:28 +0300 Subject: [PATCH 085/125] Remove unnecessary property --- .../Volo/Blogging/BloggingApplicationAutoMapperProfile.cs | 3 ++- .../Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs index b2113926ad..3572e00113 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/BloggingApplicationAutoMapperProfile.cs @@ -20,10 +20,11 @@ namespace Volo.Blogging CreateMap().Ignore(x=>x.Writer).Ignore(x=>x.CommentCount).Ignore(x=>x.Tags); CreateMap().Ignore(x => x.Writer); CreateMap(); - CreateMap().Ignore(x=>x.Writer).Ignore(x=>x.CommentCount).Ignore(x=>x.Tags); + CreateMap().Ignore(x=>x.CommentCount).Ignore(x=>x.Tags); CreateMap() .IgnoreModificationAuditedObjectProperties() .IgnoreDeletionAuditedObjectProperties() + .Ignore(x=>x.Writer) .Ignore(x => x.CommentCount) .Ignore(x => x.Tags); } diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs index 450feec9dd..d65b64ba43 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheItem.cs @@ -29,9 +29,6 @@ namespace Volo.Blogging.Posts public int CommentCount { get; set; } - [CanBeNull] - public BlogUser Writer { get; set; } - public List Tags { get; set; } public Guid? CreatorId { get; set; } From 713c9c536bf2c63efd1258ec5dc670ec8bf48804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 16:50:10 +0300 Subject: [PATCH 086/125] Update Index.md --- docs/en/Tutorials/Todo/Index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Tutorials/Todo/Index.md b/docs/en/Tutorials/Todo/Index.md index 1b201277b9..5bbf4c8eaf 100644 --- a/docs/en/Tutorials/Todo/Index.md +++ b/docs/en/Tutorials/Todo/Index.md @@ -776,7 +776,7 @@ Open the `/angular/src/app/home/home.component.html` file and replace its conten ### home.component.scss -As the final touch, open the `/angular/src/app/home/home.component.scss` file in the `Pages` and replace with the following content: +As the final touch, open the `/angular/src/app/home/home.component.scss` file and replace its content with the following code block: ````css #TodoList{ From 48fb9d562e4e48f51f9c33139e7003dbee9807ee Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Wed, 7 Apr 2021 17:00:21 +0300 Subject: [PATCH 087/125] Update NewCommand.cs --- .../src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index 0617ef26ff..83cce36fce 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -89,7 +89,7 @@ namespace Volo.Abp.Cli.Commands var preview = commandLineArgs.Options.ContainsKey(Options.Preview.Long); if (preview) { - Logger.LogInformation("Preview: yes if any exist for next version."); + Logger.LogInformation("Preview: yes"); } var databaseProvider = GetDatabaseProvider(commandLineArgs); From a744fa45371f1e8b6a232b9a3b3e397ab785f56a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 17:07:16 +0300 Subject: [PATCH 088/125] Add login button to the home page --- .../Controllers/AccountController.cs | 2 +- .../Pages/Index.razor | 5 +++++ .../Pages/Index.razor | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Controllers/AccountController.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Controllers/AccountController.cs index 29fa140e4d..44d63fa0f2 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Controllers/AccountController.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Controllers/AccountController.cs @@ -1,6 +1,6 @@ using Volo.Abp.AspNetCore.Mvc.Authentication; -namespace MyCompanyName.MyProjectName.Web.Controllers +namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered.Controllers { public class AccountController : ChallengeAccountController { diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor index c83e436a5d..bdc59498f0 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/Index.razor @@ -12,6 +12,11 @@

    Welcome to the Application

    @L["LongWelcomeMessage"]

    + + @if (!CurrentUser.IsAuthenticated) + { + @L["Login"] + }
    diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor index c83e436a5d..bdc59498f0 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/Index.razor @@ -12,6 +12,11 @@

    Welcome to the Application

    @L["LongWelcomeMessage"]

    + + @if (!CurrentUser.IsAuthenticated) + { + @L["Login"] + }
    From 82aafd847c22d54c8ba82960db3611fa67656847 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 7 Apr 2021 17:29:31 +0300 Subject: [PATCH 089/125] Update AppTemplateBase.cs --- .../Templates/App/AppTemplateBase.cs | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index ea5822568b..52a06f7117 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -184,19 +184,15 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App var adminCmsPackageInstalledProjectsPackageJsonFiles = new List { "/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json", - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json" + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json", + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json", + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json" }; var publicCmsPackageInstalledProjectsPackageJsonFiles = new List { "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Public/package.json", - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Public.Host/package.json", - }; - - var unifiedCmsPackageInstalledProjectsPackageJsonFiles = new List - { - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json", - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json" + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Public.Host/package.json" }; foreach (var packageJsonFile in adminCmsPackageInstalledProjectsPackageJsonFiles) @@ -208,11 +204,6 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFile, "@volo/cms-kit-pro.public")); } - - foreach (var packageJsonFile in unifiedCmsPackageInstalledProjectsPackageJsonFiles) - { - steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFile, "@volo/cms-kit-pro")); - } } private bool IsCmsKitSupportedForTargetVersion(ProjectBuildContext context) From 0040569fb2f501281af46ef33de7eeb3d8f220f2 Mon Sep 17 00:00:00 2001 From: EngincanV Date: Wed, 7 Apr 2021 17:54:58 +0300 Subject: [PATCH 090/125] Blogging: Publish PostChangedEvent for cache invalidation --- .../Volo/Blogging/Posts/PostAppService.cs | 20 +++++++++++++++++-- .../Blogging/Posts/PostCacheInvalidator.cs | 8 +++----- .../Volo/Blogging/Posts/PostChangedEvent.cs | 9 +++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostChangedEvent.cs diff --git a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs index d804e7a004..7b42d25f84 100644 --- a/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs +++ b/modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Caching.Distributed; using Volo.Abp.Caching; +using Volo.Abp.EventBus.Local; using Volo.Blogging.Comments; using Volo.Blogging.Tagging; using Volo.Blogging.Tagging.Dtos; @@ -21,13 +22,15 @@ namespace Volo.Blogging.Posts private readonly ITagRepository _tagRepository; private readonly ICommentRepository _commentRepository; private readonly IDistributedCache> _postsCache; + private readonly ILocalEventBus _localEventBus; public PostAppService( IPostRepository postRepository, ITagRepository tagRepository, ICommentRepository commentRepository, IBlogUserLookupService userLookupService, - IDistributedCache> postsCache + IDistributedCache> postsCache, + ILocalEventBus localEventBus ) { UserLookupService = userLookupService; @@ -35,6 +38,7 @@ namespace Volo.Blogging.Posts _tagRepository = tagRepository; _commentRepository = commentRepository; _postsCache = postsCache; + _localEventBus = localEventBus; } public async Task> GetListByBlogIdAndTagName(Guid id, string tagName) @@ -84,7 +88,7 @@ namespace Volo.Blogging.Posts async () => await GetTimeOrderedPostsAsync(blogId), () => new DistributedCacheEntryOptions { - AbsoluteExpiration = DateTimeOffset.Now.AddHours(6) + AbsoluteExpiration = DateTimeOffset.Now.AddHours(1) } ); @@ -155,6 +159,7 @@ namespace Volo.Blogging.Posts await _commentRepository.DeleteOfPost(id); await _postRepository.DeleteAsync(id); + await PublishPostChangedEventAsync(post.BlogId); } [Authorize(BloggingPermissions.Posts.Update)] @@ -176,6 +181,7 @@ namespace Volo.Blogging.Posts var tagList = SplitTags(input.Tags); await SaveTags(tagList, post); + await PublishPostChangedEventAsync(post.BlogId); return ObjectMapper.Map(post); } @@ -201,6 +207,7 @@ namespace Volo.Blogging.Posts var tagList = SplitTags(input.Tags); await SaveTags(tagList, post); + await PublishPostChangedEventAsync(post.BlogId); return ObjectMapper.Map(post); } @@ -297,5 +304,14 @@ namespace Volo.Blogging.Posts return Task.FromResult(filteredPostDtos); } + + private async Task PublishPostChangedEventAsync(Guid blogId) + { + await _localEventBus.PublishAsync( + new PostChangedEvent + { + BlogId = blogId + }); + } } } diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheInvalidator.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheInvalidator.cs index abbfcd8d88..e18e6de23b 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheInvalidator.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostCacheInvalidator.cs @@ -2,12 +2,11 @@ using System.Threading.Tasks; using Volo.Abp.Caching; using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Entities.Events; using Volo.Abp.EventBus; namespace Volo.Blogging.Posts { - public class PostCacheInvalidator : ILocalEventHandler>, ITransientDependency + public class PostCacheInvalidator : ILocalEventHandler, ITransientDependency { protected IDistributedCache> Cache { get; } @@ -16,10 +15,9 @@ namespace Volo.Blogging.Posts Cache = cache; } - public virtual async Task HandleEventAsync(EntityChangedEventData eventData) + public virtual async Task HandleEventAsync(PostChangedEvent post) { - var cacheKey = eventData.Entity.BlogId.ToString(); - await Cache.RemoveAsync(cacheKey); + await Cache.RemoveAsync(post.BlogId.ToString()); } } } \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostChangedEvent.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostChangedEvent.cs new file mode 100644 index 0000000000..c32ed92224 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Posts/PostChangedEvent.cs @@ -0,0 +1,9 @@ +using System; + +namespace Volo.Blogging.Posts +{ + public class PostChangedEvent + { + public Guid BlogId { get; set; } + } +} \ No newline at end of file From de79957034dbc4c751eae3fb93f571f35ddfe9bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Apr 2021 18:10:53 +0300 Subject: [PATCH 091/125] Removed duplication It is already done in AbpAspNetCoreComponentsWebModule --- .../AbpAspNetCoreComponentsWebAssemblyModule.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs index 2a4abea950..170bd9c327 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs @@ -1,8 +1,5 @@ -using Microsoft.AspNetCore.Components; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp.AspNetCore.Components.DependencyInjection; using Volo.Abp.AspNetCore.Components.Web; using Volo.Abp.AspNetCore.Components.Web.ExceptionHandling; using Volo.Abp.AspNetCore.Mvc.Client; @@ -32,8 +29,6 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly public override void ConfigureServices(ServiceConfigurationContext context) { - context.Services.Replace(ServiceDescriptor.Transient()); - context.Services .GetHostBuilder().Logging .AddProvider(new AbpExceptionHandlingLoggerProvider(context.Services)); From 8a57d6344b5f2e668393f3d9a126ec2711533fa4 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 7 Apr 2021 18:21:49 +0300 Subject: [PATCH 092/125] Docs - Add Global Features docs --- ...es-between-features-and-global-features.md | 9 ++ docs/en/Global-Features.md | 139 +++++++++++++++++- 2 files changed, 146 insertions(+), 2 deletions(-) create mode 100644 docs/en/Differences-between-features-and-global-features.md diff --git a/docs/en/Differences-between-features-and-global-features.md b/docs/en/Differences-between-features-and-global-features.md new file mode 100644 index 0000000000..7058696341 --- /dev/null +++ b/docs/en/Differences-between-features-and-global-features.md @@ -0,0 +1,9 @@ +# Differences between Features & Global Features + +[Features](Features.md) & [Global Features](Global-Features.md) are totally different systems. + +- Features can be switched at runtime but global features can't be. +- Features can be managed by users & system administrators while application running but Global Features system is for Developers and can be managed at development time. +- Features can be used as Feature-Flag but Global Features can't. +- Features loads all disabled features to application and just hide them but Global Features system doesn't load disabled features and even prevents table creating in database. + diff --git a/docs/en/Global-Features.md b/docs/en/Global-Features.md index a0a593288c..f9504a06b8 100644 --- a/docs/en/Global-Features.md +++ b/docs/en/Global-Features.md @@ -1,3 +1,138 @@ -# Global Features +The purpose of the Global Feature System is to **add a module to your application but disable the features you don't want to use** (or enable only the ones you need). Notice that the features are not determined on runtime, you must select the features **on development time**. Because it will not create database tables, APIs and other stuff for unused features, which is not possible to change then on the runtime. -TODO (see [#5061](https://github.com/abpframework/abp/issues/5061) until this is documented). \ No newline at end of file +## Installation + +Global Feature system is pre-installed in abp startup templates. No need any installation manually. + +## Usage + +### Enable/Disable Existing Features + +```csharp +//Enable all the CMS Kit Features +GlobalFeatureManager.Instance.Modules.CmsKit().EnableAll(); +//Disable all the CMS Kit Features (while it is already disabled by default) +GlobalFeatureManager.Instance.Modules.CmsKit().DisableAll(); +//Enable a feature +GlobalFeatureManager.Instance.Modules.CmsKit().Comments.Enable(); +GlobalFeatureManager.Instance.Modules.CmsKit().Enable(); //Alternative: use the feature class +GlobalFeatureManager.Instance.Modules.CmsKit().Enable(CommentsFeature.Name); //Alternative: use the feature name +GlobalFeatureManager.Instance.Modules.CmsKit().Enable("CmsKit.Comments"); //Alternative: Use magic string +``` + + + +### Check if a feature is enabled + +```csharp +GlobalFeatureManager.Instance.IsEnabled(); +GlobalFeatureManager.Instance.IsEnabled(CommentsFeature.Name); //Alternative +``` + +Both methods return `bool`. + +Beside the manual check, there is `[RequiresGlobalFeature]` attribute to check it declaratively for a controller or page. ABP returns 404 if the related feature was disabled. + +```csharp +[RequiresGlobalFeature(typeof(CommentsFeature))] +public class CommentController : AbpController +{ + // ... +} +``` + + + +## Implementation + +Global Feature system aims module based feature management . A module has to have own Global Features itself. + +### Define a Global Feature + +A feature class is something like that: + +```csharp +[GlobalFeatureName(Name)] +public class FooBarFeature : GlobalFeature +{ + public const string Name = "Foo.Bar"; + internal FooBarFeature( + [NotNull] GlobalFooFeatures features + ) : base(features) + { + } +} +``` + +### Define Global Module Features + +All global features of a module should be provided by a single **GlobalModuleFeatures** class. + +```csharp +public class GlobalFooFeatures : GlobalModuleFeatures +{ + public const string ModuleName = "Foo"; + + public FooBarFeature FooBar => GetFeature(); + + public GlobalFooFeatures([NotNull] GlobalFeatureManager featureManager) + : base(featureManager) + { + } +} +``` + + + +### Define Global Module Features Dictionary Extensions + +An extension method is better to configure global fetures easily. + +```csharp +public static class GlobalModuleFeaturesDictionaryFooExtensions +{ + public static GlobalFooFeatures Foo( + [NotNull] this GlobalModuleFeaturesDictionary modules) + { + Check.NotNull(modules, nameof(modules)); + return modules + .GetOrAdd( + GlobalFooFeatures.ModuleName, + _ => new GlobalFooFeatures(modules.FeatureManager) + ) + as GlobalFooFeatures; + } +} +``` + +Accessing module & module features look like: + +```csharp +GlobalFeatureManager.Instance.Modules.Foo(); +GlobalFeatureManager.Instance.Modules.Foo().FooBar; +GlobalFeatureManager.Instance.Modules.Foo().FooBar.Enable(); +GlobalFeatureManager.Instance.Modules.Foo().Enable(); +``` + + + +## When to configure Global Features? + +Global Features have to be configured before application startup. So best place to configuring it is `PreConfigureServices` with **OneTimeRunner**. + +```csharp +private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); +public override void PreConfigureServices(ServiceConfigurationContext context) +{ + OneTimeRunner.Run(() => + { + GlobalFeatureManager.Instance.Modules.Foo().EnableAll(); + }); +} +``` + + + +## See also + +- [Differences Between Features & Global Features](Differences-between-features-and-global-features.md) \ No newline at end of file From e670a87ae3526fd576e243353daed236d28694dd Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 7 Apr 2021 18:42:19 +0300 Subject: [PATCH 093/125] CmsKit - Update Editor heights for Pages & BlogPosts --- .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js | 2 +- .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js | 2 +- .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js | 2 +- .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js index b8ba58a844..3dc5e66a0e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js @@ -231,7 +231,7 @@ useCommandShortcut: true, initialValue: initialValue, previewStyle: 'tab', - height: "95vh", + height: "65vh", minHeight: "25em", initialEditType: 'markdown', language: $editorContainer.data("language"), diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js index e2adb4e3e0..d515f8630c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js @@ -178,7 +178,7 @@ useCommandShortcut: true, initialValue: initialValue, previewStyle: 'tab', - height: "95vh", + height: "65vh", minHeight: "25em", initialEditType: 'markdown', language: $editorContainer.data("language"), diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js index ad238c5732..0e5ac414a0 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js @@ -86,7 +86,7 @@ useCommandShortcut: true, initialValue: initialValue, previewStyle: 'tab', - height: "95vh", + height: "65vh", minHeight: "25em", initialEditType: 'markdown', language: $editorContainer.data("language"), diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js index 69b1960f87..dde3a3f8af 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js @@ -61,7 +61,7 @@ useCommandShortcut: true, initialValue: initialValue, previewStyle: 'tab', - height: "95vh", + height: "65vh", minHeight: "25em", initialEditType: 'markdown', language: $editorContainer.data("language"), From df557a3390205740851d0f7df50139f44962a4ed Mon Sep 17 00:00:00 2001 From: Ahmet Date: Wed, 7 Apr 2021 18:49:58 +0300 Subject: [PATCH 094/125] Prepare SMS-Sending documentation --- docs/en/SMS-Sending.md | 98 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 2 deletions(-) diff --git a/docs/en/SMS-Sending.md b/docs/en/SMS-Sending.md index 75069aacbe..8d5cd8da1e 100644 --- a/docs/en/SMS-Sending.md +++ b/docs/en/SMS-Sending.md @@ -1,3 +1,97 @@ -# Emailing +# SMS Sending -TODO! \ No newline at end of file +The ABP Framework provides an abstraction to sending SMS. Having such an abstraction has some benefits; + +- You can **easily integrate** to your favorite SMS sender with a few lines of configuration. +- You can then **easily change** your SMS sender without changing your application code. +- If you want to create **reusable application modules**, you don't need to make assumption about how the SMS are sent. + +## Installation + +It is suggested to use the [ABP CLI](CLI.md) to install this package. + +### Using the ABP CLI + +Open a command line window in the folder of the project (.csproj file) and type the following command: + +```bash +abp add-package Volo.Abp.Sms +``` + +### Manual Installation + +If you want to manually install; + +1. Add the [Volo.Abp.Sms](https://www.nuget.org/packages/Volo.Abp.Sms) NuGet package to your project: + +``` +Install-Package Volo.Abp.Sms +``` + +2. Add the `AbpSmsModule` to the dependency list of your module: + +```csharp +[DependsOn( + //...other dependencies + typeof(AbpSmsModule) //Add the new module dependency + )] +public class YourModule : AbpModule +{ +} +``` + +## Sending SMS + +[Inject](Dependency-Injection.md) the `ISmsSender` into any service and use the `SendAsync` method to send a SMS. + +**Example** + +```csharp +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Sms; + +namespace MyProject +{ + public class MyService : ITransientDependency + { + private readonly ISmsSender _smsSender; + + public MyService(ISmsSender smsSender) + { + _smsSender = smsSender; + } + + public async Task DoItAsync() + { + await _smsSender.SendAsync( + "+012345678901", // target phone number + "This is test sms..." // SMS text + ); + } + } +} +``` + +The given `SendAsync` method in the example is an extension method to send sms with primitive paremeters, it basicly creates `SmsMessage` object and pass it. You can also use the default `SendAsync` method which requires `SmsMessage` object. + +> `IEmailSender` is the suggested way to send emails, since it makes your code provider independent. + +## SmsMessage + +In addition to use primitive parameters, you can pass a `SmsMessage` object to the `SendAsync` method. + +- `PhoneNumber` (string): Target phone number to send sms. +- `Text` (string): SMS Text +- `Properties` (Dictionary): string key-value pair to handle different usages by senders. + +## NullSmsSender + +`NullSmsSender` is a built-in class that implements the `ISmsSender`, but writes sms contents to the [standard log system](Logging.md), rathen than actually sending the SMSs. + +This class can be useful especially in development time where you generally don't want to send real sms. +`NullSmsSender` will try to register itself automatically if there is no other registrated sms sender. + +## See also + +- [Twilio SMS Sender](https://docs.abp.io/en/commercial/latest/modules/twilio-sms) with [ABP Commercial](https://commercial.abp.io/). From e7e8f856d52c8823acb11be703de0ff361c4ec01 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 7 Apr 2021 19:10:33 +0300 Subject: [PATCH 095/125] CmsKit - Update Script & Style inputs height --- .../Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml | 4 ++-- .../Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml index 8f06d1d32a..84208ee35a 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml @@ -53,11 +53,11 @@ - + - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml index 608b4c089a..bfb8bbf193 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml @@ -57,11 +57,11 @@ - + - + From daf70c52894115c79b123cc1b1ea47026805c135 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 8 Apr 2021 11:41:00 +0800 Subject: [PATCH 096/125] Add exception to audit log if it not record. --- .../AspNetCore/Auditing/AbpAuditingMiddleware.cs | 11 +++++++++-- .../Mvc/Auditing/AuditTestController.cs | 8 ++++++++ .../Mvc/Auditing/AuditTestController_Tests.cs | 15 +++++++++++++++ .../Mvc/Auditing/AuditTestPage.cshtml.cs | 5 +++++ .../Mvc/Auditing/AuditTestPage_Tests.cs | 15 +++++++++++++++ 5 files changed, 52 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs index 99c9ccb2d5..72e5d36b3f 100644 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs +++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs @@ -45,19 +45,26 @@ namespace Volo.Abp.AspNetCore.Auditing var hasError = false; using (var saveHandle = _auditingManager.BeginScope()) { + Debug.Assert(_auditingManager.Current != null); + try { await next(context); - Debug.Assert(_auditingManager.Current != null); if (_auditingManager.Current.Log.Exceptions.Any()) { hasError = true; } } - catch (Exception) + catch (Exception ex) { hasError = true; + + if (!_auditingManager.Current.Log.Exceptions.Contains(ex)) + { + _auditingManager.Current.Log.Exceptions.Add(ex); + } + throw; } finally diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController.cs index 94e57403f5..e67bbcb1ae 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController.cs @@ -31,10 +31,18 @@ namespace Volo.Abp.AspNetCore.Mvc.Auditing { throw new UserFriendlyException("Exception occurred!"); } + [Route("audit-fail-object")] public object AuditFailForGetRequestsReturningObject() { throw new UserFriendlyException("Exception occurred!"); } + + [HttpGet] + [Route("audit-activate-failed")] + public IActionResult AuditActivateFailed([FromServices] AbpAuditingOptions options) + { + return Ok(); + } } } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs index 9d3da08095..b76e71de52 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs @@ -74,5 +74,20 @@ namespace Volo.Abp.AspNetCore.Mvc.Auditing await _auditingStore.Received().SaveAsync(Arg.Any()); } + + [Fact] + public async Task Should_Trigger_Middleware_And_AuditLog_Exception_When_Activate_Controller_Failed() + { + _options.IsEnabledForGetRequests = true; + _options.AlwaysLogOnException = true; + + try + { + await GetResponseAsync("api/audit-test/audit-activate-failed", System.Net.HttpStatusCode.InternalServerError); + } + catch { } + + await _auditingStore.Received().SaveAsync(Arg.Is(x => x.Exceptions.Any())); + } } } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage.cshtml.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage.cshtml.cs index 7dc1967a2e..10e28a4bb1 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage.cshtml.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage.cshtml.cs @@ -34,5 +34,10 @@ namespace Volo.Abp.AspNetCore.Mvc.Auditing { throw new UserFriendlyException("Exception occurred!"); } + + public IActionResult OnGetAuditActivateFailed([FromServices] AbpAuditingOptions options) + { + return new OkResult(); + } } } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage_Tests.cs index 311abe5aa5..24d7a58dd3 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestPage_Tests.cs @@ -73,5 +73,20 @@ namespace Volo.Abp.AspNetCore.Mvc.Auditing await _auditingStore.Received().SaveAsync(Arg.Any()); } + + [Fact] + public async Task Should_Trigger_Middleware_And_AuditLog_Exception_When_Activate_Page_Failed() + { + _options.IsEnabledForGetRequests = true; + _options.AlwaysLogOnException = true; + + try + { + await GetResponseAsync("/Auditing/AuditTestPage?handler=AuditActivateFailed", System.Net.HttpStatusCode.InternalServerError); + } + catch { } + + await _auditingStore.Received().SaveAsync(Arg.Is(x => x.Exceptions.Any())); + } } } From 131b116426c2e9e3bd158e404c6437f9b3398ce3 Mon Sep 17 00:00:00 2001 From: Mladen Macanovic Date: Thu, 8 Apr 2021 09:27:20 +0200 Subject: [PATCH 097/125] Update Blazorise 0.9.3.4 --- .../src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj | 8 ++++---- ...yCompanyName.MyProjectName.Blazor.Server.Tiered.csproj | 4 ++-- .../MyCompanyName.MyProjectName.Blazor.Server.csproj | 4 ++-- .../MyCompanyName.MyProjectName.Blazor.csproj | 4 ++-- .../MyCompanyName.MyProjectName.Blazor.Host.csproj | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj b/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj index a80679cdca..e042047563 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj +++ b/framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj @@ -14,10 +14,10 @@ - - - - + + + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj index b691486fc0..cd4877cbd4 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj @@ -12,8 +12,8 @@ - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj index f764a3f82f..b514d70d25 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj @@ -12,8 +12,8 @@ - - + + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj index 32edf49026..d4898cb678 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj index 1235886462..c71d10e65a 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj @@ -8,8 +8,8 @@ - - + + From e6c88b6eafb6eb9f566dfd88323c422d692ccafd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Thu, 8 Apr 2021 10:28:06 +0300 Subject: [PATCH 098/125] Update docs/en/SMS-Sending.md Co-authored-by: Qingxiao Ren --- docs/en/SMS-Sending.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/SMS-Sending.md b/docs/en/SMS-Sending.md index 8d5cd8da1e..9ee5b06d00 100644 --- a/docs/en/SMS-Sending.md +++ b/docs/en/SMS-Sending.md @@ -75,7 +75,7 @@ namespace MyProject The given `SendAsync` method in the example is an extension method to send sms with primitive paremeters, it basicly creates `SmsMessage` object and pass it. You can also use the default `SendAsync` method which requires `SmsMessage` object. -> `IEmailSender` is the suggested way to send emails, since it makes your code provider independent. +> `ISmsSender` is the suggested way to send SMS, since it makes your code provider independent. ## SmsMessage From 861316a2f9cef431bc2044bef805ef640e9a9927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 8 Apr 2021 10:52:31 +0300 Subject: [PATCH 099/125] Update GlobalFeatureManager.cs --- .../Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs index 19a48a9da3..8ba07554dc 100644 --- a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs +++ b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using JetBrains.Annotations; From d5a263aaebf90f57a625f9e323c50a43a97dd4cf Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Thu, 8 Apr 2021 16:02:36 +0800 Subject: [PATCH 100/125] Upgrade mongo2go to 3.1.1 --- Directory.Build.props | 2 +- .../MyCompanyName.MyProjectName.MongoDB.Tests.csproj | 2 +- .../MyCompanyName.MyProjectName.MongoDB.Tests.csproj | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 6dd78ec400..52d15cad96 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -23,7 +23,7 @@ 2.4.3 - 3.0.0 + 3.1.1 \ No newline at end of file diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index 333f9dd2ea..bbdf89f9ca 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj index 069545e840..6efa2c13ec 100644 --- a/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj +++ b/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests/MyCompanyName.MyProjectName.MongoDB.Tests.csproj @@ -9,7 +9,7 @@ - + From 5e328bb9d2020d02157a316b5b878492c220bff1 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Thu, 8 Apr 2021 11:07:27 +0300 Subject: [PATCH 101/125] Update SMS-Sending.md --- docs/en/SMS-Sending.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/en/SMS-Sending.md b/docs/en/SMS-Sending.md index 9ee5b06d00..7662a8a465 100644 --- a/docs/en/SMS-Sending.md +++ b/docs/en/SMS-Sending.md @@ -92,6 +92,30 @@ In addition to use primitive parameters, you can pass a `SmsMessage` object to t This class can be useful especially in development time where you generally don't want to send real sms. `NullSmsSender` will try to register itself automatically if there is no other registrated sms sender. +## Creating a custom SMS sender + +You can easily create your custom provider by creating a class that implements the `ISmsSender` interface. + +```csharp +using System.IO; +using System.Threading.Tasks; +using Volo.Abp.Sms; +using Volo.Abp.DependencyInjection; + +namespace AbpDemo +{ + public class MyCustomSmsSender : ISmsSender, ITransientDependency + { + public async Task SendAsync(SmsMessage smsMessage) + { + // Send sms + } + } +} +``` + +That's all. Now you can send SMS by using `MyCustomSmsSender` in your application. + ## See also - [Twilio SMS Sender](https://docs.abp.io/en/commercial/latest/modules/twilio-sms) with [ABP Commercial](https://commercial.abp.io/). From 6d78aee13357d9a0eb5dcb134a0cfccde755ac3b Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 8 Apr 2021 11:20:37 +0300 Subject: [PATCH 102/125] CmsKit - Update ToolbarItem resources --- .../src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs | 8 ++++---- .../Volo/CmsKit/Localization/Resources/en.json | 6 ++++-- .../Volo/CmsKit/Localization/Resources/tr.json | 5 ++++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs index ed162cc360..c7f7dbf524 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs @@ -92,7 +92,7 @@ namespace Volo.CmsKit.Admin.Web toolbar => { toolbar.AddButton( - LocalizableString.Create("New"), + LocalizableString.Create("NewTag"), icon: "plus", name: "NewButton", requiredPolicyName: CmsKitAdminPermissions.Tags.Create @@ -104,7 +104,7 @@ namespace Volo.CmsKit.Admin.Web toolbar => { toolbar.AddButton( - LocalizableString.Create("New"), + LocalizableString.Create("NewPage"), icon: "plus", name: "CreatePage", requiredPolicyName: CmsKitAdminPermissions.Pages.Create @@ -115,7 +115,7 @@ namespace Volo.CmsKit.Admin.Web toolbar => { toolbar.AddButton( - LocalizableString.Create("New"), + LocalizableString.Create("NewBlog"), icon: "plus", name: "CreateBlog", id: "CreateBlog", @@ -127,7 +127,7 @@ namespace Volo.CmsKit.Admin.Web toolbar => { toolbar.AddButton( - LocalizableString.Create("New"), + LocalizableString.Create("NewBlogPost"), icon: "plus", name: "CreateBlogPost", id: "CreateBlogPost", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json index 32900b41a3..900a50b06c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json @@ -52,8 +52,10 @@ "Menu:CMS": "CMS", "Message": "Message", "MessageDeletionConfirmationMessage": "This comment will be deleted completely.", - "Name": "Name", - "New": "New", + "NewPage": "New Page", + "NewBlog": "New Blog", + "NewBlogPost": "New Blog Post", + "NewTag": "New Tag", "OK": "OK", "PageDeletionConfirmationMessage": "Are you sure to delete this page?", "PageSlugInformation": "Slug is used on url. Your url will be '/pages/{{slug}}'.", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json index 17fd56f0ec..6ddc94a987 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json @@ -54,7 +54,10 @@ "Message": "Mesaj", "MessageDeletionConfirmationMessage": "Bu yorum tamamen silinecektir", "Name": "Ad", - "New": "Yeni", + "NewPage": "Yeni Sayfa", + "NewBlog": "Yeni Blog", + "NewBlogPost": "Yeni Blog Yazısı", + "NewTag": "Yeni Etiket", "OK": "Tamam", "PageDeletionConfirmationMessage": "Bu sayfayı silmek istediğinize emin misiniz?", "PageSlugInformation": "Etiket URL'de kullanılır. Url şöyle görünür: '/pages/{{slug}}'.", From 142bd01b6f28e5c7a898531410f93d7196caae0f Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 8 Apr 2021 11:44:33 +0300 Subject: [PATCH 103/125] CmsKit - Move editor styles to style files --- .../Pages/CmsKit/BlogPosts/Create.cshtml | 3 ++- .../Pages/CmsKit/BlogPosts/Update.cshtml | 3 ++- .../Pages/CmsKit/BlogPosts/create.css | 3 +++ .../Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js | 2 +- .../Pages/CmsKit/BlogPosts/update.css | 3 +++ .../Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js | 2 +- .../Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml | 7 ++++--- .../Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml | 7 ++++--- .../Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.css | 3 +++ .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js | 2 +- .../Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.css | 3 +++ .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js | 2 +- 12 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.css create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.css create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.css create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.css diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml index 6bce551aee..e730d549d3 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml @@ -33,6 +33,7 @@ @section styles { + } @@ -61,7 +62,7 @@ -
    diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml index 6102eeb9d7..4d5f5a6ee3 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml @@ -33,6 +33,7 @@ @section styles { + } @@ -59,7 +60,7 @@ -
    diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.css b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.css new file mode 100644 index 0000000000..1493b95338 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.css @@ -0,0 +1,3 @@ +.cms-kit-editor { + height: 65vh !important; +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js index 3dc5e66a0e..fba54928f1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js @@ -231,7 +231,7 @@ useCommandShortcut: true, initialValue: initialValue, previewStyle: 'tab', - height: "65vh", + height: "100%", minHeight: "25em", initialEditType: 'markdown', language: $editorContainer.data("language"), diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.css b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.css new file mode 100644 index 0000000000..1493b95338 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.css @@ -0,0 +1,3 @@ +.cms-kit-editor { + height: 65vh !important; +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js index d515f8630c..e4661a7b88 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js @@ -178,7 +178,7 @@ useCommandShortcut: true, initialValue: initialValue, previewStyle: 'tab', - height: "65vh", + height: "100%", minHeight: "25em", initialEditType: 'markdown', language: $editorContainer.data("language"), diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml index 84208ee35a..b154b13261 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml @@ -29,6 +29,7 @@ @section styles { + } @@ -45,7 +46,7 @@ -
    @@ -53,11 +54,11 @@ - + - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml index bfb8bbf193..d8868cf5a1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml @@ -30,6 +30,7 @@ @section styles { + } @@ -49,7 +50,7 @@ -
    @@ -57,11 +58,11 @@ - + - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.css b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.css new file mode 100644 index 0000000000..1493b95338 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.css @@ -0,0 +1,3 @@ +.cms-kit-editor { + height: 65vh !important; +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js index 0e5ac414a0..793cc269a4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js @@ -86,7 +86,7 @@ useCommandShortcut: true, initialValue: initialValue, previewStyle: 'tab', - height: "65vh", + height: "100%", minHeight: "25em", initialEditType: 'markdown', language: $editorContainer.data("language"), diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.css b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.css new file mode 100644 index 0000000000..1493b95338 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.css @@ -0,0 +1,3 @@ +.cms-kit-editor { + height: 65vh !important; +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js index dde3a3f8af..f56539b47e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js @@ -61,7 +61,7 @@ useCommandShortcut: true, initialValue: initialValue, previewStyle: 'tab', - height: "65vh", + height: "100%", minHeight: "25em", initialEditType: 'markdown', language: $editorContainer.data("language"), From 13ec840a2bd52b66329a82490238fd4a6c798a1e Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 8 Apr 2021 11:46:52 +0300 Subject: [PATCH 104/125] Docs - Add missing header to Global Features document --- docs/en/Global-Features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Global-Features.md b/docs/en/Global-Features.md index f9504a06b8..135a2a3fdd 100644 --- a/docs/en/Global-Features.md +++ b/docs/en/Global-Features.md @@ -1,7 +1,7 @@ +# Global Features The purpose of the Global Feature System is to **add a module to your application but disable the features you don't want to use** (or enable only the ones you need). Notice that the features are not determined on runtime, you must select the features **on development time**. Because it will not create database tables, APIs and other stuff for unused features, which is not possible to change then on the runtime. ## Installation - Global Feature system is pre-installed in abp startup templates. No need any installation manually. ## Usage From ef232f5d00063104f291a71c5281ae2d3bd09c29 Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 8 Apr 2021 11:50:02 +0300 Subject: [PATCH 105/125] Docs - Formatting for Global-Featured.md --- docs/en/Global-Features.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/docs/en/Global-Features.md b/docs/en/Global-Features.md index 135a2a3fdd..0768c2f9dc 100644 --- a/docs/en/Global-Features.md +++ b/docs/en/Global-Features.md @@ -20,8 +20,6 @@ GlobalFeatureManager.Instance.Modules.CmsKit().Enable(CommentsFeature.Name); //A GlobalFeatureManager.Instance.Modules.CmsKit().Enable("CmsKit.Comments"); //Alternative: Use magic string ``` - - ### Check if a feature is enabled ```csharp @@ -41,14 +39,10 @@ public class CommentController : AbpController } ``` - - ## Implementation - Global Feature system aims module based feature management . A module has to have own Global Features itself. ### Define a Global Feature - A feature class is something like that: ```csharp @@ -65,7 +59,6 @@ public class FooBarFeature : GlobalFeature ``` ### Define Global Module Features - All global features of a module should be provided by a single **GlobalModuleFeatures** class. ```csharp @@ -82,10 +75,7 @@ public class GlobalFooFeatures : GlobalModuleFeatures } ``` - - ### Define Global Module Features Dictionary Extensions - An extension method is better to configure global fetures easily. ```csharp @@ -114,10 +104,7 @@ GlobalFeatureManager.Instance.Modules.Foo().FooBar.Enable(); GlobalFeatureManager.Instance.Modules.Foo().Enable(); ``` - - ## When to configure Global Features? - Global Features have to be configured before application startup. So best place to configuring it is `PreConfigureServices` with **OneTimeRunner**. ```csharp @@ -131,8 +118,5 @@ public override void PreConfigureServices(ServiceConfigurationContext context) } ``` - - ## See also - - [Differences Between Features & Global Features](Differences-between-features-and-global-features.md) \ No newline at end of file From 7357816c5df82cb9f6bc41401f7fb56f80204282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20=C3=87A=C4=9EDA=C5=9E?= Date: Thu, 8 Apr 2021 11:56:38 +0300 Subject: [PATCH 106/125] increased version number to 4.3.0-rc.2 --- common.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.props b/common.props index b04a8af9cc..c1fc974a4c 100644 --- a/common.props +++ b/common.props @@ -1,7 +1,7 @@ latest - 4.3.0-rc.1 + 4.3.0-rc.2 $(NoWarn);CS1591;CS0436 https://abp.io/assets/abp_nupkg.png https://abp.io/ From f71a9a9d8ee2e58ee8dcc4a05e381a9b66197fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 8 Apr 2021 14:05:39 +0300 Subject: [PATCH 107/125] SMS Sender document revised. --- docs/en/SMS-Sending.md | 34 ++++++++++++---------------------- docs/en/docs-nav.json | 4 ++++ 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/docs/en/SMS-Sending.md b/docs/en/SMS-Sending.md index 7662a8a465..99d06fa903 100644 --- a/docs/en/SMS-Sending.md +++ b/docs/en/SMS-Sending.md @@ -2,7 +2,6 @@ The ABP Framework provides an abstraction to sending SMS. Having such an abstraction has some benefits; -- You can **easily integrate** to your favorite SMS sender with a few lines of configuration. - You can then **easily change** your SMS sender without changing your application code. - If you want to create **reusable application modules**, you don't need to make assumption about how the SMS are sent. @@ -44,7 +43,7 @@ public class YourModule : AbpModule [Inject](Dependency-Injection.md) the `ISmsSender` into any service and use the `SendAsync` method to send a SMS. -**Example** +**Example:** ```csharp using System.Threading.Tasks; @@ -66,35 +65,28 @@ namespace MyProject { await _smsSender.SendAsync( "+012345678901", // target phone number - "This is test sms..." // SMS text + "This is test sms..." // message text ); } } } ``` -The given `SendAsync` method in the example is an extension method to send sms with primitive paremeters, it basicly creates `SmsMessage` object and pass it. You can also use the default `SendAsync` method which requires `SmsMessage` object. +The given `SendAsync` method in the example is an extension method to send an SMS with primitive parameters. In addition, you can pass an `SmsMessage` object which has the following properties: -> `ISmsSender` is the suggested way to send SMS, since it makes your code provider independent. - -## SmsMessage - -In addition to use primitive parameters, you can pass a `SmsMessage` object to the `SendAsync` method. - -- `PhoneNumber` (string): Target phone number to send sms. -- `Text` (string): SMS Text -- `Properties` (Dictionary): string key-value pair to handle different usages by senders. +- `PhoneNumber` (`string`): Target phone number +- `Text` (`string`): Message text +- `Properties` (`Dictionary`): Key-value pairs to pass custom arguments ## NullSmsSender -`NullSmsSender` is a built-in class that implements the `ISmsSender`, but writes sms contents to the [standard log system](Logging.md), rathen than actually sending the SMSs. +`NullSmsSender` is a the default implementation of the `ISmsSender`. It writes SMS content to the [standard logler](Logging.md), rather than actually sending the SMS. -This class can be useful especially in development time where you generally don't want to send real sms. -`NullSmsSender` will try to register itself automatically if there is no other registrated sms sender. +This class can be useful especially in development time where you generally don't want to send real SMS. **However, if you want to actually send SMS, you should implement the `IsSmsSender` in your application code.** -## Creating a custom SMS sender +## Implementing the ISmsSender -You can easily create your custom provider by creating a class that implements the `ISmsSender` interface. +You can easily create your SMS sending implementation by creating a class that implements the `ISmsSender` interface, as shown below: ```csharp using System.IO; @@ -114,8 +106,6 @@ namespace AbpDemo } ``` -That's all. Now you can send SMS by using `MyCustomSmsSender` in your application. - -## See also +## More -- [Twilio SMS Sender](https://docs.abp.io/en/commercial/latest/modules/twilio-sms) with [ABP Commercial](https://commercial.abp.io/). +[ABP Commercial](https://commercial.abp.io/) provides Twilio integration package to send SMS over [Twilio service](https://docs.abp.io/en/commercial/latest/modules/twilio-sms). \ No newline at end of file diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 32e62eccbe..5e0f0b469a 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -285,6 +285,10 @@ } ] }, + { + "text": "SMS Sending", + "path": "SMS-Sending.md" + }, { "text": "Event Bus", "items": [ From f572f513bf3e51ee3606b10a3d57e28030a57751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Thu, 8 Apr 2021 14:11:41 +0300 Subject: [PATCH 108/125] fix typo --- docs/en/SMS-Sending.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/SMS-Sending.md b/docs/en/SMS-Sending.md index 99d06fa903..bf37814100 100644 --- a/docs/en/SMS-Sending.md +++ b/docs/en/SMS-Sending.md @@ -82,7 +82,7 @@ The given `SendAsync` method in the example is an extension method to send an SM `NullSmsSender` is a the default implementation of the `ISmsSender`. It writes SMS content to the [standard logler](Logging.md), rather than actually sending the SMS. -This class can be useful especially in development time where you generally don't want to send real SMS. **However, if you want to actually send SMS, you should implement the `IsSmsSender` in your application code.** +This class can be useful especially in development time where you generally don't want to send real SMS. **However, if you want to actually send SMS, you should implement the `ISmsSender` in your application code.** ## Implementing the ISmsSender @@ -108,4 +108,4 @@ namespace AbpDemo ## More -[ABP Commercial](https://commercial.abp.io/) provides Twilio integration package to send SMS over [Twilio service](https://docs.abp.io/en/commercial/latest/modules/twilio-sms). \ No newline at end of file +[ABP Commercial](https://commercial.abp.io/) provides Twilio integration package to send SMS over [Twilio service](https://docs.abp.io/en/commercial/latest/modules/twilio-sms). From d5269a0c3ae04ab909d32ed7c24ba60ba2f027ff Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 8 Apr 2021 15:09:27 +0300 Subject: [PATCH 109/125] CmsKit - Remove deleted notifications --- .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/index.js | 1 - .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/index.js | 1 - .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js | 1 - .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/index.js | 1 - .../src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js | 1 - .../cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/Index.js | 1 - .../Volo/CmsKit/Localization/Resources/en.json | 1 - .../Volo/CmsKit/Localization/Resources/tr.json | 1 - .../Volo/CmsKit/Localization/Resources/zh-Hans.json | 1 - .../Volo/CmsKit/Localization/Resources/zh-Hant.json | 1 - 10 files changed, 10 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/index.js index 0218d360f0..715c159013 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/index.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/index.js @@ -44,7 +44,6 @@ $(function () { blogsService .delete(data.record.id) .then(function () { - abp.notify.info(l("SuccessfullyDeleted")); dataTable.ajax.reload(); }); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/index.js index ac1a7ce484..e9bd665abd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/index.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/index.js @@ -49,7 +49,6 @@ $(function () { blogsService .delete(data.record.id) .then(function () { - abp.notify.info(l("SuccessfullyDeleted")); dataTable.ajax.reload(); }); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js index 31e32d37e3..9c6a346921 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js @@ -73,7 +73,6 @@ commentsService .delete(data.record.id) .then(function () { - abp.notify.info(l("SuccessfullyDeleted")); _dataTable.ajax.reload(); }); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/index.js index c2a9c7d364..069a3983ec 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/index.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/index.js @@ -73,7 +73,6 @@ commentsService .delete(data.record.id) .then(function () { - abp.notify.info(l("SuccessfullyDeleted")); _dataTable.ajax.reload(); }); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js index 828da9c55c..c63e2cda2c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js @@ -43,7 +43,6 @@ pagesService .delete(data.record.id) .then(function () { - abp.notify.info(l("SuccessfullyDeleted")); _dataTable.ajax.reload(); }); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/Index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/Index.js index 85e91908d6..87960c5aed 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/Index.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/Index.js @@ -44,7 +44,6 @@ service .delete(data.record.id) .then(function () { - abp.notify.info(l("SuccessfullyDeleted")); dataTable.ajax.reload(null, false); }); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json index 900a50b06c..bd0fcd592e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json @@ -111,7 +111,6 @@ "SubjectPlaceholder": "Please type a subject", "Submit": "Submit", "Subscribe": "Subscribe", - "SuccessfullyDeleted": "Successfully deleted!", "SuccessfullySaved": "Successfully saved!", "TagDeletionConfirmationMessage": "Are you sure to delete '{0}' tag?", "Tags": "Tags", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json index 6ddc94a987..574c1f9b5d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json @@ -102,7 +102,6 @@ "SubjectPlaceholder": "Lütfen bir konu yazınız", "Submit": "Kaydet", "Subscribe": "Abone ol", - "SuccessfullyDeleted": "Başarıyla silindi!", "SuccessfullySaved": "Başarıyla kaydedildi!", "TagDeletionConfirmationMessage": "'{0}' etiketini silmek istediğinize emin misiniz?", "Tags": "Etiketler", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json index 64ed439d50..411af82bd0 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json @@ -101,7 +101,6 @@ "SubjectPlaceholder": "请输入主题", "Submit": "提交", "Subscribe": "订阅", - "SuccessfullyDeleted": "删除成功!", "SuccessfullySaved": "保存成功!", "TagDeletionConfirmationMessage": "你确定删除 '{0}' 标签吗?", "Tags": "标签", diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json index bf3ff196f0..b2d45d25ce 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json @@ -102,7 +102,6 @@ "SubjectPlaceholder": "請輸入主題", "Submit": "提交", "Subscribe": "訂閱", - "SuccessfullyDeleted": "刪除成功!", "SuccessfullySaved": "保存成功!", "TagDeletionConfirmationMessage": "你確定刪除 '{0}' 標籤嗎?", "Tags": "標籤", From 0d4518a63026fde3b680aa6dc8cf691ef290ee07 Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 8 Apr 2021 15:27:01 +0300 Subject: [PATCH 110/125] CmsKit - Fix Edit Modal Titles --- .../Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml | 2 +- .../Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml | 2 +- .../Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml index 4d5f5a6ee3..626c435370 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml @@ -42,7 +42,7 @@ } - +
    diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml index 5a23933a0a..c458c80cbf 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml @@ -13,7 +13,7 @@ - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml index 3146915cef..41a77ccbc6 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml @@ -14,7 +14,7 @@ - + From 42b3827fc6a5599569f672a0576da22c770e4c6b Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Thu, 8 Apr 2021 16:05:06 +0300 Subject: [PATCH 111/125] updated Devart.Oracle to 9.14.1228 closes #8540 --- .../Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj index 8c1f0cdec3..7fea04e7f5 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj +++ b/framework/src/Volo.Abp.EntityFrameworkCore.Oracle.Devart/Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj @@ -19,7 +19,7 @@ - + From 0f58d05ec69422363197b34dc0b4d74a08262e28 Mon Sep 17 00:00:00 2001 From: erolarkat Date: Thu, 8 Apr 2021 17:13:27 +0300 Subject: [PATCH 112/125] npm packages 4.3.0-rc2 --- .../package.json | 2 +- .../yarn.lock | 224 +++++------ .../package.json | 4 +- .../yarn.lock | 260 ++++++------- .../app/Volo.BloggingTestApp/package.json | 4 +- .../app/Volo.BloggingTestApp/yarn.lock | 332 ++++++++--------- .../Volo.ClientSimulation.Demo/package.json | 2 +- .../demo/Volo.ClientSimulation.Demo/yarn.lock | 238 ++++++------ modules/cms-kit/angular/package.json | 10 +- .../angular/projects/cms-kit/package.json | 4 +- .../Volo.CmsKit.IdentityServer/package.json | 2 +- .../host/Volo.CmsKit.IdentityServer/yarn.lock | 238 ++++++------ .../host/Volo.CmsKit.Web.Host/package.json | 2 +- .../host/Volo.CmsKit.Web.Host/yarn.lock | 238 ++++++------ .../host/Volo.CmsKit.Web.Unified/package.json | 8 +- .../host/Volo.CmsKit.Web.Unified/yarn.lock | 350 +++++++++--------- modules/docs/app/VoloDocs.Web/package.json | 4 +- modules/docs/app/VoloDocs.Web/yarn.lock | 298 +++++++-------- .../package.json | 2 +- .../yarn.lock | 238 ++++++------ npm/lerna.json | 2 +- npm/ng-packs/lerna.version.json | 2 +- npm/ng-packs/package.json | 20 +- npm/ng-packs/packages/account/package.json | 4 +- npm/ng-packs/packages/components/package.json | 6 +- npm/ng-packs/packages/core/package.json | 4 +- .../packages/feature-management/package.json | 4 +- npm/ng-packs/packages/identity/package.json | 6 +- .../permission-management/package.json | 4 +- npm/ng-packs/packages/schematics/package.json | 2 +- .../packages/setting-management/package.json | 6 +- .../packages/tenant-management/package.json | 6 +- .../packages/theme-basic/package.json | 4 +- .../packages/theme-shared/package.json | 4 +- npm/packs/anchor-js/package.json | 4 +- .../package.json | 4 +- .../package.json | 6 +- .../package.json | 4 +- .../package.json | 30 +- npm/packs/aspnetcore.mvc.ui/package-lock.json | 2 +- npm/packs/aspnetcore.mvc.ui/package.json | 2 +- npm/packs/blogging/package.json | 10 +- npm/packs/bootstrap-datepicker/package.json | 2 +- npm/packs/bootstrap/package.json | 4 +- npm/packs/chart.js/package.json | 2 +- npm/packs/clipboard/package.json | 4 +- npm/packs/cms-kit.admin/package.json | 8 +- npm/packs/cms-kit.public/package.json | 6 +- npm/packs/cms-kit/package.json | 6 +- npm/packs/codemirror/package.json | 4 +- npm/packs/core/package.json | 4 +- npm/packs/cropperjs/package.json | 4 +- npm/packs/datatables.net-bs4/package.json | 4 +- npm/packs/datatables.net/package.json | 4 +- npm/packs/docs/package.json | 12 +- npm/packs/flag-icon-css/package.json | 2 +- npm/packs/font-awesome/package.json | 4 +- npm/packs/highlight.js/package.json | 4 +- npm/packs/jquery-form/package.json | 4 +- .../package.json | 4 +- npm/packs/jquery-validation/package.json | 4 +- npm/packs/jquery/package.json | 4 +- npm/packs/jstree/package.json | 4 +- npm/packs/lodash/package.json | 4 +- npm/packs/luxon/package.json | 4 +- .../package.json | 4 +- npm/packs/markdown-it/package.json | 4 +- npm/packs/owl.carousel/package.json | 4 +- npm/packs/popper.js/package.json | 4 +- npm/packs/prismjs/package.json | 6 +- npm/packs/select2/package.json | 4 +- npm/packs/signalr/package.json | 4 +- npm/packs/slugify/package.json | 2 +- npm/packs/star-rating-svg/package.json | 4 +- npm/packs/sweetalert/package.json | 4 +- npm/packs/timeago/package.json | 4 +- npm/packs/toastr/package.json | 4 +- npm/packs/tui-editor/package.json | 10 +- npm/packs/uppy/package.json | 4 +- npm/packs/utils/package.json | 2 +- npm/packs/vee-validate/package.json | 4 +- npm/packs/virtual-file-explorer/package.json | 6 +- npm/packs/vue/package.json | 2 +- templates/app/angular/package.json | 18 +- .../package.json | 4 +- .../yarn.lock | 268 +++++++------- .../package.json | 4 +- .../yarn.lock | 268 +++++++------- .../package.json | 2 +- .../yarn.lock | 238 ++++++------ .../package.json | 2 +- .../yarn.lock | 238 ++++++------ .../package.json | 2 +- .../yarn.lock | 238 ++++++------ .../package.json | 2 +- .../MyCompanyName.MyProjectName.Web/yarn.lock | 238 ++++++------ templates/module/angular/package.json | 18 +- .../projects/my-project-name/package.json | 4 +- .../package.json | 2 +- .../yarn.lock | 238 ++++++------ .../package.json | 2 +- .../yarn.lock | 238 ++++++------ .../package.json | 2 +- .../yarn.lock | 238 ++++++------ 104 files changed, 2519 insertions(+), 2519 deletions(-) diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json index b9c5e49f2b..a4704ecfd3 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json @@ -3,7 +3,7 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "^4.3.0-rc.1", + "@abp/aspnetcore.mvc.ui.theme.shared": "^4.3.0-rc.2", "highlight.js": "^9.13.1" }, "devDependencies": {} diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock index aecdad579a..d529fabaca 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock @@ -2,30 +2,30 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.shared@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.shared@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -36,145 +36,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index b9db49b418..438f9df375 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,8 +3,8 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1", - "@abp/prismjs": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2", + "@abp/prismjs": "^4.3.0-rc.2" }, "devDependencies": {} } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock index ab0f00749a..910082d2cc 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,162 +43,162 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/clipboard@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.3.0-rc.1.tgz#014ac354e8d2aa93266f5415fcb9cef344df48e8" - integrity sha512-+Kp4f5ib81AkufOPMyG4BTKiwcnAW6ZbWOGnsR2sBEz63wW6/ZPJ0GMngLfTkxPUJCH1QMwlk5wZoj9QAKqOAw== +"@abp/clipboard@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.3.0-rc.2.tgz#63670e869b09f9e10ec9a2e7f8ffcc097ce1efc7" + integrity sha512-jTHzum4h5TQqAKJKEHwJ88NLFmby92hJ8byOBl/HAjOHb8LhWuw/ktTwl2knd0/63KpiCKYZGQPV3kk5JXVQ6w== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" clipboard "^2.0.6" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/prismjs@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.3.0-rc.1.tgz#1a43222861e094de7be69cadc6caab91b8da69cd" - integrity sha512-nd23YXLIWFr1JbUpGahfxgAIyolQgfujSphIpQsiuKm/HfXD5IWWjKRO6NGd6gUJfdpQzlzxUv+5cZXQlQ+0OA== +"@abp/prismjs@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.3.0-rc.2.tgz#ecb98291898ba0c2fd4317be022d1a3e281c8bea" + integrity sha512-LA2pmTDhB3NwM4hEkZSW1xBXsixIXY2FVnEHS7ATkyRr36W/Gqb5fchv0ILBD7Gce40pAiPO2dMs4SUWT8qk0Q== dependencies: - "@abp/clipboard" "~4.3.0-rc.1" - "@abp/core" "~4.3.0-rc.1" + "@abp/clipboard" "~4.3.0-rc.2" + "@abp/core" "~4.3.0-rc.2" prismjs "^1.20.0" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json index e5fc2f6ba4..9570a265db 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/package.json +++ b/modules/blogging/app/Volo.BloggingTestApp/package.json @@ -3,7 +3,7 @@ "name": "volo.blogtestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1", - "@abp/blogging": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2", + "@abp/blogging": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock index 7ddfc323d5..ea7d837a0b 100644 --- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock +++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,215 +43,215 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/blogging@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-4.3.0-rc.1.tgz#86cb002ddee3ce7ae93c7e740d9399108720ef60" - integrity sha512-JVwlNuIMo7jp3x8iC7KyLJFUy4pcYA1JthunUOJMwDCb1mFGkQIfK9t+S1wyWcOHug3KwCEsavzC685TZoD1eg== +"@abp/blogging@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-4.3.0-rc.2.tgz#4123557055737297c83970bfa4d5ddeb7d8ab8e7" + integrity sha512-yMaMYet5Y7Rfpm84zzhTNL3b8pU3CHoxRuWFGYveMz03v4lqzmHxi39GLa8Tciimth2r/6SROVpPClcLGuuNLw== dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - "@abp/owl.carousel" "~4.3.0-rc.1" - "@abp/prismjs" "~4.3.0-rc.1" - "@abp/tui-editor" "~4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + "@abp/owl.carousel" "~4.3.0-rc.2" + "@abp/prismjs" "~4.3.0-rc.2" + "@abp/tui-editor" "~4.3.0-rc.2" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/clipboard@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.3.0-rc.1.tgz#014ac354e8d2aa93266f5415fcb9cef344df48e8" - integrity sha512-+Kp4f5ib81AkufOPMyG4BTKiwcnAW6ZbWOGnsR2sBEz63wW6/ZPJ0GMngLfTkxPUJCH1QMwlk5wZoj9QAKqOAw== +"@abp/clipboard@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.3.0-rc.2.tgz#63670e869b09f9e10ec9a2e7f8ffcc097ce1efc7" + integrity sha512-jTHzum4h5TQqAKJKEHwJ88NLFmby92hJ8byOBl/HAjOHb8LhWuw/ktTwl2knd0/63KpiCKYZGQPV3kk5JXVQ6w== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" clipboard "^2.0.6" -"@abp/codemirror@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-4.3.0-rc.1.tgz#f31d54113142c6d6a9dc70de111486ba54fb01e9" - integrity sha512-XXCD8FqP7y29GwNoIjLr73FVy9WIxUzpVt2uyVVyzSTndKec2FzxoCBM/O3wEj33GUK7Z99bNIxReAcDOlf9Pw== +"@abp/codemirror@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-4.3.0-rc.2.tgz#672d43fe99b74ed5b4e85a0ba79ba70e261a8e31" + integrity sha512-ZGGg8wkxRF9ZypEfmXFHTAg+dNn7uklfsBH4PJBB7CRpI5m3qth5ZQeIoUFbdoJHFWXl/UevmM9yzI1P05jZFA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" codemirror "^5.54.0" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/highlight.js@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-4.3.0-rc.1.tgz#10438fb6728fe7ff63f2f7271e0db1627320041c" - integrity sha512-MYcQyaokZrzlKX4FbwWISodfwQFOrbtzLF2x28qjWlSFNO13xka8Wn0EmZMjY84oFqYybNzoEMNAsDDgF+STBA== +"@abp/highlight.js@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-4.3.0-rc.2.tgz#a7c51e826b2a7e25c84af7ecbb38c5abe1d35dfb" + integrity sha512-oIGSsyAxdYm3ow/LbUwyYqtRvIOLQbsLQgP2+8FatnUdgFTKJRqG1RJXyPINDb3ldJlyQMFlgGlxlUV8cyqNzw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-4.3.0-rc.1.tgz#d545c789c493836d052f77441fcb23b847cd12d9" - integrity sha512-uJA0V6eyOJdjadHg4X3GOQ0ifXSU38lJVblS8yYB/8yt9GezvwS9JukX+SguuR18YlFwwjTv1cU9CCYdY8htnA== +"@abp/markdown-it@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-4.3.0-rc.2.tgz#4f1d039812e7efc8032b8542cd9d48dad136bf0d" + integrity sha512-fTMj0FFjMZcBevFWWrfnyxV5XZZYrD5Guq+cICMBYtKVqfbsy/ILpnznApXMuLxNukqIvGa8I3SdWaWO6CVhgQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" markdown-it "^11.0.0" -"@abp/owl.carousel@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-4.3.0-rc.1.tgz#b78cff4f2d5494fe124230a217215e8721c5f1e8" - integrity sha512-TE0rcGmH2l/pTY7/OuA/1s/IfxUjxXhTQslwlp5YHMk+z26+m4YcnWDzYU2kjA+mQ/q4wFkmNu7DVhld+YpS/A== +"@abp/owl.carousel@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-4.3.0-rc.2.tgz#e13a568575a3d1c0b1f9c03c215792dd5320fb2a" + integrity sha512-pu87oxJjU0wA7bcxeTd0XUPYBqXV/0/9br79nhqeK4Qz8tsI1mC4mF4LW1GmTgNDKNrNydAEAenErFzG0GOwvA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" owl.carousel "^2.3.4" -"@abp/prismjs@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.3.0-rc.1.tgz#1a43222861e094de7be69cadc6caab91b8da69cd" - integrity sha512-nd23YXLIWFr1JbUpGahfxgAIyolQgfujSphIpQsiuKm/HfXD5IWWjKRO6NGd6gUJfdpQzlzxUv+5cZXQlQ+0OA== +"@abp/prismjs@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.3.0-rc.2.tgz#ecb98291898ba0c2fd4317be022d1a3e281c8bea" + integrity sha512-LA2pmTDhB3NwM4hEkZSW1xBXsixIXY2FVnEHS7ATkyRr36W/Gqb5fchv0ILBD7Gce40pAiPO2dMs4SUWT8qk0Q== dependencies: - "@abp/clipboard" "~4.3.0-rc.1" - "@abp/core" "~4.3.0-rc.1" + "@abp/clipboard" "~4.3.0-rc.2" + "@abp/core" "~4.3.0-rc.2" prismjs "^1.20.0" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/tui-editor@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-4.3.0-rc.1.tgz#f72b82f2b9afb97562db29897261b02f0eb4ab34" - integrity sha512-MEAv6Y6rDxhhB2/CKvhhW4iCHWEYSlZpiKDnAu9eD7xyyLyWDkn/x9oC+srVoTalfZOwMQ7B6kYSUuXMvX+2Uw== +"@abp/tui-editor@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-4.3.0-rc.2.tgz#4d4de602faa2f1093752aa148df3fa3f5523d918" + integrity sha512-NuuQTiqYue+gJosVNzVTdx1HvuyfjoTzk1ih1uo8hkUWxcDuaK7LK/p4ZId8q10ZPeek5rhi2W9LgEj3EHkMBw== dependencies: - "@abp/codemirror" "~4.3.0-rc.1" - "@abp/highlight.js" "~4.3.0-rc.1" - "@abp/jquery" "~4.3.0-rc.1" - "@abp/markdown-it" "~4.3.0-rc.1" + "@abp/codemirror" "~4.3.0-rc.2" + "@abp/highlight.js" "~4.3.0-rc.2" + "@abp/jquery" "~4.3.0-rc.2" + "@abp/markdown-it" "~4.3.0-rc.2" tui-code-snippet "1.5.2" tui-editor "^1.4.10" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json index 85f08a8046..391b299fdc 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json @@ -3,6 +3,6 @@ "name": "client-simulation-web", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock index b6d4a05f93..25d1eb8717 100644 --- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock +++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json index ce7e5e91ee..2dff40a63e 100644 --- a/modules/cms-kit/angular/package.json +++ b/modules/cms-kit/angular/package.json @@ -15,11 +15,11 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~4.3.0-rc.1", - "@abp/ng.identity": "~4.3.0-rc.1", - "@abp/ng.setting-management": "~4.3.0-rc.1", - "@abp/ng.tenant-management": "~4.3.0-rc.1", - "@abp/ng.theme.basic": "~4.3.0-rc.1", + "@abp/ng.account": "~4.3.0-rc.2", + "@abp/ng.identity": "~4.3.0-rc.2", + "@abp/ng.setting-management": "~4.3.0-rc.2", + "@abp/ng.tenant-management": "~4.3.0-rc.2", + "@abp/ng.theme.basic": "~4.3.0-rc.2", "@angular/animations": "~10.0.0", "@angular/common": "~10.0.0", "@angular/compiler": "~10.0.0", diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json index 292510cb02..f6d7c9fa47 100644 --- a/modules/cms-kit/angular/projects/cms-kit/package.json +++ b/modules/cms-kit/angular/projects/cms-kit/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=4.3.0-rc.1", - "@abp/ng.theme.shared": ">=4.3.0-rc.1" + "@abp/ng.core": ">=4.3.0-rc.2", + "@abp/ng.theme.shared": ">=4.3.0-rc.2" }, "dependencies": { "tslib": "^2.0.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json index b9e8623fe2..00e47b60e7 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock index e068e01f38..429ce75f04 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json index 321ad21fba..4bc77c8984 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock index 1c1cf1f9ab..75cec285e5 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json index 85474c6835..4499332946 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json @@ -3,11 +3,11 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1", - "@abp/cms-kit": "4.3.0-rc.1", - "@abp/tui-editor": "^4.3.0-rc.1", + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2", + "@abp/cms-kit": "4.3.0-rc.2", + "@abp/tui-editor": "^4.3.0-rc.2", "tui-code-snippet": "1.5.2", - "@abp/uppy": "^4.3.0-rc.1", + "@abp/uppy": "^4.3.0-rc.2", "slugify": "1.4.6" } } \ No newline at end of file diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock index 2ea6a4e794..6fa480a3ca 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,228 +43,228 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/cms-kit.admin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-4.3.0-rc.1.tgz#6381dbf35d51e7ce677a4cc292cbb9b875f9a222" - integrity sha512-DQ3Ll9CtJMaPJOuLvAlqQSRjZo5xD92rVjBR3O8kMZgZWK6gJsv+34cAL2yQ8/tXYZch769RUcqd3ZenPTL7sg== +"@abp/cms-kit.admin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-4.3.0-rc.2.tgz#353310b5d6f2b812567ef396e61817b7cfee294e" + integrity sha512-NP8Z/GWk2loYEXCMj3k7YrjXy2Ijao4Sd96Rg5O1XKh/J8IrwoYeixJYCibsedOv7ewy+kf5xiISEokfTdaCfw== dependencies: - "@abp/slugify" "~4.3.0-rc.1" - "@abp/tui-editor" "~4.3.0-rc.1" - "@abp/uppy" "~4.3.0-rc.1" + "@abp/slugify" "~4.3.0-rc.2" + "@abp/tui-editor" "~4.3.0-rc.2" + "@abp/uppy" "~4.3.0-rc.2" -"@abp/cms-kit.public@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-4.3.0-rc.1.tgz#90476afe653c63f94d52d5ff831695cafd2b13ca" - integrity sha512-6q13aGrStH7Ia9ESE2nd4DOZDClnZW2OIXtBX6g33iYtqCsnXEA+ljfOTgyuIICrWhkEGsVIMiFNtbzxsWx64g== +"@abp/cms-kit.public@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-4.3.0-rc.2.tgz#41ce3c619ab525031aca11f8c42d55a31e3ccf95" + integrity sha512-3Z+6DFHkurX1ewfMKc/i6iHT24fjV/Dh+u3I4LKJcM3BDEtN8tj3xYpP9kQTcFqKMCEGtjHQpYYDxpJDuYcrJw== dependencies: - "@abp/highlight.js" "~4.3.0-rc.1" - "@abp/star-rating-svg" "~4.3.0-rc.1" + "@abp/highlight.js" "~4.3.0-rc.2" + "@abp/star-rating-svg" "~4.3.0-rc.2" -"@abp/cms-kit@4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-4.3.0-rc.1.tgz#c6d9fd61009d49992abd889a9fd721daf5cf37c1" - integrity sha512-3rAHFNshyEjc/7l3WasuJzbz5kE/TMlUpPBYh71AjcJ2FNz1pOp4V/hIFadG/t8YywQ04coMFiMGNkHZt0a5fw== +"@abp/cms-kit@4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-4.3.0-rc.2.tgz#f81345bddafbaff68f0b464b13858fb6dfc2dcae" + integrity sha512-k8jux/6EcWP3MYBkJqeexZ/gAqAXZ1+upNDZ5X81+khSRT/v5s6ZigO+UgZX0uHZtB/clH45iJyCxEPdyRUYaw== dependencies: - "@abp/cms-kit.admin" "~4.3.0-rc.1" - "@abp/cms-kit.public" "~4.3.0-rc.1" + "@abp/cms-kit.admin" "~4.3.0-rc.2" + "@abp/cms-kit.public" "~4.3.0-rc.2" -"@abp/codemirror@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-4.3.0-rc.1.tgz#f31d54113142c6d6a9dc70de111486ba54fb01e9" - integrity sha512-XXCD8FqP7y29GwNoIjLr73FVy9WIxUzpVt2uyVVyzSTndKec2FzxoCBM/O3wEj33GUK7Z99bNIxReAcDOlf9Pw== +"@abp/codemirror@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-4.3.0-rc.2.tgz#672d43fe99b74ed5b4e85a0ba79ba70e261a8e31" + integrity sha512-ZGGg8wkxRF9ZypEfmXFHTAg+dNn7uklfsBH4PJBB7CRpI5m3qth5ZQeIoUFbdoJHFWXl/UevmM9yzI1P05jZFA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" codemirror "^5.54.0" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/highlight.js@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-4.3.0-rc.1.tgz#10438fb6728fe7ff63f2f7271e0db1627320041c" - integrity sha512-MYcQyaokZrzlKX4FbwWISodfwQFOrbtzLF2x28qjWlSFNO13xka8Wn0EmZMjY84oFqYybNzoEMNAsDDgF+STBA== +"@abp/highlight.js@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-4.3.0-rc.2.tgz#a7c51e826b2a7e25c84af7ecbb38c5abe1d35dfb" + integrity sha512-oIGSsyAxdYm3ow/LbUwyYqtRvIOLQbsLQgP2+8FatnUdgFTKJRqG1RJXyPINDb3ldJlyQMFlgGlxlUV8cyqNzw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/markdown-it@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-4.3.0-rc.1.tgz#d545c789c493836d052f77441fcb23b847cd12d9" - integrity sha512-uJA0V6eyOJdjadHg4X3GOQ0ifXSU38lJVblS8yYB/8yt9GezvwS9JukX+SguuR18YlFwwjTv1cU9CCYdY8htnA== +"@abp/markdown-it@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-4.3.0-rc.2.tgz#4f1d039812e7efc8032b8542cd9d48dad136bf0d" + integrity sha512-fTMj0FFjMZcBevFWWrfnyxV5XZZYrD5Guq+cICMBYtKVqfbsy/ILpnznApXMuLxNukqIvGa8I3SdWaWO6CVhgQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" markdown-it "^11.0.0" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/slugify@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-4.3.0-rc.1.tgz#9ce4b82445f5ef76f99d8d9533d99c38b1ea3d8b" - integrity sha512-duWFcJLZAvCoqNaT5ZBAIX+BVTmFlTWe8YJkg11Z9kMGImb0Z8HkiTcqMSx0VNwQEGAhqpOc8v9vEw8S9xCBwQ== +"@abp/slugify@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-4.3.0-rc.2.tgz#2e35f973d878f13ca1ff71f090d1bdd88b89fd38" + integrity sha512-9okL+PEZhAeF3Vs/vLMnXn1O6qp6U7RQW1HI7j41i+7fHAJ4UZozym6sbYsFAEWT/ph4dcdzPRsxTxpBFiJYVQ== dependencies: slugify "^1.4.7" -"@abp/star-rating-svg@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-4.3.0-rc.1.tgz#b09e65ba0b05a41460f71b517a1b74a3e2949821" - integrity sha512-UmuavGqYn4pJe0LX8vaXNxwOhCXpVkU0PuuBx285JHcZ+hpBDCAoSjvE9Ve+c08vLhGErTTApGJ1QMEjNvM7rw== +"@abp/star-rating-svg@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-4.3.0-rc.2.tgz#aeabae6df07d621574b6a4057032e3a2a0cb1e13" + integrity sha512-xDcwIVjP8wkGNuJQn8H9PetHD/YgZ33jrOpPhw+EZAYCMW++e9LkKFSeEfiNT8MW5qyjC2hOISE6n2bz+hHU5w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" star-rating-svg "^3.5.0" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/tui-editor@^4.3.0-rc.1", "@abp/tui-editor@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-4.3.0-rc.1.tgz#f72b82f2b9afb97562db29897261b02f0eb4ab34" - integrity sha512-MEAv6Y6rDxhhB2/CKvhhW4iCHWEYSlZpiKDnAu9eD7xyyLyWDkn/x9oC+srVoTalfZOwMQ7B6kYSUuXMvX+2Uw== +"@abp/tui-editor@^4.3.0-rc.2", "@abp/tui-editor@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-4.3.0-rc.2.tgz#4d4de602faa2f1093752aa148df3fa3f5523d918" + integrity sha512-NuuQTiqYue+gJosVNzVTdx1HvuyfjoTzk1ih1uo8hkUWxcDuaK7LK/p4ZId8q10ZPeek5rhi2W9LgEj3EHkMBw== dependencies: - "@abp/codemirror" "~4.3.0-rc.1" - "@abp/highlight.js" "~4.3.0-rc.1" - "@abp/jquery" "~4.3.0-rc.1" - "@abp/markdown-it" "~4.3.0-rc.1" + "@abp/codemirror" "~4.3.0-rc.2" + "@abp/highlight.js" "~4.3.0-rc.2" + "@abp/jquery" "~4.3.0-rc.2" + "@abp/markdown-it" "~4.3.0-rc.2" tui-code-snippet "1.5.2" tui-editor "^1.4.10" -"@abp/uppy@^4.3.0-rc.1", "@abp/uppy@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-4.3.0-rc.1.tgz#85cb56d7b82434a61d6a271b2f11678301e68ee3" - integrity sha512-/6FLrIzHjPGo0xO9U76nt/iDVNjL/OnA8wOCcIEDMcZtEQtbT9YXj7kyKFCf8MNBq4D2so3yKpLAMOch2a5Jsg== +"@abp/uppy@^4.3.0-rc.2", "@abp/uppy@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-4.3.0-rc.2.tgz#abb39dacf2f5c88dbec124e449ebcfaf66a1aead" + integrity sha512-C+bZ7GnSUFGIEZVeLfh5ruPkh6PvlsYLsTJaykzcMSDS5FQugVWRAw4OaCnELtDePmHUa+m3ppQw+e1TzuSAUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" uppy "^1.16.1" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json index 5205dd0b97..8282c15b5f 100644 --- a/modules/docs/app/VoloDocs.Web/package.json +++ b/modules/docs/app/VoloDocs.Web/package.json @@ -3,7 +3,7 @@ "name": "volo.docstestapp", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1", - "@abp/docs": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2", + "@abp/docs": "^4.3.0-rc.2" } } diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock index fcd2124137..a6a44b5e52 100644 --- a/modules/docs/app/VoloDocs.Web/yarn.lock +++ b/modules/docs/app/VoloDocs.Web/yarn.lock @@ -2,45 +2,45 @@ # yarn lockfile v1 -"@abp/anchor-js@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-4.3.0-rc.1.tgz#ef27d81477e15afa40929b0fbbf96d5ab56388bd" - integrity sha512-6SBvt4nIHqC//pmm/zx/2+P0f7lFfRmKuOI2MwhuGPpC6jU0ZP5yB+Ez+wNp/lHoCet8/UcpN2i1JRGIAtDFqQ== +"@abp/anchor-js@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-4.3.0-rc.2.tgz#bb25b4b80a8f3c9b4fd281b8d2a8670fd582a59a" + integrity sha512-Rokwf2vSnqfY9Sf4DQzC5b4vMUINXk3mWb9fCTqZfjdiqjnLWJ+JyfsOeXV4qGvLF5NOU0wCbYSLvUdPn/LZwg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" anchor-js "^4.2.2" -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -51,181 +51,181 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/clipboard@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.3.0-rc.1.tgz#014ac354e8d2aa93266f5415fcb9cef344df48e8" - integrity sha512-+Kp4f5ib81AkufOPMyG4BTKiwcnAW6ZbWOGnsR2sBEz63wW6/ZPJ0GMngLfTkxPUJCH1QMwlk5wZoj9QAKqOAw== +"@abp/clipboard@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-4.3.0-rc.2.tgz#63670e869b09f9e10ec9a2e7f8ffcc097ce1efc7" + integrity sha512-jTHzum4h5TQqAKJKEHwJ88NLFmby92hJ8byOBl/HAjOHb8LhWuw/ktTwl2knd0/63KpiCKYZGQPV3kk5JXVQ6w== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" clipboard "^2.0.6" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/docs@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-4.3.0-rc.1.tgz#0a107705c66aed1586e06fd99fd27cb84ef23d56" - integrity sha512-MRZrXpJHszIUMCGAMGPuK+NPW+E8KI8LsTWESEBkY0461eAYW48rvP4Vbt2b+/vpy6enzopNmuhzq8kXH6MFzQ== +"@abp/docs@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-4.3.0-rc.2.tgz#a0871a860a57542de601657b4d41c5ca724adfe2" + integrity sha512-vJW6wTa9la7dwAv909QMIvOwtRlHdZGXRAS4gbyDbuGL2/OrqyIsGOdSfIcRakRNsTs5tuzRNIMCkdIvlJVzmw== dependencies: - "@abp/anchor-js" "~4.3.0-rc.1" - "@abp/clipboard" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/popper.js" "~4.3.0-rc.1" - "@abp/prismjs" "~4.3.0-rc.1" + "@abp/anchor-js" "~4.3.0-rc.2" + "@abp/clipboard" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/popper.js" "~4.3.0-rc.2" + "@abp/prismjs" "~4.3.0-rc.2" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/popper.js@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-4.3.0-rc.1.tgz#42aaf3074485a06cba9b7851f649acda75dab5be" - integrity sha512-SNwSooa74WoClvx/OccK59Gqqm3/TDAp9HQ8hrowVT0kkYDxX9cXQLgVz3Nk2RuAtzz2hUJ/J9Z2A0la6f2WTQ== +"@abp/popper.js@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-4.3.0-rc.2.tgz#9945cb762beb625117c48124bd01fe9356199164" + integrity sha512-Mrf4Y4vy2OB/W+Ce61Lt6CzRFmfCvpGvr8QM8t2mlxtVawQ1AR2J586et5iO6kou0Ku7LX+CFcWP/leDNZYF2Q== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" popper.js "^1.16.0" -"@abp/prismjs@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.3.0-rc.1.tgz#1a43222861e094de7be69cadc6caab91b8da69cd" - integrity sha512-nd23YXLIWFr1JbUpGahfxgAIyolQgfujSphIpQsiuKm/HfXD5IWWjKRO6NGd6gUJfdpQzlzxUv+5cZXQlQ+0OA== +"@abp/prismjs@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-4.3.0-rc.2.tgz#ecb98291898ba0c2fd4317be022d1a3e281c8bea" + integrity sha512-LA2pmTDhB3NwM4hEkZSW1xBXsixIXY2FVnEHS7ATkyRr36W/Gqb5fchv0ILBD7Gce40pAiPO2dMs4SUWT8qk0Q== dependencies: - "@abp/clipboard" "~4.3.0-rc.1" - "@abp/core" "~4.3.0-rc.1" + "@abp/clipboard" "~4.3.0-rc.2" + "@abp/core" "~4.3.0-rc.2" prismjs "^1.20.0" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json index 9360b67730..02b66f579e 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json @@ -3,6 +3,6 @@ "name": "demo-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock index 6e90958c27..bf9e01967e 100644 --- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock +++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/npm/lerna.json b/npm/lerna.json index 078ef2de79..147991d344 100644 --- a/npm/lerna.json +++ b/npm/lerna.json @@ -1,5 +1,5 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "packages": [ "packs/*" ], diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json index c7f0b71c03..1800a690ad 100644 --- a/npm/ng-packs/lerna.version.json +++ b/npm/ng-packs/lerna.version.json @@ -1,5 +1,5 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "packages": [ "packages/*" ], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 29e19dcf9c..148b7354e4 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -27,16 +27,16 @@ "postinstall": "npm run compile:ivy" }, "devDependencies": { - "@abp/ng.core": "~4.3.0-rc.1", - "@abp/ng.feature-management": "~4.3.0-rc.1", - "@abp/ng.identity": "~4.3.0-rc.1", - "@abp/ng.permission-management": "~4.3.0-rc.1", - "@abp/ng.schematics": "~4.3.0-rc.1", - "@abp/ng.setting-management": "~4.3.0-rc.1", - "@abp/ng.tenant-management": "~4.3.0-rc.1", - "@abp/ng.theme.basic": "~4.3.0-rc.1", - "@abp/ng.theme.shared": "~4.3.0-rc.1", - "@abp/utils": "^4.3.0-rc.1", + "@abp/ng.core": "~4.3.0-rc.2", + "@abp/ng.feature-management": "~4.3.0-rc.2", + "@abp/ng.identity": "~4.3.0-rc.2", + "@abp/ng.permission-management": "~4.3.0-rc.2", + "@abp/ng.schematics": "~4.3.0-rc.2", + "@abp/ng.setting-management": "~4.3.0-rc.2", + "@abp/ng.tenant-management": "~4.3.0-rc.2", + "@abp/ng.theme.basic": "~4.3.0-rc.2", + "@abp/ng.theme.shared": "~4.3.0-rc.2", + "@abp/utils": "^4.3.0-rc.2", "@angular-builders/jest": "^10.0.0", "@angular-devkit/build-angular": "~0.1101.0", "@angular-devkit/build-ng-packagr": "~0.1001.2", diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json index 7192056af4..678a2126a1 100644 --- a/npm/ng-packs/packages/account/package.json +++ b/npm/ng-packs/packages/account/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.account", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~4.3.0-rc.1", + "@abp/ng.theme.shared": "~4.3.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json index 9c2c311117..e6837a8027 100644 --- a/npm/ng-packs/packages/components/package.json +++ b/npm/ng-packs/packages/components/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.components", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "peerDependencies": { - "@abp/ng.core": ">=4.3.0-rc.1", - "@abp/ng.theme.shared": ">=4.3.0-rc.1", + "@abp/ng.core": ">=4.3.0-rc.2", + "@abp/ng.theme.shared": ">=4.3.0-rc.2", "@ng-bootstrap/ng-bootstrap": ">=6.0.0" }, "dependencies": { diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index 9f6f1a7772..b8a57f7416 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.core", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/utils": "^4.3.0-rc.1", + "@abp/utils": "^4.3.0-rc.2", "@angular/localize": "~10.0.10", "@ngxs/store": "^3.7.0", "angular-oauth2-oidc": "^10.0.0", diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index 66db42a63b..146533099f 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.feature-management", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~4.3.0-rc.1", + "@abp/ng.theme.shared": "~4.3.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index 9278fa1d7e..3f8041df67 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.identity", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.permission-management": "~4.3.0-rc.1", - "@abp/ng.theme.shared": "~4.3.0-rc.1", + "@abp/ng.permission-management": "~4.3.0-rc.2", + "@abp/ng.theme.shared": "~4.3.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index b756bcff8c..34d80173b7 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.permission-management", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~4.3.0-rc.1", + "@abp/ng.theme.shared": "~4.3.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index 4e1fc2a0b9..93e5cde0c2 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -1,6 +1,6 @@ { "name": "@abp/ng.schematics", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "description": "Schematics that works with ABP Backend", "keywords": [ "schematics" diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index 1f2585bd6a..fe25f6cec5 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.setting-management", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.components": "~4.3.0-rc.1", - "@abp/ng.theme.shared": "~4.3.0-rc.1", + "@abp/ng.components": "~4.3.0-rc.2", + "@abp/ng.theme.shared": "~4.3.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json index e85b8a4c4e..e82efcaa34 100644 --- a/npm/ng-packs/packages/tenant-management/package.json +++ b/npm/ng-packs/packages/tenant-management/package.json @@ -1,14 +1,14 @@ { "name": "@abp/ng.tenant-management", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.feature-management": "~4.3.0-rc.1", - "@abp/ng.theme.shared": "~4.3.0-rc.1", + "@abp/ng.feature-management": "~4.3.0-rc.2", + "@abp/ng.theme.shared": "~4.3.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json index cb8b1a4f15..61b078b126 100644 --- a/npm/ng-packs/packages/theme-basic/package.json +++ b/npm/ng-packs/packages/theme-basic/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.basic", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.theme.shared": "~4.3.0-rc.1", + "@abp/ng.theme.shared": "~4.3.0-rc.2", "tslib": "^2.0.0" }, "publishConfig": { diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json index 69e6613bf9..a6170cd2de 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -1,13 +1,13 @@ { "name": "@abp/ng.theme.shared", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "homepage": "https://abp.io", "repository": { "type": "git", "url": "https://github.com/abpframework/abp.git" }, "dependencies": { - "@abp/ng.core": "~4.3.0-rc.1", + "@abp/ng.core": "~4.3.0-rc.2", "@fortawesome/fontawesome-free": "^5.14.0", "@ng-bootstrap/ng-bootstrap": "^7.0.0", "@ngx-validate/core": "^0.0.13", diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json index 6fac8b4e0e..8a6adf77e2 100644 --- a/npm/packs/anchor-js/package.json +++ b/npm/packs/anchor-js/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/anchor-js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "anchor-js": "^4.2.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/aspnetcore.components.server.basictheme/package.json b/npm/packs/aspnetcore.components.server.basictheme/package.json index 37076ad5a2..ed065cc728 100644 --- a/npm/packs/aspnetcore.components.server.basictheme/package.json +++ b/npm/packs/aspnetcore.components.server.basictheme/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/aspnetcore.components.server.basictheme", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.components.server.theming": "~4.3.0-rc.1" + "@abp/aspnetcore.components.server.theming": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.components.server.theming/package.json b/npm/packs/aspnetcore.components.server.theming/package.json index 9d029aef5e..e9649026aa 100644 --- a/npm/packs/aspnetcore.components.server.theming/package.json +++ b/npm/packs/aspnetcore.components.server.theming/package.json @@ -1,12 +1,12 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/aspnetcore.components.server.theming", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/bootstrap": "~4.3.0-rc.1", - "@abp/font-awesome": "~4.3.0-rc.1" + "@abp/bootstrap": "~4.3.0-rc.2", + "@abp/font-awesome": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json index a3b2ef89fd..5050cba502 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/aspnetcore.mvc.ui.theme.basic", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json index 30a5d2fe11..52bf76b86e 100644 --- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json +++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json @@ -1,24 +1,24 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/aspnetcore.mvc.ui.theme.shared", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui": "~4.3.0-rc.1", - "@abp/bootstrap": "~4.3.0-rc.1", - "@abp/bootstrap-datepicker": "~4.3.0-rc.1", - "@abp/datatables.net-bs4": "~4.3.0-rc.1", - "@abp/font-awesome": "~4.3.0-rc.1", - "@abp/jquery-form": "~4.3.0-rc.1", - "@abp/jquery-validation-unobtrusive": "~4.3.0-rc.1", - "@abp/lodash": "~4.3.0-rc.1", - "@abp/luxon": "~4.3.0-rc.1", - "@abp/malihu-custom-scrollbar-plugin": "~4.3.0-rc.1", - "@abp/select2": "~4.3.0-rc.1", - "@abp/sweetalert": "~4.3.0-rc.1", - "@abp/timeago": "~4.3.0-rc.1", - "@abp/toastr": "~4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui": "~4.3.0-rc.2", + "@abp/bootstrap": "~4.3.0-rc.2", + "@abp/bootstrap-datepicker": "~4.3.0-rc.2", + "@abp/datatables.net-bs4": "~4.3.0-rc.2", + "@abp/font-awesome": "~4.3.0-rc.2", + "@abp/jquery-form": "~4.3.0-rc.2", + "@abp/jquery-validation-unobtrusive": "~4.3.0-rc.2", + "@abp/lodash": "~4.3.0-rc.2", + "@abp/luxon": "~4.3.0-rc.2", + "@abp/malihu-custom-scrollbar-plugin": "~4.3.0-rc.2", + "@abp/select2": "~4.3.0-rc.2", + "@abp/sweetalert": "~4.3.0-rc.2", + "@abp/timeago": "~4.3.0-rc.2", + "@abp/toastr": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/aspnetcore.mvc.ui/package-lock.json b/npm/packs/aspnetcore.mvc.ui/package-lock.json index 6a7a6e9773..366b2c1407 100644 --- a/npm/packs/aspnetcore.mvc.ui/package-lock.json +++ b/npm/packs/aspnetcore.mvc.ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "@abp/aspnetcore.mvc.ui", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json index d86fdda46e..5a2360c3bc 100644 --- a/npm/packs/aspnetcore.mvc.ui/package.json +++ b/npm/packs/aspnetcore.mvc.ui/package.json @@ -1,5 +1,5 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/aspnetcore.mvc.ui", "publishConfig": { "access": "public" diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json index 1340e8d745..088b69bdee 100644 --- a/npm/packs/blogging/package.json +++ b/npm/packs/blogging/package.json @@ -1,14 +1,14 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/blogging", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.shared": "~4.3.0-rc.1", - "@abp/owl.carousel": "~4.3.0-rc.1", - "@abp/prismjs": "~4.3.0-rc.1", - "@abp/tui-editor": "~4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.shared": "~4.3.0-rc.2", + "@abp/owl.carousel": "~4.3.0-rc.2", + "@abp/prismjs": "~4.3.0-rc.2", + "@abp/tui-editor": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json index 7577f36aae..1cd41161dd 100644 --- a/npm/packs/bootstrap-datepicker/package.json +++ b/npm/packs/bootstrap-datepicker/package.json @@ -1,5 +1,5 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/bootstrap-datepicker", "publishConfig": { "access": "public" diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json index 6b0ddab2f4..efc6f1da78 100644 --- a/npm/packs/bootstrap/package.json +++ b/npm/packs/bootstrap/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/bootstrap", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "bootstrap": "^4.6.0", "bootstrap-v4-rtl": "4.6.0-1" }, diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json index e214f5889e..ed64ebeda0 100644 --- a/npm/packs/chart.js/package.json +++ b/npm/packs/chart.js/package.json @@ -1,5 +1,5 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/chart.js", "publishConfig": { "access": "public" diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json index 97bc25b557..b908408495 100644 --- a/npm/packs/clipboard/package.json +++ b/npm/packs/clipboard/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/clipboard", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "clipboard": "^2.0.6" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/cms-kit.admin/package.json b/npm/packs/cms-kit.admin/package.json index d91c4c44b4..5da858798e 100644 --- a/npm/packs/cms-kit.admin/package.json +++ b/npm/packs/cms-kit.admin/package.json @@ -1,13 +1,13 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/cms-kit.admin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/slugify": "~4.3.0-rc.1", - "@abp/tui-editor": "~4.3.0-rc.1", - "@abp/uppy": "~4.3.0-rc.1" + "@abp/slugify": "~4.3.0-rc.2", + "@abp/tui-editor": "~4.3.0-rc.2", + "@abp/uppy": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cms-kit.public/package.json b/npm/packs/cms-kit.public/package.json index a8f064ccca..084609b37a 100644 --- a/npm/packs/cms-kit.public/package.json +++ b/npm/packs/cms-kit.public/package.json @@ -1,12 +1,12 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/cms-kit.public", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/highlight.js": "~4.3.0-rc.1", - "@abp/star-rating-svg": "~4.3.0-rc.1" + "@abp/highlight.js": "~4.3.0-rc.2", + "@abp/star-rating-svg": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cms-kit/package.json b/npm/packs/cms-kit/package.json index dcdac25a7a..8b763c0045 100644 --- a/npm/packs/cms-kit/package.json +++ b/npm/packs/cms-kit/package.json @@ -1,12 +1,12 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/cms-kit", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/cms-kit.admin": "~4.3.0-rc.1", - "@abp/cms-kit.public": "~4.3.0-rc.1" + "@abp/cms-kit.admin": "~4.3.0-rc.2", + "@abp/cms-kit.public": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json index f35f1daf66..78fdb7c6ea 100644 --- a/npm/packs/codemirror/package.json +++ b/npm/packs/codemirror/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/codemirror", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "codemirror": "^5.54.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json index c29c0c5903..34f914469e 100644 --- a/npm/packs/core/package.json +++ b/npm/packs/core/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/core", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/utils": "^4.3.0-rc.1" + "@abp/utils": "^4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json index 035c74f10f..bd1d55bb7b 100644 --- a/npm/packs/cropperjs/package.json +++ b/npm/packs/cropperjs/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/cropperjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "cropperjs": "^1.5.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json index 4b23490244..207bd1225f 100644 --- a/npm/packs/datatables.net-bs4/package.json +++ b/npm/packs/datatables.net-bs4/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/datatables.net-bs4", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/datatables.net": "~4.3.0-rc.1", + "@abp/datatables.net": "~4.3.0-rc.2", "datatables.net-bs4": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json index 0f697a1949..d9b2d226b7 100644 --- a/npm/packs/datatables.net/package.json +++ b/npm/packs/datatables.net/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/datatables.net", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~4.3.0-rc.1", + "@abp/jquery": "~4.3.0-rc.2", "datatables.net": "^1.10.21" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json index a9da550070..4ade4f66e3 100644 --- a/npm/packs/docs/package.json +++ b/npm/packs/docs/package.json @@ -1,15 +1,15 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/docs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/anchor-js": "~4.3.0-rc.1", - "@abp/clipboard": "~4.3.0-rc.1", - "@abp/malihu-custom-scrollbar-plugin": "~4.3.0-rc.1", - "@abp/popper.js": "~4.3.0-rc.1", - "@abp/prismjs": "~4.3.0-rc.1" + "@abp/anchor-js": "~4.3.0-rc.2", + "@abp/clipboard": "~4.3.0-rc.2", + "@abp/malihu-custom-scrollbar-plugin": "~4.3.0-rc.2", + "@abp/popper.js": "~4.3.0-rc.2", + "@abp/prismjs": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json index f85617fe9c..bfd184434e 100644 --- a/npm/packs/flag-icon-css/package.json +++ b/npm/packs/flag-icon-css/package.json @@ -1,5 +1,5 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/flag-icon-css", "publishConfig": { "access": "public" diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json index 16fda01e5c..796c66dffa 100644 --- a/npm/packs/font-awesome/package.json +++ b/npm/packs/font-awesome/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/font-awesome", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "@fortawesome/fontawesome-free": "^5.13.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json index db3cd41992..04b514cec0 100644 --- a/npm/packs/highlight.js/package.json +++ b/npm/packs/highlight.js/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/highlight.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1" + "@abp/core": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json index 4f058ac6a6..9beb324ed0 100644 --- a/npm/packs/jquery-form/package.json +++ b/npm/packs/jquery-form/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/jquery-form", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~4.3.0-rc.1", + "@abp/jquery": "~4.3.0-rc.2", "jquery-form": "^4.3.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json index 580a45aaad..c8fc2a7d55 100644 --- a/npm/packs/jquery-validation-unobtrusive/package.json +++ b/npm/packs/jquery-validation-unobtrusive/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/jquery-validation-unobtrusive", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery-validation": "~4.3.0-rc.1", + "@abp/jquery-validation": "~4.3.0-rc.2", "jquery-validation-unobtrusive": "^3.2.11" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json index 202871533b..ebb5e30cab 100644 --- a/npm/packs/jquery-validation/package.json +++ b/npm/packs/jquery-validation/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/jquery-validation", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~4.3.0-rc.1", + "@abp/jquery": "~4.3.0-rc.2", "jquery-validation": "^1.19.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json index 3df2a7490c..d760acd1d1 100644 --- a/npm/packs/jquery/package.json +++ b/npm/packs/jquery/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/jquery", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "jquery": "~3.5.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json index 7ebeb1a8f5..cc748dda59 100644 --- a/npm/packs/jstree/package.json +++ b/npm/packs/jstree/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/jstree", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~4.3.0-rc.1", + "@abp/jquery": "~4.3.0-rc.2", "jstree": "^3.3.9" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json index 18a6cc4573..1db7f7acf8 100644 --- a/npm/packs/lodash/package.json +++ b/npm/packs/lodash/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/lodash", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "lodash": "^4.17.15" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json index 680d9a425c..d12a545d5f 100644 --- a/npm/packs/luxon/package.json +++ b/npm/packs/luxon/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/luxon", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "luxon": "^1.24.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json index 6a492b31a2..168ee9430e 100644 --- a/npm/packs/malihu-custom-scrollbar-plugin/package.json +++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/malihu-custom-scrollbar-plugin", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "malihu-custom-scrollbar-plugin": "^3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json index 095a8c6a8b..60e19e63d6 100644 --- a/npm/packs/markdown-it/package.json +++ b/npm/packs/markdown-it/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/markdown-it", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "markdown-it": "^11.0.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json index f216e45075..a87571ade5 100644 --- a/npm/packs/owl.carousel/package.json +++ b/npm/packs/owl.carousel/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/owl.carousel", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "owl.carousel": "^2.3.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json index 95fb824a7d..4877a95f4c 100644 --- a/npm/packs/popper.js/package.json +++ b/npm/packs/popper.js/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/popper.js", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "popper.js": "^1.16.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json index 6a4f4fea76..3201f41d37 100644 --- a/npm/packs/prismjs/package.json +++ b/npm/packs/prismjs/package.json @@ -1,12 +1,12 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/prismjs", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~4.3.0-rc.1", - "@abp/core": "~4.3.0-rc.1", + "@abp/clipboard": "~4.3.0-rc.2", + "@abp/core": "~4.3.0-rc.2", "prismjs": "^1.20.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json index e32c767bed..1afd783357 100644 --- a/npm/packs/select2/package.json +++ b/npm/packs/select2/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/select2", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "select2": "^4.0.13" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json index 0256b8a6f4..4367062c7c 100644 --- a/npm/packs/signalr/package.json +++ b/npm/packs/signalr/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/signalr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "@microsoft/signalr": "~3.1.5" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/slugify/package.json b/npm/packs/slugify/package.json index b79dbe01a1..73bf9c41bb 100644 --- a/npm/packs/slugify/package.json +++ b/npm/packs/slugify/package.json @@ -1,5 +1,5 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/slugify", "publishConfig": { "access": "public" diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json index c93dcb5239..caad8c5c19 100644 --- a/npm/packs/star-rating-svg/package.json +++ b/npm/packs/star-rating-svg/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/star-rating-svg", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~4.3.0-rc.1", + "@abp/jquery": "~4.3.0-rc.2", "star-rating-svg": "^3.5.0" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/sweetalert/package.json b/npm/packs/sweetalert/package.json index c6c2c3d7d8..1edfb6f547 100644 --- a/npm/packs/sweetalert/package.json +++ b/npm/packs/sweetalert/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/sweetalert", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "sweetalert": "^2.1.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json index 4e14a7bba8..14ced6af1e 100644 --- a/npm/packs/timeago/package.json +++ b/npm/packs/timeago/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/timeago", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~4.3.0-rc.1", + "@abp/jquery": "~4.3.0-rc.2", "timeago": "^1.6.7" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json index 01b8f205ed..914ef69577 100644 --- a/npm/packs/toastr/package.json +++ b/npm/packs/toastr/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/toastr", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/jquery": "~4.3.0-rc.1", + "@abp/jquery": "~4.3.0-rc.2", "toastr": "^2.1.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json index 64b8f1292e..a6977a9289 100644 --- a/npm/packs/tui-editor/package.json +++ b/npm/packs/tui-editor/package.json @@ -1,14 +1,14 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/tui-editor", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/codemirror": "~4.3.0-rc.1", - "@abp/highlight.js": "~4.3.0-rc.1", - "@abp/jquery": "~4.3.0-rc.1", - "@abp/markdown-it": "~4.3.0-rc.1", + "@abp/codemirror": "~4.3.0-rc.2", + "@abp/highlight.js": "~4.3.0-rc.2", + "@abp/jquery": "~4.3.0-rc.2", + "@abp/markdown-it": "~4.3.0-rc.2", "tui-code-snippet": "1.5.2", "tui-editor": "^1.4.10" }, diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json index fab3640760..4f2129557d 100644 --- a/npm/packs/uppy/package.json +++ b/npm/packs/uppy/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/uppy", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/core": "~4.3.0-rc.1", + "@abp/core": "~4.3.0-rc.2", "uppy": "^1.16.1" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json index bda90f7e0f..00afa2ca4c 100644 --- a/npm/packs/utils/package.json +++ b/npm/packs/utils/package.json @@ -1,6 +1,6 @@ { "name": "@abp/utils", - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "scripts": { "prepublish": "yarn install --ignore-scripts && node prepublish.js", "ng": "ng", diff --git a/npm/packs/vee-validate/package.json b/npm/packs/vee-validate/package.json index 909d8cfc95..03b4208d7d 100644 --- a/npm/packs/vee-validate/package.json +++ b/npm/packs/vee-validate/package.json @@ -1,11 +1,11 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/vee-validate", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/vue": "~4.3.0-rc.1", + "@abp/vue": "~4.3.0-rc.2", "vee-validate": "~3.4.4" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json index 018512b060..bf681888e9 100644 --- a/npm/packs/virtual-file-explorer/package.json +++ b/npm/packs/virtual-file-explorer/package.json @@ -1,12 +1,12 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/virtual-file-explorer", "publishConfig": { "access": "public" }, "dependencies": { - "@abp/clipboard": "~4.3.0-rc.1", - "@abp/prismjs": "~4.3.0-rc.1" + "@abp/clipboard": "~4.3.0-rc.2", + "@abp/prismjs": "~4.3.0-rc.2" }, "gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431" } diff --git a/npm/packs/vue/package.json b/npm/packs/vue/package.json index dab6fd42cc..fc3b0402c9 100644 --- a/npm/packs/vue/package.json +++ b/npm/packs/vue/package.json @@ -1,5 +1,5 @@ { - "version": "4.3.0-rc.1", + "version": "4.3.0-rc.2", "name": "@abp/vue", "publishConfig": { "access": "public" diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index 1406186ddf..1252670e2b 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -12,14 +12,14 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~4.3.0-rc.1", - "@abp/ng.components": "~4.3.0-rc.1", - "@abp/ng.core": "~4.3.0-rc.1", - "@abp/ng.identity": "~4.3.0-rc.1", - "@abp/ng.setting-management": "~4.3.0-rc.1", - "@abp/ng.tenant-management": "~4.3.0-rc.1", - "@abp/ng.theme.basic": "~4.3.0-rc.1", - "@abp/ng.theme.shared": "~4.3.0-rc.1", + "@abp/ng.account": "~4.3.0-rc.2", + "@abp/ng.components": "~4.3.0-rc.2", + "@abp/ng.core": "~4.3.0-rc.2", + "@abp/ng.identity": "~4.3.0-rc.2", + "@abp/ng.setting-management": "~4.3.0-rc.2", + "@abp/ng.tenant-management": "~4.3.0-rc.2", + "@abp/ng.theme.basic": "~4.3.0-rc.2", + "@abp/ng.theme.shared": "~4.3.0-rc.2", "@angular/animations": "~11.1.0", "@angular/common": "~11.1.0", "@angular/compiler": "~11.1.0", @@ -33,7 +33,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~4.3.0-rc.1", + "@abp/ng.schematics": "~4.3.0-rc.2", "@angular-devkit/build-angular": "~0.1101.0", "@angular/cli": "~11.1.0", "@angular/compiler-cli": "~11.1.0", diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json index b08d050b0c..8c6e0bb1a7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1", - "@abp/aspnetcore.components.server.basictheme": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2", + "@abp/aspnetcore.components.server.basictheme": "^4.3.0-rc.2" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock index 538bc725a5..2cc57bfb0a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock @@ -2,52 +2,52 @@ # yarn lockfile v1 -"@abp/aspnetcore.components.server.basictheme@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-4.3.0-rc.1.tgz#7e31e3f553a3f6a400cf665c70c6ffdb32437c56" - integrity sha512-8pEvElNeMqd72GESfpCIwuUKivNe5FcI67USYS/7fSXYg/PYKb5FIy0In+07TSQ/pnNZUxbSLB6SmMPRkLq/kg== - dependencies: - "@abp/aspnetcore.components.server.theming" "~4.3.0-rc.1" - -"@abp/aspnetcore.components.server.theming@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-4.3.0-rc.1.tgz#23e43527c2f04ba18374b6e8ab87cfb83b987e55" - integrity sha512-bdo6+d8ZauhmfP63SRMAI8VL5LGgLvjogev39NkAgdzB+a+Ff/qAWB3a7MyT7ecQMlGBp/LcTyEfSGYSdPz9dw== - dependencies: - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.components.server.basictheme@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-4.3.0-rc.2.tgz#552f26af71583b19e3bcf90283414801a1538e69" + integrity sha512-KuCl2LOz8libAcEAXWWlWQEweH084JG7UtT+Ub+V1c64sIK2j/dKDRruwLccRsbPe02nn/PwdHSuTy3CBu8c6g== + dependencies: + "@abp/aspnetcore.components.server.theming" "~4.3.0-rc.2" + +"@abp/aspnetcore.components.server.theming@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-4.3.0-rc.2.tgz#260bb7a7099f7f690c27b938577505fb01dd4457" + integrity sha512-a7KX3C9a5u3rOScrZMM+HUjyxDRwn9LGprNcbl9j6xgEfvBArrdAEOHIfA8xmOrn3aA1muwLDWBnuOlcmu0S5Q== + dependencies: + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -58,145 +58,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json index b08d050b0c..8c6e0bb1a7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json @@ -3,7 +3,7 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1", - "@abp/aspnetcore.components.server.basictheme": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2", + "@abp/aspnetcore.components.server.basictheme": "^4.3.0-rc.2" } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock index 538bc725a5..2cc57bfb0a 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock @@ -2,52 +2,52 @@ # yarn lockfile v1 -"@abp/aspnetcore.components.server.basictheme@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-4.3.0-rc.1.tgz#7e31e3f553a3f6a400cf665c70c6ffdb32437c56" - integrity sha512-8pEvElNeMqd72GESfpCIwuUKivNe5FcI67USYS/7fSXYg/PYKb5FIy0In+07TSQ/pnNZUxbSLB6SmMPRkLq/kg== - dependencies: - "@abp/aspnetcore.components.server.theming" "~4.3.0-rc.1" - -"@abp/aspnetcore.components.server.theming@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-4.3.0-rc.1.tgz#23e43527c2f04ba18374b6e8ab87cfb83b987e55" - integrity sha512-bdo6+d8ZauhmfP63SRMAI8VL5LGgLvjogev39NkAgdzB+a+Ff/qAWB3a7MyT7ecQMlGBp/LcTyEfSGYSdPz9dw== - dependencies: - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.components.server.basictheme@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-4.3.0-rc.2.tgz#552f26af71583b19e3bcf90283414801a1538e69" + integrity sha512-KuCl2LOz8libAcEAXWWlWQEweH084JG7UtT+Ub+V1c64sIK2j/dKDRruwLccRsbPe02nn/PwdHSuTy3CBu8c6g== + dependencies: + "@abp/aspnetcore.components.server.theming" "~4.3.0-rc.2" + +"@abp/aspnetcore.components.server.theming@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-4.3.0-rc.2.tgz#260bb7a7099f7f690c27b938577505fb01dd4457" + integrity sha512-a7KX3C9a5u3rOScrZMM+HUjyxDRwn9LGprNcbl9j6xgEfvBArrdAEOHIfA8xmOrn3aA1muwLDWBnuOlcmu0S5Q== + dependencies: + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -58,145 +58,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json index 321ad21fba..4bc77c8984 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock index 903182ef8e..831073a8bf 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json index b9e8623fe2..00e47b60e7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index e068e01f38..429ce75f04 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json index 321ad21fba..4bc77c8984 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock index e068e01f38..429ce75f04 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json index 321ad21fba..4bc77c8984 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock index 903182ef8e..831073a8bf 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index 656e2239eb..c226ef0fd7 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -15,14 +15,14 @@ }, "private": true, "dependencies": { - "@abp/ng.account": "~4.3.0-rc.1", - "@abp/ng.components": "~4.3.0-rc.1", - "@abp/ng.core": "~4.3.0-rc.1", - "@abp/ng.identity": "~4.3.0-rc.1", - "@abp/ng.setting-management": "~4.3.0-rc.1", - "@abp/ng.tenant-management": "~4.3.0-rc.1", - "@abp/ng.theme.basic": "~4.3.0-rc.1", - "@abp/ng.theme.shared": "~4.3.0-rc.1", + "@abp/ng.account": "~4.3.0-rc.2", + "@abp/ng.components": "~4.3.0-rc.2", + "@abp/ng.core": "~4.3.0-rc.2", + "@abp/ng.identity": "~4.3.0-rc.2", + "@abp/ng.setting-management": "~4.3.0-rc.2", + "@abp/ng.tenant-management": "~4.3.0-rc.2", + "@abp/ng.theme.basic": "~4.3.0-rc.2", + "@abp/ng.theme.shared": "~4.3.0-rc.2", "@angular/animations": "~11.1.0", "@angular/common": "~11.1.0", "@angular/compiler": "~11.1.0", @@ -36,7 +36,7 @@ "zone.js": "~0.10.2" }, "devDependencies": { - "@abp/ng.schematics": "~4.3.0-rc.1", + "@abp/ng.schematics": "~4.3.0-rc.2", "@angular-devkit/build-angular": "~0.1101.1", "@angular/cli": "~11.1.1", "@angular/compiler-cli": "~11.1.0", diff --git a/templates/module/angular/projects/my-project-name/package.json b/templates/module/angular/projects/my-project-name/package.json index 9512c95216..fe041724cf 100644 --- a/templates/module/angular/projects/my-project-name/package.json +++ b/templates/module/angular/projects/my-project-name/package.json @@ -4,8 +4,8 @@ "peerDependencies": { "@angular/common": "^9.1.11", "@angular/core": "^9.1.11", - "@abp/ng.core": ">=4.3.0-rc.1", - "@abp/ng.theme.shared": ">=4.3.0-rc.1" + "@abp/ng.core": ">=4.3.0-rc.2", + "@abp/ng.theme.shared": ">=4.3.0-rc.2" }, "dependencies": { "tslib": "^2.0.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json index b9e8623fe2..00e47b60e7 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/package.json @@ -3,6 +3,6 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock index e068e01f38..429ce75f04 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json index 321ad21fba..4bc77c8984 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock index e068e01f38..429ce75f04 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json index 321ad21fba..4bc77c8984 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/package.json @@ -3,6 +3,6 @@ "name": "my-app", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.1" + "@abp/aspnetcore.mvc.ui.theme.basic": "^4.3.0-rc.2" } } \ No newline at end of file diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock index 056c0779d9..4442e8a45e 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/yarn.lock @@ -2,37 +2,37 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.1.tgz#5dc06d82ee213bc33527b5af72ac94ae06bb7c25" - integrity sha512-Xkwj3NPnqWDgqvaP2eda3gviV7aBtyNOMCdZSvpxWmlaPlvJYN+SnKNnlmX02XVArTlOjaeTapFkE3auJeR6jA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.1.tgz#9d4447f068b490367a20772eb9c2b38480088edb" - integrity sha512-untEVm6cKT375ZVEQFO01/VKIqtdFGIyJd5ZxtoQEV8ueVFRQefCOcvvqaJ8Gfj86T1nacXvJRfBfGihYHY+JQ== - dependencies: - "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.1" - "@abp/bootstrap" "~4.3.0-rc.1" - "@abp/bootstrap-datepicker" "~4.3.0-rc.1" - "@abp/datatables.net-bs4" "~4.3.0-rc.1" - "@abp/font-awesome" "~4.3.0-rc.1" - "@abp/jquery-form" "~4.3.0-rc.1" - "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.1" - "@abp/lodash" "~4.3.0-rc.1" - "@abp/luxon" "~4.3.0-rc.1" - "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.1" - "@abp/select2" "~4.3.0-rc.1" - "@abp/sweetalert" "~4.3.0-rc.1" - "@abp/timeago" "~4.3.0-rc.1" - "@abp/toastr" "~4.3.0-rc.1" - -"@abp/aspnetcore.mvc.ui@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.1.tgz#1e54da2a668939941ab955f11db69798d04d9e7e" - integrity sha512-969etEb4H/fR9Twz6pcl766M/1AriCh6+B8r4haPB5g7QkOWhyU99mT11BHxQwf+uNV4duGZwvPvrMomrdLj2w== +"@abp/aspnetcore.mvc.ui.theme.basic@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.3.0-rc.2.tgz#4ebafbaade6610e3d405877a148d72d57569c3e3" + integrity sha512-Q3QqxKDFC04gaaj30Rk+9zGNfNxC8FX0jciARATceFV6pdA3F3PgT5EMDSlo6NoGniFVjHPRgay9N09zT6Htyw== + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.3.0-rc.2.tgz#d3bf79929c55c5380d7ca7b913a23031d7a6bd12" + integrity sha512-pz86bIV4wNeG7/UPYzNCXlJ/MdOdIygc+Com7C9Ld7gzsyER7VD9h5U/hkytvL4FBFLJn4DU+xuZNECjv0HS0A== + dependencies: + "@abp/aspnetcore.mvc.ui" "~4.3.0-rc.2" + "@abp/bootstrap" "~4.3.0-rc.2" + "@abp/bootstrap-datepicker" "~4.3.0-rc.2" + "@abp/datatables.net-bs4" "~4.3.0-rc.2" + "@abp/font-awesome" "~4.3.0-rc.2" + "@abp/jquery-form" "~4.3.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~4.3.0-rc.2" + "@abp/lodash" "~4.3.0-rc.2" + "@abp/luxon" "~4.3.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~4.3.0-rc.2" + "@abp/select2" "~4.3.0-rc.2" + "@abp/sweetalert" "~4.3.0-rc.2" + "@abp/timeago" "~4.3.0-rc.2" + "@abp/toastr" "~4.3.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.3.0-rc.2.tgz#6ff41be179c8d1089778a51ffa54a1f3d7614278" + integrity sha512-2L5zvuqUwPwNPcMauiiJZD1ft0QycqINz+bXEQ8t0EwbB+dzcsukL/rpOQfpeRHWWYy4nIN4C2bTvXhNgQbPqQ== dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,145 +43,145 @@ micromatch "^4.0.2" path "^0.12.7" -"@abp/bootstrap-datepicker@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.1.tgz#879a8ce32a3dbdb0cd80401360d24f25f318670b" - integrity sha512-W2T+rrC3oxuWj2xQUz2virbBK6x7ershWZB9d6FjXTSH89nin9DyBK20dEfskVvhK/IMrmZaW4PWyTTcx9r7dA== +"@abp/bootstrap-datepicker@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.3.0-rc.2.tgz#29a686c3d2bce356967f646d7334cd83c4257b4c" + integrity sha512-3+B7SJRi7DQJe0aNgv0H0zu1BfvMZcwgt06N3ALR9+o3TSJcOqcYrEMed3aG+ASH++CltnohTYnLkVXaxshioA== dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.1.tgz#3260de03f29e210e44a55efa3af2ab6d34362227" - integrity sha512-flB18MUnRWpEnS0t/WEjsdhfB5w+zHjsa69Pj733+GHGSsZ1Vppu+rgvSWp38yNHO5uRwGECrwUIGwvd5uD9+A== +"@abp/bootstrap@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.3.0-rc.2.tgz#1416fe639c88b7d958435e45fe19692268a7f932" + integrity sha512-E6svmDhNQlT5nd65VgshexyedRWhbvi9o1oYo/dLTUpJDzR7M9ptDqxFLVB9vVDva3HgxUoEvgRJgb9fXvq4zw== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" bootstrap "^4.6.0" bootstrap-v4-rtl "4.6.0-1" -"@abp/core@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.1.tgz#201c3be8b5697fe8e1b08b23f87f50e950036a14" - integrity sha512-ET8NGugNmdub+8qGeFf9qGPbloP5gcoBnB7U6ieFz1Eai9S3pSpbM+sdyifucEpzMThUiLS772EP4pJTMXhfEg== +"@abp/core@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.3.0-rc.2.tgz#3c9ea339624ae3b6cbee13e048268d48269ea6a9" + integrity sha512-/89xH+IVSmTOLWeUO4yVB7Hg64uHTbR7bHjgl+b94cFdtITH9Nvr2EGdXUJbHGUK7L6lSDziqiMcG/ic0061+Q== dependencies: - "@abp/utils" "^4.3.0-rc.1" + "@abp/utils" "^4.3.0-rc.2" -"@abp/datatables.net-bs4@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.1.tgz#f7dad14d13b468949fd161b679f4a70271e0d466" - integrity sha512-812cLTfSZZMvjAFAq5h7R5AeJHigBxbPc+kMReQIcFLH82o6BjA2NqFBqYOvQuh4kqiQ85dqFTW9MTKeY8or6Q== +"@abp/datatables.net-bs4@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.3.0-rc.2.tgz#bbfc0d9d0ed86cdb14b38849fb78b2b1911c4a35" + integrity sha512-PRKYi2NU41KpckJ/d0buHoFbyKVuW5NCQNpUdYzDsPS2riyeXccCsLFJM1bT01TdR4Idla3vx9Fkb+HoJOiDeQ== dependencies: - "@abp/datatables.net" "~4.3.0-rc.1" + "@abp/datatables.net" "~4.3.0-rc.2" datatables.net-bs4 "^1.10.21" -"@abp/datatables.net@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.1.tgz#aa1640903fe67d20e1fc57ffe0519b2764e4c7df" - integrity sha512-qfdQa43sbXsIEBc3WpxSC7cXyKSFxLiFdCKnLIkQNsC3Wo+WX/Cute2xNbT0+xIQdGznfEBdPxcwQkNE6JQgcA== +"@abp/datatables.net@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.3.0-rc.2.tgz#1923e60db261366a7d2f284b0274d13e253567ca" + integrity sha512-rp53+5Xj1jhjpCj7UBA9+nSNbaTQ4Vc1NWCg1e5aI5tWiyZprUS44dRszIQIDV86XKorfFhog5ihOZyzl1HDyg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" datatables.net "^1.10.21" -"@abp/font-awesome@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.1.tgz#5d336ead8b8c67b2c0aaff9365c2c856b033196e" - integrity sha512-BU4ycN/gOxX2x8S/Eszi3bJAz6bZRhxa0uPWxEWKul9PNvKSwMJRoVaEVehnIlfTi2raHsLQHk+F7079gt3dlQ== +"@abp/font-awesome@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.3.0-rc.2.tgz#437d3d6bbd8f52e5091251932d6a494d0164694b" + integrity sha512-FeHHtEQwrJBwD5PkFYqjKouCLwNjjRqTNseaN+s/r7gNjv0PgKytfRoqEb+O/BkZg/DwEuMz9jFX/RXCCNa2xA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" "@fortawesome/fontawesome-free" "^5.13.0" -"@abp/jquery-form@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.1.tgz#4543e3d751519ba12d2c563aa7cbc56e51dfe093" - integrity sha512-ONQeImarHEe4VRSv13da+rHnCv+2Ycyd7YF+Dr77gtBmTKpC5nAFGY4wO7+u0U0px/YsR2dntpyBj2fEw3wjXA== +"@abp/jquery-form@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.3.0-rc.2.tgz#999910deaf46330477b6ed487a771a2123d69f92" + integrity sha512-+fdEIOTlxDOdYXMtc/ujhYeuP2qiI4bmL3TQQWQxSTlW8q5jB6dHLBnHiXXltO8HxX9+7ZsjN3tsV7+Div5joA== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.1.tgz#15a06257fba8ef8d2cba2ac9da3f6f7185e6c8dd" - integrity sha512-8Tshu/QsqulwNfRnvoX1mViY12OTvCqpHdRldqr7k6MQd+boo6ahybQ4SCoZ9vsDTmqxd5dkV/A8VijMw66WTQ== +"@abp/jquery-validation-unobtrusive@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.3.0-rc.2.tgz#0635e0c77da269e8367c3d7c388613249ce9221d" + integrity sha512-ubmPjVJatAW3AJWjWtT+ZbNLhu+HHNgcxYkFGVNusNuboTGsoBs5G45Cjzp/q5FnggWoPvkllpf8CGuaYUbpUQ== dependencies: - "@abp/jquery-validation" "~4.3.0-rc.1" + "@abp/jquery-validation" "~4.3.0-rc.2" jquery-validation-unobtrusive "^3.2.11" -"@abp/jquery-validation@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.1.tgz#6a0d771c88e961cb43144cd6ef916d1ab22aceaf" - integrity sha512-kjVF6757xP8wZ9qw8ysI5ve3AD8PoJtxqkkUV4QF4xcrdP8EPk2heX3Imu7MJiYGyMlwLU++FTm8J68UNsWRmQ== +"@abp/jquery-validation@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.3.0-rc.2.tgz#ee145f8c4a633218ccfa50cca0bed503a0ca8dc6" + integrity sha512-SLWzN6jxVqKaHYs/d6Mku8CfhB1vWgfMbFma14upiJ+/VDkTF4Rh27iMCWKYVOS3bukh2ltBp6kPFplrjCAGSg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" jquery-validation "^1.19.2" -"@abp/jquery@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.1.tgz#06030baf44983175707409eff16a05db72c93bf5" - integrity sha512-Xgptjea/RzgBvwK+paydXWMgenobuvqKsr9LbrIDiYAJuLMMCyGvwJnA7jeszz+OqZShP8ppoeB0ifa5K2Yc2A== +"@abp/jquery@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.3.0-rc.2.tgz#f620628ea0739888cbcb360c058d09bff10d553b" + integrity sha512-+rfyLVJn7E8wJ1oQ9GiCR63Yk6wah1Hqnj4XpsRDMkIaOXKaqrnVHAZd4W2DUunQSe95wqHfkNH/wkvTyNEwUg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" jquery "~3.5.1" -"@abp/lodash@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.1.tgz#cd9bf0693379ea54f789299ba67483d345da5abf" - integrity sha512-BtsQs6wpJJvdwPDx7sOIIzkVHJnzw4Twrv0q3XNqmsiv5eGIwluFsorm5N6qOk7nC5csor6mpk6YuJuFii8GbQ== +"@abp/lodash@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.3.0-rc.2.tgz#9b5429d3976b34022aaf8cab4afef57479b66821" + integrity sha512-sE2dyofYbiIy4xhL85diZWkfqBcQl1q61T0DbYDOHgaejZAJxk4bVyFpEuMiC2HwWAZ656IN1bzyQIyE1RKzQA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" lodash "^4.17.15" -"@abp/luxon@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.1.tgz#dd855417224bbf124cdc9f395bb5cf5f0c6a7a03" - integrity sha512-OtxmjCgPiH1JWsdUvQpkvum3k43H6v8Z5okv4lDpcBOah/HZYUP8qOsSS3Tcyw2I66TK15tq13XJeHabmh2lAQ== +"@abp/luxon@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.3.0-rc.2.tgz#6fdbf1624462615dcb1f5ce85c07fc3bc4065e3f" + integrity sha512-C4aT0aN3/TVtTE3m0AZyhFSeeg+RxXpUO+nffAZoM/cH5NL8tir+O1hd+dhtCb7AELaqQNx5+qgXoJLYdWMYVg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" luxon "^1.24.1" -"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.1.tgz#e07a9a1895ded98150c1ff4470638ab71e6a0561" - integrity sha512-OiCVlh8iHPHFchSZdFzUl/w+MqPbnlZ4jlohbEuqBTV6rbaAnJXA0Tqylv4RKjho7fybGvhxjDbBrZS4kxUFLg== +"@abp/malihu-custom-scrollbar-plugin@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.3.0-rc.2.tgz#28fc1f216c1d84b20acaf8c8c5cf5c3b33e1aeb1" + integrity sha512-LYMXKkPVyBLWV4Qnom2MW8JJ/rZmVg1CyOFxM6JiL+dpsN1Ogw0hRG33CCHQveqUmf2cr3vf96qk5Et5DyDDIg== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/select2@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.1.tgz#f3d60b42cb82abc6a0ce6a640b82eb53501f9893" - integrity sha512-z+6Dhu6kqgCfTdZReI08N2ONKakQSmdDsNiZDB5/OOP26k2pOefe/j//sRfjTWiI5gCxO5y98ZZ0ccanBF8oTw== +"@abp/select2@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.3.0-rc.2.tgz#42d62daff9e50b1fe211a1560794625ba3f52107" + integrity sha512-okiIXmFaqx0uy/UMcpMKWKjrwop1JINyzN4FS5tafUpWhx6KcYYHudLWJvnPbsdsOeBQx91kw8jjERRJIqfEOA== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.1.tgz#d54a8628f004c2d22ebcc4bd60f2b6c1cbd3bc8f" - integrity sha512-OpgDbM9vOfCLpjCRFXavPAdoKlZnpxP+DkUH8owHTrtEuxmrSjpLlIa6VOzAKr70GiLtuMCz9QoH3AyMepx9vA== +"@abp/sweetalert@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.3.0-rc.2.tgz#dfb20dfca8449ed3c3f6599d99b51746019eb664" + integrity sha512-NRKOgT80JVQrwI1FRqpbCzALvnLAFKdPwKKNDgm0L7r/5DL0+JbkKCI1AIPl/yiM8MBrCaQqNms+9JES5mjiUQ== dependencies: - "@abp/core" "~4.3.0-rc.1" + "@abp/core" "~4.3.0-rc.2" sweetalert "^2.1.2" -"@abp/timeago@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.1.tgz#247f3b3a8e54f6732efa3600ba649a81fee6ec82" - integrity sha512-cplxM3jYhhakET1DyERQoWJQxx0mhTKoI7gW93wNeEMyL4FWaF4lgUNEoubJUSBCDs4v/0ni0pKG8c8nldbiew== +"@abp/timeago@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.3.0-rc.2.tgz#22943e219facd7fa0efddb63017198474b5cef89" + integrity sha512-TjKyuli+SpVjTgVJmraBpqJK112I+1DYHPJfso7QAH48Ra4gceGj9EVS0i/420YyLZyJSMtZOruxzYkyJeR/6w== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.1.tgz#7bc5bb071839fbb971f56c41c8bf220b0a6d67e9" - integrity sha512-OQgmdmWPKlpn/Lks6fUL4enEJgnvUeEcoGTuQOKfkh9ybadYd8kcELWw5ttsQ4o35yvDH3Lsh1jLwPDrCheTBg== +"@abp/toastr@~4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.3.0-rc.2.tgz#143a344b00bbfaa858fe267fb6d627952bf7b3c0" + integrity sha512-cQV9UFWb9zarkb/CbrqkF9RXqn1Fc/TFKKM5mxpUEcYjx52NuM0d+KawdEMoN2y3y2U4ciY44kbTP2W1y+NlBg== dependencies: - "@abp/jquery" "~4.3.0-rc.1" + "@abp/jquery" "~4.3.0-rc.2" toastr "^2.1.4" -"@abp/utils@^4.3.0-rc.1": - version "4.3.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.1.tgz#82ef26e01e0cb38417bf4fa9459fde85cbc2b424" - integrity sha512-C/sk6jZQDENI7FbylBoPnTb1rC5eVPnsL8B++vAH4jS//OAj2iNvE6tCewK21GYI/JmfmQzzauQBzOiOJR9a6A== +"@abp/utils@^4.3.0-rc.2": + version "4.3.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.3.0-rc.2.tgz#6d051f98772e5642c2e3bc2f68e73d6f24f4694c" + integrity sha512-9qYo8OMTxIUG+qQBWXEpkURS6FUrx+J5s3SwC/eerp46hYr72GQ8L38Wq566a+xiLCn7Duxt6oJ/BxhTfQQxdw== dependencies: just-compare "^1.3.0" From a7bb0bdf7609d7c630fdff2c9338f06ff429fd26 Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 8 Apr 2021 18:04:39 +0300 Subject: [PATCH 113/125] Docs - Update Global Features documentation --- ...es-between-features-and-global-features.md | 9 -- docs/en/Global-Features.md | 129 +++++++++--------- 2 files changed, 64 insertions(+), 74 deletions(-) delete mode 100644 docs/en/Differences-between-features-and-global-features.md diff --git a/docs/en/Differences-between-features-and-global-features.md b/docs/en/Differences-between-features-and-global-features.md deleted file mode 100644 index 7058696341..0000000000 --- a/docs/en/Differences-between-features-and-global-features.md +++ /dev/null @@ -1,9 +0,0 @@ -# Differences between Features & Global Features - -[Features](Features.md) & [Global Features](Global-Features.md) are totally different systems. - -- Features can be switched at runtime but global features can't be. -- Features can be managed by users & system administrators while application running but Global Features system is for Developers and can be managed at development time. -- Features can be used as Feature-Flag but Global Features can't. -- Features loads all disabled features to application and just hide them but Global Features system doesn't load disabled features and even prevents table creating in database. - diff --git a/docs/en/Global-Features.md b/docs/en/Global-Features.md index 0768c2f9dc..d75681dbb3 100644 --- a/docs/en/Global-Features.md +++ b/docs/en/Global-Features.md @@ -2,110 +2,107 @@ The purpose of the Global Feature System is to **add a module to your application but disable the features you don't want to use** (or enable only the ones you need). Notice that the features are not determined on runtime, you must select the features **on development time**. Because it will not create database tables, APIs and other stuff for unused features, which is not possible to change then on the runtime. ## Installation -Global Feature system is pre-installed in abp startup templates. No need any installation manually. +> This package is already installed by default with the startup template. So, most of the time, you don't need to install it manually. -## Usage +### Using the ABP CLI -### Enable/Disable Existing Features +Open a command line window in the folder of the project (.csproj file) and type the following command: -```csharp -//Enable all the CMS Kit Features -GlobalFeatureManager.Instance.Modules.CmsKit().EnableAll(); -//Disable all the CMS Kit Features (while it is already disabled by default) -GlobalFeatureManager.Instance.Modules.CmsKit().DisableAll(); -//Enable a feature -GlobalFeatureManager.Instance.Modules.CmsKit().Comments.Enable(); -GlobalFeatureManager.Instance.Modules.CmsKit().Enable(); //Alternative: use the feature class -GlobalFeatureManager.Instance.Modules.CmsKit().Enable(CommentsFeature.Name); //Alternative: use the feature name -GlobalFeatureManager.Instance.Modules.CmsKit().Enable("CmsKit.Comments"); //Alternative: Use magic string +```bash +abp add-package Volo.Abp.GlobalFeatures ``` -### Check if a feature is enabled - -```csharp -GlobalFeatureManager.Instance.IsEnabled(); -GlobalFeatureManager.Instance.IsEnabled(CommentsFeature.Name); //Alternative -``` -Both methods return `bool`. - -Beside the manual check, there is `[RequiresGlobalFeature]` attribute to check it declaratively for a controller or page. ABP returns 404 if the related feature was disabled. - -```csharp -[RequiresGlobalFeature(typeof(CommentsFeature))] -public class CommentController : AbpController -{ - // ... -} -``` ## Implementation + Global Feature system aims module based feature management . A module has to have own Global Features itself. ### Define a Global Feature + A feature class is something like that: ```csharp [GlobalFeatureName(Name)] -public class FooBarFeature : GlobalFeature +public class PaymentFeature : GlobalFeature { - public const string Name = "Foo.Bar"; - internal FooBarFeature( - [NotNull] GlobalFooFeatures features - ) : base(features) + public const string Name = "Shopping.Payment"; + + public PaymentFeature(GlobalModuleFeatures module) : base(module) { } } ``` ### Define Global Module Features -All global features of a module should be provided by a single **GlobalModuleFeatures** class. + +All features of a module have to be defined in a Global Module Features class. ```csharp -public class GlobalFooFeatures : GlobalModuleFeatures +public class GlobalShoppingFeatures : GlobalModuleFeatures { - public const string ModuleName = "Foo"; - - public FooBarFeature FooBar => GetFeature(); - - public GlobalFooFeatures([NotNull] GlobalFeatureManager featureManager) - : base(featureManager) + public const string ModuleName = "Shopping"; + + public GlobalShoppingFeatures(GlobalFeatureManager featureManager) : base(featureManager) { + AddFeature(new PaymentFeature(this)); + // And more features... } } ``` -### Define Global Module Features Dictionary Extensions -An extension method is better to configure global fetures easily. + + +## Usage + +### Enable/Disable Features + +Global features are managed by modules. Module Features have to be added to Modules of GlobalFeatureManager. ```csharp -public static class GlobalModuleFeaturesDictionaryFooExtensions +// GerOrAdd might be useful to be sure module features are added. +var shoppingGlobalFeatures = GlobalFeatureManager.Instance.Modules + .GetOrAdd( + GlobalShoppingFeatures.ModuleName, + ()=> new GlobalShoppingFeatures(GlobalFeatureManager.Instance)); + +// Able to Enable/Disable with generic type parameter. +shoppingGlobalFeatures.Enable(); +shoppingGlobalFeatures.Disable(); + +// Also able to Enable/Disable with string feature name. +shoppingGlobalFeatures.Enable(PaymentFeature.Name); +shoppingGlobalFeatures.Disable("Shopping.Payment"); +``` + +### Check if a feature is enabled + +```csharp +GlobalFeatureManager.Instance.IsEnabled() +GlobalFeatureManager.Instance.IsEnabled("Shopping.Payment") +``` + +Both methods return `bool`. + +```csharp +if (GlobalFeatureManager.Instance.IsEnabled()) { - public static GlobalFooFeatures Foo( - [NotNull] this GlobalModuleFeaturesDictionary modules) - { - Check.NotNull(modules, nameof(modules)); - return modules - .GetOrAdd( - GlobalFooFeatures.ModuleName, - _ => new GlobalFooFeatures(modules.FeatureManager) - ) - as GlobalFooFeatures; - } + // Some strong payment codes here... } ``` -Accessing module & module features look like: +Beside the manual check, there is `[RequiresGlobalFeature]` attribute to check it declaratively for a controller or page. ABP returns 404 if the related feature was disabled. ```csharp -GlobalFeatureManager.Instance.Modules.Foo(); -GlobalFeatureManager.Instance.Modules.Foo().FooBar; -GlobalFeatureManager.Instance.Modules.Foo().FooBar.Enable(); -GlobalFeatureManager.Instance.Modules.Foo().Enable(); +[RequiresGlobalFeature(typeof(CommentsFeature))] +public class PaymentController : AbpController +{ + // ... +} ``` ## When to configure Global Features? -Global Features have to be configured before application startup. So best place to configuring it is `PreConfigureServices` with **OneTimeRunner**. +Global Features have to be configured before application startup. So best place to configuring it is `PreConfigureServices` with **OneTimeRunner** to make sure it runs one time. ```csharp private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); @@ -118,5 +115,7 @@ public override void PreConfigureServices(ServiceConfigurationContext context) } ``` -## See also -- [Differences Between Features & Global Features](Differences-between-features-and-global-features.md) \ No newline at end of file +## Features vs Global Features +[Features](Features.md) & [Global Features](Global-Features.md) are totally different systems. + +Features are used to switch on/off application feature for each tenant. So Features, only hides disabled ones, but with Global Features, disabled features pretends like never existed in application. \ No newline at end of file From ac1974fc7cca8e31ef958c06907bb7dd01385891 Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 8 Apr 2021 18:05:54 +0300 Subject: [PATCH 114/125] Docs - Formatting Global-Features.md --- docs/en/Global-Features.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/en/Global-Features.md b/docs/en/Global-Features.md index d75681dbb3..cfbf3f98b7 100644 --- a/docs/en/Global-Features.md +++ b/docs/en/Global-Features.md @@ -12,8 +12,6 @@ Open a command line window in the folder of the project (.csproj file) and type abp add-package Volo.Abp.GlobalFeatures ``` - - ## Implementation Global Feature system aims module based feature management . A module has to have own Global Features itself. @@ -51,8 +49,6 @@ public class GlobalShoppingFeatures : GlobalModuleFeatures } ``` - - ## Usage ### Enable/Disable Features From 02cf2988a42f0879bed861b4686a254601980659 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 9 Apr 2021 11:57:50 +0800 Subject: [PATCH 115/125] Add AbpWildcardSubdomainCorsPolicyService. --- .../IdentityServer/AbpCorsPolicyService.cs | 7 ++- ...entityServerServiceCollectionExtensions.cs | 8 +++- .../AbpWildcardSubdomainCorsPolicyService.cs | 47 +++++++++++++++++++ ...ildcardSubdomainCorsPolicyService_Tests.cs | 40 ++++++++++++++++ .../AbpIdentityServerTestDataBuilder.cs | 1 + 5 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpWildcardSubdomainCorsPolicyService.cs create mode 100644 modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/AbpWildcardSubdomainCorsPolicyService_Tests.cs diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpCorsPolicyService.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpCorsPolicyService.cs index 57158db720..c1932d0435 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpCorsPolicyService.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpCorsPolicyService.cs @@ -40,7 +40,7 @@ namespace Volo.Abp.IdentityServer AbsoluteExpirationRelativeToNow = Options.Caching.CorsExpiration }); - var isAllowed = cacheItem.AllowedOrigins.Contains(origin, StringComparer.OrdinalIgnoreCase); + var isAllowed = await IsOriginAllowedAsync(cacheItem.AllowedOrigins, origin); if (!isAllowed) { @@ -63,5 +63,10 @@ namespace Volo.Abp.IdentityServer }; } } + + protected virtual Task IsOriginAllowedAsync(string[] allowedOrigins, string origin) + { + return Task.FromResult(allowedOrigins.Contains(origin, StringComparer.OrdinalIgnoreCase)); + } } } diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerServiceCollectionExtensions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerServiceCollectionExtensions.cs index 4bb5b2ca6a..baa04a6e5f 100644 --- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerServiceCollectionExtensions.cs +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerServiceCollectionExtensions.cs @@ -1,4 +1,5 @@ -using IdentityServer4.Validation; +using IdentityServer4.Services; +using IdentityServer4.Validation; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -15,5 +16,10 @@ namespace Volo.Abp.IdentityServer { services.Replace(ServiceDescriptor.Transient()); } + + public static void AddAbpWildcardSubdomainCorsPolicyService(this IServiceCollection services) + { + services.Replace(ServiceDescriptor.Transient()); + } } } diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpWildcardSubdomainCorsPolicyService.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpWildcardSubdomainCorsPolicyService.cs new file mode 100644 index 0000000000..1a9d146ca9 --- /dev/null +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpWildcardSubdomainCorsPolicyService.cs @@ -0,0 +1,47 @@ +using System; +using System.Threading.Tasks; +using IdentityServer4.Configuration; +using Microsoft.Extensions.Options; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Text.Formatting; + +namespace Volo.Abp.IdentityServer +{ + public class AbpWildcardSubdomainCorsPolicyService : AbpCorsPolicyService + { + public AbpWildcardSubdomainCorsPolicyService( + IDistributedCache cache, + IHybridServiceScopeFactory hybridServiceScopeFactory, + IOptions options) + : base(cache, hybridServiceScopeFactory, options) + { + + } + + protected override async Task IsOriginAllowedAsync(string[] allowedOrigins, string origin) + { + var isAllowed = await base.IsOriginAllowedAsync(allowedOrigins, origin); + if (isAllowed) + { + return true; + } + + foreach (var url in allowedOrigins) + { + var extractResult = FormattedStringValueExtracter.Extract(origin, url, ignoreCase: true); + if (extractResult.IsMatch) + { + return true; + } + + if (url.Replace("{0}.", "").Contains(origin, StringComparison.OrdinalIgnoreCase)) + { + return true; + } + } + + return false; + } + } +} diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/AbpWildcardSubdomainCorsPolicyService_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/AbpWildcardSubdomainCorsPolicyService_Tests.cs new file mode 100644 index 0000000000..fcb8e756e0 --- /dev/null +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/AbpWildcardSubdomainCorsPolicyService_Tests.cs @@ -0,0 +1,40 @@ +using System.Threading.Tasks; +using IdentityServer4.Services; +using Microsoft.Extensions.DependencyInjection; +using Shouldly; +using Xunit; + +namespace Volo.Abp.IdentityServer +{ + public class AbpWildcardSubdomainCorsPolicyService_Tests : AbpIdentityServerTestBase + { + private readonly ICorsPolicyService _corsPolicyService; + + public AbpWildcardSubdomainCorsPolicyService_Tests() + { + _corsPolicyService = GetRequiredService(); + } + + protected override void AfterAddApplication(IServiceCollection services) + { + services.AddAbpWildcardSubdomainCorsPolicyService(); + } + + [Fact] + public void Should_Register_AbpWildcardSubdomainCorsPolicyService() + { + _corsPolicyService.GetType().ShouldBe(typeof(AbpWildcardSubdomainCorsPolicyService)); + } + + [Fact] + public async Task IsOriginAllowedAsync() + { + (await _corsPolicyService.IsOriginAllowedAsync("https://client1-origin.com")).ShouldBeTrue(); + (await _corsPolicyService.IsOriginAllowedAsync("https://client2-origin.com")).ShouldBeFalse(); + + (await _corsPolicyService.IsOriginAllowedAsync("https://abp.io")).ShouldBeTrue(); + (await _corsPolicyService.IsOriginAllowedAsync("https://t1.abp.io")).ShouldBeTrue(); + (await _corsPolicyService.IsOriginAllowedAsync("https://t1.ng.abp.io")).ShouldBeTrue(); + } + } +} diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs index a2d9490404..e2bd202ec1 100644 --- a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs +++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs @@ -148,6 +148,7 @@ namespace Volo.Abp.IdentityServer }; client.AddCorsOrigin("https://client1-origin.com"); + client.AddCorsOrigin("https://{0}.abp.io"); client.AddClaim(nameof(ClientClaim.Value), nameof(ClientClaim.Type)); client.AddGrantType(nameof(ClientGrantType.GrantType)); client.AddIdentityProviderRestriction(nameof(ClientIdPRestriction.Provider)); From 7d07b2ad5ec2312860c2b928d8a7aa8e37c0e364 Mon Sep 17 00:00:00 2001 From: Necati Meral Date: Fri, 9 Apr 2021 10:39:54 +0200 Subject: [PATCH 116/125] Implemented Basic & ApiKey authentication for elasticsearch --- .../Elastic/DefaultElasticClientProvider.cs | 18 ++++++++++++++++++ ...ElasticSearchApiKeyAuthenticationOptions.cs | 8 ++++++++ ...sElasticSearchBasicAuthenticationOptions.cs | 8 ++++++++ .../Elastic/DocsElasticSearchOptions.cs | 13 +++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchApiKeyAuthenticationOptions.cs create mode 100644 modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchBasicAuthenticationOptions.cs diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs index 5db064fd5f..abcaefff99 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs @@ -21,7 +21,25 @@ namespace Volo.Docs.Documents.FullSearch.Elastic { var node = new Uri(Configuration["ElasticSearch:Url"]); var settings = new ConnectionSettings(node).DefaultIndex(Options.IndexName); + + Authenticate(settings); + return new ElasticClient(settings); } + + protected virtual void Authenticate(ConnectionSettings connectionSettings) + { + switch (Options.AuthenticationMode) + { + case DocsElasticSearchOptions.ElasticSearchAuthenticationMode.Basic: + var basicAuth = Options.BasicAuthentication; + connectionSettings.BasicAuthentication(basicAuth.Username, basicAuth.Password); + break; + case DocsElasticSearchOptions.ElasticSearchAuthenticationMode.ApiKey: + var apiKeyAuth = Options.ApiKeyAuthentication; + connectionSettings.BasicAuthentication(apiKeyAuth.Id, apiKeyAuth.ApiKey); + break; + } + } } } \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchApiKeyAuthenticationOptions.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchApiKeyAuthenticationOptions.cs new file mode 100644 index 0000000000..2b26003dd2 --- /dev/null +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchApiKeyAuthenticationOptions.cs @@ -0,0 +1,8 @@ +namespace Volo.Docs.Documents.FullSearch.Elastic +{ + public class DocsElasticSearchApiKeyAuthenticationOptions + { + public string Id { get; set; } + public string ApiKey { get; set; } + } +} diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchBasicAuthenticationOptions.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchBasicAuthenticationOptions.cs new file mode 100644 index 0000000000..1853e9bc7d --- /dev/null +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchBasicAuthenticationOptions.cs @@ -0,0 +1,8 @@ +namespace Volo.Docs.Documents.FullSearch.Elastic +{ + public class DocsElasticSearchBasicAuthenticationOptions + { + public string Username { get; set; } + public string Password { get; set; } + } +} diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs index 40bbf66b08..e59a932ec4 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs @@ -6,10 +6,23 @@ { Enable = false; IndexName = "abp_documents"; + AuthenticationMode = ElasticSearchAuthenticationMode.None; } public bool Enable { get; set; } public string IndexName { get; set; } + + public ElasticSearchAuthenticationMode AuthenticationMode { get; set; } + + public DocsElasticSearchBasicAuthenticationOptions BasicAuthentication { get; set; } + public DocsElasticSearchApiKeyAuthenticationOptions ApiKeyAuthentication { get; set; } + + public enum ElasticSearchAuthenticationMode + { + None = 0, + Basic = 1, + ApiKey = 2 + } } } From c6d48e27a933e9b7608c8cb94ef61e52f76d2364 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Fri, 9 Apr 2021 16:01:29 +0300 Subject: [PATCH 117/125] Create Cancellation-Token-Provider.md --- docs/en/Cancellation-Token-Provider.md | 71 ++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 docs/en/Cancellation-Token-Provider.md diff --git a/docs/en/Cancellation-Token-Provider.md b/docs/en/Cancellation-Token-Provider.md new file mode 100644 index 0000000000..1da3062de6 --- /dev/null +++ b/docs/en/Cancellation-Token-Provider.md @@ -0,0 +1,71 @@ +# Cancellation Token Provider + +A `CancellationToken` enables cooperative cancellation between threads, thread pool work items, or `Task` objects. To handle the possible cancellation of the operation, ABP Framework provides `ICancellationTokenProvider` to obtain the `CancellationToken` itself from the source. + +> To get more information about `CancellationToken`, see [Microsoft Documentation](https://docs.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken). + +## ICancellationTokenProvider + +`ICancellationTokenProvider` is an abstraction to provide `CancellationToken` for different scenarios. + +Generally, you should pass the `CancellationToken` as a parameter for your method to use it. With the `ICancellationTokenProvider` you don't need to pass `CancellationToken` for every method. `ICancellationTokenProvider` can be injected with the **dependency injection** and provides the token source. + +**Example:** + +```csharp +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Threading; + +namespace MyProject +{ + public class MyService : ITransientDependency + { + private readonly ICancellationTokenProvider _cancellationTokenProvider; + + public MyService(ICancellationTokenProvider cancellationTokenProvider) + { + _cancellationTokenProvider = cancellationTokenProvider; + } + + public async Task DoItAsync() + { + while (_cancellationTokenProvider.Token.IsCancellationRequested == false) + { + // Todo + } + } + } +} +``` + +## Built-in providers + +- `NullCancellationTokenProvider` + + The `NullCancellationTokenProvider` is a built in provider and it supply always `CancellationToken.None`. + +- `HttpContextCancellationTokenProvider` + + The `HttpContextCancellationTokenProvider` is a built in default provider for ABP Web applications. It simply provides a `CancellationToken` that is source of the web request from the `HttpContext`. + +## Implementing the ICancellationTokenProvider + +You can easily create your CancellationTokenProvider by creating a class that implements the `ICancellationTokenProvider` interface, as shown below: + +```csharp +using System.Threading; + +namespace AbpDemo +{ + public class MyCancellationTokenProvider : ICancellationTokenProvider + { + public CancellationToken Token { get; } + + private MyCancellationTokenProvider() + { + + } + } +} +``` From a22f172d4e0b065e171d4cc1bb0bcb6a59f188d1 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Fri, 9 Apr 2021 16:04:44 +0300 Subject: [PATCH 118/125] Update docs-nav.json --- docs/en/docs-nav.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 5e0f0b469a..3bb926190e 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -176,6 +176,10 @@ { "text": "Logging", "path": "Logging.md" + }, + { + "text": "Cancellation Token Provider", + "path": "Cancellation-Token-Provider.md" } ] }, From 4dc13ed0ec5afa972555d418e6c43ee6f4a44eb9 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Fri, 9 Apr 2021 16:06:39 +0300 Subject: [PATCH 119/125] Update Cancellation-Token-Provider.md --- docs/en/Cancellation-Token-Provider.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/Cancellation-Token-Provider.md b/docs/en/Cancellation-Token-Provider.md index 1da3062de6..7f7a78f8ad 100644 --- a/docs/en/Cancellation-Token-Provider.md +++ b/docs/en/Cancellation-Token-Provider.md @@ -8,7 +8,7 @@ A `CancellationToken` enables cooperative cancellation between threads, thread p `ICancellationTokenProvider` is an abstraction to provide `CancellationToken` for different scenarios. -Generally, you should pass the `CancellationToken` as a parameter for your method to use it. With the `ICancellationTokenProvider` you don't need to pass `CancellationToken` for every method. `ICancellationTokenProvider` can be injected with the **dependency injection** and provides the token source. +Generally, you should pass the `CancellationToken` as a parameter for your method to use it. With the `ICancellationTokenProvider` you don't need to pass `CancellationToken` for every method. `ICancellationTokenProvider` can be injected with the **dependency injection** and provides the token from it's source. **Example:** @@ -32,7 +32,7 @@ namespace MyProject { while (_cancellationTokenProvider.Token.IsCancellationRequested == false) { - // Todo + // ... } } } From 2846dab050a7fcbc42447a1a4efb6f5addae85dc Mon Sep 17 00:00:00 2001 From: Ahmet Date: Fri, 9 Apr 2021 16:36:12 +0300 Subject: [PATCH 120/125] Update docs-nav.json --- docs/en/docs-nav.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json index 3bb926190e..4d2b2419c2 100644 --- a/docs/en/docs-nav.json +++ b/docs/en/docs-nav.json @@ -176,10 +176,6 @@ { "text": "Logging", "path": "Logging.md" - }, - { - "text": "Cancellation Token Provider", - "path": "Cancellation-Token-Provider.md" } ] }, @@ -347,6 +343,10 @@ { "text": "Virtual File System", "path": "Virtual-File-System.md" + }, + { + "text": "Cancellation Token Provider", + "path": "Cancellation-Token-Provider.md" } ] }, From 424595bf07b6e882be5b1890f2b8d8428495c896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 9 Apr 2021 17:08:10 +0300 Subject: [PATCH 121/125] Do not force a global feature class inherits from the GlobalFeature class. --- .../Volo/Abp/GlobalFeatures/GlobalFeatureDictionary.cs | 2 +- .../Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs | 3 +-- .../Volo/Abp/GlobalFeatures/GlobalFeatureNameAttribute.cs | 3 +-- .../Volo/Abp/GlobalFeatures/GlobalModuleFeatures.cs | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureDictionary.cs b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureDictionary.cs index a81632f8d5..c8f68a1ab0 100644 --- a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureDictionary.cs +++ b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureDictionary.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Volo.Abp.GlobalFeatures { diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs index 8ba07554dc..e0662857e1 100644 --- a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs +++ b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureManager.cs @@ -1,5 +1,5 @@ using System; - using System.Collections.Generic; +using System.Collections.Generic; using JetBrains.Annotations; namespace Volo.Abp.GlobalFeatures @@ -26,7 +26,6 @@ namespace Volo.Abp.GlobalFeatures } public virtual bool IsEnabled() - where TFeature : GlobalFeature { return IsEnabled(GlobalFeatureNameAttribute.GetName()); } diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureNameAttribute.cs b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureNameAttribute.cs index 2b987f6cb1..96905b43bf 100644 --- a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureNameAttribute.cs +++ b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalFeatureNameAttribute.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Reflection; using JetBrains.Annotations; @@ -17,7 +17,6 @@ namespace Volo.Abp.GlobalFeatures } public static string GetName() - where TFeature : GlobalFeature { return GetName(typeof(TFeature)); } diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalModuleFeatures.cs b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalModuleFeatures.cs index 7d1b844d45..9a8afd236d 100644 --- a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalModuleFeatures.cs +++ b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/GlobalModuleFeatures.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Collections.Immutable; using JetBrains.Annotations; From 8c90d8618325841407f625eedf23b40c529eb8d7 Mon Sep 17 00:00:00 2001 From: maliming Date: Sat, 10 Apr 2021 10:52:11 +0800 Subject: [PATCH 122/125] Update AbpLdapModule.cs --- framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/AbpLdapModule.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/AbpLdapModule.cs b/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/AbpLdapModule.cs index 3366f3d70f..a1749e4466 100644 --- a/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/AbpLdapModule.cs +++ b/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/AbpLdapModule.cs @@ -21,11 +21,7 @@ namespace Volo.Abp.Ldap context.Services.AddAbpDynamicOptions(); var configuration = context.Services.GetConfiguration(); - var ldapConfiguration = configuration["Ldap"]; - if (!ldapConfiguration.IsNullOrEmpty()) - { - Configure(configuration.GetSection("Ldap")); - } + Configure(configuration.GetSection("Ldap")); Configure(options => { From b52fb991749af5f99d9a8b13d8ae341f15477d2c Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 12 Apr 2021 14:15:19 +0800 Subject: [PATCH 123/125] Update entity-action-extensions.md --- docs/en/UI/Blazor/Entity-Action-Extensions.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/en/UI/Blazor/Entity-Action-Extensions.md b/docs/en/UI/Blazor/Entity-Action-Extensions.md index 57666e5362..a7a9d5ae36 100644 --- a/docs/en/UI/Blazor/Entity-Action-Extensions.md +++ b/docs/en/UI/Blazor/Entity-Action-Extensions.md @@ -16,14 +16,14 @@ First, add a new C# file to your solution. We added inside the `/Pages/Identity/ ![user-action-extension-on-solution](../../images/user-action-extension-on-blazor-project.png) -We will use the [component override system](Customization-Overriding-Components.md) in the Blazor. After creating a class inherits from the `UserManagement` component, we will override the `SetToolbarItemsAsync` method and add the entity action programmatically. +We will use the [component override system](Customization-Overriding-Components.md) in the Blazor. After creating a class inherits from the `UserManagement` component, we will override the `SetEntityActionsAsync` method and add the entity action programmatically. -Here, the content of the overridden `SetToolbarItemsAsync` method. +Here, the content of the overridden `SetEntityActionsAsync` method. ```csharp -protected override async ValueTask SetToolbarItemsAsync() +protected override async ValueTask SetEntityActionsAsync() { - await base.SetToolbarItemsAsync(); + await base.SetEntityActionsAsync(); var clickMeAction = new EntityAction() { Text = "Click Me!", @@ -42,6 +42,7 @@ protected override async ValueTask SetToolbarItemsAsync() In the `Clicked` property, you can do anything you need. Here, the entire content of the file. + ```csharp using System.Threading.Tasks; using Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions; @@ -54,9 +55,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages.Identity [Dependency(ReplaceServices = true)] public class CustomizedUserManagement : UserManagement { - protected override async ValueTask SetToolbarItemsAsync() + protected override async ValueTask SetEntityActionsAsync() { - await base.SetToolbarItemsAsync(); + await base.SetEntityActionsAsync(); var clickMeAction = new EntityAction() { Text = "Click Me!", From 53f65327da4ed62eb00d3f900c6aebb63496f83f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 12 Apr 2021 09:30:52 +0300 Subject: [PATCH 124/125] Remove unnecessary package dependency. --- .../src/Volo.Abp.GlobalFeatures/Volo.Abp.GlobalFeatures.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo.Abp.GlobalFeatures.csproj b/framework/src/Volo.Abp.GlobalFeatures/Volo.Abp.GlobalFeatures.csproj index a082ba3c6f..0f118c1f08 100644 --- a/framework/src/Volo.Abp.GlobalFeatures/Volo.Abp.GlobalFeatures.csproj +++ b/framework/src/Volo.Abp.GlobalFeatures/Volo.Abp.GlobalFeatures.csproj @@ -20,7 +20,6 @@ - From 8565c4f052948305ce708d89b70894733ade2e3b Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 12 Apr 2021 16:56:03 +0800 Subject: [PATCH 125/125] Refactor. --- .../Elastic/DefaultElasticClientProvider.cs | 22 +-------- ...lasticSearchApiKeyAuthenticationOptions.cs | 8 ---- ...ElasticSearchBasicAuthenticationOptions.cs | 8 ---- .../Elastic/DocsElasticSearchOptions.cs | 47 ++++++++++++++----- 4 files changed, 38 insertions(+), 47 deletions(-) delete mode 100644 modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchApiKeyAuthenticationOptions.cs delete mode 100644 modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchBasicAuthenticationOptions.cs diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs index abcaefff99..8b4d82e5cd 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DefaultElasticClientProvider.cs @@ -21,25 +21,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic { var node = new Uri(Configuration["ElasticSearch:Url"]); var settings = new ConnectionSettings(node).DefaultIndex(Options.IndexName); - - Authenticate(settings); - - return new ElasticClient(settings); - } - - protected virtual void Authenticate(ConnectionSettings connectionSettings) - { - switch (Options.AuthenticationMode) - { - case DocsElasticSearchOptions.ElasticSearchAuthenticationMode.Basic: - var basicAuth = Options.BasicAuthentication; - connectionSettings.BasicAuthentication(basicAuth.Username, basicAuth.Password); - break; - case DocsElasticSearchOptions.ElasticSearchAuthenticationMode.ApiKey: - var apiKeyAuth = Options.ApiKeyAuthentication; - connectionSettings.BasicAuthentication(apiKeyAuth.Id, apiKeyAuth.ApiKey); - break; - } + return new ElasticClient(Options.Authenticate(settings)); } } -} \ No newline at end of file +} diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchApiKeyAuthenticationOptions.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchApiKeyAuthenticationOptions.cs deleted file mode 100644 index 2b26003dd2..0000000000 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchApiKeyAuthenticationOptions.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Volo.Docs.Documents.FullSearch.Elastic -{ - public class DocsElasticSearchApiKeyAuthenticationOptions - { - public string Id { get; set; } - public string ApiKey { get; set; } - } -} diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchBasicAuthenticationOptions.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchBasicAuthenticationOptions.cs deleted file mode 100644 index 1853e9bc7d..0000000000 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchBasicAuthenticationOptions.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Volo.Docs.Documents.FullSearch.Elastic -{ - public class DocsElasticSearchBasicAuthenticationOptions - { - public string Username { get; set; } - public string Password { get; set; } - } -} diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs index e59a932ec4..6a17a034c4 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/FullSearch/Elastic/DocsElasticSearchOptions.cs @@ -1,28 +1,53 @@ -namespace Volo.Docs.Documents.FullSearch.Elastic +using System; +using Nest; +using Volo.Abp; + +namespace Volo.Docs.Documents.FullSearch.Elastic { public class DocsElasticSearchOptions { + public bool Enable { get; set; } + + public string IndexName { get; set; } + + protected Action AuthenticationAction { get; set; } + public DocsElasticSearchOptions() { Enable = false; IndexName = "abp_documents"; - AuthenticationMode = ElasticSearchAuthenticationMode.None; } - public bool Enable { get; set; } + public DocsElasticSearchOptions UseBasicAuthentication(string username, string password) + { + Check.NotNullOrEmpty(username, nameof(username)); + Check.NotNullOrEmpty(password, nameof(password)); - public string IndexName { get; set; } + AuthenticationAction = settings => + { + settings.BasicAuthentication(username, password); + }; - public ElasticSearchAuthenticationMode AuthenticationMode { get; set; } + return this; + } - public DocsElasticSearchBasicAuthenticationOptions BasicAuthentication { get; set; } - public DocsElasticSearchApiKeyAuthenticationOptions ApiKeyAuthentication { get; set; } + public DocsElasticSearchOptions UseApiKeyAuthentication(string id, string apiKey) + { + Check.NotNullOrEmpty(id, nameof(id)); + Check.NotNullOrEmpty(apiKey, nameof(apiKey)); + + AuthenticationAction = settings => + { + settings.ApiKeyAuthentication(id, apiKey); + }; + + return this; + } - public enum ElasticSearchAuthenticationMode + public ConnectionSettings Authenticate(ConnectionSettings connectionSettings) { - None = 0, - Basic = 1, - ApiKey = 2 + AuthenticationAction?.Invoke(connectionSettings); + return connectionSettings; } } }